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
G4eLowEnergyLoss.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4eLowEnergyLoss.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
// -------------------------------------------------------------------
29
30
// Class description:
31
// Low Energy electromagnetic process, electron energy loss
32
// Further documentation available from http://www.ge.infn.it/geant4/lowE
33
34
// -------------------------------------------------------------------
35
//
36
// This class is the implementation of the unified Energy Loss process.
37
// It calculates the continuous energy loss for e+/e-.
38
// The following processes give contributions to the continuous
39
// energy loss (by default) :
40
// --- ionisation (= cont.ion.loss + delta ray production)
41
// --- bremsstrahlung (= cont.loss due to soft brems+discrete bremsstrahlung)
42
// more can be added ..........
43
// This class creates static dE/dx and range tables for e+ and e-,
44
// which tables can be used by other processes , too.
45
// G4eLowEnergyLoss is the base class for the processes giving contribution
46
// to the (continuous) energy loss of e+/e- .
47
//
48
// History: first implementation, based on object model of
49
// 2nd December 1995, G.Cosmo
50
// ---------- G4eLowEnergyLoss physics process -----------
51
// by Laszlo Urban, 20 March 1997
52
//
53
// 27.05.98 OldGetRange removed + other corrs , L.Urban
54
// 10.09.98 cleanup
55
// 16.10.98 public method SetStepFunction() + messenger class
56
// 20.01.99 new data members , L.Urban
57
// 10.02.00 modifications, new e.m. structure , L.Urban
58
// 18.10.01 Revision to improve code quality and consistency with design
59
// 23.11.01 V.Ivanchenko Move static member-functions from header to source
60
// 28.03.02 V.Ivanchenko add fluorescence flag
61
// 21.01.03 V.Ivanchenko cut per region
62
// ------------------------------------------------------------
63
64
#ifndef G4RDeLowEnergyLoss_h
65
#define G4RDeLowEnergyLoss_h 1
66
67
#include "
G4ios.hh
"
68
#include "
globals.hh
"
69
#include "
Randomize.hh
"
70
#include "
G4RDVeLowEnergyLoss.hh
"
71
#include "
G4Material.hh
"
72
#include "
G4Element.hh
"
73
#include "
G4ParticleChangeForLoss.hh
"
74
#include "
globals.hh
"
75
#include "
G4Track.hh
"
76
#include "
G4Step.hh
"
77
#include "
G4Electron.hh
"
78
#include "
G4Positron.hh
"
79
#include "
G4PhysicsLogVector.hh
"
80
#include "
G4PhysicsLinearVector.hh
"
81
#include "
G4EnergyLossTables.hh
"
82
83
class
G4EnergyLossMessenger;
84
85
class
G4eLowEnergyLoss
:
public
G4RDVeLowEnergyLoss
86
87
{
88
public
:
89
90
G4eLowEnergyLoss
(
const
G4String
& );
91
92
~G4eLowEnergyLoss
();
93
94
G4bool
IsApplicable
(
const
G4ParticleDefinition
&);
95
// true for e+/e- , false otherwise
96
97
void
BuildDEDXTable
(
const
G4ParticleDefinition
& aParticleType);
98
// It builds dE/dx and range tables for aParticleType and
99
// for every material contained in the materialtable.
100
101
G4double
GetContinuousStepLimit
(
const
G4Track
&
track
,
102
G4double
previousStepSize,
103
G4double
currentMinimumStep,
104
G4double
& currentSafety);
105
// Computes the steplimit due to the energy loss process.
106
107
G4VParticleChange
*
AlongStepDoIt
(
const
G4Track
& track,
108
const
G4Step
& Step) ;
109
// Performs the computation of the (continuous) energy loss
110
// after the step (with fluctuation).
111
112
virtual
G4double
GetMeanFreePath
(
const
G4Track
& track,
113
G4double
previousStepSize,
114
G4ForceCondition
*
condition
) = 0;
115
// Virtual function to be overridden in the derived classes
116
// ( ionisation and bremsstrahlung) .
117
118
virtual
G4VParticleChange
*
PostStepDoIt
(
const
G4Track
& track,
119
const
G4Step
&
step
) = 0;
120
// Virtual function to be overridden in the derived classes
121
// ( ionisation and bremsstrahlung) .
122
123
static
void
SetNbOfProcesses
(
G4int
nb);
124
// Sets number of processes giving contribution to the energy loss
125
126
static
void
PlusNbOfProcesses
();
127
// Increases number of processes giving contribution to the energy loss
128
129
static
void
MinusNbOfProcesses
();
130
// Decreases number of processes giving contribution to the energy loss
131
132
static
G4int
GetNbOfProcesses
();
133
// Gets number of processes giving contribution to the energy loss
134
// ( default value = 2)
135
136
static
void
SetLowerBoundEloss
(
G4double
val);
137
static
void
SetUpperBoundEloss
(
G4double
val);
138
static
void
SetNbinEloss
(
G4int
nb);
139
140
static
G4double
GetLowerBoundEloss
();
141
static
G4double
GetUpperBoundEloss
();
142
static
G4int
GetNbinEloss
();
143
144
void
ActivateFluorescence
(
G4bool
val);
145
// Set fluorescence flag on/off
146
147
G4bool
Fluorescence
()
const
;
148
// Get flurescence flag
149
150
protected
:
151
152
virtual
std::vector<G4DynamicParticle*>*
DeexciteAtom
(
const
G4MaterialCutsCouple
* ,
153
G4double
,
G4double
)
// incidentEnergy, eLoss
154
{
return
0; };
155
156
G4PhysicsTable
*
theLossTable
;
157
158
G4double
MinKineticEnergy
;
// particle with kinetic energy
159
// smaller than MinKineticEnergy
160
// is stopped in AlongStepDoIt
161
162
G4double
Charge
,
lastCharge
;
163
164
//basic DEDX and Range tables
165
static
G4PhysicsTable
*
theDEDXElectronTable
;
166
static
G4PhysicsTable
*
theDEDXPositronTable
;
167
static
G4PhysicsTable
*
theRangeElectronTable
;
168
static
G4PhysicsTable
*
theRangePositronTable
;
169
170
//inverse tables of the range tables
171
static
G4PhysicsTable
*
theInverseRangeElectronTable
;
172
static
G4PhysicsTable
*
theInverseRangePositronTable
;
173
174
// lab and proper time tables
175
static
G4PhysicsTable
*
theLabTimeElectronTable
;
176
static
G4PhysicsTable
*
theLabTimePositronTable
;
177
static
G4PhysicsTable
*
theProperTimeElectronTable
;
178
static
G4PhysicsTable
*
theProperTimePositronTable
;
179
180
//processes inherited from G4eLowEnergyLoss
181
//register themselves in the static array Recorder
182
//for electrons/positrons separately
183
//nb of contributing processes = NbOfProcesses
184
static
G4int
NbOfProcesses
;
185
static
G4int
CounterOfElectronProcess
;
186
static
G4int
CounterOfPositronProcess
;
187
static
G4PhysicsTable
**
RecorderOfElectronProcess
;
188
static
G4PhysicsTable
**
RecorderOfPositronProcess
;
189
190
191
private
:
192
193
G4double
GetConstraints
(
const
G4DynamicParticle
* aParticle,
194
const
G4MaterialCutsCouple
* couple);
195
196
// hide assignment operator
197
G4eLowEnergyLoss
(
G4eLowEnergyLoss
&);
198
G4eLowEnergyLoss
&
operator=
(
const
G4eLowEnergyLoss
&
right
);
199
200
201
G4PhysicsTable
*
theDEDXTable
;
202
203
G4int
CounterOfProcess
;
204
G4PhysicsTable
**
RecorderOfProcess
;
205
206
G4double
fdEdx
;
// computed in GetConstraints
207
G4double
fRangeNow
;
// computed in GetConstraints
208
209
G4double
linLossLimit
;
// used in AlongStepDoIt
210
211
212
//New ParticleChange
213
G4ParticleChangeForLoss
fParticleChange
;
214
215
//
216
// static part of the class
217
//
218
219
static
G4int
NbinEloss
;
// number of bins in table,
220
// calculated in BuildPhysicTable
221
static
G4double
LowerBoundEloss
;
222
static
G4double
UpperBoundEloss
;
223
static
G4double
RTable
,
LOGRTable
;
// LOGRTable=std::log(UpperBoundEloss-
224
// LowerBoundEloss)/NbinEloss
225
// RTable = std::exp(LOGRTable)
226
227
//for interpolation within the tables
228
static
G4PhysicsTable
*
theeRangeCoeffATable
;
229
static
G4PhysicsTable
*
theeRangeCoeffBTable
;
230
static
G4PhysicsTable
*
theeRangeCoeffCTable
;
231
static
G4PhysicsTable
*
thepRangeCoeffATable
;
232
static
G4PhysicsTable
*
thepRangeCoeffBTable
;
233
static
G4PhysicsTable
*
thepRangeCoeffCTable
;
234
235
static
G4EnergyLossMessenger*
eLossMessenger
;
236
237
G4bool
theFluo
;
// Fluorescence flag
238
239
};
240
241
#include "G4eLowEnergyLoss.icc"
242
243
#endif
244
geant4
tree
geant4-10.6-release
examples
advanced
eRosita
physics
include
G4eLowEnergyLoss.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:57
using
1.8.2 with
ECCE GitHub integration