////////////////////////////////////////////////////////////////////////
/// \class RAT::Classifiers::SelectorClassifier
///
/// \brief All classifiers with selectors derive from this
///
/// \author Phil G Jones
\n
/// \author Evelina Arushanova -- contact person \n
/// \author Matt Mottram -- contact person
///
/// REVISION HISTORY:\n
/// 2014-03-27 : P G Jones - New file \n
/// 2017-05-22 : J Caravaca - Add ability to daisy-chain selectors \n
///
/// \details Adds extra selector code
///
////////////////////////////////////////////////////////////////////////
#ifndef __RAT_Classifier_SelectorClassifier__
#define __RAT_Classifier_SelectorClassifier__
#include
#include
#include
#include
namespace RAT
{
namespace PMTSelectors
{
class PMTSelector;
}
namespace Classifiers
{
//Note virtual inheritance.
class SelectorClassifier : public virtual Classifier
{
public:
/// Empty virtual destructor
virtual ~SelectorClassifier() {}
/// Add the given PMT selector the the list
void AddPMTSelector( PMTSelectors::PMTSelector* selector ) { fSelectors.push_back( selector ); }
protected:
// Invoke the selectors on the fPMTData to produce the fSelectedPMTData
//
// vertex is the vertex to select on
void SelectPMTData( const DS::FitVertex& vertex );
std::list fSelectors; // List of selectors to be applied in order
std::vector fSelectedPMTData; ///< Selected PMTs
};
} //::Classifier
} //::RAT
#endif