ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PhysListEmLivermore.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PhysListEmLivermore.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 //
31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
33 
34 #include "PhysListEmLivermore.hh"
35 #include "G4BuilderType.hh"
36 #include "G4ParticleDefinition.hh"
37 #include "G4ProcessManager.hh"
38 #include "G4PhysicsListHelper.hh"
39 
40 // gamma
41 
42 #include "G4PhotoElectricEffect.hh"
44 
45 #include "G4ComptonScattering.hh"
47 
48 #include "G4GammaConversion.hh"
50 
51 #include "G4RayleighScattering.hh"
53 
54 // e-
55 
56 #include "G4eIonisation.hh"
59 
60 #include "G4eBremsstrahlung.hh"
62 
63 // e+
64 
65 #include "G4eplusAnnihilation.hh"
66 
67 // mu
68 
69 #include "G4MuIonisation.hh"
70 #include "G4MuBremsstrahlung.hh"
71 #include "G4MuPairProduction.hh"
72 
73 // hadrons, ions
74 
75 #include "G4hIonisation.hh"
76 #include "G4ionIonisation.hh"
77 
78 // deexcitation
79 
80 #include "G4LossTableManager.hh"
81 #include "G4UAtomicDeexcitation.hh"
82 
83 #include "G4SystemOfUnits.hh"
84 
85 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
86 
88  : G4VPhysicsConstructor(name)
89 {
91  param->SetDefaults();
92  param->SetMinEnergy(10*eV);
93  param->SetMaxEnergy(10*TeV);
94  param->SetNumberOfBinsPerDecade(10);
95  param->SetBuildCSDARange(true);
96  param->SetMaxEnergyForCSDARange(10*TeV);
98 
99  param->SetVerbose(0);
100  param->Dump();
101  }
102 
103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
104 
106 { }
107 
108 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
109 
111 {
113 
114  // Add Livermore EM Processes
115 
117  particleIterator->reset();
118  while( (*particleIterator)() ){
120  G4String particleName = particle->GetParticleName();
121 
122  //Applicability range for Livermore models
123  //for higher energies, the Standard models are used
124  G4double highEnergyLimit = 1*GeV;
125 
126  if (particleName == "gamma") {
127  // gamma
128 
131  photModel = new G4LivermorePhotoElectricModel();
132  photModel->SetHighEnergyLimit(highEnergyLimit);
133  phot->AddEmModel(0, photModel);
134  list->RegisterProcess(phot, particle);
135 
138  comptModel = new G4LivermoreComptonModel();
139  comptModel->SetHighEnergyLimit(highEnergyLimit);
140  compt->AddEmModel(0, comptModel);
141  list->RegisterProcess(compt, particle);
142 
143  G4GammaConversion* conv = new G4GammaConversion();
145  convModel = new G4LivermoreGammaConversionModel();
146  convModel->SetHighEnergyLimit(highEnergyLimit);
147  conv->AddEmModel(0, convModel);
148  list->RegisterProcess(conv, particle);
149 
152  raylModel = new G4LivermoreRayleighModel();
153  raylModel->SetHighEnergyLimit(highEnergyLimit);
154  rayl->AddEmModel(0, raylModel);
155  list->RegisterProcess(rayl, particle);
156 
157  } else if (particleName == "e-") {
158  //electron
159 
160  G4eIonisation* eIoni = new G4eIonisation();
162  eIoniModel = new G4LivermoreIonisationModel();
163  eIoniModel->SetHighEnergyLimit(highEnergyLimit);
164  eIoni->AddEmModel(0, eIoniModel, new G4UniversalFluctuation() );
165  list->RegisterProcess(eIoni, particle);
166 
167  G4eBremsstrahlung* eBrem = new G4eBremsstrahlung();
169  eBremModel = new G4LivermoreBremsstrahlungModel();
170  eBremModel->SetHighEnergyLimit(highEnergyLimit);
171  eBrem->AddEmModel(0, eBremModel);
172  list->RegisterProcess(eBrem, particle);
173 
174  } else if (particleName == "e+") {
175  //positron
176  list->RegisterProcess(new G4eIonisation, particle);
177  list->RegisterProcess(new G4eBremsstrahlung, particle);
178  list->RegisterProcess(new G4eplusAnnihilation, particle);
179 
180  } else if( particleName == "mu+" ||
181  particleName == "mu-" ) {
182  //muon
183  list->RegisterProcess(new G4MuIonisation, particle);
184  list->RegisterProcess(new G4MuBremsstrahlung, particle);
185  list->RegisterProcess(new G4MuPairProduction, particle);
186 
187  } else if( particleName == "alpha" || particleName == "GenericIon" ) {
188  list->RegisterProcess(new G4ionIonisation, particle);
189 
190  } else if ((!particle->IsShortLived()) &&
191  (particle->GetPDGCharge() != 0.0) &&
192  (particle->GetParticleName() != "chargedgeantino")) {
193  //all others charged particles except geantino
194  list->RegisterProcess(new G4hIonisation, particle);
195  }
196  }
197  // Deexcitation
198  //
201 }
202 
203 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
204