62 , currentMaterial(nullptr)
63 , matParticle(nullptr)
65 , matCrossSection(0.0)
95 for(
G4int i=0; i<nElements; ++i) {
123 for(
size_t i=0; i<nElements; ++i) {
144 return dataSetList[i]->GetElementCrossSection(part,
Z, mat);
155 for(
size_t j = 0; j < nIso; ++j)
158 sigma += abundVector[j] *
179 if(
dataSetList[idx]->IsIsoApplicable(part,
Z,
A, elm, mat) ) {
180 return dataSetList[idx]->GetIsoCrossSection(part,
Z,
A, iso, elm, mat);
185 if (
dataSetList[j]->IsElementApplicable(part,
Z, mat)) {
186 return dataSetList[j]->GetElementCrossSection(part,
Z, mat);
187 }
else if (
dataSetList[j]->IsIsoApplicable(part,
Z,
A, elm, mat)) {
188 return dataSetList[j]->GetIsoCrossSection(part,
Z,
A, iso, elm, mat);
193 ed <<
"No isotope cross section found for "
195 <<
" off Element " << elm->
GetName()
196 <<
" in " << mat->
GetName() <<
" Z= " <<
Z <<
" A= " <<
A
198 G4Exception(
"G4CrossSectionDataStore::GetIsoCrossSection",
"had001",
213 if (
dataSetList[i]->IsIsoApplicable(part,
Z,
A, elm, mat) ) {
214 return dataSetList[i]->GetIsoCrossSection(part,
Z,
A, iso, elm, mat);
218 ed <<
"No isotope cross section found for "
220 <<
" off Element " << elm->
GetName()
221 <<
" in " << mat->
GetName() <<
" Z= " <<
Z <<
" A= " <<
A
223 G4Exception(
"G4CrossSectionDataStore::GetCrossSection",
"had001",
241 for(
size_t i=0; i<nElements; ++i) {
253 if (
dataSetList[i]->IsElementApplicable(part,
Z, mat)) {
284 for (j = 0; j<nIso; ++j) {
286 if(abundVector[j] > 0.0) {
288 xsec = abundVector[j]*
295 for (j = 0; j<nIso; ++j) {
314 ed <<
"No cross section is registered for "
316 G4Exception(
"G4CrossSectionDataStore::BuildPhysicsTable",
"had001",
334 G4cout <<
"WARNING - G4CrossSectionDataStore::DumpPhysicsTable: "
335 <<
" no data sets registered" <<
G4endl;
343 <<
" Cr_sctns: " << std::setw(25) <<
dataSetList[i]->GetName() <<
": "
347 if (
dataSetList[i]->GetName() ==
"G4CrossSectionPairGG") {
356 std::ofstream& outFile)
const
363 G4String physListName(std::getenv(
"G4PhysListName"));
367 outFile <<
" <li><b><a href=\"" << physListName <<
"_"
370 << elo <<
" GeV to " << ehi <<
" GeV </b></li>\n";
377 if (ehi < defaultHi) {
378 outFile <<
" <li><b><a href=\"" <<
dataSetList[0]->GetName() <<
".html\"> "
380 << ehi <<
" GeV to " << defaultHi <<
" GeV </b></li>\n";
389 G4String dirName(std::getenv(
"G4PhysListDocDir"));
390 G4String physListName(std::getenv(
"G4PhysListName"));
394 outCS.open(pathName);
397 outCS <<
"<title>Description of " << cs->
GetName()
399 outCS <<
"</head>\n";
404 outCS <<
"</body>\n";
405 outCS <<
"</html>\n";
415 return ch ==
' ' ?
'_' : ch;
445 std::vector< G4VCrossSectionDataSet* >::iterator it =
dataSetList.end() - i;
static const G4double e1[44]
static const G4double e2[44]
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
static constexpr double GeV
static constexpr double MeV
G4GLOB_DLL std::ostream G4cout
void DumpHtml(const G4ParticleDefinition &, std::ofstream &) const
G4String HtmlFileName(const G4String &in) const
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *, const G4Element *, const G4Material *aMaterial, G4int index)
void BuildPhysicsTable(const G4ParticleDefinition &)
void AddDataSet(G4VCrossSectionDataSet *)
std::vector< G4VCrossSectionDataSet * > dataSetList
const G4Material * currentMaterial
void PrintCrossSectionHtml(const G4VCrossSectionDataSet *cs) const
void DumpPhysicsTable(const G4ParticleDefinition &)
const G4ParticleDefinition * matParticle
~G4CrossSectionDataStore()
G4double ComputeCrossSection(const G4DynamicParticle *, const G4Material *)
std::vector< G4double > xseciso
G4double GetCrossSection(const G4DynamicParticle *, const G4Material *)
std::vector< G4double > xsecelm
G4CrossSectionDataStore()
const G4Element * SampleZandA(const G4DynamicParticle *, const G4Material *, G4Nucleus &target)
G4double GetLogKineticEnergy() const
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double * GetRelativeAbundanceVector() const
G4bool GetNaturalAbundanceFlag() const
const G4Isotope * GetIsotope(G4int iso) const
size_t GetNumberOfIsotopes() const
const G4String & GetName() const
const G4ElementVector * GetElementVector() const
const G4Element * GetElement(G4int iel) const
size_t GetNumberOfElements() const
const G4double * GetVecNbOfAtomsPerVolume() const
const G4String & GetName() const
void SetIsotope(const G4Isotope *iso)
const G4String & GetParticleName() const
bool ForAllAtomsAndEnergies() const
const G4String & GetName() const
virtual void CrossSectionDescription(std::ostream &) const