63 nDataSetList(0), verboseLevel(0)
97 for(
G4int i=0; i<nElements; ++i) {
126 dataSetList[i]->IsElementApplicable(part, Z, mat)) {
146 for (
G4int j = 0; j<nIso; ++j) {
147 if(abundVector[j] > 0.0) {
148 iso = (*isoVector)[j];
177 if(
dataSetList[idx]->IsIsoApplicable(part, Z, A, elm, mat) ) {
178 return dataSetList[idx]->GetIsoCrossSection(part, Z, A, iso, elm, mat);
183 if (
dataSetList[j]->IsElementApplicable(part, Z, mat)) {
184 return dataSetList[j]->GetElementCrossSection(part, Z, mat);
185 }
else if (
dataSetList[j]->IsIsoApplicable(part, Z, A, elm, mat)) {
186 return dataSetList[j]->GetIsoCrossSection(part, Z, A, iso, elm, mat);
190 G4cout <<
"G4CrossSectionDataStore::GetCrossSection ERROR: "
191 <<
" no isotope cross section found"
194 <<
" off Element " << elm->
GetName()
196 <<
" Z= " << Z <<
" A= " << A
199 " no applicable data set found for the isotope");
214 if (
dataSetList[i]->IsIsoApplicable(part, Z, A, elm, mat) ) {
215 return dataSetList[i]->GetIsoCrossSection(part, Z, A, iso, elm, mat);
218 G4cout <<
"G4CrossSectionDataStore::GetCrossSection ERROR: "
219 <<
" no isotope cross section found"
222 <<
" off Element " << elm->
GetName()
224 <<
" Z= " << Z <<
" A= " << A
227 " no applicable data set found for the isotope");
240 G4Element* anElement = (*theElementVector)[0];
247 for(
G4int i=0; i<nElements; ++i) {
249 anElement = (*theElementVector)[i];
259 if (
dataSetList[i]->IsElementApplicable(part, Z, mat)) {
268 <<
" has no isotopes " <<
G4endl;
270 " Isotope vector is not defined");
275 iso = (*isoVector)[0];
293 <<
" has no isotopes " <<
G4endl;
295 " Isotope vector is not defined");
301 iso = (*isoVector)[0];
308 for (
G4int j = 0; j<nIso; ++j) {
310 if(abundVector[j] > 0.0) {
311 iso = (*isoVector)[j];
312 xsec = abundVector[j]*
319 for (
G4int j = 0; j<nIso; ++j) {
321 iso = (*isoVector)[j];
339 "G4CrossSectionDataStore: no data sets registered");
356 G4cout <<
"WARNING - G4CrossSectionDataStore::DumpPhysicsTable: "
357 <<
" no data sets registered" <<
G4endl;
365 <<
" Cr_sctns: " << std::setw(25) <<
dataSetList[i]->GetName() <<
": "
369 if (
dataSetList[i]->GetName() ==
"G4CrossSectionPairGG") {
388 outFile <<
" <li><b><a href=\"" <<
dataSetList[i]->GetName() <<
".html\"> "
390 << elo <<
" GeV to " << ehi <<
" GeV </b></li>\n";
394 if (ehi < defaultHi) {
395 outFile <<
" <li><b><a href=\"" <<
dataSetList[0]->GetName() <<
".html\"> "
397 << ehi <<
" GeV to " << defaultHi <<
" GeV </b></li>\n";
size_t GetNumberOfIsotopes() const
void SetIsotope(const G4Isotope *iso)
G4bool GetNaturalAbundanceFlag() const
std::vector< G4Isotope * > G4IsotopeVector
std::vector< G4Element * > G4ElementVector
G4double GetKineticEnergy() const
const G4ParticleDefinition * matParticle
const G4String & GetName() const
G4ParticleDefinition * GetDefinition() const
void DumpHtml(const G4ParticleDefinition &, std::ofstream &)
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
const G4Material * elmMaterial
const G4ElementVector * GetElementVector() const
static G4NistManager * Instance()
const G4String & GetParticleName() const
const G4double * GetVecNbOfAtomsPerVolume() const
G4GLOB_DLL std::ostream G4cout
std::vector< G4double > xseciso
const G4ParticleDefinition * elmParticle
const G4Material * currentMaterial
~G4CrossSectionDataStore()
std::vector< G4VCrossSectionDataSet * > dataSetList
G4double GetCrossSection(const G4DynamicParticle *, const G4Material *)
G4double * GetRelativeAbundanceVector() const
const G4Element * currentElement
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *aMaterial, G4int index)
static const G4double A[nN]
void BuildPhysicsTable(const G4ParticleDefinition &)
G4IsotopeVector * GetIsotopeVector() const
void DumpPhysicsTable(const G4ParticleDefinition &)
std::vector< G4double > xsecelm
G4CrossSectionDataStore()
size_t GetNumberOfElements() const
G4Element * SampleZandA(const G4DynamicParticle *, const G4Material *, G4Nucleus &target)
const G4String & GetName() const