G4IonDEDXScalingICRU73 Class Reference

#include <G4IonDEDXScalingICRU73.hh>

Inheritance diagram for G4IonDEDXScalingICRU73:

G4VIonDEDXScalingAlgorithm

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 *)

Detailed Description

Definition at line 62 of file G4IonDEDXScalingICRU73.hh.


Constructor & Destructor Documentation

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

Definition at line 61 of file G4IonDEDXScalingICRU73.cc.

00063                                                     :
00064      minAtomicNumber( minAtomicNumberIon ),
00065      maxAtomicNumber( maxAtomicNumberIon ),
00066      referenceFe( 0 ),
00067      atomicNumberRefFe( 26 ),
00068      massNumberRefFe( 56 ),
00069      atomicNumberRefPow23Fe( 0 ),
00070      chargeRefFe( 0 ),
00071      massRefFe( 0 ),
00072      referenceAr( 0 ),
00073      atomicNumberRefAr( 18 ),
00074      massNumberRefAr( 40 ),
00075      atomicNumberRefPow23Ar( 0 ),
00076      chargeRefAr( 0 ),
00077      massRefAr( 0 ),
00078      useFe( true ),
00079      cacheParticle( 0 ),
00080      cacheMassNumber( 0 ),
00081      cacheAtomicNumber( 0 ),
00082      cacheAtomicNumberPow23( 0 ),
00083      cacheCharge( 0 ),
00084      cacheMass( 0 ),
00085      cacheMaterial( 0 ) { 
00086 
00087 }

G4IonDEDXScalingICRU73::~G4IonDEDXScalingICRU73 (  ) 

Definition at line 91 of file G4IonDEDXScalingICRU73.cc.

00091                                                 {
00092 
00093 }


Member Function Documentation

G4int G4IonDEDXScalingICRU73::AtomicNumberBaseIon ( G4int  atomicNumberIon,
const G4Material  
) [virtual]

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 209 of file G4IonDEDXScalingICRU73.cc.

00211                                          {    // Target material
00212 
00213   UpdateCacheMaterial(material);
00214 
00215   G4int atomicNumber = atomicNumberIon;
00216 
00217   if(atomicNumberIon >= minAtomicNumber &&
00218      atomicNumberIon <= maxAtomicNumber &&
00219      atomicNumberIon != atomicNumberRefFe &&
00220      atomicNumberIon != atomicNumberRefAr) {
00221 
00222      if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
00223 
00224      if( useFe ) atomicNumber = atomicNumberRefFe;
00225      else atomicNumber = atomicNumberRefAr;     
00226   }
00227 
00228   return atomicNumber;
00229 }

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

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 149 of file G4IonDEDXScalingICRU73.cc.

00152                                      {                 // Kinetic energy
00153 
00154   G4double factor = 1.0;
00155 
00156   UpdateCacheParticle(particle);
00157   UpdateCacheMaterial(material);
00158 
00159   if(cacheAtomicNumber >= minAtomicNumber &&
00160      cacheAtomicNumber <= maxAtomicNumber &&
00161      cacheAtomicNumber != atomicNumberRefFe &&
00162      cacheAtomicNumber != atomicNumberRefAr) {
00163       
00164       if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
00165 
00166       if( useFe ) {
00167 
00168          G4double equilibriumCharge = EquilibriumCharge(cacheMass,
00169                                                      cacheCharge,
00170                                                      cacheAtomicNumberPow23,
00171                                                      kineticEnergy);
00172 
00173          G4double scaledKineticEnergy = kineticEnergy * (massRefFe / cacheMass);
00174       
00175          G4double equilibriumChargeRefFe = EquilibriumCharge(massRefFe,
00176                                                         chargeRefFe,
00177                                                         atomicNumberRefPow23Fe,
00178                                                         scaledKineticEnergy);
00179 
00180          factor = equilibriumCharge * equilibriumCharge/ 
00181                    ( equilibriumChargeRefFe * equilibriumChargeRefFe );
00182 
00183       }
00184       else {
00185 
00186          G4double equilibriumCharge = EquilibriumCharge(cacheMass,
00187                                                      cacheCharge,
00188                                                      cacheAtomicNumberPow23,
00189                                                      kineticEnergy);
00190 
00191          G4double scaledKineticEnergy = kineticEnergy * (massRefAr / cacheMass);
00192       
00193          G4double equilibriumChargeRefAr = EquilibriumCharge(massRefAr,
00194                                                         chargeRefAr,
00195                                                         atomicNumberRefPow23Ar,
00196                                                         scaledKineticEnergy);
00197 
00198          factor = equilibriumCharge * equilibriumCharge/ 
00199                    ( equilibriumChargeRefAr * equilibriumChargeRefAr );
00200 
00201       }
00202   }  
00203 
00204   return factor;
00205 }

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

Reimplemented from G4VIonDEDXScalingAlgorithm.

Definition at line 122 of file G4IonDEDXScalingICRU73.cc.

00124                                         {             // Target material
00125                                                          
00126   G4double factor = 1.0;
00127  
00128   UpdateCacheParticle(particle);
00129   UpdateCacheMaterial(material);
00130 
00131   if(cacheAtomicNumber >= minAtomicNumber &&
00132      cacheAtomicNumber <= maxAtomicNumber &&
00133      cacheAtomicNumber != atomicNumberRefFe &&
00134      cacheAtomicNumber != atomicNumberRefAr) {
00135 
00136      if(referenceFe == 0 || referenceAr == 0) CreateReferenceParticles();
00137 
00138      if( useFe )
00139          factor = cacheMassNumber * (massRefFe / cacheMass) / massNumberRefFe;
00140      else
00141          factor = cacheMassNumber * (massRefAr / cacheMass) / massNumberRefAr;
00142   }
00143 
00144   return factor;
00145 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:17 2013 for Geant4 by  doxygen 1.4.7