3 #include <boost/lexical_cast.hpp>
4 #include <sdet/Station.h>
6 #include <sdet/SDetector.h>
7 #include <det/Detector.h>
8 #include <utl/ErrorLogger.h>
9 #include <utl/MustFind.h>
18 PMT::PMT(
const int pid,
const int sid,
26 {
"PMTId", boost::lexical_cast<
string>(pid) },
27 {
"stationId", boost::lexical_cast<
string>(sid) },
28 {
"isUUB", boost::lexical_cast<
string>(isUUB) }
107 vector<double>* coords =
nullptr;
108 GetPMTData(coords,
"PMTPosition",
"tankPMTConfig",
"PMT coordinates");
113 const auto& cs = Detector::GetInstance().GetSDetector().GetStation(
fStationId).GetLocalCoordinateSystem();
114 const auto& xyz = *coords;
147 const vector<double>&
152 "probability distribution for charge at PMT base from SPEs");
185 err <<
"Did not find requested component: '" << msg <<
"', "
186 "requested station = " <<
fIndexMap[
"stationId"] <<
", "
187 "requested PMT = " <<
fIndexMap[
"PMTId"];
204 return GetPMTData(
fVEMPeak,
"compatibilityPeak", simId,
"VEM peak for simulated UUB calibration");
296 return GetPMTData(
fTimeOffset,
"timeOffset",
"pmtElectronics",
"time offset relative to UB large WCD PMT HG");
305 return GetPMTData(
fBaselineHG,
"HGBaseline",
"pmtElectronics",
"HG baseline for simulated calibration");
307 return GetPMTData(
fBaselineLG,
"LGBaseline",
"pmtElectronics",
"LG baseline for simulated calibration");
double GetMaxCharge() const
double GetBaseline(const sdet::PMTConstants::PMTGain gain) const
Get baseline level for the PMT (for simulations)
const T & GetPMTData(T *&data, const std::string &property, const std::string &component, const std::string &errorMsg) const
double GetGainRatioRMS() const
Get RMS of dynode anode ration for the PMT (for simulations)
double GetMultiplier(const sdet::PMTConstants::PMTGain gain) const
double GetNominalVEMPeak() const
what HV setting tries to target in HG
utl::TabulatedFunction * fFaceRefractionIndex
const utl::TabulatedFunction & GetDomeRefractionIndex() const
Refraction index for the PMT dome.
const std::vector< double > & GetChargeProbabilityDistribution() const
utl::TabulatedFunction * fPulseShape
utl::TabulatedFunction * fDomeRefractionIndex
Class to hold collection (x,y) points and provide interpolation between them.
double GetTimeOffset() const
double GetNominalVEMCharge() const
Get nominal value for the VEM charge.
double GetHighGainDelay() const
double GetCurrent2VoltageMultiplier() const
double GetMinCharge() const
Base class for exceptions trying to access non-existing components.
double GetCompatibilityVEMPeak(const std::string &simulationIdentifier) const
Get VEM peak for the PMT (for simulations)
const utl::TabulatedFunction & GetPulseShape() const
double GetCollectionEfficiency() const
Collection efficiency.
double GetEffectiveArea() const
const PMTConstants::PMTType fType
const utl::Point & GetPosition() const
PMT position.
det::VManager::IndexMap fIndexMap
double GetVEMPeak(const std::string &simulationIdentifier) const
Get VEM peak for the PMT (for simulations)
double GetGainRatio() const
Get dynode to anode ratio for the PMT (for simulations)
double * fVoltage2FADCMultiplier
std::vector< double > * fChargeProbabilityDistribution
void NotFoundAndThrow(const std::string &msg) const
double GetWorkingGain() const
PMT Working Gain.
const utl::TabulatedFunction & GetQuantumEfficiency() const
Quantum efficiency.
utl::TabulatedFunction * fRTVRefractionIndex
utl::TabulatedFunction * fQuantumEfficiency
double GetVEMCharge(const std::string &simulationIdentifier) const
Get VEM charge for the PMT (for simulations)
const utl::TabulatedFunction & GetFaceRefractionIndex() const
Refraction index for the PMT face.
double GetVoltage2FADCMultiplier() const
const utl::TabulatedFunction & GetRTVRefractionIndex() const
Refraction index for the interface between PMT face and dome (RTV)
double * fCollectionEfficiency
double GetBaselineRMS(const sdet::PMTConstants::PMTGain gain) const
Get baseline noise for the PMT (for simulations)
double * fCurrent2VoltageMultiplier