ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PhysListEmStandard.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PhysListEmStandard.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 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
28 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
29 
30 #include "PhysListEmStandard.hh"
31 #include "G4ParticleDefinition.hh"
32 #include "G4ProcessManager.hh"
33 #include "G4PhysicsListHelper.hh"
34 
35 #include "G4ComptonScattering.hh"
36 #include "G4GammaConversion.hh"
37 #include "G4PhotoElectricEffect.hh"
38 #include "G4RayleighScattering.hh"
39 #include "G4KleinNishinaModel.hh"
40 
41 #include "G4eMultipleScattering.hh"
42 #include "G4eIonisation.hh"
43 #include "G4eBremsstrahlung.hh"
44 #include "G4eplusAnnihilation.hh"
45 
47 #include "G4MuIonisation.hh"
48 #include "G4MuBremsstrahlung.hh"
49 #include "G4MuPairProduction.hh"
50 
51 #include "G4hMultipleScattering.hh"
52 #include "G4hIonisation.hh"
53 #include "G4hBremsstrahlung.hh"
54 #include "G4hPairProduction.hh"
55 
56 #include "G4ionIonisation.hh"
58 #include "G4NuclearStopping.hh"
59 
60 #include "G4MscStepLimitType.hh"
61 
62 #include "G4LossTableManager.hh"
63 #include "G4UAtomicDeexcitation.hh"
64 
65 #include "G4BuilderType.hh"
66 #include "G4SystemOfUnits.hh"
67 
68 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
69 
71  : G4VPhysicsConstructor(name)
72 {
74  param->SetDefaults();
75  param->SetMinEnergy(10*eV);
76  param->SetMaxEnergy(10*TeV);
77  param->SetNumberOfBinsPerDecade(10);
79  param->SetFluo(true);
81 }
82 
83 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
84 
86 {}
87 
88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
89 
91 {
93 
94  // Add standard EM Processes
95  //
97  particleIterator->reset();
98  while( (*particleIterator)() ){
100  G4String particleName = particle->GetParticleName();
101 
102  if (particleName == "gamma") {
103 
105  ph->RegisterProcess(new G4PhotoElectricEffect, particle);
107  cs->SetEmModel(new G4KleinNishinaModel());
108  ph->RegisterProcess(cs, particle);
109  ph->RegisterProcess(new G4GammaConversion, particle);
110 
111  } else if (particleName == "e-") {
112 
113  ph->RegisterProcess(new G4eMultipleScattering(), particle);
114  //
115  G4eIonisation* eIoni = new G4eIonisation();
116  eIoni->SetStepFunction(0.1, 100*um);
117  ph->RegisterProcess(eIoni, particle);
118  //
119  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
120 
121  } else if (particleName == "e+") {
122 
123  ph->RegisterProcess(new G4eMultipleScattering(), particle);
124  //
125  G4eIonisation* eIoni = new G4eIonisation();
126  eIoni->SetStepFunction(0.1, 100*um);
127  ph->RegisterProcess(eIoni, particle);
128  //
129  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
130  //
131  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
132 
133  } else if (particleName == "mu+" ||
134  particleName == "mu-" ) {
135 
136  ph->RegisterProcess(new G4MuMultipleScattering(), particle);
137  G4MuIonisation* muIoni = new G4MuIonisation();
138  muIoni->SetStepFunction(0.1, 50*um);
139  ph->RegisterProcess(muIoni, particle);
140  ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
141  ph->RegisterProcess(new G4MuPairProduction(), particle);
142 
143  } else if( particleName == "proton" ||
144  particleName == "pi-" ||
145  particleName == "pi+" ) {
146 
147  ph->RegisterProcess(new G4hMultipleScattering(), particle);
148  G4hIonisation* hIoni = new G4hIonisation();
149  hIoni->SetStepFunction(0.1, 20*um);
150  ph->RegisterProcess(hIoni, particle);
151  ph->RegisterProcess(new G4hBremsstrahlung(), particle);
152  ph->RegisterProcess(new G4hPairProduction(), particle);
153 
154  } else if( particleName == "alpha" ||
155  particleName == "He3" ) {
156 
157  ph->RegisterProcess(new G4hMultipleScattering(), particle);
158  G4ionIonisation* ionIoni = new G4ionIonisation();
159  ionIoni->SetStepFunction(0.1, 1*um);
160  ph->RegisterProcess(ionIoni, particle);
161  ph->RegisterProcess(new G4NuclearStopping(), particle);
162 
163  } else if( particleName == "GenericIon" ) {
164 
165  ph->RegisterProcess(new G4hMultipleScattering(), particle);
166  G4ionIonisation* ionIoni = new G4ionIonisation();
167  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
168  ionIoni->SetStepFunction(0.1, 1*um);
169  ph->RegisterProcess(ionIoni, particle);
170  ph->RegisterProcess(new G4NuclearStopping(), particle);
171 
172  } else if ((!particle->IsShortLived()) &&
173  (particle->GetPDGCharge() != 0.0) &&
174  (particle->GetParticleName() != "chargedgeantino")) {
175 
176  //all others charged particles except geantino
177  ph->RegisterProcess(new G4hMultipleScattering(), particle);
178  ph->RegisterProcess(new G4hIonisation(), particle);
179  }
180  }
181 
182  // Deexcitation
183  //
186 }
187 
188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
189