45   numberOfEnergyPoints(nPointsE),numberOfShells(nShells),softCrossSections(0),
 
   46   hardCrossSections(0),shellCrossSections(0),shellNormalizedCrossSections(0)
 
   49   if (!numberOfEnergyPoints)
 
   52       ed << 
"G4PenelopeCrossSection: invalid number of energy points " << 
G4endl;
 
   53       G4Exception(
"G4PenelopeCrossSection::G4PenelopeCrossSection()",
 
   67   for (
size_t i=0;i<3;i++)
 
   78   for (
size_t i=0;i<3;i++)
 
   88       for (
size_t i=0;i<numberOfShells;i++) 
 
  100   if (shellCrossSections)
 
  103       delete shellCrossSections;      
 
  105   if (shellNormalizedCrossSections)
 
  108       delete shellNormalizedCrossSections;
 
  110   if (softCrossSections)
 
  113       delete softCrossSections;
 
  115   if (hardCrossSections)
 
  118       delete hardCrossSections;
 
  129   if (!softCrossSections || !hardCrossSections)
 
  131       G4cout << 
"Something wrong in G4PenelopeCrossSection::AddCrossSectionPoint" <<
 
  133       G4cout << 
"Trying to fill un-initialized tables" << 
G4endl;
 
  140   if (binNumber >= numberOfEnergyPoints)
 
  142       G4cout << 
"Something wrong in G4PenelopeCrossSection::AddCrossSectionPoint" <<
 
  144       G4cout << 
"Trying to register more points than originally declared" << 
G4endl;
 
  151    theVector->
PutValue(binNumber,logEne,val);
 
  156    theVector->
PutValue(binNumber,logEne,val);
 
  161    theVector->
PutValue(binNumber,logEne,val);
 
  165    val =  std::log(
std::max(XH0,1e-42*cm2)); 
 
  166    theVector->
PutValue(binNumber,logEne,val);
 
  171    theVector->
PutValue(binNumber,logEne,val);
 
  176    theVector->
PutValue(binNumber,logEne,val);
 
  188   if (!shellCrossSections)
 
  190       G4cout << 
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
 
  192       G4cout << 
"Trying to fill un-initialized table" << 
G4endl;
 
  196   if (shellID >= numberOfShells)
 
  198       G4cout << 
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
 
  200       G4cout << 
"Trying to fill shell #" << shellID << 
" while the maximum is "  
  201          <<  numberOfShells-1 << 
G4endl;      
 
  208   if (binNumber >= numberOfEnergyPoints)
 
  210       G4cout << 
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
 
  212       G4cout << 
"Trying to register more points than originally declared" << 
G4endl;
 
  217    theVector->
PutValue(binNumber,logEne,val);
 
  228   if (!softCrossSections || !hardCrossSections)
 
  230       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
 
  232       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  240       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
 
  242       G4cout << 
"Soft cross section table looks not filled" << 
G4endl;
 
  253       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
 
  255       G4cout << 
"Hard cross section table looks not filled" << 
G4endl;
 
  258   logXS = theVector->
Value(logene);
 
  261   result = hardXS + softXS;
 
  272   if (!hardCrossSections)
 
  274       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetHardCrossSection" <<
 
  276       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  283       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetHardCrossSection" <<
 
  285       G4cout << 
"Hard cross section table looks not filled" << 
G4endl;
 
  290   result = std::exp(logXS);
 
  302   if (!softCrossSections)
 
  304       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetSoftStoppingPower" <<
 
  306       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  313       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetSoftStoppingPower" <<
 
  315       G4cout << 
"Soft cross section table looks not filled" << 
G4endl;
 
  320   result = std::exp(logXS);
 
  330   if (!shellCrossSections)
 
  332       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  334       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  337   if (shellID >= numberOfShells)
 
  339       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  341       G4cout << 
"Trying to retrieve shell #" << shellID << 
" while the maximum is "  
  342          <<  numberOfShells-1 << 
G4endl;  
 
  350       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  352       G4cout << 
"Shell cross section table looks not filled" << 
G4endl;
 
  357   result = std::exp(logXS);
 
  366   if (!shellNormalizedCrossSections)
 
  368       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  370       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  376       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" << 
G4endl;
 
  377       G4cout << 
"The table of normalized cross section is not initialized" << 
G4endl;
 
  381   if (shellID >= numberOfShells)
 
  383       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  385       G4cout << 
"Trying to retrieve shell #" << shellID << 
" while the maximum is "  
  386          <<  numberOfShells-1 << 
G4endl;  
 
  395       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  397       G4cout << 
"Shell cross section table looks not filled" << 
G4endl;
 
  402   result = std::exp(logXS);
 
  415       G4cout << 
"G4PenelopeCrossSection::NormalizeShellCrossSections()" << 
G4endl;
 
  420   if (!shellNormalizedCrossSections)
 
  422       G4cout << 
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
 
  424       G4cout << 
"Trying to retrieve from un-initialized tables" << 
G4endl;
 
  428   for (
size_t i=0;i<numberOfEnergyPoints;i++) 
 
  435       for (
size_t shellID=0;shellID<numberOfShells;shellID++)
 
  440       normFactor += std::exp((*theVec)[i]);
 
  442       G4double logNormFactor = std::log(normFactor);
 
  444       for (
size_t shellID=0;shellID<numberOfShells;shellID++)
 
  450      G4double previousValue = (*theFullVec)[i]; 
 
  453      theVec->
PutValue(i,logEnergy,previousValue-logNormFactor); 
 
void PutValue(size_t binNumber, G4double binValue, G4double dataValue)
 
G4double GetSoftStoppingPower(G4double energy) const 
Returns the total stopping power due to soft collisions. 
 
std::ostringstream G4ExceptionDescription
 
~G4PenelopeCrossSection()
 
void push_back(G4PhysicsVector *)
 
void AddShellCrossSectionPoint(size_t binNumber, size_t shellID, G4double energy, G4double xs)
 
G4double G4NeutronHPJENDLHEData::G4double result
 
G4double GetHardCrossSection(G4double energy) const 
Returns hard cross section at the given energy. 
 
size_t GetVectorLength() const 
 
G4double GetLowEdgeEnergy(size_t binNumber) const 
 
void AddCrossSectionPoint(size_t binNumber, G4double energy, G4double XH0, G4double XH1, G4double XH2, G4double XS0, G4double XS1, G4double XS2)
 
G4GLOB_DLL std::ostream G4cout
 
G4double GetTotalCrossSection(G4double energy) const 
Returns total cross section at the given energy. 
 
G4double Value(G4double theEnergy, size_t &lastidx) const 
 
G4PenelopeCrossSection(size_t nOfEnergyPoints, size_t nOfShells=0)
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
T max(const T t1, const T t2)
brief Return the largest of the two arguments 
 
void NormalizeShellCrossSections()
 
G4double GetNormalizedShellCrossSection(size_t shellID, G4double energy) const 
Returns the hard cross section for the given shell (normalized to 1) 
 
G4double GetShellCrossSection(size_t shellID, G4double energy) const 
Returns the hard cross section for the given shell (per molecule)