//////////////////////////////////////////////////////////////////////// /// \class RAT::ChannelEfficiency /// /// \brief Calculates the detection efficiency of a channel. /// /// \author Phil G Jones /// \author Gabriel Orebi Gann -- contact person /// /// REVISION HISTORY:\n /// 26/06/2013 : P G Jones - New file, code from DetectorConstructor, /// originally by GDOG. \n /// 09/07/2015 : GDOG - add a function to return ave chan. eff. on normal+OWL /// /// \details Calculate the efficiency of detecting single photoelectron /// pulses given the detector threshold. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_ChannelEfficiency_hh__ #define __RAT_ChannelEfficiency_hh__ #include namespace RAT { class ChannelEfficiency { public: /// Singleton class instance inline static ChannelEfficiency* Get(); /// Calculate the Channel Efficiencies void BeginOfRun(); /// Return the efficiency for channel lcn double GetChannelEfficiency( const int lcn ) const { return fChannelEfficiency[lcn]; } /// Return the average channel efficiency (with or without OWLs included) double GetAverageEfficiency() const { return fAverageEfficiency; } double GetAverageEffPlusOWLs() const { return fAveEffPlusOWL;} private: std::vector fChannelEfficiency; ///< Channel efficiency by LCN double fAverageEfficiency; ///< Average channel efficiency on normal tubes double fAveEffPlusOWL; // Average channel efficiency on normal + OWL tubes /// Prevent usage of methods below ChannelEfficiency(); ChannelEfficiency( ChannelEfficiency& ); void operator=( ChannelEfficiency& ); }; inline ChannelEfficiency* ChannelEfficiency::Get() { static ChannelEfficiency channelEfficiency; return &channelEfficiency; } } //::RAT #endif