Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4IonDEDXScalingICRU73 Class Reference

#include <G4IonDEDXScalingICRU73.hh>

+ Inheritance diagram for G4IonDEDXScalingICRU73:

Public Member Functions

 G4IonDEDXScalingICRU73 (G4int minAtomicNumberIon=19, G4int maxAtomicNumberIon=102)
 
 ~G4IonDEDXScalingICRU73 ()
 
G4double ScalingFactorEnergy (const G4ParticleDefinition *particle, const G4Material *material)
 
G4double ScalingFactorDEDX (const G4ParticleDefinition *particle, const G4Material *, G4double kineticEnergy)
 
G4int AtomicNumberBaseIon (G4int atomicNumberIon, const G4Material *)
 
- Public Member Functions inherited from G4VIonDEDXScalingAlgorithm
 G4VIonDEDXScalingAlgorithm ()
 
virtual ~G4VIonDEDXScalingAlgorithm ()
 
virtual G4double ScalingFactorEnergy (const G4ParticleDefinition *, const G4Material *)
 
virtual G4double ScalingFactorDEDX (const G4ParticleDefinition *, const G4Material *, G4double)
 
virtual G4int AtomicNumberBaseIon (G4int atomicNumberIon, const G4Material *)
 

Detailed Description

Definition at line 62 of file G4IonDEDXScalingICRU73.hh.

Constructor & Destructor Documentation

◆ G4IonDEDXScalingICRU73()

G4IonDEDXScalingICRU73::G4IonDEDXScalingICRU73 ( G4int  minAtomicNumberIon = 19,
G4int  maxAtomicNumberIon = 102 
)

Definition at line 61 of file G4IonDEDXScalingICRU73.cc.

63 :
64 minAtomicNumber( minAtomicNumberIon ),
65 maxAtomicNumber( maxAtomicNumberIon ),
66 referenceFe( 0 ),
67 atomicNumberRefFe( 26 ),
68 massNumberRefFe( 56 ),
69 atomicNumberRefPow23Fe( 0 ),
70 chargeRefFe( 0 ),
71 massRefFe( 0 ),
72 referenceAr( 0 ),
73 atomicNumberRefAr( 18 ),
74 massNumberRefAr( 40 ),
75 atomicNumberRefPow23Ar( 0 ),
76 chargeRefAr( 0 ),
77 massRefAr( 0 ),
78 useFe( true ),
79 cacheParticle( 0 ),
80 cacheMassNumber( 0 ),
81 cacheAtomicNumber( 0 ),
82 cacheAtomicNumberPow23( 0 ),
83 cacheCharge( 0 ),
84 cacheMass( 0 ),
85 cacheMaterial( 0 ) {
86
87}

◆ ~G4IonDEDXScalingICRU73()

G4IonDEDXScalingICRU73::~G4IonDEDXScalingICRU73 ( )

Definition at line 91 of file G4IonDEDXScalingICRU73.cc.

91 {
92
93}

Member Function Documentation

◆ AtomicNumberBaseIon()

G4int G4IonDEDXScalingICRU73::AtomicNumberBaseIon ( G4int  atomicNumberIon,
const G4Material material 
)
virtual

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 209 of file G4IonDEDXScalingICRU73.cc.

211 { // Target material
212
213 UpdateCacheMaterial(material);
214
215 G4int atomicNumber = atomicNumberIon;
216
217 if(atomicNumberIon >= minAtomicNumber &&
218 atomicNumberIon <= maxAtomicNumber &&
219 atomicNumberIon != atomicNumberRefFe &&
220 atomicNumberIon != atomicNumberRefAr) {
221
222 if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
223
224 if( useFe ) atomicNumber = atomicNumberRefFe;
225 else atomicNumber = atomicNumberRefAr;
226 }
227
228 return atomicNumber;
229}
int G4int
Definition: G4Types.hh:66

◆ ScalingFactorDEDX()

G4double G4IonDEDXScalingICRU73::ScalingFactorDEDX ( const G4ParticleDefinition particle,
const G4Material material,
G4double  kineticEnergy 
)
virtual

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 149 of file G4IonDEDXScalingICRU73.cc.

152 { // Kinetic energy
153
154 G4double factor = 1.0;
155
156 UpdateCacheParticle(particle);
157 UpdateCacheMaterial(material);
158
159 if(cacheAtomicNumber >= minAtomicNumber &&
160 cacheAtomicNumber <= maxAtomicNumber &&
161 cacheAtomicNumber != atomicNumberRefFe &&
162 cacheAtomicNumber != atomicNumberRefAr) {
163
164 if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
165
166 if( useFe ) {
167
168 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
169 cacheCharge,
170 cacheAtomicNumberPow23,
171 kineticEnergy);
172
173 G4double scaledKineticEnergy = kineticEnergy * (massRefFe / cacheMass);
174
175 G4double equilibriumChargeRefFe = EquilibriumCharge(massRefFe,
176 chargeRefFe,
177 atomicNumberRefPow23Fe,
178 scaledKineticEnergy);
179
180 factor = equilibriumCharge * equilibriumCharge/
181 ( equilibriumChargeRefFe * equilibriumChargeRefFe );
182
183 }
184 else {
185
186 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
187 cacheCharge,
188 cacheAtomicNumberPow23,
189 kineticEnergy);
190
191 G4double scaledKineticEnergy = kineticEnergy * (massRefAr / cacheMass);
192
193 G4double equilibriumChargeRefAr = EquilibriumCharge(massRefAr,
194 chargeRefAr,
195 atomicNumberRefPow23Ar,
196 scaledKineticEnergy);
197
198 factor = equilibriumCharge * equilibriumCharge/
199 ( equilibriumChargeRefAr * equilibriumChargeRefAr );
200
201 }
202 }
203
204 return factor;
205}
double G4double
Definition: G4Types.hh:64

◆ ScalingFactorEnergy()

G4double G4IonDEDXScalingICRU73::ScalingFactorEnergy ( const G4ParticleDefinition particle,
const G4Material material 
)
virtual

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 122 of file G4IonDEDXScalingICRU73.cc.

124 { // Target material
125
126 G4double factor = 1.0;
127
128 UpdateCacheParticle(particle);
129 UpdateCacheMaterial(material);
130
131 if(cacheAtomicNumber >= minAtomicNumber &&
132 cacheAtomicNumber <= maxAtomicNumber &&
133 cacheAtomicNumber != atomicNumberRefFe &&
134 cacheAtomicNumber != atomicNumberRefAr) {
135
136 if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
137
138 if( useFe )
139 factor = cacheMassNumber * (massRefFe / cacheMass) / massNumberRefFe;
140 else
141 factor = cacheMassNumber * (massRefAr / cacheMass) / massNumberRefAr;
142 }
143
144 return factor;
145}

The documentation for this class was generated from the following files: