Geant4 11.2.2
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) override
 
G4double ScalingFactorDEDX (const G4ParticleDefinition *particle, const G4Material *, G4double kineticEnergy) override
 
G4int AtomicNumberBaseIon (G4int atomicNumberIon, const G4Material *) override
 
- Public Member Functions inherited from G4VIonDEDXScalingAlgorithm
 G4VIonDEDXScalingAlgorithm ()
 
virtual ~G4VIonDEDXScalingAlgorithm ()
 

Detailed Description

Definition at line 62 of file G4IonDEDXScalingICRU73.hh.

Constructor & Destructor Documentation

◆ G4IonDEDXScalingICRU73()

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

Definition at line 62 of file G4IonDEDXScalingICRU73.cc.

64 :
65 minAtomicNumber( minAtomicNumberIon ),
66 maxAtomicNumber( maxAtomicNumberIon ),
67 referencePrepared( false ),
68 atomicNumberRefFe( 26 ),
69 massNumberRefFe( 56 ),
70 atomicNumberRefPow23Fe( 0 ),
71 chargeRefFe( 0 ),
72 massRefFe( 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}

Member Function Documentation

◆ AtomicNumberBaseIon()

G4int G4IonDEDXScalingICRU73::AtomicNumberBaseIon ( G4int atomicNumberIon,
const G4Material *  )
overridevirtual

Function for defining a base particle for dE/dx calculation. (no base particle by default). Returns atomic number of base particle.

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 203 of file G4IonDEDXScalingICRU73.cc.

205 { // Target material
206
207 UpdateCacheMaterial(material);
208
209 G4int atomicNumber = atomicNumberIon;
210
211 if(atomicNumberIon >= minAtomicNumber &&
212 atomicNumberIon <= maxAtomicNumber &&
213 atomicNumberIon != atomicNumberRefFe &&
214 atomicNumberIon != atomicNumberRefAr) {
215
216 if(!referencePrepared) CreateReferenceParticles();
217
218 if( useFe ) atomicNumber = atomicNumberRefFe;
219 else atomicNumber = atomicNumberRefAr;
220 }
221
222 return atomicNumber;
223}
int G4int
Definition G4Types.hh:85

◆ ScalingFactorDEDX()

G4double G4IonDEDXScalingICRU73::ScalingFactorDEDX ( const G4ParticleDefinition * ,
const G4Material * ,
G4double  )
overridevirtual

Function for scaling the dE/dx value (no scaling by default). Returns scaling factor for a given ion-material couple and a given kinetic energy.

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 143 of file G4IonDEDXScalingICRU73.cc.

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

◆ ScalingFactorEnergy()

G4double G4IonDEDXScalingICRU73::ScalingFactorEnergy ( const G4ParticleDefinition * ,
const G4Material *  )
overridevirtual

Function for scaling the kinetic energy (no scaling by default). Returns scaling factor for a given ion.

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 116 of file G4IonDEDXScalingICRU73.cc.

118 { // Target material
119
120 G4double factor = 1.0;
121
122 UpdateCacheParticle(particle);
123 UpdateCacheMaterial(material);
124
125 if(cacheAtomicNumber >= minAtomicNumber &&
126 cacheAtomicNumber <= maxAtomicNumber &&
127 cacheAtomicNumber != atomicNumberRefFe &&
128 cacheAtomicNumber != atomicNumberRefAr) {
129
130 if(!referencePrepared) CreateReferenceParticles();
131
132 if( useFe )
133 factor = cacheMassNumber * (massRefFe / cacheMass) / massNumberRefFe;
134 else
135 factor = cacheMassNumber * (massRefAr / cacheMass) / massNumberRefAr;
136 }
137
138 return factor;
139}

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