63 G4int minAtomicNumberIon,
64 G4int maxAtomicNumberIon) :
65 minAtomicNumber( minAtomicNumberIon ),
66 maxAtomicNumber( maxAtomicNumberIon ),
67 referencePrepared( false ),
68 atomicNumberRefFe( 26 ),
69 massNumberRefFe( 56 ),
70 atomicNumberRefPow23Fe( 0 ),
73 atomicNumberRefAr( 18 ),
74 massNumberRefAr( 40 ),
75 atomicNumberRefPow23Ar( 0 ),
81 cacheAtomicNumber( 0 ),
82 cacheAtomicNumberPow23( 0 ),
122 UpdateCacheParticle(particle);
123 UpdateCacheMaterial(material);
125 if(cacheAtomicNumber >= minAtomicNumber &&
126 cacheAtomicNumber <= maxAtomicNumber &&
127 cacheAtomicNumber != atomicNumberRefFe &&
128 cacheAtomicNumber != atomicNumberRefAr) {
130 if(!referencePrepared) CreateReferenceParticles();
133 factor = cacheMassNumber * (massRefFe / cacheMass) / massNumberRefFe;
135 factor = cacheMassNumber * (massRefAr / cacheMass) / massNumberRefAr;
150 UpdateCacheParticle(particle);
151 UpdateCacheMaterial(material);
153 if(cacheAtomicNumber >= minAtomicNumber &&
154 cacheAtomicNumber <= maxAtomicNumber &&
155 cacheAtomicNumber != atomicNumberRefFe &&
156 cacheAtomicNumber != atomicNumberRefAr) {
158 if(!referencePrepared) CreateReferenceParticles();
162 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
164 cacheAtomicNumberPow23,
167 G4double scaledKineticEnergy = kineticEnergy * (massRefFe / cacheMass);
169 G4double equilibriumChargeRefFe = EquilibriumCharge(massRefFe,
171 atomicNumberRefPow23Fe,
172 scaledKineticEnergy);
174 factor = equilibriumCharge * equilibriumCharge/
175 ( equilibriumChargeRefFe * equilibriumChargeRefFe );
180 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
182 cacheAtomicNumberPow23,
185 G4double scaledKineticEnergy = kineticEnergy * (massRefAr / cacheMass);
187 G4double equilibriumChargeRefAr = EquilibriumCharge(massRefAr,
189 atomicNumberRefPow23Ar,
190 scaledKineticEnergy);
192 factor = equilibriumCharge * equilibriumCharge/
193 ( equilibriumChargeRefAr * equilibriumChargeRefAr );
204 G4int atomicNumberIon,
207 UpdateCacheMaterial(material);
209 G4int atomicNumber = atomicNumberIon;
211 if(atomicNumberIon >= minAtomicNumber &&
212 atomicNumberIon <= maxAtomicNumber &&
213 atomicNumberIon != atomicNumberRefFe &&
214 atomicNumberIon != atomicNumberRefAr) {
216 if(!referencePrepared) CreateReferenceParticles();
218 if( useFe ) atomicNumber = atomicNumberRefFe;
219 else atomicNumber = atomicNumberRefAr;