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
45#include "G4SystemOfUnits.hh"
47#include "G4EmParameters.hh"
48#include "G4EmBuilder.hh"
49#include "G4LossTableManager.hh"
50
52#include "G4GammaConversion.hh"
55
64#include "G4WentzelVIModel.hh"
65#include "G4UrbanMscModel.hh"
66
71//#include "G4eSingleCoulombScatteringModel.hh"
73
74#include "G4eIonisation.hh"
75#include "G4eBremsstrahlung.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
113//
115
116//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
117
119 : G4VPhysicsConstructor("G4EmStandardSS"), verbose(ver)
120{
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);
129}
130
131//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
132
134{}
135
136//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
137
139{
140 // minimal set of particles for EM physics
142}
143
144//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
145
147{
148 if(verbose > 1) {
149 G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
150 }
152
154
155 // muon & hadron bremsstrahlung and pair production
164
165 // muon & hadron scattering
172
173 // Add standard EM Processes
175 for(const auto& particleName : partList.PartNames()) {
176 G4ParticleDefinition* particle = table->FindParticle(particleName);
177 if (!particle) { continue; }
178 if (particleName == "gamma") {
179
182
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
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
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
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
299}
300
301//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@ bElectromagnetic
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
int G4int
Definition: G4Types.hh:85
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
static void ConstructMinimalEmSet()
Definition: G4EmBuilder.cc:234
static void PrepareEMPhysics()
Definition: G4EmBuilder.cc:259
void SetLowestElectronEnergy(G4double val)
static G4EmParameters * Instance()
void SetMscThetaLimit(G4double val)
void SetAugerCascade(G4bool val)
void SetVerbose(G4int val)
void SetPixe(G4bool val)
const std::vector< G4String > & PartNames() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
void AddEmModel(G4int, G4VEmModel *, const G4Region *region=nullptr)
void SetEmModel(G4VEmModel *, G4int index=0)
const G4String & GetPhysicsName() const