// @(#)root/tmva $Id$ // Author: Andreas Hoecker, Peter Speckmayer, Joerg Stelzer, Helge Voss, Jan Therhaag /********************************************************************************** * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * * Package: TMVA * * Class : ResultsMulticlass * * Web : http://tmva.sourceforge.net * * * * Description: * * Base-class for result-vectors * * * * Authors (alphabetical): * * Andreas Hoecker - CERN, Switzerland * * Peter Speckmayer - CERN, Switzerland * * Joerg Stelzer - CERN, Switzerland * * Jan Therhaag - U of Bonn, Germany * * Helge Voss - MPI-K Heidelberg, Germany * * * * Copyright (c) 2005-2011: * * CERN, Switzerland * * U. of Victoria, Canada * * MPI-K Heidelberg, Germany * * U. of Bonn, Germany * * * * Redistribution and use in source and binary forms, with or without * * modification, are permitted according to the terms listed in LICENSE * * (http://tmva.sourceforge.net/LICENSE) * **********************************************************************************/ #ifndef ROOT_TMVA_ResultsMulticlass #define ROOT_TMVA_ResultsMulticlass ////////////////////////////////////////////////////////////////////////// // // // ResultsMulticlass // // // // Class which takes the results of a multiclass classification // // // ////////////////////////////////////////////////////////////////////////// #include "TH1F.h" #include "TH2F.h" #include "TMVA/Results.h" #include "TMVA/Event.h" #include "IFitterTarget.h" #include namespace TMVA { class MsgLogger; class ResultsMulticlass : public Results, public IFitterTarget { public: ResultsMulticlass( const DataSetInfo* dsi, TString resultsName ); ~ResultsMulticlass(); // setters void SetValue( std::vector& value, Int_t ievt ); void Resize( Int_t entries ) { fMultiClassValues.resize( entries ); } using TObject::Clear; virtual void Clear(Option_t *) { fMultiClassValues.clear(); } // getters Long64_t GetSize() const { return fMultiClassValues.size(); } virtual const std::vector< Float_t >& operator[] ( Int_t ievt ) const { return fMultiClassValues.at(ievt); } std::vector >* GetValueVector() { return &fMultiClassValues; } Types::EAnalysisType GetAnalysisType() { return Types::kMulticlass; } Float_t GetAchievableEff(UInt_t cls){return fAchievableEff.at(cls);} Float_t GetAchievablePur(UInt_t cls){return fAchievablePur.at(cls);} std::vector& GetAchievableEff(){return fAchievableEff;} std::vector& GetAchievablePur(){return fAchievablePur;} TMatrixD GetConfusionMatrix(Double_t effB); // histogramming void CreateMulticlassPerformanceHistos(TString prefix); void CreateMulticlassHistos( TString prefix, Int_t nbins, Int_t nbins_high); Double_t EstimatorFunction( std::vector & ); std::vector GetBestMultiClassCuts(UInt_t targetClass); private: mutable std::vector > fMultiClassValues; ///< mva values (Results) mutable MsgLogger* fLogger; /// fAchievableEff; std::vector fAchievablePur; std::vector > fBestCuts; // Temporary storage used during GetBestMultiClassCuts std::vector fClassSumWeights; std::vector fEventWeights; std::vector fEventClasses; protected: ClassDef(ResultsMulticlass,2); }; } #endif