#include <G4UPiNuclearCrossSection.hh>
|
| G4UPiNuclearCrossSection () |
|
| ~G4UPiNuclearCrossSection () override |
|
G4bool | IsElementApplicable (const G4DynamicParticle *aParticle, G4int Z, const G4Material *) final |
|
G4double | GetElasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) const |
|
G4double | GetInelasticCrossSection (const G4DynamicParticle *aParticle, G4int Z, G4int A) const |
|
void | BuildPhysicsTable (const G4ParticleDefinition &) final |
|
void | DumpPhysicsTable (const G4ParticleDefinition &) final |
|
void | CrossSectionDescription (std::ostream &) const final |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr) |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr) |
|
virtual G4double | ComputeCrossSectionPerElement (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, const G4Element *, const G4Material *mat=nullptr) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr) |
|
virtual G4double | ComputeIsoCrossSection (G4double kinEnergy, G4double loge, const G4ParticleDefinition *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr) |
|
virtual const G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy, G4double logE) |
|
virtual void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
bool | ForAllAtomsAndEnergies () const |
|
void | SetForAllAtomsAndEnergies (G4bool val) |
|
const G4String & | GetName () const |
|
void | SetName (const G4String &nam) |
|
G4VCrossSectionDataSet & | operator= (const G4VCrossSectionDataSet &right)=delete |
|
| G4VCrossSectionDataSet (const G4VCrossSectionDataSet &)=delete |
|
Definition at line 45 of file G4UPiNuclearCrossSection.hh.
◆ G4UPiNuclearCrossSection()
G4UPiNuclearCrossSection::G4UPiNuclearCrossSection |
( |
| ) |
|
|
explicit |
Definition at line 61 of file G4UPiNuclearCrossSection.cc.
63{
64 isMaster = false;
65 spline = false;
66
69
70 aPower = 0.75;
71 elow = 20.0*CLHEP::MeV;
72}
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
G4VCrossSectionDataSet(const G4String &nam="")
◆ ~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 }
92 if(piMinusInelastic) {
94 delete piMinusInelastic;
95 piMinusInelastic = nullptr;
96 }
97 }
98}
◆ BuildPhysicsTable()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 173 of file G4UPiNuclearCrossSection.cc.
174{
175
176
177 if(piPlusElastic) { return; }
178
179 if(&p != piPlus && &p != piMinus) {
181 ed << "This cross section is applicable only to pions and not to "
183 G4Exception(
"G4UPiNuclearCrossSection::BuildPhysicsTable",
"had001",
185 return;
186 }
187
188 if(!piPlusElastic) {
189#ifdef G4MULTITHREADED
191 if(!piPlusElastic) {
192#endif
193 isMaster = true;
194#ifdef G4MULTITHREADED
195 }
197#endif
198 }
199 if(!isMaster) { return; }
200
203 for(
G4int i=0; i<NZ; ++i) {
205 }
206 for(
G4int i=1; i<93; ++i) {
208 }
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
226}
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
#define G4MUTEXLOCK(mutex)
#define G4MUTEXUNLOCK(mutex)
static G4NistManager * Instance()
G4double GetAtomicMassAmu(const G4String &symb) const
const G4String & GetParticleName() const
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
Referenced by G4BGGPionElasticXS::BuildPhysicsTable(), and G4BGGPionInelasticXS::BuildPhysicsTable().
◆ 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()
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
◆ GetElasticCrossSection()
◆ GetInelasticCrossSection()
◆ IsElementApplicable()
The documentation for this class was generated from the following files: