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 //
28 //
29 //
30 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
32 
33 #include "PhysListEmStandard.hh"
34 
35 #include "G4BuilderType.hh"
36 #include "G4ParticleDefinition.hh"
37 #include "G4ProcessManager.hh"
38 #include "G4PhysicsListHelper.hh"
39 
40 #include "G4ComptonScattering.hh"
41 #include "G4GammaConversion.hh"
42 #include "G4PhotoElectricEffect.hh"
43 #include "G4RayleighScattering.hh"
44 #include "G4KleinNishinaModel.hh"
45 
46 #include "G4eMultipleScattering.hh"
47 #include "G4eIonisation.hh"
48 #include "G4eBremsstrahlung.hh"
49 #include "G4eplusAnnihilation.hh"
50 
52 #include "G4MuIonisation.hh"
53 #include "G4MuBremsstrahlung.hh"
54 #include "G4MuPairProduction.hh"
55 
56 #include "G4hMultipleScattering.hh"
57 #include "G4hIonisation.hh"
58 #include "G4hBremsstrahlung.hh"
59 #include "G4hPairProduction.hh"
60 
61 #include "G4ionIonisation.hh"
63 #include "G4NuclearStopping.hh"
64 
65 #include "G4MscStepLimitType.hh"
66 
67 #include "G4LossTableManager.hh"
68 #include "G4UAtomicDeexcitation.hh"
69 
70 #include "G4SystemOfUnits.hh"
71 
72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
73 
75  : G4VPhysicsConstructor(name)
76 {
78 
80  param->SetDefaults();
81  param->SetMinEnergy(10*eV);
82  param->SetMaxEnergy(10*TeV);
83  param->SetNumberOfBinsPerDecade(10);
85 }
86 
87 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
88 
90 {}
91 
92 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
93 
95 {
97 
98  // Add standard EM Processes
99  //
101  particleIterator->reset();
102  while( (*particleIterator)() ){
104  G4String particleName = particle->GetParticleName();
105 
106  if (particleName == "gamma") {
107 
109  ph->RegisterProcess(new G4PhotoElectricEffect, particle);
111  cs->SetEmModel(new G4KleinNishinaModel());
112  ph->RegisterProcess(cs, particle);
113  ph->RegisterProcess(new G4GammaConversion, particle);
114 
115  } else if (particleName == "e-") {
116 
117  ph->RegisterProcess(new G4eMultipleScattering(), particle);
118  G4eIonisation* eIoni = new G4eIonisation();
119  eIoni->SetStepFunction(0.1, 100*um);
120  ph->RegisterProcess(eIoni, particle);
121  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
122 
123  } else if (particleName == "e+") {
124 
125  ph->RegisterProcess(new G4eMultipleScattering(), particle);
126  G4eIonisation* eIoni = new G4eIonisation();
127  eIoni->SetStepFunction(0.1, 100*um);
128  ph->RegisterProcess(eIoni, particle);
129  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
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