////////////////////////////////////////////////////////////////////////
/// \class RAT::FitterPMT
///
/// \brief Hit information container for fitter components
///
/// \author Phil G Jones
\n
/// \author Matt Mottram < m.mottram@qmul.ac.uk> -- contact person
///
/// REVISION HISTORY:\n
/// 23/08/2013 : P G Jones - New file \n
/// 14/02/2014 : G Prior - methods added and
/// methods name changed for the SOCPMT fitter
/// 13 May 2015: W Heintzelman - Add Crate-Card-Channel-Cell number
/// 25 April 2017: T. Kaptanoglu - Add Crosstalk flag
///
/// \details Contains the hit information and is used by the fitter
/// components exclusively. This differs from the DS::PMT*
/// objects in that it includes a error estimate for each piece
/// of hit information.
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_FitterPMT__
#define __RAT_FitterPMT__
#include
namespace RAT
{
namespace DS
{
class SOCPMT;
}
class FitterPMT
{
public:
FitterPMT() { };
FitterPMT( const DS::PMTCal& pmtCal );
FitterPMT( const DS::SOCPMT& socPMT );
virtual ~FitterPMT() { };
/// Return the ID (PMTCal) or the LCN (SOCPMT)
int GetID() const { return fID; }
// Return the CCCC ( Crate Card Channel Cell number )
int GetCCCC() const { return fCCCC; }
/// Return the hit time (PMTCal) or the centroid (SOCPMT)
double GetTime() const { return fTime; }
/// Return the error associated with the hit time (PMTCal) or the centroid (SOCPMT)
double GetTimeError() const { return fTimeError; }
/// Return the hit charge, QHL
double GetQHL() const { return fQHL; }
/// Return the error associated with the hit charge
double GetQHLError() const { return fQHLError; }
/// Return the hit charge, QHS
double GetQHS() const { return fQHS; }
/// Return the error associated with the hit charge
double GetQHSError() const { return fQHSError; }
/// Return the hit charge, QLX
double GetQLX() const { return fQLX; }
/// Return the error associated with the hit charge
double GetQLXError() const { return fQLXError; }
/// Return the status of the calibrations
DS::BitMask GetStatus() const { return fStatus; }
/// Return the crosstalk flag
bool GetCrossTalkFlag() const { return fCrossTalkFlag; }
private:
int fID; ///< The PMT channel number/id or lcn
int fCCCC; // CCCC ( Crate Card Channel Cell number )
double fTime; ///< The hit time or centroid
double fTimeError; ///< Error associated with the hit time or centroid
double fQHL; ///< The hit QHL charge
double fQHLError; ///< Error associated with the QHL charge
double fQHS; ///< The hit QHS charge
double fQHSError; ///< Error associated with the QHS charge
double fQLX; ///< The hit QLX charge
double fQLXError; ///< Error associated with the QLX charge
DS::BitMask fStatus; ///< Status flags for the various calibrations
bool fCrossTalkFlag; ///< Crosstalk flag for each pmt hit
};
} //::RAT
#endif