OMSim
Geant4 for IceCube optical module studies
OMSimDecaysGPS.hh
Go to the documentation of this file.
1 
7 #pragma once
8 #include "OMSimOpticalModule.hh"
9 #include <globals.hh>
16 {
17 public:
18 
19  static OMSimDecaysGPS &getInstance()
20  {
21  static OMSimDecaysGPS instance;
22  return instance;
23  }
24 
25  void simulateDecaysInPMTs(G4double pTimeWindow);
26  void simulateDecaysInPressureVessel(G4double pTimeWindow);
27 
32  void setOpticalModule(OMSimOpticalModule *p_opticalModule) { m_opticalModule = p_opticalModule; };
33  void setProductionRadius(G4double pProductionRadius);
34  G4String getDecayTerminationNuclide();
35 
36 private:
37  // Define a map that maps isotopes to their GPS commands
38  std::map<G4String, G4String> m_isotopeCommands = {
39  {"U238", "/gps/ion 92 238 0"},
40  {"U235", "/gps/ion 92 235 0"},
41  {"Ra226", "/gps/ion 88 226 0"},
42  {"Ra224", "/gps/ion 88 224 0"},
43  {"Th232", "/gps/ion 90 232 0"},
44  {"K40", "/gps/ion 19 40 0"}};
45 
46  // Define a map that maps isotopes to their termination isotope (Ra is gas state and chains are often not in secular equilibrium)
47  // Ra224 with a lifetime of ~4d breaks equilibrium far less than Ra226, with half life ~1600y, so activity of Th232 and Ra224 will probably be very similar
48  std::map<G4String, G4String> m_terminationIsotopes = {
49  {"U238", "Ra226"},
50  {"Th232", "Ra224"},
51  {"Ra226", "none"},
52  {"Ra224", "none"},
53  {"U235", "none"},
54  {"K40", "none"}};
55 
56  void generalGPS();
57  void configureIsotopeGPS(G4String Isotope, G4String location);
58  std::map<G4String, G4int> calculateNumberOfDecays(G4MaterialPropertiesTable *pMPT, G4double pTimeWindow, G4double pMass);
59  OMSimOpticalModule *m_opticalModule;
60  G4double m_productionRadius;
61  G4String m_nuclideStopName;
62 
63  OMSimDecaysGPS() = default;
64  ~OMSimDecaysGPS() = default;
65  OMSimDecaysGPS(const OMSimDecaysGPS &) = delete;
66  OMSimDecaysGPS &operator=(const OMSimDecaysGPS &) = delete;
67 };
A class for simulating isotope decays inside the pressure vessel and PMT glass.
Definition: OMSimDecaysGPS.hh:16
void simulateDecaysInPMTs(G4double pTimeWindow)
Simulates the decays in the PMTs of the optical module.
Definition: OMSimDecaysGPS.cc:132
void setOpticalModule(OMSimOpticalModule *p_opticalModule)
Set the optical module to be used.
Definition: OMSimDecaysGPS.hh:32
std::map< G4String, G4int > calculateNumberOfDecays(G4MaterialPropertiesTable *pMPT, G4double pTimeWindow, G4double pMass)
Calculates the number of decays for isotopes.
Definition: OMSimDecaysGPS.cc:84
void generalGPS()
Configures common GPS commands for the radioactive decays.
Definition: OMSimDecaysGPS.cc:19
void configureIsotopeGPS(G4String Isotope, G4String location)
Configures GPS for the production and decay of an isotope within a specified location.
Definition: OMSimDecaysGPS.cc:63
void simulateDecaysInPressureVessel(G4double pTimeWindow)
Simulates the decays in the pressure vessel of the optical module.
Definition: OMSimDecaysGPS.cc:102
Base class for OMs works as interface.
Definition: OMSimOpticalModule.hh:23