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
G4VXTRenergyLoss.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4VXTRenergyLoss.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
//
30
//
31
// base class for 'fast' parametrisation model describing X-ray transition
32
// created in some G4Envelope. Anglur distribuiton is very rough !!! (see DoIt
33
// method
34
//
35
// History:
36
// 06.10.05 V. Grichine first step to discrete process
37
// 15.01.02 V. Grichine first version
38
// 28.07.05, P.Gumplinger add G4ProcessType to constructor
39
// 28.09.07, V.Ivanchenko general cleanup without change of algorithms
40
//
41
42
#ifndef G4VXTRenergyLoss_h
43
#define G4VXTRenergyLoss_h 1
44
45
#include <complex>
46
#include "
globals.hh
"
47
#include "
Randomize.hh
"
48
49
#include "
G4LogicalVolume.hh
"
50
51
#include "
G4PhysicsTable.hh
"
52
#include "
G4PhysicsLogVector.hh
"
53
#include "
G4Gamma.hh
"
54
#include "
G4ThreeVector.hh
"
55
#include "
G4ParticleMomentum.hh
"
56
#include "
G4Step.hh
"
57
#include "
G4Track.hh
"
58
#include "
G4VContinuousProcess.hh
"
59
#include "
G4VDiscreteProcess.hh
"
60
#include "
G4DynamicParticle.hh
"
61
#include "
G4Material.hh
"
62
#include "
G4PhysicsTable.hh
"
63
#include "
G4MaterialPropertiesTable.hh
"
64
#include "
G4PhysicsOrderedFreeVector.hh
"
65
#include "
G4Integrator.hh
"
66
#include "
G4ParticleChange.hh
"
67
68
class
G4SandiaTable
;
69
class
G4VParticleChange
;
70
class
G4PhysicsFreeVector
;
71
class
G4PhysicsLinearVector
;
72
73
class
G4VXTRenergyLoss
:
public
G4VDiscreteProcess
// G4VContinuousProcess
74
{
75
public
:
76
77
explicit
G4VXTRenergyLoss
(
G4LogicalVolume
*anEnvelope,
G4Material
*,
78
G4Material
*,
G4double
,
G4double
,
G4int
,
79
const
G4String
& processName =
"XTRenergyLoss"
,
80
G4ProcessType
type =
fElectromagnetic
);
81
virtual
~G4VXTRenergyLoss
();
82
83
// These virtual has to be implemented in inherited particular TR radiators
84
85
virtual
G4double
GetStackFactor
(
G4double
energy
,
G4double
gamma,
86
G4double
varAngle );
87
88
virtual
G4bool
IsApplicable
(
const
G4ParticleDefinition
&)
override
;
89
90
virtual
G4VParticleChange
*
PostStepDoIt
(
const
G4Track
& aTrack,
91
const
G4Step
& aStep)
override
;
92
93
virtual
G4double
GetMeanFreePath
(
const
G4Track
& aTrack,
94
G4double
previousStepSize,
95
G4ForceCondition
*
condition
)
override
;
96
97
virtual
void
BuildPhysicsTable
(
const
G4ParticleDefinition
&)
override
;
98
void
BuildEnergyTable
() ;
99
void
BuildAngleForEnergyBank
() ;
100
101
void
BuildTable
(){} ;
102
void
BuildAngleTable
() ;
103
void
BuildGlobalAngleTable
() ;
104
105
G4complex
OneInterfaceXTRdEdx
(
G4double
energy,
106
G4double
gamma,
107
G4double
varAngle ) ;
108
109
G4double
SpectralAngleXTRdEdx
(
G4double
varAngle) ;
110
111
virtual
G4double
SpectralXTRdEdx
(
G4double
energy) ;
112
113
G4double
AngleSpectralXTRdEdx
(
G4double
energy) ;
114
115
G4double
AngleXTRdEdx
(
G4double
varAngle) ;
116
117
119
120
G4double
OneBoundaryXTRNdensity
(
G4double
energy,
121
G4double
gamma,
122
G4double
varAngle )
const
;
123
124
125
// for photon energy distribution tables
126
127
G4double
XTRNSpectralAngleDensity
(
G4double
varAngle) ;
128
G4double
XTRNSpectralDensity
(
G4double
energy) ;
129
130
// for photon angle distribution tables
131
132
G4double
XTRNAngleSpectralDensity
(
G4double
energy) ;
133
G4double
XTRNAngleDensity
(
G4double
varAngle) ;
134
135
void
GetNumberOfPhotons
() ;
136
137
// Auxiliary functions for plate/gas material parameters
138
139
G4double
GetPlateFormationZone
(
G4double
,
G4double
,
G4double
);
140
G4complex
GetPlateComplexFZ
(
G4double
,
G4double
,
G4double
);
141
void
ComputePlatePhotoAbsCof
();
142
G4double
GetPlateLinearPhotoAbs
(
G4double
);
143
void
GetPlateZmuProduct
() ;
144
G4double
GetPlateZmuProduct
(
G4double
,
G4double
,
G4double
);
145
146
G4double
GetGasFormationZone
(
G4double
,
G4double
,
G4double
);
147
G4complex
GetGasComplexFZ
(
G4double
,
G4double
,
G4double
);
148
void
ComputeGasPhotoAbsCof
();
149
G4double
GetGasLinearPhotoAbs
(
G4double
);
150
void
GetGasZmuProduct
();
151
G4double
GetGasZmuProduct
(
G4double
,
G4double
,
G4double
);
152
153
G4double
GetPlateCompton
(
G4double
);
154
G4double
GetGasCompton
(
G4double
);
155
G4double
GetComptonPerAtom
(
G4double
,
G4double
);
156
157
G4double
GetXTRrandomEnergy
(
G4double
scaledTkin,
G4int
iTkin );
158
G4double
GetXTRenergy
(
G4int
iPlace,
G4double
position
,
G4int
iTransfer );
159
160
G4double
GetRandomAngle
(
G4double
energyXTR,
G4int
iTkin );
161
G4double
GetAngleXTR
(
G4int
iTR,
G4double
position
,
G4int
iAngle);
162
163
G4double
GetGamma
() {
return
fGamma
;};
164
G4double
GetEnergy
() {
return
fEnergy
;};
165
G4double
GetVarAngle
(){
return
fVarAngle
;};
166
167
void
SetGamma
(
G4double
gamma) {
fGamma
= gamma;};
168
void
SetEnergy
(
G4double
energy) {
fEnergy
=
energy
;};
169
void
SetVarAngle
(
G4double
varAngle){
fVarAngle
= varAngle;};
170
void
SetAngleRadDistr
(
G4bool
pAngleRadDistr){
fAngleRadDistr
=pAngleRadDistr;};
171
void
SetCompton
(
G4bool
pC){
fCompton
=pC;};
172
173
G4PhysicsLogVector
*
GetProtonVector
(){
return
fProtonEnergyVector
;};
174
G4int
GetTotBin
(){
return
fTotBin
;};
175
G4PhysicsFreeVector
*
GetAngleVector
(
G4double
energy,
G4int
n
);
176
177
protected
:
178
179
G4ParticleDefinition
*
fPtrGamma
;
// pointer to TR photon
180
181
G4double
*
fGammaCutInKineticEnergy
;
// TR photon cut in energy array
182
183
G4double
fGammaTkinCut
;
// Tkin cut of TR photon in current mat.
184
G4LogicalVolume
*
fEnvelope
;
185
G4PhysicsTable
*
fAngleDistrTable
;
186
G4PhysicsTable
*
fEnergyDistrTable
;
187
188
G4PhysicsLogVector
*
fProtonEnergyVector
;
189
G4PhysicsLogVector
*
fXTREnergyVector
;
190
191
G4double
fTheMinEnergyTR
;
// min TR energy
192
G4double
fTheMaxEnergyTR
;
// max TR energy
193
G4double
fMinEnergyTR
;
// min TR energy in material
194
G4double
fMaxEnergyTR
;
// max TR energy in material
195
G4double
fTheMaxAngle
;
// max theta of TR quanta
196
G4double
fTheMinAngle
;
// max theta of TR quanta
197
G4double
fMaxThetaTR
;
// max theta of TR quanta
198
G4int
fBinTR
;
// number of bins in TR vectors
199
200
G4double
fMinProtonTkin
;
// min Tkin of proton in tables
201
G4double
fMaxProtonTkin
;
// max Tkin of proton in tables
202
G4int
fTotBin
;
// number of bins in log scale
203
G4double
fGamma
;
// current Lorentz factor
204
G4double
fEnergy
;
// energy and
205
G4double
fVarAngle
;
// angle squared
206
G4double
fLambda
;
207
208
G4double
fPlasmaCof
;
// physical consts for plasma energy
209
G4double
fCofTR
;
210
211
G4bool
fExitFlux
;
212
G4bool
fAngleRadDistr
;
213
G4bool
fCompton
;
214
G4double
fSigma1
;
215
G4double
fSigma2
;
// plasma energy Sq of matter1/2
216
217
G4int
fMatIndex1
;
218
G4int
fMatIndex2
;
219
G4int
fPlateNumber
;
220
221
G4double
fTotalDist
;
222
G4double
fPlateThick
;
223
G4double
fGasThick
;
224
G4double
fAlphaPlate
;
225
G4double
fAlphaGas
;
226
227
G4SandiaTable
*
fPlatePhotoAbsCof
;
228
229
G4SandiaTable
*
fGasPhotoAbsCof
;
230
231
G4ParticleChange
fParticleChange
;
232
233
G4PhysicsTable
*
fAngleForEnergyTable
;
234
std::vector<G4PhysicsTable*>
fAngleBank
;
235
236
private
:
237
238
// copy constructor and hide assignment operator
239
G4VXTRenergyLoss
(
G4VXTRenergyLoss
&) =
delete
;
240
G4VXTRenergyLoss
&
operator=
(
const
G4VXTRenergyLoss
&
right
) =
delete
;
241
242
};
243
244
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
xrays
include
G4VXTRenergyLoss.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:36
using
1.8.2 with
ECCE GitHub integration