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

#include <G4ChipsNeutronInelasticXS.hh>

+ Inheritance diagram for G4ChipsNeutronInelasticXS:

Public Member Functions

 G4ChipsNeutronInelasticXS ()
 
 ~G4ChipsNeutronInelasticXS ()
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
virtual G4double GetChipsCrossSection (G4double momentum, G4int Z, G4int N, G4int pdg)
 
- 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 ComputeCrossSectionPerElement (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, 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 G4double ComputeIsoCrossSection (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, 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 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
 
void SetName (const G4String &nam)
 
G4VCrossSectionDataSetoperator= (const G4VCrossSectionDataSet &right)=delete
 
 G4VCrossSectionDataSet (const G4VCrossSectionDataSet &)=delete
 

Static Public Member Functions

static const char * Default_Name ()
 

Additional Inherited Members

- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 
G4String name
 

Detailed Description

Definition at line 45 of file G4ChipsNeutronInelasticXS.hh.

Constructor & Destructor Documentation

◆ G4ChipsNeutronInelasticXS()

G4ChipsNeutronInelasticXS::G4ChipsNeutronInelasticXS ( )

Definition at line 56 of file G4ChipsNeutronInelasticXS.cc.

57{
58 lastLEN=0; // Pointer to the lastArray of LowEn CS
59 lastHEN=0; // Pointer to the lastArray of HighEnCS
60 lastN=0; // The last N of calculated nucleus
61 lastZ=0; // The last Z of calculated nucleus
62 lastP=0.; // Last used in cross section Momentum
63 lastTH=0.; // Last threshold momentum
64 lastCS=0.; // Last value of the Cross Section
65 lastI=0; // The last position in the DAMDB
66 HEthresh=0.;// HE threshold for the CS calculation
67 LEN = new std::vector<G4double*>;
68 HEN = new std::vector<G4double*>;
69}

◆ ~G4ChipsNeutronInelasticXS()

G4ChipsNeutronInelasticXS::~G4ChipsNeutronInelasticXS ( )

Definition at line 71 of file G4ChipsNeutronInelasticXS.cc.

72{
73 std::size_t lens=LEN->size();
74 for(std::size_t i=0; i<lens; ++i) delete[] (*LEN)[i];
75 delete LEN;
76 std::size_t hens=HEN->size();
77 for(std::size_t i=0; i<hens; ++i) delete[] (*HEN)[i];
78 delete HEN;
79}

Member Function Documentation

◆ CrossSectionDescription()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 82 of file G4ChipsNeutronInelasticXS.cc.

83{
84 outFile << "G4ChipsNeutronInelasticXS provides the inelastic cross\n"
85 << "section for neutron nucleus scattering as a function of incident\n"
86 << "momentum. The cross section is calculated using M. Kossov's\n"
87 << "CHIPS parameterization of cross section data.\n";
88}

◆ Default_Name()

static const char * G4ChipsNeutronInelasticXS::Default_Name ( )
inlinestatic

Definition at line 55 of file G4ChipsNeutronInelasticXS.hh.

55{return "ChipsNeutronInelasticXS";}

Referenced by G4ChipsComponentXS::G4ChipsComponentXS().

◆ GetChipsCrossSection()

G4double G4ChipsNeutronInelasticXS::GetChipsCrossSection ( G4double  momentum,
G4int  Z,
G4int  N,
G4int  pdg 
)
virtual

!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)

Definition at line 111 of file G4ChipsNeutronInelasticXS.cc.

112{
113
114 G4bool in=false; // By default the isotope must be found in the AMDB
115 if(tgN!=lastN || tgZ!=lastZ) // The nucleus was not the last used isotope
116 {
117 in = false; // By default the isotope haven't be found in AMDB
118 lastP = 0.; // New momentum history (nothing to compare with)
119 lastN = tgN; // The last N of the calculated nucleus
120 lastZ = tgZ; // The last Z of the calculated nucleus
121 lastI = (G4int)colN.size(); // Size of the Associative Memory DB in the heap
122 j = 0; // A#0f records found in DB for this projectile
123 if(lastI) for(G4int i=0; i<lastI; ++i) // AMDB exists, try to find the (Z,N) isotope
124 {
125 if(colN[i]==tgN && colZ[i]==tgZ) // Try the record "i" in the AMDB
126 {
127 lastI=i; // Remember the index for future fast/last use
128 lastTH =colTH[i]; // The last THreshold (A-dependent)
129 if(pMom<=lastTH)
130 {
131 return 0.; // Energy is below the Threshold value
132 }
133 lastP =colP [i]; // Last Momentum (A-dependent)
134 lastCS =colCS[i]; // Last CrossSect (A-dependent)
135 in = true; // This is the case when the isotop is found in DB
136 // Momentum pMom is in IU ! @@ Units
137 lastCS=CalculateCrossSection(-1,j,2112,lastZ,lastN,pMom); // read & update
138 if(lastCS<=0. && pMom>lastTH) // Correct the threshold (@@ No intermediate Zeros)
139 {
140 lastCS=0.;
141 lastTH=pMom;
142 }
143 break; // Go out of the LOOP
144 }
145 j++; // Increment a#0f records found in DB
146 }
147 if(!in) // This isotope has not been calculated previously
148 {
149 //!!The slave functions must provide cross-sections in millibarns (mb) !! (not in IU)
150 lastCS=CalculateCrossSection(0,j,2112,lastZ,lastN,pMom); //calculate & create
151 //if(lastCS>0.) // It means that the AMBD was initialized
152 //{
153
154 lastTH = 0; //ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
155 colN.push_back(tgN);
156 colZ.push_back(tgZ);
157 colP.push_back(pMom);
158 colTH.push_back(lastTH);
159 colCS.push_back(lastCS);
160 //} // M.K. Presence of H1 with high threshold breaks the syncronization
161 return lastCS*millibarn;
162 } // End of creation of the new set of parameters
163 else
164 {
165 colP[lastI]=pMom;
166 colCS[lastI]=lastCS;
167 }
168 } // End of parameters udate
169 else if(pMom<=lastTH)
170 {
171 return 0.; // Momentum is below the Threshold Value -> CS=0
172 }
173 else // It is the last used -> use the current tables
174 {
175 lastCS=CalculateCrossSection(1,j,2112,lastZ,lastN,pMom); // Only read and UpdateDB
176 lastP=pMom;
177 }
178 return lastCS*millibarn;
179}
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85

Referenced by G4ChipsComponentXS::GetInelasticElementCrossSection(), GetIsoCrossSection(), and G4ChipsComponentXS::GetTotalElementCrossSection().

◆ GetIsoCrossSection()

G4double G4ChipsNeutronInelasticXS::GetIsoCrossSection ( const G4DynamicParticle Pt,
G4int  tgZ,
G4int  A,
const G4Isotope iso = 0,
const G4Element elm = 0,
const G4Material mat = 0 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 98 of file G4ChipsNeutronInelasticXS.cc.

102{
103 G4double pMom=Pt->GetTotalMomentum();
104 G4int tgN = A - tgZ;
105
106 return GetChipsCrossSection(pMom, tgZ, tgN, 2112);
107}
double G4double
Definition: G4Types.hh:83
const G4double A[17]
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double GetTotalMomentum() const

◆ IsIsoApplicable()

G4bool G4ChipsNeutronInelasticXS::IsIsoApplicable ( const G4DynamicParticle Pt,
G4int  Z,
G4int  A,
const G4Element elm,
const G4Material mat 
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 90 of file G4ChipsNeutronInelasticXS.cc.

93{
94 return true;
95}

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