Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4NeutronInelasticCrossSection Class Reference

#include <G4NeutronInelasticCrossSection.hh>

Inheritance diagram for G4NeutronInelasticCrossSection:
Collaboration diagram for G4NeutronInelasticCrossSection:

Public Member Functions

 G4NeutronInelasticCrossSection ()
 
 ~G4NeutronInelasticCrossSection ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *aPart, G4int Z, const G4Material *)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *)
 
G4double GetCrossSection (G4double kineticEnergy, G4int Z, G4int A)
 
virtual void CrossSectionDescription (std::ostream &) const
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
virtual G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual G4int GetVerboseLevel () const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
const G4StringGetName () const
 

Additional Inherited Members

- Protected Member Functions inherited from G4VCrossSectionDataSet
void SetName (const G4String &)
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 

Detailed Description

Definition at line 44 of file G4NeutronInelasticCrossSection.hh.

Constructor & Destructor Documentation

G4NeutronInelasticCrossSection::G4NeutronInelasticCrossSection ( )

Definition at line 40 of file G4NeutronInelasticCrossSection.cc.

41  : G4VCrossSectionDataSet("Wellisch-Laidlaw"),
42  minEnergy(19.9*MeV), maxEnergy(19.9*GeV)
43 {}
G4VCrossSectionDataSet(const G4String &nam="")
static constexpr double GeV
Definition: G4SIunits.hh:217
static constexpr double MeV
Definition: G4SIunits.hh:214
G4NeutronInelasticCrossSection::~G4NeutronInelasticCrossSection ( )

Definition at line 45 of file G4NeutronInelasticCrossSection.cc.

46 {}

Member Function Documentation

void G4NeutronInelasticCrossSection::CrossSectionDescription ( std::ostream &  outFile) const
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 49 of file G4NeutronInelasticCrossSection.cc.

50 {
51  outFile << "G4NeutronInelasticCrossSection calculates the inelastic neutron\n"
52  << "scattering cross section for nuclei using the Wellisch-Laidlaw\n"
53  << "parameterization between 19.9 MeV and 19.9 GeV. Above 19.9 GeV\n"
54  << "the cross section is assumed to be constant.\n";
55 }
G4double G4NeutronInelasticCrossSection::GetCrossSection ( G4double  kineticEnergy,
G4int  Z,
G4int  A 
)

Definition at line 74 of file G4NeutronInelasticCrossSection.cc.

76 {
77  if(anEnergy > maxEnergy) { anEnergy = maxEnergy; }
78  G4double cross_section = 0.0;
79  if(anEnergy < keV) { return cross_section; }
80 
81  G4Pow* g4pow = G4Pow::GetInstance();
82  G4double A13 = g4pow->Z13(A);
83 
84  G4double elog = std::log10(anEnergy/MeV);
85  G4int nOfNeutrons = A - Z;
86  G4double atomicNumber = G4double(A);
87  static const G4double p1=1.3773;
88  G4double p2 = 1. + 10./atomicNumber - 0.0006*atomicNumber;
89  G4double p3 = 0.6+ 13./atomicNumber - 0.0005*atomicNumber;
90  G4double p4 = 7.2449 - 0.018242*atomicNumber;
91  G4double p5 = 1.64 - 1.8/atomicNumber - 0.0005*atomicNumber;
92  G4double p6 = 1. + 200./atomicNumber + 0.02*atomicNumber;
93  G4double p7 = (atomicNumber-70.)*(atomicNumber-200.)/11000.;
94 
95  G4double logN = g4pow->logZ(nOfNeutrons);
96  G4double part1 = pi*p1*p1*logN;
97  G4double part2 = 1.+ A13 - p2*(1.-1./A13);
98 
99  G4double firstexp = -p4*(elog-p5);
100  G4double first = 1. + G4Exp(firstexp);
101  G4double corr = 1. + p3*(1.-1./first);
102 
103  G4double secondexp= -p6*(elog-p7);
104  G4double secondv = 1.+G4Exp(secondexp);
105  G4double corr2 = 1./secondv;
106 
107  G4double xsec = corr*corr2*part1*part2*10.*millibarn;
108  if(xsec < 0.0) { xsec = 0.0; }
109  return xsec;
110 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
#define A13
Definition: G4Pow.hh:56
int G4int
Definition: G4Types.hh:78
G4double logZ(G4int Z) const
Definition: G4Pow.hh:166
G4double Z13(G4int Z) const
Definition: G4Pow.hh:127
double A(double temperature)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static constexpr double MeV
Definition: G4SIunits.hh:214
static constexpr double pi
Definition: G4SIunits.hh:75
double G4double
Definition: G4Types.hh:76
static constexpr double keV
Definition: G4SIunits.hh:216
static constexpr double millibarn
Definition: G4SIunits.hh:106

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4NeutronInelasticCrossSection::GetElementCrossSection ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 66 of file G4NeutronInelasticCrossSection.cc.

68 {
69  G4int A = G4int(G4NistManager::Instance()->GetAtomicMassAmu(Z));
70  return GetCrossSection(aPart->GetKineticEnergy(), Z, A);
71 }
G4double GetKineticEnergy() const
G4double GetCrossSection(G4double kineticEnergy, G4int Z, G4int A)
int G4int
Definition: G4Types.hh:78
static G4NistManager * Instance()
double A(double temperature)

Here is the call graph for this function:

G4bool G4NeutronInelasticCrossSection::IsElementApplicable ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 58 of file G4NeutronInelasticCrossSection.cc.

60 {
61  G4double e = part->GetKineticEnergy();
62  return (1 < Z && e > minEnergy);
63 }
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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