54 #ifndef G4EmCorrections_h
55 #define G4EmCorrections_h 1
174 void BuildCorrectionVector();
221 std::vector<const G4Material*> currmat;
222 std::map< G4int, std::vector<G4double> > thcorr;
262 G4int numberOfElements;
268 std::vector<G4int> Zion;
269 std::vector<G4int> Aion;
270 std::vector<G4String> materialName;
272 std::vector<const G4ParticleDefinition*> ionList;
274 std::vector<const G4Material*> materialList;
275 std::vector<G4PhysicsVector*> stopData;
286 do {--iddd;}
while (iddd>0 && x<y[iddd]);
293 return y1 + (y2 - y1)*(xv - x1)/(x2 - x1);
302 return (z11*(x2-xv)*(y2-yv) + z22*(xv-x1)*(yv-y1) +
303 0.5*(z12*((x2-xv)*(yv-y1)+(xv-x1)*(y2-yv))+
304 z21*((xv-x1)*(y2-yv)+(yv-y1)*(x2-xv))))
311 if(mod1) { ionLEModel = mod1; }
312 if(mod2) { ionHEModel = mod2; }
340 if(kineticEnergy != kinEnergy || p != particle) {
342 kinEnergy = kineticEnergy;
344 tau = kineticEnergy / mass;
346 bg2 = tau * (tau+2.0);
347 beta2 = bg2/(gamma*gamma);
348 beta = std::sqrt(beta2);
352 /(1. + 2.0*gamma*ratio + ratio*ratio);
354 if(charge > 1.5) { charge = effCharge.
EffectiveCharge(p,mat,kinEnergy); }
357 if(mat != material) {
G4double HighOrderCorrections(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy, G4double cutEnergy)
G4double DensityCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
std::vector< G4Element * > G4ElementVector
void SetVerbose(G4int verb)
G4int GetNumberOfStoppingVectors() const
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double EffectiveChargeSquareRatio(const G4ParticleDefinition *p, const G4Material *material, G4double kineticEnergy)
G4double MottCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetParticleCharge(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double EffectiveChargeCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double BlochCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
const G4ElementVector * GetElementVector() const
G4double SpinCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
void SetIonisationModels(G4VEmModel *m1=nullptr, G4VEmModel *m2=nullptr)
void AddStoppingData(G4int Z, G4int A, const G4String &materialName, G4PhysicsVector *dVector)
static constexpr double electron_mass_c2
G4EmCorrections(G4int verb)
double A(double temperature)
G4double NuclearDEDX(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy, G4bool fluct=true)
G4double IonBarkasCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double BarkasCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double IonHighOrderCorrections(const G4ParticleDefinition *, const G4MaterialCutsCouple *, G4double kineticEnergy)
const G4double * GetAtomicNumDensityVector() const
G4double EffectiveCharge(const G4ParticleDefinition *p, const G4Material *material, G4double kineticEnergy)
G4double ShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetPDGMass() const
G4double KShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double LShellCorrection(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
size_t GetNumberOfElements() const
G4double ComputeIonCorrections(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double ShellCorrectionSTD(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)
G4double GetPDGCharge() const
void InitialiseForNewRun()
static constexpr double m2
virtual ~G4EmCorrections()
G4double Bethe(const G4ParticleDefinition *, const G4Material *, G4double kineticEnergy)