60#ifndef G4ICRU73QOModel_h
61#define G4ICRU73QOModel_h 1
128 inline void SetLowestKinEnergy(
const G4double val);
169 static const G4int NQOELEM = 26;
170 static const G4int NQODATA = 130;
171 static const G4int ZElementAvailable[NQOELEM];
175 static const G4int startElemIndex[NQOELEM];
176 static const G4int nbofShellsForElement[NQOELEM];
177 static const G4double ShellEnergy[NQODATA];
178 static const G4double SubShellOccupation[NQODATA];
191 static const G4double factorBethe[99];
202 chargeSquare = charge*charge;
203 massRate = mass/CLHEP::proton_mass_c2;
204 ratio = CLHEP::electron_mass_c2/mass;
209inline G4int G4ICRU73QOModel::GetNumberOfShells(
G4int Z)
const
213 if(indexZ[Z] >= 0) { nShell = nbofShellsForElement[indexZ[Z]];
222G4ICRU73QOModel::GetShellEnergy(
G4int Z,
G4int nbOfTheShell)
const
226 G4int idx = indexZ[Z];
228 if(idx >= 0) { shellEnergy = ShellEnergy[startElemIndex[idx] + nbOfTheShell]*CLHEP::eV;
229 }
else { shellEnergy = GetOscillatorEnergy(Z, nbOfTheShell); }
237G4ICRU73QOModel::GetShellStrength(
G4int Z,
G4int nbOfTheShell)
const
241 G4int idx = indexZ[Z];
243 if(idx >= 0) { shellStrength = SubShellOccupation[startElemIndex[idx] + nbOfTheShell] / Z;
246 return shellStrength;
251inline void G4ICRU73QOModel::SetLowestKinEnergy(
const G4double val)
253 lowestKinEnergy = val;
static G4int GetNumberOfElectrons(G4int Z, G4int SubshellNb)
static G4int GetNumberOfShells(G4int Z)
virtual ~G4ICRU73QOModel()
virtual G4double ComputeCrossSectionPerAtom(const G4ParticleDefinition *, G4double kineticEnergy, G4double Z, G4double A, G4double cutEnergy, G4double maxEnergy)
virtual void Initialise(const G4ParticleDefinition *, const G4DataVector &)
virtual G4double ComputeDEDXPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double)
virtual G4double MaxSecondaryEnergy(const G4ParticleDefinition *, G4double kinEnergy)
virtual G4double ComputeCrossSectionPerElectron(const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
virtual void SampleSecondaries(std::vector< G4DynamicParticle * > *, const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double tmin, G4double maxEnergy)
virtual G4double CrossSectionPerVolume(const G4Material *, const G4ParticleDefinition *, G4double kineticEnergy, G4double cutEnergy, G4double maxEnergy)
virtual void CorrectionsAlongStep(const G4MaterialCutsCouple *, const G4DynamicParticle *, G4double &eloss, G4double &niel, G4double length)
G4double GetPDGMass() const
G4double GetPDGCharge() const