////////////////////////////////////////////////////////////////////////
/// \class RAT::CalibPMTSD
///
/// \brief  Collection of hit PMTs for the current event. Is a singleton.
///
/// \author Phil G Jones <p.g.jones@qmul.ac.uk>
/// \author Aksel Hallin <aksel.hallin@ualberta.ca> -- contact person
///
/// REVISION HISTORY:\n
///     2013-12-16 : P G Jones - New file, replaces GLG4CalibPMTSD. \n
///
/// \details Each PMT hit is registered in this class. The collection is
/// cleared at the start of each event. The DQXX information is applied
/// here.
///
////////////////////////////////////////////////////////////////////////

#ifndef __RAT_CalibPMTSD_hh__
#define __RAT_CalibPMTSD_hh__

#include <G4VSensitiveDetector.hh>

namespace RAT
{

class CalibPMTSD : public G4VSensitiveDetector
{
public:
  CalibPMTSD( G4String name,
              const int lcn,
              const double threshold,
              const double efficiency );

  virtual void Initialize( G4HCofThisEvent* );
  virtual void EndOfEvent( G4HCofThisEvent* );
  virtual G4bool ProcessHits( G4Step* step, G4TouchableHistory* );
protected:
  double fTotalEnergyDeposited; ///< The total deposited energy in the event
  double fLCN; ///< The logical channel number of this calib PMT
  double fThresholdEnergy; ///< The threshold energy under which photoelectrons are produced
  double fEfficiency; ///< The efficiency of this at detecting events above the energy threshold
};

} //::RAT

#endif