Geant4
10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EmStandardPhysicsSS.cc
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
//---------------------------------------------------------------------------
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 "
G4EmBuilder.hh
"
49
#include "
G4LossTableManager.hh
"
50
51
#include "
G4ComptonScattering.hh
"
52
#include "
G4GammaConversion.hh
"
53
#include "
G4PhotoElectricEffect.hh
"
54
#include "
G4RayleighScattering.hh
"
55
56
#include "
G4KleinNishinaModel.hh
"
57
#include "
G4LivermorePhotoElectricModel.hh
"
58
#include "
G4eMultipleScattering.hh
"
59
#include "
G4MuMultipleScattering.hh
"
60
#include "
G4hMultipleScattering.hh
"
61
#include "
G4CoulombScattering.hh
"
62
#include "
G4eCoulombScatteringModel.hh
"
63
#include "
G4hCoulombScatteringModel.hh
"
64
#include "
G4WentzelVIModel.hh
"
65
#include "
G4UrbanMscModel.hh
"
66
67
#include "
G4MuBremsstrahlungModel.hh
"
68
#include "
G4MuPairProductionModel.hh
"
69
#include "
G4hBremsstrahlungModel.hh
"
70
#include "
G4hPairProductionModel.hh
"
71
//#include "G4eSingleCoulombScatteringModel.hh"
72
#include "
G4eDPWACoulombScatteringModel.hh
"
73
74
#include "
G4eIonisation.hh
"
75
#include "
G4eBremsstrahlung.hh
"
76
#include "
G4eplusAnnihilation.hh
"
77
#include "
G4UAtomicDeexcitation.hh
"
78
79
#include "
G4MuIonisation.hh
"
80
#include "
G4MuBremsstrahlung.hh
"
81
#include "
G4MuPairProduction.hh
"
82
#include "
G4hBremsstrahlung.hh
"
83
#include "
G4hPairProduction.hh
"
84
85
#include "
G4hIonisation.hh
"
86
#include "
G4ionIonisation.hh
"
87
#include "
G4alphaIonisation.hh
"
88
89
#include "
G4ParticleTable.hh
"
90
#include "
G4Gamma.hh
"
91
#include "
G4Electron.hh
"
92
#include "
G4Positron.hh
"
93
#include "
G4MuonPlus.hh
"
94
#include "
G4MuonMinus.hh
"
95
#include "
G4PionPlus.hh
"
96
#include "
G4PionMinus.hh
"
97
#include "
G4KaonPlus.hh
"
98
#include "
G4KaonMinus.hh
"
99
#include "
G4Proton.hh
"
100
#include "
G4AntiProton.hh
"
101
#include "
G4Deuteron.hh
"
102
#include "
G4Triton.hh
"
103
#include "
G4He3.hh
"
104
#include "
G4Alpha.hh
"
105
#include "
G4GenericIon.hh
"
106
107
#include "
G4PhysicsListHelper.hh
"
108
#include "
G4BuilderType.hh
"
109
#include "
G4EmModelActivator.hh
"
110
111
// factory
112
#include "
G4PhysicsConstructorFactory.hh
"
113
//
114
G4_DECLARE_PHYSCONSTR_FACTORY
(
G4EmStandardPhysicsSS
);
115
116
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
117
118
G4EmStandardPhysicsSS::G4EmStandardPhysicsSS
(
G4int
ver)
119
:
G4VPhysicsConstructor
(
"G4EmStandardSS"
), verbose(ver)
120
{
121
G4EmParameters
* param =
G4EmParameters::Instance
();
122
param->
SetDefaults
();
123
param->
SetVerbose
(verbose);
124
param->
SetLowestElectronEnergy
(10*CLHEP::eV);
125
param->
SetMscThetaLimit
(0.0);
126
param->
SetAugerCascade
(
true
);
127
param->
SetPixe
(
true
);
128
SetPhysicsType
(
bElectromagnetic
);
129
}
130
131
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
132
133
G4EmStandardPhysicsSS::~G4EmStandardPhysicsSS
()
134
{}
135
136
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
137
138
void
G4EmStandardPhysicsSS::ConstructParticle
()
139
{
140
// minimal set of particles for EM physics
141
G4EmBuilder::ConstructMinimalEmSet
();
142
}
143
144
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
145
146
void
G4EmStandardPhysicsSS::ConstructProcess
()
147
{
148
if
(verbose > 1) {
149
G4cout
<<
"### "
<<
GetPhysicsName
() <<
" Construct Processes "
<<
G4endl
;
150
}
151
G4EmBuilder::PrepareEMPhysics
();
152
153
G4PhysicsListHelper
* ph =
G4PhysicsListHelper::GetPhysicsListHelper
();
154
155
// muon & hadron bremsstrahlung and pair production
156
G4MuBremsstrahlung
* mub =
new
G4MuBremsstrahlung
();
157
G4MuPairProduction
* mup =
new
G4MuPairProduction
();
158
G4hBremsstrahlung
* pib =
new
G4hBremsstrahlung
();
159
G4hPairProduction
* pip =
new
G4hPairProduction
();
160
G4hBremsstrahlung
* kb =
new
G4hBremsstrahlung
();
161
G4hPairProduction
* kp =
new
G4hPairProduction
();
162
G4hBremsstrahlung
* pb =
new
G4hBremsstrahlung
();
163
G4hPairProduction
* pp =
new
G4hPairProduction
();
164
165
// muon & hadron scattering
166
G4CoulombScattering
* muss =
new
G4CoulombScattering
();
167
muss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
168
G4CoulombScattering
* piss =
new
G4CoulombScattering
();
169
piss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
170
G4CoulombScattering
* kss =
new
G4CoulombScattering
();
171
kss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
172
173
// Add standard EM Processes
174
G4ParticleTable
* table =
G4ParticleTable::GetParticleTable
();
175
for
(
const
auto
& particleName : partList.
PartNames
()) {
176
G4ParticleDefinition
* particle = table->
FindParticle
(particleName);
177
if
(!particle) {
continue
; }
178
if
(particleName ==
"gamma"
) {
179
180
G4PhotoElectricEffect
* pee =
new
G4PhotoElectricEffect
();
181
pee->
SetEmModel
(
new
G4LivermorePhotoElectricModel
());
182
183
G4ComptonScattering
* cs =
new
G4ComptonScattering
;
184
cs->
SetEmModel
(
new
G4KleinNishinaModel
());
185
186
ph->
RegisterProcess
(pee, particle);
187
ph->
RegisterProcess
(cs, particle);
188
ph->
RegisterProcess
(
new
G4GammaConversion
(), particle);
189
ph->
RegisterProcess
(
new
G4RayleighScattering
(), particle);
190
191
}
else
if
(particleName ==
"e-"
) {
192
193
G4CoulombScattering
* ss =
new
G4CoulombScattering
();
194
ss->
AddEmModel
(0,
new
G4eDPWACoulombScatteringModel
());
195
// if(G4EmParameters::Instance()->UseMottCorrection()) {
196
// ss->SetEmModel(new G4eSingleCoulombScatteringModel());
197
// }
198
199
ph->
RegisterProcess
(
new
G4eIonisation
(), particle);
200
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
201
ph->
RegisterProcess
(ss, particle);
202
203
}
else
if
(particleName ==
"e+"
) {
204
205
G4CoulombScattering
* ss =
new
G4CoulombScattering
();
206
ss->
AddEmModel
(0,
new
G4eDPWACoulombScatteringModel
());
207
// if(G4EmParameters::Instance()->UseMottCorrection()) {
208
// ss->SetEmModel(new G4eSingleCoulombScatteringModel());
209
// }
210
211
ph->
RegisterProcess
(
new
G4eIonisation
(), particle);
212
ph->
RegisterProcess
(
new
G4eBremsstrahlung
(), particle);
213
ph->
RegisterProcess
(
new
G4eplusAnnihilation
(), particle);
214
ph->
RegisterProcess
(ss, particle);
215
216
}
else
if
(particleName ==
"mu+"
||
217
particleName ==
"mu-"
) {
218
219
ph->
RegisterProcess
(
new
G4MuIonisation
(), particle);
220
ph->
RegisterProcess
(mub, particle);
221
ph->
RegisterProcess
(mup, particle);
222
ph->
RegisterProcess
(muss, particle);
223
224
}
else
if
(particleName ==
"alpha"
||
225
particleName ==
"He3"
) {
226
227
ph->
RegisterProcess
(
new
G4ionIonisation
(), particle);
228
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
229
230
}
else
if
(particleName ==
"GenericIon"
) {
231
232
ph->
RegisterProcess
(
new
G4ionIonisation
(), particle);
233
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
234
235
}
else
if
(particleName ==
"pi+"
||
236
particleName ==
"pi-"
) {
237
238
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
239
ph->
RegisterProcess
(pib, particle);
240
ph->
RegisterProcess
(pip, particle);
241
ph->
RegisterProcess
(piss, particle);
242
243
}
else
if
(particleName ==
"kaon+"
||
244
particleName ==
"kaon-"
) {
245
246
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
247
ph->
RegisterProcess
(kb, particle);
248
ph->
RegisterProcess
(kp, particle);
249
ph->
RegisterProcess
(kss, particle);
250
251
}
else
if
(particleName ==
"proton"
||
252
particleName ==
"anti_proton"
) {
253
254
G4CoulombScattering
* pss =
new
G4CoulombScattering
();
255
pss->
SetEmModel
(
new
G4hCoulombScatteringModel
());
256
257
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
258
ph->
RegisterProcess
(pb, particle);
259
ph->
RegisterProcess
(pp, particle);
260
ph->
RegisterProcess
(pss, particle);
261
262
}
else
if
(particleName ==
"B+"
||
263
particleName ==
"B-"
||
264
particleName ==
"D+"
||
265
particleName ==
"D-"
||
266
particleName ==
"Ds+"
||
267
particleName ==
"Ds-"
||
268
particleName ==
"anti_He3"
||
269
particleName ==
"anti_alpha"
||
270
particleName ==
"anti_deuteron"
||
271
particleName ==
"anti_lambda_c+"
||
272
particleName ==
"anti_omega-"
||
273
particleName ==
"anti_sigma_c+"
||
274
particleName ==
"anti_sigma_c++"
||
275
particleName ==
"anti_sigma+"
||
276
particleName ==
"anti_sigma-"
||
277
particleName ==
"anti_triton"
||
278
particleName ==
"anti_xi_c+"
||
279
particleName ==
"anti_xi-"
||
280
particleName ==
"deuteron"
||
281
particleName ==
"lambda_c+"
||
282
particleName ==
"omega-"
||
283
particleName ==
"sigma_c+"
||
284
particleName ==
"sigma_c++"
||
285
particleName ==
"sigma+"
||
286
particleName ==
"sigma-"
||
287
particleName ==
"tau+"
||
288
particleName ==
"tau-"
||
289
particleName ==
"triton"
||
290
particleName ==
"xi_c+"
||
291
particleName ==
"xi-"
) {
292
293
ph->
RegisterProcess
(
new
G4hIonisation
(), particle);
294
ph->
RegisterProcess
(
new
G4CoulombScattering
(), particle);
295
}
296
}
297
298
G4EmModelActivator
mact(
GetPhysicsName
());
299
}
300
301
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
G4Alpha.hh
G4AntiProton.hh
G4BuilderType.hh
bElectromagnetic
@ bElectromagnetic
Definition:
G4BuilderType.hh:47
G4ComptonScattering.hh
G4CoulombScattering.hh
G4Deuteron.hh
G4Electron.hh
G4EmBuilder.hh
G4EmModelActivator.hh
G4EmParameters.hh
G4EmStandardPhysicsSS.hh
G4GammaConversion.hh
G4Gamma.hh
G4GenericIon.hh
G4He3.hh
G4KaonMinus.hh
G4KaonPlus.hh
G4KleinNishinaModel.hh
G4LivermorePhotoElectricModel.hh
G4LossTableManager.hh
G4MuBremsstrahlungModel.hh
G4MuBremsstrahlung.hh
G4MuIonisation.hh
G4MuMultipleScattering.hh
G4MuPairProductionModel.hh
G4MuPairProduction.hh
G4MuonMinus.hh
G4MuonPlus.hh
G4ParticleDefinition.hh
G4ParticleTable.hh
G4PhotoElectricEffect.hh
G4PhysicsConstructorFactory.hh
G4_DECLARE_PHYSCONSTR_FACTORY
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
Definition:
G4PhysicsConstructorFactory.hh:59
G4PhysicsListHelper.hh
G4PionMinus.hh
G4PionPlus.hh
G4Positron.hh
G4Proton.hh
G4RayleighScattering.hh
G4SystemOfUnits.hh
G4Triton.hh
G4int
int G4int
Definition:
G4Types.hh:85
G4UAtomicDeexcitation.hh
G4UrbanMscModel.hh
G4WentzelVIModel.hh
G4alphaIonisation.hh
G4eBremsstrahlung.hh
G4eCoulombScatteringModel.hh
G4eDPWACoulombScatteringModel.hh
G4eIonisation.hh
G4eMultipleScattering.hh
G4eplusAnnihilation.hh
G4hBremsstrahlungModel.hh
G4hBremsstrahlung.hh
G4hCoulombScatteringModel.hh
G4hIonisation.hh
G4hMultipleScattering.hh
G4hPairProductionModel.hh
G4hPairProduction.hh
G4ionIonisation.hh
G4endl
#define G4endl
Definition:
G4ios.hh:57
G4cout
G4GLOB_DLL std::ostream G4cout
G4ComptonScattering
Definition:
G4ComptonScattering.hh:72
G4CoulombScattering
Definition:
G4CoulombScattering.hh:55
G4EmBuilder::ConstructMinimalEmSet
static void ConstructMinimalEmSet()
Definition:
G4EmBuilder.cc:234
G4EmBuilder::PrepareEMPhysics
static void PrepareEMPhysics()
Definition:
G4EmBuilder.cc:259
G4EmModelActivator
Definition:
G4EmModelActivator.hh:59
G4EmParameters
Definition:
G4EmParameters.hh:81
G4EmParameters::SetLowestElectronEnergy
void SetLowestElectronEnergy(G4double val)
Definition:
G4EmParameters.cc:594
G4EmParameters::Instance
static G4EmParameters * Instance()
Definition:
G4EmParameters.cc:67
G4EmParameters::SetDefaults
void SetDefaults()
Definition:
G4EmParameters.cc:109
G4EmParameters::SetMscThetaLimit
void SetMscThetaLimit(G4double val)
Definition:
G4EmParameters.cc:739
G4EmParameters::SetAugerCascade
void SetAugerCascade(G4bool val)
Definition:
G4EmParameters.cc:275
G4EmParameters::SetVerbose
void SetVerbose(G4int val)
Definition:
G4EmParameters.cc:968
G4EmParameters::SetPixe
void SetPixe(G4bool val)
Definition:
G4EmParameters.cc:286
G4EmParticleList::PartNames
const std::vector< G4String > & PartNames() const
Definition:
G4EmParticleList.cc:61
G4EmStandardPhysicsSS
Definition:
G4EmStandardPhysicsSS.hh:51
G4EmStandardPhysicsSS::G4EmStandardPhysicsSS
G4EmStandardPhysicsSS(G4int ver=1)
Definition:
G4EmStandardPhysicsSS.cc:118
G4EmStandardPhysicsSS::ConstructProcess
void ConstructProcess() override
Definition:
G4EmStandardPhysicsSS.cc:146
G4EmStandardPhysicsSS::ConstructParticle
void ConstructParticle() override
Definition:
G4EmStandardPhysicsSS.cc:138
G4EmStandardPhysicsSS::~G4EmStandardPhysicsSS
~G4EmStandardPhysicsSS() override
Definition:
G4EmStandardPhysicsSS.cc:133
G4GammaConversion
Definition:
G4GammaConversion.hh:76
G4KleinNishinaModel
Definition:
G4KleinNishinaModel.hh:59
G4LivermorePhotoElectricModel
Definition:
G4LivermorePhotoElectricModel.hh:51
G4MuBremsstrahlung
Definition:
G4MuBremsstrahlung.hh:79
G4MuIonisation
Definition:
G4MuIonisation.hh:85
G4MuPairProduction
Definition:
G4MuPairProduction.hh:74
G4ParticleDefinition
Definition:
G4ParticleDefinition.hh:60
G4ParticleTable
Definition:
G4ParticleTable.hh:60
G4ParticleTable::FindParticle
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
Definition:
G4ParticleTable.cc:586
G4ParticleTable::GetParticleTable
static G4ParticleTable * GetParticleTable()
Definition:
G4ParticleTable.cc:87
G4PhotoElectricEffect
Definition:
G4PhotoElectricEffect.hh:80
G4PhysicsListHelper
Definition:
G4PhysicsListHelper.hh:52
G4PhysicsListHelper::RegisterProcess
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
Definition:
G4PhysicsListHelper.cc:471
G4PhysicsListHelper::GetPhysicsListHelper
static G4PhysicsListHelper * GetPhysicsListHelper()
Definition:
G4PhysicsListHelper.cc:92
G4RayleighScattering
Definition:
G4RayleighScattering.hh:52
G4VEmProcess::AddEmModel
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
Definition:
G4VEmProcess.cc:193
G4VEmProcess::SetEmModel
void SetEmModel(G4VEmModel *, G4int index=0)
Definition:
G4VEmProcess.cc:203
G4VPhysicsConstructor
Definition:
G4VPhysicsConstructor.hh:128
G4VPhysicsConstructor::GetPhysicsName
const G4String & GetPhysicsName() const
Definition:
G4VPhysicsConstructor.hh:206
G4VPhysicsConstructor::SetPhysicsType
void SetPhysicsType(G4int)
Definition:
G4VPhysicsConstructor.hh:211
G4eBremsstrahlung
Definition:
G4eBremsstrahlung.hh:81
G4eDPWACoulombScatteringModel
Definition:
G4eDPWACoulombScatteringModel.hh:68
G4eIonisation
Definition:
G4eIonisation.hh:80
G4eplusAnnihilation
Definition:
G4eplusAnnihilation.hh:65
G4hBremsstrahlung
Definition:
G4hBremsstrahlung.hh:62
G4hCoulombScatteringModel
Definition:
G4hCoulombScatteringModel.hh:67
G4hIonisation
Definition:
G4hIonisation.hh:85
G4hPairProduction
Definition:
G4hPairProduction.hh:59
G4ionIonisation
Definition:
G4ionIonisation.hh:78
geant4-v10.7.0
source
physics_lists
constructors
electromagnetic
src
G4EmStandardPhysicsSS.cc
Generated by
1.9.6