ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PhysListEmStandardGS.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PhysListEmStandardGS.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 "PhysListEmStandardGS.hh"
34 #include "G4ParticleDefinition.hh"
35 #include "G4ProcessManager.hh"
36 
37 #include "G4ComptonScattering.hh"
38 #include "G4GammaConversion.hh"
39 #include "G4PhotoElectricEffect.hh"
40 
41 #include "G4eMultipleScattering.hh"
43 #include "G4eIonisation.hh"
44 #include "G4eBremsstrahlung.hh"
45 #include "G4eplusAnnihilation.hh"
46 
48 #include "G4MuIonisation.hh"
49 #include "G4MuBremsstrahlung.hh"
50 #include "G4MuPairProduction.hh"
51 
52 #include "G4hMultipleScattering.hh"
53 #include "G4hIonisation.hh"
54 #include "G4hBremsstrahlung.hh"
55 #include "G4hPairProduction.hh"
56 
57 #include "G4ionIonisation.hh"
59 #include "G4NuclearStopping.hh"
60 
61 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
62 
64  : G4VPhysicsConstructor(name)
65 {}
66 
67 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
68 
70 {}
71 
72 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
73 
75 {
76  // Add standard EM Processes
77  //
78 
80  particleIterator->reset();
81  while( (*particleIterator)() ){
83  G4ProcessManager* pmanager = particle->GetProcessManager();
84  G4String particleName = particle->GetParticleName();
85 
86  if (particleName == "gamma") {
87  // gamma
91 
92  } else if (particleName == "e-") {
93  //electron
96  pmanager->AddProcess(msc, -1, 1, 1);
97  pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
98  pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
99 
100  } else if (particleName == "e+") {
101  //positron
104  pmanager->AddProcess(msc, -1, 1, 1);
105  pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
106  pmanager->AddProcess(new G4eBremsstrahlung, -1, 3, 3);
107  pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
108 
109  } else if (particleName == "mu+" ||
110  particleName == "mu-" ) {
111  //muon
112  pmanager->AddProcess(new G4MuMultipleScattering, -1, 1, 1);
113  pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
114  pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
115  pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
116 
117  } else if( particleName == "proton" ||
118  particleName == "pi-" ||
119  particleName == "pi+" ) {
120  //proton
121  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
122  pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
123  pmanager->AddProcess(new G4hBremsstrahlung, -1, 3, 3);
124  pmanager->AddProcess(new G4hPairProduction, -1, 4, 4);
125 
126  } else if( particleName == "alpha" ||
127  particleName == "He3" ) {
128  //alpha
129  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
130  pmanager->AddProcess(new G4ionIonisation, -1, 2, 2);
131  pmanager->AddProcess(new G4NuclearStopping, -1, 3,-1);
132 
133  } else if( particleName == "GenericIon" ) {
134  //Ions
135  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
136  G4ionIonisation* ionIoni = new G4ionIonisation();
137  ionIoni->SetEmModel(new G4IonParametrisedLossModel());
138  pmanager->AddProcess(ionIoni, -1, 2, 2);
139  pmanager->AddProcess(new G4NuclearStopping, -1, 3,-1);
140 
141  } else if ((!particle->IsShortLived()) &&
142  (particle->GetPDGCharge() != 0.0) &&
143  (particle->GetParticleName() != "chargedgeantino")) {
144  //all others charged particles except geantino
145  pmanager->AddProcess(new G4hMultipleScattering, -1, 1, 1);
146  pmanager->AddProcess(new G4hIonisation, -1, 2, 2);
147  }
148  }
149 }
150 
151 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
152