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

#include <G4PreCompoundHe3.hh>

+ Inheritance diagram for G4PreCompoundHe3:

Public Member Functions

 G4PreCompoundHe3 ()
 
virtual ~G4PreCompoundHe3 ()
 
- Public Member Functions inherited from G4PreCompoundIon
 G4PreCompoundIon (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4PreCompoundIon ()
 
- Public Member Functions inherited from G4PreCompoundFragment
 G4PreCompoundFragment (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4PreCompoundFragment ()
 
G4double CalcEmissionProbability (const G4Fragment &aFragment)
 
G4double GetKineticEnergy (const G4Fragment &aFragment)
 
- Public Member Functions inherited from G4VPreCompoundFragment
 G4VPreCompoundFragment (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4VPreCompoundFragment ()
 
void Initialize (const G4Fragment &aFragment)
 
virtual G4double CalcEmissionProbability (const G4Fragment &aFragment)=0
 
virtual G4double GetKineticEnergy (const G4Fragment &aFragment)=0
 
G4ReactionProductGetReactionProduct () const
 
G4int GetA () const
 
G4int GetZ () const
 
G4int GetRestA () const
 
G4int GetRestZ () const
 
G4double ResidualA13 () const
 
G4double GetCoulombBarrier () const
 
G4double GetBindingEnergy () const
 
G4double GetMaximalKineticEnergy () const
 
G4double GetEnergyThreshold () const
 
G4double GetEmissionProbability () const
 
G4double GetNuclearMass () const
 
G4double GetRestNuclearMass () const
 
G4double GetReducedMass () const
 
const G4LorentzVectorGetMomentum () const
 
void SetMomentum (const G4LorentzVector &value)
 
const G4String GetName () const
 
void SetOPTxs (G4int)
 
void UseSICB (G4bool)
 

Protected Member Functions

virtual G4double GetRj (G4int NumberParticles, G4int NumberCharged)
 
virtual G4double CrossSection (G4double ekin)
 
virtual G4double FactorialFactor (G4int N, G4int P)
 
virtual G4double CoalescenceFactor (G4int A)
 
virtual G4double GetAlpha ()
 
G4double GetOpt12 (G4double K)
 
G4double GetOpt34 (G4double K)
 
- Protected Member Functions inherited from G4PreCompoundIon
virtual G4double ProbabilityDistributionFunction (G4double eKin, const G4Fragment &aFragment)
 
virtual G4double CrossSection (G4double ekin)=0
 
virtual G4double GetRj (G4int NumberParticles, G4int NumberCharged)=0
 
virtual G4double FactorialFactor (G4int N, G4int P)=0
 
virtual G4double CoalescenceFactor (G4int A)=0
 
virtual G4double GetAlpha ()=0
 
G4double GetBeta ()
 
G4double GetOpt0 (G4double ekin)
 
virtual G4double ProbabilityDistributionFunction (G4double K, const G4Fragment &aFragment)=0
 
- Protected Member Functions inherited from G4VPreCompoundFragment
G4bool IsItPossible (const G4Fragment &aFragment) const
 

Additional Inherited Members

- Protected Attributes inherited from G4VPreCompoundFragment
G4PreCompoundParameterstheParameters
 
G4Powg4pow
 
G4double theEmissionProbability
 
G4double theCoulombBarrier
 
G4int OPTxs
 
G4bool useSICB
 

Detailed Description

Definition at line 42 of file G4PreCompoundHe3.hh.

Constructor & Destructor Documentation

◆ G4PreCompoundHe3()

G4PreCompoundHe3::G4PreCompoundHe3 ( )

Definition at line 47 of file G4PreCompoundHe3.cc.

48 : G4PreCompoundIon(G4He3::He3(), &theHe3CoulombBarrier)
49{
50 ResidualA = GetRestA();
51 ResidualZ = GetRestZ();
52 theA = GetA();
53 theZ = GetZ();
54 ResidualAthrd = ResidualA13();
55 FragmentAthrd = ResidualAthrd;
56 FragmentA = theA + ResidualA;
57}
static G4He3 * He3()
Definition: G4He3.cc:94
G4double ResidualA13() const
G4int GetRestZ() const
G4int GetRestA() const

◆ ~G4PreCompoundHe3()

G4PreCompoundHe3::~G4PreCompoundHe3 ( )
virtual

Definition at line 59 of file G4PreCompoundHe3.cc.

60{}

Member Function Documentation

◆ CoalescenceFactor()

G4double G4PreCompoundHe3::CoalescenceFactor ( G4int  A)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 67 of file G4PreCompoundHe3.cc.

68{
69 return 243.0/G4double(A*A);
70}
double G4double
Definition: G4Types.hh:64

◆ CrossSection()

G4double G4PreCompoundHe3::CrossSection ( G4double  ekin)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 88 of file G4PreCompoundHe3.cc.

89{
90 ResidualA = GetRestA();
91 ResidualZ = GetRestZ();
92 theA = GetA();
93 theZ = GetZ();
94 ResidualAthrd = ResidualA13();
95 FragmentA = theA + ResidualA;
96 FragmentAthrd = g4pow->Z13(FragmentA);
97
98 if (OPTxs==0) return GetOpt0( K);
99 else if( OPTxs==1 || OPTxs==2) return GetOpt12( K);
100 else if (OPTxs==3 || OPTxs==4) return GetOpt34( K);
101 else{
102 std::ostringstream errOs;
103 errOs << "BAD He3 CROSS SECTION OPTION !!" <<G4endl;
104 throw G4HadronicException(__FILE__, __LINE__, errOs.str());
105 return 0.;
106 }
107}
#define G4endl
Definition: G4ios.hh:52
G4double Z13(G4int Z)
Definition: G4Pow.hh:110
G4double GetOpt12(G4double K)
G4double GetOpt34(G4double K)
G4double GetOpt0(G4double ekin)

◆ FactorialFactor()

G4double G4PreCompoundHe3::FactorialFactor ( G4int  N,
G4int  P 
)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 62 of file G4PreCompoundHe3.cc.

63{
64 return G4double((N-3)*(P-2)*(N-2)*(P-1)*(N-1)*P)/6.0;
65}

◆ GetAlpha()

G4double G4PreCompoundHe3::GetAlpha ( )
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 109 of file G4PreCompoundHe3.cc.

110{
111 G4double C = 0.0;
112 G4int aZ = theZ + ResidualZ;
113 if (aZ <= 30)
114 {
115 C = 0.10;
116 }
117 else if (aZ <= 50)
118 {
119 C = 0.1 - (aZ - 30)*0.001;
120 }
121 else if (aZ < 70)
122 {
123 C = 0.08 - (aZ - 50)*0.001;
124 }
125 else
126 {
127 C = 0.06;
128 }
129 return 1.0 + C*(4.0/3.0);
130}
int G4int
Definition: G4Types.hh:66

◆ GetOpt12()

G4double G4PreCompoundHe3::GetOpt12 ( G4double  K)
protected

Definition at line 135 of file G4PreCompoundHe3.cc.

136{
137 G4double Kc = K;
138
139 // JMQ xsec is set constat above limit of validity
140 if (K > 50*MeV) { Kc = 50*MeV; }
141
142 G4double landa ,mu ,nu ,p , Ec,q,r,ji,xs;
143
144 G4double p0 = -3.06;
145 G4double p1 = 278.5;
146 G4double p2 = -1389.;
147 G4double landa0 = -0.00535;
148 G4double landa1 = -11.16;
149 G4double mm0 = 555.5;
150 G4double mu1 = 0.40;
151 G4double nu0 = 687.4;
152 G4double nu1 = -476.3;
153 G4double nu2 = 0.509;
154 G4double delta=1.2;
155
156 Ec = 1.44*theZ*ResidualZ/(1.5*ResidualAthrd+delta);
157 p = p0 + p1/Ec + p2/(Ec*Ec);
158 landa = landa0*ResidualA + landa1;
159
160 G4double resmu1 = g4pow->powZ(ResidualA,mu1);
161 mu = mm0*resmu1;
162 nu = resmu1*(nu0 + nu1*Ec + nu2*(Ec*Ec));
163 q = landa - nu/(Ec*Ec) - 2*p*Ec;
164 r = mu + 2*nu/Ec + p*(Ec*Ec);
165
166 ji=std::max(Kc,Ec);
167 if(Kc < Ec) { xs = p*Kc*Kc + q*Kc + r;}
168 else {xs = p*(Kc - ji)*(Kc - ji) + landa*Kc + mu + nu*(2 - Kc/ji)/ji ;}
169
170 if (xs <0.0) {xs=0.0;}
171
172 return xs;
173
174}
G4double powZ(G4int Z, G4double y)
Definition: G4Pow.hh:180

Referenced by CrossSection().

◆ GetOpt34()

G4double G4PreCompoundHe3::GetOpt34 ( G4double  K)
protected

Definition at line 177 of file G4PreCompoundHe3.cc.

179{
180 G4double landa, mu, nu, p , signor(1.),sig;
181 G4double ec,ecsq,xnulam,etest(0.),a;
182 G4double b,ecut,cut,ecut2,geom,elab;
183
184 G4double flow = 1.e-18;
185 G4double spill= 1.e+18;
186
187 G4double p0 = -2.88;
188 G4double p1 = 205.6;
189 G4double p2 = -1487.;
190 G4double landa0 = 0.00459;
191 G4double landa1 = -8.93;
192 G4double mm0 = 611.2;
193 G4double mu1 = 0.35;
194 G4double nu0 = 473.8;
195 G4double nu1 = -468.2;
196 G4double nu2 = -2.225;
197
198 G4double ra=0.80;
199
200 //JMQ 13/02/09 increase of reduced radius to lower the barrier
201 // ec = 1.44 * theZ * ResidualZ / (1.5*ResidualAthrd+ra);
202 ec = 1.44 * theZ * ResidualZ / (1.7*ResidualAthrd+ra);
203 ecsq = ec * ec;
204 p = p0 + p1/ec + p2/ecsq;
205 landa = landa0*ResidualA + landa1;
206 a = g4pow->powZ(ResidualA,mu1);
207 mu = mm0 * a;
208 nu = a* (nu0+nu1*ec+nu2*ecsq);
209 xnulam = nu / landa;
210 if (xnulam > spill) { xnulam=0.; }
211 if (xnulam >= flow) { etest = 1.2 *std::sqrt(xnulam); }
212
213 a = -2.*p*ec + landa - nu/ecsq;
214 b = p*ecsq + mu + 2.*nu/ec;
215 ecut = 0.;
216 cut = a*a - 4.*p*b;
217 if (cut > 0.) ecut = std::sqrt(cut);
218 ecut = (ecut-a) / (p+p);
219 ecut2 = ecut;
220 //JMQ 290310 for avoiding unphysical increase below minimum (at ecut)
221 // ecut<0 means that there is no cut with energy axis, i.e. xs is set
222 // to 0 bellow minimum
223 // if (cut < 0.) ecut2 = ecut - 2.;
224 if (cut < 0.) { ecut2 = ecut; }
225 elab = K * FragmentA /G4double(ResidualA);
226 sig = 0.;
227
228 if (elab <= ec) { //start for E<Ec
229 if (elab > ecut2) { sig = (p*elab*elab+a*elab+b) * signor; }
230 } //end for E<Ec
231 else { //start for E>Ec
232 sig = (landa*elab+mu+nu/elab) * signor;
233 geom = 0.;
234 if (xnulam < flow || elab < etest) { return sig; }
235 geom = std::sqrt(theA*K);
236 geom = 1.23*ResidualAthrd + ra + 4.573/geom;
237 geom = 31.416 * geom * geom;
238 sig = std::max(geom,sig);
239 } //end for E>Ec
240 return sig;
241
242}

Referenced by CrossSection().

◆ GetRj()

G4double G4PreCompoundHe3::GetRj ( G4int  NumberParticles,
G4int  NumberCharged 
)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 72 of file G4PreCompoundHe3.cc.

73{
74 G4double rj = 0.0;
75 if(nCharged >=2 && (nParticles-nCharged) >= 1) {
76 G4double denominator = G4double(nParticles*(nParticles-1)*(nParticles-2));
77 rj = G4double(3*nCharged*(nCharged-1)*(nParticles-nCharged))/denominator;
78 }
79 return rj;
80}

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