OMSim
Geant4 for IceCube optical module studies
OMSimPMTResponse.hh
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include <G4SystemOfUnits.hh>
9 #include <G4Types.hh>
10 #include <map>
11 #include <TGraph.h>
12 #include <TH2D.h>
20 {
21 public:
28  struct PMTPulse
29  {
30  G4double PE;
31  G4double transitTime;
33  };
34 
35  PMTPulse processPhotocathodeHit(G4double pX, G4double pY, G4double pWavelength);
36  void makeQEweightInterpolator(const std::string& p_FileNameAbsorbedFraction);
37  void makeQEInterpolator(const std::string& p_FileName);
38  void makeCEweightInterpolator(const std::string& p_FileName);
39  void makeScansInterpolators(const std::string &p_PathToFiles);
40  void setScannedWavelengths(std::vector<double> p_wavelengths);
41 
42 private:
43 
44  G4double getCharge(G4double p_WavelengthKey);
45  G4double getCharge(G4double p_WavelengthKey1, G4double p_WavelengthKey2);
46  G4double getTransitTime(G4double p_WavelengthKey);
47  G4double getTransitTime(G4double p_WavelengthKey1, G4double p_WavelengthKey2);
48  PMTPulse getPulseFromInterpolation(G4double p_WavelengthKey1, G4double p_WavelengthKey2);
49  PMTPulse getPulseFromKey(G4double p_WavelengthKey);
50  G4double wavelengthInterpolatedValue(std::map<G4double, TH2D *> p_Map, G4double p_WavelengthKey1, G4double p_WavelengthKey2);
51  std::vector<G4double> getScannedWavelengths();
52 
53 
54  bool m_scansInterpolatorsAvailable = false;
55  bool m_QEWeightInterpolatorAvailable = false;
56  bool m_QEInterpolatorAvailable = false;
57  bool m_CEWeightInterpolatorAvailable = false;
58  bool m_simplePMT;
59  double m_X;
60  double m_Y;
61 
62  G4double m_wavelength;
63  std::vector<G4double> m_scannedWavelengths;
64 
65  TGraph *m_relativeDetectionEfficiencyInterpolator;
66  TGraph *m_QEfileInterpolator;
67  TGraph *m_weightAbsorbedToQEInterpolator;
68  std::map<G4double, TH2D *> m_gainG2Dmap;
69  std::map<G4double, TH2D *> m_gainResolutionG2Dmap;
70  std::map<G4double, TH2D *> m_transitTimeG2Dmap;
71  std::map<G4double, TH2D *> m_transitTimeSpreadG2Dmap;
72 
73 };
Class to simulate PMT response.
Definition: OMSimPMTResponse.hh:20
PMTPulse getPulseFromKey(G4double p_WavelengthKey)
Definition: OMSimPMTResponse.cc:168
void makeCEweightInterpolator(const std::string &p_FileName)
Configures the CE weight interpolator for PMT response.
Definition: OMSimPMTResponse.cc:285
void setScannedWavelengths(std::vector< double > p_wavelengths)
Set the scanned wavelengths for the PMT response.
Definition: OMSimPMTResponse.cc:383
PMTPulse processPhotocathodeHit(G4double pX, G4double pY, G4double pWavelength)
Process a hit on the photocathode into a PMT pulse.
Definition: OMSimPMTResponse.cc:319
OMSimPMTResponse()
Definition: OMSimPMTResponse.cc:16
void makeQEInterpolator(const std::string &p_FileName)
Creates the QE interpolator from the target QE file.
Definition: OMSimPMTResponse.cc:196
std::vector< G4double > getScannedWavelengths()
Get the scanned wavelengths for the PMT response.
Definition: OMSimPMTResponse.cc:393
G4double wavelengthInterpolatedValue(std::map< G4double, TH2D * > p_Map, G4double p_WavelengthKey1, G4double p_WavelengthKey2)
Definition: OMSimPMTResponse.cc:155
G4double getTransitTime(G4double p_WavelengthKey)
Retrieve the transit time from measurements for a given wavelength.
Definition: OMSimPMTResponse.cc:119
void makeQEweightInterpolator(const std::string &p_FileNameAbsorbedFraction)
Configures the QE weight interpolator for PMT response.
Definition: OMSimPMTResponse.cc:232
G4double getCharge(G4double p_WavelengthKey)
Retrieve the charge in PE from measurements for a given wavelength.
Definition: OMSimPMTResponse.cc:61
PMTPulse getPulseFromInterpolation(G4double p_WavelengthKey1, G4double p_WavelengthKey2)
Definition: OMSimPMTResponse.cc:183
Represents the output pulse for a detected photon.
Definition: OMSimPMTResponse.hh:29
G4double PE
Charge in photoelectrons.
Definition: OMSimPMTResponse.hh:30
G4double transitTime
Detection time relative to average response of PMT.
Definition: OMSimPMTResponse.hh:31
G4double detectionProbability
Probability of photon being detected.
Definition: OMSimPMTResponse.hh:32