File indexing completed on 2025-01-18 09:58:31
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 G4bool operator==(const G4IonisParamMat&) const = delete;
0129 G4bool operator!=(const G4IonisParamMat&) const = delete;
0130
0131 private:
0132
0133 void ComputeMeanParameters();
0134
0135
0136 void ComputeDensityEffectParameters();
0137
0138
0139 void ComputeFluctModel();
0140
0141
0142 void ComputeIonParameters();
0143
0144
0145
0146
0147 const G4Material* fMaterial;
0148
0149 G4DensityEffectCalculator* fDensityEffectCalc;
0150 G4double* fShellCorrectionVector;
0151
0152
0153 G4double fMeanExcitationEnergy;
0154 G4double fLogMeanExcEnergy;
0155 G4double fTaul;
0156
0157
0158 G4double fCdensity;
0159 G4double fMdensity;
0160 G4double fAdensity;
0161 G4double fX0density;
0162 G4double fX1density;
0163 G4double fD0density;
0164
0165 G4double fPlasmaEnergy;
0166 G4double fAdjustmentFactor;
0167
0168
0169 G4double fF1fluct;
0170 G4double fF2fluct;
0171 G4double fEnergy1fluct;
0172 G4double fLogEnergy1fluct;
0173 G4double fEnergy2fluct;
0174 G4double fLogEnergy2fluct;
0175 G4double fEnergy0fluct;
0176 G4double fRateionexcfluct;
0177
0178
0179 G4double fZeff;
0180 G4double fFermiEnergy;
0181 G4double fLfactor;
0182 G4double fInvA23;
0183
0184
0185 G4double fBirks;
0186
0187 G4double fMeanEnergyPerIon;
0188 G4double twoln10;
0189
0190
0191 static G4DensityEffectData* fDensityData;
0192 };
0193
0194 #endif