52#ifndef G4IONDEDXSCALINGICRU73_HH
53#define G4IONDEDXSCALINGICRU73_HH
66 G4int maxAtomicNumberIon = 102);
89 G4int atomicNumberIon,
93 void UpdateCacheParticle(
96 void UpdateCacheMaterial(
99 void CreateReferenceParticles();
109 G4int minAtomicNumber;
110 G4int maxAtomicNumber;
116 G4int atomicNumberRefFe;
117 G4int massNumberRefFe;
124 G4int atomicNumberRefAr;
125 G4int massNumberRefAr;
135 G4int cacheMassNumber;
136 G4int cacheAtomicNumber;
147inline void G4IonDEDXScalingICRU73::UpdateCacheParticle (
150 if(particle != cacheParticle) {
152 cacheParticle = particle;
153 cacheAtomicNumber = particle -> GetAtomicNumber();
154 cacheMassNumber = particle -> GetAtomicMass();
155 cacheCharge = particle -> GetPDGCharge();
156 cacheMass = particle -> GetPDGMass();
157 cacheAtomicNumberPow23 = std::pow(
G4double(cacheAtomicNumber), 2./3.);
163inline void G4IonDEDXScalingICRU73::UpdateCacheMaterial (
166 if(cacheMaterial != material) {
168 cacheMaterial = material;
172 size_t nmbElements = material -> GetNumberOfElements();
173 if( nmbElements > 1 ) useFe =
false;
175 if( material -> GetName() ==
"G4_WATER" ) useFe =
true;
181inline G4double G4IonDEDXScalingICRU73::EquilibriumCharge(
187 G4double totalEnergy = kineticEnergy + mass;
188 G4double betaSquared = kineticEnergy *
189 (totalEnergy + mass) / (totalEnergy * totalEnergy);
191 G4double beta = std::sqrt( betaSquared );
193 G4double velOverBohrVel = beta / CLHEP::fine_structure_const;
195 G4double q1 = 1.0 -
G4Exp(-velOverBohrVel / atomicNumberPow);
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double ScalingFactorDEDX(const G4ParticleDefinition *particle, const G4Material *, G4double kineticEnergy) override
~G4IonDEDXScalingICRU73()
G4IonDEDXScalingICRU73(G4int minAtomicNumberIon=19, G4int maxAtomicNumberIon=102)
G4int AtomicNumberBaseIon(G4int atomicNumberIon, const G4Material *) override
G4double ScalingFactorEnergy(const G4ParticleDefinition *particle, const G4Material *material) override