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