Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4GEMProbabilityVI Class Referencefinal

#include <G4GEMProbabilityVI.hh>

+ Inheritance diagram for G4GEMProbabilityVI:

Public Member Functions

 G4GEMProbabilityVI (G4int anA, G4int aZ, const G4LevelManager *)
 
 ~G4GEMProbabilityVI () final
 
G4double ComputeTotalProbability (const G4Fragment &, G4double CB)
 
G4double ComputeProbability (G4double ekin, G4double CB) override
 
G4FragmentSampleEvaporationFragment ()
 
- Public Member Functions inherited from G4VEmissionProbability
 G4VEmissionProbability (G4int Z, G4int A)
 
virtual ~G4VEmissionProbability ()
 
void Initialise ()
 
virtual G4double EmissionProbability (const G4Fragment &fragment, G4double anEnergy)
 
virtual G4double ComputeProbability (G4double anEnergy, G4double CB)
 
G4int GetZ (void) const
 
G4int GetA (void) const
 
void SetDecayKinematics (G4int Z, G4int A, G4double rmass, G4double fmass)
 
G4double GetRecoilExcitation () const
 
void SetEvapExcitation (G4double exc)
 
G4double GetProbability () const
 
void ResetProbability ()
 
G4double SampleEnergy ()
 

Additional Inherited Members

- Protected Member Functions inherited from G4VEmissionProbability
void ResetIntegrator (size_t nbin, G4double de, G4double eps)
 
G4double IntegrateProbability (G4double elow, G4double ehigh, G4double CB)
 
- Protected Attributes inherited from G4VEmissionProbability
G4int OPTxs
 
G4int pVerbose
 
G4int theZ
 
G4int theA
 
G4int resZ
 
G4int resA
 
G4double pMass
 
G4double pEvapMass
 
G4double pResMass
 
G4double pProbability
 
G4NuclearLevelDatapNuclearLevelData
 
G4PowpG4pow
 

Detailed Description

Definition at line 38 of file G4GEMProbabilityVI.hh.

Constructor & Destructor Documentation

◆ G4GEMProbabilityVI()

G4GEMProbabilityVI::G4GEMProbabilityVI ( G4int  anA,
G4int  aZ,
const G4LevelManager p 
)
explicit

Definition at line 69 of file G4GEMProbabilityVI.cc.

70 : G4VEmissionProbability(aZ, anA), lManager(p)
71{
72 fragA = fragZ = 0;
73 resA13 = U = delta0 = delta1 = a0 = a1 = probmax = alphaP = betaP = 0.0;
74 Umax = bCoulomb = 0.0;
75 Gamma = 1.0;
76 pcoeff = Gamma*pEvapMass*CLHEP::millibarn
77 /((CLHEP::pi*CLHEP::hbarc)*(CLHEP::pi*CLHEP::hbarc));
78 coeff = CLHEP::fermi*CLHEP::fermi/(CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc);
79
80 isExcited = (!lManager || 0.0 == lManager->MaxLevelEnergy()) ? false : true;
81 A13 = pG4pow->Z13(theA);
82
83 if(0 == aZ) {
84 ResetIntegrator(30, 0.25*CLHEP::MeV, 0.02);
85 } else {
86 ResetIntegrator(30, 0.5*CLHEP::MeV, 0.03);
87 }
88}
G4double MaxLevelEnergy() const
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123
void ResetIntegrator(size_t nbin, G4double de, G4double eps)

◆ ~G4GEMProbabilityVI()

G4GEMProbabilityVI::~G4GEMProbabilityVI ( )
final

Definition at line 90 of file G4GEMProbabilityVI.cc.

91{}

Member Function Documentation

◆ ComputeProbability()

G4double G4GEMProbabilityVI::ComputeProbability ( G4double  ekin,
G4double  CB 
)
overridevirtual

Reimplemented from G4VEmissionProbability.

Definition at line 151 of file G4GEMProbabilityVI.cc.

152{
153 // abnormal case - should never happens
154 if(pMass < pEvapMass + pResMass) { return 0.0; }
155
156 const G4double m02 = pMass*pMass;
157 const G4double m12 = pEvapMass*pEvapMass;
158 const G4double mres = std::sqrt(m02 + m12 - 2.*pMass*(pEvapMass + ekin));
159
160 G4double excRes = std::max(mres - pResMass, 0.0);
162 G4double prob = ProbabilityDistributionFunction(0.0, excRes);
163
164 //G4cout<<"### G4GEMProbabilityVI::ComputeProbability: Ekin(MeV)= "<<ekin
165 //<< " excRes(MeV)= " << excRes << " prob= " << prob << << G4endl;
166 return prob;
167}
double G4double
Definition: G4Types.hh:83
G4double GetLevelDensity(G4int Z, G4int A, G4double U)
G4NuclearLevelData * pNuclearLevelData

◆ ComputeTotalProbability()

G4double G4GEMProbabilityVI::ComputeTotalProbability ( const G4Fragment fragment,
G4double  CB 
)

Definition at line 93 of file G4GEMProbabilityVI.cc.

95{
96 fragA = fragment.GetA_asInt();
97 fragZ = fragment.GetZ_asInt();
98
99 bCoulomb = CB;
100 U = fragment.GetExcitationEnergy();
101 delta0 = pNuclearLevelData->GetPairingCorrection(fragZ,fragA);
103 Umax = pMass - pEvapMass - pResMass - CB;
104 if(0.0 >= Umax) { return 0.0; }
105
106 resA13 = pG4pow->Z13(resA);
107 a0 = pNuclearLevelData->GetLevelDensity(fragZ,fragA,U);
108
109 G4double C = 0.0;
110 G4int Z2 = theZ*theZ;
111 G4int Z3 = Z2*theZ;
112 G4int Z4 = Z2*Z2;
113
114 if(resA >= 50) {
115 C = -0.10/(G4double)theA;
116 } else if(resZ > 20) {
117 C = (0.123482-0.00534691*theZ-0.0000610624*Z2+5.93719*1e-7*Z3+
118 1.95687*1e-8*Z4)/(G4double)theA;
119 }
120 if(0 == theZ) {
121 alphaP = 0.76+1.93/resA13;
122 betaP = (1.66/(resA13*resA13)-0.05)*CLHEP::MeV/alphaP;
123 } else {
124 alphaP = 1.0 + C;
125 betaP = - bCoulomb;
126 }
127 if(isExcited) {
128 pProbability = Integrated2DProbability();
129
130 } else {
131 const G4double twoMass = pMass + pMass;
132 const G4double evapMass2 = pEvapMass*pEvapMass;
133 G4double ekinmax =
134 ((pMass-pResMass)*(pMass+pResMass) + evapMass2)/twoMass - pEvapMass;
135 G4double ekinmin =
136 std::max((CB*(twoMass - CB) + evapMass2)/twoMass - pEvapMass,0.0);
137 if(ekinmax <= ekinmin) { return 0.0; }
138 pProbability = IntegrateProbability(ekinmin, ekinmax, CB);
139 }
140 /*
141 G4cout << "G4GEMProbabilityVI: Z= " << theZ << " A= " << theA
142 << " resZ= " << resZ << " resA= " << resA
143 << " fragZ= " << fragZ << " fragA= " << fragA
144 << " prob= " << pProbability
145 << "\n U= " << U << " Umax= " << Umax << " d0= " << delta0
146 << " a0= " << a0 << G4endl;
147 */
148 return pProbability;
149}
double C(double temp)
int G4int
Definition: G4Types.hh:85
G4double GetExcitationEnergy() const
Definition: G4Fragment.hh:275
G4int GetZ_asInt() const
Definition: G4Fragment.hh:263
G4int GetA_asInt() const
Definition: G4Fragment.hh:258
G4PairingCorrection * GetPairingCorrection()
G4double IntegrateProbability(G4double elow, G4double ehigh, G4double CB)

Referenced by G4GEMChannelVI::GetEmissionProbability().

◆ SampleEvaporationFragment()

G4Fragment * G4GEMProbabilityVI::SampleEvaporationFragment ( )

Definition at line 169 of file G4GEMProbabilityVI.cc.

170{
171 if(isExcited) { return Sample2DDistribution(); }
172 G4double ekin = SampleEnergy();
173 G4LorentzVector lv(std::sqrt(ekin*(ekin + 2.0*pEvapMass))
174 *G4RandomDirection(), ekin + pEvapMass);
175 G4Fragment* evFragment = new G4Fragment(theA, theZ, lv);
176 return evFragment;
177}
G4ThreeVector G4RandomDirection()

Referenced by G4GEMChannelVI::EmittedFragment().


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