00001 // @(#)root/tmva $Id: Ranking.h 29195 2009-06-24 10:39:49Z brun $ 00002 // Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss 00003 00004 /********************************************************************************** 00005 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * 00006 * Package: TMVA * 00007 * Class : Ranking * 00008 * Web : http://tmva.sourceforge.net * 00009 * * 00010 * Description: * 00011 * Virtual ranking class * 00012 * * 00013 * Authors (alphabetical): * 00014 * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland * 00015 * Joerg Stelzer <Joerg.Stelzer@cern.ch> - CERN, Switzerland * 00016 * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany * 00017 * * 00018 * Copyright (c) 2005: * 00019 * CERN, Switzerland * 00020 * MPI-K Heidelberg, Germany * 00021 * * 00022 * Redistribution and use in source and binary forms, with or without * 00023 * modification, are permitted according to the terms listed in LICENSE * 00024 * (http://tmva.sourceforge.net/LICENSE) * 00025 * * 00026 **********************************************************************************/ 00027 00028 #ifndef ROOT_TMVA_Ranking 00029 #define ROOT_TMVA_Ranking 00030 00031 ////////////////////////////////////////////////////////////////////////// 00032 // // 00033 // Ranking // 00034 // // 00035 // Defines vector of rank // 00036 // // 00037 ////////////////////////////////////////////////////////////////////////// 00038 00039 #include <vector> 00040 00041 #ifndef ROOT_TString 00042 #include "TString.h" 00043 #endif 00044 00045 namespace TMVA { 00046 00047 class MsgLogger; 00048 class Rank; 00049 00050 class Ranking { 00051 00052 public: 00053 00054 Ranking(); 00055 Ranking( const TString& context, const TString& rankingDiscriminatorName ); 00056 virtual ~Ranking(); 00057 00058 virtual void AddRank( const Rank& rank ); 00059 virtual void Print() const; 00060 00061 void SetContext ( const TString& context ); 00062 void SetDiscrName( const TString& discrName ) { fRankingDiscriminatorName = discrName; } 00063 00064 private: 00065 00066 std::vector<TMVA::Rank> fRanking; // vector of ranks 00067 TString fContext; // the ranking context 00068 TString fRankingDiscriminatorName; // the name of the ranking discriminator 00069 00070 mutable MsgLogger* fLogger; //! message logger 00071 MsgLogger& Log() const { return *fLogger; } 00072 00073 ClassDef(Ranking,0) // Method-specific ranking for input variables 00074 }; 00075 00076 // -------------------------------------------------------------------------- 00077 00078 class Rank { 00079 00080 public: 00081 00082 Rank( const TString& variable, Double_t rankValue ); 00083 virtual ~Rank(); 00084 00085 // comparison between rank 00086 Bool_t operator < ( const Rank& other ) const; 00087 Bool_t operator > ( const Rank& other ) const; 00088 00089 const TString& GetVariable() const { return fVariable; } 00090 Double_t GetRankValue() const { return fRankValue; } 00091 Int_t GetRank() const { return fRank; } 00092 void SetRank( Int_t rank ) { fRank = rank; } 00093 00094 private: 00095 00096 TString fVariable; // the variable name 00097 Double_t fRankValue; // the rank value 00098 00099 Int_t fRank; 00100 }; 00101 } 00102 00103 #endif