Logo ROOT   6.10/09
Reference Guide
TransformationHandler.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Peter Speckmayer, Joerg Stelzer, Helge Voss, Jan Therhaag, Eckhard von Toerne
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : TransformationHandler *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Contains all the data information *
12  * *
13  * Authors (alphabetical): *
14  * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
15  * Peter Speckmayer <speckmay@mail.cern.ch> - CERN, Switzerland *
16  * Joerg Stelzer <Joerg.Stelzer@cern.ch> - CERN, Switzerland *
17  * Jan Therhaag <Jan.Therhaag@cern.ch> - U of Bonn, Germany *
18  * Eckhard v. Toerne <evt@uni-bonn.de> - U of Bonn, Germany *
19  * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
20  * *
21  * Copyright (c) 2005-2011: *
22  * CERN, Switzerland *
23  * MPI-K Heidelberg, Germany *
24  * U. of Bonn, Germany *
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_TransformationHandler
32 #define ROOT_TMVA_TransformationHandler
33 
34 //////////////////////////////////////////////////////////////////////////
35 // //
36 // TransformationHandler //
37 // //
38 // Class that contains all the data information //
39 // //
40 //////////////////////////////////////////////////////////////////////////
41 
42 #include "TList.h"
43 #include "TString.h"
44 
45 #include "TMVA/DataSetInfo.h"
46 
47 namespace TMVA {
48 
49  class Event;
50  class DataSet;
51  class Ranking;
52  class VariableTransformBase;
53  class MsgLogger;
54 
56  public:
57 
58  struct VariableStat {
63  };
64 
65  TransformationHandler( DataSetInfo&, const TString& callerName );
67 
68  TString GetName() const;
69  TString GetVariableAxisTitle( const VariableInfo& info ) const;
70 
71  const Event* Transform(const Event*) const;
72  const Event* InverseTransform(const Event*, Bool_t suppressIfNoTargets=true ) const;
73 
74  // overrides the reference classes of all added transformations. Handle with care!!!
76 
78  const TList& GetTransformationList() const { return fTransformations; }
80  const std::vector<Event*>* CalcTransformations( const std::vector<Event*>&, Bool_t createNewVector = kFALSE );
81 
82  void CalcStats( const std::vector<Event*>& events );
83  void AddStats ( Int_t k, UInt_t ivar, Double_t mean, Double_t rms, Double_t min, Double_t max );
84  Double_t GetMean ( Int_t ivar, Int_t cls = -1 ) const;
85  Double_t GetRMS ( Int_t ivar, Int_t cls = -1 ) const;
86  Double_t GetMin ( Int_t ivar, Int_t cls = -1 ) const;
87  Double_t GetMax ( Int_t ivar, Int_t cls = -1 ) const;
88 
89  void WriteToStream ( std::ostream& o ) const;
90  void AddXMLTo ( void* parent=0 ) const;
91  void ReadFromStream( std::istream& istr );
92  void ReadFromXML ( void* trfsnode );
93 
94  // writer of function code
95  void MakeFunction(std::ostream& fout, const TString& fncName, Int_t part) const;
96 
97  // variable ranking
98  void PrintVariableRanking() const;
99 
100  // provides string vector giving explicit transformation (only last transform at present -> later show full chain)
101  std::vector<TString>* GetTransformationStringsOfLastTransform() const;
102  const char* GetNameOfLastTransform() const;
103 
104  // modify caller name for output
105  void SetCallerName( const TString& name );
106  const TString& GetCallerName() const { return fCallerName; }
107 
108  // setting file dir for histograms
109  TDirectory* GetRootDir() const { return fRootBaseDir; }
110  void SetRootDir( TDirectory *d ) { fRootBaseDir = d; }
111 
112  void PlotVariables( const std::vector<Event*>& events, TDirectory* theDirectory = 0 );
113 
114  private:
115 
116  // std::vector<TMVA::Event*>* TransformCollection( VariableTransformBase* trf,
117  // Int_t cls,
118  // std::vector<TMVA::Event*>* events,
119  // Bool_t replace ) const;
120 
121  const TMVA::VariableInfo& Variable(UInt_t ivar) const { return fDataSetInfo.GetVariableInfos().at(ivar); }
122  const TMVA::VariableInfo& Target (UInt_t itgt) const { return fDataSetInfo.GetTargetInfos()[itgt]; }
123 
125 
126  DataSetInfo& fDataSetInfo; // pointer to the datasetinfo
127  TList fTransformations; //! list of transformations
128  std::vector< Int_t > fTransformationsReferenceClasses; //! reference classes for the transformations
129  std::vector<std::vector<TMVA::TransformationHandler::VariableStat> > fVariableStats; // first the variables, then the targets
130 
131  Int_t fNumC; // number of categories (#classes +1)
132 
133  std::vector<Ranking*> fRanking; //! ranking object
134  TDirectory* fRootBaseDir; //! if set put input var hists
135  TString fCallerName; //! name of the caller for output
136  mutable MsgLogger* fLogger; //! message logger
137  MsgLogger& Log() const { return *fLogger; }
138  };
139 }
140 
141 #endif
Double_t GetRMS(Int_t ivar, Int_t cls=-1) const
std::vector< std::vector< TMVA::TransformationHandler::VariableStat > > fVariableStats
reference classes for the transformations
std::vector< Ranking * > fRanking
const TString & GetCallerName() const
TDirectory * fRootBaseDir
ranking object
TransformationHandler(DataSetInfo &, const TString &callerName)
constructor
const TList & GetTransformationList() const
void PlotVariables(const std::vector< Event *> &events, TDirectory *theDirectory=0)
create histograms from the input variables
Basic string class.
Definition: TString.h:129
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
const Event * Transform(const Event *) const
the transformation
void ReadFromStream(std::istream &istr)
void SetTransformationReferenceClass(Int_t cls)
overrides the setting for all classes! (this is put in basically for the likelihood-method) be carefu...
void AddXMLTo(void *parent=0) const
XML node describing the transformation.
TString GetVariableAxisTitle(const VariableInfo &info) const
incorporates transformation type into title axis (usually for histograms)
void SetCallerName(const TString &name)
Double_t GetMean(Int_t ivar, Int_t cls=-1) const
std::vector< Int_t > fTransformationsReferenceClasses
list of transformations
Class that contains all the data information.
Definition: DataSetInfo.h:60
std::vector< VariableInfo > & GetTargetInfos()
Definition: DataSetInfo.h:99
const std::vector< Event * > * CalcTransformations(const std::vector< Event *> &, Bool_t createNewVector=kFALSE)
computation of transformation
A doubly linked list.
Definition: TList.h:43
Class that contains all the data information.
Definition: DataSet.h:69
Linear interpolation class.
void AddStats(Int_t k, UInt_t ivar, Double_t mean, Double_t rms, Double_t min, Double_t max)
unsigned int UInt_t
Definition: RtypesCore.h:42
const Event * InverseTransform(const Event *, Bool_t suppressIfNoTargets=true) const
Class that contains all the data information.
void MakeFunction(std::ostream &fout, const TString &fncName, Int_t part) const
create transformation function
const char * GetNameOfLastTransform() const
returns string for transformation
const Bool_t kFALSE
Definition: RtypesCore.h:92
TString fCallerName
if set put input var hists
void WriteToStream(std::ostream &o) const
write transformation to stream
double Double_t
Definition: RtypesCore.h:55
Double_t GetMax(Int_t ivar, Int_t cls=-1) const
Describe directory structure in memory.
Definition: TDirectory.h:34
TString GetName() const
return transformation name
void PrintVariableRanking() const
prints ranking of input variables
ostringstream derivative to redirect and format output
Definition: MsgLogger.h:59
MsgLogger & Log() const
message logger
Abstract ClassifierFactory template that handles arbitrary types.
const TMVA::VariableInfo & Variable(UInt_t ivar) const
MsgLogger * fLogger
name of the caller for output
Class for type info of MVA input variable.
Definition: VariableInfo.h:47
virtual Int_t GetSize() const
Definition: TCollection.h:89
std::vector< TString > * GetTransformationStringsOfLastTransform() const
returns string for transformation
void CalcStats(const std::vector< Event *> &events)
method to calculate minimum, maximum, mean, and RMS for all variables used in the MVA ...
const TMVA::VariableInfo & Target(UInt_t itgt) const
DataSet * GetDataSet() const
returns data set
std::vector< VariableInfo > & GetVariableInfos()
Definition: DataSetInfo.h:94
VariableTransformBase * AddTransformation(VariableTransformBase *, Int_t cls)
Double_t GetMin(Int_t ivar, Int_t cls=-1) const