//////////////////////////////////////////////////////////////////////// /// \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