77 theParam(spec),verbose(0)
94 std::vector<G4VEMDataSet*>* set =
new std::vector<G4VEMDataSet*>;
102 G4int nOfBins = energyVector.size();
108 for (
size_t mLocal=0; mLocal<numOfCouples; mLocal++) {
118 G4cout <<
"eIonisation CS for " << mLocal <<
"th material "
120 <<
" eEl= " << nElements <<
G4endl;
123 G4double tcut = (*energyCuts)[mLocal];
128 for (
G4int i=0; i<nElements; i++) {
139 G4double density = nAtomsPerVolume[i];
144 energies->push_back(e);
145 log_energies->push_back(std::log10(e));
153 value += cross * p * density;
155 if(
verbose>0 && mLocal == 0 && e>=1. && e<=0.)
157 G4cout <<
"G4eIonCrossSH: e(MeV)= " << e/
MeV
159 <<
" cross= " << cross
161 <<
" value= " << value
162 <<
" tcut(MeV)= " << tcut/
MeV
163 <<
" rho= " << density
169 if (value == 0.) value = 1e-300;
170 log_value = std::log10(value);
172 cs->push_back(value);
173 log_cs->push_back(log_value);
183 set->push_back(setForMat);
195 if(energy > cutEnergy)
virtual void AddComponent(G4VEMDataSet *dataSet)=0
G4double FindValue(G4int Z, G4double e) const
virtual G4VDataSetAlgorithm * Clone() const =0
static constexpr double MeV
const G4ElementVector * GetElementVector() const
static const G4double emax
virtual G4double Probability(G4int Z, G4double minKineticEnergy, G4double maxKineticEnergy, G4double kineticEnergy, G4int shell=0, const G4ParticleDefinition *pd=0) const =0
const G4String & GetName() const
const XML_Char int const XML_Char * value
G4VDataSetAlgorithm * interp
G4double GetCrossSectionAboveThresholdForElement(G4double energy, G4double cutEnergy, G4int Z)
const G4VEnergySpectrum * theParam
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)
size_t GetTableSize() const
G4eIonisationCrossSectionHandler(const G4VEnergySpectrum *spec, G4VDataSetAlgorithm *alg, G4double emin, G4double emax, G4int nbin)
static G4ProductionCutsTable * GetProductionCutsTable()
std::vector< G4Element * > G4ElementVector
std::vector< G4VEMDataSet * > * BuildCrossSectionsForMaterials(const G4DataVector &energyVector, const G4DataVector *energyCuts)
~G4eIonisationCrossSectionHandler()
G4int NumberOfComponents(G4int Z) const
G4GLOB_DLL std::ostream G4cout
const G4MaterialCutsCouple * GetMaterialCutsCouple(G4int i) const
const G4Material * GetMaterial() const
const G4double * GetAtomicNumDensityVector() const
size_t GetNumberOfElements() const