Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EvaporationProbability Class Reference

#include <G4EvaporationProbability.hh>

+ Inheritance diagram for G4EvaporationProbability:

Public Member Functions

 G4EvaporationProbability (G4int anA, G4int aZ, G4double aGamma)
 
 ~G4EvaporationProbability () override=default
 
virtual G4double TotalProbability (const G4Fragment &fragment, G4double minKinEnergy, G4double maxKinEnergy, G4double CB, G4double exEnergy)
 
G4double ComputeProbability (G4double K, G4double CB) override
 
G4double CrossSection (G4double K, G4double CB)
 
 G4EvaporationProbability (const G4EvaporationProbability &right)=delete
 
const G4EvaporationProbabilityoperator= (const G4EvaporationProbability &right)=delete
 
G4bool operator== (const G4EvaporationProbability &right) const =delete
 
G4bool operator!= (const G4EvaporationProbability &right) const =delete
 
- Public Member Functions inherited from G4VEmissionProbability
 G4VEmissionProbability (G4int Z, G4int A)
 
virtual ~G4VEmissionProbability ()=default
 
void Initialise ()
 
virtual G4double EmissionProbability (const G4Fragment &fragment, G4double anEnergy)
 
G4int GetZ (void) const
 
G4int GetA (void) const
 
void SetDecayKinematics (G4int rZ, G4int rA, G4double rmass, G4double fmass)
 
G4double GetRecoilExcitation () const
 
void SetEvapExcitation (G4double exc)
 
G4double GetProbability () const
 
void ResetProbability ()
 
G4double SampleEnergy ()
 
 G4VEmissionProbability (const G4VEmissionProbability &right)=delete
 
const G4VEmissionProbabilityoperator= (const G4VEmissionProbability &right)=delete
 
G4bool operator== (const G4VEmissionProbability &right) const =delete
 
G4bool operator!= (const G4VEmissionProbability &right) const =delete
 

Protected Member Functions

virtual G4double CalcAlphaParam (const G4Fragment &fragment)
 
virtual G4double CalcBetaParam (const G4Fragment &fragment)
 
- Protected Member Functions inherited from G4VEmissionProbability
void ResetIntegrator (size_t nbin, G4double de, G4double eps)
 
G4double IntegrateProbability (G4double elow, G4double ehigh, G4double CB)
 

Additional Inherited Members

- Protected Attributes inherited from G4VEmissionProbability
G4NuclearLevelDatapNuclearLevelData
 
G4PowpG4pow
 
G4int OPTxs
 
G4int pVerbose
 
G4int theZ
 
G4int theA
 
G4int resZ = 0
 
G4int resA = 0
 
G4double pMass = 0.0
 
G4double pEvapMass = 0.0
 
G4double pResMass = 0.0
 
G4double pProbability = 0.0
 
G4double pTolerance = 0.0
 

Detailed Description

Definition at line 41 of file G4EvaporationProbability.hh.

Constructor & Destructor Documentation

◆ G4EvaporationProbability() [1/2]

G4EvaporationProbability::G4EvaporationProbability ( G4int anA,
G4int aZ,
G4double aGamma )
explicit

Definition at line 57 of file G4EvaporationProbability.cc.

59 : G4VEmissionProbability(aZ, anA), fGamma(aGamma)
60{
61 resA13 = lastA = muu = freeU = a0 = delta1 = 0.0;
62 pcoeff = fGamma*pEvapMass*CLHEP::millibarn
63 /((CLHEP::pi*CLHEP::hbarc)*(CLHEP::pi*CLHEP::hbarc));
64
65 if(0 == theZ) { index = 0; }
66 else if(1 == theZ) { index = theA; }
67 else { index = theA + 1; }
68 if(0 == aZ) {
69 ResetIntegrator(30, 0.15*CLHEP::MeV, 0.02);
70 } else {
71 ResetIntegrator(30, 0.25*CLHEP::MeV, 0.03);
72 }
73}
G4VEmissionProbability(G4int Z, G4int A)
void ResetIntegrator(size_t nbin, G4double de, G4double eps)

◆ ~G4EvaporationProbability()

G4EvaporationProbability::~G4EvaporationProbability ( )
overridedefault

◆ G4EvaporationProbability() [2/2]

G4EvaporationProbability::G4EvaporationProbability ( const G4EvaporationProbability & right)
delete

Member Function Documentation

◆ CalcAlphaParam()

G4double G4EvaporationProbability::CalcAlphaParam ( const G4Fragment & fragment)
protectedvirtual

◆ CalcBetaParam()

G4double G4EvaporationProbability::CalcBetaParam ( const G4Fragment & fragment)
protectedvirtual

◆ ComputeProbability()

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

Reimplemented from G4VEmissionProbability.

Definition at line 142 of file G4EvaporationProbability.cc.

143{
144 G4double E0 = freeU;
145 // abnormal case - should never happens
146 if(pMass < pEvapMass + pResMass) { return 0.0; }
147
148 G4double m02 = pMass*pMass;
150 G4double mres = std::sqrt(m02 + m12 - 2.*pMass*(pEvapMass + K));
151
152 G4double excRes = mres - pResMass;
153 G4double E1 = excRes - delta1;
154 if(E1 <= 0.0) { return 0.0; }
156 G4double xs = CrossSection(K, CB);
157 G4double prob = pcoeff*G4Exp(2.0*(std::sqrt(a1*E1) - std::sqrt(a0*E0)))*K*xs;
158 return prob;
159}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition G4Exp.hh:180
double G4double
Definition G4Types.hh:83
G4double CrossSection(G4double K, G4double CB)
G4double GetLevelDensity(G4int Z, G4int A, G4double U)
G4NuclearLevelData * pNuclearLevelData

Referenced by G4EvaporationChannel::ComputeProbability().

◆ CrossSection()

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

Definition at line 162 of file G4EvaporationProbability.cc.

163{
164 // compute power once
165 if(resA != lastA) {
166 lastA = resA;
167 if(0 < index)
169 }
170 G4double res = 0.0;
171 if(OPTxs <= 2) {
172 res = G4ChatterjeeCrossSection::ComputeCrossSection(K, CB, resA13, muu,
173 index, theZ, resA);
174 } else {
175 // added barrier penetration factor
176 G4double elim = 0.6*CB;
177 if (K > elim) {
178 res = G4KalbachCrossSection::ComputeCrossSection(K, CB, resA13, muu,
179 index, theZ, theA, resA);
180 //res *= (1.0 - elim/K);
181 }
182 }
183 return res;
184}
static G4double ComputeCrossSection(G4double K, G4double cb, G4double resA13, G4double amu1, G4int idx, G4int Z, G4int resA)
static G4double ComputePowerParameter(G4int resA, G4int idx)
static G4double ComputeCrossSection(G4double K, G4double cb, G4double resA13, G4double amu1, G4int idx, G4int Z, G4int A, G4int resA)

Referenced by G4EvaporationChannel::ComputeInverseXSection(), and ComputeProbability().

◆ operator!=()

G4bool G4EvaporationProbability::operator!= ( const G4EvaporationProbability & right) const
delete

◆ operator=()

const G4EvaporationProbability & G4EvaporationProbability::operator= ( const G4EvaporationProbability & right)
delete

◆ operator==()

G4bool G4EvaporationProbability::operator== ( const G4EvaporationProbability & right) const
delete

◆ TotalProbability()

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

Definition at line 85 of file G4EvaporationProbability.cc.

88{
89 G4int fragA = fragment.GetA_asInt();
90 G4int fragZ = fragment.GetZ_asInt();
91 G4double U = fragment.GetExcitationEnergy();
92 a0 = pNuclearLevelData->GetLevelDensity(fragZ,fragA,U);
93 freeU = exEnergy;
95 resA13 = pG4pow->Z13(resA);
96 /*
97 G4cout << "G4EvaporationProbability: Z= " << theZ << " A= " << theA
98 << " resZ= " << resZ << " resA= " << resA
99 << " fragZ= " << fragZ << " fragA= " << fragA
100 << "\n freeU= " << freeU
101 << " a0= " << a0 << " OPT= " << OPTxs << " emin= "
102 << minEnergy << " emax= " << maxEnergy
103 << " CB= " << CB << G4endl;
104 */
105 if (OPTxs==0) {
106
107 G4double SystemEntropy = 2.0*std::sqrt(a0*freeU);
108 const G4double RN2 = 2.25*CLHEP::fermi*CLHEP::fermi
109 /(CLHEP::twopi*CLHEP::hbar_Planck*hbar_Planck);
110
111 G4double Alpha = CalcAlphaParam(fragment);
112 G4double Beta = CalcBetaParam(fragment);
113
114 // to be checked where to use a0, where - a1
116 G4double GlobalFactor = fGamma*Alpha*pEvapMass*RN2*resA13*resA13/(a1*a1);
117
118 G4double maxea = maxEnergy*a1;
119 G4double Term1 = Beta*a1 - 1.5 + maxea;
120 G4double Term2 = (2.0*Beta*a1-3.0)*std::sqrt(maxea) + 2*maxea;
121
122 G4double ExpTerm1 = (SystemEntropy <= explim) ? G4Exp(-SystemEntropy) : 0.0;
123
124 G4double ExpTerm2 = 2.*std::sqrt(maxea) - SystemEntropy;
125 ExpTerm2 = std::min(ExpTerm2, explim);
126 ExpTerm2 = G4Exp(ExpTerm2);
127
128 pProbability = GlobalFactor*(Term1*ExpTerm1 + Term2*ExpTerm2);
129
130 } else {
131 // if Coulomb barrier cutoff is superimposed for all cross sections
132 // then the limit is the Coulomb Barrier
133 pProbability = IntegrateProbability(minEnergy, maxEnergy, CB);
134 }
135 /*
136 G4cout << "TotalProbability: Emin=" << minEnergy << " Emax= " << maxEnergy
137 << " CB= " << CB << " prob=" << pProbability << G4endl;
138 */
139 return pProbability;
140}
int G4int
Definition G4Types.hh:85
virtual G4double CalcAlphaParam(const G4Fragment &fragment)
virtual G4double CalcBetaParam(const G4Fragment &fragment)
G4double GetExcitationEnergy() const
G4int GetZ_asInt() const
G4int GetA_asInt() const
G4PairingCorrection * GetPairingCorrection()
G4double Z13(G4int Z) const
Definition G4Pow.hh:123
G4double IntegrateProbability(G4double elow, G4double ehigh, G4double CB)

Referenced by G4EvaporationChannel::GetEmissionProbability().


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