50 verboseLevel(0),name(nam),minKinEnergy(0.0),
52 isForAllAtomsAndEnergies(false)
101 for (std::size_t j=0; j<nIso; ++j) {
105 fact += abundVector[j];
109 return (fact > 0.0) ? xsec/fact : 0.0;
123 for (std::size_t j=0; j<nIso; ++j) {
126 xsec += abundVector[j]*
138 ed <<
"GetElementCrossSection is not implemented in <" <<
name <<
">\n"
141 if(
nullptr != mat) { ed <<
" material: " << mat->
GetName(); }
142 ed <<
" target Z= " <<
Z <<
G4endl;
143 G4Exception(
"G4VCrossSectionDataSet::GetElementCrossSection",
"had001",
156 ed <<
"GetIsoCrossSection is not implemented in <" <<
name <<
">\n"
159 if(
nullptr != mat) { ed <<
" material: " << mat->
GetName(); }
160 if(
nullptr != elm) { ed <<
" element: " << elm->
GetName(); }
161 ed <<
" target Z= " <<
Z <<
" A= " <<
A <<
G4endl;
162 G4Exception(
"G4VCrossSectionDataSet::GetIsoCrossSection",
"had001",
176 ed <<
"GetIsoCrossSection is not implemented in <" <<
name <<
">\n"
178 <<
" Ekin(MeV)= " << kinEnergy/CLHEP::MeV;
179 if(
nullptr != mat) { ed <<
" material: " << mat->
GetName(); }
180 if(
nullptr != elm) { ed <<
" element: " << elm->
GetName(); }
181 ed <<
" target Z= " <<
Z <<
" A= " <<
A <<
G4endl;
182 G4Exception(
"G4VCrossSectionDataSet::GetIsoCrossSection",
"had001",
199 for (
G4int j=0; j<nIso; ++j) {
200 sum += abundVector[j];
218 outFile <<
"The description for this cross section data set has not been written yet.\n";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
std::vector< G4Isotope * > G4IsotopeVector
void DeRegister(G4VCrossSectionDataSet *)
void Register(G4VCrossSectionDataSet *)
static G4CrossSectionDataSetRegistry * Instance()
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double * GetRelativeAbundanceVector() const
const G4Isotope * GetIsotope(G4int iso) const
size_t GetNumberOfIsotopes() const
const G4String & GetName() const
G4IsotopeVector * GetIsotopeVector() const
const G4String & GetName() const
const G4String & GetParticleName() const
G4VCrossSectionDataSet(const G4String &nam="")
virtual G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, 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 ~G4VCrossSectionDataSet()
virtual G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual void DumpPhysicsTable(const G4ParticleDefinition &)
virtual G4double ComputeCrossSectionPerElement(G4double kinEnergy, G4double loge, const G4ParticleDefinition *, const G4Element *, const G4Material *mat=nullptr)
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
virtual G4bool IsIsoApplicable(const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
virtual void CrossSectionDescription(std::ostream &) const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual G4bool IsElementApplicable(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
virtual const G4Isotope * SelectIsotope(const G4Element *, G4double kinEnergy, G4double logE)