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);
80 }
81 
82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
83 
85 {}
86 
87 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
88 
90 {
92 
93  // Add standard EM Processes
94  //
96  particleIterator->reset();
97  while( (*particleIterator)() ){
99  G4String particleName = particle->GetParticleName();
100 
101  if (particleName == "gamma") {
102 
104  ph->RegisterProcess(new G4PhotoElectricEffect, particle);
106  cs->SetEmModel(new G4KleinNishinaModel());
107  ph->RegisterProcess(cs, particle);
108  ph->RegisterProcess(new G4GammaConversion, particle);
109 
110  } else if (particleName == "e-") {
111 
112  ph->RegisterProcess(new G4eMultipleScattering(), particle);
113  //
114  G4eIonisation* eIoni = new G4eIonisation();
115  eIoni->SetStepFunction(0.1, 100*um);
116  ph->RegisterProcess(eIoni, particle);
117  //
118  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
119 
120  } else if (particleName == "e+") {
121 
122  ph->RegisterProcess(new G4eMultipleScattering(), particle);
123  //
124  G4eIonisation* eIoni = new G4eIonisation();
125  eIoni->SetStepFunction(0.1, 100*um);
126  ph->RegisterProcess(eIoni, particle);
127  //
128  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
129  //
130  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
131 
132  } else if (particleName == "mu+" ||
133  particleName == "mu-" ) {
134 
135  ph->RegisterProcess(new G4MuMultipleScattering(), particle);
136  G4MuIonisation* muIoni = new G4MuIonisation();
137  muIoni->SetStepFunction(0.1, 50*um);
138  ph->RegisterProcess(muIoni, particle);
139  ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
140  ph->RegisterProcess(new G4MuPairProduction(), particle);
141 
142  } else if( particleName == "proton" ||
143  particleName == "pi-" ||
144  particleName == "pi+" ) {
145 
146  ph->RegisterProcess(new G4hMultipleScattering(), particle);
147  G4hIonisation* hIoni = new G4hIonisation();
148  hIoni->SetStepFunction(0.1, 20*um);
149  ph->RegisterProcess(hIoni, particle);
150  ph->RegisterProcess(new G4hBremsstrahlung(), particle);
151  ph->RegisterProcess(new G4hPairProduction(), particle);
152 
153  } else if( particleName == "alpha" ||
154  particleName == "He3" ) {
155 
156  ph->RegisterProcess(new G4hMultipleScattering(), particle);
157  G4ionIonisation* ionIoni = new G4ionIonisation();
158  ionIoni->SetStepFunction(0.1, 1*um);
159  ph->RegisterProcess(ionIoni, particle);
160  ph->RegisterProcess(new G4NuclearStopping(), particle);
161 
162  } else if( particleName == "GenericIon" ) {
163 
164  ph->RegisterProcess(new G4hMultipleScattering(), particle);
165  G4ionIonisation* ionIoni = new G4ionIonisation();
166  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
167  ionIoni->SetStepFunction(0.1, 1*um);
168  ph->RegisterProcess(ionIoni, particle);
169  ph->RegisterProcess(new G4NuclearStopping(), particle);
170 
171  } else if ((!particle->IsShortLived()) &&
172  (particle->GetPDGCharge() != 0.0) &&
173  (particle->GetParticleName() != "chargedgeantino")) {
174 
175  //all others charged particles except geantino
176  ph->RegisterProcess(new G4hMultipleScattering(), particle);
177  ph->RegisterProcess(new G4hIonisation(), particle);
178  }
179  }
180 
181  // Deexcitation
182  //
184  de->SetFluo(true);
185  de->SetAuger(false);
186  de->SetPIXE(false);
188 }
189 
190 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
191