ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PhysListEm5DStandard.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PhysListEm5DStandard.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: PhysListEm5DStandard
30 //
31 // Author: IgS 07.11.2017
32 //
33 // Modified:
34 // 17.11.2017 Created using PhysListEm5DStandard from V.Ivanchenko
35 //
36 //----------------------------------------------------------------------------
37 //
38 
39 #include "PhysListEm5DStandard.hh"
40 #include "G4SystemOfUnits.hh"
41 #include "G4ParticleDefinition.hh"
42 #include "G4EmParameters.hh"
43 #include "G4LossTableManager.hh"
44 
45 #include "G4ComptonScattering.hh"
46 #include "G4GammaConversion.hh"
47 #include "G4PhotoElectricEffect.hh"
48 #include "G4RayleighScattering.hh"
49 #include "G4BetheHeitler5DModel.hh"
51 
52 #include "G4eMultipleScattering.hh"
54 #include "G4hMultipleScattering.hh"
55 #include "G4CoulombScattering.hh"
57 #include "G4WentzelVIModel.hh"
58 #include "G4UrbanMscModel.hh"
59 
64 
65 #include "G4eIonisation.hh"
66 #include "G4eBremsstrahlung.hh"
67 #include "G4eplusAnnihilation.hh"
68 #include "G4UAtomicDeexcitation.hh"
69 
70 #include "G4MuIonisation.hh"
71 #include "G4MuBremsstrahlung.hh"
72 #include "G4MuPairProduction.hh"
73 #include "G4hBremsstrahlung.hh"
74 #include "G4hPairProduction.hh"
75 
76 #include "G4hIonisation.hh"
77 #include "G4ionIonisation.hh"
78 #include "G4alphaIonisation.hh"
79 
80 #include "G4Gamma.hh"
81 #include "G4Electron.hh"
82 #include "G4Positron.hh"
83 #include "G4MuonPlus.hh"
84 #include "G4MuonMinus.hh"
85 #include "G4PionPlus.hh"
86 #include "G4PionMinus.hh"
87 #include "G4KaonPlus.hh"
88 #include "G4KaonMinus.hh"
89 #include "G4Proton.hh"
90 #include "G4AntiProton.hh"
91 #include "G4Deuteron.hh"
92 #include "G4Triton.hh"
93 #include "G4He3.hh"
94 #include "G4Alpha.hh"
95 #include "G4GenericIon.hh"
96 
97 #include "G4PhysicsListHelper.hh"
98 #include "G4BuilderType.hh"
99 
100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
101 
103  : G4VPhysicsConstructor("G4EmStandard_5D")
104 {
106  param->SetDefaults();
107  param->SetVerbose(ver);
108  param->SetNumberOfBinsPerDecade(10);
110  param->SetLateralDisplacementAlg96(false);
111  param->SetFluo(true);
113 }
114 
115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
116 
118 {}
119 
120 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
121 
123 {
124  // gamma
125  G4Gamma::Gamma();
126 
127  // leptons
132 
133  // mesons
138 
139  // barions
142 
143  // ions
146  G4He3::He3();
147  G4Alpha::Alpha();
149 }
150 
151 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
152 
154 {
155  if(G4EmParameters::Instance()->Verbose() > 1) {
156  G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
157  }
159 
160  // muon & hadron bremsstrahlung and pair production
169 
170  // muon & hadron multiple scattering
172  mumsc->AddEmModel(0, new G4WentzelVIModel());
174 
176  pimsc->AddEmModel(0, new G4WentzelVIModel());
178 
180  kmsc->AddEmModel(0, new G4WentzelVIModel());
182 
183  G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
184 
185  // high energy limit for e+- scattering models
186  G4double highEnergyLimit = 100*MeV;
187 
188  // Add standard EM Processes
189  auto myParticleIterator=GetParticleIterator();
190  myParticleIterator->reset();
191  while( (*myParticleIterator)() ){
192  G4ParticleDefinition* particle = myParticleIterator->value();
193  G4String particleName = particle->GetParticleName();
194 
195  if (particleName == "gamma") {
196 
197  // photo-effect and Compton
198  ph->RegisterProcess(new G4PhotoElectricEffect(), particle);
199  ph->RegisterProcess(new G4ComptonScattering(), particle);
200 
201  // Gamma conversion to e+ e-
203  G4VEmModel* theGC5DModel = new G4BetheHeitler5DModel();
204  gc->SetEmModel(theGC5DModel);
205  ph->RegisterProcess(gc, particle);
206  // Gamma conversion to mu+ mu-
207  ph->RegisterProcess(new G4GammaConversionToMuons(), particle);
208 
209  // Rayleigh scattering
210  ph->RegisterProcess(new G4RayleighScattering(), particle);
211 
212  } else if (particleName == "e-") {
213 
215  G4UrbanMscModel* msc1 = new G4UrbanMscModel();
216  G4WentzelVIModel* msc2 = new G4WentzelVIModel();
217  msc1->SetHighEnergyLimit(highEnergyLimit);
218  msc2->SetLowEnergyLimit(highEnergyLimit);
219  msc->AddEmModel(0, msc1);
220  msc->AddEmModel(0, msc2);
221 
224  ss->SetEmModel(ssm, 1);
225  ss->SetMinKinEnergy(highEnergyLimit);
226  ssm->SetLowEnergyLimit(highEnergyLimit);
227  ssm->SetActivationLowEnergyLimit(highEnergyLimit);
228 
229  ph->RegisterProcess(msc, particle);
230  ph->RegisterProcess(new G4eIonisation(), particle);
231  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
232  ph->RegisterProcess(ss, particle);
233 
234  } else if (particleName == "e+") {
235 
237  G4UrbanMscModel* msc1 = new G4UrbanMscModel();
238  G4WentzelVIModel* msc2 = new G4WentzelVIModel();
239  msc1->SetHighEnergyLimit(highEnergyLimit);
240  msc2->SetLowEnergyLimit(highEnergyLimit);
241  msc->AddEmModel(0, msc1);
242  msc->AddEmModel(0, msc2);
243 
246  ss->SetEmModel(ssm, 1);
247  ss->SetMinKinEnergy(highEnergyLimit);
248  ssm->SetLowEnergyLimit(highEnergyLimit);
249  ssm->SetActivationLowEnergyLimit(highEnergyLimit);
250 
251  ph->RegisterProcess(msc, particle);
252  ph->RegisterProcess(new G4eIonisation(), particle);
253  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
254  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
255  ph->RegisterProcess(ss, particle);
256 
257  } else if (particleName == "mu+" ||
258  particleName == "mu-" ) {
259 
260  ph->RegisterProcess(mumsc, particle);
261  ph->RegisterProcess(new G4MuIonisation(), particle);
262  ph->RegisterProcess(mub, particle);
263  ph->RegisterProcess(mup, particle);
264  ph->RegisterProcess(muss, particle);
265 
266  } else if (particleName == "alpha" ||
267  particleName == "He3") {
268 
269  ph->RegisterProcess(new G4hMultipleScattering(), particle);
270  ph->RegisterProcess(new G4ionIonisation(), particle);
271 
272  } else if (particleName == "GenericIon") {
273 
274  ph->RegisterProcess(hmsc, particle);
275  ph->RegisterProcess(new G4ionIonisation(), particle);
276 
277  } else if (particleName == "pi+" ||
278  particleName == "pi-" ) {
279 
280  ph->RegisterProcess(pimsc, particle);
281  ph->RegisterProcess(new G4hIonisation(), particle);
282  ph->RegisterProcess(pib, particle);
283  ph->RegisterProcess(pip, particle);
284  ph->RegisterProcess(piss, particle);
285 
286  } else if (particleName == "kaon+" ||
287  particleName == "kaon-" ) {
288 
289  ph->RegisterProcess(kmsc, particle);
290  ph->RegisterProcess(new G4hIonisation(), particle);
291  ph->RegisterProcess(kb, particle);
292  ph->RegisterProcess(kp, particle);
293  ph->RegisterProcess(kss, particle);
294 
295  } else if (particleName == "proton" ||
296  particleName == "anti_proton") {
297 
299  pmsc->SetEmModel(new G4WentzelVIModel());
300  G4hIonisation* hIoni = new G4hIonisation();
301  hIoni->SetStepFunction(0.1, 10*um);
302 
303  ph->RegisterProcess(pmsc, particle);
304  ph->RegisterProcess(hIoni, particle);
305  ph->RegisterProcess(pb, particle);
306  ph->RegisterProcess(pp, particle);
307  ph->RegisterProcess(new G4CoulombScattering(), particle);
308 
309  } else if (particleName == "B+" ||
310  particleName == "B-" ||
311  particleName == "D+" ||
312  particleName == "D-" ||
313  particleName == "Ds+" ||
314  particleName == "Ds-" ||
315  particleName == "anti_He3" ||
316  particleName == "anti_alpha" ||
317  particleName == "anti_deuteron" ||
318  particleName == "anti_lambda_c+" ||
319  particleName == "anti_omega-" ||
320  particleName == "anti_sigma_c+" ||
321  particleName == "anti_sigma_c++" ||
322  particleName == "anti_sigma+" ||
323  particleName == "anti_sigma-" ||
324  particleName == "anti_triton" ||
325  particleName == "anti_xi_c+" ||
326  particleName == "anti_xi-" ||
327  particleName == "deuteron" ||
328  particleName == "lambda_c+" ||
329  particleName == "omega-" ||
330  particleName == "sigma_c+" ||
331  particleName == "sigma_c++" ||
332  particleName == "sigma+" ||
333  particleName == "sigma-" ||
334  particleName == "tau+" ||
335  particleName == "tau-" ||
336  particleName == "triton" ||
337  particleName == "xi_c+" ||
338  particleName == "xi-" ) {
339 
340  ph->RegisterProcess(hmsc, particle);
341  ph->RegisterProcess(new G4hIonisation(), particle);
342  }
343  }
344 
345  // Deexcitation
346  //
349 }
350 
351 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......