/* ************************************ * Author: M. Babai (M.Babai@rug.nl) * * * * pid classifier * * * * Modified: * * * * ************************************/ #ifndef PND_PROJECTED_KNN_H #define PND_PROJECTED_KNN_H // Local Headers #include "PndKnnClassify.h" class PndProjectedKNN: public PndMvaClassifier { public: //! Constructor PndProjectedKNN(const std::string& inputFile, const std::vector& classNames, const std::vector& varNames, const std::vector< std::vector >& varCombinations); //! Destructor virtual ~PndProjectedKNN(); //! Get pdf's void GetMvaValues(std::vector eventData, std::map& result); //! Classify Current event. std::string* Classify(std::vector EvtData); //! Set params inline void SetEvtParam(const float scFact, const double weight); //! Set number of neighbors inline void SetKnn(const unsigned int val); //! Init classifiers void InitKNN(); private: //! to avoid mistakes. PndProjectedKNN(const PndProjectedKNN& other); PndProjectedKNN& operator= (const PndProjectedKNN& other); // Free allocated memory. void destroy(); std::vector > m_varCombinations; // First = classifier, Second = parameter indices std::vector *> > m_classifiers; float m_ScaleFact; //! Scale factor. double m_weight; //! Weight. unsigned int m_knn;//! Number of neigbours. }; //End, class interface inline void PndProjectedKNN::SetEvtParam(const float scFact, const double weight) { m_ScaleFact = scFact; m_weight = weight; }; inline void PndProjectedKNN::SetKnn(const unsigned int val) { m_knn = val; }; #endif