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++) {
130 G4int Z = (
G4int) (*elementVector)[i]->GetZ();
139 G4double density = nAtomsPerVolume[i];
141 for (
G4int bin=0; bin<nOfBins; bin++) {
144 energies->push_back(e);
145 log_energies->push_back(std::log10(e));
150 for (
G4int n=0; n<nShells; n++) {
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)
197 for (
G4int n=0; n<nShells; n++) {
std::vector< G4Element * > G4ElementVector
G4DLLIMPORT 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
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()