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
G4EmStandardPhysicsSS.cc
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file G4EmStandardPhysicsSS.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
//---------------------------------------------------------------------------
28
//
29
// ClassName: G4EmStandardPhysicsSS
30
//
31
// Author: V.Ivanchenko 09.11.2005
32
//
33
// Modified:
34
// 05.12.2005 V.Ivanchenko add controlled verbosity
35
// 13.11.2006 V.Ivanchenko use G4hMultipleScattering
36
// 23.11.2006 V.Ivanchenko remove mscStepLimit option and improve cout
37
// 13.02.2007 V.Ivanchenko use G4hMultipleScattering for muons
38
// 13.02.2007 V.Ivanchenko set skin=0.0
39
// 21.04.2008 V.Ivanchenko add long-lived D and B mesons
40
//
41
//----------------------------------------------------------------------------
42
//
43
44
#include "
G4EmStandardPhysicsSS.hh
"
45
#include "
G4SystemOfUnits.hh
"
46
#include "
G4ParticleDefinition.hh
"
47
#include "
G4EmParameters.hh
"
48
#include "
G4LossTableManager.hh
"
49
50
#include "
G4ComptonScattering.hh
"
51
#include "
G4GammaConversion.hh
"
52
#include "
G4PhotoElectricEffect.hh
"
53
#include "
G4RayleighScattering.hh
"
54
55
#include "
G4KleinNishinaModel.hh
"
56
#include "
G4LivermorePhotoElectricModel.hh
"
57
#include "
G4eMultipleScattering.hh
"
58
#include "
G4MuMultipleScattering.hh
"
59
#include "
G4hMultipleScattering.hh
"
60
#include "
G4CoulombScattering.hh
"
61
#include "
G4eCoulombScatteringModel.hh
"
62
#include "
G4hCoulombScatteringModel.hh
"
63
#include "
G4WentzelVIModel.hh
"
64
#include "
G4UrbanMscModel.hh
"
65
66
#include "
G4MuBremsstrahlungModel.hh
"
67
#include "
G4MuPairProductionModel.hh
"
68
#include "
G4hBremsstrahlungModel.hh
"
69
#include "
G4hPairProductionModel.hh
"
70
#include "
G4eSingleCoulombScatteringModel.hh
"
71
72
#include "
G4eIonisation.hh
"
73
#include "
G4eBremsstrahlung.hh
"
74
#include "
G4eplusAnnihilation.hh
"
75
#include "
G4UAtomicDeexcitation.hh
"
76
77
#include "
G4MuIonisation.hh
"
78
#include "
G4MuBremsstrahlung.hh
"
79
#include "
G4MuPairProduction.hh
"
80
#include "
G4hBremsstrahlung.hh
"
81
#include "
G4hPairProduction.hh
"
82
83
#include "
G4hIonisation.hh
"
84
#include "
G4ionIonisation.hh
"
85
#include "
G4alphaIonisation.hh
"
86
87
#include "
G4ParticleTable.hh
"
88
#include "
G4Gamma.hh
"
89
#include "
G4Electron.hh
"
90
#include "
G4Positron.hh
"
91
#include "
G4MuonPlus.hh
"
92
#include "
G4MuonMinus.hh
"
93
#include "
G4PionPlus.hh
"
94
#include "
G4PionMinus.hh
"
95
#include "
G4KaonPlus.hh
"
96
#include "
G4KaonMinus.hh
"
97
#include "
G4Proton.hh
"
98
#include "
G4AntiProton.hh
"
99
#include "
G4Deuteron.hh
"
100
#include "
G4Triton.hh
"
101
#include "
G4He3.hh
"
102
#include "
G4Alpha.hh
"
103
#include "
G4GenericIon.hh
"
104
105
#include "
G4PhysicsListHelper.hh
"
106
#include "
G4BuilderType.hh
"
107
#include "
G4EmModelActivator.hh
"
108
109
// factory
110
#include "
G4PhysicsConstructorFactory.hh
"
111
//
112
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4EmStandardPhysicsSS
);
113
114
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
115
116
G4EmStandardPhysicsSS::G4EmStandardPhysicsSS
(
G4int
ver)
117
:
G4VPhysicsConstructor
(
"G4EmStandardSS"
), verbose(ver)
118
{
119
G4EmParameters
* param =
G4EmParameters::Instance
();
120
param->
SetDefaults
();
121
param->
SetVerbose
(
verbose
);
122
param->
SetLowestElectronEnergy
(10*
eV
);
123
param->
SetMscThetaLimit
(0.0);
124
param->
SetAugerCascade
(
true
);
125
param->
SetPixe
(
true
);
126
SetPhysicsType
(
bElectromagnetic
);
127
}
128
129
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
130
131
G4EmStandardPhysicsSS::~G4EmStandardPhysicsSS
()
132
{}
133
134
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
135
136
void
G4EmStandardPhysicsSS::ConstructParticle
()
137
{
138
// gamma
139
G4Gamma::Gamma
();
140
141
// leptons
142
G4Electron::Electron
();
143
G4Positron::Positron
();
144
G4MuonPlus::MuonPlus
();
145
G4MuonMinus::MuonMinus
();
146
147
// mesons
148
G4PionPlus::PionPlusDefinition
();
149
G4PionMinus::PionMinusDefinition
();
150
G4KaonPlus::KaonPlusDefinition
();
151
G4KaonMinus::KaonMinusDefinition
();
152
153
// barions
154
G4Proton::Proton
();
155
G4AntiProton::AntiProton
();
156
157
// ions
158
G4Deuteron::Deuteron
();
159
G4Triton::Triton
();
160
G4He3::He3
();
161
G4Alpha::Alpha
();
162
G4GenericIon::GenericIonDefinition
();
163
}
164
165
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
166
167
void
G4EmStandardPhysicsSS::ConstructProcess
()
168
{
169
if
(
verbose
> 1) {
170
G4cout
<<
"### "
<<
GetPhysicsName
() <<
" Construct Processes "
<<
G4endl
;
171
}
172
G4PhysicsListHelper
* ph =
G4PhysicsListHelper::GetPhysicsListHelper
();
173
174
// muon & hadron bremsstrahlung and pair production
175
G4MuBremsstrahlung
* mub =
new
G4MuBremsstrahlung
();
176
G4MuPairProduction
*
mup
=
new
G4MuPairProduction
();
177
G4hBremsstrahlung
* pib =
new
G4hBremsstrahlung
();
178
G4hPairProduction
*
pip
=
new
G4hPairProduction
();
179
G4hBremsstrahlung
* kb =
new
G4hBremsstrahlung
();
180
G4hPairProduction
* kp =
new
G4hPairProduction
();
181
G4hBremsstrahlung
* pb =
new
G4hBremsstrahlung
();
182
G4hPairProduction
*
pp
=
new
G4hPairProduction
();
183
184
// muon & hadron scattering
185
G4CoulombScattering
* muss =
new
G4CoulombScattering
();
186
muss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
187
G4CoulombScattering
* piss =
new
G4CoulombScattering
();
188
piss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
189
G4CoulombScattering
* kss =
new
G4CoulombScattering
();
190
kss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
191
192
// Add standard EM Processes
193
G4ParticleTable
* table =
G4ParticleTable::GetParticleTable
();
194
for
(
const
auto
& particleName :
partList
.
PartNames
()) {
195
G4ParticleDefinition
*
particle
= table->
FindParticle
(particleName);
196
if
(!particle) {
continue
; }
197
if
(particleName ==
"gamma"
) {
198
199
G4PhotoElectricEffect
* pee =
new
G4PhotoElectricEffect
();
200
pee->
SetEmModel
(
new
G4LivermorePhotoElectricModel
());
201
202
G4ComptonScattering
* cs =
new
G4ComptonScattering
;
203
cs->
SetEmModel
(
new
G4KleinNishinaModel
());
204
205
ph->
RegisterProcess
(pee, particle);
206
ph->
RegisterProcess
(cs, particle);
207
ph->
RegisterProcess
(
new
G4GammaConversion
(), particle);
208
ph->
RegisterProcess
(
new
G4RayleighScattering
(), particle);
209
210
}
else
if
(particleName ==
"e-"
) {
211
212
G4CoulombScattering
* ss =
new
G4CoulombScattering
();
213
if
(
G4EmParameters::Instance
()->UseMottCorrection()) {
214
ss->
SetEmModel
(
new
G4eSingleCoulombScatteringModel
());
215
}
216
217
ph->
RegisterProcess
(
new
G4eIonisation
(), particle);
218
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
219
ph->
RegisterProcess
(ss, particle);
220
221
}
else
if
(particleName ==
"e+"
) {
222
223
G4CoulombScattering
* ss =
new
G4CoulombScattering
();
224
if
(
G4EmParameters::Instance
()->UseMottCorrection()) {
225
ss->
SetEmModel
(
new
G4eSingleCoulombScatteringModel
());
226
}
227
228
ph->
RegisterProcess
(
new
G4eIonisation
(), particle);
229
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
230
ph->
RegisterProcess
(
new
G4eplusAnnihilation
(), particle);
231
ph->
RegisterProcess
(ss, particle);
232
233
}
else
if
(particleName ==
"mu+"
||
234
particleName ==
"mu-"
) {
235
236
ph->
RegisterProcess
(
new
G4MuIonisation
(), particle);
237
ph->
RegisterProcess
(mub, particle);
238
ph->
RegisterProcess
(mup, particle);
239
ph->
RegisterProcess
(muss, particle);
240
241
}
else
if
(particleName ==
"alpha"
||
242
particleName ==
"He3"
) {
243
244
ph->
RegisterProcess
(
new
G4ionIonisation
(), particle);
245
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
246
247
}
else
if
(particleName ==
"GenericIon"
) {
248
249
ph->
RegisterProcess
(
new
G4ionIonisation
(), particle);
250
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
251
252
}
else
if
(particleName ==
"pi+"
||
253
particleName ==
"pi-"
) {
254
255
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
256
ph->
RegisterProcess
(pib, particle);
257
ph->
RegisterProcess
(pip, particle);
258
ph->
RegisterProcess
(piss, particle);
259
260
}
else
if
(particleName ==
"kaon+"
||
261
particleName ==
"kaon-"
) {
262
263
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
264
ph->
RegisterProcess
(kb, particle);
265
ph->
RegisterProcess
(kp, particle);
266
ph->
RegisterProcess
(kss, particle);
267
268
}
else
if
(particleName ==
"proton"
||
269
particleName ==
"anti_proton"
) {
270
271
G4CoulombScattering
* pss =
new
G4CoulombScattering
();
272
pss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
273
274
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
275
ph->
RegisterProcess
(pb, particle);
276
ph->
RegisterProcess
(pp, particle);
277
ph->
RegisterProcess
(pss, particle);
278
279
}
else
if
(particleName ==
"B+"
||
280
particleName ==
"B-"
||
281
particleName ==
"D+"
||
282
particleName ==
"D-"
||
283
particleName ==
"Ds+"
||
284
particleName ==
"Ds-"
||
285
particleName ==
"anti_He3"
||
286
particleName ==
"anti_alpha"
||
287
particleName ==
"anti_deuteron"
||
288
particleName ==
"anti_lambda_c+"
||
289
particleName ==
"anti_omega-"
||
290
particleName ==
"anti_sigma_c+"
||
291
particleName ==
"anti_sigma_c++"
||
292
particleName ==
"anti_sigma+"
||
293
particleName ==
"anti_sigma-"
||
294
particleName ==
"anti_triton"
||
295
particleName ==
"anti_xi_c+"
||
296
particleName ==
"anti_xi-"
||
297
particleName ==
"deuteron"
||
298
particleName ==
"lambda_c+"
||
299
particleName ==
"omega-"
||
300
particleName ==
"sigma_c+"
||
301
particleName ==
"sigma_c++"
||
302
particleName ==
"sigma+"
||
303
particleName ==
"sigma-"
||
304
particleName ==
"tau+"
||
305
particleName ==
"tau-"
||
306
particleName ==
"triton"
||
307
particleName ==
"xi_c+"
||
308
particleName ==
"xi-"
) {
309
310
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
311
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
312
}
313
}
314
315
// Deexcitation
316
//
317
G4VAtomDeexcitation
* de =
new
G4UAtomicDeexcitation
();
318
G4LossTableManager::Instance
()->
SetAtomDeexcitation
(de);
319
320
G4EmModelActivator
mact(
GetPhysicsName
());
321
}
322
323
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
geant4
tree
geant4-10.6-release
source
physics_lists
constructors
electromagnetic
src
G4EmStandardPhysicsSS.cc
Built by
Jin Huang
. updated:
Wed Jun 29 2022 17:25:27
using
1.8.2 with
ECCE GitHub integration