ROOT  6.06/09
Reference Guide
Event.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Andreas Hoecker, Peter Speckmayer, Joerg Stelzer, Helge Voss, Jan Therhaag
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : Event *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Event container *
12  * *
13  * Authors (alphabetical): *
14  * Andreas Hoecker <Andreas.Hocker@cern.ch> - CERN, Switzerland *
15  * Joerg Stelzer <Joerg.Stelzer@cern.ch> - CERN, Switzerland *
16  * Peter Speckmayer <Peter.Speckmayer@cern.ch> - CERN, Switzerland *
17  * Jan Therhaag <Jan.Therhaag@cern.ch> - U of Bonn, Germany *
18  * Helge Voss <Helge.Voss@cern.ch> - MPI-K Heidelberg, Germany *
19  * *
20  * Copyright (c) 2005-2011: *
21  * CERN, Switzerland *
22  * U. of Victoria, Canada *
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://mva.sourceforge.net/license.txt) *
29  **********************************************************************************/
30 
31 #ifndef ROOT_TMVA_Event
32 #define ROOT_TMVA_Event
33 
34 #include <iosfwd>
35 #include <vector>
36 
37 #ifndef ROOT_Rtypes
38 #include "Rtypes.h"
39 #endif
40 #ifndef ROOT_ThreadLocalStorage
41 #include "ThreadLocalStorage.h"
42 #endif
43 #ifndef ROOT_TMVA_Types
44 #include "TMVA/Types.h"
45 #endif
46 
47 
48 
49 class TCut;
50 
51 namespace TMVA {
52 
53  class Event;
54 
55  std::ostream& operator<<( std::ostream& os, const Event& event );
56 
57  class Event {
58 
59  friend std::ostream& operator<<( std::ostream& os, const Event& event );
60 
61  public:
62 
63  // constructors
64  Event();
65  Event( const Event& );
66  explicit Event( const std::vector<Float_t>& values,
67  const std::vector<Float_t>& targetValues,
68  const std::vector<Float_t>& spectatorValues,
69  UInt_t theClass = 0, Double_t weight = 1.0, Double_t boostweight = 1.0 );
70  explicit Event( const std::vector<Float_t>& values,
71  const std::vector<Float_t>& targetValues,
72  UInt_t theClass = 0, Double_t weight = 1.0, Double_t boostweight = 1.0 );
73  explicit Event( const std::vector<Float_t>&,
74  UInt_t theClass, Double_t weight = 1.0, Double_t boostweight = 1.0 );
75  explicit Event( const std::vector<Float_t*>*&, UInt_t nvar );
76 
77  ~Event();
78 
79  // accessors
80  Bool_t IsDynamic() const {return fDynamic; }
81 
82  // Double_t GetWeight() const { return fWeight*fBoostWeight; }
83  Double_t GetWeight() const;
84  Double_t GetOriginalWeight() const { return fWeight; }
86  UInt_t GetClass() const { return fClass; }
87 
88  UInt_t GetNVariables() const;
89  UInt_t GetNTargets() const;
90  UInt_t GetNSpectators() const;
91 
92  Float_t GetValue( UInt_t ivar) const;
93  std::vector<Float_t>& GetValues()
94  {
95  //For a detailed explanation, please see the heading "Avoid Duplication in const and Non-const Member Function," on p. 23, in Item 3 "Use const whenever possible," in Effective C++, 3d ed by Scott Meyers, ISBN-13: 9780321334879.
96  // http://stackoverflow.com/questions/123758/how-do-i-remove-code-duplication-between-similar-const-and-non-const-member-func
97  return const_cast<std::vector<Float_t>&>( static_cast<const Event&>(*this).GetValues() );
98  }
99  const std::vector<Float_t>& GetValues() const;
100 
101  Float_t GetTarget( UInt_t itgt ) const { return fTargets.at(itgt); }
102  std::vector<Float_t>& GetTargets() { return fTargets; }
103  const std::vector<Float_t>& GetTargets() const { return fTargets; }
104 
105  Float_t GetSpectator( UInt_t ivar) const;
106  std::vector<Float_t>& GetSpectators() { return fSpectators; }
107  const std::vector<Float_t>& GetSpectators() const { return fSpectators; }
108 
109  void SetWeight ( Double_t w ) { fWeight=w; }
112  void SetClass ( UInt_t t ) { fClass=t; }
113  void SetVal ( UInt_t ivar, Float_t val );
114  void SetTarget ( UInt_t itgt, Float_t value );
115  void SetSpectator ( UInt_t ivar, Float_t value );
116  void SetVariableArrangement( std::vector<UInt_t>* const m ) const;
117 
118  void SetDoNotBoost () const { fDoNotBoost = kTRUE; }
119  static void ClearDynamicVariables() {}
120 
121  void CopyVarValues( const Event& other );
122  void Print ( std::ostream & o ) const;
123 
124  static void SetIsTraining(Bool_t);
126  private:
127 
128  static Bool_t fgIsTraining; // mark if we are in an actual training or "evaluation/testing" phase --> ignoreNegWeights only in actual training !
130 
131 
132  mutable std::vector<Float_t> fValues; // the event values ; mutable, to be able to copy the dynamic values in there
133 
134  mutable std::vector<Float_t> fValuesRearranged; // the event values ; mutable, to be able to copy the dynamic values in there
135  mutable std::vector<Float_t*>* fValuesDynamic; // the event values
136  std::vector<Float_t> fTargets; // target values for regression
137  mutable std::vector<Float_t> fSpectators; // "visisting" variables not used in MVAs ; mutable, to be able to copy the dynamic values in there
138  mutable std::vector<UInt_t>* fVariableArrangement; // needed for MethodCategories, where we can train on other than the main variables
139 
140  UInt_t fClass; // class number
141  Double_t fWeight; // event weight (product of global and individual weights)
142  mutable Double_t fBoostWeight; // internal weight to be set by boosting algorithm
143  Bool_t fDynamic; // is set when the dynamic values are taken
144  mutable Bool_t fDoNotBoost; // mark event as not to be boosted (used to compensate for events with negative event weights
145  };
146 }
147 
148 #endif
Bool_t fDoNotBoost
Definition: Event.h:144
void SetClass(UInt_t t)
Definition: Event.h:112
UInt_t fClass
Definition: Event.h:140
float Float_t
Definition: RtypesCore.h:53
void SetVariableArrangement(std::vector< UInt_t > *const m) const
set the variable arrangement
Definition: Event.cxx:187
UInt_t GetNTargets() const
accessor to the number of targets
Definition: Event.cxx:314
Float_t GetSpectator(UInt_t ivar) const
return spectator content
Definition: Event.cxx:256
std::vector< Float_t > fValues
Definition: Event.h:132
Double_t GetBoostWeight() const
Definition: Event.h:85
std::vector< Float_t * > * fValuesDynamic
Definition: Event.h:135
static void ClearDynamicVariables()
Definition: Event.h:119
std::vector< Float_t > fSpectators
Definition: Event.h:137
void SetBoostWeight(Double_t w) const
Definition: Event.h:110
UInt_t GetNSpectators() const
accessor to the number of spectators
Definition: Event.cxx:322
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
static Bool_t fgIgnoreNegWeightsInTraining
Definition: Event.h:129
Double_t fBoostWeight
Definition: Event.h:142
Event()
copy constructor
Definition: Event.cxx:45
Double_t GetWeight() const
return the event weight - depending on whether the flag IgnoreNegWeightsInTraining is or not...
Definition: Event.cxx:376
Float_t GetValue(UInt_t ivar) const
return value of i'th variable
Definition: Event.cxx:231
static void SetIsTraining(Bool_t)
when this static function is called, it sets the flag whether events with negative event weight shoul...
Definition: Event.cxx:386
std::vector< UInt_t > * fVariableArrangement
Definition: Event.h:138
Bool_t IsDynamic() const
Definition: Event.h:80
void ScaleBoostWeight(Double_t s) const
Definition: Event.h:111
Double_t fWeight
Definition: Event.h:141
void SetVal(UInt_t ivar, Float_t val)
set variable ivar to val
Definition: Event.cxx:335
const std::vector< Float_t > & GetSpectators() const
Definition: Event.h:107
Double_t GetOriginalWeight() const
Definition: Event.h:84
std::vector< Float_t > & GetTargets()
Definition: Event.h:102
UInt_t GetNVariables() const
accessor to the number of variables
Definition: Event.cxx:303
A specialized string object used for TTree selections.
Definition: TCut.h:27
Bool_t fDynamic
Definition: Event.h:143
std::vector< Float_t > fTargets
Definition: Event.h:136
void SetSpectator(UInt_t ivar, Float_t value)
set spectator value (dimension ivar) to value
Definition: Event.cxx:363
static Bool_t fgIsTraining
Definition: Event.h:128
std::vector< Float_t > & GetSpectators()
Definition: Event.h:106
unsigned int UInt_t
Definition: RtypesCore.h:42
TMarker * m
Definition: textangle.C:8
void SetTarget(UInt_t itgt, Float_t value)
set the target value (dimension itgt) to value
Definition: Event.cxx:354
void SetDoNotBoost() const
Definition: Event.h:118
std::ostream & operator<<(std::ostream &os, const BinaryTree &tree)
print the tree recursinvely using the << operator
Definition: BinaryTree.cxx:155
void Print(std::ostream &o) const
print method
Definition: Event.cxx:346
static void SetIgnoreNegWeightsInTraining(Bool_t)
when this static function is called, it sets the flag whether events with negative event weight shoul...
Definition: Event.cxx:395
double Double_t
Definition: RtypesCore.h:55
void CopyVarValues(const Event &other)
copies only the variable values
Definition: Event.cxx:198
std::vector< Float_t > fValuesRearranged
Definition: Event.h:134
void SetWeight(Double_t w)
Definition: Event.h:109
UInt_t GetClass() const
Definition: Event.h:86
friend std::ostream & operator<<(std::ostream &os, const Event &event)
Float_t GetTarget(UInt_t itgt) const
Definition: Event.h:101
~Event()
Event destructor.
Definition: Event.cxx:180
Abstract ClassifierFactory template that handles arbitrary types.
std::vector< Float_t > & GetValues()
Definition: Event.h:93
const std::vector< Float_t > & GetTargets() const
Definition: Event.h:103
Short_t Max(Short_t a, Short_t b)
Definition: TMathBase.h:202
const Bool_t kTRUE
Definition: Rtypes.h:91
float value
Definition: math.cpp:443