48   theCrossSectionHandler(0)
 
   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;
 
  165 std::vector<G4double> 
 
  172   std::vector<G4double> vec(nmax,0.0); 
 
  181 std::vector<G4double> 
 
  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; }
 
  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;
 
std::vector< G4double > Probabilities(G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)
Purely virtual method from the base interface. Returns the shell ionisation probabilities for the giv...
 
G4double fHighEnergyLimit
 
G4PenelopeOscillatorTable * GetOscillatorTableIonisation(const G4Material *)
 
G4double GetIonisationEnergy()
 
G4PenelopeIonisationCrossSection()
Constructor. 
 
G4int NumberOfShells(G4int Z) const 
 
std::ostringstream G4ExceptionDescription
 
const G4String & GetName() const 
 
const G4PenelopeCrossSection * GetCrossSectionTableForCouple(const G4ParticleDefinition *, const G4Material *, const G4double cut) const 
Returns the table of cross sections for the given particle, given material and given cut as a G4Penel...
 
G4PenelopeOscillator * GetOscillatorIonisation(const G4Material *, G4int)
 
G4GLOB_DLL std::ostream G4cout
 
static G4PenelopeOscillatorManager * GetOscillatorManager()
 
G4double GetResonanceEnergy() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
std::map< std::pair< const G4Material *, G4int >, G4DataVector * > * shellIDTable
 
~G4PenelopeIonisationCrossSection()
Destructor. Clean all tables. 
 
std::vector< G4PenelopeOscillator * > G4PenelopeOscillatorTable
 
std::vector< G4double > GetCrossSection(G4int Z, G4double incidentEnergy, G4double mass, G4double deltaEnergy, const G4Material *mat)
Purely virtual method from the base interface. Returns the cross section for all levels of element Z ...
 
T min(const T t1, const T t2)
brief Return the smallest of the two arguments 
 
const G4AtomicTransitionManager * transitionManager
 
static G4Electron * Electron()
 
void BuildXSTable(const G4Material *, G4double cut, const G4ParticleDefinition *, G4bool isMaster=true)
This can be inkoved only by the master. 
 
G4double CrossSection(G4int Z, G4AtomicShellEnumerator shell, G4double incidentEnergy, G4double mass, const G4Material *mat)
Purely virtual method from the base interface. Returns the cross section for the given shell in the e...
 
G4PenelopeOscillatorManager * oscManager
 
G4double GetNumberOfZAtomsPerMolecule(const G4Material *, G4int Z)
 
static G4AtomicTransitionManager * Instance()
 
G4double GetShellCrossSection(size_t shellID, G4double energy) const 
Returns the hard cross section for the given shell (per molecule) 
 
G4int FindShellIDIndex(const G4Material *mat, G4int Z, G4AtomicShellEnumerator shell)
The shells in Penelope are organized per material, rather than per element, so given a material one h...
 
G4PenelopeIonisationXSHandler * theCrossSectionHandler