Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4IonisParamMat.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27
28// class description
29//
30// The class contains few (physical) quantities related to the Ionisation
31// process, for a material defined by its pointer G4Material*
32//
33
34//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
35
36// 09-07-98: data moved from G4Material (mma)
37// 09-03-01: copy constructor and assignement operator in public (mma)
38// 28-10-02: add setMeanExcitationEnergy (V.Ivanchenko)
39// 27-09-07: add computation of parameters for ions (V.Ivanchenko)
40// 04-03-08: add fBirks constant (mma)
41// 16-01-19, add exact computation of the density effect (M. Strait)
42
43//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
44
45#ifndef G4IonisParamMat_HH
46#define G4IonisParamMat_HH
47
48#include "G4ios.hh"
49#include "globals.hh"
51
52class G4Material;
54
55//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
56
58{
59public:
60
63
64 // parameters for mean energy loss calculation:
65 inline
66 G4double GetMeanExcitationEnergy() const {return fMeanExcitationEnergy;};
67
70
71 inline
72 G4double GetLogMeanExcEnergy() const {return fLogMeanExcEnergy;};
73 inline
74 G4double* GetShellCorrectionVector() const {return fShellCorrectionVector;};
75 inline
76 G4double GetTaul() const {return fTaul;};
77
78 // parameters of the density correction:
79 inline
80 G4double GetPlasmaEnergy() const {return fPlasmaEnergy;};
81 inline
82 G4double GetAdjustmentFactor() const {return fAdjustmentFactor;};
83 inline
84 G4double GetCdensity() const {return fCdensity;};
85 inline
86 G4double GetMdensity() const {return fMdensity;};
87 inline
88 G4double GetAdensity() const {return fAdensity;};
89 inline
90 G4double GetX0density() const {return fX0density;};
91 inline
92 G4double GetX1density() const {return fX1density;};
93 inline
94 G4double GetD0density() const {return fD0density;};
95
96 // user defined density correction parameterisation
98 G4double x0, G4double x1, G4double d0);
99
100 // defined density correction parameterisation via base material
101 void SetDensityEffectParameters(const G4Material* bmat);
102
104
106 { return fDensityEffectCalc; }
107
108 // compute density correction as a function of the kinematic variable
109 // x = log10(beta*gamma) using parameterisation of calculator
111 { return (nullptr == fDensityEffectCalc) ? GetDensityCorrection(x)
112 : fDensityEffectCalc->ComputeDensityCorrection(x); }
113
114 // use parameterisation
116
118
119 // parameters of the energy loss fluctuation model:
120 inline
121 G4double GetF1fluct() const {return fF1fluct;};
122 inline
123 G4double GetF2fluct() const {return fF2fluct;};
124 inline
125 G4double GetEnergy1fluct() const {return fEnergy1fluct;};
126 inline
127 G4double GetLogEnergy1fluct() const {return fLogEnergy1fluct;};
128 inline
129 G4double GetEnergy2fluct() const {return fEnergy2fluct;};
130 inline
131 G4double GetLogEnergy2fluct() const {return fLogEnergy2fluct;};
132 inline
133 G4double GetEnergy0fluct() const {return fEnergy0fluct;};
134 inline
135 G4double GetRateionexcfluct() const {return fRateionexcfluct;};
136
137 // parameters for ion corrections computations
138 inline
139 G4double GetZeffective() const {return fZeff;};
140 inline
141 G4double GetFermiEnergy() const {return fFermiEnergy;};
142 inline
143 G4double GetLFactor() const {return fLfactor;};
144 inline
145 G4double GetInvA23() const {return fInvA23;};
146
147 // parameters for Birks attenuation:
148 inline
149 void SetBirksConstant(G4double value) {fBirks = value;};
150 inline
151 G4double GetBirksConstant() const {return fBirks;};
152
153 // parameters for average energy per ion
154 inline
155 void SetMeanEnergyPerIonPair(G4double value) {fMeanEnergyPerIon = value;};
156 inline
157 G4double GetMeanEnergyPerIonPair() const {return fMeanEnergyPerIon;};
158
159 G4IonisParamMat(__void__&);
160 // Fake default constructor for usage restricted to direct object
161 // persistency for clients requiring preallocation of memory for
162 // persistifiable objects.
163
164 // operators
166 G4bool operator==(const G4IonisParamMat&) const = delete;
167 G4bool operator!=(const G4IonisParamMat&) const = delete;
169
170private:
171
172 // Compute mean parameters : ExcitationEnergy,Shell corretion vector ...
173 void ComputeMeanParameters();
174
175 // Compute parameters for the density effect
176 void ComputeDensityEffectParameters();
177
178 // Compute parameters for the energy fluctuation model
179 void ComputeFluctModel();
180
181 // Compute parameters for ion parameterizations
182 void ComputeIonParameters();
183
184 //
185 // data members
186 //
187 const G4Material* fMaterial; // this material
188
189 G4DensityEffectCalculator* fDensityEffectCalc; // online calculator
190 G4double* fShellCorrectionVector; // shell correction coefficients
191
192 // parameters for mean energy loss calculation
193 G4double fMeanExcitationEnergy; //
194 G4double fLogMeanExcEnergy; //
195 G4double fTaul; // lower limit of Bethe-Bloch formula
196
197 // parameters of the density correction
198 G4double fCdensity; // mat.constant
199 G4double fMdensity; // exponent
200 G4double fAdensity; //
201 G4double fX0density; //
202 G4double fX1density; //
203 G4double fD0density;
204
205 G4double fPlasmaEnergy;
206 G4double fAdjustmentFactor;
207
208 // parameters of the energy loss fluctuation model
209 G4double fF1fluct;
210 G4double fF2fluct;
211 G4double fEnergy1fluct;
212 G4double fLogEnergy1fluct;
213 G4double fEnergy2fluct;
214 G4double fLogEnergy2fluct;
215 G4double fEnergy0fluct;
216 G4double fRateionexcfluct;
217
218 // parameters for ion corrections computations
219 G4double fZeff;
220 G4double fFermiEnergy;
221 G4double fLfactor;
222 G4double fInvA23;
223
224 // parameter for Birks attenuation
225 G4double fBirks;
226 // average energy per ion pair
227 G4double fMeanEnergyPerIon;
228 G4double twoln10;
229
230 // static data created only once
231 static G4DensityEffectData* fDensityData;
232};
233
234//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
235
236#endif
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
G4double ComputeDensityCorrection(G4double x)
G4double GetF2fluct() const
G4double GetLogEnergy1fluct() const
G4bool operator==(const G4IonisParamMat &) const =delete
G4IonisParamMat & operator=(const G4IonisParamMat &)=delete
G4double GetMdensity() const
G4double GetX1density() const
G4double * GetShellCorrectionVector() const
G4double GetTaul() const
G4DensityEffectCalculator * GetDensityEffectCalculator() const
G4double GetAdjustmentFactor() const
G4double GetX0density() const
G4double DensityCorrection(G4double x) const
G4double GetCdensity() const
G4double GetLogEnergy2fluct() const
void SetDensityEffectParameters(G4double cd, G4double md, G4double ad, G4double x0, G4double x1, G4double d0)
G4double GetMeanExcitationEnergy() const
G4double GetF1fluct() const
G4double GetMeanEnergyPerIonPair() const
static G4DensityEffectData * GetDensityEffectData()
G4double FindMeanExcitationEnergy(const G4Material *) const
void ComputeDensityEffectOnFly(G4bool)
G4double GetInvA23() const
G4double GetD0density() const
G4double GetEnergy2fluct() const
G4double GetZeffective() const
G4IonisParamMat(const G4IonisParamMat &)=delete
G4double GetAdensity() const
G4double GetEnergy1fluct() const
G4double GetFermiEnergy() const
G4double GetDensityCorrection(G4double x) const
G4bool operator!=(const G4IonisParamMat &) const =delete
void SetMeanExcitationEnergy(G4double value)
G4double GetPlasmaEnergy() const
G4double GetLFactor() const
void SetBirksConstant(G4double value)
void SetMeanEnergyPerIonPair(G4double value)
G4double GetRateionexcfluct() const
G4double GetEnergy0fluct() const
G4double GetLogMeanExcEnergy() const
G4double GetBirksConstant() const