76 theParam(spec),verbose(0)
93 std::vector<G4VEMDataSet*>* set =
new std::vector<G4VEMDataSet*>;
101 G4int nOfBins = energyVector.size();
107 for (
size_t mLocal=0; mLocal<numOfCouples; mLocal++) {
117 G4cout <<
"eIonisation CS for " << mLocal <<
"th material "
119 <<
" eEl= " << nElements <<
G4endl;
122 G4double tcut = (*energyCuts)[mLocal];
127 for (
G4int i=0; i<nElements; i++) {
129 G4int Z = (
G4int) (*elementVector)[i]->GetZ();
138 G4double density = nAtomsPerVolume[i];
140 for (
G4int bin=0; bin<nOfBins; bin++) {
143 energies->push_back(e);
144 log_energies->push_back(std::log10(e));
149 for (
G4int n=0; n<nShells; n++) {
152 value += cross * p * density;
154 if(verbose>0 && mLocal == 0 && e>=1. && e<=0.)
156 G4cout <<
"G4eIonCrossSH: e(MeV)= " << e/MeV
158 <<
" cross= " << cross
160 <<
" value= " << value
161 <<
" tcut(MeV)= " << tcut/MeV
162 <<
" rho= " << density
168 if (value == 0.) value = 1e-300;
169 log_value = std::log10(value);
171 cs->push_back(value);
172 log_cs->push_back(log_value);
182 set->push_back(setForMat);
194 if(energy > cutEnergy)
196 for (
G4int n=0; n<nShells; n++) {
std::vector< G4Element * > G4ElementVector
G4GLOB_DLL std::ostream G4cout
const G4Material * GetMaterial() const
const G4ElementVector * GetElementVector() const
size_t GetNumberOfElements() const
const G4double * GetAtomicNumDensityVector() const
const G4String & GetName() const
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
std::size_t GetTableSize() const
static G4ProductionCutsTable * GetProductionCutsTable()
G4double FindValue(G4int Z, G4double e) const
G4int NumberOfComponents(G4int Z) const
void Initialise(G4VDataSetAlgorithm *interpolation=0, G4double minE=250 *CLHEP::eV, G4double maxE=100 *CLHEP::GeV, G4int numberOfBins=200, G4double unitE=CLHEP::MeV, G4double unitData=CLHEP::barn, G4int minZ=1, G4int maxZ=99)
virtual G4VDataSetAlgorithm * Clone() const =0
virtual void AddComponent(G4VEMDataSet *dataSet)=0
virtual G4double Probability(G4int Z, G4double minKineticEnergy, G4double maxKineticEnergy, G4double kineticEnergy, G4int shell=0, const G4ParticleDefinition *pd=0) const =0
G4double GetCrossSectionAboveThresholdForElement(G4double energy, G4double cutEnergy, G4int Z)
G4eIonisationCrossSectionHandler(const G4VEnergySpectrum *spec, G4VDataSetAlgorithm *alg, G4double emin, G4double emax, G4int nbin)
std::vector< G4VEMDataSet * > * BuildCrossSectionsForMaterials(const G4DataVector &energyVector, const G4DataVector *energyCuts)
~G4eIonisationCrossSectionHandler()