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 #include "G4ParticleDefinition.hh"
35 #include "G4ProcessManager.hh"
36 #include "G4PhysicsListHelper.hh"
37 
38 #include "G4ComptonScattering.hh"
39 #include "G4GammaConversion.hh"
40 #include "G4PhotoElectricEffect.hh"
41 #include "G4RayleighScattering.hh"
42 #include "G4KleinNishinaModel.hh"
43 
44 #include "G4eMultipleScattering.hh"
45 #include "G4eIonisation.hh"
46 #include "G4eBremsstrahlung.hh"
47 #include "G4eplusAnnihilation.hh"
48 
50 #include "G4MuIonisation.hh"
51 #include "G4MuBremsstrahlung.hh"
52 #include "G4MuPairProduction.hh"
53 
54 #include "G4hMultipleScattering.hh"
55 #include "G4hIonisation.hh"
56 #include "G4hBremsstrahlung.hh"
57 #include "G4hPairProduction.hh"
58 
59 #include "G4ionIonisation.hh"
61 #include "G4NuclearStopping.hh"
62 
63 #include "G4EmProcessOptions.hh"
64 #include "G4MscStepLimitType.hh"
65 
66 #include "G4LossTableManager.hh"
67 #include "G4UAtomicDeexcitation.hh"
68 
69 #include "G4SystemOfUnits.hh"
70 
71 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
72 
74  : G4VPhysicsConstructor(name)
75 {}
76 
77 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
78 
80 {}
81 
82 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
83 
85 {
87 
88  // Add standard EM Processes
89  //
91  particleIterator->reset();
92  while( (*particleIterator)() ){
94  G4String particleName = particle->GetParticleName();
95 
96  if (particleName == "gamma") {
97 
99  ph->RegisterProcess(new G4PhotoElectricEffect, particle);
101  cs->SetEmModel(new G4KleinNishinaModel());
102  ph->RegisterProcess(cs, particle);
103  ph->RegisterProcess(new G4GammaConversion, particle);
104 
105  } else if (particleName == "e-") {
106 
107  ph->RegisterProcess(new G4eMultipleScattering(), particle);
108  G4eIonisation* eIoni = new G4eIonisation();
109  eIoni->SetStepFunction(0.1, 100*um);
110  ph->RegisterProcess(eIoni, particle);
111  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
112 
113  } else if (particleName == "e+") {
114 
115  ph->RegisterProcess(new G4eMultipleScattering(), particle);
116  G4eIonisation* eIoni = new G4eIonisation();
117  eIoni->SetStepFunction(0.1, 100*um);
118  ph->RegisterProcess(eIoni, particle);
119  ph->RegisterProcess(new G4eBremsstrahlung(), particle);
120  ph->RegisterProcess(new G4eplusAnnihilation(), particle);
121 
122  } else if (particleName == "mu+" ||
123  particleName == "mu-" ) {
124 
125  ph->RegisterProcess(new G4MuMultipleScattering(), particle);
126  G4MuIonisation* muIoni = new G4MuIonisation();
127  muIoni->SetStepFunction(0.1, 50*um);
128  ph->RegisterProcess(muIoni, particle);
129  ph->RegisterProcess(new G4MuBremsstrahlung(), particle);
130  ph->RegisterProcess(new G4MuPairProduction(), particle);
131 
132  } else if( particleName == "proton" ||
133  particleName == "pi-" ||
134  particleName == "pi+" ) {
135 
136  ph->RegisterProcess(new G4hMultipleScattering(), particle);
137  G4hIonisation* hIoni = new G4hIonisation();
138  hIoni->SetStepFunction(0.1, 20*um);
139  ph->RegisterProcess(hIoni, particle);
140  ph->RegisterProcess(new G4hBremsstrahlung(), particle);
141  ph->RegisterProcess(new G4hPairProduction(), particle);
142 
143  } else if( particleName == "alpha" ||
144  particleName == "He3" ) {
145 
146  ph->RegisterProcess(new G4hMultipleScattering(), particle);
147  G4ionIonisation* ionIoni = new G4ionIonisation();
148  ionIoni->SetStepFunction(0.1, 1*um);
149  ph->RegisterProcess(ionIoni, particle);
150  ph->RegisterProcess(new G4NuclearStopping(), particle);
151 
152  } else if( particleName == "GenericIon" ) {
153 
154  ph->RegisterProcess(new G4hMultipleScattering(), particle);
155  G4ionIonisation* ionIoni = new G4ionIonisation();
156  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
157  ionIoni->SetStepFunction(0.1, 1*um);
158  ph->RegisterProcess(ionIoni, particle);
159  ph->RegisterProcess(new G4NuclearStopping(), particle);
160 
161  } else if ((!particle->IsShortLived()) &&
162  (particle->GetPDGCharge() != 0.0) &&
163  (particle->GetParticleName() != "chargedgeantino")) {
164 
165  //all others charged particles except geantino
166  ph->RegisterProcess(new G4hMultipleScattering(), particle);
167  ph->RegisterProcess(new G4hIonisation(), particle);
168  }
169  }
170 
171  // Em options
172  //
173  // Main options and setting parameters are shown here.
174  // Several of them have default values.
175  //
176  G4EmProcessOptions emOptions;
177 
178  //physics tables
179  //
180  emOptions.SetMinEnergy(10*eV); //default 100 eV
181  emOptions.SetMaxEnergy(10*TeV); //default 100 TeV
182  emOptions.SetDEDXBinning(12*10); //default=12*7
183  emOptions.SetLambdaBinning(12*10); //default=12*7
184 
185  //multiple coulomb scattering
186  //
187  emOptions.SetMscStepLimitation(fUseSafety); //default
188 
189  // Deexcitation
190  //
192  de->SetFluo(true);
193  de->SetAuger(false);
194  de->SetPIXE(false);
196 }
197 
198 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
199