OMSim
Geant4 for IceCube optical module studies
Loading...
Searching...
No Matches
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{
21public:
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
42private:
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