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
PhysListEmStandard.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file PhysListEmStandard.cc
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
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
28
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
29
30
#include "PhysListEmStandard.hh"
31
#include "
G4ParticleDefinition.hh
"
32
#include "
G4ProcessManager.hh
"
33
#include "
G4PhysicsListHelper.hh
"
34
35
#include "
G4ComptonScattering.hh
"
36
#include "
G4GammaConversion.hh
"
37
#include "
G4PhotoElectricEffect.hh
"
38
#include "
G4RayleighScattering.hh
"
39
#include "
G4KleinNishinaModel.hh
"
40
41
#include "
G4eMultipleScattering.hh
"
42
#include "
G4eIonisation.hh
"
43
#include "
G4eBremsstrahlung.hh
"
44
#include "
G4eplusAnnihilation.hh
"
45
46
#include "
G4MuMultipleScattering.hh
"
47
#include "
G4MuIonisation.hh
"
48
#include "
G4MuBremsstrahlung.hh
"
49
#include "
G4MuPairProduction.hh
"
50
51
#include "
G4hMultipleScattering.hh
"
52
#include "
G4hIonisation.hh
"
53
#include "
G4hBremsstrahlung.hh
"
54
#include "
G4hPairProduction.hh
"
55
56
#include "
G4ionIonisation.hh
"
57
#include "
G4IonParametrisedLossModel.hh
"
58
#include "
G4NuclearStopping.hh
"
59
60
#include "
G4MscStepLimitType.hh
"
61
62
#include "
G4LossTableManager.hh
"
63
#include "
G4UAtomicDeexcitation.hh
"
64
#include "
G4LindhardSorensenIonModel.hh
"
65
#include "
G4BraggIonModel.hh
"
66
67
#include "
G4BuilderType.hh
"
68
#include "
G4SystemOfUnits.hh
"
69
70
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
71
72
PhysListEmStandard::PhysListEmStandard
(
const
G4String
&
name
)
73
:
G4VPhysicsConstructor
(name)
74
{
75
G4EmParameters
* param =
G4EmParameters::Instance
();
76
param->
SetDefaults
();
77
param->
SetMinEnergy
(10*
eV
);
78
param->
SetMaxEnergy
(10*
TeV
);
79
param->
SetNumberOfBinsPerDecade
(10);
80
param->
SetMscStepLimitType
(
fUseSafetyPlus
);
81
param->
SetFluo
(
true
);
82
SetPhysicsType
(
bElectromagnetic
);
83
}
84
85
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
86
87
PhysListEmStandard::~PhysListEmStandard
()
88
{}
89
90
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
91
92
void
PhysListEmStandard::ConstructProcess
()
93
{
94
G4PhysicsListHelper
* ph =
G4PhysicsListHelper::GetPhysicsListHelper
();
95
96
// Add standard EM Processes
97
//
98
auto
particleIterator
=
GetParticleIterator
();
99
particleIterator
->reset();
100
while
( (*
particleIterator
)() ){
101
G4ParticleDefinition
*
particle
=
particleIterator
->value();
102
G4String
particleName = particle->
GetParticleName
();
103
104
if
(particleName ==
"gamma"
) {
105
106
ph->
RegisterProcess
(
new
G4PhotoElectricEffect
, particle);
107
G4ComptonScattering
* cs =
new
G4ComptonScattering
;
108
cs->
SetEmModel
(
new
G4KleinNishinaModel
());
109
ph->
RegisterProcess
(cs, particle);
110
ph->
RegisterProcess
(
new
G4GammaConversion
, particle);
111
ph->
RegisterProcess
(
new
G4RayleighScattering
, particle);
112
113
}
else
if
(particleName ==
"e-"
) {
114
115
ph->
RegisterProcess
(
new
G4eMultipleScattering
(), particle);
116
//
117
G4eIonisation
* eIoni =
new
G4eIonisation
();
118
eIoni->
SetStepFunction
(0.1, 100*
um
);
119
ph->
RegisterProcess
(eIoni, particle);
120
//
121
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
122
123
}
else
if
(particleName ==
"e+"
) {
124
125
ph->
RegisterProcess
(
new
G4eMultipleScattering
(), particle);
126
//
127
G4eIonisation
* eIoni =
new
G4eIonisation
();
128
eIoni->
SetStepFunction
(0.1, 100*
um
);
129
ph->
RegisterProcess
(eIoni, particle);
130
//
131
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
132
//
133
ph->
RegisterProcess
(
new
G4eplusAnnihilation
(), particle);
134
135
}
else
if
(particleName ==
"mu+"
||
136
particleName ==
"mu-"
) {
137
138
ph->
RegisterProcess
(
new
G4MuMultipleScattering
(), particle);
139
G4MuIonisation
* muIoni =
new
G4MuIonisation
();
140
muIoni->
SetStepFunction
(0.1, 50*
um
);
141
ph->
RegisterProcess
(muIoni, particle);
142
ph->
RegisterProcess
(
new
G4MuBremsstrahlung
(), particle);
143
ph->
RegisterProcess
(
new
G4MuPairProduction
(), particle);
144
145
}
else
if
( particleName ==
"proton"
||
146
particleName ==
"pi-"
||
147
particleName ==
"pi+"
) {
148
149
ph->
RegisterProcess
(
new
G4hMultipleScattering
(), particle);
150
G4hIonisation
* hIoni =
new
G4hIonisation
();
151
hIoni->
SetStepFunction
(0.1, 20*
um
);
152
ph->
RegisterProcess
(hIoni, particle);
153
ph->
RegisterProcess
(
new
G4hBremsstrahlung
(), particle);
154
ph->
RegisterProcess
(
new
G4hPairProduction
(), particle);
155
156
}
else
if
( particleName ==
"alpha"
||
157
particleName ==
"He3"
) {
158
159
ph->
RegisterProcess
(
new
G4hMultipleScattering
(), particle);
160
G4ionIonisation
* ionIoni =
new
G4ionIonisation
();
161
ionIoni->
SetStepFunction
(0.1, 1*
um
);
162
ph->
RegisterProcess
(ionIoni, particle);
163
ph->
RegisterProcess
(
new
G4NuclearStopping
(), particle);
164
165
}
else
if
( particleName ==
"GenericIon"
) {
166
167
ph->
RegisterProcess
(
new
G4hMultipleScattering
(), particle);
168
G4ionIonisation
* ionIoni =
new
G4ionIonisation
();
169
ionIoni->
SetEmModel
(
new
G4IonParametrisedLossModel
());
170
ionIoni->
SetStepFunction
(0.1, 1*
um
);
171
ph->
RegisterProcess
(ionIoni, particle);
172
ph->
RegisterProcess
(
new
G4NuclearStopping
(), particle);
173
174
}
else
if
((!particle->
IsShortLived
()) &&
175
(particle->
GetPDGCharge
() != 0.0) &&
176
(particle->
GetParticleName
() !=
"chargedgeantino"
)) {
177
178
//all others charged particles except geantino
179
ph->
RegisterProcess
(
new
G4hMultipleScattering
(), particle);
180
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
181
}
182
}
183
184
// Deexcitation
185
//
186
G4VAtomDeexcitation
* de =
new
G4UAtomicDeexcitation
();
187
G4LossTableManager::Instance
()->
SetAtomDeexcitation
(de);
188
}
189
190
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
191
geant4
tree
geant4-10.6-release
examples
extended
electromagnetic
TestEm5
src
PhysListEmStandard.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:24:51
using
1.8.2 with
ECCE GitHub integration