#include <G4GEMCoulombBarrier.hh>
Inheritance diagram for G4GEMCoulombBarrier:
Public Member Functions | |
G4GEMCoulombBarrier (G4int anA, G4int aZ) | |
virtual | ~G4GEMCoulombBarrier () |
G4double | GetCoulombBarrier (G4int ARes, G4int ZRes, G4double U) const |
virtual G4double | BarrierPenetrationFactor (G4double) const |
G4double | CalcCompoundRadius (G4int ARes) const |
Definition at line 37 of file G4GEMCoulombBarrier.hh.
Definition at line 36 of file G4GEMCoulombBarrier.cc.
References G4GEMCoulombBarrier().
Referenced by G4GEMCoulombBarrier().
00036 : 00037 G4VCoulombBarrier(anA,aZ) 00038 {}
G4GEMCoulombBarrier::~G4GEMCoulombBarrier | ( | ) | [virtual] |
Reimplemented in G4AlphaGEMCoulombBarrier, and G4DeuteronGEMCoulombBarrier.
Definition at line 56 of file G4GEMCoulombBarrier.hh.
Definition at line 71 of file G4GEMCoulombBarrier.cc.
References G4VCoulombBarrier::GetA(), G4Pow::GetInstance(), and G4Pow::Z13().
00072 { 00073 G4Pow* g4pow = G4Pow::GetInstance(); 00074 G4double AresOneThird = g4pow->Z13(ARes); 00075 G4int A = GetA(); 00076 G4double AejectOneThird = g4pow->Z13(A); 00077 00078 G4double Result = 0.0; 00079 if(A == 1){ 00080 Result = 1.7* AresOneThird; 00081 00082 } else if (A <= 4){ 00083 Result = 1.7* AresOneThird + 1.2; 00084 00085 } else { 00086 Result = 1.12*(AresOneThird + AejectOneThird) - 00087 0.86*(AresOneThird+AejectOneThird)/(AresOneThird*AejectOneThird)+3.75; 00088 } 00089 return Result*fermi; 00090 }
G4double G4GEMCoulombBarrier::GetCoulombBarrier | ( | G4int | ARes, | |
G4int | ZRes, | |||
G4double | U | |||
) | const [virtual] |
Implements G4VCoulombBarrier.
Definition at line 43 of file G4GEMCoulombBarrier.cc.
References G4cout, and G4endl.
00045 { 00046 G4double Barrier = 0.0; 00047 if (ZRes > ARes || ARes < 1) { 00048 G4cout << "G4GEMCoulombBarrier::GetCoulombBarrier: " 00049 << "Wrong values for " 00050 << "residual nucleus A = " << ARes << " " 00051 << "and residual nucleus Z = " << ZRes << G4endl; 00052 throw G4HadronicException(__FILE__, __LINE__,"FATAL error"); 00053 } 00054 if (GetZ() == 0) { 00055 Barrier = 0.0; // If there is no charge there is neither barrier 00056 00057 } else { 00058 G4double CompoundRadius = CalcCompoundRadius(ARes); 00059 Barrier = ( elm_coupling * GetZ() * ZRes)/CompoundRadius; 00060 00061 // Barrier penetration coeficient 00062 if(GetA() <= 4) { Barrier *= BarrierPenetrationFactor(G4double(ZRes)); } 00063 00064 //JMQ 200709 effective decrease of barrier with E* (Barashenkov) 00065 // (not inclued in original Furihata's formulation) 00066 Barrier /= (1.0 + std::sqrt(U/(static_cast<G4double>(2*ARes)))); 00067 } 00068 return Barrier; 00069 }