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

#include <G4PreCompoundNeutron.hh>

Inheritance diagram for G4PreCompoundNeutron:
G4PreCompoundNucleon G4PreCompoundFragment G4VPreCompoundFragment

Public Member Functions

 G4PreCompoundNeutron ()
 
virtual ~G4PreCompoundNeutron ()
 
- Public Member Functions inherited from G4PreCompoundNucleon
 G4PreCompoundNucleon (const G4ParticleDefinition *, G4VCoulombBarrier *aCoulombBarrier)
 
virtual ~G4PreCompoundNucleon ()
 
- 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 GetAlpha ()
 
virtual G4double GetBeta ()
 
G4double GetOpt12 (G4double K)
 
G4double GetOpt34 (G4double K)
 
- Protected Member Functions inherited from G4PreCompoundNucleon
virtual G4double ProbabilityDistributionFunction (G4double eKin, const G4Fragment &aFragment)
 
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 G4PreCompoundNeutron.hh.

Constructor & Destructor Documentation

G4PreCompoundNeutron::G4PreCompoundNeutron ( )

Definition at line 48 of file G4PreCompoundNeutron.cc.

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

49  : G4PreCompoundNucleon(G4Neutron::Neutron(), &theNeutronCoulombBarrier)
50 {
51  ResidualA = GetRestA();
52  ResidualZ = GetRestZ();
53  theA = GetA();
54  theZ = GetZ();
55  ResidualAthrd = ResidualA13();
56  FragmentAthrd = ResidualAthrd;
57  FragmentA = theA + ResidualA;
58 }
G4double ResidualA13() const
G4int GetA() const
G4int GetRestZ() const
static G4Neutron * Neutron()
Definition: G4Neutron.cc:104
G4int GetRestA() const
G4int GetZ() const
G4PreCompoundNeutron::~G4PreCompoundNeutron ( )
virtual

Definition at line 60 of file G4PreCompoundNeutron.cc.

61 {}

Member Function Documentation

G4double G4PreCompoundNeutron::CrossSection ( G4double  ekin)
protectedvirtual

Implements G4PreCompoundNucleon.

Definition at line 79 of file G4PreCompoundNeutron.cc.

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

80 {
81  ResidualA = GetRestA();
82  ResidualZ = GetRestZ();
83  theA = GetA();
84  theZ = GetZ();
85  ResidualAthrd = ResidualA13();
86  FragmentA = theA + ResidualA;
87  FragmentAthrd = g4pow->Z13(FragmentA);
88 
89  if (OPTxs==0) { return GetOpt0( K); }
90  else if( OPTxs==1 || OPTxs==2) { return GetOpt12( K); }
91  else if (OPTxs==3 || OPTxs==4) { return GetOpt34( K); }
92  else{
93  std::ostringstream errOs;
94  errOs << "BAD NEUTRON CROSS SECTION OPTION !!" <<G4endl;
95  throw G4HadronicException(__FILE__, __LINE__, errOs.str());
96  return 0.;
97  }
98 }
G4double GetOpt12(G4double K)
G4double ResidualA13() const
G4double GetOpt34(G4double K)
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 G4PreCompoundNeutron::GetAlpha ( )
protectedvirtual

Implements G4PreCompoundNucleon.

Definition at line 100 of file G4PreCompoundNeutron.cc.

Referenced by GetBeta().

101 {
102  return 0.76+2.2/ResidualAthrd;
103 }
G4double G4PreCompoundNeutron::GetBeta ( )
protectedvirtual

Implements G4PreCompoundNucleon.

Definition at line 105 of file G4PreCompoundNeutron.cc.

References GetAlpha(), and python.hepunit::MeV.

106 {
107  // return (2.12/std::pow(GetRestA(),2.0/3.0)-0.05)*MeV/GetAlpha();
108  return (2.12/(ResidualAthrd*ResidualAthrd)-0.05)*MeV/GetAlpha();
109 }
virtual G4double GetAlpha()
G4double G4PreCompoundNeutron::GetOpt12 ( G4double  K)
protected

Definition at line 114 of file G4PreCompoundNeutron.cc.

References G4cout, G4endl, and python.hepunit::MeV.

Referenced by CrossSection().

115 {
116  G4double Kc=K;
117 
118  // Pramana (Bechetti & Greenles) for neutrons is chosen
119 
120  // JMQ xsec is set constat above limit of validity
121  if (K > 50*MeV) { Kc = 50*MeV; }
122 
123  G4double landa, landa0, landa1, mu, mm0, mu1,nu, nu0, nu1, nu2,xs;
124 
125  landa0 = 18.57;
126  landa1 = -22.93;
127  mm0 = 381.7;
128  mu1 = 24.31;
129  nu0 = 0.172;
130  nu1 = -15.39;
131  nu2 = 804.8;
132  landa = landa0/ResidualAthrd + landa1;
133  mu = mm0*ResidualAthrd + mu1*ResidualAthrd*ResidualAthrd;
134  nu = nu0*ResidualAthrd*ResidualA + nu1*ResidualAthrd*ResidualAthrd + nu2 ;
135  xs=landa*Kc + mu + nu/Kc;
136  if (xs <= 0.0 ){
137  std::ostringstream errOs;
138  G4cout<<"WARNING: NEGATIVE OPT=1 neutron cross section "<<G4endl;
139  errOs << "RESIDUAL: Ar=" << ResidualA << " Zr=" << ResidualZ <<G4endl;
140  errOs <<" xsec("<<Kc<<" MeV) ="<<xs <<G4endl;
141  throw G4HadronicException(__FILE__, __LINE__, errOs.str());
142  }
143  return xs;
144 }
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundNeutron::GetOpt34 ( G4double  K)
protected

Definition at line 147 of file G4PreCompoundNeutron.cc.

References test::a, test::b, and G4INCL::Math::max().

Referenced by CrossSection().

148 {
149  G4double landa, landa0, landa1, mu, mm0, mu1,nu, nu0, nu1, nu2;
150  G4double p, p0;
151  G4double flow,ec,ecsq,xnulam,etest(0.),ra(0.),a,signor(1.),sig;
152  G4double b,ecut,cut,ecut2,geom,elab;
153 
154  flow = 1.e-18;
155 
156  // PRECO xs for neutrons is choosen
157  p0 = -312.;
158  landa0 = 12.10;
159  landa1= -11.27;
160  mm0 = 234.1;
161  mu1 = 38.26;
162  nu0 = 1.55;
163  nu1 = -106.1;
164  nu2 = 1280.8;
165 
166  if (ResidualA < 40) { signor =0.7 + ResidualA*0.0075; }
167  if (ResidualA > 210) { signor = 1. + (ResidualA-210)/250.; }
168  landa = landa0/ResidualAthrd + landa1;
169  mu = mm0*ResidualAthrd + mu1*ResidualAthrd*ResidualAthrd;
170  nu = nu0*ResidualAthrd*ResidualA + nu1*ResidualAthrd*ResidualAthrd + nu2;
171 
172  // JMQ very low energy behaviour corrected (problem for A (apprx.)>60)
173  if (nu < 0.) { nu=-nu; }
174 
175  ec = 0.5;
176  ecsq = 0.25;
177  p = p0;
178  xnulam = 1.;
179  etest = 32.;
180  // ** etest is the energy above which the rxn cross section is
181  // ** compared with the geometrical limit and the max taken.
182  // ** xnulam here is a dummy value to be used later.
183 
184  a = -2.*p*ec + landa - nu/ecsq;
185  b = p*ecsq + mu + 2.*nu/ec;
186  ecut = 0.;
187  cut = a*a - 4.*p*b;
188  if (cut > 0.) { ecut = std::sqrt(cut); }
189  ecut = (ecut-a) / (p+p);
190  ecut2 = ecut;
191  if (cut < 0.) { ecut2 = ecut - 2.; }
192  elab = K * FragmentA / G4double(ResidualA);
193  sig = 0.;
194  if (elab <= ec) { //start for E<Ec
195  if (elab > ecut2) { sig = (p*elab*elab+a*elab+b) * signor; }
196  } //end for E<Ec
197  else { //start for E>Ec
198  sig = (landa*elab+mu+nu/elab) * signor;
199  geom = 0.;
200  if (xnulam < flow || elab < etest) { return sig; }
201  geom = std::sqrt(theA*K);
202  geom = 1.23*ResidualAthrd + ra + 4.573/geom;
203  geom = 31.416 * geom * geom;
204  sig = std::max(geom,sig);
205 
206  }
207  return sig;
208 }
const char * p
Definition: xmltok.h:285
T max(const T t1, const T t2)
brief Return the largest of the two arguments
double G4double
Definition: G4Types.hh:76
G4double G4PreCompoundNeutron::GetRj ( G4int  NumberParticles,
G4int  NumberCharged 
)
protectedvirtual

Implements G4PreCompoundNucleon.

Definition at line 63 of file G4PreCompoundNeutron.cc.

64 {
65  G4double rj = 0.0;
66  if(nParticles > 0) {
67  rj = static_cast<G4double>(nParticles - nCharged)/
68  static_cast<G4double>(nParticles);
69  }
70  return rj;
71 }
double G4double
Definition: G4Types.hh:76

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