29 #ifndef ROOT_TMVA_VariableTransformBase
30 #define ROOT_TMVA_VariableTransformBase
53 class VariableTransformBase :
public TObject {
57 typedef std::vector<std::pair<Char_t,UInt_t> > VectorOfCharAndInt;
58 typedef VectorOfCharAndInt::iterator ItVarTypeIdx;
59 typedef VectorOfCharAndInt::const_iterator ItVarTypeIdxConst;
61 VariableTransformBase( DataSetInfo& dsi, Types::EVariableTransform tf,
const TString& trfName );
62 virtual ~VariableTransformBase(
void );
64 virtual void Initialize() = 0;
65 virtual Bool_t PrepareTransformation (
const std::vector<Event*>& ) = 0;
66 virtual const Event* Transform (
const Event*
const, Int_t cls )
const = 0;
67 virtual const Event* InverseTransform(
const Event*
const, Int_t cls )
const = 0;
70 void SetEnabled ( Bool_t e ) { fEnabled = e; }
71 void SetNormalise( Bool_t n ) { fNormalise = n; }
72 Bool_t IsEnabled()
const {
return fEnabled; }
73 Bool_t IsCreated()
const {
return fCreated; }
74 Bool_t IsNormalised()
const {
return fNormalise; }
77 virtual void SelectInput(
const TString& inputVariables, Bool_t putIntoVariables = kFALSE );
78 virtual Bool_t GetInput (
const Event* event, std::vector<Float_t>& input, std::vector<Char_t>& mask, Bool_t backTransform = kFALSE )
const;
79 virtual void SetOutput( Event* event, std::vector<Float_t>& output, std::vector<Char_t>& mask,
const Event* oldEvent = 0, Bool_t backTransform = kFALSE )
const;
80 virtual void CountVariableTypes( UInt_t& nvars, UInt_t& ntgts, UInt_t& nspcts )
const;
82 void ToggleInputSortOrder( Bool_t sortOrder ) { fSortGet = sortOrder; }
83 void SetOutputDataSetInfo( DataSetInfo* outputDsi ) { fDsiOutput = outputDsi; }
87 void SetUseSignalTransform( Bool_t e=kTRUE) { fUseSignalTransform = e; }
88 Bool_t UseSignalTransform()
const {
return fUseSignalTransform; }
90 virtual const char* GetName()
const {
return fTransformName.Data(); }
91 TString GetShortName()
const { TString a(fTransformName); a.ReplaceAll(
"Transform",
"");
return a; }
93 virtual void WriteTransformationToStream ( std::ostream& o )
const = 0;
94 virtual void ReadTransformationFromStream( std::istream& istr,
const TString& classname=
"" ) = 0;
96 virtual void AttachXMLTo(
void* parent) = 0;
97 virtual void ReadFromXML(
void* trfnode ) = 0;
99 Types::EVariableTransform GetVariableTransform()
const {
return fVariableTransform; }
102 virtual void MakeFunction( std::ostream& fout,
const TString& fncName, Int_t part,
103 UInt_t trCounter, Int_t cls ) = 0;
106 virtual std::vector<TString>* GetTransformationStrings( Int_t cls )
const;
107 virtual void PrintTransformation( std::ostream & ) {}
109 const std::vector<TMVA::VariableInfo>& Variables()
const {
return fVariables; }
110 const std::vector<TMVA::VariableInfo>& Targets()
const {
return fTargets; }
111 const std::vector<TMVA::VariableInfo>& Spectators()
const {
return fSpectators; }
113 MsgLogger& Log()
const {
return *fLogger; }
115 void SetTMVAVersion(TMVAVersion_t v) { fTMVAVersion = v; }
119 void CalcNorm(
const std::vector<const Event*>& );
121 void SetCreated( Bool_t c = kTRUE ) { fCreated = c; }
122 void SetNVariables( UInt_t i ) { fNVars = i; }
123 void SetName(
const TString& c ) { fTransformName = c; }
125 UInt_t GetNVariables()
const {
return fDsi.GetNVariables(); }
126 UInt_t GetNTargets()
const {
return fDsi.GetNTargets(); }
127 UInt_t GetNSpectators()
const {
return fDsi.GetNSpectators(); }
130 DataSetInfo* fDsiOutput;
132 std::vector<TMVA::VariableInfo>& Variables() {
return fVariables; }
133 std::vector<TMVA::VariableInfo>& Targets() {
return fTargets; }
134 std::vector<TMVA::VariableInfo>& Spectators() {
return fSpectators; }
135 Int_t GetNClasses()
const {
return fDsi.GetNClasses(); }
138 mutable Event* fTransformedEvent;
139 mutable Event* fBackTransformedEvent;
142 VectorOfCharAndInt fGet;
143 VectorOfCharAndInt fPut;
147 Types::EVariableTransform fVariableTransform;
149 void UpdateNorm( Int_t ivar, Double_t x );
151 Bool_t fUseSignalTransform;
156 TString fTransformName;
157 std::vector<TMVA::VariableInfo> fVariables;
158 std::vector<TMVA::VariableInfo> fTargets;
159 std::vector<TMVA::VariableInfo> fSpectators;
161 mutable Bool_t fVariableTypesAreCounted;
162 mutable UInt_t fNVariables;
163 mutable UInt_t fNTargets;
164 mutable UInt_t fNSpectators;
171 TMVAVersion_t fTMVAVersion;
173 mutable MsgLogger* fLogger;
175 ClassDef(VariableTransformBase,0);