Geant4-11
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes
G4UPiNuclearCrossSection Class Reference

#include <G4UPiNuclearCrossSection.hh>

Inheritance diagram for G4UPiNuclearCrossSection:
G4VCrossSectionDataSet

Public Member Functions

void BuildPhysicsTable (const G4ParticleDefinition &) final
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
void CrossSectionDescription (std::ostream &) const final
 
void DumpPhysicsTable (const G4ParticleDefinition &) final
 
bool ForAllAtomsAndEnergies () const
 
 G4UPiNuclearCrossSection ()
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double GetElasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) const
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
G4double GetInelasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) const
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetMaxKinEnergy () const
 
G4double GetMinKinEnergy () const
 
const G4StringGetName () const
 
virtual G4int GetVerboseLevel () const
 
G4bool IsElementApplicable (const G4DynamicParticle *aParticle, G4int Z, const G4Material *) final
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
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)
 
 ~G4UPiNuclearCrossSection () override
 

Protected Attributes

G4String name
 
G4int verboseLevel
 

Private Member Functions

void AddDataSet (const G4String &p, const G4double *tot, const G4double *in, const G4double *e, G4int n)
 
G4double Interpolate (G4int Z, G4int A, G4double ekin, const G4PhysicsTable *) const
 
void LoadData ()
 

Private Attributes

G4double aPower
 
G4double elow
 
G4bool isForAllAtomsAndEnergies
 
G4bool isMaster
 
G4double maxKinEnergy
 
G4double minKinEnergy
 
const G4ParticleDefinitionpiMinus
 
const G4ParticleDefinitionpiPlus
 
G4CrossSectionDataSetRegistryregistry
 
G4bool spline
 

Static Private Attributes

static G4double APower [93] = {0.0}
 
static G4int idxZ [93] = {0}
 
static const G4int NZ = 16
 
static G4PhysicsTablepiMinusElastic = nullptr
 
static G4PhysicsTablepiMinusInelastic = nullptr
 
static G4PhysicsTablepiPlusElastic = nullptr
 
static G4PhysicsTablepiPlusInelastic = nullptr
 
static G4double theA [NZ] = {0.0}
 
static G4int theZ [NZ]
 

Detailed Description

Definition at line 45 of file G4UPiNuclearCrossSection.hh.

Constructor & Destructor Documentation

◆ G4UPiNuclearCrossSection()

G4UPiNuclearCrossSection::G4UPiNuclearCrossSection ( )
explicit

Definition at line 61 of file G4UPiNuclearCrossSection.cc.

62 : G4VCrossSectionDataSet("G4UPiNuclearCrossSection")
63{
64 isMaster = false;
65 spline = false;
66
69
70 aPower = 0.75;
71 elow = 20.0*CLHEP::MeV;
72}
static G4PionMinus * PionMinus()
Definition: G4PionMinus.cc:97
static G4PionPlus * PionPlus()
Definition: G4PionPlus.cc:97
const G4ParticleDefinition * piPlus
const G4ParticleDefinition * piMinus
G4VCrossSectionDataSet(const G4String &nam="")
static constexpr double MeV

References aPower, elow, isMaster, CLHEP::MeV, piMinus, G4PionMinus::PionMinus(), G4PionPlus::PionPlus(), piPlus, and spline.

◆ ~G4UPiNuclearCrossSection()

G4UPiNuclearCrossSection::~G4UPiNuclearCrossSection ( )
override

Definition at line 74 of file G4UPiNuclearCrossSection.cc.

75{
76 if(isMaster) {
77 if(piPlusElastic) {
79 delete piPlusElastic;
80 piPlusElastic = nullptr;
81 }
82 if(piPlusInelastic) {
84 delete piPlusInelastic;
85 piPlusInelastic = nullptr;
86 }
87 if(piMinusElastic) {
89 delete piMinusElastic;
90 piMinusElastic = nullptr;
91 }
94 delete piMinusInelastic;
95 piMinusInelastic = nullptr;
96 }
97 }
98}
void clearAndDestroy()
static G4PhysicsTable * piPlusElastic
static G4PhysicsTable * piMinusElastic
static G4PhysicsTable * piPlusInelastic
static G4PhysicsTable * piMinusInelastic

References G4PhysicsTable::clearAndDestroy(), isMaster, piMinusElastic, piMinusInelastic, piPlusElastic, and piPlusInelastic.

Member Function Documentation

◆ AddDataSet()

void G4UPiNuclearCrossSection::AddDataSet ( const G4String p,
const G4double tot,
const G4double in,
const G4double e,
G4int  n 
)
private

Definition at line 133 of file G4UPiNuclearCrossSection.cc.

138{
139 G4PhysicsFreeVector* pvin = new G4PhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV,spline);
140 G4PhysicsFreeVector* pvel = new G4PhysicsFreeVector(n,e[0]*GeV,e[n-1]*GeV,spline);
141 for(G4int i=0; i<n; ++i) {
142 pvin->PutValues(i,e[i]*GeV,in[i]*millibarn);
143 pvel->PutValues(i,e[i]*GeV,std::max(0.0,(tot[i]-in[i])*millibarn));
144 }
145 if(spline) {
146 pvin->FillSecondDerivatives();
147 pvel->FillSecondDerivatives();
148 }
149 if(p == "pi+") {
152 } else {
155 }
156}
static constexpr double millibarn
Definition: G4SIunits.hh:86
static constexpr double GeV
Definition: G4SIunits.hh:203
int G4int
Definition: G4Types.hh:85
void PutValues(const std::size_t index, const G4double energy, const G4double value)
void push_back(G4PhysicsVector *)
void FillSecondDerivatives(const G4SplineType=G4SplineType::Base, const G4double dir1=0.0, const G4double dir2=0.0)
T max(const T t1, const T t2)
brief Return the largest of the two arguments

References G4PhysicsVector::FillSecondDerivatives(), GeV, G4INCL::Math::max(), millibarn, CLHEP::detail::n, piMinusElastic, piMinusInelastic, piPlusElastic, piPlusInelastic, G4PhysicsTable::push_back(), G4PhysicsFreeVector::PutValues(), and spline.

Referenced by LoadData().

◆ BuildPhysicsTable()

void G4UPiNuclearCrossSection::BuildPhysicsTable ( const G4ParticleDefinition p)
finalvirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 173 of file G4UPiNuclearCrossSection.cc.

174{
175 //G4cout << "G4UPiNuclearCrossSection::BuildPhysicsTable for "
176 // << p.GetParticleName() << " " << piPlusElastic << G4endl;
177 if(piPlusElastic) { return; }
178
179 if(&p != piPlus && &p != piMinus) {
181 ed << "This cross section is applicable only to pions and not to "
182 << p.GetParticleName() << G4endl;
183 G4Exception("G4UPiNuclearCrossSection::BuildPhysicsTable", "had001",
184 FatalException, ed);
185 return;
186 }
187
188 if(!piPlusElastic) {
189#ifdef G4MULTITHREADED
190 G4MUTEXLOCK(&pionUXSMutex);
191 if(!piPlusElastic) {
192#endif
193 isMaster = true;
194#ifdef G4MULTITHREADED
195 }
196 G4MUTEXUNLOCK(&pionUXSMutex);
197#endif
198 }
199 if(!isMaster) { return; }
200
202 G4Pow* g4pow = G4Pow::GetInstance();
203 for(G4int i=0; i<NZ; ++i) {
204 theA[i] = nist->GetAtomicMassAmu(theZ[i]);
205 }
206 for(G4int i=1; i<93; ++i) {
207 APower[i] = g4pow->powA(nist->GetAtomicMassAmu(i),aPower);
208 }
209 G4int idx = 1;
210 for(G4int i=3; i<93; ++i) {
211 if(theZ[idx] == i) {
212 idxZ[i] = -idx;
213 ++idx;
214 } else {
215 idxZ[i] = idx;
216 }
217 }
218
223
224 LoadData();
225 //G4cout << "### Initialisation done " << G4endl;
226}
@ 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
#define G4MUTEXLOCK(mutex)
Definition: G4Threading.hh:251
#define G4MUTEXUNLOCK(mutex)
Definition: G4Threading.hh:254
#define G4endl
Definition: G4ios.hh:57
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
const G4String & GetParticleName() const
Definition: G4Pow.hh:49
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230

References APower, aPower, FatalException, G4endl, G4Exception(), G4MUTEXLOCK, G4MUTEXUNLOCK, G4NistManager::GetAtomicMassAmu(), G4Pow::GetInstance(), G4ParticleDefinition::GetParticleName(), idxZ, G4NistManager::Instance(), isMaster, LoadData(), NZ, piMinus, piMinusElastic, piMinusInelastic, piPlus, piPlusElastic, piPlusInelastic, G4Pow::powA(), theA, and theZ.

Referenced by G4BGGPionElasticXS::BuildPhysicsTable(), and G4BGGPionInelasticXS::BuildPhysicsTable().

◆ 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
double G4double
Definition: G4Types.hh:83
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 G4UPiNuclearCrossSection::CrossSectionDescription ( std::ostream &  outFile) const
finalvirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 594 of file G4UPiNuclearCrossSection.cc.

595{
596 outFile << "G4UPiNuclearCrossSection calculates the total, elastic and\n"
597 << "inelastic cross sections for pion scattering from nuclei\n"
598 << "heavier than hydrogen. It is based on the Barashenkov\n"
599 << "parameterization and is valid for all incident energies.\n";
600}

◆ DumpPhysicsTable()

void G4UPiNuclearCrossSection::DumpPhysicsTable ( const G4ParticleDefinition p)
finalvirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 158 of file G4UPiNuclearCrossSection.cc.

159{
160 if(&p == piPlus) {
161 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi+" << G4endl;
163 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi+" << G4endl;
165 } else if(&p == piMinus) {
166 G4cout << "### G4UPiNuclearCrossSection Elastic data for pi-" << G4endl;
168 G4cout << "### G4UPiNuclearCrossSection Inelastic data for pi-" << G4endl;
170 }
171}
G4GLOB_DLL std::ostream G4cout

References G4cout, G4endl, piMinus, piMinusElastic, piMinusInelastic, piPlus, piPlusElastic, and piPlusInelastic.

◆ ForAllAtomsAndEnergies()

bool G4VCrossSectionDataSet::ForAllAtomsAndEnergies ( ) const
inlineinherited

◆ 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().

◆ GetElasticCrossSection()

G4double G4UPiNuclearCrossSection::GetElasticCrossSection ( const G4DynamicParticle aParticle,
G4int  Z,
G4int  A 
) const
inline

Definition at line 107 of file G4UPiNuclearCrossSection.hh.

109{
110 const G4PhysicsTable* table =
111 (dp->GetDefinition() == piPlus) ? piPlusElastic : piMinusElastic;
112 return Interpolate(Z, A, dp->GetKineticEnergy(), table);
113}
G4double Interpolate(G4int Z, G4int A, G4double ekin, const G4PhysicsTable *) const

References A, G4DynamicParticle::GetDefinition(), G4DynamicParticle::GetKineticEnergy(), Interpolate(), piMinusElastic, piPlus, piPlusElastic, and Z.

Referenced by G4BGGPionElasticXS::BuildPhysicsTable(), and G4BGGPionElasticXS::GetElementCrossSection().

◆ 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}
static constexpr double MeV
Definition: G4SIunits.hh:200
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4String & GetName() const
Definition: G4Material.hh:173

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().

◆ GetInelasticCrossSection()

G4double G4UPiNuclearCrossSection::GetInelasticCrossSection ( const G4DynamicParticle aParticle,
G4int  Z,
G4int  A 
) const
inline

◆ GetIsoCrossSection()

G4double G4VCrossSectionDataSet::GetIsoCrossSection ( const G4DynamicParticle dynPart,
G4int  Z,
G4int  A,
const G4Isotope iso = nullptr,
const G4Element elm = nullptr,
const G4Material mat = nullptr 
)
virtualinherited

Reimplemented in G4ChipsAntiBaryonElasticXS, G4ChipsAntiBaryonInelasticXS, G4ChipsHyperonElasticXS, G4ChipsHyperonInelasticXS, G4ChipsKaonMinusElasticXS, G4ChipsKaonMinusInelasticXS, G4ChipsKaonPlusElasticXS, G4ChipsKaonPlusInelasticXS, G4ChipsKaonZeroElasticXS, G4ChipsKaonZeroInelasticXS, G4ChipsNeutronElasticXS, G4ChipsNeutronInelasticXS, G4ChipsPionMinusElasticXS, G4ChipsPionMinusInelasticXS, G4ChipsPionPlusElasticXS, G4ChipsPionPlusInelasticXS, G4ChipsProtonElasticXS, G4ChipsProtonInelasticXS, G4NeutronCaptureXS, G4NeutronElasticXS, G4NeutronInelasticXS, G4IonsShenCrossSection, G4ElNucleusSFcs, G4BGGNucleonElasticXS, G4BGGPionElasticXS, G4BGGPionInelasticXS, G4GammaNuclearXS, G4ParticleInelasticXS, G4BGGNucleonInelasticXS, G4LENDCombinedCrossSection, G4LENDCrossSection, G4LENDGammaCrossSection, G4ParticleHPCaptureData, G4ParticleHPElasticData, G4ParticleHPFissionData, G4ParticleHPInelasticData, G4ParticleHPThermalScatteringData, G4MuNeutrinoNucleusTotXsc, G4ElNeutrinoNucleusTotXsc, and G4PhotoNuclearCrossSection.

Definition at line 130 of file G4VCrossSectionDataSet.cc.

135{
137 ed << "GetIsoCrossSection is not implemented in <" << name << ">\n"
138 << "Particle: " << dynPart->GetDefinition()->GetParticleName()
139 << " Ekin(MeV)= " << dynPart->GetKineticEnergy()/MeV;
140 if(mat) { ed << " material: " << mat->GetName(); }
141 if(elm) { ed << " element: " << elm->GetName(); }
142 ed << " target Z= " << Z << " A= " << A << G4endl;
143 G4Exception("G4VCrossSectionDataSet::GetIsoCrossSection", "had001",
144 FatalException, ed);
145 return 0.0;
146}
const G4String & GetName() const
Definition: G4Element.hh:127

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

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

◆ GetMaxKinEnergy()

G4double G4VCrossSectionDataSet::GetMaxKinEnergy ( ) const
inlineinherited

◆ GetMinKinEnergy()

G4double G4VCrossSectionDataSet::GetMinKinEnergy ( ) const
inlineinherited

◆ GetName()

const G4String & G4VCrossSectionDataSet::GetName ( ) const
inlineinherited

◆ GetVerboseLevel()

G4int G4VCrossSectionDataSet::GetVerboseLevel ( ) const
inlinevirtualinherited

◆ Interpolate()

G4double G4UPiNuclearCrossSection::Interpolate ( G4int  Z,
G4int  A,
G4double  ekin,
const G4PhysicsTable table 
) const
private

Definition at line 107 of file G4UPiNuclearCrossSection.cc.

109{
110 G4double res = 0.0;
111 G4double ekin = std::max(e, elow);
112 G4int iz = std::min(Z, 92);
113 G4int idx = idxZ[iz];
114 size_t jdx = (size_t)(std::max(ekin - elow, 0.0)*0.06);
115 //G4cout << "Interpolate: Z= " << iz << " A= " << A << " idx= " << idx
116 // << " jdx= " << jdx << " Ekin= " << ekin << G4endl;
117 if(idx < 0 || 2 == iz) {
118 res = ((*table)[std::abs(idx)])->Value(ekin, jdx);
119 //G4cout << "1: jdx= " << jdx << G4endl;
120 } else {
121 G4int iz2 = theZ[idx];
122 G4double x2 = (((*table)[idx])->Value(ekin, jdx))*APower[iz]/APower[iz2];
123 //G4cout << "2: jdx= " << jdx << G4endl;
124 G4int iz1 = theZ[idx-1];
125 G4double x1 = (((*table)[idx-1])->Value(ekin, jdx))*APower[iz]/APower[iz1];
126 G4double w1 = ((G4double)A - theA[idx-1])/(theA[idx] - theA[idx-1]);
127 res = w1*x2 + (1.0 - w1)*x1;
128 }
129 //G4cout << " res(nb)= " << res/CLHEP::barn << G4endl;
130 return res;
131}
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References A, APower, elow, idxZ, G4INCL::Math::max(), G4INCL::Math::min(), theA, theZ, and Z.

Referenced by GetElasticCrossSection(), and GetInelasticCrossSection().

◆ IsElementApplicable()

G4bool G4UPiNuclearCrossSection::IsElementApplicable ( const G4DynamicParticle aParticle,
G4int  Z,
const G4Material  
)
finalvirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 101 of file G4UPiNuclearCrossSection.cc.

103{
104 return (1 < Z);
105}

References Z.

◆ IsIsoApplicable()

G4bool G4VCrossSectionDataSet::IsIsoApplicable ( const G4DynamicParticle ,
G4int  Z,
G4int  A,
const G4Element elm = nullptr,
const G4Material mat = nullptr 
)
virtualinherited

◆ LoadData()

void G4UPiNuclearCrossSection::LoadData ( )
private

Definition at line 228 of file G4UPiNuclearCrossSection.cc.

229{
230 static const G4double e1[38] = {
231 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.13, 0.14, 0.15, 0.16,
232 0.17, 0.18, 0.19, 0.2, 0.22,0.24, 0.26, 0.28, 0.3, 0.35,
233 0.4, 0.45, 0.5, 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2,
234 3, 5, 10, 20, 50, 100, 500, 1000};
235 static const G4double e2[39] = {
236 0.02, 0.04, 0.06, 0.08, 0.1, 0.11, 0.12, 0.13, 0.14, 0.15,
237 0.16, 0.17, 0.18, 0.2, 0.22, 0.24, 0.26, 0.28, 0.3, 0.35,
238 0.4, 0.45, 0.5, 0.55, 0.575,0.6, 0.7, 0.8, 0.9, 1,
239 2, 3, 5, 10, 20, 50, 100, 500, 1000};
240 static const G4double e3[31] = {
241 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2,
242 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.6, 0.7, 0.8,
243 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
244 static const G4double e4[32] = {
245 0.02, 0.04, 0.06, 0.08, 0.1, 0.12, 0.14, 0.16, 0.18, 0.2,
246 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.7,
247 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
248 static const G4double e5[34] = {
249 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14,
250 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
251 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
252 static const G4double e6[35] = {
253 0.02, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09, 0.1, 0.12, 0.14,
254 0.16, 0.18, 0.2, 0.22, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5,
255 0.55, 0.6, 0.7, 0.8, 0.9, 1, 2, 3, 5, 10, 20, 50, 100, 500, 1000};
256
257 static const G4double he_t[38] = {
258 40, 70, 108, 152, 208, 276, 300, 320, 329, 333,
259 332, 328, 322, 310, 288, 260, 240, 216, 196, 144,
260 125, 112, 108.5, 109, 110.5, 117, 123, 128.5, 135, 110,
261 96, 87, 85, 83.5, 83.5, 83.5, 83.5, 83.5};
262 static const G4double he_in[38] = {
263 18, 38, 62, 98, 136, 176, 190, 200, 209, 212,
264 212, 208, 204, 196, 176, 164, 150, 134, 124, 97.5,
265 90, 85,82.5, 83.5, 86.5, 93, 97.5,100, 102, 83,
266 77, 75, 74, 72.5, 72.5, 72.5, 72.5, 72.5};
267 static const G4double be_m_t[38] = {
268 150, 210, 294, 396, 520, 600, 623, 635, 642, 640,
269 630, 615, 600, 576, 540, 504, 470, 435, 400, 340,
270 294, 258, 236, 230, 233, 244, 257, 270, 276, 250,
271 230, 215, 205, 194, 188, 186, 186, 186};
272 static const G4double be_m_in[38] = {
273 90, 126, 177, 240, 320, 380, 400, 410, 414, 410,
274 400, 387, 371, 360, 333, 312, 285, 260, 237, 216,
275 198, 187, 182, 180, 182, 187, 193, 203, 207, 179,
276 172, 165, 159, 155, 144, 144, 144, 144};
277 static const G4double be_p_t[38] = {
278 96, 150, 222, 320, 430, 514, 545, 565, 574, 574,
279 564, 552, 535, 522, 490, 462, 432, 398, 367, 314,
280 276, 248, 232, 230, 233, 244, 257, 270, 276, 250,
281 230, 215, 205, 194, 188, 186, 186, 186};
282 static const G4double be_p_in[38] = {
283 60, 95, 142, 194, 262, 319, 345, 361, 364, 364,
284 354, 350, 330, 319, 298, 280, 258, 237, 216, 200,
285 189, 183, 182, 180, 182, 187, 193, 203, 207, 179,
286 172, 165, 159, 155, 144, 144, 144, 144};
287
288 static const G4double c_m_t[39] = {
289 204, 260, 366, 517, 630, 673, 694, 704, 710, 711,
290 706, 694, 676, 648, 616, 584, 548, 518, 489, 426,
291 376, 342, 323, 310, 312, 313, 319, 333, 342, 348,
292 310, 290, 268, 250, 245, 237, 234, 234, 234};
293 static const G4double c_m_in[39] = {
294 128, 160, 224, 315, 388, 416, 430, 438, 444, 445,
295 440, 432, 416, 400, 380, 354, 320, 304, 288, 264,
296 246, 240, 233, 232, 233, 234, 238, 246, 252, 256,
297 220, 210, 198, 187, 183, 176, 174, 174, 174};
298 static const G4double c_p_t[39] = {
299 140, 192, 294, 428, 594, 642, 662, 687, 685, 688,
300 684, 672, 656, 630, 598, 567, 533, 504, 474, 416,
301 369, 336, 319, 310, 312, 313, 319, 333, 342, 348,
302 310, 290, 268, 250, 245, 237, 234, 234, 234};
303 static const G4double c_p_in[39] = {
304 94, 132, 184, 260, 370, 398, 408, 420, 426, 428,
305 424, 416, 400, 386, 366, 340, 308, 294, 280, 257,
306 241, 236, 231, 232, 233, 234, 238, 246, 252, 256,
307 220, 210, 198, 187, 183, 176, 174, 174, 174};
308 static const G4double n_m_t[39] = {
309 246, 308, 424, 590, 729, 776, 800, 821, 822, 817,
310 800, 778, 768, 728, 690, 654, 615, 584, 556, 480,
311 430, 393, 373, 367, 368, 370, 375, 388, 390, 397,
312 364, 337, 310, 291, 275, 268, 268, 268, 268};
313 static const G4double n_m_in[39] = {
314 155, 188, 256, 360, 456, 492, 512, 526, 526, 520,
315 504, 491, 475, 450, 425, 396, 376, 360, 340, 300,
316 282, 270, 265, 265, 266, 268, 273, 280, 288, 288,
317 256, 237, 226, 218, 208, 202, 202, 202, 202};
318 static const G4double n_p_t[39] = {
319 150, 212, 328, 500, 680, 735, 762, 781, 782, 779,
320 770, 748, 740, 706, 672, 633, 600, 569, 541, 467,
321 419, 385, 368, 364, 366, 368, 375, 388, 390, 397,
322 364, 337, 310, 291, 275, 268, 268, 268, 268};
323 static const G4double n_p_in[39] = {
324 90, 140, 208, 300, 426, 467, 490, 504, 504, 500,
325 484, 474, 460, 437, 413, 381, 365, 350, 330, 292,
326 276, 267, 263, 264, 265, 267, 273, 280, 288, 288,
327 256, 237, 226, 218, 208, 202, 202, 202, 202};
328
329 static const G4double o_m_t[31] = {
330 280, 360, 500, 685, 812, 861, 870, 865, 835, 800,
331 755, 700, 600, 537, 493, 468, 441, 436, 443, 449,
332 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303};
333 static const G4double o_m_in[31] = {
334 190, 207, 300, 420, 500, 540, 550, 542, 520, 490,
335 460, 423, 360, 339, 321, 314, 312, 314, 319, 324,
336 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222};
337 static const G4double o_p_t[31] = {
338 170, 240, 390, 570, 740, 818, 830, 822, 800, 765,
339 725, 675, 585, 525, 483, 458, 444, 447, 453, 449,
340 460, 463, 432, 385, 350, 325, 312, 307, 303, 303, 303};
341 static const G4double o_p_in[31] = {
342 100, 145, 240, 340, 470, 518, 530, 522, 505, 477,
343 448, 412, 350, 330, 316, 310, 308, 311, 317, 324,
344 328, 330, 300, 275, 250, 240, 229, 225, 222, 222, 222};
345 static const G4double na_m_t[31] = {
346 450, 545, 705, 910, 1020, 1075, 1087, 1080, 1042, 987,
347 943, 885, 790, 700, 650, 610, 585, 575, 585, 595,
348 600, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427};
349 static const G4double na_m_in[31] = {
350 275, 315, 413, 545, 620, 660, 670, 662, 630, 593,
351 570, 520, 465, 420, 410, 395, 390, 400, 410, 418,
352 420, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292};
353 static const G4double na_p_t[31] = {
354 210, 320, 530, 795, 960, 1035, 1050, 1040, 1007, 957,
355 918, 865, 773, 685, 636, 598, 575, 565, 578, 590,
356 598, 610, 556, 524, 494, 458, 445, 429, 427, 427, 427};
357 static const G4double na_p_in[31] = {
358 115, 210, 340, 495, 585, 630, 645, 637, 605, 572,
359 550, 505, 455, 410, 401, 388, 383, 393, 405, 414,
360 418, 422, 372, 348, 330, 320, 310, 294, 292, 292, 292};
361 static const G4double al_m_t[31] = {
362 532, 637, 832, 1057, 1207, 1230, 1210, 1174, 1133, 1095,
363 1038, 970, 890, 807, 750, 710, 675, 665, 670, 673,
364 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488};
365 static const G4double al_m_in[31] = {
366 300, 360, 495, 665, 750, 765, 750, 730, 700, 660,
367 615, 570, 520, 490, 470, 450, 448, 450, 450, 452,
368 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332};
369 static const G4double al_p_t[31] = {
370 225, 350, 616, 945, 1122, 1175, 1157, 1128, 1088, 1045,
371 988, 935, 870, 787, 730, 690, 660, 652, 660, 668,
372 678, 682, 618, 574, 546, 520, 507, 495, 488, 488, 488};
373 static const G4double al_p_in[31] = {
374 120, 238, 390, 610, 712, 735, 720, 703, 655, 635,
375 590, 550, 505, 475, 455, 438, 440, 445, 445, 450,
376 456, 460, 408, 392, 376, 356, 347, 338, 332, 332, 332};
377
378 static const G4double ca_m_t[31] = {
379 800, 980, 1240, 1460, 1570, 1600, 1580, 1535, 1475, 1425,
380 1375,1295, 1200, 1083, 1000, 948, 915, 895, 900, 908,
381 915, 922, 856, 795, 740, 705, 682, 660, 660, 660, 660};
382 static const G4double ca_m_in[31] = {
383 470, 550, 620, 860, 955, 960, 920, 860, 820, 780,
384 740, 665, 637, 615, 600, 590, 580, 580, 600, 608,
385 610, 615, 550, 525, 510, 488, 470, 450, 450, 450, 450};
386 static const G4double ca_p_t[31] = {
387 275, 445, 790, 1195, 1440, 1485, 1475, 1435, 1385, 1335,
388 1295,1245,1160, 1050, 970, 923, 895, 877, 887, 897,
389 904, 913, 855, 795, 740, 705, 682, 660, 660, 660, 660};
390 static const G4double ca_p_in[31] = {
391 160, 315, 500, 745, 870, 905, 900, 860, 810, 770,
392 740, 710, 640, 617, 595, 585, 575, 575, 590, 600,
393 602, 608, 550, 525, 510, 488, 470, 450, 450, 450, 450};
394 // ca data may have typo
395
396 static const G4double fe_m_t[32] = {
397 1175, 1363, 1670, 1950, 2050, 2040, 1975, 1886, 1834, 1773,
398 1720, 1635, 1474, 1380, 1269, 1225, 1182, 1162, 1159, 1162,
399 1178, 1190, 1197, 1102, 1135, 975, 945, 925, 905, 905,
400 905, 905};
401 static const G4double fe_m_in[32] = {
402 625, 725, 910, 1180, 1275, 1250, 1200, 1150, 1100, 1040,
403 995, 925, 825, 810, 780, 760, 745, 740, 740, 740,
404 750, 760, 765, 690, 660, 635, 615, 600, 585, 585,
405 585, 585};
406 static const G4double fe_p_t[32] = {
407 330, 575, 1010, 1500, 1837, 1875, 1820, 1751, 1691, 1636,
408 1690, 1450, 1396, 1305, 1219, 1190, 1148, 1138, 1134, 1144,
409 1163, 1175, 1183, 1198, 1135, 975, 945, 925, 905, 905,
410 905, 905};
411 static const G4double fe_p_in[32] = {
412 210, 410, 707, 1010, 1125, 1150, 1100, 1070, 1010, 960,
413 920, 776, 780, 760, 750, 740, 720, 725, 725, 730,
414 740, 750, 755, 690, 660, 635, 615, 600, 585, 585,
415 585, 585};
416 static const G4double cu_m_t[32] = {
417 1400, 1600, 1875, 2088, 2200, 2220, 2175, 2125, 2075, 2012,
418 1950, 1855, 1670, 1530, 1430, 1370, 1315, 1315, 1315, 1330,
419 1345, 1360, 1365, 1250, 1185, 1128, 1070, 1035, 1010, 1010,
420 1010, 1010};
421 static const G4double cu_m_in[32] = {
422 725, 840, 1020, 1200, 1295, 1300, 1267, 1240, 1213, 1175,
423 1125, 1042, 950, 900, 860, 840, 830, 832, 835, 840,
424 850, 860, 865, 785, 735, 705, 680, 650, 630, 630,
425 630, 630};
426 static const G4double cu_p_t[32] = {
427 355, 605, 1120, 1630, 1940, 2010, 2010, 1980, 1925, 1895,
428 1830, 1730, 1585, 1490, 1400, 1340, 1290, 1290, 1290, 1310,
429 1330, 1345, 1350, 1240, 1185, 1128, 1070, 1035, 1010, 1010,
430 1010, 1010};
431 static const G4double cu_p_in[32] = {
432 230, 425, 780, 1025, 1155, 1190, 1190, 1180, 1125, 1100,
433 1050, 1000, 900, 870, 835, 815, 810, 812, 815, 825,
434 840, 850, 855, 780, 735, 705, 680, 650, 630, 630,
435 630, 630};
436
437 static const G4double mo_m_t[34] = {
438 2430, 2610, 2710, 2790, 2880, 2940, 2965, 2970, 2970, 2920,
439 2840, 2720, 2570, 2500, 2365, 2200, 2050, 1926, 1825, 1768,
440 1749, 1750, 1778, 1789, 1808, 1690, 1645, 1530, 1492, 1450,
441 1425, 1425, 1425, 1425};
442 static const G4double mo_m_in[34] = {
443 925, 1125, 1250, 1375, 1500, 1600, 1680, 1750, 1770, 1730,
444 1660, 1580, 1500, 1450, 1330, 1250, 1190, 1140, 1100, 1075,
445 1075, 1070, 1088, 1095, 1110, 1035, 1005, 940, 917, 880,
446 860, 860, 860, 860};
447 static const G4double mo_p_t[34] = {
448 410, 730, 1110, 1530, 1920, 2200, 2385, 2520, 2600, 2630,
449 2575, 2470, 2320, 2285, 2185, 2053, 1945, 1852, 1776, 1719,
450 1710, 1716, 1746, 1759, 1778, 1675, 1645, 1530, 1492, 1450,
451 1425, 1425, 1425, 1425};
452 static const G4double mo_p_in[34] = {
453 270, 540, 825, 975, 1140, 1285, 1400, 1480, 1555, 1580,
454 1525, 1470, 1360, 1340, 1255, 1160, 1120, 1085, 1060, 1045,
455 1045, 1045, 1065, 1075, 1090, 1025, 1005, 940, 917, 880,
456 860, 860, 860, 860};
457 static const G4double cd_m_t[34] = {
458 3060, 3125, 3170, 3220, 3255, 3280, 3290, 3260, 3270, 3200,
459 3120, 3080, 3090, 2920, 2810, 2640, 2362, 2230, 2115, 2050,
460 2020, 2025, 2040, 2070, 2100, 1900, 1795, 1740, 1675, 1645,
461 1625, 1620, 1620, 1620};
462 static const G4double cd_m_in[34]= {
463 1025, 1275, 1440, 1625, 1740, 1800, 1880, 1920, 1980, 1920,
464 1850, 1810, 1720, 1650, 1560, 1450, 1330, 1290, 1245, 1210,
465 1200, 1200, 1205, 1205, 1230, 1130, 1085, 1060, 1000, 985,
466 975, 970, 970, 970};
467 static const G4double cd_p_t[34] = {
468 455, 780, 1170, 1700, 2120, 2400, 2600, 2720, 2820, 2840,
469 2800, 2760, 2720, 2640, 2560, 2450, 2252, 2130, 2035, 1985,
470 1970, 1975, 2005, 2035, 2070, 1880, 1795, 1740, 1675, 1645,
471 1625, 1620, 1620, 1620};
472 static const G4double cd_p_in[34] = {
473 310, 580, 880, 1060, 1270, 1400, 1530, 1610, 1660, 1680,
474 1640, 1600, 1560, 1500, 1430, 1330, 1280, 1230, 1200, 1180,
475 1170, 1175, 1180, 1180, 1210, 1120, 1085, 1060, 1000, 985,
476 975, 970, 970, 970};
477
478 static const G4double sn_m_t[35] = {
479 3000, 3180, 3250, 3300, 3300, 3410, 3470, 3450, 3410, 3350,
480 3280, 3200, 3120, 3050, 2900, 2630, 2500, 2325, 2190, 2100,
481 2060, 2055, 2055, 2055, 2067, 2085, 2000, 1900, 1835, 1770,
482 1720, 1700, 1695, 1695, 1695};
483 static const G4double sn_m_in[35] = {
484 1050, 1350, 1520, 1650, 1800, 1980, 2070, 2120, 2090, 2050,
485 1980, 1920, 1830, 1770, 1670, 1500, 1435, 1350, 1300, 1230,
486 1220, 1235, 1235, 1235, 1237, 1240, 1160, 1120, 1090, 1065,
487 1040, 1020, 1015, 1015, 1015};
488 static const G4double sn_p_t[35] = {
489 465, 800, 1200, 1760, 2170, 2480, 2730, 2885, 2970, 2980,
490 2970, 2890, 2840, 2790, 2620, 2450, 2335, 2205, 2080, 2020,
491 2010, 1990, 1990, 2015, 2030, 2045, 1980, 1890, 1835, 1770,
492 1720, 1700, 1695, 1695, 1695};
493 static const G4double sn_p_in[35] = {
494 315, 590, 880, 1220, 1460, 1580, 1700, 1770, 1810, 1810,
495 1800, 1730, 1680, 1630, 1530, 1400, 1335, 1270, 1210, 1180,
496 1190, 1190, 1190, 1205, 1210, 1210, 1150, 1115, 1090, 1065,
497 1040, 1020, 1015, 1015, 1015};
498 static const G4double w_m_t[35] = {
499 5200, 5115, 5025, 4975, 4900, 4850, 4780, 4725, 4600, 4490,
500 4355, 4255, 4125, 4040, 3830, 3580, 3330, 3110, 2955, 2860,
501 2852, 2845, 2885, 2900, 2915, 2940, 2800, 2660, 2570, 2490,
502 2460, 2425, 2420, 2420, 2420};
503 static const G4double w_m_in[35] = {
504 1450, 1850, 2100, 2350, 2550, 2700, 2825, 2900, 2850, 2750,
505 2630, 2525, 2400, 2300, 2200, 2070, 1880, 1770, 1715, 1680,
506 1680, 1680, 1685, 1690, 1700, 1720, 1635, 1560, 1530, 1460,
507 1440, 1410, 1410, 1410, 1410};
508 static const G4double w_p_t[35] = {
509 480, 900, 1500, 2350, 3020, 3420, 3650, 3775, 3875, 3830,
510 3750, 3700, 3630, 3550, 3550, 3290, 3070, 2890, 2840, 2730,
511 2725, 2720, 2770, 2805, 2828, 2865, 2770, 2640, 2570, 2490,
512 2460, 2425, 2420, 2420, 2420};
513 static const G4double w_p_in[35] = {
514 325, 680, 990, 1500, 1850, 2150, 2250, 2300, 2350, 2330,
515 2280, 2230, 2200, 2120, 2130, 1900, 1780, 1670, 1635, 1600,
516 1602, 1605, 1610, 1615, 1630, 1660, 1620, 1550, 1530, 1460,
517 1440, 1410, 1410, 1410, 1410};
518
519 static const G4double pb_m_t[35] = {
520 5890, 5700, 5610, 5580, 5550, 5480, 5400, 5300, 5100, 4930,
521 4750, 4600, 4400, 4280, 4170, 3915, 3650, 3470, 3260, 3150,
522 3120, 3070, 3085, 3100, 3120, 3160, 3070, 2930, 2820, 2750,
523 2710, 2655, 2640, 2640, 2640};
524 static const G4double pb_m_in[35] = {
525 1575, 2025, 2300, 2575, 2850, 3000, 3115, 3180, 3080, 2940,
526 2800, 2670, 2550, 2450, 2370, 2220, 2110, 2000, 1920, 1880,
527 1850, 1800, 1805, 1810, 1820, 1840, 1800, 1720, 1640, 1620,
528 1570, 1530, 1530, 1530, 1530};
529 static const G4double pb_p_t[35] = {
530 515, 940, 1500, 2400, 3270, 3750, 4050, 4140, 4260, 4200,
531 4080, 3990, 3990, 3810, 3730, 3520, 3370, 3186, 3110, 3010,
532 2990, 2985, 3005, 3020, 3040, 3080, 3020, 2905, 2790, 2750,
533 2710, 2655, 2640, 2640, 2640};
534 static const G4double pb_p_in[35] = {
535 348, 707, 1040, 1650, 2100, 2400, 2580, 2640, 2650, 2520,
536 2410, 2300, 2250, 2190, 2130, 2000, 1930, 1870, 1830, 1790,
537 1770, 1765, 1775, 1780, 1790, 1800, 1775, 1710, 1620, 1620,
538 1570, 1530, 1530, 1530, 1530};
539 static const G4double u_m_t[35] = {
540 7080, 6830, 6650, 6530, 6400, 6280, 6100, 5840, 5660, 5520,
541 5330, 5160, 4990, 4810, 4630, 4323, 4130, 3870, 3700, 3550,
542 3490, 3465, 3467, 3475, 3495, 3515, 3440, 3360, 3150, 3040,
543 2985, 2955, 2940, 2940, 2940};
544 static const G4double u_m_in[35] = {
545 1740, 2220, 2500, 2820, 3080, 3300, 3420, 3500, 3420, 3330,
546 3200, 3060, 2940, 2850, 2710, 2470, 2380, 2250, 2160, 2080,
547 2040, 2045, 2047, 2050, 2055, 2060, 2010, 1980, 1830, 1780,
548 1735, 1710, 1700, 1700, 1700};
549 static const G4double u_p_t[35] = {
550 485, 960, 1580, 2700, 3550, 4050, 4320, 4420, 4620, 4660,
551 4580, 4470, 4350, 4295, 4187, 3938, 3755, 3573, 3450, 3342,
552 3310, 3295, 3310, 3330, 3375, 3405, 3350, 3338, 3135, 3040,
553 2985, 2955, 2940, 2940, 2940};
554 static const G4double u_p_in[35] = {
555 334, 720, 1020, 1560, 2100, 2300, 2550, 2700, 2880, 2880,
556 2760, 2660, 2550, 2510, 2430, 2270, 2130, 2060, 2000, 1970,
557 1950, 1950, 1960, 1960, 1970, 1980, 1950, 1978, 1830, 1780,
558 1735, 1710, 1700, 1700, 1700};
559
560 AddDataSet("pi-",he_t, he_in, e1, 38);
561 AddDataSet("pi+",he_t, he_in, e1, 38);
562 AddDataSet("pi-",be_m_t, be_m_in, e1, 38);
563 AddDataSet("pi+",be_p_t, be_p_in, e1, 38);
564 AddDataSet("pi-",c_m_t, c_m_in, e2, 39);
565 AddDataSet("pi+",c_p_t, c_p_in, e2, 39);
566 AddDataSet("pi-",n_m_t, n_m_in, e2, 39);
567 AddDataSet("pi+",n_p_t, n_p_in, e2, 39);
568 AddDataSet("pi-",o_m_t, o_m_in, e3, 31);
569 AddDataSet("pi+",o_p_t, o_p_in, e3, 31);
570 AddDataSet("pi-",na_m_t, na_m_in, e3, 31);
571 AddDataSet("pi+",na_p_t, na_p_in, e3, 31);
572 AddDataSet("pi-",al_m_t, al_m_in, e3, 31);
573 AddDataSet("pi+",al_p_t, al_p_in, e3, 31);
574 AddDataSet("pi-",ca_m_t, ca_m_in, e3, 31);
575 AddDataSet("pi+",ca_p_t, ca_p_in, e3, 31);
576 AddDataSet("pi-",fe_m_t, fe_m_in, e4, 32);
577 AddDataSet("pi+",fe_p_t, fe_p_in, e4, 32);
578 AddDataSet("pi-",cu_m_t, cu_m_in, e4, 32);
579 AddDataSet("pi+",cu_p_t, cu_p_in, e4, 32);
580 AddDataSet("pi-",mo_m_t, mo_m_in, e5, 34);
581 AddDataSet("pi+",mo_p_t, mo_p_in, e5, 34);
582 AddDataSet("pi-",cd_m_t, cd_m_in, e5, 34);
583 AddDataSet("pi+",cd_p_t, cd_p_in, e5, 34);
584 AddDataSet("pi-",sn_m_t, sn_m_in, e6, 35);
585 AddDataSet("pi+",sn_p_t, sn_p_in, e6, 35);
586 AddDataSet("pi-",w_m_t, w_m_in, e6, 35);
587 AddDataSet("pi+",w_p_t, w_p_in, e6, 35);
588 AddDataSet("pi-",pb_m_t, pb_m_in, e6, 35);
589 AddDataSet("pi+",pb_p_t, pb_p_in, e6, 35);
590 AddDataSet("pi-",u_m_t, u_m_in, e6, 35);
591 AddDataSet("pi+",u_p_t, u_p_in, e6, 35);
592}
static const G4double be_m_in[44]
static const G4double ca_m_t[45]
static const G4double sn_p_in[48]
static const G4double sn_m_t[48]
static const G4double pb_m_t[46]
static const G4double u_m_in[46]
static const G4double cd_m_in[48]
static const G4double n_m_t[44]
static const G4double cu_m_t[47]
static const G4double al_m_in[45]
static const G4double cd_m_t[48]
static const G4double mo_m_in[47]
static const G4double na_m_t[44]
static const G4double cu_p_in[47]
static const G4double mo_m_t[47]
static const G4double w_p_in[48]
static const G4double na_m_in[44]
static const G4double e4[47]
static const G4double n_p_in[44]
static const G4double ca_p_in[45]
static const G4double fe_m_in[47]
static const G4double e1[44]
static const G4double e2[44]
static const G4double w_m_t[48]
static const G4double cd_p_in[48]
static const G4double na_p_in[44]
static const G4double e6[46]
static const G4double e3[45]
static const G4double c_m_t[44]
static const G4double c_m_in[44]
static const G4double o_p_in[44]
static const G4double al_p_in[45]
static const G4double be_m_t[44]
static const G4double fe_p_in[47]
static const G4double al_m_t[45]
static const G4double sn_m_in[48]
static const G4double fe_m_t[47]
static const G4double ca_m_in[45]
static const G4double o_m_t[44]
static const G4double pb_p_in[46]
static const G4double cu_m_in[47]
static const G4double o_m_in[44]
static const G4double mo_p_in[47]
static const G4double e5[48]
static const G4double n_m_in[44]
static const G4double be_p_in[44]
static const G4double w_m_in[48]
static const G4double u_p_in[46]
static const G4double pb_m_in[46]
static const G4double c_p_in[44]
static const G4double u_m_t[46]
void AddDataSet(const G4String &p, const G4double *tot, const G4double *in, const G4double *e, G4int n)

References AddDataSet(), al_m_in, al_m_t, al_p_in, be_m_in, be_m_t, be_p_in, c_m_in, c_m_t, c_p_in, ca_m_in, ca_m_t, ca_p_in, cd_m_in, cd_m_t, cd_p_in, cu_m_in, cu_m_t, cu_p_in, e1, e2, e3, e4, e5, e6, fe_m_in, fe_m_t, fe_p_in, mo_m_in, mo_m_t, mo_p_in, n_m_in, n_m_t, n_p_in, na_m_in, na_m_t, na_p_in, o_m_in, o_m_t, o_p_in, pb_m_in, pb_m_t, pb_p_in, sn_m_in, sn_m_t, sn_p_in, u_m_in, u_m_t, u_p_in, w_m_in, w_m_t, and w_p_in.

Referenced by BuildPhysicsTable().

◆ 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}
#define G4UniformRand()
Definition: Randomize.hh:52
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

◆ APower

G4double G4UPiNuclearCrossSection::APower = {0.0}
staticprivate

Definition at line 88 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable(), and Interpolate().

◆ aPower

G4double G4UPiNuclearCrossSection::aPower
private

Definition at line 95 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable(), and G4UPiNuclearCrossSection().

◆ elow

G4double G4UPiNuclearCrossSection::elow
private

Definition at line 96 of file G4UPiNuclearCrossSection.hh.

Referenced by G4UPiNuclearCrossSection(), and Interpolate().

◆ idxZ

G4int G4UPiNuclearCrossSection::idxZ = {0}
staticprivate

Definition at line 85 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable(), and Interpolate().

◆ isForAllAtomsAndEnergies

G4bool G4VCrossSectionDataSet::isForAllAtomsAndEnergies
privateinherited

◆ isMaster

G4bool G4UPiNuclearCrossSection::isMaster
private

◆ maxKinEnergy

G4double G4VCrossSectionDataSet::maxKinEnergy
privateinherited

◆ minKinEnergy

G4double G4VCrossSectionDataSet::minKinEnergy
privateinherited

◆ name

G4String G4VCrossSectionDataSet::name
protectedinherited

◆ NZ

const G4int G4UPiNuclearCrossSection::NZ = 16
staticprivate

Definition at line 83 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable().

◆ piMinus

const G4ParticleDefinition* G4UPiNuclearCrossSection::piMinus
private

◆ piMinusElastic

G4PhysicsTable * G4UPiNuclearCrossSection::piMinusElastic = nullptr
staticprivate

◆ piMinusInelastic

G4PhysicsTable * G4UPiNuclearCrossSection::piMinusInelastic = nullptr
staticprivate

◆ piPlus

const G4ParticleDefinition* G4UPiNuclearCrossSection::piPlus
private

◆ piPlusElastic

G4PhysicsTable * G4UPiNuclearCrossSection::piPlusElastic = nullptr
staticprivate

◆ piPlusInelastic

G4PhysicsTable * G4UPiNuclearCrossSection::piPlusInelastic = nullptr
staticprivate

◆ registry

G4CrossSectionDataSetRegistry* G4VCrossSectionDataSet::registry
privateinherited

◆ spline

G4bool G4UPiNuclearCrossSection::spline
private

Definition at line 99 of file G4UPiNuclearCrossSection.hh.

Referenced by AddDataSet(), and G4UPiNuclearCrossSection().

◆ theA

G4double G4UPiNuclearCrossSection::theA = {0.0}
staticprivate

Definition at line 87 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable(), and Interpolate().

◆ theZ

G4int G4UPiNuclearCrossSection::theZ
staticprivate
Initial value:
=
{2,4,6,7,8,11,13,20,26,29,42,48,50,74,82,92}

Definition at line 84 of file G4UPiNuclearCrossSection.hh.

Referenced by BuildPhysicsTable(), and Interpolate().

◆ 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: