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"
65 #include "G4BraggIonModel.hh"
66 
67 #include "G4BuilderType.hh"
68 #include "G4SystemOfUnits.hh"
69 
70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
71 
73  : G4VPhysicsConstructor(name)
74 {
76  param->SetDefaults();
77  param->SetMinEnergy(10*eV);
78  param->SetMaxEnergy(10*TeV);
79  param->SetNumberOfBinsPerDecade(10);
81  param->SetFluo(true);
83 }
84 
85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
86 
88 {}
89 
90 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
91 
93 {
95 
96  // Add standard EM Processes
97  //
99  particleIterator->reset();
100  while( (*particleIterator)() ){
102  G4String particleName = particle->GetParticleName();
103 
104  if (particleName == "gamma") {
105 
106  ph->RegisterProcess(new G4PhotoElectricEffect, particle);
108  cs->SetEmModel(new G4KleinNishinaModel());
109  ph->RegisterProcess(cs, particle);
110  ph->RegisterProcess(new G4GammaConversion, particle);
111  ph->RegisterProcess(new G4RayleighScattering, particle);
112 
113  } else if (particleName == "e-") {
114 
115  ph->RegisterProcess(new G4eMultipleScattering(), particle);
116  //
117  G4eIonisation* eIoni = new G4eIonisation();
118  eIoni->SetStepFunction(0.1, 100*um);
119  ph->RegisterProcess(eIoni, particle);
120  //
121  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
122 
123  } else if (particleName == "e+") {
124 
125  ph->RegisterProcess(new G4eMultipleScattering(), particle);
126  //
127  G4eIonisation* eIoni = new G4eIonisation();
128  eIoni->SetStepFunction(0.1, 100*um);
129  ph->RegisterProcess(eIoni, particle);
130  //
131  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
132  //
133  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
134 
135  } else if (particleName == "mu+" ||
136  particleName == "mu-" ) {
137 
138  ph->RegisterProcess(new G4MuMultipleScattering(), particle);
139  G4MuIonisation* muIoni = new G4MuIonisation();
140  muIoni->SetStepFunction(0.1, 50*um);
141  ph->RegisterProcess(muIoni, particle);
142  ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
143  ph->RegisterProcess(new G4MuPairProduction(), particle);
144 
145  } else if( particleName == "proton" ||
146  particleName == "pi-" ||
147  particleName == "pi+" ) {
148 
149  ph->RegisterProcess(new G4hMultipleScattering(), particle);
150  G4hIonisation* hIoni = new G4hIonisation();
151  hIoni->SetStepFunction(0.1, 20*um);
152  ph->RegisterProcess(hIoni, particle);
153  ph->RegisterProcess(new G4hBremsstrahlung(), particle);
154  ph->RegisterProcess(new G4hPairProduction(), particle);
155 
156  } else if( particleName == "alpha" ||
157  particleName == "He3" ) {
158 
159  ph->RegisterProcess(new G4hMultipleScattering(), particle);
160  G4ionIonisation* ionIoni = new G4ionIonisation();
161  ionIoni->SetStepFunction(0.1, 1*um);
162  ph->RegisterProcess(ionIoni, particle);
163  ph->RegisterProcess(new G4NuclearStopping(), particle);
164 
165  } else if( particleName == "GenericIon" ) {
166 
167  ph->RegisterProcess(new G4hMultipleScattering(), particle);
168  G4ionIonisation* ionIoni = new G4ionIonisation();
169  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
170  ionIoni->SetStepFunction(0.1, 1*um);
171  ph->RegisterProcess(ionIoni, particle);
172  ph->RegisterProcess(new G4NuclearStopping(), particle);
173 
174  } else if ((!particle->IsShortLived()) &&
175  (particle->GetPDGCharge() != 0.0) &&
176  (particle->GetParticleName() != "chargedgeantino")) {
177 
178  //all others charged particles except geantino
179  ph->RegisterProcess(new G4hMultipleScattering(), particle);
180  ph->RegisterProcess(new G4hIonisation(), particle);
181  }
182  }
183 
184  // Deexcitation
185  //
188 }
189 
190 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
191