76 theParam(spec),verbose(0)
95 std::vector<G4VEMDataSet*>* set =
new std::vector<G4VEMDataSet*>;
103 std::size_t nOfBins = energyVector.size();
109 for (
G4int mLocal=0; mLocal<numOfCouples; ++mLocal) {
119 G4cout <<
"eIonisation CS for " << mLocal <<
"th material "
121 <<
" eEl= " << nElements <<
G4endl;
124 G4double tcut = (*energyCuts)[mLocal];
129 for (
G4int i=0; i<nElements; ++i) {
140 G4double density = nAtomsPerVolume[i];
142 for (std::size_t bin=0; bin<nOfBins; ++bin) {
145 energies->push_back(e);
146 log_energies->push_back(std::log10(e));
151 for (
G4int n=0; n<nShells; n++) {
154 value += cross * p * density;
156 if(verbose>0 && mLocal == 0 && e>=1. && e<=0.)
158 G4cout <<
"G4eIonCrossSH: e(MeV)= " << e/MeV
160 <<
" cross= " << cross
162 <<
" value= " << value
163 <<
" tcut(MeV)= " << tcut/MeV
164 <<
" 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);
180 set->push_back(setForMat);
194 if(energy > cutEnergy)
196 for (
G4int n=0; n<nShells; ++n) {
std::vector< const 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=nullptr, 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=nullptr) 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) override
~G4eIonisationCrossSectionHandler()