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

#include <G4PreCompoundDeuteron.hh>

+ Inheritance diagram for G4PreCompoundDeuteron:

Public Member Functions

 G4PreCompoundDeuteron ()
 
 ~G4PreCompoundDeuteron ()
 
- 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 G4PreCompoundDeuteron.hh.

Constructor & Destructor Documentation

◆ G4PreCompoundDeuteron()

G4PreCompoundDeuteron::G4PreCompoundDeuteron ( )

Definition at line 47 of file G4PreCompoundDeuteron.cc.

48 : G4PreCompoundIon(G4Deuteron::Deuteron(), &theDeuteronCoulombBarrier)
49{
50 theA = GetA();
51 theZ = GetZ();
52 ResidualA = ResidualZ = 0;
53 ResidualAthrd = FragmentAthrd = 0.0;
54 FragmentA = theA;
55}
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94

◆ ~G4PreCompoundDeuteron()

G4PreCompoundDeuteron::~G4PreCompoundDeuteron ( )

Definition at line 57 of file G4PreCompoundDeuteron.cc.

58{}

Member Function Documentation

◆ CoalescenceFactor()

G4double G4PreCompoundDeuteron::CoalescenceFactor ( G4int  A)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 65 of file G4PreCompoundDeuteron.cc.

66{
67 return 16.0/G4double(A);
68}
double G4double
Definition: G4Types.hh:64

◆ CrossSection()

G4double G4PreCompoundDeuteron::CrossSection ( G4double  ekin)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 86 of file G4PreCompoundDeuteron.cc.

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

◆ FactorialFactor()

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

Implements G4PreCompoundIon.

Definition at line 60 of file G4PreCompoundDeuteron.cc.

61{
62 return G4double((N-1)*(N-2)*(P-1)*P)/2.0;
63}

◆ GetAlpha()

G4double G4PreCompoundDeuteron::GetAlpha ( )
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 107 of file G4PreCompoundDeuteron.cc.

108{
109 G4double C = 0.0;
110 G4int aZ = theZ + ResidualZ;
111 if (aZ >= 70)
112 {
113 C = 0.10;
114 }
115 else
116 {
117 C = ((((0.15417e-06*aZ) - 0.29875e-04)*aZ + 0.21071e-02)*aZ - 0.66612e-01)*aZ + 0.98375;
118 }
119 return 1.0 + C/2.0;
120}
int G4int
Definition: G4Types.hh:66

◆ GetOpt12()

G4double G4PreCompoundDeuteron::GetOpt12 ( G4double  K)
protected

Definition at line 125 of file G4PreCompoundDeuteron.cc.

126{
127 G4double Kc = K;
128
129 // JMQ xsec is set constat above limit of validity
130 if (K > 50*MeV) { Kc = 50*MeV; }
131
132 G4double landa ,mu ,nu ,p , Ec,q,r,ji,xs;
133
134 G4double p0 = -38.21;
135 G4double p1 = 922.6;
136 G4double p2 = -2804.;
137 G4double landa0 = -0.0323;
138 G4double landa1 = -5.48;
139 G4double mm0 = 336.1;
140 G4double mu1 = 0.48;
141 G4double nu0 = 524.3;
142 G4double nu1 = -371.8;
143 G4double nu2 = -5.924;
144 G4double delta=1.2;
145
146 Ec = 1.44*theZ*ResidualZ/(1.5*ResidualAthrd+delta);
147 p = p0 + p1/Ec + p2/(Ec*Ec);
148 landa = landa0*ResidualA + landa1;
149 G4double resmu1 = g4pow->powZ(ResidualA,mu1);
150 mu = mm0*resmu1;
151 nu = resmu1*(nu0 + nu1*Ec + nu2*(Ec*Ec));
152 q = landa - nu/(Ec*Ec) - 2*p*Ec;
153 r = mu + 2*nu/Ec + p*(Ec*Ec);
154
155 ji=std::max(Kc,Ec);
156 if(Kc < Ec) { xs = p*Kc*Kc + q*Kc + r;}
157 else {xs = p*(Kc - ji)*(Kc - ji) + landa*Kc + mu + nu*(2 - Kc/ji)/ji ;}
158
159 if (xs <0.0) {xs=0.0;}
160
161 return xs;
162}
G4double powZ(G4int Z, G4double y)
Definition: G4Pow.hh:180

Referenced by CrossSection().

◆ GetOpt34()

G4double G4PreCompoundDeuteron::GetOpt34 ( G4double  K)
protected

Definition at line 165 of file G4PreCompoundDeuteron.cc.

167{
168
169 G4double landa, mu, nu, p ,signor(1.),sig;
170 G4double ec,ecsq,xnulam,etest(0.),a;
171 G4double b,ecut,cut,ecut2,geom,elab;
172
173 G4double flow = 1.e-18;
174 G4double spill= 1.e+18;
175
176 G4double p0 = 0.798;
177 G4double p1 = 420.3;
178 G4double p2 = -1651.;
179 G4double landa0 = 0.00619;
180 G4double landa1 = -7.54;
181 G4double mm0 = 583.5;
182 G4double mu1 = 0.337;
183 G4double nu0 = 421.8;
184 G4double nu1 = -474.5;
185 G4double nu2 = -3.592;
186
187 G4double ra=0.80;
188
189 //JMQ 13/02/09 increase of reduced radius to lower the barrier
190 // ec = 1.44 * theZ * ResidualZ / (1.5*ResidualAthrd+ra);
191 ec = 1.44 * theZ * ResidualZ / (1.7*ResidualAthrd+ra);
192 ecsq = ec * ec;
193 p = p0 + p1/ec + p2/ecsq;
194 landa = landa0*ResidualA + landa1;
195 a = g4pow->powZ(ResidualA,mu1);
196 mu = mm0 * a;
197 nu = a* (nu0+nu1*ec+nu2*ecsq);
198 xnulam = nu / landa;
199 if (xnulam > spill) { xnulam=0.; }
200 if (xnulam >= flow) { etest = 1.2 *std::sqrt(xnulam); }
201
202 a = -2.*p*ec + landa - nu/ecsq;
203 b = p*ecsq + mu + 2.*nu/ec;
204 ecut = 0.;
205 cut = a*a - 4.*p*b;
206 if (cut > 0.) { ecut = std::sqrt(cut); }
207 ecut = (ecut-a) / (p+p);
208 ecut2 = ecut;
209 //JMQ 290310 for avoiding unphysical increase below minimum (at ecut)
210 //ecut<0 means that there is no cut with energy axis, i.e. xs is set
211 //to 0 bellow minimum
212 // if (cut < 0.) ecut2 = ecut - 2.;
213 if (cut < 0.) { ecut2 = ecut; }
214 elab = K * FragmentA / G4double(ResidualA);
215 sig = 0.;
216
217 if (elab <= ec) { //start for E<Ec
218 if (elab > ecut2) { sig = (p*elab*elab+a*elab+b) * signor; }
219 } //end for E<Ec
220 else { //start for E>Ec
221 sig = (landa*elab+mu+nu/elab) * signor;
222 geom = 0.;
223 if (xnulam < flow || elab < etest) { return sig; }
224 geom = std::sqrt(theA*K);
225 geom = 1.23*ResidualAthrd + ra + 4.573/geom;
226 geom = 31.416 * geom * geom;
227 sig = std::max(geom,sig);
228 } //end for E>Ec
229 return sig;
230}

Referenced by CrossSection().

◆ GetRj()

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

Implements G4PreCompoundIon.

Definition at line 70 of file G4PreCompoundDeuteron.cc.

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

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