OMSim
Geant4 for IceCube optical module studies
Loading...
Searching...
No Matches
OMSimDecaysGPS.hh
Go to the documentation of this file.
1
7#pragma once
8#include "OMSimOpticalModule.hh"
9#include <globals.hh>
16{
17public:
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 G4ThreeVector sampleNextDecayPosition(G4ThreeVector p_currentPosition);
36
37private:
38 // Define a map that maps isotopes to their GPS commands
39 std::map<G4String, G4String> m_isotopeCommands = {
40 {"U238", "/gps/ion 92 238 0"},
41 {"U235", "/gps/ion 92 235 0"},
42 {"Ra226", "/gps/ion 88 226 0"},
43 {"Ra224", "/gps/ion 88 224 0"},
44 {"Th232", "/gps/ion 90 232 0"},
45 {"K40", "/gps/ion 19 40 0"}};
46
47 // Define a map that maps isotopes to their termination isotope (Ra is gas state and chains are often not in secular equilibrium)
48 // 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
49 std::map<G4String, G4String> m_terminationIsotopes = {
50 {"U238", "Ra226"},
51 {"Th232", "Ra224"},
52 {"Ra226", "none"},
53 {"Ra224", "none"},
54 {"U235", "none"},
55 {"K40", "none"}};
56
57 void generalGPS();
58 void configureIsotopeGPS(G4String Isotope, G4String location);
59 std::map<G4String, G4int> calculateNumberOfDecays(G4MaterialPropertiesTable *pMPT, G4double pTimeWindow, G4double pMass);
60 OMSimOpticalModule *m_opticalModule;
61 G4double m_productionRadius;
62 G4String m_nuclideStopName;
63
64 OMSimDecaysGPS() = default;
65 ~OMSimDecaysGPS() = default;
66 OMSimDecaysGPS(const OMSimDecaysGPS &) = delete;
67 OMSimDecaysGPS &operator=(const OMSimDecaysGPS &) = delete;
68};
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:133
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:85
void generalGPS()
Configures common GPS commands for the radioactive decays.
Definition OMSimDecaysGPS.cc:21
void configureIsotopeGPS(G4String Isotope, G4String location)
Configures GPS for the production and decay of an isotope within a specified location.
Definition OMSimDecaysGPS.cc:64
void simulateDecaysInPressureVessel(G4double pTimeWindow)
Simulates the decays in the pressure vessel of the optical module.
Definition OMSimDecaysGPS.cc:103
Base class for OMs works as interface.
Definition OMSimOpticalModule.hh:23