ECCE @ EIC Software
 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"
57 #include "G4eMultipleScattering.hh"
59 #include "G4hMultipleScattering.hh"
60 #include "G4CoulombScattering.hh"
63 #include "G4WentzelVIModel.hh"
64 #include "G4UrbanMscModel.hh"
65 
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
111 //
113 
114 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
115 
117  : G4VPhysicsConstructor("G4EmStandardSS"), verbose(ver)
118 {
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);
127 }
128 
129 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
130 
132 {}
133 
134 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
135 
137 {
138  // gamma
139  G4Gamma::Gamma();
140 
141  // leptons
146 
147  // mesons
152 
153  // barions
156 
157  // ions
160  G4He3::He3();
161  G4Alpha::Alpha();
163 }
164 
165 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
166 
168 {
169  if(verbose > 1) {
170  G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
171  }
173 
174  // muon & hadron bremsstrahlung and pair production
183 
184  // muon & hadron scattering
191 
192  // Add standard EM Processes
194  for(const auto& particleName : partList.PartNames()) {
195  G4ParticleDefinition* particle = table->FindParticle(particleName);
196  if (!particle) { continue; }
197  if (particleName == "gamma") {
198 
201 
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 
213  if(G4EmParameters::Instance()->UseMottCorrection()) {
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 
224  if(G4EmParameters::Instance()->UseMottCorrection()) {
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 
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  //
319 
321 }
322 
323 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......