ECCE @ EIC Software
Reference for
ECCE @ EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
G4IonisParamMat.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4IonisParamMat.hh
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
"
50
#include "
G4Log.hh
"
51
#include "
G4Exp.hh
"
52
#include "
G4Threading.hh
"
53
54
class
G4Material
;
55
class
G4DensityEffectData
;
56
class
G4DensityEffectCalculator
;
57
58
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
59
60
class
G4IonisParamMat
61
{
62
public
:
63
64
G4IonisParamMat
(
const
G4Material
*);
65
~G4IonisParamMat
();
66
67
// parameters for mean energy loss calculation:
68
inline
69
G4double
GetMeanExcitationEnergy
()
const
{
return
fMeanExcitationEnergy
;};
70
71
void
SetMeanExcitationEnergy
(
G4double
value
);
72
G4double
FindMeanExcitationEnergy
(
const
G4Material
*)
const
;
73
74
inline
75
G4double
GetLogMeanExcEnergy
()
const
{
return
fLogMeanExcEnergy
;};
76
inline
77
G4double
*
GetShellCorrectionVector
()
const
{
return
fShellCorrectionVector
;};
78
inline
79
G4double
GetTaul
()
const
{
return
fTaul
;};
80
81
// parameters of the density correction:
82
inline
83
G4double
GetPlasmaEnergy
()
const
{
return
fPlasmaEnergy
;};
84
inline
85
G4double
GetAdjustmentFactor
()
const
{
return
fAdjustmentFactor
;};
86
inline
87
G4double
GetCdensity
()
const
{
return
fCdensity
;};
88
inline
89
G4double
GetMdensity
()
const
{
return
fMdensity
;};
90
inline
91
G4double
GetAdensity
()
const
{
return
fAdensity
;};
92
inline
93
G4double
GetX0density
()
const
{
return
fX0density
;};
94
inline
95
G4double
GetX1density
()
const
{
return
fX1density
;};
96
inline
97
G4double
GetD0density
()
const
{
return
fD0density
;};
98
99
// user defined density correction parameterisation
100
void
SetDensityEffectParameters
(
G4double
cd
,
G4double
md,
G4double
ad,
101
G4double
x0,
G4double
x1
,
G4double
d0);
102
103
// defined density correction parameterisation via base material
104
void
SetDensityEffectParameters
(
const
G4Material
* bmat);
105
106
void
ComputeDensityEffectOnFly
(
G4bool
);
107
108
// compute density correction as a function of the kinematic variable
109
// x = log10(beta*gamma)
110
G4double
DensityCorrection
(
G4double
x
);
111
112
inline
G4DensityEffectCalculator
*
GetDensityEffectCalculator
()
113
{
return
fDensityEffectCalc
; }
114
115
// use parameterisation
116
inline
G4double
GetDensityCorrection
(
G4double
x
);
117
118
static
G4DensityEffectData
*
GetDensityEffectData
();
119
120
// parameters of the energy loss fluctuation model:
121
inline
122
G4double
GetF1fluct
()
const
{
return
fF1fluct
;};
123
inline
124
G4double
GetF2fluct
()
const
{
return
fF2fluct
;};
125
inline
126
G4double
GetEnergy1fluct
()
const
{
return
fEnergy1fluct
;};
127
inline
128
G4double
GetLogEnergy1fluct
()
const
{
return
fLogEnergy1fluct
;};
129
inline
130
G4double
GetEnergy2fluct
()
const
{
return
fEnergy2fluct
;};
131
inline
132
G4double
GetLogEnergy2fluct
()
const
{
return
fLogEnergy2fluct
;};
133
inline
134
G4double
GetEnergy0fluct
()
const
{
return
fEnergy0fluct
;};
135
inline
136
G4double
GetRateionexcfluct
()
const
{
return
fRateionexcfluct
;};
137
138
// parameters for ion corrections computations
139
inline
140
G4double
GetZeffective
()
const
{
return
fZeff
;};
141
inline
142
G4double
GetFermiEnergy
()
const
{
return
fFermiEnergy
;};
143
inline
144
G4double
GetLFactor
()
const
{
return
fLfactor
;};
145
inline
146
G4double
GetInvA23
()
const
{
return
fInvA23
;};
147
148
// parameters for Birks attenuation:
149
inline
150
void
SetBirksConstant
(
G4double
value
) {
fBirks
=
value
;};
151
inline
152
G4double
GetBirksConstant
()
const
{
return
fBirks
;};
153
154
// parameters for average energy per ion
155
inline
156
void
SetMeanEnergyPerIonPair
(
G4double
value
) {
fMeanEnergyPerIon
=
value
;};
157
inline
158
G4double
GetMeanEnergyPerIonPair
()
const
{
return
fMeanEnergyPerIon
;};
159
160
G4IonisParamMat
(__void__&);
161
// Fake default constructor for usage restricted to direct object
162
// persistency for clients requiring preallocation of memory for
163
// persistifiable objects.
164
165
private
:
166
167
// Compute mean parameters : ExcitationEnergy,Shell corretion vector ...
168
void
ComputeMeanParameters
();
169
170
// Compute parameters for the density effect
171
void
ComputeDensityEffectParameters
();
172
173
// Compute parameters for the energy fluctuation model
174
void
ComputeFluctModel
();
175
176
// Compute parameters for ion parameterizations
177
void
ComputeIonParameters
();
178
179
// operators
180
G4IonisParamMat
&
operator=
(
const
G4IonisParamMat
&);
181
G4bool
operator==
(
const
G4IonisParamMat
&)
const
;
182
G4bool
operator!=
(
const
G4IonisParamMat
&)
const
;
183
G4IonisParamMat
(
const
G4IonisParamMat
&);
184
185
//
186
// data members
187
//
188
const
G4Material
*
fMaterial
;
// this material
189
190
G4DensityEffectCalculator
*
fDensityEffectCalc
;
// calculator of the density effect
191
G4double
*
fShellCorrectionVector
;
// shell correction coefficients
192
193
// parameters for mean energy loss calculation
194
G4double
fMeanExcitationEnergy
;
//
195
G4double
fLogMeanExcEnergy
;
//
196
G4double
fTaul
;
// lower limit of Bethe-Bloch formula
197
198
// parameters of the density correction
199
G4double
fCdensity
;
// mat.constant
200
G4double
fMdensity
;
// exponent
201
G4double
fAdensity
;
//
202
G4double
fX0density
;
//
203
G4double
fX1density
;
//
204
G4double
fD0density
;
205
206
G4double
fPlasmaEnergy
;
207
G4double
fAdjustmentFactor
;
208
209
// parameters of the energy loss fluctuation model
210
G4double
fF1fluct
;
211
G4double
fF2fluct
;
212
G4double
fEnergy1fluct
;
213
G4double
fLogEnergy1fluct
;
214
G4double
fEnergy2fluct
;
215
G4double
fLogEnergy2fluct
;
216
G4double
fEnergy0fluct
;
217
G4double
fRateionexcfluct
;
218
219
// parameters for ion corrections computations
220
G4double
fZeff
;
221
G4double
fFermiEnergy
;
222
G4double
fLfactor
;
223
G4double
fInvA23
;
224
225
// parameter for Birks attenuation
226
G4double
fBirks
;
227
// average energy per ion pair
228
G4double
fMeanEnergyPerIon
;
229
230
// static data created only once
231
static
G4DensityEffectData
*
fDensityData
;
232
G4double
twoln10
;
233
#ifdef G4MULTITHREADED
234
static
G4Mutex
ionisMutex;
235
#endif
236
};
237
238
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
239
240
inline
G4double
G4IonisParamMat::GetDensityCorrection
(
G4double
x
)
241
{
242
// x = log10(beta*gamma)
243
G4double
y
= 0.0;
244
if
(x <
fX0density
) {
245
if
(
fD0density
> 0.0) { y =
fD0density
*
G4Exp
(
twoln10
*(x -
fX0density
)); }
246
}
else
if
(x >=
fX1density
) { y =
twoln10
*x -
fCdensity
; }
247
else
{y =
twoln10
*x -
fCdensity
+
fAdensity
*
G4Exp
(
G4Log
(
fX1density
- x)*
fMdensity
);}
248
return
y
;
249
}
250
251
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... ....oooOO0OOooo....
252
253
#endif
geant4
tree
geant4-10.6-release
source
materials
include
G4IonisParamMat.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:22
using
1.8.2 with
ECCE GitHub integration