G4XTankPhysicsListCustomization.cc
Go to the documentation of this file.
2 #include <G4UImanager.hh>
3 #include "G4XTankSimulator.h"
4 
6 #include "G4XTankFastCerenkov.h"
7 
8 #include <G4MuonMinusCaptureAtRest.hh>
9 #include <G4ParticleDefinition.hh>
10 #include <G4ParticleTypes.hh>
11 #include <G4ProcessManager.hh>
12 
13 using namespace G4XTankSimulatorAG;
14 
16  tls::G4VPhysicsListCustomization()
17 {
18  defaultCutValue = 0.1*mm;
19 
20  fFastCerenkov = fastCerenkov;
21  fUImanager = G4UImanager::GetUIpointer();
22 }
23 
24 
26 {
27 }
28 
29 
31  const double cutForGamma = 30*mm;
32  const double cutForElectron = 0.5*mm;
33  const double cutForPositron = 1e-5*mm;
34 
35  SetCutValue(cutForGamma, "gamma");
36  SetCutValue(cutForElectron, "e-");
37  SetCutValue(cutForPositron, "e+");
38  SetCutValue(0, "proton"); //why??
39 }
40 
42  G4cerr << "G4XTankPhysicsListCustomization::ActivateCustomProcesses" << G4endl;
43 
44  if(fFastCerenkov) {
45  G4cerr << "activating TankFastCerenkov" << G4endl;
46  fUImanager->ApplyCommand("/process/activate TankFastCerenkov");
47  G4cerr << "de-activating StandardCerenkov" << G4endl;
48  fUImanager->ApplyCommand("/process/inactivate StandardCerenkov");
49  }
50 
52  G4cerr << "activating muMinusCaptureAtRest" << G4endl;
53  fUImanager->ApplyCommand("/process/activate muMinusCaptureAtRest");
54  }
55 
56  G4cerr << "activating TankOpBoundaryProcess" << G4endl;
57  fUImanager->ApplyCommand("/process/activate TankOpBoundaryProcess");
58 
59  return true;
60 }
61 
63  G4cerr << "G4XTankPhysicsListCustomization::InactivateCustomProcesses" << G4endl;
64 
65  G4cerr << "de-activating TankFastCerenkov" << G4endl;
66  fUImanager->ApplyCommand("/process/inactivate TankFastCerenkov");
67 
68  if(fFastCerenkov){
69  G4cerr << "activating StandardCerenkov" << G4endl;
70  fUImanager->ApplyCommand("/process/activate StandardCerenkov");
71  }
72 
73  G4cerr << "de-activating muMinusCaptureAtRest" << G4endl;
74  fUImanager->ApplyCommand("/process/inactivate muMinusCaptureAtRest");
75 
76  G4cerr << "de-activating TankOpBoundaryProcess" << G4endl;
77  fUImanager->ApplyCommand("/process/inactivate TankOpBoundaryProcess");
78 
79  return true;
80 }
81 
82 
83 void
85 {
86  const G4int maxNumPhotons = 3;
87 
88  G4XTankSimulatorAG::G4XTankFastCerenkov* const fastCerenkov = new G4XTankSimulatorAG::G4XTankFastCerenkov("TankFastCerenkov");
89  fastCerenkov->SetTrackSecondariesFirst(true);
90  fastCerenkov->SetMaxNumPhotonsPerStep(maxNumPhotons);
91  G4Electron::Electron()->GetProcessManager()->AddContinuousProcess(fastCerenkov);
92  G4Positron::Positron()->GetProcessManager()->AddContinuousProcess(fastCerenkov);
93  G4MuonMinus::MuonMinusDefinition()->GetProcessManager()->AddContinuousProcess(fastCerenkov);
94  G4MuonPlus::MuonPlusDefinition()->GetProcessManager()->AddContinuousProcess(fastCerenkov);
95 
96  G4MuonMinus::MuonMinusDefinition()->GetProcessManager()->AddProcess(new G4MuonMinusCaptureAtRest);
97 
98  G4ProcessManager& pManager =
99  *G4OpticalPhoton::OpticalPhotonDefinition()->GetProcessManager();
100 
102  const G4OpticalSurfaceModel model = unified;
103  boundary->SetModel(model);
104  pManager.AddDiscreteProcess(boundary);
105 }
constexpr double mm
Definition: AugerUnits.h:113

, generated on Tue Sep 26 2023.