#include <G4PenelopeIonisationCrossSection.hh>
|
| G4PenelopeIonisationCrossSection () |
| Constructor. More...
|
|
| ~G4PenelopeIonisationCrossSection () |
| Destructor. Clean all tables. More...
|
|
std::vector< G4double > | GetCrossSection (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat) |
|
G4double | CrossSection (G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass, const G4Material *mat) |
|
std::vector< G4double > | Probabilities (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat) |
|
void | SetVerbosityLevel (G4int vl) |
| Getter/setter for the verbosity level. More...
|
|
G4int | GetVerbosityLevel () |
|
| G4VhShellCrossSection (const G4String &xname="") |
|
virtual | ~G4VhShellCrossSection () |
|
G4int | SelectRandomShell (G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat) |
|
virtual void | SetTotalCS (G4double) |
|
const G4String & | GetName () const |
|
◆ G4PenelopeIonisationCrossSection() [1/2]
G4PenelopeIonisationCrossSection::G4PenelopeIonisationCrossSection |
( |
| ) |
|
Constructor.
NOTICE: working only for e- at the moment (no interface available for e+)
Definition at line 46 of file G4PenelopeIonisationCrossSection.cc.
G4double fHighEnergyLimit
G4VhShellCrossSection(const G4String &xname="")
static G4PenelopeOscillatorManager * GetOscillatorManager()
std::map< std::pair< const G4Material *, G4int >, G4DataVector * > * shellIDTable
const G4AtomicTransitionManager * transitionManager
G4PenelopeOscillatorManager * oscManager
static G4AtomicTransitionManager * Instance()
G4PenelopeIonisationXSHandler * theCrossSectionHandler
◆ ~G4PenelopeIonisationCrossSection()
G4PenelopeIonisationCrossSection::~G4PenelopeIonisationCrossSection |
( |
| ) |
|
◆ G4PenelopeIonisationCrossSection() [2/2]
◆ CrossSection()
Purely virtual method from the base interface. Returns the cross section for the given shell in the element Z of material mat at the specified energy
Implements G4VhShellCrossSection.
Definition at line 75 of file G4PenelopeIonisationCrossSection.cc.
82 G4cout <<
"Entering in method G4PenelopeIonisationCrossSection::CrossSection()" <<
G4endl;
91 ed <<
"The method has been called with a NULL G4Material pointer" <<
G4endl;
92 G4Exception(
"G4PenelopeIonisationCrossSection::CrossSection()",
"em2042",
104 if(
G4int(shell) < nmax &&
128 ed <<
"There is something wrong here: it looks like the index is wrong" <<
G4endl;
129 ed <<
"Requested: shell " <<
G4int(shell) <<
" and Z = " <<
Z <<
G4endl;
131 G4Exception(
"G4PenelopeIonisationCrossSection::CrossSection()",
"em2043",
143 cross = crossPerMolecule/atomsPerMolec;
148 G4cout <<
"Cross section of shell " <<
G4int(shell) <<
" and Z= " <<
Z;
149 G4cout <<
" of material: " <<
material->GetName() <<
" and energy = " << incidentEnergy/
keV <<
" keV" <<
G4endl;
155 G4cout <<
"Cross section per molecule: " << crossPerMolecule/
barn <<
" barn" <<
G4endl;
156 G4cout <<
"Atoms " << Z <<
" per molecule: " << atomsPerMolec <<
G4endl;
G4double fHighEnergyLimit
G4double GetIonisationEnergy()
std::ostringstream G4ExceptionDescription
G4double GetShellCrossSection(size_t shellID, G4double energy) const
Returns the hard cross section for the given shell (per molecule)
G4PenelopeOscillator * GetOscillatorIonisation(const G4Material *, G4int)
G4double GetResonanceEnergy() const
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
const G4AtomicTransitionManager * transitionManager
static G4Electron * Electron()
G4PenelopeOscillatorManager * oscManager
G4double GetNumberOfZAtomsPerMolecule(const G4Material *, G4int Z)
G4int NumberOfShells(G4int Z) const
G4int FindShellIDIndex(const G4Material *mat, G4int Z, G4AtomicShellEnumerator shell)
G4PenelopeIonisationXSHandler * theCrossSectionHandler
◆ FindShellIDIndex()
The shells in Penelope are organized per material, rather than per element, so given a material one has to find the proper index for the given Z and shellID. An appropriate look-up table is used to avoid recalculation.
Definition at line 202 of file G4PenelopeIonisationCrossSection.cc.
207 G4cout <<
"Entering in method G4PenelopeIonisationCrossSection::FindShellIDIndex()" <<
G4endl;
212 std::pair<const G4Material*,G4int> theKey = std::make_pair(mat,
Z);
220 G4DataVector* theVec =
shellIDTable->find(theKey)->second;
222 if (ishell>=0 && ishell < (
G4int) theVec->size())
223 result = (
G4int) (*theVec)[ishell];
227 ed <<
"Shell ID: " << ishell <<
" not available for material " << mat->
GetName() <<
" and Z = " <<
240 size_t numberOfOscillators = theTable->size();
244 G4DataVector* dat =
new G4DataVector(
nMaxLevels,-1);
245 for (
size_t iosc=0;iosc<numberOfOscillators;iosc++)
256 if ((shFlag-1) == ishell)
257 result = (
G4int) iosc;
264 G4cout <<
"Leaving method G4PenelopeIonisationCrossSection::FindShellIDIndex() with index = " << result <<
G4endl;
G4PenelopeOscillatorTable * GetOscillatorTableIonisation(const G4Material *)
std::ostringstream G4ExceptionDescription
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
std::map< std::pair< const G4Material *, G4int >, G4DataVector * > * shellIDTable
std::vector< G4PenelopeOscillator * > G4PenelopeOscillatorTable
G4PenelopeOscillatorManager * oscManager
const G4String & GetName() const
◆ GetCrossSection()
Purely virtual method from the base interface. Returns the cross section for all levels of element Z in material mat at the given energy
Implements G4VhShellCrossSection.
Definition at line 166 of file G4PenelopeIonisationCrossSection.cc.
172 std::vector<G4double> vec(nmax,0.0);
const G4AtomicTransitionManager * transitionManager
G4double CrossSection(G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass, const G4Material *mat)
G4int NumberOfShells(G4int Z) const
◆ GetVerbosityLevel()
G4int G4PenelopeIonisationCrossSection::GetVerbosityLevel |
( |
| ) |
|
|
inline |
◆ operator=()
◆ Probabilities()
Purely virtual method from the base interface. Returns the shell ionisation probabilities for the given Z in the material mat at the specified energy.
Implements G4VhShellCrossSection.
Definition at line 182 of file G4PenelopeIonisationCrossSection.cc.
189 size_t n = vec.size();
192 for(i=0; i<
n; ++i) { sum += vec[i]; }
195 for(i=0; i<
n; ++i) { vec[i] = vec[i]*sum; }
std::vector< G4double > GetCrossSection(G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)
◆ SetVerbosityLevel()
void G4PenelopeIonisationCrossSection::SetVerbosityLevel |
( |
G4int |
vl | ) |
|
|
inline |
◆ fHighEnergyLimit
G4double G4PenelopeIonisationCrossSection::fHighEnergyLimit |
|
private |
◆ fLowEnergyLimit
G4double G4PenelopeIonisationCrossSection::fLowEnergyLimit |
|
private |
◆ nMaxLevels
G4int G4PenelopeIonisationCrossSection::nMaxLevels |
|
private |
◆ oscManager
◆ shellIDTable
◆ theCrossSectionHandler
G4PenelopeIonisationXSHandler* G4PenelopeIonisationCrossSection::theCrossSectionHandler |
|
private |
◆ transitionManager
◆ verboseLevel
G4int G4PenelopeIonisationCrossSection::verboseLevel |
|
private |
The documentation for this class was generated from the following files: