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