Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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 * *
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#include "Rtypes.h"
38#include "TMVA/Types.h"
39
40#include "TObject.h"
41
42
43class TCut;
44
45namespace TMVA {
46
47 class Event;
48
49 std::ostream& operator<<( std::ostream& os, const Event& event );
50
51 class Event:public TObject {
52
53 friend std::ostream& operator<<( std::ostream& os, const Event& event );
54
55 public:
56
57 // constructors
58 Event();
59 Event( const Event& );
60 explicit Event( const std::vector<Float_t>& values,
61 const std::vector<Float_t>& targetValues,
62 const std::vector<Float_t>& spectatorValues,
63 UInt_t theClass = 0, Double_t weight = 1.0, Double_t boostweight = 1.0 );
64 explicit Event( const std::vector<Float_t>& values,
65 const std::vector<Float_t>& targetValues,
66 UInt_t theClass = 0, Double_t weight = 1.0, Double_t boostweight = 1.0 );
67 explicit Event( const std::vector<Float_t>&,
68 UInt_t theClass, Double_t weight = 1.0, Double_t boostweight = 1.0 );
69 explicit Event( const std::vector<Float_t*>*&, UInt_t nvar );
70
71 ~Event();
72
73 // operators
74 // NOTE: Because we do not want to change the behaviour of the Event class
75 // as a public interface, we use the explicit default assignment operator,
76 // which is similar to the implicit one but silences gcc9 warnings.
77 Event& operator=( const Event& ) = default;
78
79 // accessors
80 Bool_t IsDynamic() const {return fDynamic; }
81
82 // Double_t GetWeight() const { return fWeight*fBoostWeight; }
83 Double_t GetWeight() const;
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 Float_t GetValueFast(UInt_t ivar) const { return fDynamic ? *(*fValuesDynamic)[ivar] : fValues[ivar]; }
94 std::vector<Float_t>& GetValues()
95 {
96 //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.
97 // http://stackoverflow.com/questions/123758/how-do-i-remove-code-duplication-between-similar-const-and-non-const-member-func
98 return const_cast<std::vector<Float_t>&>( static_cast<const Event&>(*this).GetValues() );
99 }
100 const std::vector<Float_t>& GetValues() const;
101
102 Float_t GetTarget( UInt_t itgt ) const { return fTargets.at(itgt); }
103 std::vector<Float_t>& GetTargets() { return fTargets; }
104 const std::vector<Float_t>& GetTargets() const { return fTargets; }
105
106 Float_t GetSpectator( UInt_t ivar) const;
107 std::vector<Float_t>& GetSpectators() { return fSpectators; }
108 const std::vector<Float_t>& GetSpectators() const { return fSpectators; }
109
113 void SetClass ( UInt_t t ) { fClass=t; }
114 void SetVal ( UInt_t ivar, Float_t val );
115 void SetTarget ( UInt_t itgt, Float_t value );
116 void SetSpectator ( UInt_t ivar, Float_t value );
117 void SetVariableArrangement( std::vector<UInt_t>* const m ) const;
118
119 void SetSpectatorTypes(const std::vector<char> &types) { fSpectatorTypes = types; }
120
121 void SetDoNotBoost () const { fDoNotBoost = kTRUE; }
122 static void ClearDynamicVariables() {}
123
124 void CopyVarValues( const Event& other );
125 using TObject::Print;
126 void Print ( std::ostream & o ) const;
127
128 static void SetIsTraining(Bool_t);
130
131 private:
132
133 static Bool_t fgIsTraining; // mark if we are in an actual training or "evaluation/testing" phase --> ignoreNegWeights only in actual training !
135
136
137 mutable std::vector<Float_t> fValues; ///< the event values ; mutable, to be able to copy the dynamic values in there
138
139 mutable std::vector<Float_t> fValuesRearranged; ///< the event values ; mutable, to be able to copy the dynamic values in there
140 mutable std::vector<Float_t*> *fValuesDynamic; ///<! the event values
141 std::vector<Float_t> fTargets; ///< target values for regression
142 mutable std::vector<Float_t> fSpectators; ///< "visiting" variables not used in MVAs ; mutable, to be able to copy the dynamic values in there
143 mutable std::vector<UInt_t> fVariableArrangement; ///< needed for MethodCategories, where we can train on other than the main variables
144 std::vector<char> fSpectatorTypes; ///< type of the spectator variable (typically F or I). Used ony for dynamic events
145
146 UInt_t fClass; ///< class number
147 Double_t fWeight; ///< event weight (product of global and individual weights)
148 mutable Double_t fBoostWeight; ///< internal weight to be set by boosting algorithm
149 Bool_t fDynamic; ///< is set when the dynamic values are taken
150 mutable Bool_t fDoNotBoost; ///< mark event as not to be boosted (used to compensate for events with negative event weights
151 public:
152
154
155 };
156}
157
158#endif
bool Bool_t
Definition RtypesCore.h:63
unsigned int UInt_t
Definition RtypesCore.h:46
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:94
double Double_t
Definition RtypesCore.h:59
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
#define ClassDef(name, id)
Definition Rtypes.h:342
TBuffer & operator<<(TBuffer &buf, const Tmpl *obj)
Definition TBuffer.h:397
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
A specialized string object used for TTree selections.
Definition TCut.h:25
std::vector< Float_t > fValues
the event values ; mutable, to be able to copy the dynamic values in there
Definition Event.h:137
void ScaleBoostWeight(Double_t s) const
Definition Event.h:112
static Bool_t fgIsTraining
Definition Event.h:133
Double_t fWeight
event weight (product of global and individual weights)
Definition Event.h:147
void SetBoostWeight(Double_t w) const
Definition Event.h:111
Float_t GetValue(UInt_t ivar) const
return value of i'th variable
Definition Event.cxx:236
void SetTarget(UInt_t itgt, Float_t value)
set the target value (dimension itgt) to value
Definition Event.cxx:367
std::vector< Float_t > fTargets
target values for regression
Definition Event.h:141
Double_t fBoostWeight
internal weight to be set by boosting algorithm
Definition Event.h:148
std::vector< Float_t > & GetTargets()
Definition Event.h:103
std::vector< char > fSpectatorTypes
type of the spectator variable (typically F or I). Used ony for dynamic events
Definition Event.h:144
static void ClearDynamicVariables()
Definition Event.h:122
Bool_t fDynamic
is set when the dynamic values are taken
Definition Event.h:149
std::vector< Float_t > fSpectators
"visiting" variables not used in MVAs ; mutable, to be able to copy the dynamic values in there
Definition Event.h:142
UInt_t GetNSpectators() const
accessor to the number of spectators
Definition Event.cxx:335
std::vector< UInt_t > fVariableArrangement
needed for MethodCategories, where we can train on other than the main variables
Definition Event.h:143
void SetWeight(Double_t w)
Definition Event.h:110
Double_t GetOriginalWeight() const
Definition Event.h:84
~Event()
Event destructor.
Definition Event.cxx:184
std::vector< Float_t > & GetSpectators()
Definition Event.h:107
std::vector< Float_t * > * fValuesDynamic
! the event values
Definition Event.h:140
void SetDoNotBoost() const
Definition Event.h:121
Event()
copy constructor
Definition Event.cxx:48
UInt_t GetNVariables() const
accessor to the number of variables
Definition Event.cxx:316
Event & operator=(const Event &)=default
void CopyVarValues(const Event &other)
copies only the variable values
Definition Event.cxx:203
const std::vector< Float_t > & GetSpectators() const
Definition Event.h:108
UInt_t GetNTargets() const
accessor to the number of targets
Definition Event.cxx:327
static Bool_t fgIgnoreNegWeightsInTraining
Definition Event.h:134
const std::vector< Float_t > & GetTargets() const
Definition Event.h:104
Double_t GetWeight() const
return the event weight - depending on whether the flag IgnoreNegWeightsInTraining is or not.
Definition Event.cxx:389
void SetVal(UInt_t ivar, Float_t val)
set variable ivar to val
Definition Event.cxx:348
friend std::ostream & operator<<(std::ostream &os, const Event &event)
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:399
void SetVariableArrangement(std::vector< UInt_t > *const m) const
set the variable arrangement
Definition Event.cxx:191
Float_t GetSpectator(UInt_t ivar) const
return spectator content
Definition Event.cxx:261
Bool_t IsDynamic() const
Definition Event.h:80
UInt_t GetClass() const
Definition Event.h:86
void SetClass(UInt_t t)
Definition Event.h:113
Double_t GetBoostWeight() const
Definition Event.h:85
void SetSpectatorTypes(const std::vector< char > &types)
Definition Event.h:119
void SetSpectator(UInt_t ivar, Float_t value)
set spectator value (dimension ivar) to value
Definition Event.cxx:376
Float_t GetValueFast(UInt_t ivar) const
Definition Event.h:93
Bool_t fDoNotBoost
mark event as not to be boosted (used to compensate for events with negative event weights
Definition Event.h:150
std::vector< Float_t > fValuesRearranged
the event values ; mutable, to be able to copy the dynamic values in there
Definition Event.h:139
std::vector< Float_t > & GetValues()
Definition Event.h:94
Float_t GetTarget(UInt_t itgt) const
Definition Event.h:102
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:408
void Print(std::ostream &o) const
print method
Definition Event.cxx:359
UInt_t fClass
class number
Definition Event.h:146
Mother of all ROOT objects.
Definition TObject.h:41
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
Definition TObject.cxx:642
create variable transformations
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Definition TMathBase.h:250
TMarker m
Definition textangle.C:8