60 theCoulombBarrierPtr(nullptr)
80 G4double InitialLevelDensity = ComputeInitialLevelDensity(fragment);
82 PrecomputeResidualQuantities(fragment, Ux, UxSqrt, UxLog);
85 CalcProbability(fragment,MaximalKineticEnergy,CoulombBarrier,Spin,
86 InitialLevelDensity,Ux,UxSqrt,UxLog);
92 for (std::size_t i = 0; i <nn; ++i) {
97 InitialLevelDensity,Ux,UxSqrt,UxLog);
101 probability += width;
111G4double G4GEMProbability::ComputeInitialLevelDensity(
const G4Fragment & fragment)
const
124 G4double TCN = 1.0/(std::sqrt(aCN/UxCN) - 1.5/UxCN);
137 - 1.25*
G4Log(UxCN/MeV)
138 + 2.0*std::sqrt(aCN*UxCN));
140 InitialLevelDensity = (pi/12.0)*
G4Exp((U-E0CN)/TCN)/TCN;
148 InitialLevelDensity = (pi/12.0)*
G4Exp(2*x1)/(x*std::sqrt(x1));
151 return InitialLevelDensity;
154void G4GEMProbability::PrecomputeResidualQuantities(
const G4Fragment & fragment,
162 Ux = (2.5 + 150.0/
G4double(ResidualA))*MeV;
163 UxSqrt = std::sqrt(Ux);
164 UxLog =
G4Log(Ux/MeV);
179 G4int ResidualA =
A - theA;
180 G4int ResidualZ = Z - theZ;
185 G4double Beta = CalcBetaParam(fragment);
190 G4double delta0 = fNucData->GetPairingCorrection(ResidualZ, ResidualA);
193 LevelDensityParameter(ResidualA,ResidualZ,MaximalKineticEnergy+V-delta0);
196 G4double T = 1.0/(aSqrt/UxSqrt - 1.5/Ux);
199 - 1.25*UxLog + 2.0*aSqrt*UxSqrt);
203 G4double t = MaximalKineticEnergy/T;
204 if ( MaximalKineticEnergy < Ex ) {
206 Width = (I1(t,t)*T + (Beta+V)*I0(t))/
G4Exp(E0/T);
211 static const G4double sqrt2 = std::sqrt(2.0);
214 G4double s0 = 2.0*std::sqrt(a*(MaximalKineticEnergy-delta0));
215 G4double sx = 2.0*std::sqrt(a*(Ex-delta0));
217 if(s0 > 350.) {
s0 = 350.; }
218 Width = I1(t,tx)*T/expE0T + I3(s0,sx)*
G4Exp(s0)/(sqrt2*a);
230 G4double gg = (2.0*spin+1.0)*NuclearMass/(pi2* hbarc*hbarc);
237 G4double Ad = fG4pow->Z13(ResidualA);
239 Rb = 1.12*(Aj + Ad) - 0.86*((Aj+Ad)/(Aj*Ad))+2.85;
244 G4double Ad = fG4pow->Z13(ResidualA);
246 Rb=1.5*(Aj+Ad)*fermi;
250 G4double Ad = fG4pow->Z13(ResidualA);
258 Width *= pi*gg*GeometricalXS*
Alpha/(12.0*InitialLevelDensity);
272 G4double p1 =
S *(2.0 + S2 *( 4.0 + S2 *( 13.5 + S2 *( 60.0 + S2 * 325.125 ))));
275 (1.5*s2+0.5*sx2) + Sx2 *(
276 (3.75*s2+0.25*sx2) + Sx2 *(
277 (12.875*s2+0.625*sx2) + Sx2 *(
278 (59.0625*s2+0.9375*sx2) + Sx2 *(324.8*s2+3.28*sx2))))));
291 + neutron_mass_c2 - mass;
294 G4cout <<
"GEM: List of Excited States for Isotope Z= "
295 <<
theZ <<
" A= " <<
theA <<
" Nlevels= " << nlev
296 <<
" Efermi(MeV)= " << efermi
298 for(std::size_t i=0; i< nlev; ++i) {
300 <<
" Mass(GeV)= " << mass/GeV
G4double S(G4double temp)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
G4double GetExcitationEnergy() const
G4double ComputeGroundStateMass(G4int Z, G4int A, G4int nLambdas=0) const
G4double GetCoulombBarrier(const G4Fragment &fragment) const
std::vector< G4double > ExcitSpins
std::vector< G4double > ExcitEnergies
G4double EmissionProbability(const G4Fragment &fragment, G4double maxKineticEnergy) override
virtual ~G4GEMProbability()
std::vector< G4double > ExcitLifetimes
G4PairingCorrection * GetPairingCorrection()
static G4NuclearLevelData * GetInstance()
static G4double GetNuclearMass(const G4double A, const G4double Z)
static G4Pow * GetInstance()
G4double logZ(G4int Z) const
virtual G4double LevelDensityParameter(G4int A, G4int Z, G4double U) const =0