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

#include <G4PreCompoundAlpha.hh>

Inheritance diagram for G4PreCompoundAlpha:
G4PreCompoundIon G4PreCompoundFragment G4VPreCompoundFragment

Public Member Functions

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

Constructor & Destructor Documentation

G4PreCompoundAlpha::G4PreCompoundAlpha ( )

Definition at line 47 of file G4PreCompoundAlpha.cc.

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

48  : G4PreCompoundIon(G4Alpha::Alpha(), &theAlphaCoulombBarrier)
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 G4Alpha * Alpha()
Definition: G4Alpha.cc:89
G4PreCompoundAlpha::~G4PreCompoundAlpha ( )
virtual

Definition at line 59 of file G4PreCompoundAlpha.cc.

60 {}

Member Function Documentation

G4double G4PreCompoundAlpha::CoalescenceFactor ( G4int  A)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 67 of file G4PreCompoundAlpha.cc.

68 {
69  return 4096.0/G4double(A*A*A);
70 }
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundAlpha::CrossSection ( G4double  ekin)
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 90 of file G4PreCompoundAlpha.cc.

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

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

Implements G4PreCompoundIon.

Definition at line 62 of file G4PreCompoundAlpha.cc.

63 {
64  return G4double((N-4)*(P-3)*(N-3)*(P-2)*(N-2)*(P-1)*(N-1)*P)/12.0;
65 }
**D E S C R I P T I O N
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundAlpha::GetAlpha ( )
protectedvirtual

Implements G4PreCompoundIon.

Definition at line 111 of file G4PreCompoundAlpha.cc.

112 {
113  G4double C = 0.0;
114  G4int aZ = theZ + ResidualZ;
115  if (aZ <= 30)
116  {
117  C = 0.10;
118  }
119  else if (aZ <= 50)
120  {
121  C = 0.1 - (aZ-30)*0.001;
122  }
123  else if (aZ < 70)
124  {
125  C = 0.08 - (aZ-50)*0.001;
126  }
127  else
128  {
129  C = 0.06;
130  }
131  return 1.0+C;
132 }
int G4int
Definition: G4Types.hh:78
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundAlpha::GetOpt12 ( G4double  K)
protected

Definition at line 138 of file G4PreCompoundAlpha.cc.

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

Referenced by CrossSection().

139 {
140  G4double Kc=K;
141 
142  // JMQ xsec is set constant above limit of validity
143  if (K > 50*MeV) { Kc = 50*MeV; }
144 
145  G4double landa ,mu ,nu ,p , Ec,q,r,ji,xs;
146 
147  G4double p0 = 10.95;
148  G4double p1 = -85.2;
149  G4double p2 = 1146.;
150  G4double landa0 = 0.0643;
151  G4double landa1 = -13.96;
152  G4double mm0 = 781.2;
153  G4double mu1 = 0.29;
154  G4double nu0 = -304.7;
155  G4double nu1 = -470.0;
156  G4double nu2 = -8.580;
157  G4double delta=1.2;
158 
159  Ec = 1.44*theZ*ResidualZ/(1.5*ResidualAthrd+delta);
160  p = p0 + p1/Ec + p2/(Ec*Ec);
161  landa = landa0*ResidualA + landa1;
162  G4double resmu1 = g4pow->powZ(ResidualA,mu1);
163  mu = mm0*resmu1;
164  nu = resmu1*(nu0 + nu1*Ec + nu2*(Ec*Ec));
165  q = landa - nu/(Ec*Ec) - 2*p*Ec;
166  r = mu + 2*nu/Ec + p*(Ec*Ec);
167 
168  ji=std::max(Kc,Ec);
169  if(Kc < Ec) { xs = p*Kc*Kc + q*Kc + r;}
170  else {xs = p*(Kc - ji)*(Kc - ji) + landa*Kc + mu + nu*(2 - Kc/ji)/ji ;}
171 
172  if (xs <0.0) {xs=0.0;}
173 
174  return xs;
175 }
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 G4PreCompoundAlpha::GetOpt34 ( G4double  K)
protected

Definition at line 178 of file G4PreCompoundAlpha.cc.

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

Referenced by CrossSection().

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

Implements G4PreCompoundIon.

Definition at line 72 of file G4PreCompoundAlpha.cc.

73 {
74  G4double rj = 0.0;
75  if(nCharged >=2 && (nParticles-nCharged) >=2 ) {
76  G4double denominator =
77  G4double(nParticles*(nParticles-1)*(nParticles-2)*(nParticles-3));
78  rj = 6.0*nCharged*(nCharged-1)*(nParticles-nCharged)*(nParticles-nCharged-1)
79  /denominator;
80  }
81  return rj;
82 }
double G4double
Definition: G4Types.hh:76

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