Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4ChipsPionPlusElasticXS Class Reference

#include <G4ChipsPionPlusElasticXS.hh>

Inheritance diagram for G4ChipsPionPlusElasticXS:
G4VCrossSectionDataSet

Public Member Functions

virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
bool ForAllAtomsAndEnergies () const
 
 G4ChipsPionPlusElasticXS ()
 
virtual G4double GetChipsCrossSection (G4double momentum, G4int Z, G4int N, G4int pdg)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
G4double GetExchangeT (G4int tZ, G4int tN, G4int pPDG)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int tgZ, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetMaxKinEnergy () const
 
G4double GetMinKinEnergy () const
 
const G4StringGetName () const
 
virtual G4int GetVerboseLevel () const
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *Pt, G4int Z, G4int A, const G4Element *elm, const G4Material *mat)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
void SetForAllAtomsAndEnergies (G4bool val)
 
void SetMaxKinEnergy (G4double value)
 
void SetMinKinEnergy (G4double value)
 
void SetName (const G4String &nam)
 
virtual void SetVerboseLevel (G4int value)
 
 ~G4ChipsPionPlusElasticXS ()
 

Static Public Member Functions

static const char * Default_Name ()
 

Protected Attributes

G4String name
 
G4int verboseLevel
 

Private Member Functions

G4double CalculateCrossSection (G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)
 
G4double GetHMaxT ()
 
G4double GetPTables (G4double lpP, G4double lPm, G4int PDG, G4int tZ, G4int tN)
 
G4double GetQ2max (G4int pPDG, G4int tgZ, G4int tgN, G4double pP)
 
G4double GetSlope (G4int tZ, G4int tN, G4int pPDG)
 
G4double GetTabValues (G4double lp, G4int pPDG, G4int tgZ, G4int tgN)
 

Private Attributes

std::vector< G4double * > B1T
 
std::vector< G4double * > B2T
 
std::vector< G4double * > B3T
 
std::vector< G4double * > B4T
 
std::vector< G4doublecolCS
 
std::vector< G4intcolN
 
std::vector< G4doublecolP
 
std::vector< G4doublecolTH
 
std::vector< G4intcolZ
 
std::vector< G4double * > CST
 
G4double dlnP
 
G4bool isForAllAtomsAndEnergies
 
G4doublelastB1T
 
G4doublelastB2T
 
G4doublelastB3T
 
G4doublelastB4T
 
G4double lastCS
 
G4doublelastCST
 
G4int lastI
 
G4double lastLP
 
G4int lastN
 
G4double lastP
 
G4doublelastPAR
 
G4double lastPIN
 
G4doublelastS1T
 
G4doublelastS2T
 
G4doublelastS3T
 
G4doublelastS4T
 
G4double lastSIG
 
G4doublelastSST
 
G4double lastTH
 
G4double lastTM
 
G4int lastTN
 
G4int lastTZ
 
G4int lastZ
 
G4double lPMax
 
G4double lPMin
 
G4double maxKinEnergy
 
G4double minKinEnergy
 
const G4int nLast
 
const G4int nPoints
 
G4bool onlyCS
 
std::vector< G4double * > PAR
 
std::vector< G4doublePIN
 
G4CrossSectionDataSetRegistryregistry
 
std::vector< G4double * > S1T
 
std::vector< G4double * > S2T
 
std::vector< G4double * > S3T
 
std::vector< G4double * > S4T
 
std::vector< G4double * > SST
 
G4double theB1
 
G4double theB2
 
G4double theB3
 
G4double theB4
 
G4double theS1
 
G4double theS2
 
G4double theS3
 
G4double theS4
 
G4double theSS
 

Detailed Description

Definition at line 46 of file G4ChipsPionPlusElasticXS.hh.

Constructor & Destructor Documentation

◆ G4ChipsPionPlusElasticXS()

G4ChipsPionPlusElasticXS::G4ChipsPionPlusElasticXS ( )

Definition at line 57 of file G4ChipsPionPlusElasticXS.cc.

58{
59 lPMin=-8.; // Min tabulated logarithmMomentum(D)
60 lPMax= 8.; // Max tabulated logarithmMomentum(D)
61 dlnP=(lPMax-lPMin)/nLast;// LogStep inTheTable(D)
62 onlyCS=true;// Flag toCalcul OnlyCS(not Si/Bi)(L)
63 lastSIG=0.; // Last calculated cross section (L)
64 lastLP=-10.;// Last log(mom_of IncidentHadron)(L)
65 lastTM=0.; // Last t_maximum (L)
66 theSS=0.; // TheLastSqSlope of 1st difr.Max(L)
67 theS1=0.; // TheLastMantissa of 1st difr.Max(L)
68 theB1=0.; // TheLastSlope of 1st difruct.Max(L)
69 theS2=0.; // TheLastMantissa of 2nd difr.Max(L)
70 theB2=0.; // TheLastSlope of 2nd difruct.Max(L)
71 theS3=0.; // TheLastMantissa of 3d difr. Max(L)
72 theB3=0.; // TheLastSlope of 3d difruct. Max(L)
73 theS4=0.; // TheLastMantissa of 4th difr.Max(L)
74 theB4=0.; // TheLastSlope of 4th difruct.Max(L)
75 lastTZ=0; // Last atomic number of the target
76 lastTN=0; // Last # of neutrons in the target
77 lastPIN=0.; // Last initialized max momentum
78 lastCST=0; // Elastic cross-section table
79 lastPAR=0; // ParametersForFunctionalCalculation
80 lastSST=0; // E-dep of SqaredSlope of 1st difMax
81 lastS1T=0; // E-dep of mantissa of 1st dif.Max
82 lastB1T=0; // E-dep of the slope of 1st difMax
83 lastS2T=0; // E-dep of mantissa of 2nd difrMax
84 lastB2T=0; // E-dep of the slope of 2nd difMax
85 lastS3T=0; // E-dep of mantissa of 3d difr.Max
86 lastB3T=0; // E-dep of the slope of 3d difrMax
87 lastS4T=0; // E-dep of mantissa of 4th difrMax
88 lastB4T=0; // E-dep of the slope of 4th difMax
89 lastN=0; // The last N of calculated nucleus
90 lastZ=0; // The last Z of calculated nucleus
91 lastP=0.; // LastUsed in cross section Momentum
92 lastTH=0.; // Last threshold momentum
93 lastCS=0.; // Last value of the Cross Section
94 lastI=0; // The last position in the DAMDB
95}
static const char * Default_Name()
G4VCrossSectionDataSet(const G4String &nam="")

References dlnP, lastB1T, lastB2T, lastB3T, lastB4T, lastCS, lastCST, lastI, lastLP, lastN, lastP, lastPAR, lastPIN, lastS1T, lastS2T, lastS3T, lastS4T, lastSIG, lastSST, lastTH, lastTM, lastTN, lastTZ, lastZ, lPMax, lPMin, nLast, onlyCS, theB1, theB2, theB3, theB4, theS1, theS2, theS3, theS4, and theSS.

◆ ~G4ChipsPionPlusElasticXS()

G4ChipsPionPlusElasticXS::~G4ChipsPionPlusElasticXS ( )

Definition at line 97 of file G4ChipsPionPlusElasticXS.cc.

98{
99 std::vector<G4double*>::iterator pos;
100 for (pos=CST.begin(); pos<CST.end(); pos++)
101 { delete [] *pos; }
102 CST.clear();
103 for (pos=PAR.begin(); pos<PAR.end(); pos++)
104 { delete [] *pos; }
105 PAR.clear();
106 for (pos=SST.begin(); pos<SST.end(); pos++)
107 { delete [] *pos; }
108 SST.clear();
109 for (pos=S1T.begin(); pos<S1T.end(); pos++)
110 { delete [] *pos; }
111 S1T.clear();
112 for (pos=B1T.begin(); pos<B1T.end(); pos++)
113 { delete [] *pos; }
114 B1T.clear();
115 for (pos=S2T.begin(); pos<S2T.end(); pos++)
116 { delete [] *pos; }
117 S2T.clear();
118 for (pos=B2T.begin(); pos<B2T.end(); pos++)
119 { delete [] *pos; }
120 B2T.clear();
121 for (pos=S3T.begin(); pos<S3T.end(); pos++)
122 { delete [] *pos; }
123 S3T.clear();
124 for (pos=B3T.begin(); pos<B3T.end(); pos++)
125 { delete [] *pos; }
126 B3T.clear();
127 for (pos=S4T.begin(); pos<S4T.end(); pos++)
128 { delete [] *pos; }
129 S4T.clear();
130 for (pos=B4T.begin(); pos<B4T.end(); pos++)
131 { delete [] *pos; }
132 B4T.clear();
133}
static const G4double pos
std::vector< G4double * > B3T
std::vector< G4double * > PAR
std::vector< G4double * > B4T
std::vector< G4double * > B2T
std::vector< G4double * > CST
std::vector< G4double * > S1T
std::vector< G4double * > SST
std::vector< G4double * > S4T
std::vector< G4double * > B1T
std::vector< G4double * > S2T
std::vector< G4double * > S3T

References B1T, B2T, B3T, B4T, CST, PAR, pos, S1T, S2T, S3T, S4T, and SST.

Member Function Documentation

◆ BuildPhysicsTable()

void G4VCrossSectionDataSet::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ CalculateCrossSection()

G4double G4ChipsPionPlusElasticXS::CalculateCrossSection ( G4bool  CS,
G4int  F,
G4int  I,
G4int  pPDG,
G4int  Z,
G4int  N,
G4double  pP 
)
private

Definition at line 233 of file G4ChipsPionPlusElasticXS.cc.

235{
236 G4double pMom=pIU/GeV; // All calculations are in GeV
237 onlyCS=CS; // Flag to calculate only CS (not Si/Bi)
238 lastLP=G4Log(pMom); // Make a logarithm of the momentum for calculation
239 if(F) // This isotope was found in AMDB =>RETRIEVE/UPDATE
240 {
241 if(F<0) // the AMDB must be loded
242 {
243 lastPIN = PIN[I]; // Max log(P) initialised for this table set
244 lastPAR = PAR[I]; // Pointer to the parameter set
245 lastCST = CST[I]; // Pointer to the total sross-section table
246 lastSST = SST[I]; // Pointer to the first squared slope
247 lastS1T = S1T[I]; // Pointer to the first mantissa
248 lastB1T = B1T[I]; // Pointer to the first slope
249 lastS2T = S2T[I]; // Pointer to the second mantissa
250 lastB2T = B2T[I]; // Pointer to the second slope
251 lastS3T = S3T[I]; // Pointer to the third mantissa
252 lastB3T = B3T[I]; // Pointer to the rhird slope
253 lastS4T = S4T[I]; // Pointer to the 4-th mantissa
254 lastB4T = B4T[I]; // Pointer to the 4-th slope
255 }
257 {
258 lastPIN=GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);// Can update upper logP-Limit in tabs
259 PIN[I]=lastPIN; // Remember the new P-Limit of the tables
260 }
261 }
262 else // This isotope wasn't initialized => CREATE
263 {
264 lastPAR = new G4double[nPoints]; // Allocate memory for parameters of CS function
265 lastPAR[nLast]=0; // Initialization for VALGRIND
266 lastCST = new G4double[nPoints]; // Allocate memory for Tabulated CS function
267 lastSST = new G4double[nPoints]; // Allocate memory for Tabulated first sqaredSlope
268 lastS1T = new G4double[nPoints]; // Allocate memory for Tabulated first mantissa
269 lastB1T = new G4double[nPoints]; // Allocate memory for Tabulated first slope
270 lastS2T = new G4double[nPoints]; // Allocate memory for Tabulated second mantissa
271 lastB2T = new G4double[nPoints]; // Allocate memory for Tabulated second slope
272 lastS3T = new G4double[nPoints]; // Allocate memory for Tabulated third mantissa
273 lastB3T = new G4double[nPoints]; // Allocate memory for Tabulated third slope
274 lastS4T = new G4double[nPoints]; // Allocate memory for Tabulated 4-th mantissa
275 lastB4T = new G4double[nPoints]; // Allocate memory for Tabulated 4-th slope
276 lastPIN = GetPTables(lastLP,lPMin,PDG,tgZ,tgN); // Returns the new P-limit for tables
277 PIN.push_back(lastPIN); // Fill parameters of CS function to AMDB
278 PAR.push_back(lastPAR); // Fill parameters of CS function to AMDB
279 CST.push_back(lastCST); // Fill Tabulated CS function to AMDB
280 SST.push_back(lastSST); // Fill Tabulated first sq.slope to AMDB
281 S1T.push_back(lastS1T); // Fill Tabulated first mantissa to AMDB
282 B1T.push_back(lastB1T); // Fill Tabulated first slope to AMDB
283 S2T.push_back(lastS2T); // Fill Tabulated second mantissa to AMDB
284 B2T.push_back(lastB2T); // Fill Tabulated second slope to AMDB
285 S3T.push_back(lastS3T); // Fill Tabulated third mantissa to AMDB
286 B3T.push_back(lastB3T); // Fill Tabulated third slope to AMDB
287 S4T.push_back(lastS4T); // Fill Tabulated 4-th mantissa to AMDB
288 B4T.push_back(lastB4T); // Fill Tabulated 4-th slope to AMDB
289 } // End of creation/update of the new set of parameters and tables
290 // =-----------= NOW Update (if necessary) and Calculate the Cross Section =----------=
292 {
293 lastPIN = GetPTables(lastLP,lastPIN,PDG,tgZ,tgN);
294 }
295 if(!onlyCS) lastTM=GetQ2max(PDG, tgZ, tgN, pMom); // Calculate (-t)_max=Q2_max (GeV2)
296 if(lastLP>lPMin && lastLP<=lastPIN) // Linear fit is made using precalculated tables
297 {
298 if(lastLP==lastPIN)
299 {
300 G4double shift=(lastLP-lPMin)/dlnP+.000001; // Log distance from lPMin
301 G4int blast=static_cast<int>(shift); // this is a bin number of the lower edge (0)
302 if(blast<0 || blast>=nLast) G4cout<<"G4QEleastCS::CCS:b="<<blast<<","<<nLast<<G4endl;
303 lastSIG = lastCST[blast];
304 if(!onlyCS) // Skip the differential cross-section parameters
305 {
306 theSS = lastSST[blast];
307 theS1 = lastS1T[blast];
308 theB1 = lastB1T[blast];
309 theS2 = lastS2T[blast];
310 theB2 = lastB2T[blast];
311 theS3 = lastS3T[blast];
312 theB3 = lastB3T[blast];
313 theS4 = lastS4T[blast];
314 theB4 = lastB4T[blast];
315 }
316 }
317 else
318 {
319 G4double shift=(lastLP-lPMin)/dlnP; // a shift from the beginning of the table
320 G4int blast=static_cast<int>(shift); // the lower bin number
321 if(blast<0) blast=0;
322 if(blast>=nLast) blast=nLast-1; // low edge of the last bin
323 shift-=blast; // step inside the unit bin
324 G4int lastL=blast+1; // the upper bin number
325 G4double SIGL=lastCST[blast]; // the basic value of the cross-section
326 lastSIG= SIGL+shift*(lastCST[lastL]-SIGL); // calculated total elastic cross-section
327 if(!onlyCS) // Skip the differential cross-section parameters
328 {
329 G4double SSTL=lastSST[blast]; // the low bin of the first squared slope
330 theSS=SSTL+shift*(lastSST[lastL]-SSTL); // the basic value of the first sq.slope
331 G4double S1TL=lastS1T[blast]; // the low bin of the first mantissa
332 theS1=S1TL+shift*(lastS1T[lastL]-S1TL); // the basic value of the first mantissa
333 G4double B1TL=lastB1T[blast]; // the low bin of the first slope
334 theB1=B1TL+shift*(lastB1T[lastL]-B1TL); // the basic value of the first slope
335 G4double S2TL=lastS2T[blast]; // the low bin of the second mantissa
336 theS2=S2TL+shift*(lastS2T[lastL]-S2TL); // the basic value of the second mantissa
337 G4double B2TL=lastB2T[blast]; // the low bin of the second slope
338 theB2=B2TL+shift*(lastB2T[lastL]-B2TL); // the basic value of the second slope
339 G4double S3TL=lastS3T[blast]; // the low bin of the third mantissa
340 theS3=S3TL+shift*(lastS3T[lastL]-S3TL); // the basic value of the third mantissa
341 G4double B3TL=lastB3T[blast]; // the low bin of the third slope
342 theB3=B3TL+shift*(lastB3T[lastL]-B3TL); // the basic value of the third slope
343 G4double S4TL=lastS4T[blast]; // the low bin of the 4-th mantissa
344 theS4=S4TL+shift*(lastS4T[lastL]-S4TL); // the basic value of the 4-th mantissa
345 G4double B4TL=lastB4T[blast]; // the low bin of the 4-th slope
346 theB4=B4TL+shift*(lastB4T[lastL]-B4TL); // the basic value of the 4-th slope
347 }
348 }
349 }
350 else lastSIG=GetTabValues(lastLP, PDG, tgZ, tgN); // Direct calculation beyond the table
351 if(lastSIG<0.) lastSIG = 0.; // @@ a Warning print can be added
352 return lastSIG;
353}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
static constexpr double GeV
Definition: G4SIunits.hh:203
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
G4double GetQ2max(G4int pPDG, G4int tgZ, G4int tgN, G4double pP)
G4double GetPTables(G4double lpP, G4double lPm, G4int PDG, G4int tZ, G4int tN)
G4double GetTabValues(G4double lp, G4int pPDG, G4int tgZ, G4int tgN)

References B1T, B2T, B3T, B4T, CST, dlnP, G4cout, G4endl, G4Log(), GetPTables(), GetQ2max(), GetTabValues(), GeV, lastB1T, lastB2T, lastB3T, lastB4T, lastCST, lastLP, lastPAR, lastPIN, lastS1T, lastS2T, lastS3T, lastS4T, lastSIG, lastSST, lastTM, lPMax, lPMin, nLast, nPoints, onlyCS, PAR, PIN, S1T, S2T, S3T, S4T, SST, theB1, theB2, theB3, theB4, theS1, theS2, theS3, theS4, and theSS.

Referenced by GetChipsCrossSection().

◆ ComputeCrossSection()

G4double G4VCrossSectionDataSet::ComputeCrossSection ( const G4DynamicParticle part,
const G4Element elm,
const G4Material mat = nullptr 
)
inherited

Definition at line 81 of file G4VCrossSectionDataSet.cc.

84{
85 G4int Z = elm->GetZasInt();
86
87 if (IsElementApplicable(part, Z, mat)) {
88 return GetElementCrossSection(part, Z, mat);
89 }
90
91 // isotope-wise cross section making sum over available
92 // isotope cross sections, which may be incomplete, so
93 // the result is corrected
94 size_t nIso = elm->GetNumberOfIsotopes();
95 G4double fact = 0.0;
96 G4double xsec = 0.0;
97
98 // user-defined isotope abundances
99 const G4IsotopeVector* isoVector = elm->GetIsotopeVector();
100 const G4double* abundVector = elm->GetRelativeAbundanceVector();
101
102 for (size_t j=0; j<nIso; ++j) {
103 const G4Isotope* iso = (*isoVector)[j];
104 G4int A = iso->GetN();
105 if(abundVector[j] > 0.0 && IsIsoApplicable(part, Z, A, elm, mat)) {
106 fact += abundVector[j];
107 xsec += abundVector[j]*GetIsoCrossSection(part, Z, A, iso, elm, mat);
108 }
109 }
110 return (fact > 0.0) ? xsec/fact : 0.0;
111}
std::vector< G4Isotope * > G4IsotopeVector
const G4int Z[17]
const G4double A[17]
G4double * GetRelativeAbundanceVector() const
Definition: G4Element.hh:167
size_t GetNumberOfIsotopes() const
Definition: G4Element.hh:159
G4int GetZasInt() const
Definition: G4Element.hh:132
G4IsotopeVector * GetIsotopeVector() const
Definition: G4Element.hh:163
G4int GetN() const
Definition: G4Isotope.hh:93
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 G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)

References A, G4VCrossSectionDataSet::GetElementCrossSection(), G4VCrossSectionDataSet::GetIsoCrossSection(), G4Element::GetIsotopeVector(), G4Isotope::GetN(), G4Element::GetNumberOfIsotopes(), G4Element::GetRelativeAbundanceVector(), G4Element::GetZasInt(), G4VCrossSectionDataSet::IsElementApplicable(), G4VCrossSectionDataSet::IsIsoApplicable(), and Z.

Referenced by G4VCrossSectionDataSet::GetCrossSection().

◆ CrossSectionDescription()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 136 of file G4ChipsPionPlusElasticXS.cc.

137{
138 outFile << "G4ChipsPionPlusElasticXS provides the elastic cross\n"
139 << "section for pion+ nucleus scattering as a function of incident\n"
140 << "momentum. The cross section is calculated using M. Kossov's\n"
141 << "CHIPS parameterization of cross section data.\n";
142}

◆ Default_Name()

static const char * G4ChipsPionPlusElasticXS::Default_Name ( )
inlinestatic

Definition at line 54 of file G4ChipsPionPlusElasticXS.hh.

54{return "ChipsPionPlusElasticXS";}

Referenced by G4ChipsComponentXS::G4ChipsComponentXS(), and G4ChipsElasticModel::G4ChipsElasticModel().

◆ DumpPhysicsTable()

void G4VCrossSectionDataSet::DumpPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ ForAllAtomsAndEnergies()

bool G4VCrossSectionDataSet::ForAllAtomsAndEnergies ( ) const
inlineinherited

◆ GetChipsCrossSection()

G4double G4ChipsPionPlusElasticXS::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 165 of file G4ChipsPionPlusElasticXS.cc.

166{
167 G4double pEn=pMom;
168 G4bool fCS = false;
169 onlyCS=fCS;
170
171 G4bool in=false; // By default the isotope must be found in the AMDB
172 lastP = 0.; // New momentum history (nothing to compare with)
173 lastN = tgN; // The last N of the calculated nucleus
174 lastZ = tgZ; // The last Z of the calculated nucleus
175 lastI = colN.size(); // Size of the Associative Memory DB in the heap
176 if(lastI) for(G4int i=0; i<lastI; i++) // Loop over proj/tgZ/tgN lines of DB
177 { // The nucleus with projPDG is found in AMDB
178 if(colN[i]==tgN && colZ[i]==tgZ) // Isotope is foind in AMDB
179 {
180 lastI=i;
181 lastTH =colTH[i]; // Last THreshold (A-dependent)
182 if(pEn<=lastTH)
183 {
184 return 0.; // Energy is below the Threshold value
185 }
186 lastP =colP [i]; // Last Momentum (A-dependent)
187 lastCS =colCS[i]; // Last CrossSect (A-dependent)
188 // if(std::fabs(lastP/pMom-1.)<tolerance) //VI (do not use tolerance)
189 if(lastP == pMom) // Do not recalculate
190 {
191 CalculateCrossSection(fCS,-1,i,211,lastZ,lastN,pMom); // Update param's only
192 return lastCS*millibarn; // Use theLastCS
193 }
194 in = true; // This is the case when the isotop is found in DB
195 // Momentum pMom is in IU ! @@ Units
196 lastCS=CalculateCrossSection(fCS,-1,i,211,lastZ,lastN,pMom); // read & update
197 if(lastCS<=0. && pEn>lastTH) // Correct the threshold
198 {
199 lastTH=pEn;
200 }
201 break; // Go out of the LOOP with found lastI
202 }
203 } // End of attampt to find the nucleus in DB
204 if(!in) // This nucleus has not been calculated previously
205 {
207 lastCS=CalculateCrossSection(fCS,0,lastI,211,lastZ,lastN,pMom);//calculate&create
208 if(lastCS<=0.)
209 {
210 lastTH = 0; //ThresholdEnergy(tgZ, tgN); // The Threshold Energy which is now the last
211 if(pEn>lastTH)
212 {
213 lastTH=pEn;
214 }
215 }
216 colN.push_back(tgN);
217 colZ.push_back(tgZ);
218 colP.push_back(pMom);
219 colTH.push_back(lastTH);
220 colCS.push_back(lastCS);
221 return lastCS*millibarn;
222 } // End of creation of the new set of parameters
223 else
224 {
225 colP[lastI]=pMom;
227 }
228 return lastCS*millibarn;
229}
static constexpr double millibarn
Definition: G4SIunits.hh:86
bool G4bool
Definition: G4Types.hh:86
G4double CalculateCrossSection(G4bool CS, G4int F, G4int I, G4int pPDG, G4int Z, G4int N, G4double pP)

References CalculateCrossSection(), colCS, colN, colP, colTH, colZ, lastCS, lastI, lastN, lastP, lastTH, lastZ, millibarn, and onlyCS.

Referenced by G4ChipsComponentXS::GetElasticElementCrossSection(), GetIsoCrossSection(), G4ChipsComponentXS::GetTotalElementCrossSection(), and G4ChipsElasticModel::SampleInvariantT().

◆ GetCrossSection()

G4double G4VCrossSectionDataSet::GetCrossSection ( const G4DynamicParticle dp,
const G4Element elm,
const G4Material mat = nullptr 
)
inlineinherited

Definition at line 187 of file G4VCrossSectionDataSet.hh.

190{
191 return ComputeCrossSection(dp, elm, mat);
192}
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)

References G4VCrossSectionDataSet::ComputeCrossSection().

◆ GetElementCrossSection()

G4double G4VCrossSectionDataSet::GetElementCrossSection ( const G4DynamicParticle dynPart,
G4int  Z,
const G4Material mat = nullptr 
)
virtualinherited

Reimplemented in G4EMDissociationCrossSection, G4IonsShenCrossSection, G4NeutrinoElectronCcXsc, G4NeutrinoElectronNcXsc, G4NeutrinoElectronTotXsc, G4NeutronElectronElXsc, G4PhotoNuclearCrossSection, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, G4ElectroNuclearCrossSection, G4BGGNucleonElasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS, G4BGGNucleonInelasticXS, G4CrossSectionElastic, G4CrossSectionInelastic, G4GammaNuclearXS, G4ParticleInelasticXS, G4ZeroXS, G4NucleonNuclearCrossSection, G4MuNeutrinoNucleusTotXsc, and G4KokoulinMuonNuclearXS.

Definition at line 114 of file G4VCrossSectionDataSet.cc.

117{
119 ed << "GetElementCrossSection is not implemented in <" << name << ">\n"
120 << "Particle: " << dynPart->GetDefinition()->GetParticleName()
121 << " Ekin(MeV)= " << dynPart->GetKineticEnergy()/MeV;
122 if(mat) { ed << " material: " << mat->GetName(); }
123 ed << " target Z= " << Z << G4endl;
124 G4Exception("G4VCrossSectionDataSet::GetElementCrossSection", "had001",
125 FatalException, ed);
126 return 0.0;
127}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
static constexpr double MeV
Definition: G4SIunits.hh:200
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4String & GetName() const
Definition: G4Material.hh:173
const G4String & GetParticleName() const

References FatalException, G4endl, G4Exception(), G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), G4Material::GetName(), G4ParticleDefinition::GetParticleName(), MeV, G4VCrossSectionDataSet::name, and Z.

Referenced by G4QMDReaction::ApplyYourself(), G4VCrossSectionDataSet::ComputeCrossSection(), G4GammaNuclearXS::GetElementCrossSection(), G4GammaNuclearXS::GetIsoCrossSection(), and G4GammaNuclearXS::Initialise().

◆ GetExchangeT()

G4double G4ChipsPionPlusElasticXS::GetExchangeT ( G4int  tZ,
G4int  tN,
G4int  pPDG 
)

Definition at line 601 of file G4ChipsPionPlusElasticXS.cc.

602{
604 static const G4double third=1./3.;
605 static const G4double fifth=1./5.;
606 static const G4double sevth=1./7.;
607 if(PDG!= 211)G4cout<<"*Warning*G4ChipsPionPlusElasticXS::GetExT:PDG="<<PDG<<G4endl;
608 if(onlyCS)G4cout<<"*Warning*G4ChipsPionPlusElasticXS::GetExchanT:onlyCS=1"<<G4endl;
609 if(lastLP<-4.3) return lastTM*GeVSQ*G4UniformRand();// S-wave for p<14 MeV/c (kinE<.1MeV)
610 G4double q2=0.;
611 if(tgZ==1 && tgN==0) // ===> p+p=p+p
612 {
614 G4double R1=(1.-G4Exp(-E1));
616 G4double R2=(1.-G4Exp(-E2*E2*E2));
618 G4double R3=(1.-G4Exp(-E3));
619 G4double I1=R1*theS1/theB1;
620 G4double I2=R2*theS2;
621 G4double I3=R3*theS3;
622 G4double I12=I1+I2;
623 G4double rand=(I12+I3)*G4UniformRand();
624 if (rand<I1 )
625 {
626 G4double ran=R1*G4UniformRand();
627 if(ran>1.) ran=1.;
628 q2=-G4Log(1.-ran)/theB1;
629 }
630 else if(rand<I12)
631 {
632 G4double ran=R2*G4UniformRand();
633 if(ran>1.) ran=1.;
634 q2=-G4Log(1.-ran);
635 if(q2<0.) q2=0.;
637 }
638 else
639 {
640 G4double ran=R3*G4UniformRand();
641 if(ran>1.) ran=1.;
642 q2=-G4Log(1.-ran)/theB3;
643 }
644 }
645 else
646 {
647 G4double a=tgZ+tgN;
649 G4double R1=(1.-G4Exp(-E1));
650 G4double tss=theSS+theSS; // for future solution of quadratic equation (imediate check)
652 G4double E2=lastTM*tm2*theB2; // power 3 for lowA, 5 for HighA (1st)
653 if(a>6.5)E2*=tm2; // for heavy nuclei
654 G4double R2=(1.-G4Exp(-E2));
656 if(a>6.5)E3*=tm2*tm2*tm2; // power 1 for lowA, 7 (2nd) for HighA
657 G4double R3=(1.-G4Exp(-E3));
659 G4double R4=(1.-G4Exp(-E4));
660 G4double I1=R1*theS1;
661 G4double I2=R2*theS2;
662 G4double I3=R3*theS3;
663 G4double I4=R4*theS4;
664 G4double I12=I1+I2;
665 G4double I13=I12+I3;
666 G4double rand=(I13+I4)*G4UniformRand();
667 if(rand<I1)
668 {
669 G4double ran=R1*G4UniformRand();
670 if(ran>1.) ran=1.;
671 q2=-G4Log(1.-ran)/theB1;
672 if(std::fabs(tss)>1.e-7) q2=(std::sqrt(theB1*(theB1+(tss+tss)*q2))-theB1)/tss;
673 }
674 else if(rand<I12)
675 {
676 G4double ran=R2*G4UniformRand();
677 if(ran>1.) ran=1.;
678 q2=-G4Log(1.-ran)/theB2;
679 if(q2<0.) q2=0.;
680 if(a<6.5) q2=G4Pow::GetInstance()->powA(q2,third);
681 else q2=G4Pow::GetInstance()->powA(q2,fifth);
682 }
683 else if(rand<I13)
684 {
685 G4double ran=R3*G4UniformRand();
686 if(ran>1.) ran=1.;
687 q2=-G4Log(1.-ran)/theB3;
688 if(q2<0.) q2=0.;
689 if(a>6.5) q2=G4Pow::GetInstance()->powA(q2,sevth);
690 }
691 else
692 {
693 G4double ran=R4*G4UniformRand();
694 if(ran>1.) ran=1.;
695 q2=-G4Log(1.-ran)/theB4;
696 if(a<6.5) q2=lastTM-q2; // u reduced for lightA (starts from 0)
697 }
698 }
699 if(q2<0.) q2=0.;
700 if(!(q2>=-1.||q2<=1.)) G4cout<<"*NAN*G4QElasticCrossSect::GetExchangeT: -t="<<q2<<G4endl;
701 if(q2>lastTM)
702 {
703 q2=lastTM;
704 }
705 return q2*GeVSQ;
706}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static constexpr double gigaelectronvolt
Definition: G4SIunits.hh:194
#define G4UniformRand()
Definition: Randomize.hh:52
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230

References anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::fifth, G4cout, G4endl, G4Exp(), G4Log(), G4UniformRand, G4Pow::GetInstance(), anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::GeVSQ, gigaelectronvolt, lastLP, lastTM, onlyCS, G4Pow::powA(), anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::sevth, theB1, theB2, theB3, theB4, theS1, theS2, theS3, theS4, theSS, and anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::third.

Referenced by G4ChipsElasticModel::SampleInvariantT().

◆ GetHMaxT()

G4double G4ChipsPionPlusElasticXS::GetHMaxT ( )
private

◆ GetIsoCrossSection()

G4double G4ChipsPionPlusElasticXS::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 153 of file G4ChipsPionPlusElasticXS.cc.

158{
159 G4double pMom=Pt->GetTotalMomentum();
160 G4int tgN = A - tgZ;
161
162 return GetChipsCrossSection(pMom, tgZ, tgN, 211);
163}
virtual G4double GetChipsCrossSection(G4double momentum, G4int Z, G4int N, G4int pdg)
G4double GetTotalMomentum() const

References A, GetChipsCrossSection(), and G4DynamicParticle::GetTotalMomentum().

◆ GetMaxKinEnergy()

G4double G4VCrossSectionDataSet::GetMaxKinEnergy ( ) const
inlineinherited

◆ GetMinKinEnergy()

G4double G4VCrossSectionDataSet::GetMinKinEnergy ( ) const
inlineinherited

◆ GetName()

const G4String & G4VCrossSectionDataSet::GetName ( ) const
inlineinherited

◆ GetPTables()

G4double G4ChipsPionPlusElasticXS::GetPTables ( G4double  lpP,
G4double  lPm,
G4int  PDG,
G4int  tZ,
G4int  tN 
)
private

Definition at line 356 of file G4ChipsPionPlusElasticXS.cc.

358{
359 // @@ At present all nA==pA ---------> Each neucleus can have not more than 51 parameters
360 static const G4double pwd=2727;
361 const G4int n_pippel=35; // #of parameters for pip_p-elastic (<nPoints=128)
362 // -0- -1- -2- -3- -4- -5- -6- -7--8--9--10-11-12--13-
363 G4double pipp_el[n_pippel]={1.27,13.,.0676,3.5,.32,.0576,.0557,2.4,6.,3.,.7,5.,74.,3.,
364 3.4,.2,.17,.001,8.,.055,3.64,5.e-5,4000.,1500.,.46,1.2e6,
365 3.5e6,5.e-5,1.e10,8.5e8,1.e10,1.1,3.4e6,6.8e6,0.};
366 // -14--15--16--17--18- -19--20- -21- -22- -23- -24- -25-
367 // -26- -27- -28- -29- -30- -31- -32- -33- -34-
368 if(PDG == 211)
369 {
370 // -- Total pp elastic cross section cs & s1/b1 (main), s2/b2 (tail1), s3/b3 (tail2) --
371 //p2=p*p;p3=p2*p;sp=sqrt(p);p2s=p2*sp;lp=log(p);dl1=lp-(3.=par(3));p4=p2*p2; p=|3-mom|
372 //CS=2.865/p2s/(1+.0022/p2s)+(18.9+.6461*dl1*dl1+9./p)/(1.+.425*lp)/(1.+.4276/p4);
373 // par(0) par(7) par(1) par(2) par(4) par(5) par(6)
374 //dl2=lp-5., s1=(74.+3.*dl2*dl2)/(1+3.4/p4/p)+(.2/p2+17.*p)/(p4+.001*sp),
375 // par(8) par(9) par(10) par(11) par(12)par(13) par(14)
376 // b1=8.*p**.055/(1.+3.64/p3); s2=5.e-5+4000./(p4+1500.*p); b2=.46+1.2e6/(p4+3.5e6/sp);
377 // par(15) par(16) par(17) par(18) par(19) par(20) par(21) par(22) par(23)
378 // s3=5.e-5+1.e10/(p4*p4+8.5e8*p2+1.e10); b3=1.1+3.4e6/(p4+6.8e6); ss=0.
379 // par(24) par(25) par(26) par(27) par(28) par(29) par(30) par(31)
380 //
381 if(lastPAR[nLast]!=pwd) // A unique flag to avoid the repeatable definition
382 {
383 if ( tgZ == 1 && tgN == 0 )
384 {
385 for (G4int ip=0; ip<n_pippel; ip++) lastPAR[ip]=pipp_el[ip]; // PiPlus+P
386 }
387 else
388 {
389 G4double a=tgZ+tgN;
390 G4double sa=std::sqrt(a);
391 G4double ssa=std::sqrt(sa);
392 G4double asa=a*sa;
393 G4double a2=a*a;
394 G4double a3=a2*a;
395 G4double a4=a3*a;
396 G4double a5=a4*a;
397 G4double a6=a4*a2;
398 G4double a7=a6*a;
399 G4double a8=a7*a;
400 G4double a9=a8*a;
401 G4double a10=a5*a5;
402 G4double a12=a6*a6;
403 G4double a14=a7*a7;
404 G4double a16=a8*a8;
405 G4double a17=a16*a;
406 //G4double a20=a16*a4;
407 G4double a32=a16*a16;
408 // Reaction cross-section parameters (pel=peh_fit.f)
409 lastPAR[0]=(.95*sa+2.E5/a16)/(1.+17/a); // p1
410 lastPAR[1]=a/(1./4.4+1./a); // p2
411 lastPAR[2]=.22/G4Pow::GetInstance()->powA(a,.33); // p3
412 lastPAR[3]=.5*a/(1.+3./a+1800./a8); // p4
413 lastPAR[4]=3.E-4*G4Pow::GetInstance()->powA(a,.32)/(1.+14./a2); // p5
414 lastPAR[5]=0.; // p6 not used
415 lastPAR[6]=(.55+.001*a2)/(1.+4.E-4*a2); // p7
416 lastPAR[7]=(.0002/asa+4.E-9*a)/(1.+9./a4); // p8
417 lastPAR[8]=0.; // p9 not used
418 // @@ the differential cross-section is parameterized separately for A>6 & A<7
419 if(a<6.5)
420 {
421 G4double a28=a16*a12;
422 // The main pre-exponent (pel_sg)
423 lastPAR[ 9]=4000*a; // p1
424 lastPAR[10]=1.2e7*a8+380*a17; // p2
425 lastPAR[11]=.7/(1.+4.e-12*a16); // p3
426 lastPAR[12]=2.5/a8/(a4+1.e-16*a32); // p4
427 lastPAR[13]=.28*a; // p5
428 lastPAR[14]=1.2*a2+2.3; // p6
429 lastPAR[15]=3.8/a; // p7
430 // The main slope (pel_sl)
431 lastPAR[16]=.01/(1.+.0024*a5); // p1
432 lastPAR[17]=.2*a; // p2
433 lastPAR[18]=9.e-7/(1.+.035*a5); // p3
434 lastPAR[19]=(42.+2.7e-11*a16)/(1.+.14*a); // p4
435 // The main quadratic (pel_sh)
436 lastPAR[20]=2.25*a3; // p1
437 lastPAR[21]=18.; // p2
438 lastPAR[22]=2.4e-3*a8/(1.+2.6e-4*a7); // p3
439 lastPAR[23]=3.5e-36*a32*a8/(1.+5.e-15*a32/a); // p4
440 // The 1st max pre-exponent (pel_qq)
441 lastPAR[24]=1.e5/(a8+2.5e12/a16); // p1
442 lastPAR[25]=8.e7/(a12+1.e-27*a28*a28); // p2
443 lastPAR[26]=.0006*a3; // p3
444 // The 1st max slope (pel_qs)
445 lastPAR[27]=10.+4.e-8*a12*a; // p1
446 lastPAR[28]=.114; // p2
447 lastPAR[29]=.003; // p3
448 lastPAR[30]=2.e-23; // p4
449 // The effective pre-exponent (pel_ss)
450 lastPAR[31]=1./(1.+.0001*a8); // p1
451 lastPAR[32]=1.5e-4/(1.+5.e-6*a12); // p2
452 lastPAR[33]=.03; // p3
453 // The effective slope (pel_sb)
454 lastPAR[34]=a/2; // p1
455 lastPAR[35]=2.e-7*a4; // p2
456 lastPAR[36]=4.; // p3
457 lastPAR[37]=64./a3; // p4
458 // The gloria pre-exponent (pel_us)
459 lastPAR[38]=1.e8*G4Exp(.32*asa); // p1
460 lastPAR[39]=20.*G4Exp(.45*asa); // p2
461 lastPAR[40]=7.e3+2.4e6/a5; // p3
462 lastPAR[41]=2.5e5*G4Exp(.085*a3); // p4
463 lastPAR[42]=2.5*a; // p5
464 // The gloria slope (pel_ub)
465 lastPAR[43]=920.+.03*a8*a3; // p1
466 lastPAR[44]=93.+.0023*a12; // p2
467 }
468 else
469 {
470 G4double p1a10=2.2e-28*a10;
471 G4double r4a16=6.e14/a16;
472 G4double s4a16=r4a16*r4a16;
473 // a24
474 // a36
475 // The main pre-exponent (peh_sg)
476 lastPAR[ 9]=4.5*G4Pow::GetInstance()->powA(a,1.15); // p1
477 lastPAR[10]=.06*G4Pow::GetInstance()->powA(a,.6); // p2
478 lastPAR[11]=.6*a/(1.+2.e15/a16); // p3
479 lastPAR[12]=.17/(a+9.e5/a3+1.5e33/a32); // p4
480 lastPAR[13]=(.001+7.e-11*a5)/(1.+4.4e-11*a5); // p5
481 lastPAR[14]=(p1a10*p1a10+2.e-29)/(1.+2.e-22*a12); // p6
482 // The main slope (peh_sl)
483 lastPAR[15]=400./a12+2.e-22*a9; // p1
484 lastPAR[16]=1.e-32*a12/(1.+5.e22/a14); // p2
485 lastPAR[17]=1000./a2+9.5*sa*ssa; // p3
486 lastPAR[18]=4.e-6*a*asa+1.e11/a16; // p4
487 lastPAR[19]=(120./a+.002*a2)/(1.+2.e14/a16); // p5
488 lastPAR[20]=9.+100./a; // p6
489 // The main quadratic (peh_sh)
490 lastPAR[21]=.002*a3+3.e7/a6; // p1
491 lastPAR[22]=7.e-15*a4*asa; // p2
492 lastPAR[23]=9000./a4; // p3
493 // The 1st max pre-exponent (peh_qq)
494 lastPAR[24]=.0011*asa/(1.+3.e34/a32/a4); // p1
495 lastPAR[25]=1.e-5*a2+2.e14/a16; // p2
496 lastPAR[26]=1.2e-11*a2/(1.+1.5e19/a12); // p3
497 lastPAR[27]=.016*asa/(1.+5.e16/a16); // p4
498 // The 1st max slope (peh_qs)
499 lastPAR[28]=.002*a4/(1.+7.e7/G4Pow::GetInstance()->powA(a-6.83,14)); // p1
500 lastPAR[29]=2.e6/a6+7.2/G4Pow::GetInstance()->powA(a,.11); // p2
501 lastPAR[30]=11.*a3/(1.+7.e23/a16/a8); // p3
502 lastPAR[31]=100./asa; // p4
503 // The 2nd max pre-exponent (peh_ss)
504 lastPAR[32]=(.1+4.4e-5*a2)/(1.+5.e5/a4); // p1
505 lastPAR[33]=3.5e-4*a2/(1.+1.e8/a8); // p2
506 lastPAR[34]=1.3+3.e5/a4; // p3
507 lastPAR[35]=500./(a2+50.)+3; // p4
508 lastPAR[36]=1.e-9/a+s4a16*s4a16; // p5
509 // The 2nd max slope (peh_sb)
510 lastPAR[37]=.4*asa+3.e-9*a6; // p1
511 lastPAR[38]=.0005*a5; // p2
512 lastPAR[39]=.002*a5; // p3
513 lastPAR[40]=10.; // p4
514 // The effective pre-exponent (peh_us)
515 lastPAR[41]=.05+.005*a; // p1
516 lastPAR[42]=7.e-8/sa; // p2
517 lastPAR[43]=.8*sa; // p3
518 lastPAR[44]=.02*sa; // p4
519 lastPAR[45]=1.e8/a3; // p5
520 lastPAR[46]=3.e32/(a32+1.e32); // p6
521 // The effective slope (peh_ub)
522 lastPAR[47]=24.; // p1
523 lastPAR[48]=20./sa; // p2
524 lastPAR[49]=7.e3*a/(sa+1.); // p3
525 lastPAR[50]=900.*sa/(1.+500./a3); // p4
526 }
527 // Parameter for lowEnergyNeutrons
528 lastPAR[51]=1.e15+2.e27/a4/(1.+2.e-18*a16);
529 }
531 // and initialize the zero element of the table
532 G4double lp=lPMin; // ln(momentum)
533 G4bool memCS=onlyCS; // ??
534 onlyCS=false;
535 lastCST[0]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables
536 onlyCS=memCS;
537 lastSST[0]=theSS;
538 lastS1T[0]=theS1;
539 lastB1T[0]=theB1;
540 lastS2T[0]=theS2;
541 lastB2T[0]=theB2;
542 lastS3T[0]=theS3;
543 lastB3T[0]=theB3;
544 lastS4T[0]=theS4;
545 lastB4T[0]=theB4;
546 }
547 if(LP>ILP)
548 {
549 G4int ini = static_cast<int>((ILP-lPMin+.000001)/dlnP)+1; // already inited till this
550 if(ini<0) ini=0;
551 if(ini<nPoints)
552 {
553 G4int fin = static_cast<int>((LP-lPMin)/dlnP)+1; // final bin of initialization
554 if(fin>=nPoints) fin=nLast; // Limit of the tabular initialization
555 if(fin>=ini)
556 {
557 G4double lp=0.;
558 for(G4int ip=ini; ip<=fin; ip++) // Calculate tabular CS,S1,B1,S2,B2,S3,B3
559 {
560 lp=lPMin+ip*dlnP; // ln(momentum)
561 G4bool memCS=onlyCS;
562 onlyCS=false;
563 lastCST[ip]=GetTabValues(lp, PDG, tgZ, tgN); // Calculate AMDB tables (ret CS)
564 onlyCS=memCS;
565 lastSST[ip]=theSS;
566 lastS1T[ip]=theS1;
567 lastB1T[ip]=theB1;
568 lastS2T[ip]=theS2;
569 lastB2T[ip]=theB2;
570 lastS3T[ip]=theS3;
571 lastB3T[ip]=theB3;
572 lastS4T[ip]=theS4;
573 lastB4T[ip]=theB4;
574 }
575 return lp;
576 }
577 else G4cout<<"*Warning*G4ChipsPionPlusElasticXS::GetPTables: PDG="<<PDG
578 <<", Z="<<tgZ<<", N="<<tgN<<", i="<<ini<<" > fin="<<fin<<", LP="<<LP
579 <<" > ILP="<<ILP<<" nothing is done!"<<G4endl;
580 }
581 else G4cout<<"*Warning*G4ChipsPionPlusElasticXS::GetPTables: PDG="<<PDG<<", Z="
582 <<tgZ<<", N="<<tgN<<", i="<<ini<<">= max="<<nPoints<<", LP="<<LP
583 <<" > ILP="<<ILP<<", lPMax="<<lPMax<<" nothing is done!"<<G4endl;
584 }
585 }
586 else
587 {
588 // G4cout<<"*Error*G4ChipsPionPlusElasticXS::GetPTables: PDG="<<PDG<<", Z="<<tgZ
589 // <<", N="<<tgN<<", while it is defined only for PDG=211"<<G4endl;
590 // throw G4QException("G4ChipsPionPlusElasticXS::GetPTables:only pipA implemented");
592 ed << "PDG = " << PDG << ", Z = " << tgZ << ", N = " << tgN
593 << ", while it is defined only for PDG=211 (pi+)" << G4endl;
594 G4Exception("G4ChipsPionPlusElasticXS::GetPTables()", "HAD_CHPS_0000",
595 FatalException, ed);
596 }
597 return ILP;
598}

References dlnP, FatalException, G4cout, G4endl, G4Exception(), G4Exp(), G4Pow::GetInstance(), GetTabValues(), lastB1T, lastB2T, lastB3T, lastB4T, lastCST, lastPAR, lastS1T, lastS2T, lastS3T, lastS4T, lastSST, lPMax, lPMin, nLast, nPoints, onlyCS, G4Pow::powA(), anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::pwd, theB1, theB2, theB3, theB4, theS1, theS2, theS3, theS4, and theSS.

Referenced by CalculateCrossSection().

◆ GetQ2max()

G4double G4ChipsPionPlusElasticXS::GetQ2max ( G4int  pPDG,
G4int  tgZ,
G4int  tgN,
G4double  pP 
)
private

Definition at line 837 of file G4ChipsPionPlusElasticXS.cc.

839{
840 static const G4double mPi= G4PionPlus::PionPlus()->GetPDGMass()*.001; // MeV to GeV
841 static const G4double mPi2= mPi*mPi;
842 G4double pP2=pP*pP; // squared momentum of the projectile
843 if(tgZ || tgN>-1) // ---> pipA
844 {
845 G4double mt=G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(tgZ,tgZ+tgN,0)->GetPDGMass()*.001; // Target mass in GeV
846 G4double dmt=mt+mt;
847 G4double mds=dmt*std::sqrt(pP2+mPi2)+mPi2+mt*mt; // Mondelstam mds
848 return dmt*dmt*pP2/mds;
849 }
850 else
851 {
853 ed << "PDG = " << PDG << ", Z = " << tgZ << ",N = " << tgN
854 << ", while it is defined only for p projectiles & Z_target>0" << G4endl;
855 G4Exception("G4ChipsPionPlusElasticXS::GetQ2max()", "HAD_CHPS_0000",
856 FatalException, ed);
857 return 0;
858 }
859}
G4ParticleDefinition * GetIon(G4int Z, G4int A, G4int lvl=0)
Definition: G4IonTable.cc:522
G4IonTable * GetIonTable() const
static G4ParticleTable * GetParticleTable()
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97

References FatalException, G4endl, G4Exception(), G4IonTable::GetIon(), G4ParticleTable::GetIonTable(), G4ParticleTable::GetParticleTable(), G4ParticleDefinition::GetPDGMass(), and G4PionPlus::PionPlus().

Referenced by CalculateCrossSection().

◆ GetSlope()

G4double G4ChipsPionPlusElasticXS::GetSlope ( G4int  tZ,
G4int  tN,
G4int  pPDG 
)
private

Definition at line 709 of file G4ChipsPionPlusElasticXS.cc.

710{
712 if(onlyCS)G4cout<<"Warning*G4ChipsPionPlusElasticXS::GetSlope:onlyCS=true"<<G4endl;
713 if(lastLP<-4.3) return 0.; // S-wave for p<14 MeV/c (kinE<.1MeV)
714 if(PDG != 211)
715 {
716 // G4cout<<"*Error*G4ChipsPionPlusElasticXS::GetSlope: PDG="<<PDG<<", Z="<<tgZ
717 // <<", N="<<tgN<<", while it is defined only for PDG=211"<<G4endl;
718 // throw G4QException("G4ChipsPionPlusElasticXS::GetSlope: pipA are implemented");
720 ed << "PDG = " << PDG << ", Z = " << tgZ << ", N = " << tgN
721 << ", while it is defined only for PDG=211 (pi-)" << G4endl;
722 G4Exception("G4ChipsPionPlusElasticXS::GetSlope()", "HAD_CHPS_000",
723 FatalException, ed);
724 }
725 if(theB1<0.) theB1=0.;
726 if(!(theB1>=-1.||theB1<=1.))G4cout<<"*NAN*G4QElasticCrossSect::Getslope:"<<theB1<<G4endl;
727 return theB1/GeVSQ;
728}

References FatalException, G4cout, G4endl, G4Exception(), anonymous_namespace{G4ChipsKaonMinusElasticXS.cc}::GeVSQ, gigaelectronvolt, lastLP, onlyCS, and theB1.

◆ GetTabValues()

G4double G4ChipsPionPlusElasticXS::GetTabValues ( G4double  lp,
G4int  pPDG,
G4int  tgZ,
G4int  tgN 
)
private

Definition at line 738 of file G4ChipsPionPlusElasticXS.cc.

740{
741 if(PDG!= 211)G4cout<<"Warning*G4ChipsPionPlusElasticXS::GetTabV:PDG="<<PDG<<G4endl;
742
743 //AR-24Apr2018 Switch to allow transuranic elements
744 const G4bool isHeavyElementAllowed = true;
745 if(tgZ<0 || ( !isHeavyElementAllowed && tgZ>92))
746 {
747 G4cout<<"*Warning*G4QPionPlusElCS::GetTabValue:(1-92) No isotopes for Z="<<tgZ<<G4endl;
748 return 0.;
749 }
750 G4int iZ=tgZ-1; // Z index
751 if(iZ<0)
752 {
753 iZ=0; // conversion of the neutron target to the proton target
754 tgZ=1;
755 tgN=0;
756 }
757 G4double p=G4Exp(lp); // momentum
758 G4double sp=std::sqrt(p); // sqrt(p)
759 G4double p2=p*p;
760 G4double p3=p2*p;
761 G4double p4=p2*p2;
762 if ( tgZ == 1 && tgN == 0 ) // PiPlus+P
763 {
764 G4double dl2=lp-lastPAR[11];
765 theSS=lastPAR[34];
766 theS1=(lastPAR[12]+lastPAR[13]*dl2*dl2)/(1.+lastPAR[14]/p4/p)+
767 (lastPAR[15]/p2+lastPAR[16]*p)/(p4+lastPAR[17]*sp);
768 theB1=lastPAR[18]*G4Pow::GetInstance()->powA(p,lastPAR[19])/(1.+lastPAR[20]/p3);
769 theS2=lastPAR[21]+lastPAR[22]/(p4+lastPAR[23]*p);
770 theB2=lastPAR[24]+lastPAR[25]/(p4+lastPAR[26]/sp);
771 theS3=lastPAR[27]+lastPAR[28]/(p4*p4+lastPAR[29]*p2+lastPAR[30]);
772 theB3=lastPAR[31]+lastPAR[32]/(p4+lastPAR[33]);
773 theS4=0.;
774 theB4=0.;
775 // Returns the total elastic pip-p cross-section (to avoid spoiling lastSIG)
776 G4double dl1=lp+lastPAR[0]; // lr
777 G4double lr2=dl1*dl1; // lr2
778 G4double dl3=lp-lastPAR[3]; // ld
779 G4double dl4=lp-lastPAR[4]; // lm
780 return lastPAR[1]/(lr2+lr2*lr2+lastPAR[2])+(lastPAR[6]*dl3*dl3+lastPAR[7]+
781 lastPAR[8]/sp)/(1.+lastPAR[9]/p4)+lastPAR[10]/(dl4*dl4+lastPAR[5]);
782 }
783 else
784 {
785 G4double p5=p4*p;
786 G4double p6=p5*p;
787 G4double p8=p6*p2;
788 G4double p10=p8*p2;
789 G4double p12=p10*p2;
790 G4double p16=p8*p8;
791 //G4double p24=p16*p8;
792 G4double dl=lp-5.;
793 G4double a=tgZ+tgN;
794 G4double pah=G4Pow::GetInstance()->powA(p,a/2);
795 G4double pa=pah*pah;
796 G4double pa2=pa*pa;
797 if(a<6.5)
798 {
799 theS1=lastPAR[9]/(1.+lastPAR[10]*p4*pa)+lastPAR[11]/(p4+lastPAR[12]*p4/pa2)+
800 (lastPAR[13]*dl*dl+lastPAR[14])/(1.+lastPAR[15]/p2);
801 theB1=(lastPAR[16]+lastPAR[17]*p2)/(p4+lastPAR[18]/pah)+lastPAR[19];
802 theSS=lastPAR[20]/(1.+lastPAR[21]/p2)+lastPAR[22]/(p6/pa+lastPAR[23]/p16);
803 theS2=lastPAR[24]/(pa/p2+lastPAR[25]/p4)+lastPAR[26];
804 theB2=lastPAR[27]*G4Pow::GetInstance()->powA(p,lastPAR[28])+lastPAR[29]/(p8+lastPAR[30]/p16);
805 theS3=lastPAR[31]/(pa*p+lastPAR[32]/pa)+lastPAR[33];
806 theB3=lastPAR[34]/(p3+lastPAR[35]/p6)+lastPAR[36]/(1.+lastPAR[37]/p2);
807 theS4=p2*(pah*lastPAR[38]*G4Exp(-pah*lastPAR[39])+
808 lastPAR[40]/(1.+lastPAR[41]*G4Pow::GetInstance()->powA(p,lastPAR[42])));
809 theB4=lastPAR[43]*pa/p2/(1.+pa*lastPAR[44]);
810 }
811 else
812 {
813 theS1=lastPAR[9]/(1.+lastPAR[10]/p4)+lastPAR[11]/(p4+lastPAR[12]/p2)+
814 lastPAR[13]/(p5+lastPAR[14]/p16);
815 theB1=(lastPAR[15]/p8+lastPAR[19])/(p+lastPAR[16]/G4Pow::GetInstance()->powA(p,lastPAR[20]))+
816 lastPAR[17]/(1.+lastPAR[18]/p4);
817 theSS=lastPAR[21]/(p4/G4Pow::GetInstance()->powA(p,lastPAR[23])+lastPAR[22]/p4);
818 theS2=lastPAR[24]/p4/(G4Pow::GetInstance()->powA(p,lastPAR[25])+lastPAR[26]/p12)+lastPAR[27];
820 theS3=lastPAR[32]/G4Pow::GetInstance()->powA(p,lastPAR[35])/(1.+lastPAR[36]/p12)+
821 lastPAR[33]/(1.+lastPAR[34]/p6);
822 theB3=lastPAR[37]/p8+lastPAR[38]/p2+lastPAR[39]/(1.+lastPAR[40]/p8);
823 theS4=(lastPAR[41]/p4+lastPAR[46]/p)/(1.+lastPAR[42]/p10)+
824 (lastPAR[43]+lastPAR[44]*dl*dl)/(1.+lastPAR[45]/p12);
825 theB4=lastPAR[47]/(1.+lastPAR[48]/p)+lastPAR[49]*p4/(1.+lastPAR[50]*p5);
826 }
827 // Returns the total elastic (n/p)A cross-section (to avoid spoiling lastSIG)
828 // p1 p2 p3
829 return (lastPAR[0]*dl*dl+lastPAR[1])/(1.+lastPAR[2]/p8)+
830 lastPAR[3]/(p4+lastPAR[4]/p3)+lastPAR[6]/(p4+lastPAR[7]/p4);
831 // p4 p5 p7 p8
832 }
833 return 0.;
834} // End of GetTableValues

References G4cout, G4endl, G4Exp(), G4Pow::GetInstance(), lastPAR, G4Pow::powA(), G4InuclParticleNames::sp, theB1, theB2, theB3, theB4, theS1, theS2, theS3, theS4, and theSS.

Referenced by CalculateCrossSection(), and GetPTables().

◆ GetVerboseLevel()

G4int G4VCrossSectionDataSet::GetVerboseLevel ( ) const
inlinevirtualinherited

◆ IsElementApplicable()

G4bool G4VCrossSectionDataSet::IsElementApplicable ( const G4DynamicParticle ,
G4int  Z,
const G4Material mat = nullptr 
)
virtualinherited

◆ IsIsoApplicable()

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

Reimplemented from G4VCrossSectionDataSet.

Definition at line 144 of file G4ChipsPionPlusElasticXS.cc.

147{
148 return true;
149}

◆ SelectIsotope()

const G4Isotope * G4VCrossSectionDataSet::SelectIsotope ( const G4Element anElement,
G4double  kinEnergy,
G4double  logE 
)
virtualinherited

Reimplemented in G4GammaNuclearXS, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, and G4ParticleInelasticXS.

Definition at line 149 of file G4VCrossSectionDataSet.cc.

151{
152 size_t nIso = anElement->GetNumberOfIsotopes();
153 const G4Isotope* iso = anElement->GetIsotope(0);
154
155 // more than 1 isotope
156 if(1 < nIso) {
157 const G4double* abundVector = anElement->GetRelativeAbundanceVector();
158 G4double sum = 0.0;
160 for (size_t j=0; j<nIso; ++j) {
161 sum += abundVector[j];
162 if(q <= sum) {
163 iso = anElement->GetIsotope(j);
164 break;
165 }
166 }
167 }
168 return iso;
169}
const G4Isotope * GetIsotope(G4int iso) const
Definition: G4Element.hh:170

References G4UniformRand, G4Element::GetIsotope(), G4Element::GetNumberOfIsotopes(), and G4Element::GetRelativeAbundanceVector().

◆ SetForAllAtomsAndEnergies()

void G4VCrossSectionDataSet::SetForAllAtomsAndEnergies ( G4bool  val)
inlineinherited

◆ SetMaxKinEnergy()

void G4VCrossSectionDataSet::SetMaxKinEnergy ( G4double  value)
inlineinherited

◆ SetMinKinEnergy()

void G4VCrossSectionDataSet::SetMinKinEnergy ( G4double  value)
inlineinherited

◆ SetName()

void G4VCrossSectionDataSet::SetName ( const G4String nam)
inlineinherited

Definition at line 240 of file G4VCrossSectionDataSet.hh.

241{
242 name = nam;
243}

References G4VCrossSectionDataSet::name.

Referenced by G4ParticleHPInelasticData::G4ParticleHPInelasticData().

◆ SetVerboseLevel()

void G4VCrossSectionDataSet::SetVerboseLevel ( G4int  value)
inlinevirtualinherited

Field Documentation

◆ B1T

std::vector<G4double*> G4ChipsPionPlusElasticXS::B1T
private

◆ B2T

std::vector<G4double*> G4ChipsPionPlusElasticXS::B2T
private

◆ B3T

std::vector<G4double*> G4ChipsPionPlusElasticXS::B3T
private

◆ B4T

std::vector<G4double*> G4ChipsPionPlusElasticXS::B4T
private

◆ colCS

std::vector<G4double> G4ChipsPionPlusElasticXS::colCS
private

Definition at line 143 of file G4ChipsPionPlusElasticXS.hh.

Referenced by GetChipsCrossSection().

◆ colN

std::vector<G4int> G4ChipsPionPlusElasticXS::colN
private

Definition at line 139 of file G4ChipsPionPlusElasticXS.hh.

Referenced by GetChipsCrossSection().

◆ colP

std::vector<G4double> G4ChipsPionPlusElasticXS::colP
private

Definition at line 141 of file G4ChipsPionPlusElasticXS.hh.

Referenced by GetChipsCrossSection().

◆ colTH

std::vector<G4double> G4ChipsPionPlusElasticXS::colTH
private

Definition at line 142 of file G4ChipsPionPlusElasticXS.hh.

Referenced by GetChipsCrossSection().

◆ colZ

std::vector<G4int> G4ChipsPionPlusElasticXS::colZ
private

Definition at line 140 of file G4ChipsPionPlusElasticXS.hh.

Referenced by GetChipsCrossSection().

◆ CST

std::vector<G4double*> G4ChipsPionPlusElasticXS::CST
private

◆ dlnP

G4double G4ChipsPionPlusElasticXS::dlnP
private

◆ isForAllAtomsAndEnergies

G4bool G4VCrossSectionDataSet::isForAllAtomsAndEnergies
privateinherited

◆ lastB1T

G4double* G4ChipsPionPlusElasticXS::lastB1T
private

◆ lastB2T

G4double* G4ChipsPionPlusElasticXS::lastB2T
private

◆ lastB3T

G4double* G4ChipsPionPlusElasticXS::lastB3T
private

◆ lastB4T

G4double* G4ChipsPionPlusElasticXS::lastB4T
private

◆ lastCS

G4double G4ChipsPionPlusElasticXS::lastCS
private

Definition at line 100 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lastCST

G4double* G4ChipsPionPlusElasticXS::lastCST
private

◆ lastI

G4int G4ChipsPionPlusElasticXS::lastI
private

Definition at line 101 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lastLP

G4double G4ChipsPionPlusElasticXS::lastLP
private

◆ lastN

G4int G4ChipsPionPlusElasticXS::lastN
private

Definition at line 96 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lastP

G4double G4ChipsPionPlusElasticXS::lastP
private

Definition at line 98 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lastPAR

G4double* G4ChipsPionPlusElasticXS::lastPAR
private

◆ lastPIN

G4double G4ChipsPionPlusElasticXS::lastPIN
private

Definition at line 114 of file G4ChipsPionPlusElasticXS.hh.

Referenced by CalculateCrossSection(), and G4ChipsPionPlusElasticXS().

◆ lastS1T

G4double* G4ChipsPionPlusElasticXS::lastS1T
private

◆ lastS2T

G4double* G4ChipsPionPlusElasticXS::lastS2T
private

◆ lastS3T

G4double* G4ChipsPionPlusElasticXS::lastS3T
private

◆ lastS4T

G4double* G4ChipsPionPlusElasticXS::lastS4T
private

◆ lastSIG

G4double G4ChipsPionPlusElasticXS::lastSIG
private

Definition at line 93 of file G4ChipsPionPlusElasticXS.hh.

Referenced by CalculateCrossSection(), and G4ChipsPionPlusElasticXS().

◆ lastSST

G4double* G4ChipsPionPlusElasticXS::lastSST
private

◆ lastTH

G4double G4ChipsPionPlusElasticXS::lastTH
private

Definition at line 99 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lastTM

G4double G4ChipsPionPlusElasticXS::lastTM
private

◆ lastTN

G4int G4ChipsPionPlusElasticXS::lastTN
private

Definition at line 113 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS().

◆ lastTZ

G4int G4ChipsPionPlusElasticXS::lastTZ
private

Definition at line 112 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS().

◆ lastZ

G4int G4ChipsPionPlusElasticXS::lastZ
private

Definition at line 97 of file G4ChipsPionPlusElasticXS.hh.

Referenced by G4ChipsPionPlusElasticXS(), and GetChipsCrossSection().

◆ lPMax

G4double G4ChipsPionPlusElasticXS::lPMax
private

◆ lPMin

G4double G4ChipsPionPlusElasticXS::lPMin
private

◆ maxKinEnergy

G4double G4VCrossSectionDataSet::maxKinEnergy
privateinherited

◆ minKinEnergy

G4double G4VCrossSectionDataSet::minKinEnergy
privateinherited

◆ name

G4String G4VCrossSectionDataSet::name
protectedinherited

◆ nLast

const G4int G4ChipsPionPlusElasticXS::nLast
private

◆ nPoints

const G4int G4ChipsPionPlusElasticXS::nPoints
private

Definition at line 86 of file G4ChipsPionPlusElasticXS.hh.

Referenced by CalculateCrossSection(), and GetPTables().

◆ onlyCS

G4bool G4ChipsPionPlusElasticXS::onlyCS
private

◆ PAR

std::vector<G4double*> G4ChipsPionPlusElasticXS::PAR
private

◆ PIN

std::vector<G4double> G4ChipsPionPlusElasticXS::PIN
private

Definition at line 145 of file G4ChipsPionPlusElasticXS.hh.

Referenced by CalculateCrossSection().

◆ registry

G4CrossSectionDataSetRegistry* G4VCrossSectionDataSet::registry
privateinherited

◆ S1T

std::vector<G4double*> G4ChipsPionPlusElasticXS::S1T
private

◆ S2T

std::vector<G4double*> G4ChipsPionPlusElasticXS::S2T
private

◆ S3T

std::vector<G4double*> G4ChipsPionPlusElasticXS::S3T
private

◆ S4T

std::vector<G4double*> G4ChipsPionPlusElasticXS::S4T
private

◆ SST

std::vector<G4double*> G4ChipsPionPlusElasticXS::SST
private

◆ theB1

G4double G4ChipsPionPlusElasticXS::theB1
private

◆ theB2

G4double G4ChipsPionPlusElasticXS::theB2
private

◆ theB3

G4double G4ChipsPionPlusElasticXS::theB3
private

◆ theB4

G4double G4ChipsPionPlusElasticXS::theB4
private

◆ theS1

G4double G4ChipsPionPlusElasticXS::theS1
private

◆ theS2

G4double G4ChipsPionPlusElasticXS::theS2
private

◆ theS3

G4double G4ChipsPionPlusElasticXS::theS3
private

◆ theS4

G4double G4ChipsPionPlusElasticXS::theS4
private

◆ theSS

G4double G4ChipsPionPlusElasticXS::theSS
private

◆ verboseLevel

G4int G4VCrossSectionDataSet::verboseLevel
protectedinherited

Definition at line 168 of file G4VCrossSectionDataSet.hh.

Referenced by G4BGGNucleonElasticXS::BuildPhysicsTable(), G4BGGPionElasticXS::BuildPhysicsTable(), G4BGGPionInelasticXS::BuildPhysicsTable(), G4GammaNuclearXS::BuildPhysicsTable(), G4NeutronCaptureXS::BuildPhysicsTable(), G4NeutronElasticXS::BuildPhysicsTable(), G4NeutronInelasticXS::BuildPhysicsTable(), G4ParticleInelasticXS::BuildPhysicsTable(), G4BGGNucleonInelasticXS::BuildPhysicsTable(), G4LENDCrossSection::create_used_target_map(), G4BGGNucleonElasticXS::G4BGGNucleonElasticXS(), G4BGGNucleonInelasticXS::G4BGGNucleonInelasticXS(), G4BGGPionElasticXS::G4BGGPionElasticXS(), G4BGGPionInelasticXS::G4BGGPionInelasticXS(), G4GammaNuclearXS::G4GammaNuclearXS(), G4NeutronCaptureXS::G4NeutronCaptureXS(), G4NeutronElasticXS::G4NeutronElasticXS(), G4NeutronInelasticXS::G4NeutronInelasticXS(), G4ParticleInelasticXS::G4ParticleInelasticXS(), G4NeutronCaptureXS::GetElementCrossSection(), G4NeutronElasticXS::GetElementCrossSection(), G4NeutronInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetElementCrossSection(), G4BGGPionElasticXS::GetElementCrossSection(), G4BGGPionInelasticXS::GetElementCrossSection(), G4BGGNucleonInelasticXS::GetElementCrossSection(), G4GammaNuclearXS::GetElementCrossSection(), G4ParticleInelasticXS::GetElementCrossSection(), G4BGGNucleonElasticXS::GetIsoCrossSection(), G4BGGPionElasticXS::GetIsoCrossSection(), G4BGGPionInelasticXS::GetIsoCrossSection(), G4GammaNuclearXS::GetIsoCrossSection(), G4BGGNucleonInelasticXS::GetIsoCrossSection(), G4VCrossSectionDataSet::GetVerboseLevel(), G4NeutronElasticXS::Initialise(), G4ParticleInelasticXS::IsoCrossSection(), G4NeutronCaptureXS::IsoCrossSection(), G4NeutronInelasticXS::IsoCrossSection(), G4GammaNuclearXS::RetrieveVector(), G4NeutronCaptureXS::RetrieveVector(), G4NeutronInelasticXS::RetrieveVector(), G4ParticleInelasticXS::RetrieveVector(), and G4VCrossSectionDataSet::SetVerboseLevel().


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