Geant4-11
Public Member Functions | Private Member Functions | Private Attributes
G4IonDEDXScalingICRU73 Class Reference

#include <G4IonDEDXScalingICRU73.hh>

Inheritance diagram for G4IonDEDXScalingICRU73:
G4VIonDEDXScalingAlgorithm

Public Member Functions

G4int AtomicNumberBaseIon (G4int atomicNumberIon, const G4Material *) override
 
 G4IonDEDXScalingICRU73 (G4int minAtomicNumberIon=19, G4int maxAtomicNumberIon=102)
 
G4double ScalingFactorDEDX (const G4ParticleDefinition *particle, const G4Material *, G4double kineticEnergy) override
 
G4double ScalingFactorEnergy (const G4ParticleDefinition *particle, const G4Material *material) override
 
 ~G4IonDEDXScalingICRU73 ()
 

Private Member Functions

void CreateReferenceParticles ()
 
G4double EquilibriumCharge (G4double mass, G4double charge, G4double atomicNumberPow, G4double kineticEnergy)
 
void UpdateCacheMaterial (const G4Material *material)
 
void UpdateCacheParticle (const G4ParticleDefinition *particle)
 

Private Attributes

G4int atomicNumberRefAr
 
G4int atomicNumberRefFe
 
G4double atomicNumberRefPow23Ar
 
G4double atomicNumberRefPow23Fe
 
G4int cacheAtomicNumber
 
G4double cacheAtomicNumberPow23
 
G4double cacheCharge
 
G4double cacheMass
 
G4int cacheMassNumber
 
const G4MaterialcacheMaterial
 
const G4ParticleDefinitioncacheParticle
 
G4double chargeRefAr
 
G4double chargeRefFe
 
G4int massNumberRefAr
 
G4int massNumberRefFe
 
G4double massRefAr
 
G4double massRefFe
 
G4int maxAtomicNumber
 
G4int minAtomicNumber
 
G4bool referencePrepared
 
G4bool useFe
 

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 ),
69 massNumberRefFe( 56 ),
71 chargeRefFe( 0 ),
72 massRefFe( 0 ),
74 massNumberRefAr( 40 ),
76 chargeRefAr( 0 ),
77 massRefAr( 0 ),
78 useFe( true ),
79 cacheParticle( 0 ),
80 cacheMassNumber( 0 ),
83 cacheCharge( 0 ),
84 cacheMass( 0 ),
85 cacheMaterial( 0 ) {
86
87}
const G4Material * cacheMaterial
const G4ParticleDefinition * cacheParticle

◆ ~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
208
209 G4int atomicNumber = atomicNumberIon;
210
211 if(atomicNumberIon >= minAtomicNumber &&
212 atomicNumberIon <= maxAtomicNumber &&
213 atomicNumberIon != atomicNumberRefFe &&
214 atomicNumberIon != atomicNumberRefAr) {
215
217
218 if( useFe ) atomicNumber = atomicNumberRefFe;
219 else atomicNumber = atomicNumberRefAr;
220 }
221
222 return atomicNumber;
223}
int G4int
Definition: G4Types.hh:85
void UpdateCacheMaterial(const G4Material *material)
string material
Definition: eplot.py:19

References atomicNumberRefAr, atomicNumberRefFe, CreateReferenceParticles(), eplot::material, maxAtomicNumber, minAtomicNumber, referencePrepared, UpdateCacheMaterial(), and useFe.

◆ CreateReferenceParticles()

void G4IonDEDXScalingICRU73::CreateReferenceParticles ( )
private

◆ EquilibriumCharge()

G4double G4IonDEDXScalingICRU73::EquilibriumCharge ( G4double  mass,
G4double  charge,
G4double  atomicNumberPow,
G4double  kineticEnergy 
)
inlineprivate

Definition at line 181 of file G4IonDEDXScalingICRU73.hh.

185 {
186
187 G4double totalEnergy = kineticEnergy + mass;
188 G4double betaSquared = kineticEnergy *
189 (totalEnergy + mass) / (totalEnergy * totalEnergy);
190
191 G4double beta = std::sqrt( betaSquared );
192
193 G4double velOverBohrVel = beta / CLHEP::fine_structure_const;
194
195 G4double q1 = 1.0 - G4Exp(-velOverBohrVel / atomicNumberPow);
196
197 return q1 * charge;
198}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static constexpr double fine_structure_const

References anonymous_namespace{G4PionRadiativeDecayChannel.cc}::beta, CLHEP::fine_structure_const, and G4Exp().

Referenced by ScalingFactorDEDX().

◆ 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);
152
157
159
160 if( useFe ) {
161
162 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
165 kineticEnergy);
166
167 G4double scaledKineticEnergy = kineticEnergy * (massRefFe / cacheMass);
168
169 G4double equilibriumChargeRefFe = EquilibriumCharge(massRefFe,
172 scaledKineticEnergy);
173
174 factor = equilibriumCharge * equilibriumCharge/
175 ( equilibriumChargeRefFe * equilibriumChargeRefFe );
176
177 }
178 else {
179
180 G4double equilibriumCharge = EquilibriumCharge(cacheMass,
183 kineticEnergy);
184
185 G4double scaledKineticEnergy = kineticEnergy * (massRefAr / cacheMass);
186
187 G4double equilibriumChargeRefAr = EquilibriumCharge(massRefAr,
190 scaledKineticEnergy);
191
192 factor = equilibriumCharge * equilibriumCharge/
193 ( equilibriumChargeRefAr * equilibriumChargeRefAr );
194
195 }
196 }
197
198 return factor;
199}
G4double EquilibriumCharge(G4double mass, G4double charge, G4double atomicNumberPow, G4double kineticEnergy)
void UpdateCacheParticle(const G4ParticleDefinition *particle)

References atomicNumberRefAr, atomicNumberRefFe, atomicNumberRefPow23Ar, atomicNumberRefPow23Fe, cacheAtomicNumber, cacheAtomicNumberPow23, cacheCharge, cacheMass, chargeRefAr, chargeRefFe, CreateReferenceParticles(), EquilibriumCharge(), massRefAr, massRefFe, eplot::material, maxAtomicNumber, minAtomicNumber, referencePrepared, UpdateCacheMaterial(), UpdateCacheParticle(), and useFe.

◆ 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);
124
129
131
132 if( useFe )
134 else
136 }
137
138 return factor;
139}

References atomicNumberRefAr, atomicNumberRefFe, cacheAtomicNumber, cacheMass, cacheMassNumber, CreateReferenceParticles(), massNumberRefAr, massNumberRefFe, massRefAr, massRefFe, eplot::material, maxAtomicNumber, minAtomicNumber, referencePrepared, UpdateCacheMaterial(), UpdateCacheParticle(), and useFe.

◆ UpdateCacheMaterial()

void G4IonDEDXScalingICRU73::UpdateCacheMaterial ( const G4Material material)
inlineprivate

Definition at line 163 of file G4IonDEDXScalingICRU73.hh.

164 { // Target material
165
166 if(cacheMaterial != material) {
167
169
170 useFe = true;
171
172 size_t nmbElements = material -> GetNumberOfElements();
173 if( nmbElements > 1 ) useFe = false;
174
175 if( material -> GetName() == "G4_WATER" ) useFe = true;
176 }
177}

References cacheMaterial, eplot::material, and useFe.

Referenced by AtomicNumberBaseIon(), ScalingFactorDEDX(), and ScalingFactorEnergy().

◆ UpdateCacheParticle()

void G4IonDEDXScalingICRU73::UpdateCacheParticle ( const G4ParticleDefinition particle)
inlineprivate

Definition at line 147 of file G4IonDEDXScalingICRU73.hh.

148 { // Projectile (ion)
149
150 if(particle != cacheParticle) {
151
152 cacheParticle = particle;
153 cacheAtomicNumber = particle -> GetAtomicNumber();
154 cacheMassNumber = particle -> GetAtomicMass();
155 cacheCharge = particle -> GetPDGCharge();
156 cacheMass = particle -> GetPDGMass();
158 }
159}

References cacheAtomicNumber, cacheAtomicNumberPow23, cacheCharge, cacheMass, cacheMassNumber, and cacheParticle.

Referenced by ScalingFactorDEDX(), and ScalingFactorEnergy().

Field Documentation

◆ atomicNumberRefAr

G4int G4IonDEDXScalingICRU73::atomicNumberRefAr
private

◆ atomicNumberRefFe

G4int G4IonDEDXScalingICRU73::atomicNumberRefFe
private

◆ atomicNumberRefPow23Ar

G4double G4IonDEDXScalingICRU73::atomicNumberRefPow23Ar
private

Definition at line 126 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorDEDX().

◆ atomicNumberRefPow23Fe

G4double G4IonDEDXScalingICRU73::atomicNumberRefPow23Fe
private

Definition at line 118 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorDEDX().

◆ cacheAtomicNumber

G4int G4IonDEDXScalingICRU73::cacheAtomicNumber
private

◆ cacheAtomicNumberPow23

G4double G4IonDEDXScalingICRU73::cacheAtomicNumberPow23
private

Definition at line 137 of file G4IonDEDXScalingICRU73.hh.

Referenced by ScalingFactorDEDX(), and UpdateCacheParticle().

◆ cacheCharge

G4double G4IonDEDXScalingICRU73::cacheCharge
private

Definition at line 138 of file G4IonDEDXScalingICRU73.hh.

Referenced by ScalingFactorDEDX(), and UpdateCacheParticle().

◆ cacheMass

G4double G4IonDEDXScalingICRU73::cacheMass
private

◆ cacheMassNumber

G4int G4IonDEDXScalingICRU73::cacheMassNumber
private

Definition at line 135 of file G4IonDEDXScalingICRU73.hh.

Referenced by ScalingFactorEnergy(), and UpdateCacheParticle().

◆ cacheMaterial

const G4Material* G4IonDEDXScalingICRU73::cacheMaterial
private

Definition at line 142 of file G4IonDEDXScalingICRU73.hh.

Referenced by UpdateCacheMaterial().

◆ cacheParticle

const G4ParticleDefinition* G4IonDEDXScalingICRU73::cacheParticle
private

Definition at line 134 of file G4IonDEDXScalingICRU73.hh.

Referenced by UpdateCacheParticle().

◆ chargeRefAr

G4double G4IonDEDXScalingICRU73::chargeRefAr
private

Definition at line 127 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorDEDX().

◆ chargeRefFe

G4double G4IonDEDXScalingICRU73::chargeRefFe
private

Definition at line 119 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorDEDX().

◆ massNumberRefAr

G4int G4IonDEDXScalingICRU73::massNumberRefAr
private

Definition at line 125 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorEnergy().

◆ massNumberRefFe

G4int G4IonDEDXScalingICRU73::massNumberRefFe
private

Definition at line 117 of file G4IonDEDXScalingICRU73.hh.

Referenced by CreateReferenceParticles(), and ScalingFactorEnergy().

◆ massRefAr

G4double G4IonDEDXScalingICRU73::massRefAr
private

◆ massRefFe

G4double G4IonDEDXScalingICRU73::massRefFe
private

◆ maxAtomicNumber

G4int G4IonDEDXScalingICRU73::maxAtomicNumber
private

◆ minAtomicNumber

G4int G4IonDEDXScalingICRU73::minAtomicNumber
private

◆ referencePrepared

G4bool G4IonDEDXScalingICRU73::referencePrepared
private

◆ useFe

G4bool G4IonDEDXScalingICRU73::useFe
private

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