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

#include <G4NeutronInelasticCrossSection.hh>

Inheritance diagram for G4NeutronInelasticCrossSection:
G4VCrossSectionDataSet

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="")
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 }
std::ofstream outFile
Definition: GammaRayTel.cc:68
G4double G4NeutronInelasticCrossSection::GetCrossSection ( G4double  kineticEnergy,
G4int  Z,
G4int  A 
)

Definition at line 74 of file G4NeutronInelasticCrossSection.cc.

References A13, G4Pow::GetInstance(), python.hepunit::keV, G4Pow::logZ(), python.hepunit::MeV, python.hepunit::millibarn, python.hepunit::pi, and G4Pow::Z13().

Referenced by GetElementCrossSection().

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. + std::exp(firstexp);
101  G4double corr = 1. + p3*(1.-1./first);
102 
103  G4double secondexp= -p6*(elog-p7);
104  G4double secondv = 1.+std::exp(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:53
#define A13
Definition: G4Pow.hh:56
int G4int
Definition: G4Types.hh:78
int millibarn
Definition: hepunit.py:40
G4double logZ(G4int Z) const
Definition: G4Pow.hh:165
G4double Z13(G4int Z) const
Definition: G4Pow.hh:129
double G4double
Definition: G4Types.hh:76
G4double G4NeutronInelasticCrossSection::GetElementCrossSection ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 66 of file G4NeutronInelasticCrossSection.cc.

References GetCrossSection(), G4DynamicParticle::GetKineticEnergy(), and G4NistManager::Instance().

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()
G4bool G4NeutronInelasticCrossSection::IsElementApplicable ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 58 of file G4NeutronInelasticCrossSection.cc.

References G4DynamicParticle::GetKineticEnergy().

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

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