////////////////////////////////////////////////////////////////////////
/// \class RAT::PMTSelectors::PMTSelector
///
/// \brief Base class for PMTSelectors
///
/// \author Phil G Jones
/// \author Matt Mottram < m.mottram@qmul.ac.uk> -- contact person
///
/// REVISION HISTORY:
/// - 26/04/2011 : P G Jones - New file
/// - 24/01/2013 : P G Jones - Changed to derive from the FitterComponent
/// class. Allows variable setting.
/// - 2014-03-29 : P G Jones - Updated lifetime, added BeginOfRun method
/// - 2014-02-02 : Matt Strait - Minor changes to comply with CIC rules.
///
/// \details All PMT Selectors derive from this.
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_PMTSelector_PMTSelector_hh__
#define __RAT_PMTSelector_PMTSelector_hh__
#include
#include
#include
namespace RAT
{
class FitterPMT;
namespace DS
{
class EV;
class FitVertex;
class Run;
}
namespace PMTSelectors
{
class PMTSelector : public FitterComponent
{
public:
/// Initialise the selector
///
/// @param[in] param Option string, typically ratdb index
virtual void Initialise( const std::string& param ) = 0;
/// Main Selector function
///
/// @param[in] data PMT data to select from
/// @param[in] vertex of interest to select by
/// @returns selected FitterPMTs
virtual std::vector GetSelectedPMTs( const std::vector& data,
const DS::FitVertex& vertex ) = 0;
};
} //::PMTSelector
} //::RAT
#endif