46 numberOfEnergyPoints(nPointsE),numberOfShells(nShells),softCrossSections(0),
47 hardCrossSections(0),shellCrossSections(0),shellNormalizedCrossSections(0)
53 ed <<
"G4PenelopeCrossSection: invalid number of energy points " <<
G4endl;
54 G4Exception(
"G4PenelopeCrossSection::G4PenelopeCrossSection()",
68 for (
size_t i=0;i<3;i++)
79 for (
size_t i=0;i<3;i++)
132 G4cout <<
"Something wrong in G4PenelopeCrossSection::AddCrossSectionPoint" <<
134 G4cout <<
"Trying to fill un-initialized tables" <<
G4endl;
143 G4cout <<
"Something wrong in G4PenelopeCrossSection::AddCrossSectionPoint" <<
145 G4cout <<
"Trying to register more points than originally declared" <<
G4endl;
152 theVector->
PutValue(binNumber,logEne,val);
157 theVector->
PutValue(binNumber,logEne,val);
162 theVector->
PutValue(binNumber,logEne,val);
167 theVector->
PutValue(binNumber,logEne,val);
172 theVector->
PutValue(binNumber,logEne,val);
177 theVector->
PutValue(binNumber,logEne,val);
191 G4cout <<
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
193 G4cout <<
"Trying to fill un-initialized table" <<
G4endl;
199 G4cout <<
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
201 G4cout <<
"Trying to fill shell #" << shellID <<
" while the maximum is "
211 G4cout <<
"Something wrong in G4PenelopeCrossSection::AddShellCrossSectionPoint" <<
213 G4cout <<
"Trying to register more points than originally declared" <<
G4endl;
218 theVector->
PutValue(binNumber,logEne,val);
231 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
233 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
241 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
243 G4cout <<
"Soft cross section table looks not filled" <<
G4endl;
254 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetTotalCrossSection" <<
256 G4cout <<
"Hard cross section table looks not filled" <<
G4endl;
259 logXS = theVector->
Value(logene);
262 result = hardXS + softXS;
275 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetHardCrossSection" <<
277 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
284 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetHardCrossSection" <<
286 G4cout <<
"Hard cross section table looks not filled" <<
G4endl;
291 result =
G4Exp(logXS);
305 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetSoftStoppingPower" <<
307 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
314 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetSoftStoppingPower" <<
316 G4cout <<
"Soft cross section table looks not filled" <<
G4endl;
321 result =
G4Exp(logXS);
333 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
335 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
340 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
342 G4cout <<
"Trying to retrieve shell #" << shellID <<
" while the maximum is "
351 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
353 G4cout <<
"Shell cross section table looks not filled" <<
G4endl;
358 result =
G4Exp(logXS);
369 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
371 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
377 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
G4endl;
378 G4cout <<
"The table of normalized cross section is not initialized" <<
G4endl;
384 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
386 G4cout <<
"Trying to retrieve shell #" << shellID <<
" while the maximum is "
396 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
398 G4cout <<
"Shell cross section table looks not filled" <<
G4endl;
403 result =
G4Exp(logXS);
416 G4cout <<
"G4PenelopeCrossSection::NormalizeShellCrossSections()" <<
G4endl;
423 G4cout <<
"Something wrong in G4PenelopeCrossSection::GetShellCrossSection" <<
425 G4cout <<
"Trying to retrieve from un-initialized tables" <<
G4endl;
441 normFactor +=
G4Exp((*theVec)[i]);
443 G4double logNormFactor = std::log(normFactor);
451 G4double previousValue = (*theFullVec)[i];
454 theVec->
PutValue(i,logEnergy,previousValue-logNormFactor);
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
std::ostringstream G4ExceptionDescription
G4double GetLowEdgeEnergy(size_t binNumber) const
G4PhysicsTable * softCrossSections
G4double GetTotalCrossSection(G4double energy) const
Returns total cross section at the given energy.
G4PhysicsTable * shellCrossSections
G4PenelopeCrossSection(size_t nOfEnergyPoints, size_t nOfShells=0)
G4double Value(G4double theEnergy, size_t &lastidx) const
void AddShellCrossSectionPoint(size_t binNumber, size_t shellID, G4double energy, G4double xs)
G4double GetShellCrossSection(size_t shellID, G4double energy) const
Returns the hard cross section for the given shell (per molecule)
G4PhysicsTable * shellNormalizedCrossSections
G4PhysicsTable * hardCrossSections
static constexpr double cm2
void AddCrossSectionPoint(size_t binNumber, G4double energy, G4double XH0, G4double XH1, G4double XH2, G4double XS0, G4double XS1, G4double XS2)
static constexpr double eV
void NormalizeShellCrossSections()
G4double G4ParticleHPJENDLHEData::G4double result
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
void push_back(G4PhysicsVector *)
G4double GetNormalizedShellCrossSection(size_t shellID, G4double energy) const
Returns the hard cross section for the given shell (normalized to 1)
G4GLOB_DLL std::ostream G4cout
void PutValue(size_t index, G4double energy, G4double dataValue)
G4double GetHardCrossSection(G4double energy) const
Returns hard cross section at the given energy.
G4double GetSoftStoppingPower(G4double energy) const
Returns the total stopping power due to soft collisions.
~G4PenelopeCrossSection()
size_t numberOfEnergyPoints
size_t GetVectorLength() const