Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4PreCompoundHe3 Class Reference

#include <G4PreCompoundHe3.hh>

Inheritance diagram for G4PreCompoundHe3:
G4PreCompoundIon G4PreCompoundFragment G4VPreCompoundFragment

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)
 
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)
 
G4double GetBeta ()
 
G4double GetOpt0 (G4double ekin)
 
- 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 ( )

Definition at line 47 of file G4PreCompoundHe3.cc.

References G4VPreCompoundFragment::GetA(), G4VPreCompoundFragment::GetRestA(), G4VPreCompoundFragment::GetRestZ(), G4VPreCompoundFragment::GetZ(), and G4VPreCompoundFragment::ResidualA13().

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 }
G4double ResidualA13() const
G4int GetA() const
G4int GetRestZ() const
G4int GetRestA() const
G4int GetZ() const
static G4He3 * He3()
Definition: G4He3.cc:94
G4PreCompoundHe3::~G4PreCompoundHe3 ( )
virtual

Definition at line 59 of file G4PreCompoundHe3.cc.

60 {}

Member Function Documentation

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:76
G4double G4PreCompoundHe3::CrossSection ( G4double  ekin)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 88 of file G4PreCompoundHe3.cc.

References G4endl, G4VPreCompoundFragment::g4pow, G4VPreCompoundFragment::GetA(), G4PreCompoundIon::GetOpt0(), GetOpt12(), GetOpt34(), G4VPreCompoundFragment::GetRestA(), G4VPreCompoundFragment::GetRestZ(), G4VPreCompoundFragment::GetZ(), G4VPreCompoundFragment::OPTxs, G4VPreCompoundFragment::ResidualA13(), and G4Pow::Z13().

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 }
G4double GetOpt12(G4double K)
G4double ResidualA13() const
G4int GetA() const
G4double GetOpt0(G4double ekin)
G4double Z13(G4int Z) const
Definition: G4Pow.hh:129
G4int GetRestZ() const
G4double GetOpt34(G4double K)
G4int GetRestA() const
#define G4endl
Definition: G4ios.hh:61
G4int GetZ() const
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 }
**D E S C R I P T I O N
double G4double
Definition: G4Types.hh:76
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:78
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundHe3::GetOpt12 ( G4double  K)
protected

Definition at line 135 of file G4PreCompoundHe3.cc.

References G4VPreCompoundFragment::g4pow, G4INCL::Math::max(), python.hepunit::MeV, and G4Pow::powZ().

Referenced by CrossSection().

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 }
const char * p
Definition: xmltok.h:285
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double powZ(G4int Z, G4double y) const
Definition: G4Pow.hh:258
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundHe3::GetOpt34 ( G4double  K)
protected

Definition at line 177 of file G4PreCompoundHe3.cc.

References test::a, test::b, G4VPreCompoundFragment::g4pow, G4INCL::Math::max(), and G4Pow::powZ().

Referenced by CrossSection().

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 }
const char * p
Definition: xmltok.h:285
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double powZ(G4int Z, G4double y) const
Definition: G4Pow.hh:258
double G4double
Definition: G4Types.hh:76
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 }
double G4double
Definition: G4Types.hh:76

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