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
G4hRDEnergyLoss.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4hRDEnergyLoss.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
// GEANT 4 class header file
30
//
31
// History: first implementation, based on object model of
32
// 2nd December 1995, G.Cosmo
33
// ---------- G4hEnergyLoss physics process -----------
34
// by Laszlo Urban, 30 May 1997
35
//
36
// ************************************************************
37
// It is the first implementation of the NEW UNIFIED ENERGY LOSS PROCESS.
38
// It calculates the continuous energy loss for charged hadrons.
39
// Processes giving contribution to the continuous loss :
40
// ionisation (= cont.ion.loss + delta ray production)
41
// can be added more easily ..........
42
// This class creates static proton/antiproton dE/dx and range tables ,
43
// which tables can be used by other processes.
44
// The energy loss for other charged hadrons is calculated from the p/pbar
45
// tables with scaled kinetic energy.
46
//
47
// 7/10/98 L.Urban some bugs fixed + some cleanup
48
// 22/10/98 L.Urban cleanup
49
// 02/02/99 L.Urban several bugs fixed
50
// 31/03/00 V.Ivanchenko rename to lowenergy as G4hLowEnergyLoss.hh
51
// 09/08/00 V.Ivanchenko remove GetContinuousStepLimit and IsApplicable
52
// 23/11/01 V.Ivanchenko Move static member-functions from header to source
53
// 22/01/03 V.Ivanchenko Cuts per region
54
// 18/04/03 V.Ivanchenko Make dRoverRange protected
55
//
56
// 31 Jul 2008 MGP Short term supply of energy loss of hadrons through clone of
57
// former G4hLowEnergyLoss (with some initial cleaning)
58
// To be replaced by reworked class to deal with condensed/discrete
59
// issues properly
60
//
61
// --------------------------------------------------------------
62
63
// Class description:
64
// Short term supply of energy loss of hadrons through clone of former G4hLowEnergyLoss
65
// (with some initial cleaning)
66
// To be replaced by reworked class to deal with condensed/discrete issues properly
67
68
// --------------------------------------------------------------
69
70
71
#ifndef G4HRDENERGYLOSS_HH
72
#define G4HRDENERGYLOSS_HH 1
73
74
#include "
G4ios.hh
"
75
#include "
globals.hh
"
76
#include "
Randomize.hh
"
77
#include "
G4VContinuousDiscreteProcess.hh
"
78
#include "
G4Material.hh
"
79
#include "
G4Element.hh
"
80
#include "
G4Proton.hh
"
81
#include "
G4AntiProton.hh
"
82
#include "
G4Electron.hh
"
83
#include "
G4VParticleChange.hh
"
84
#include "
G4Track.hh
"
85
#include "
G4Step.hh
"
86
#include "
G4PhysicsLogVector.hh
"
87
#include "
G4PhysicsLinearVector.hh
"
88
89
class
G4EnergyLossMessenger;
90
91
class
G4hRDEnergyLoss
:
public
G4VContinuousDiscreteProcess
92
93
{
94
public
:
95
96
G4hRDEnergyLoss
(
const
G4String
& );
97
98
~G4hRDEnergyLoss
();
99
100
virtual
G4double
GetMeanFreePath
(
101
const
G4Track
&
track
,
102
G4double
previousStepSize,
103
enum
G4ForceCondition
*
condition
104
) = 0 ;
105
106
virtual
G4VParticleChange
*
PostStepDoIt
(
const
G4Track
& track,
107
const
G4Step
& Step) = 0 ;
108
109
// ---- MGP ---- All this static stuff is expected to disappear in a future
110
// development cycle
111
112
// get the number of processes contributing to the cont.energy loss
113
static
G4int
GetNumberOfProcesses
();
114
115
// set the number of processes contributing to the cont.energy loss
116
static
void
SetNumberOfProcesses
(
G4int
number);
117
118
// Increment the number of processes contributing to the cont.energy loss
119
static
void
PlusNumberOfProcesses
();
120
121
// decrement the number of processes contributing to the cont.energy loss
122
static
void
MinusNumberOfProcesses
();
123
124
static
void
SetdRoverRange
(
G4double
value
);
125
static
void
SetRndmStep
(
G4bool
value);
126
static
void
SetEnlossFluc
(
G4bool
value);
127
static
void
SetStepFunction
(
G4double
c1
,
G4double
c2
);
128
129
protected
:
130
131
G4bool
CutsWhereModified
();
132
133
// G4Material *lastMaterial ;
134
const
G4double
MaxExcitationNumber
;
135
const
G4double
probLimFluct
;
136
const
long
nmaxDirectFluct
,
nmaxCont1
,
nmaxCont2
;
137
138
static
void
BuildDEDXTable
(
const
G4ParticleDefinition
& aParticleType);
139
140
protected
:
141
142
static
G4ThreadLocal
G4PhysicsTable
*
theDEDXpTable
;
143
static
G4ThreadLocal
G4PhysicsTable
*
theDEDXpbarTable
;
144
static
G4ThreadLocal
G4PhysicsTable
*
theRangepTable
;
145
static
G4ThreadLocal
G4PhysicsTable
*
theRangepbarTable
;
146
147
//inverse of the range tables
148
static
G4ThreadLocal
G4PhysicsTable
*
theInverseRangepTable
;
149
static
G4ThreadLocal
G4PhysicsTable
*
theInverseRangepbarTable
;
150
151
//lab and proper time tables
152
static
G4ThreadLocal
G4PhysicsTable
*
theLabTimepTable
;
153
static
G4ThreadLocal
G4PhysicsTable
*
theLabTimepbarTable
;
154
155
static
G4ThreadLocal
G4PhysicsTable
*
theProperTimepTable
;
156
static
G4ThreadLocal
G4PhysicsTable
*
theProperTimepbarTable
;
157
158
// processes inherited from G4hRDEnergyLoss
159
// register themselves in the static array Recorder
160
static
G4ThreadLocal
G4PhysicsTable
**
RecorderOfpProcess
;
161
static
G4ThreadLocal
G4PhysicsTable
**
RecorderOfpbarProcess
;
162
static
G4ThreadLocal
G4int
CounterOfpProcess
;
163
static
G4ThreadLocal
G4int
CounterOfpbarProcess
;
164
165
// particle mass
166
static
G4ThreadLocal
G4double
ParticleMass
;
167
168
// cut in range
169
static
G4ThreadLocal
G4double
ptableElectronCutInRange
;
170
static
G4ThreadLocal
G4double
pbartableElectronCutInRange
;
171
172
static
G4ThreadLocal
G4double
Charge
;
173
174
static
G4ThreadLocal
G4double
LowestKineticEnergy
;
175
static
G4ThreadLocal
G4double
HighestKineticEnergy
;
176
static
G4ThreadLocal
G4int
TotBin
;
// number of bins in table,
177
// calculated in BuildPhysicsTable
178
179
static
G4ThreadLocal
G4double
RTable
,
LOGRTable
;
// LOGRTable=std::log(HighestKineticEnergy
180
// /LowestKineticEnergy)/TotBin
181
// RTable = std::exp(LOGRTable)
182
183
G4PhysicsTable
*
theLossTable
;
184
185
G4double
linLossLimit
;
186
187
G4double
MinKineticEnergy
;
188
189
static
G4ThreadLocal
G4double
dRoverRange
;
// maximum allowed deltarange/range
190
// in one step
191
static
G4ThreadLocal
G4double
finalRange
;
// last step before stop
192
static
G4ThreadLocal
G4double
c1lim
,
c2lim
,
c3lim
;
// coeffs for computing steplimit
193
194
static
G4ThreadLocal
G4bool
rndmStepFlag
;
195
static
G4ThreadLocal
G4bool
EnlossFlucFlag
;
196
197
198
private
:
199
200
// hide assignment operator
201
202
G4hRDEnergyLoss
(
G4hRDEnergyLoss
&);
203
G4hRDEnergyLoss
&
operator=
(
const
G4hRDEnergyLoss
&
right
);
204
205
// variables for the integration routines
206
static
G4ThreadLocal
G4double
Mass
,
taulow
,
tauhigh
,
ltaulow
,
ltauhigh
;
207
208
// ====================================================================
209
// static part of the class
210
211
static
void
BuildRangeTable
(
const
G4ParticleDefinition
& aParticleType);
212
213
static
void
BuildInverseRangeTable
(
const
G4ParticleDefinition
& aParticleType);
214
215
static
void
BuildTimeTables
(
const
G4ParticleDefinition
& aParticleType);
216
217
static
void
BuildLabTimeVector
(
G4int
materialIndex,
218
G4PhysicsLogVector
* rangeVector);
219
220
static
void
BuildProperTimeVector
(
G4int
materialIndex,
221
G4PhysicsLogVector
* rangeVector);
222
223
static
void
InvertRangeVector
(
G4int
materialIndex,
224
G4PhysicsLogVector
* rangeVector);
225
226
static
void
BuildRangeVector
(
G4int
materialIndex,
227
G4PhysicsLogVector
* rangeVector);
228
229
static
G4double
LabTimeIntLog
(
G4PhysicsVector
* physicsVector,
G4int
nbin);
230
231
static
G4double
ProperTimeIntLog
(
G4PhysicsVector
* physicsVector,
G4int
nbin);
232
233
static
G4double
RangeIntLin
(
G4PhysicsVector
* physicsVector,
G4int
nbin);
234
235
static
G4double
RangeIntLog
(
G4PhysicsVector
* physicsVector,
G4int
nbin);
236
237
static
void
BuildRangeCoeffATable
(
const
G4ParticleDefinition
& aParticleType);
238
static
void
BuildRangeCoeffBTable
(
const
G4ParticleDefinition
& aParticleType);
239
static
void
BuildRangeCoeffCTable
(
const
G4ParticleDefinition
& aParticleType);
240
241
// ====================================================================
242
243
static
G4ThreadLocal
G4PhysicsTable
*
theDEDXTable
;
244
245
static
G4ThreadLocal
G4PhysicsTable
*
theRangeTable
;
246
static
G4ThreadLocal
G4PhysicsTable
*
theInverseRangeTable
;
247
248
static
G4ThreadLocal
G4PhysicsTable
*
theLabTimeTable
;
249
static
G4ThreadLocal
G4PhysicsTable
*
theProperTimeTable
;
250
251
static
G4ThreadLocal
G4PhysicsTable
**
RecorderOfProcess
;
252
static
G4ThreadLocal
G4int
CounterOfProcess
;
253
254
static
G4ThreadLocal
G4PhysicsTable
*
thepRangeCoeffATable
;
255
static
G4ThreadLocal
G4PhysicsTable
*
thepRangeCoeffBTable
;
256
static
G4ThreadLocal
G4PhysicsTable
*
thepRangeCoeffCTable
;
257
static
G4ThreadLocal
G4PhysicsTable
*
thepbarRangeCoeffATable
;
258
static
G4ThreadLocal
G4PhysicsTable
*
thepbarRangeCoeffBTable
;
259
static
G4ThreadLocal
G4PhysicsTable
*
thepbarRangeCoeffCTable
;
260
261
static
G4ThreadLocal
G4PhysicsTable
*
theRangeCoeffATable
;
262
static
G4ThreadLocal
G4PhysicsTable
*
theRangeCoeffBTable
;
263
static
G4ThreadLocal
G4PhysicsTable
*
theRangeCoeffCTable
;
264
static
G4ThreadLocal
G4int
NumberOfProcesses
;
265
266
};
267
268
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
pii
include
G4hRDEnergyLoss.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:33
using
1.8.2 with
ECCE GitHub integration