Geant4-11
Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4NeutronEvaporationProbability Class Reference

#include <G4NeutronEvaporationProbability.hh>

Inheritance diagram for G4NeutronEvaporationProbability:
G4EvaporationProbability G4VEmissionProbability

Public Member Functions

G4double ComputeProbability (G4double K, G4double CB) override
 
virtual G4double EmissionProbability (const G4Fragment &fragment, G4double anEnergy)
 
 G4NeutronEvaporationProbability ()
 
G4int GetA (void) const
 
G4double GetProbability () const
 
G4double GetRecoilExcitation () const
 
G4int GetZ (void) const
 
void Initialise ()
 
void ResetProbability ()
 
G4double SampleEnergy ()
 
G4double SampleKineticEnergy (G4double minKinEnergy, G4double maxKinEnergy, G4double CB)
 
void SetDecayKinematics (G4int Z, G4int A, G4double rmass, G4double fmass)
 
void SetEvapExcitation (G4double exc)
 
virtual G4double TotalProbability (const G4Fragment &fragment, G4double minKinEnergy, G4double maxKinEnergy, G4double CB, G4double exEnergy)
 
 ~G4NeutronEvaporationProbability () override
 

Protected Member Functions

G4double CalcAlphaParam (const G4Fragment &fragment) override
 
G4double CalcBetaParam (const G4Fragment &fragment) override
 
G4double IntegrateProbability (G4double elow, G4double ehigh, G4double CB)
 
void ResetIntegrator (size_t nbin, G4double de, G4double eps)
 

Protected Attributes

G4int OPTxs
 
G4double pEvapMass
 
G4PowpG4pow
 
G4double pMass
 
G4NuclearLevelDatapNuclearLevelData
 
G4double pProbability
 
G4double pResMass
 
G4int pVerbose
 
G4int resA
 
G4int resZ
 
G4int theA
 
G4int theZ
 

Private Member Functions

G4double CrossSection (G4double K, G4double CB)
 
G4double FindRecoilExcitation (G4double e)
 
 G4NeutronEvaporationProbability (const G4NeutronEvaporationProbability &right)
 
G4bool operator!= (const G4NeutronEvaporationProbability &right) const
 
const G4NeutronEvaporationProbabilityoperator= (const G4NeutronEvaporationProbability &right)
 
G4bool operator== (const G4NeutronEvaporationProbability &right) const
 

Private Attributes

G4double a0
 
G4double accuracy
 
G4double delta1
 
G4double eCoulomb
 
G4double elimit
 
G4double emax
 
G4double emin
 
G4double fExc
 
G4double fExcRes
 
G4bool fFD
 
G4double fGamma
 
G4double freeU
 
G4int index
 
size_t length
 
G4double muu
 
size_t nbin
 
G4double pcoeff
 
G4double probmax
 
G4double resA13
 

Detailed Description

Definition at line 42 of file G4NeutronEvaporationProbability.hh.

Constructor & Destructor Documentation

◆ G4NeutronEvaporationProbability() [1/2]

G4NeutronEvaporationProbability::G4NeutronEvaporationProbability ( )
explicit

Definition at line 40 of file G4NeutronEvaporationProbability.cc.

40 :
42{}
G4EvaporationProbability(G4int anA, G4int aZ, G4double aGamma)

◆ ~G4NeutronEvaporationProbability()

G4NeutronEvaporationProbability::~G4NeutronEvaporationProbability ( )
override

Definition at line 44 of file G4NeutronEvaporationProbability.cc.

45{}

◆ G4NeutronEvaporationProbability() [2/2]

G4NeutronEvaporationProbability::G4NeutronEvaporationProbability ( const G4NeutronEvaporationProbability right)
private

Member Function Documentation

◆ CalcAlphaParam()

G4double G4NeutronEvaporationProbability::CalcAlphaParam ( const G4Fragment fragment)
overrideprotectedvirtual

Reimplemented from G4EvaporationProbability.

Definition at line 47 of file G4NeutronEvaporationProbability.cc.

48{
49 return 0.76+2.2/pG4pow->Z13(fragment.GetA_asInt() - 1);
50}
G4int GetA_asInt() const
Definition: G4Fragment.hh:271
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123

References G4Fragment::GetA_asInt(), G4VEmissionProbability::pG4pow, and G4Pow::Z13().

Referenced by CalcBetaParam().

◆ CalcBetaParam()

G4double G4NeutronEvaporationProbability::CalcBetaParam ( const G4Fragment fragment)
overrideprotectedvirtual

Reimplemented from G4EvaporationProbability.

Definition at line 52 of file G4NeutronEvaporationProbability.cc.

53{
54 return (2.12/pG4pow->Z23(fragment.GetA_asInt() - 1) - 0.05)*CLHEP::MeV/
55 CalcAlphaParam(fragment);
56}
G4double CalcAlphaParam(const G4Fragment &fragment) override
G4double Z23(G4int Z) const
Definition: G4Pow.hh:125
static constexpr double MeV

References CalcAlphaParam(), G4Fragment::GetA_asInt(), CLHEP::MeV, G4VEmissionProbability::pG4pow, and G4Pow::Z23().

◆ ComputeProbability()

G4double G4EvaporationProbability::ComputeProbability ( G4double  K,
G4double  CB 
)
overridevirtualinherited

Reimplemented from G4VEmissionProbability.

Definition at line 151 of file G4EvaporationProbability.cc.

152{
153 //G4cout << "### G4EvaporationProbability::ProbabilityDistributionFunction"
154 // << G4endl;
155
156 G4double E0 = freeU;
157 // abnormal case - should never happens
158 if(pMass < pEvapMass + pResMass) { return 0.0; }
159
160 G4double m02 = pMass*pMass;
162 G4double mres = sqrt(m02 + m12 - 2.*pMass*(pEvapMass + K));
163
164 G4double excRes = mres - pResMass;
165 G4double E1 = excRes - delta1;
166 if(E1 <= 0.0) { return 0.0; }
168 G4double xs = CrossSection(K, CB);
169 G4double prob = pcoeff*G4Exp(2.0*(std::sqrt(a1*E1) - std::sqrt(a0*E0)))*K*xs;
170 /*
171 G4cout << "PDF: Z= " << theZ << " A= " << theA
172 << " K= " << K << " E0= " << E0 << " E1= " << E1 << G4endl;
173 G4cout << " prob= " << prob << " pcoeff= " << pcoeff
174 << " xs= " << xs << G4endl;
175 */
176 return prob;
177}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
double G4double
Definition: G4Types.hh:83
G4double CrossSection(G4double K, G4double CB)
G4double GetLevelDensity(G4int Z, G4int A, G4double U)
G4NuclearLevelData * pNuclearLevelData

References G4EvaporationProbability::a0, G4EvaporationProbability::CrossSection(), G4EvaporationProbability::delta1, G4EvaporationProbability::freeU, G4Exp(), G4NuclearLevelData::GetLevelDensity(), G4EvaporationProbability::pcoeff, G4VEmissionProbability::pEvapMass, G4VEmissionProbability::pMass, G4VEmissionProbability::pNuclearLevelData, G4VEmissionProbability::pResMass, G4VEmissionProbability::resA, and G4VEmissionProbability::resZ.

◆ CrossSection()

G4double G4EvaporationProbability::CrossSection ( G4double  K,
G4double  CB 
)
privateinherited

Definition at line 180 of file G4EvaporationProbability.cc.

181{
182 G4double res;
183 if(OPTxs <= 2) {
185 index, theZ, resA);
186 } else {
188 index, theZ, theA, resA);
189 }
190 //G4cout << "XS: K= "<<K<<" res= "<<res<<" cb= "<<CB<<" muu= "
191 // <<muu<<" index= " << index<< G4endl;
192 return res;
193}
static G4double ComputeCrossSection(G4double K, G4double cb, G4double resA13, G4double amu1, G4int idx, G4int Z, G4int resA)
static G4double ComputeCrossSection(G4double K, G4double cb, G4double resA13, G4double amu1, G4int idx, G4int Z, G4int A, G4int resA)

References G4KalbachCrossSection::ComputeCrossSection(), G4ChatterjeeCrossSection::ComputeCrossSection(), G4EvaporationProbability::index, G4EvaporationProbability::muu, G4VEmissionProbability::OPTxs, G4VEmissionProbability::resA, G4EvaporationProbability::resA13, G4VEmissionProbability::theA, and G4VEmissionProbability::theZ.

Referenced by G4EvaporationProbability::ComputeProbability().

◆ EmissionProbability()

G4double G4VEmissionProbability::EmissionProbability ( const G4Fragment fragment,
G4double  anEnergy 
)
virtualinherited

Reimplemented in G4FissionProbability, and G4GEMProbability.

Definition at line 71 of file G4VEmissionProbability.cc.

72{
73 return 0.0;
74}

Referenced by G4CompetitiveFission::GetEmissionProbability().

◆ FindRecoilExcitation()

G4double G4VEmissionProbability::FindRecoilExcitation ( G4double  e)
privateinherited

Definition at line 187 of file G4VEmissionProbability.cc.

188{
189 fExcRes = 0.0;
190 G4double mass = pEvapMass + fExc;
191 // abnormal case - should never happens
192 if(pMass < mass + pResMass) { return 0.0; }
193
194 G4double m02 = pMass*pMass;
195 G4double m12 = mass*mass;
197 G4double mres = std::sqrt(m02 + m12 - 2.*pMass*(mass + e));
198
199 fExcRes = mres - pResMass;
200 const G4double tolerance = 0.1*CLHEP::keV;
201
202 if(pVerbose > 1) {
203 G4cout << "### G4VEmissionProbability::FindRecoilExcitation for resZ= "
204 << resZ << " resA= " << resA
205 << " evaporated Z= " << theZ << " A= " << theA
206 << " Ekin= " << e << " Eexc= " << fExcRes << G4endl;
207 }
208
209 // residual nucleus is in the ground state
210 if(fExcRes < tolerance) {
211 fExcRes = 0.0;
212 //G4cout<<"Ground state Ekin= "<< 0.5*(m02 + m12 - m22)/pMass - mass<<G4endl;
213 return std::max(0.5*(m02 + m12 - m22)/pMass - mass,0.0);
214 }
215 // select final state excitation
216 auto lManager = pNuclearLevelData->GetLevelManager(resZ, resA);
217 if(!lManager) { return e; }
218
219 //G4cout<<"ExcMax= "<< lManager->MaxLevelEnergy()<<" CB= "<<eCoulomb<<G4endl;
220 // levels are not known
221 if(fExcRes > lManager->MaxLevelEnergy() + tolerance) { return e; }
222
223 // find level
224 auto idx = lManager->NearestLevelIndex(fExcRes);
225 //G4cout << "idx= " << idx << " Exc= " << fExcRes
226 // << " Elevel= " << lManager->LevelEnergy(idx) << G4endl;
227 for(; idx > 0; --idx) {
228 fExcRes = lManager->LevelEnergy(idx);
229 // excited level
230 if(pMass > mass + pResMass + fExcRes && lManager->FloatingLevel(idx) == 0) {
231 G4double massR = pResMass + fExcRes;
232 G4double mr2 = massR*massR;
233 //G4cout << "Result idx= " << idx << " Eexc= " << fExcRes
234 // << " Ekin= " << 0.5*(m02 + m12 - mr2)/pMass - mass << G4endl;
235 return std::max(0.5*(m02 + m12 - mr2)/pMass - mass,0.0);
236 }
237 }
238 // ground level
239 fExcRes = 0.0;
240 //G4cout << "Ground state Ekin= " << 0.5*(m02 + m12 - m22)/pMass - mass << G4endl;
241 return std::max(0.5*(m02 + m12 - m22)/pMass - mass,0.0);
242}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
size_t NearestLevelIndex(G4double energy, size_t index=0) const
const G4LevelManager * GetLevelManager(G4int Z, G4int A)
static constexpr double keV
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4VEmissionProbability::fExc, G4VEmissionProbability::fExcRes, G4cout, G4endl, G4NuclearLevelData::GetLevelManager(), CLHEP::keV, G4INCL::Math::max(), G4LevelManager::NearestLevelIndex(), G4VEmissionProbability::pEvapMass, G4VEmissionProbability::pMass, G4VEmissionProbability::pNuclearLevelData, G4VEmissionProbability::pResMass, G4VEmissionProbability::pVerbose, G4VEmissionProbability::resA, G4VEmissionProbability::resZ, G4VEmissionProbability::theA, and G4VEmissionProbability::theZ.

Referenced by G4VEmissionProbability::SampleEnergy().

◆ GetA()

G4int G4VEmissionProbability::GetA ( void  ) const
inlineinherited

Definition at line 63 of file G4VEmissionProbability.hh.

63{ return theA; }

References G4VEmissionProbability::theA.

◆ GetProbability()

G4double G4VEmissionProbability::GetProbability ( ) const
inlineinherited

Definition at line 75 of file G4VEmissionProbability.hh.

75{ return pProbability; };

References G4VEmissionProbability::pProbability.

◆ GetRecoilExcitation()

G4double G4VEmissionProbability::GetRecoilExcitation ( ) const
inlineinherited

Definition at line 71 of file G4VEmissionProbability.hh.

71{ return fExcRes; };

References G4VEmissionProbability::fExcRes.

◆ GetZ()

G4int G4VEmissionProbability::GetZ ( void  ) const
inlineinherited

◆ Initialise()

void G4VEmissionProbability::Initialise ( )
inherited

◆ IntegrateProbability()

G4double G4VEmissionProbability::IntegrateProbability ( G4double  elow,
G4double  ehigh,
G4double  CB 
)
protectedinherited

Definition at line 81 of file G4VEmissionProbability.cc.

84{
85 pProbability = 0.0;
86 if(elow >= ehigh) { return pProbability; }
87
88 emin = elow;
89 emax = ehigh;
90 eCoulomb = cb;
91
92 G4double edelta = elimit;
93 nbin = (size_t)((emax - emin)/edelta) + 1;
94 const G4double edeltamin = 0.2*CLHEP::MeV;
95 const G4double edeltamax = 2*CLHEP::MeV;
96 if(nbin < 4) {
97 nbin = 4;
98 edelta = (emax - emin)/(G4double)nbin;
99 } else if(nbin > length) {
100 nbin = length;
101 }
102
103 G4double x(emin), del, y;
104 G4double edelmicro= edelta*0.02;
105 probmax = ComputeProbability(x + edelmicro, eCoulomb);
106 G4double problast = probmax;
107 if(pVerbose > 2) {
108 G4cout << "### G4VEmissionProbability::IntegrateProbability: "
109 << " Emax= " << emax << " QB= " << cb << " nbin= " << nbin
110 << G4endl;
111 G4cout << " 0. E= " << emin << " prob= " << probmax << G4endl;
112 }
113 for(size_t i=1; i<=nbin; ++i) {
114 x += edelta;
115 if(x > emax) {
116 edelta += (emax - x);
117 x = emax;
118 }
119 G4bool endpoint = (std::abs(x - emax) < edelmicro) ? true : false;
120 G4double xx = endpoint ? x - edelmicro : x;
122 if(pVerbose > 2) {
123 G4cout << " " << i << ". E= " << x << " prob= " << y
124 << " Edel= " << edelta << G4endl;
125 }
127 del = (y + problast)*edelta*0.5;
128 pProbability += del;
129 // end of the loop
130 if(del < accuracy*pProbability || endpoint) { break; }
131 problast = y;
132
133 // smart step definition
134 if(del != pProbability && del > 0.8*pProbability &&
135 0.7*edelta > edeltamin) {
136 edelta *= 0.7;
137 } else if(del < 0.1*pProbability && 1.5*edelta < edeltamax) {
138 edelta *= 1.5;
139 }
140 }
141
142 if(pVerbose > 1) {
143 G4cout << " Probability= " << pProbability << " probmax= "
144 << probmax << G4endl;
145 }
146 return pProbability;
147}
bool G4bool
Definition: G4Types.hh:86
virtual G4double ComputeProbability(G4double anEnergy, G4double CB)

References G4VEmissionProbability::accuracy, G4VEmissionProbability::ComputeProbability(), G4VEmissionProbability::eCoulomb, G4VEmissionProbability::elimit, G4VEmissionProbability::emax, G4VEmissionProbability::emin, G4cout, G4endl, G4VEmissionProbability::length, G4INCL::Math::max(), CLHEP::MeV, G4VEmissionProbability::nbin, G4VEmissionProbability::pProbability, G4VEmissionProbability::probmax, and G4VEmissionProbability::pVerbose.

Referenced by G4GEMProbabilityVI::ComputeTotalProbability(), and G4EvaporationProbability::TotalProbability().

◆ operator!=()

G4bool G4NeutronEvaporationProbability::operator!= ( const G4NeutronEvaporationProbability right) const
private

◆ operator=()

const G4NeutronEvaporationProbability & G4NeutronEvaporationProbability::operator= ( const G4NeutronEvaporationProbability right)
private

◆ operator==()

G4bool G4NeutronEvaporationProbability::operator== ( const G4NeutronEvaporationProbability right) const
private

◆ ResetIntegrator()

void G4VEmissionProbability::ResetIntegrator ( size_t  nbin,
G4double  de,
G4double  eps 
)
protectedinherited

Definition at line 64 of file G4VEmissionProbability.cc.

65{
66 if(nbins > 0) { length = nbins; }
67 if(de > 0.0) { elimit = de; }
68 if(eps > 0.0) { accuracy = eps; }
69}
static const G4double eps

References G4VEmissionProbability::accuracy, G4VEmissionProbability::elimit, eps, and G4VEmissionProbability::length.

Referenced by G4EvaporationProbability::G4EvaporationProbability(), and G4GEMProbabilityVI::G4GEMProbabilityVI().

◆ ResetProbability()

void G4VEmissionProbability::ResetProbability ( )
inlineinherited

◆ SampleEnergy()

G4double G4VEmissionProbability::SampleEnergy ( )
inherited

Definition at line 149 of file G4VEmissionProbability.cc.

150{
151 static const G4double fact = 1.05;
152 probmax *= fact;
153
154 if(pVerbose > 1) {
155 G4cout << "### G4VEmissionProbability::SampleEnergy: "
156 << " Emin= " << emin << " Emax= " << emax
157 << " probmax= " << probmax << G4endl;
158 }
159
160 CLHEP::HepRandomEngine* rndm = G4Random::getTheEngine();
161 const G4int nmax = 100;
162 G4double del = emax - emin;
163 G4double ekin, g;
164 G4int n = 0;
165 do {
166 ekin = del*rndm->flat() + emin;
167 ++n;
169 if(pVerbose > 2) {
170 G4cout << " " << n
171 << ". prob= " << g << " probmax= " << probmax
172 << " Ekin= " << ekin << G4endl;
173 }
174 if((g > probmax || n > nmax) && pVerbose > 1) {
175 G4cout << "### G4VEmissionProbability::SampleEnergy for Z= " << theZ
176 << " A= " << theA
177 << "\n Warning n= " << n
178 << " prob/probmax= " << g/probmax
179 << " prob= " << g << " probmax= " << probmax
180 << "\n Ekin= " << ekin << " Emin= " << emin
181 << " Emax= " << emax << G4endl;
182 }
183 } while(probmax*rndm->flat() > g && n < nmax);
184 return (fFD) ? FindRecoilExcitation(ekin) : ekin;
185}
static constexpr double g
Definition: G4SIunits.hh:168
int G4int
Definition: G4Types.hh:85
virtual double flat()=0
G4double FindRecoilExcitation(G4double e)

References G4VEmissionProbability::ComputeProbability(), G4VEmissionProbability::eCoulomb, G4VEmissionProbability::emax, G4VEmissionProbability::emin, G4VEmissionProbability::fFD, G4VEmissionProbability::FindRecoilExcitation(), CLHEP::HepRandomEngine::flat(), g, G4cout, G4endl, CLHEP::detail::n, G4VEmissionProbability::probmax, G4VEmissionProbability::pVerbose, G4VEmissionProbability::theA, and G4VEmissionProbability::theZ.

Referenced by G4EvaporationChannel::EmittedFragment(), G4GEMProbabilityVI::SampleEvaporationFragment(), and G4EvaporationProbability::SampleKineticEnergy().

◆ SampleKineticEnergy()

G4double G4EvaporationProbability::SampleKineticEnergy ( G4double  minKinEnergy,
G4double  maxKinEnergy,
G4double  CB 
)
inherited

Definition at line 196 of file G4EvaporationProbability.cc.

199{
200 /*
201 G4cout << "### Sample probability Emin= " << minKinEnergy
202 << " Emax= " << maxKinEnergy
203 << " Z= " << theZ << " A= " << theA << G4endl;
204 */
205 G4double T = 0.0;
206 CLHEP::HepRandomEngine* rndm = G4Random::getTheEngine();
207 if (OPTxs==0 || (OPTxs==4 && freeU < 10.)) {
208 // JMQ:
209 // It uses Dostrovsky's approximation for the inverse reaction cross
210 // in the probability for fragment emission
211 // MaximalKineticEnergy energy in the original version (V.Lara) was
212 // calculated at the Coulomb barrier.
213
214 G4double Rb = 4.0*a0*maxKinEnergy;
215 G4double RbSqrt = std::sqrt(Rb);
216 G4double PEX1 = (RbSqrt < explim) ? G4Exp(-RbSqrt) : 0.0;
217 G4double Rk = 0.0;
218 G4double FRk = 0.0;
219 G4int nn = 0;
220 const G4int nmax = 100;
221 const G4double ssqr3 = 1.5*std::sqrt(3.0);
222 do {
223 G4double RandNumber = rndm->flat();
224 Rk = 1.0 + (1./RbSqrt)*G4Log(RandNumber + (1.0-RandNumber)*PEX1);
225 G4double Q1 = 1.0;
226 G4double Q2 = 1.0;
227 if (theZ == 0) { // for emitted neutron
228 G4double Beta = (2.12/(resA13*resA13) - 0.05)*MeV/(0.76 + 2.2/resA13);
229 Q1 = 1.0 + Beta/maxKinEnergy;
230 Q2 = Q1*std::sqrt(Q1);
231 }
232
233 FRk = ssqr3 * Rk * (Q1 - Rk*Rk)/Q2;
234 if(nn > nmax) { break; }
235 ++nn;
236 // Loop checking, 05-Aug-2015, Vladimir Ivanchenko
237 } while (FRk < rndm->flat());
238
239 T = std::max(maxKinEnergy * (1.0-Rk*Rk), 0.0) + minKinEnergy;
240
241 } else {
242 T = SampleEnergy();
243 }
244 //G4cout<<"-- new Z= "<<theZ<<" A= "<< theA << " ekin= " << T << G4endl;
245 return T;
246}
static const G4double explim
G4double G4Log(G4double x)
Definition: G4Log.hh:226
static constexpr double MeV
Definition: G4SIunits.hh:200
double flat()
Definition: G4AblaRandom.cc:48

References G4EvaporationProbability::a0, explim, G4AblaRandom::flat(), CLHEP::HepRandomEngine::flat(), G4EvaporationProbability::freeU, G4Exp(), G4Log(), G4INCL::Math::max(), MeV, G4InuclParticleNames::nn, G4VEmissionProbability::OPTxs, G4EvaporationProbability::resA13, G4VEmissionProbability::SampleEnergy(), and G4VEmissionProbability::theZ.

◆ SetDecayKinematics()

void G4VEmissionProbability::SetDecayKinematics ( G4int  Z,
G4int  A,
G4double  rmass,
G4double  fmass 
)
inlineinherited

◆ SetEvapExcitation()

void G4VEmissionProbability::SetEvapExcitation ( G4double  exc)
inlineinherited

Definition at line 73 of file G4VEmissionProbability.hh.

73{ fExc = exc; };

References G4VEmissionProbability::fExc.

◆ TotalProbability()

G4double G4EvaporationProbability::TotalProbability ( const G4Fragment fragment,
G4double  minKinEnergy,
G4double  maxKinEnergy,
G4double  CB,
G4double  exEnergy 
)
virtualinherited

Definition at line 92 of file G4EvaporationProbability.cc.

95{
96 G4int fragA = fragment.GetA_asInt();
97 G4int fragZ = fragment.GetZ_asInt();
98 G4double U = fragment.GetExcitationEnergy();
99 a0 = pNuclearLevelData->GetLevelDensity(fragZ,fragA,U);
100 freeU = exEnergy;
101 resA13 = pG4pow->Z13(resA);
103 /*
104 G4cout << "G4EvaporationProbability: Z= " << theZ << " A= " << theA
105 << " resZ= " << resZ << " resA= " << resA
106 << " fragZ= " << fragZ << " fragA= " << fragA
107 << "\n freeU= " << freeU
108 << " a0= " << a0 << " OPT= " << OPTxs << " emin= "
109 << minEnergy << " emax= " << maxEnergy
110 << " CB= " << CB << G4endl;
111 */
112 if (OPTxs==0 || (OPTxs==4 && freeU < 10.)) {
113
114 G4double SystemEntropy = 2.0*std::sqrt(a0*freeU);
115
116 const G4double RN2 = 2.25*CLHEP::fermi*CLHEP::fermi
118
119 G4double Alpha = CalcAlphaParam(fragment);
120 G4double Beta = CalcBetaParam(fragment);
121
122 // to be checked where to use a0, where - a1
124 G4double GlobalFactor = fGamma*Alpha*pEvapMass*RN2*resA13*resA13/(a1*a1);
125
126 G4double maxea = maxEnergy*a1;
127 G4double Term1 = Beta*a1 - 1.5 + maxea;
128 G4double Term2 = (2.0*Beta*a1-3.0)*std::sqrt(maxea) + 2*maxea;
129
130 G4double ExpTerm1 = (SystemEntropy <= explim) ? G4Exp(-SystemEntropy) : 0.0;
131
132 G4double ExpTerm2 = 2.*std::sqrt(maxea) - SystemEntropy;
133 ExpTerm2 = std::min(ExpTerm2, explim);
134 ExpTerm2 = G4Exp(ExpTerm2);
135
136 pProbability = GlobalFactor*(Term1*ExpTerm1 + Term2*ExpTerm2);
137
138 } else {
139
140 // compute power once
141 if(0 < index) {
143 }
144 // if Coulomb barrier cutoff is superimposed for all cross sections
145 // then the limit is the Coulomb Barrier
146 pProbability = IntegrateProbability(minEnergy, maxEnergy, CB);
147 }
148 return pProbability;
149}
virtual G4double CalcAlphaParam(const G4Fragment &fragment)
virtual G4double CalcBetaParam(const G4Fragment &fragment)
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:299
G4int GetZ_asInt() const
Definition: G4Fragment.hh:276
static G4double ComputePowerParameter(G4int resA, G4int idx)
G4PairingCorrection * GetPairingCorrection()
G4double IntegrateProbability(G4double elow, G4double ehigh, G4double CB)
static constexpr double hbar_Planck
static constexpr double twopi
Definition: SystemOfUnits.h:56
static constexpr double fermi
Definition: SystemOfUnits.h:84
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
float hbar_Planck
Definition: hepunit.py:263

References G4EvaporationProbability::a0, Alpha, G4EvaporationProbability::CalcAlphaParam(), G4EvaporationProbability::CalcBetaParam(), G4KalbachCrossSection::ComputePowerParameter(), G4EvaporationProbability::delta1, explim, CLHEP::fermi, G4EvaporationProbability::fGamma, G4EvaporationProbability::freeU, G4Exp(), G4Fragment::GetA_asInt(), G4Fragment::GetExcitationEnergy(), G4NuclearLevelData::GetLevelDensity(), G4NuclearLevelData::GetPairingCorrection(), G4Fragment::GetZ_asInt(), source.hepunit::hbar_Planck, CLHEP::hbar_Planck, G4EvaporationProbability::index, G4VEmissionProbability::IntegrateProbability(), G4INCL::Math::min(), G4EvaporationProbability::muu, G4VEmissionProbability::OPTxs, G4VEmissionProbability::pEvapMass, G4VEmissionProbability::pG4pow, G4VEmissionProbability::pNuclearLevelData, G4VEmissionProbability::pProbability, G4VEmissionProbability::resA, G4EvaporationProbability::resA13, G4VEmissionProbability::resZ, CLHEP::twopi, and G4Pow::Z13().

Referenced by G4EvaporationChannel::GetEmissionProbability().

Field Documentation

◆ a0

G4double G4EvaporationProbability::a0
privateinherited

◆ accuracy

G4double G4VEmissionProbability::accuracy
privateinherited

◆ delta1

G4double G4EvaporationProbability::delta1
privateinherited

◆ eCoulomb

G4double G4VEmissionProbability::eCoulomb
privateinherited

◆ elimit

G4double G4VEmissionProbability::elimit
privateinherited

◆ emax

G4double G4VEmissionProbability::emax
privateinherited

◆ emin

G4double G4VEmissionProbability::emin
privateinherited

◆ fExc

G4double G4VEmissionProbability::fExc
privateinherited

◆ fExcRes

G4double G4VEmissionProbability::fExcRes
privateinherited

◆ fFD

G4bool G4VEmissionProbability::fFD
privateinherited

◆ fGamma

G4double G4EvaporationProbability::fGamma
privateinherited

◆ freeU

G4double G4EvaporationProbability::freeU
privateinherited

◆ index

G4int G4EvaporationProbability::index
privateinherited

◆ length

size_t G4VEmissionProbability::length
privateinherited

◆ muu

G4double G4EvaporationProbability::muu
privateinherited

◆ nbin

size_t G4VEmissionProbability::nbin
privateinherited

◆ OPTxs

G4int G4VEmissionProbability::OPTxs
protectedinherited

◆ pcoeff

G4double G4EvaporationProbability::pcoeff
privateinherited

◆ pEvapMass

G4double G4VEmissionProbability::pEvapMass
protectedinherited

◆ pG4pow

G4Pow* G4VEmissionProbability::pG4pow
protectedinherited

◆ pMass

G4double G4VEmissionProbability::pMass
protectedinherited

◆ pNuclearLevelData

G4NuclearLevelData* G4VEmissionProbability::pNuclearLevelData
protectedinherited

◆ pProbability

G4double G4VEmissionProbability::pProbability
protectedinherited

◆ pResMass

G4double G4VEmissionProbability::pResMass
protectedinherited

◆ probmax

G4double G4VEmissionProbability::probmax
privateinherited

◆ pVerbose

G4int G4VEmissionProbability::pVerbose
protectedinherited

◆ resA

G4int G4VEmissionProbability::resA
protectedinherited

◆ resA13

G4double G4EvaporationProbability::resA13
privateinherited

◆ resZ

G4int G4VEmissionProbability::resZ
protectedinherited

◆ theA

G4int G4VEmissionProbability::theA
protectedinherited

◆ theZ

G4int G4VEmissionProbability::theZ
protectedinherited

The documentation for this class was generated from the following files: