47 theCrossSectionHandler(0)
81 G4cout <<
"Entering in method G4PenelopeIonisationCrossSection::CrossSection()" <<
G4endl;
90 ed <<
"The method has been called with a null G4Material pointer" <<
G4endl;
91 G4Exception(
"G4PenelopeIonisationCrossSection::CrossSection()",
"em2042",
103 if(
G4int(shell) < nmax &&
127 ed <<
"There is something wrong here: it looks like the index is wrong" <<
G4endl;
128 ed <<
"Requested: shell " <<
G4int(shell) <<
" and Z = " << Z <<
G4endl;
130 G4Exception(
"G4PenelopeIonisationCrossSection::CrossSection()",
"em2043",
142 cross = crossPerMolecule/atomsPerMolec;
147 G4cout <<
"Cross section of shell " <<
G4int(shell) <<
" and Z= " <<
Z;
148 G4cout <<
" of material: " << material->
GetName() <<
" and energy = " << incidentEnergy/
keV <<
" keV" <<
G4endl;
154 G4cout <<
"Cross section per molecule: " << crossPerMolecule/
barn <<
" barn" <<
G4endl;
155 G4cout <<
"Atoms " << Z <<
" per molecule: " << atomsPerMolec <<
G4endl;
164 std::vector<G4double>
171 std::vector<G4double> vec(nmax,0.0);
180 std::vector<G4double>
188 size_t n = vec.size();
191 for(i=0; i<
n; ++i) { sum += vec[i]; }
194 for(i=0; i<
n; ++i) { vec[i] = vec[i]*
sum; }
206 G4cout <<
"Entering in method G4PenelopeIonisationCrossSection::FindShellIDIndex()" <<
G4endl;
211 std::pair<const G4Material*,G4int> theKey = std::make_pair(mat,Z);
219 G4DataVector* theVec =
shellIDTable->find(theKey)->second;
221 if (ishell>=0 && ishell < (
G4int) theVec->size())
222 result = (
G4int) (*theVec)[ishell];
226 ed <<
"Shell ID: " << ishell <<
" not available for material " << mat->
GetName() <<
" and Z = " <<
239 size_t numberOfOscillators = theTable->size();
243 G4DataVector* dat =
new G4DataVector(
nMaxLevels,-1);
244 for (
size_t iosc=0;iosc<numberOfOscillators;iosc++)
255 if ((shFlag-1) == ishell)
256 result = (
G4int) iosc;
263 G4cout <<
"Leaving method G4PenelopeIonisationCrossSection::FindShellIDIndex() with index = " << result <<
G4endl;