ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GammaKnifePhysicsList.cc
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file GammaKnifePhysicsList.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 #include "G4RunManager.hh"
28 #include "globals.hh"
29 #include "G4ProcessManager.hh"
30 #include "G4Region.hh"
31 #include "G4RegionStore.hh"
32 
33 #include "G4ParticleDefinition.hh"
34 #include "G4ParticleTypes.hh"
35 #include "G4ParticleTable.hh"
36 
37 #include "G4PhysListFactory.hh"
38 #include "GammaKnifePhysicsList.hh"
40 #include "GammaKnifeParticles.hh"
41 #include "G4SystemOfUnits.hh"
42 
43 
44 // Physic lists (contained inside the Geant4 source code, in the 'physicslists folder')
46 #include "G4EmLivermorePhysics.hh"
47 #include "G4EmPenelopePhysics.hh"
48 #include "G4EmExtraPhysics.hh"
49 
50 #include "G4DecayPhysics.hh"
52 
53 #include "G4LossTableManager.hh"
54 
56 {
58  defaultCutValue = 1.*mm;
62 
64 
65 
67  SetVerboseLevel(1);
68 
69  // EM physics
71  emName = G4String("emstandard_opt3");
72 
73  // Decay physics and all particles
75 }
76 
78 {
79  delete messenger;
80  delete emPhysicsList;
81  delete decPhysicsList;
82  for(size_t i=0; i<hadronPhys.size(); i++)
83  delete hadronPhys[i];
84 }
85 
87 {
90 }
91 
93 {
94  // transportation
96 
97  // electromagnetic physics list
99 
100  // decay physics list
102 
103  // hadronic physics lists
104  for(size_t i=0; i<hadronPhys.size(); i++) {
106  }
107 
108 }
109 
110 
112 {
113 
114  if (verboseLevel>1) {
115  G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
116  }
117  if (name == emName) return;
118 
120  // ELECTROMAGNETIC MODELS
122  if (name == "standard_opt3") {
123  emName = name;
124  delete emPhysicsList;
126  G4RunManager::GetRunManager() -> PhysicsHasBeenModified();
127  G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmStandardPhysics_option3" << G4endl;
128 
129  } else if (name == "LowE_Livermore") {
130  emName = name;
131  delete emPhysicsList;
133  G4RunManager::GetRunManager()-> PhysicsHasBeenModified();
134  G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
135 
136  } else if (name == "LowE_Penelope") {
137  emName = name;
138  delete emPhysicsList;
140  G4RunManager::GetRunManager()-> PhysicsHasBeenModified();
141  G4cout << "THE FOLLOWING ELECTROMAGNETIC PHYSICS LIST HAS BEEN ACTIVATED: G4EmLivermorePhysics" << G4endl;
142 
144  // HADRONIC MODELS
146 
147 
148  } else if (name == "decay")
149  {
150  hadronPhys.push_back(new G4DecayPhysics());
151  //radioactiveDecayIsRegistered = true;
152  }
153  else if (name == "radioactive_decay" && !radioactiveDecayIsRegistered )
154  {
155  hadronPhys.push_back(new G4RadioactiveDecayPhysics());
157  }
158  else {
159 
160  G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
161  << " is not defined"
162  << G4endl;
163  }
164 
165  }
166 
167 
170 {
171 
172  if (verboseLevel >0){
173  G4cout << "PhysicsList::SetCuts:";
174  G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
175  }
176 
177  // set cut values for gamma at first and for e- second and next for e+,
178  // because some processes for e+/e- need cut values for gamma
179  SetCutValue(cutForGamma, "gamma");
182 
183 
185 }
186 
189 {
190  cutForGamma = cut;
192 }
193 
196 {
197  cutForElectron = cut;
199 }
200 
203 {
204  cutForPositron = cut;
206 }
207