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

#include <G4PreCompoundDeuteron.hh>

Inheritance diagram for G4PreCompoundDeuteron:
G4PreCompoundIon G4PreCompoundFragment G4VPreCompoundFragment

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

Constructor & Destructor Documentation

G4PreCompoundDeuteron::G4PreCompoundDeuteron ( )

Definition at line 47 of file G4PreCompoundDeuteron.cc.

References G4VPreCompoundFragment::GetA(), and G4VPreCompoundFragment::GetZ().

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 }
G4int GetA() const
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:94
G4int GetZ() const
G4PreCompoundDeuteron::~G4PreCompoundDeuteron ( )

Definition at line 57 of file G4PreCompoundDeuteron.cc.

58 {}

Member Function Documentation

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

Implements G4PreCompoundIon.

Definition at line 86 of file G4PreCompoundDeuteron.cc.

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

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

Definition at line 125 of file G4PreCompoundDeuteron.cc.

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

Referenced by CrossSection().

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 }
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 G4PreCompoundDeuteron::GetOpt34 ( G4double  K)
protected

Definition at line 165 of file G4PreCompoundDeuteron.cc.

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

Referenced by CrossSection().

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 }
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 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 }
double G4double
Definition: G4Types.hh:76

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