#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 | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr) |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr) |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr) |
|
virtual G4double | 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 const G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy, G4double logE) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
virtual G4int | GetVerboseLevel () const |
|
virtual void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
bool | ForAllAtomsAndEnergies () const |
|
void | SetForAllAtomsAndEnergies (G4bool val) |
|
const G4String & | GetName () const |
|
Definition at line 45 of file G4UPiNuclearCrossSection.hh.
◆ G4UPiNuclearCrossSection()
G4UPiNuclearCrossSection::G4UPiNuclearCrossSection |
( |
| ) |
|
|
explicit |
Definition at line 61 of file G4UPiNuclearCrossSection.cc.
63{
64 isMaster = false;
67
68 aPower = 0.75;
69 elow = 20.0*CLHEP::MeV;
70}
static G4PionMinus * PionMinus()
static G4PionPlus * PionPlus()
◆ ~G4UPiNuclearCrossSection()
G4UPiNuclearCrossSection::~G4UPiNuclearCrossSection |
( |
| ) |
|
|
override |
Definition at line 72 of file G4UPiNuclearCrossSection.cc.
73{
74 if(isMaster) {
75 if(piPlusElastic) {
77 delete piPlusElastic;
78 piPlusElastic = nullptr;
79 }
80 if(piPlusInelastic) {
82 delete piPlusInelastic;
83 piPlusInelastic = nullptr;
84 }
85 if(piMinusElastic) {
87 delete piMinusElastic;
88 piMinusElastic = nullptr;
89 }
90 if(piMinusInelastic) {
92 delete piMinusInelastic;
93 piMinusInelastic = nullptr;
94 }
95 }
96}
◆ BuildPhysicsTable()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 169 of file G4UPiNuclearCrossSection.cc.
170{
171
172
173 if(piPlusElastic) { return; }
174
175 if(&p != piPlus && &p != piMinus) {
177 ed << "This cross section is applicable only to pions and not to "
179 G4Exception(
"G4UPiNuclearCrossSection::BuildPhysicsTable",
"had001",
181 return;
182 }
183
184 if(!piPlusElastic) {
185#ifdef G4MULTITHREADED
187 if(!piPlusElastic) {
188#endif
189 isMaster = true;
190#ifdef G4MULTITHREADED
191 }
193#endif
194 }
195 if(!isMaster) { return; }
196
199 for(
G4int i=0; i<NZ; ++i) {
201 }
202 for(
G4int i=1; i<93; ++i) {
204 }
206 for(
G4int i=3; i<93; ++i) {
207 if(theZ[idx] == i) {
208 idxZ[i] = -idx;
209 ++idx;
210 } else {
211 idxZ[i] = idx;
212 }
213 }
214
219
220 LoadData();
221
222}
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 590 of file G4UPiNuclearCrossSection.cc.
591{
592 outFile << "G4UPiNuclearCrossSection calculates the total, elastic and\n"
593 << "inelastic cross sections for pion scattering from nuclei\n"
594 << "heavier than hydrogen. It is based on the Barashenkov\n"
595 << "parameterization and is valid for all incident energies.\n";
596}
◆ DumpPhysicsTable()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 154 of file G4UPiNuclearCrossSection.cc.
155{
156 if(&p == piPlus) {
157 G4cout <<
"### G4UPiNuclearCrossSection Elastic data for pi+" <<
G4endl;
159 G4cout <<
"### G4UPiNuclearCrossSection Inelastic data for pi+" <<
G4endl;
161 } else if(&p == piMinus) {
162 G4cout <<
"### G4UPiNuclearCrossSection Elastic data for pi-" <<
G4endl;
164 G4cout <<
"### G4UPiNuclearCrossSection Inelastic data for pi-" <<
G4endl;
166 }
167}
G4GLOB_DLL std::ostream G4cout
◆ GetElasticCrossSection()
◆ GetInelasticCrossSection()
◆ IsElementApplicable()
The documentation for this class was generated from the following files: