Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4NeutronInelasticCrossSection Class Reference

#include <G4NeutronInelasticCrossSection.hh>

+ Inheritance 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 IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual G4int GetVerboseLevel () const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
bool ForAllAtomsAndEnergies () const
 
void SetForAllAtomsAndEnergies (G4bool val)
 
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::G4NeutronInelasticCrossSection ( )

Definition at line 40 of file G4NeutronInelasticCrossSection.cc.

41 : G4VCrossSectionDataSet("Wellisch-Laidlaw"),
42 minEnergy(19.9*MeV), maxEnergy(19.9*GeV)
43{}

◆ ~G4NeutronInelasticCrossSection()

G4NeutronInelasticCrossSection::~G4NeutronInelasticCrossSection ( )

Definition at line 45 of file G4NeutronInelasticCrossSection.cc.

46{}

Member Function Documentation

◆ CrossSectionDescription()

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}

◆ GetCrossSection()

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}
double A(double temperature)
#define A13
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double logZ(G4int Z) const
Definition: G4Pow.hh:137
G4double Z13(G4int Z) const
Definition: G4Pow.hh:123
const G4double pi

Referenced by GetElementCrossSection().

◆ GetElementCrossSection()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 65 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)
static G4NistManager * Instance()

◆ IsElementApplicable()

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}

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