Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
VariableInfo.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Joerg Stelzer, Helge Voss
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : Option *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Variable type info *
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  * *
18  * Copyright (c) 2006: *
19  * CERN, Switzerland *
20  * U. of Victoria, Canada *
21  * MPI-K Heidelberg, Germany *
22  * LAPP, Annecy, France *
23  * *
24  * Redistribution and use in source and binary forms, with or without *
25  * modification, are permitted according to the terms listed in LICENSE *
26  * (http://mva.sourceforge.net/license.txt) *
27  **********************************************************************************/
28 
29 #ifndef ROOT_TMVA_VariableInfo
30 #define ROOT_TMVA_VariableInfo
31 
32 //////////////////////////////////////////////////////////////////////////
33 // //
34 // VariableInfo //
35 // //
36 // Class for type info of MVA input variable //
37 // //
38 //////////////////////////////////////////////////////////////////////////
39 
40 #include "Rtypes.h"
41 #include "TString.h"
42 #include "TMVA/Types.h"
43 #include "TNamed.h"
44 
45 namespace TMVA {
46 
47  class VariableInfo:public TNamed {
48 
49  public:
50 
51  VariableInfo( const TString& expression, const TString& title, const TString& unit,
52  Int_t varCounter, char varType = 'F', void* external = 0,
53  Double_t min = 0, Double_t max = 0, Bool_t normalized=kTRUE );
54  VariableInfo();
55  VariableInfo( const VariableInfo& other );
56  ~VariableInfo() {}
57  const TString& GetExpression() const { return fExpression; }
58  const TString& GetInternalName() const { return fInternalName; }
59  const TString& GetLabel() const { return fLabel; }
60  const TString& GetUnit() const { return fUnit; }
61  char GetVarType() const { return fVarType; }
62 
63  Double_t GetMin () const { return fXminNorm; }
64  Double_t GetMax () const { return fXmaxNorm; }
65  Double_t GetMean() const { return fXmeanNorm; }
66  Double_t GetRMS () const { return fXrmsNorm; }
67  Double_t GetVariance() const { return fXvarianceNorm; }
68 
69  void SetInternalName(const char *name) { fInternalName = name; }
70 
71  void SetMin ( Double_t v ) { fXminNorm = v; }
72  void SetMax ( Double_t v ) { fXmaxNorm = v; }
73  void SetMean ( Double_t v ) { fXmeanNorm = v; }
74  void SetRMS ( Double_t v ) { fXrmsNorm = v; }
75  void SetExternalLink( void* p ) { fExternalData = (char*)p; }
76  void SetVariance ( Double_t v ) { fXvarianceNorm= v; }
77  void ResetMinMax() { fXminNorm = 1e30; fXmaxNorm = -1e30; }
78 
79  void WriteToStream ( std::ostream& o ) const;
80  void ReadFromStream( std::istream& istr );
81  void ReadFromXML ( void* varnode );
82  void AddToXML ( void* varnode );
83  void* GetExternalLink() const { return (void*)fExternalData; }
84 
85  // assignment operator (does not copy external link)
86  VariableInfo& operator=(const TMVA::VariableInfo& rhs);
87 
88  private:
89 
90  // should not be set from outside this class
91  void SetExpression ( const TString& s ) { fExpression = s; }
92  void SetLabel ( const TString& s ) { fLabel = s; }
93  void SetUnit ( const TString& s ) { fUnit = s; }
94  void SetInternalVarName( const TString& s ) { fInternalName = s; }
95  void SetVarType ( char c ) { fVarType = c; }
96 
97  TString fExpression; // original variable expression (can be a formula)
98  TString fInternalName; // internal variable name (needs to be regular expression)
99  TString fLabel; // variable label, set by "mylabel := var1 + var2", this is a shortcut
100  //TString fTitle; //! title for axis labels in plots; set by second string in AddVariable
101  TString fUnit; // unit for axis labels in plots; set by third string in AddVariable
102  Char_t fVarType; // the variable type to be used internally ('F'-default or 'I')
103  Double_t fXminNorm; // minimum value for correlated/decorrelated/PCA variable
104  Double_t fXmaxNorm; // maximum value for correlated/decorrelated/PCA variable
105  Double_t fXmeanNorm; // mean value for correlated/decorrelated/PCA variable
106  Double_t fXrmsNorm; // rms value for correlated/decorrelated/PCA variable
107  Double_t fXvarianceNorm; // variance value for correlated/decorrelated/PCA variable
108  Bool_t fNormalized; // variable gets normalized
109  void* fExternalData; //! if the variable content is linked to an external pointer
110  TString fExternalDataType;// type of external variable (int, long, double, float) - to be done JS
111  Int_t fVarCounter; // dummy variable
112  public:
113 
114  ClassDef(VariableInfo,1);
115  };
116 
117 }
118 
119 #endif