Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 * *
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 * (see tmva/doc/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#include <vector>
45
46#include "TMVA/DataSetInfo.h"
47
48namespace TMVA {
49
50 class Event;
51 class DataSet;
52 class Ranking;
53 class VariableTransformBase;
54 class MsgLogger;
55
57 public:
58
59 struct VariableStat {
64 };
65
66 TransformationHandler( DataSetInfo&, const TString& callerName );
68
69 TString GetName() const;
70 TString GetVariableAxisTitle( const VariableInfo& info ) const;
71
72 const Event* Transform(const Event*) const;
73 const Event* InverseTransform(const Event*, Bool_t suppressIfNoTargets=true ) const;
74
75 // overrides the reference classes of all added transformations. Handle with care!!!
77
79 const TList& GetTransformationList() const { return fTransformations; }
81 const std::vector<Event*>* CalcTransformations( const std::vector<Event*>&, Bool_t createNewVector = kFALSE );
82
83 void CalcStats( const std::vector<Event*>& events );
84 void AddStats ( Int_t k, UInt_t ivar, Double_t mean, Double_t rms, Double_t min, Double_t max );
85 Double_t GetMean ( Int_t ivar, Int_t cls = -1 ) const;
86 Double_t GetRMS ( Int_t ivar, Int_t cls = -1 ) const;
87 Double_t GetMin ( Int_t ivar, Int_t cls = -1 ) const;
88 Double_t GetMax ( Int_t ivar, Int_t cls = -1 ) const;
89
90 void WriteToStream ( std::ostream& o ) const;
91 void AddXMLTo ( void* parent=nullptr ) const;
92 void ReadFromStream( std::istream& istr );
93 void ReadFromXML ( void* trfsnode );
94
95 // writer of function code
96 void MakeFunction(std::ostream& fout, const TString& fncName, Int_t part) const;
97
98 // variable ranking
99 void PrintVariableRanking() const;
100
101 // provides string vector giving explicit transformation (only last transform at present -> later show full chain)
102 std::vector<TString>* GetTransformationStringsOfLastTransform() const;
103 const char* GetNameOfLastTransform() const;
104
105 // modify caller name for output
106 void SetCallerName( const TString& name );
107 const TString& GetCallerName() const { return fCallerName; }
108
109 // setting file dir for histograms
110 TDirectory* GetRootDir() const { return fRootBaseDir; }
112
113 void PlotVariables( const std::vector<Event*>& events, TDirectory* theDirectory = nullptr );
114
115 private:
116
117 // std::vector<TMVA::Event*>* TransformCollection( VariableTransformBase* trf,
118 // Int_t cls,
119 // std::vector<TMVA::Event*>* events,
120 // Bool_t replace ) const;
121
122 const TMVA::VariableInfo& Variable(UInt_t ivar) const { return fDataSetInfo.GetVariableInfos().at(ivar); }
123 const TMVA::VariableInfo& Target (UInt_t itgt) const { return fDataSetInfo.GetTargetInfos()[itgt]; }
124
126
127 DataSetInfo& fDataSetInfo; // pointer to the datasetinfo
128 TList fTransformations; //! list of transformations
129 std::vector< Int_t > fTransformationsReferenceClasses; //! reference classes for the transformations
130 std::vector<std::vector<TMVA::TransformationHandler::VariableStat> > fVariableStats; // first the variables, then the targets
131
132 Int_t fNumC; ///< number of categories (#classes +1)
133
134 std::vector<Ranking*> fRanking; ///<! ranking object
135 TDirectory* fRootBaseDir; ///<! if set put input var hists
136 TString fCallerName; ///<! name of the caller for output
137 mutable MsgLogger* fLogger; ///<! message logger
138 MsgLogger& Log() const { return *fLogger; }
139 };
140}
141
142#endif
#define d(i)
Definition RSha256.hxx:102
bool Bool_t
Definition RtypesCore.h:63
unsigned int UInt_t
Definition RtypesCore.h:46
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
double Double_t
Definition RtypesCore.h:59
char name[80]
Definition TGX11.cxx:110
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Describe directory structure in memory.
Definition TDirectory.h:45
A doubly linked list.
Definition TList.h:38
Class that contains all the data information.
Definition DataSetInfo.h:62
std::vector< VariableInfo > & GetVariableInfos()
DataSet * GetDataSet() const
returns data set
std::vector< VariableInfo > & GetTargetInfos()
Class that contains all the data information.
Definition DataSet.h:58
ostringstream derivative to redirect and format output
Definition MsgLogger.h:57
Class that contains all the data information.
const TList & GetTransformationList() const
void AddXMLTo(void *parent=nullptr) const
XML node describing the transformation.
const char * GetNameOfLastTransform() const
returns string for transformation
MsgLogger * fLogger
! message logger
void ReadFromStream(std::istream &istr)
const std::vector< Event * > * CalcTransformations(const std::vector< Event * > &, Bool_t createNewVector=kFALSE)
computation of transformation
TDirectory * fRootBaseDir
! if set put input var hists
const Event * Transform(const Event *) const
the transformation
std::vector< Int_t > fTransformationsReferenceClasses
list of transformations
Int_t fNumC
number of categories (#classes +1)
void AddStats(Int_t k, UInt_t ivar, Double_t mean, Double_t rms, Double_t min, Double_t max)
Caches calculated summary statistics of transformed variables.
Double_t GetRMS(Int_t ivar, Int_t cls=-1) const
const TMVA::VariableInfo & Target(UInt_t itgt) const
Double_t GetMean(Int_t ivar, Int_t cls=-1) const
void SetCallerName(const TString &name)
std::vector< std::vector< TMVA::TransformationHandler::VariableStat > > fVariableStats
reference classes for the transformations
TString GetName() const
return transformation name
TString fCallerName
! name of the caller for output
Double_t GetMin(Int_t ivar, Int_t cls=-1) const
void PrintVariableRanking() const
prints ranking of input variables
void MakeFunction(std::ostream &fout, const TString &fncName, Int_t part) const
create transformation function
const TMVA::VariableInfo & Variable(UInt_t ivar) const
void SetTransformationReferenceClass(Int_t cls)
overrides the setting for all classes! (this is put in basically for the likelihood-method) be carefu...
void PlotVariables(const std::vector< Event * > &events, TDirectory *theDirectory=nullptr)
create histograms from the input variables
std::vector< Ranking * > fRanking
! ranking object
void CalcStats(const std::vector< Event * > &events)
method to calculate minimum, maximum, mean, and RMS for all variables used in the MVA
std::vector< TString > * GetTransformationStringsOfLastTransform() const
returns string for transformation
const TString & GetCallerName() const
TString GetVariableAxisTitle(const VariableInfo &info) const
incorporates transformation type into title axis (usually for histograms)
VariableTransformBase * AddTransformation(VariableTransformBase *, Int_t cls)
Double_t GetMax(Int_t ivar, Int_t cls=-1) const
const Event * InverseTransform(const Event *, Bool_t suppressIfNoTargets=true) const
void WriteToStream(std::ostream &o) const
write transformation to stream
Class for type info of MVA input variable.
Linear interpolation class.
Basic string class.
Definition TString.h:139
create variable transformations