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
G4LowEPPolarizedComptonModel.hh
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4LowEPPolarizedComptonModel.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
// | G4LowEPPolarizedComptonModel-- Geant4 Monash University |
29
// | polarised low energy Compton scattering model. |
30
// | J. M. C. Brown, Monash University, Australia |
31
// | |
32
// | |
33
// *********************************************************************
34
// | |
35
// | The following is a Geant4 class to simulate the process of |
36
// | bound electron Compton scattering. General code structure is |
37
// | based on G4LowEnergyCompton.cc and |
38
// | G4LivermorePolarizedComptonModel.cc. |
39
// | Algorithms for photon energy, and ejected Compton electron |
40
// | direction taken from: |
41
// | |
42
// | J. M. C. Brown, M. R. Dimmock, J. E. Gillam and D. M. Paganin, |
43
// | "A low energy bound atomic electron Compton scattering model |
44
// | for Geant4", NIMB, Vol. 338, 77-88, 2014. |
45
// | |
46
// | The author acknowledges the work of the Geant4 collaboration |
47
// | in developing the following algorithms that have been employed |
48
// | or adapeted for the present software: |
49
// | |
50
// | # sampling of photon scattering angle, |
51
// | # target element selection in composite materials, |
52
// | # target shell selection in element, |
53
// | # and sampling of bound electron momentum from Compton profiles. |
54
// | |
55
// *********************************************************************
56
// | |
57
// | History: |
58
// | -------- |
59
// | |
60
// | Jan. 2015 JMCB - 1st Version based on G4LowEPComptonModel |
61
// | Feb. 2016 JMCB - Geant4 10.2 FPE fix for bug 1676 |
62
// | Nov. 2016 JMCB - Polarisation tracking fix in collaboration |
63
// | of Dr. Merlin Reynaard Kole, |
64
// | University of Geneva |
65
// | |
66
// *********************************************************************
67
68
69
70
#ifndef G4LowEPPolarizedComptonModel_h
71
#define G4LowEPPolarizedComptonModel_h 1
72
73
#include "
G4VEmModel.hh
"
74
#include "
G4LPhysicsFreeVector.hh
"
75
#include <limits>
76
#include "
G4Electron.hh
"
77
#include "
G4ParticleChangeForGamma.hh
"
78
#include "
G4LossTableManager.hh
"
79
#include "
G4VAtomDeexcitation.hh
"
80
#include "
G4AtomicShell.hh
"
81
#include "
G4Gamma.hh
"
82
#include "
G4ShellData.hh
"
83
#include "
G4DopplerProfile.hh
"
84
#include "
G4Log.hh
"
85
#include "
G4Exp.hh
"
86
#include "
G4ForceCondition.hh
"
87
88
89
class
G4ParticleChangeForGamma
;
90
class
G4VAtomDeexcitation
;
91
class
G4ShellData
;
92
class
G4DopplerProfile
;
93
94
class
G4LowEPPolarizedComptonModel
:
public
G4VEmModel
95
{
96
97
public
:
98
99
G4LowEPPolarizedComptonModel
(
const
G4ParticleDefinition
*
p
= 0,
100
const
G4String
& nam =
"LowEPComptonModel"
);
101
102
virtual
~G4LowEPPolarizedComptonModel
();
103
104
virtual
void
Initialise
(
const
G4ParticleDefinition
*,
const
G4DataVector
&);
105
106
virtual
void
InitialiseLocal
(
const
G4ParticleDefinition
*,
107
G4VEmModel
* masterModel);
108
109
virtual
void
InitialiseForElement
(
const
G4ParticleDefinition
*,
G4int
Z
);
110
111
virtual
G4double
ComputeCrossSectionPerAtom
(
const
G4ParticleDefinition
*,
112
G4double
kinEnergy,
113
G4double
Z,
114
G4double
A
=0,
115
G4double
cut=0,
116
G4double
emax
=
DBL_MAX
);
117
118
virtual
void
SampleSecondaries
(std::vector<G4DynamicParticle*>*,
119
const
G4MaterialCutsCouple
*,
120
const
G4DynamicParticle
*,
121
G4double
tmin,
122
G4double
maxEnergy);
123
124
private
:
125
126
void
ReadData
(
size_t
Z,
const
char
* path = 0);
127
128
G4double
ComputeScatteringFunction
(
G4double
x
,
G4int
Z);
129
130
G4LowEPPolarizedComptonModel
&
operator=
(
const
G4LowEPPolarizedComptonModel
&
right
);
131
G4LowEPPolarizedComptonModel
(
const
G4LowEPPolarizedComptonModel
&);
132
133
G4ThreeVector
GetRandomPolarization
(
G4ThreeVector
& direction0);
// Random Polarization
134
G4ThreeVector
GetPerpendicularPolarization
(
const
G4ThreeVector
& direction0,
const
G4ThreeVector
& polarization0)
const
;
135
136
G4ThreeVector
SetNewPolarization
(
G4double
LowEPPCepsilon,
G4double
sinT2,
137
G4double
phi
,
G4double
cosTheta);
138
G4double
SetPhi
(
G4double
,
G4double
);
139
140
void
SystemOfRefChange
(
G4ThreeVector
& direction0,
G4ThreeVector
& direction1,
141
G4ThreeVector
& polarization0,
G4ThreeVector
& polarization1);
142
143
void
SystemOfRefChangeElect
(
G4ThreeVector
& pdirection,
G4ThreeVector
& edirection,
144
G4ThreeVector
& ppolarization);
145
146
147
G4ThreeVector
SetPerpendicularVector
(
G4ThreeVector
&
a
);
148
G4bool
isInitialised
;
149
G4int
verboseLevel
;
150
151
//G4double lowestEnergy;
152
153
G4ParticleChangeForGamma
*
fParticleChange
;
154
G4VAtomDeexcitation
*
fAtomDeexcitation
;
155
156
static
G4ShellData
*
shellData
;
157
static
G4DopplerProfile
*
profileData
;
158
159
static
G4int
maxZ
;
160
static
G4LPhysicsFreeVector
*
data
[100];
161
162
static
const
G4double
ScatFuncFitParam
[101][9];
163
164
};
165
166
//****************************************************************************
167
168
#endif
geant4
tree
geant4-10.6-release
source
processes
electromagnetic
lowenergy
include
G4LowEPPolarizedComptonModel.hh
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:31
using
1.8.2 with
ECCE GitHub integration