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