Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
MethodCompositeBase.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Joerg Stelzer, Helge Voss, Kai Voss,Or Cohen
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : MethodCompositeBase *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Virtual base class for all MVA method *
12  * *
13  * Authors (alphabetical): *
14  * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
15  * Joerg Stelzer <Joerg.Stelzer@cern.ch> - CERN, Switzerland *
16  * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
17  * Kai Voss <Kai.Voss@cern.ch> - U. of Victoria, Canada *
18  * Or Cohen <orcohenor@gmail.com> - Weizmann Inst., Israel *
19  * *
20  * Copyright (c) 2005: *
21  * CERN, Switzerland *
22  * U. of Victoria, Canada *
23  * MPI-K Heidelberg, Germany *
24  * LAPP, Annecy, France *
25  * *
26  * Redistribution and use in source and binary forms, with or without *
27  * modification, are permitted according to the terms listed in LICENSE *
28  * (http://tmva.sourceforge.net/LICENSE) *
29  **********************************************************************************/
30 
31 #ifndef ROOT_TMVA_MethodCompositeBase
32 #define ROOT_TMVA_MethodCompositeBase
33 
34 //////////////////////////////////////////////////////////////////////////
35 // //
36 // MethodCompositeBase //
37 // //
38 // Virtual base class for combining several TMVA method //
39 // //
40 //////////////////////////////////////////////////////////////////////////
41 
42 #include <iosfwd>
43 #include <vector>
44 
45 #include "TMVA/MethodBase.h"
46 
47 namespace TMVA {
48  class IMethod;
49 
50  class MethodCompositeBase : public MethodBase {
51 
52  public :
53  MethodCompositeBase( const TString& jobName,
54  Types::EMVA methodType,
55  const TString& methodTitle,
56  DataSetInfo& theData,
57  const TString& theOption = "" );
58 
59 
60  MethodCompositeBase( Types::EMVA methodType,
61  DataSetInfo& dsi,
62  const TString& weightFile );
63 
64  using MethodBase::ReadWeightsFromStream;
65 
66  // write weights to file
67  void AddWeightsXMLTo( void* parent ) const;
68  void ReadWeightsFromXML( void* wghtnode );
69 
70  // calculate the MVA value combining all classifiers according to thier fMethodWeight
71  Double_t GetMvaValue( Double_t* err = 0, Double_t* errUpper = 0 );
72 
73  using MethodBase::GetMvaValue;
74 
75  // read weights from file
76  void ReadWeightsFromStream( std::istream& istr );
77 
78  // performs classifier training
79  virtual void Train() = 0;
80 
81  // create ranking
82  virtual const Ranking* CreateRanking() = 0;
83 
84  virtual ~MethodCompositeBase( void );
85 
86  protected:
87 
88  void DeclareOptions() = 0;
89  void ProcessOptions() = 0;
90 
91  IMethod* GetMethod( const TString& title ) const; // accessor by name
92 
93  IMethod* GetMethod( const Int_t index ) const; // accessor by index in vector
94 
95  //the index of the classifier currently boosted
96  UInt_t fCurrentMethodIdx;
97  MethodBase* fCurrentMethod;
98  UInt_t GetCurrentMethodIndex() { return fCurrentMethodIdx; }
99 
100  IMethod* GetLastMethod() { return fMethods.back(); }
101 
102  IMethod* GetPreviousMethod() { return (fCurrentMethodIdx>0)?fMethods[fCurrentMethodIdx-1]:0; }
103 
104  MethodBase* GetCurrentMethod(){ return fCurrentMethod;}
105  MethodBase* GetCurrentMethod(UInt_t idx){return dynamic_cast<MethodBase*>(fMethods.at(idx)); }
106 
107 
108 
109  std::vector<IMethod*> fMethods; // vector of all classifiers
110 
111  //the weight of every classifier used in the GetMVA method
112  std::vector<Double_t> fMethodWeight;
113 
114  ClassDef(MethodCompositeBase,0);
115 
116  };
117 }
118 
119 #endif
120