File indexing completed on 2025-09-17 08:58:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038 #ifndef G4IonisParamMat_HH
0039 #define G4IonisParamMat_HH
0040
0041 #include "G4DensityEffectCalculator.hh"
0042 #include "G4ios.hh"
0043 #include "globals.hh"
0044
0045 class G4Material;
0046 class G4DensityEffectData;
0047
0048 class G4IonisParamMat
0049 {
0050 public:
0051 G4IonisParamMat(const G4Material*);
0052 ~G4IonisParamMat();
0053 G4IonisParamMat& operator=(const G4IonisParamMat&) = delete;
0054 G4IonisParamMat(const G4IonisParamMat&) = delete;
0055
0056
0057 inline G4double GetMeanExcitationEnergy() const { return fMeanExcitationEnergy; };
0058
0059 void SetMeanExcitationEnergy(G4double value);
0060 G4double FindMeanExcitationEnergy(const G4Material*) const;
0061
0062 inline G4double GetLogMeanExcEnergy() const { return fLogMeanExcEnergy; };
0063 inline G4double* GetShellCorrectionVector() const { return fShellCorrectionVector; };
0064 inline G4double GetTaul() const { return fTaul; };
0065
0066
0067 inline G4double GetPlasmaEnergy() const { return fPlasmaEnergy; };
0068 inline G4double GetAdjustmentFactor() const { return fAdjustmentFactor; };
0069 inline G4double GetCdensity() const { return fCdensity; };
0070 inline G4double GetMdensity() const { return fMdensity; };
0071 inline G4double GetAdensity() const { return fAdensity; };
0072 inline G4double GetX0density() const { return fX0density; };
0073 inline G4double GetX1density() const { return fX1density; };
0074 inline G4double GetD0density() const { return fD0density; };
0075
0076
0077 void SetDensityEffectParameters(
0078 G4double cd, G4double md, G4double ad, G4double x0, G4double x1, G4double d0);
0079
0080
0081 void SetDensityEffectParameters(const G4Material* bmat);
0082
0083 void ComputeDensityEffectOnFly(G4bool);
0084
0085 inline G4DensityEffectCalculator* GetDensityEffectCalculator() const
0086 {
0087 return fDensityEffectCalc;
0088 }
0089
0090
0091
0092 inline G4double DensityCorrection(G4double x) const
0093 {
0094 return (nullptr == fDensityEffectCalc) ? GetDensityCorrection(x)
0095 : fDensityEffectCalc->ComputeDensityCorrection(x);
0096 }
0097
0098
0099 G4double GetDensityCorrection(G4double x) const;
0100
0101 static G4DensityEffectData* GetDensityEffectData();
0102
0103
0104 inline G4double GetF1fluct() const { return fF1fluct; };
0105 inline G4double GetF2fluct() const { return fF2fluct; };
0106 inline G4double GetEnergy1fluct() const { return fEnergy1fluct; };
0107 inline G4double GetLogEnergy1fluct() const { return fLogEnergy1fluct; };
0108 inline G4double GetEnergy2fluct() const { return fEnergy2fluct; };
0109 inline G4double GetLogEnergy2fluct() const { return fLogEnergy2fluct; };
0110 inline G4double GetEnergy0fluct() const { return fEnergy0fluct; };
0111 inline G4double GetRateionexcfluct() const { return fRateionexcfluct; };
0112
0113
0114 inline G4double GetZeffective() const { return fZeff; };
0115 inline G4double GetFermiEnergy() const { return fFermiEnergy; };
0116 inline G4double GetLFactor() const { return fLfactor; };
0117 inline G4double GetInvA23() const { return fInvA23; };
0118
0119
0120 inline void SetBirksConstant(G4double value) { fBirks = value; };
0121 inline G4double GetBirksConstant() const { return fBirks; };
0122
0123
0124 inline void SetMeanEnergyPerIonPair(G4double value) { fMeanEnergyPerIon = value; };
0125 inline G4double GetMeanEnergyPerIonPair() const { return fMeanEnergyPerIon; };
0126
0127
0128 inline void SetOrtoPositroniumFraction(G4double value) { fOrtoPositroniumFraction = value; };
0129 inline G4double GetOrtoPositroniumFraction() const { return fOrtoPositroniumFraction; };
0130
0131
0132
0133 G4bool operator==(const G4IonisParamMat&) const = delete;
0134 G4bool operator!=(const G4IonisParamMat&) const = delete;
0135
0136 private:
0137
0138 void ComputeMeanParameters();
0139
0140
0141 void ComputeDensityEffectParameters();
0142
0143
0144 void ComputeFluctModel();
0145
0146
0147 void ComputeIonParameters();
0148
0149
0150
0151
0152 const G4Material* fMaterial;
0153
0154 G4DensityEffectCalculator* fDensityEffectCalc;
0155 G4double* fShellCorrectionVector;
0156
0157
0158 G4double fMeanExcitationEnergy;
0159 G4double fLogMeanExcEnergy;
0160 G4double fTaul;
0161
0162
0163 G4double fCdensity;
0164 G4double fMdensity;
0165 G4double fAdensity;
0166 G4double fX0density;
0167 G4double fX1density;
0168 G4double fD0density;
0169
0170 G4double fPlasmaEnergy;
0171 G4double fAdjustmentFactor;
0172
0173
0174 G4double fF1fluct;
0175 G4double fF2fluct;
0176 G4double fEnergy1fluct;
0177 G4double fLogEnergy1fluct;
0178 G4double fEnergy2fluct;
0179 G4double fLogEnergy2fluct;
0180 G4double fEnergy0fluct;
0181 G4double fRateionexcfluct;
0182
0183
0184 G4double fZeff;
0185 G4double fFermiEnergy;
0186 G4double fLfactor;
0187 G4double fInvA23;
0188
0189
0190 G4double fBirks;
0191
0192 G4double fMeanEnergyPerIon;
0193 G4double twoln10;
0194
0195 G4double fOrtoPositroniumFraction{0.035};
0196
0197
0198 static G4DensityEffectData* fDensityData;
0199 };
0200
0201 #endif