/** \file Declaration of PMTCalibData \author Stefano Argirņ \version $Id: PMTCalibData.h 14717 2009-09-17 20:24:36Z lukas $ \date 09 Oct 2003 \brief Online Calibration data Quantities in this class are normally filled by Reading the CDAS Event and using CDAS algorithms. Other classes do not have write access */ #ifndef _sevt_PMTCalibData_h_ #define _sevt_PMTCalibData_h_ #include #include #include namespace sevt { class PMT; /** \class PMTCalibData PMTCalibData.h sevt/PMTCalibData.h \brief Online Calibration data Quantities in this class are normally filled by Reading the CDAS Event and using CDAS algorithms. Other classes do not have write access \ingroup sevt */ class PMTCalibData { public: // this should go away with FatBastard typedef PMTConstants::CalibrationState CalibrationState; static const CalibrationState eNone = PMTConstants::eNone; static const CalibrationState eRough = PMTConstants::eRough; static const CalibrationState eOnline = PMTConstants::eOnline; static const CalibrationState eHistograms = PMTConstants::eHistograms; static const CalibrationState eExtra = PMTConstants::eExtra; bool IsTubeOk() const { return fIsTubeOk; } bool IsLowGainOk() const { return fIsLowGainOk; } double GetRate() const { return fRate; } /// Amplitude of VEM Peak [fadc counts] double GetVEMPeak() const { return fVEMPeak; } /// Charge of VEM Peak [fadc counts] double GetVEMCharge() const { return fVEMCharge; } /// Baseline of FADC trace double GetBaseline(const PMTConstants::PMTGain gain = PMTConstants::eHighGain) const { return fBaseline[gain]; } /// RMS of FADC trace baseline double GetBaselineRMS(const PMTConstants::PMTGain gain = PMTConstants::eHighGain) const { return fBaselineRMS[gain]; } /// Dynode Anode Ratio double GetDynodeAnodeRatio() const { return fDynodeAnodeRatio; } /// Dynode Anode RMS double GetDynodeAnodeRMS() const { return fDynodeAnodeRMS; } double GetDynodeAnodeDelay() const { return fDynodeAnodeDelay; } double GetDynodeAnodeDelayRMS() const { return fDynodeAnodeDelayRMS; } double GetDynodeAnodeDelayChi2() const { return fDynodeAnodeDelayChi2; } /// Muon base histogram const std::vector& GetMuonBaseHisto() const { return fMuonBaseHisto; } /// x-axis offset of the muon base histogram int GetMuonBaseHistoOffset() const { return fMuonBaseHistoOffset; } /// Muon peak histogram const std::vector& GetMuonPeakHisto() const { return fMuonPeakHisto; } /// x-axis offset of the muon peak histogram int GetMuonPeakHistoOffset() const { return fMuonPeakHistoOffset; } /// Muon charge histogram const std::vector& GetMuonChargeHisto() const { return fMuonChargeHisto; } /// x-axis offset of the muon charge histogram int GetMuonChargeHistoOffset() const { return fMuonChargeHistoOffset; } /// Average shape of a muon const std::vector& GetMuonShapeHisto() const { return fMuonShapeHisto; } int GetEvolution() const { return fEvolution; } int GetNumberTDA() const { return fNTDA; } CalibrationState GetCalibrationState() const { return fCalibrationState; } void SetIsTubeOk(const bool ok) { fIsTubeOk = ok; } void SetIsLowGainOk(const bool ok) { fIsLowGainOk = ok; } void SetRate(const double rate) { fRate = rate; } void SetVEMPeak(const double vempk) { fVEMPeak = vempk; } void SetVEMCharge(const double vemch) { fVEMCharge = vemch; } void SetCalibrationState(const CalibrationState state) { fCalibrationState = state; } /// Set baseline and baseline RMS for a particular channel (defaults to high gain channel) void SetBaseline(const double base, const double rms, const PMTConstants::PMTGain gain = PMTConstants::eHighGain) { fBaseline[gain] = base; fBaselineRMS[gain] = rms; } /// Set dynode/anode and dynode/anode RMS void SetDynodeAnodeRatio(const double da, const double rms) { fDynodeAnodeRatio = da; fDynodeAnodeRMS = rms; } void SetEvolution(const int ev) { fEvolution = ev; } void SetNumberTDA(const int num) { fNTDA = num; } /// Set dynode anode delay and delay RMS void SetDynodeAnodeDelay(const double num, const double rms) { fDynodeAnodeDelay = num; fDynodeAnodeDelayRMS = rms; } void SetDynodeAnodeDelayChi2(const double num) { fDynodeAnodeDelayChi2 = num; } void SetMuonBaseHisto(const std::vector& mbh, const int offset) { fMuonBaseHisto = mbh; fMuonBaseHistoOffset = offset; } void SetMuonPeakHisto(const std::vector& mph, const int offset) { fMuonPeakHisto = mph; fMuonPeakHistoOffset = offset; } void SetMuonChargeHisto(const std::vector& mch, const int offset) { fMuonChargeHisto = mch; fMuonChargeHistoOffset = offset; } void SetMuonShapeHisto(const std::vector& ms) { fMuonShapeHisto = ms; } private: PMTCalibData(); ~PMTCalibData() { } double fRate; double fVEMPeak; double fVEMCharge; double fBaseline[PMTConstants::eNumberOfGains]; double fBaselineRMS[PMTConstants::eNumberOfGains]; double fDynodeAnodeRatio; double fDynodeAnodeRMS; double fDynodeAnodeDelay; double fDynodeAnodeDelayRMS; double fDynodeAnodeDelayChi2; int fEvolution; int fNTDA; CalibrationState fCalibrationState; bool fIsTubeOk; bool fIsLowGainOk; std::vector fMuonBaseHisto; std::vector fMuonPeakHisto; std::vector fMuonChargeHisto; std::vector fMuonShapeHisto; int fMuonBaseHistoOffset; int fMuonPeakHistoOffset; int fMuonChargeHistoOffset; friend class PMT; friend class utl::ShadowPtr; }; } #endif // Configure (x)emacs for this file ... // Local Variables: // mode: c++ // compile-command: "make -C .. -k" // End: