61 fEventV ( std::vector<
Float_t>() ),
62 fTargets ( std::vector<
Float_t>() ),
63 fWeight (
e==0?0:
e->GetWeight() ),
68 for (
UInt_t ivar=0; ivar<
e->GetNVariables(); ivar++)
fEventV.push_back(
e->GetValue(ivar));
69 for (std::vector<Float_t>::const_iterator it =
e->GetTargets().begin(); it < e->
GetTargets().end(); ++it ) {
80 fEventV ( std::vector<
Float_t>() ),
81 fTargets ( std::vector<
Float_t>() ),
95 fEventV (
n.fEventV ),
96 fTargets (
n.fTargets ),
97 fWeight (
n.fWeight ),
99 fSelector(
n.fSelector )
102 if (
n.GetLeft() == 0 ) this->
SetLeft(NULL);
105 if (
n.GetRight() == 0 ) this->
SetRight(NULL);
122 if (
e.GetValue(fSelector) > GetEventV()[fSelector])
return true;
131 if (
e.GetValue(fSelector) <= GetEventV()[fSelector])
return true;
142 for (
UInt_t i=0; i<GetEventV().size(); i++) {
143 result&= (
e.GetValue(i) == GetEventV()[i]);
153 os <<
"< *** " << std::endl <<
" node.Data: ";
154 std::vector<Float_t>::const_iterator it=fEventV.begin();
155 os << fEventV.size() <<
" vars: ";
156 for (;it!=fEventV.end(); ++it) os <<
" " << std::setw(10) << *it;
157 os <<
" EvtWeight " << std::setw(10) << fWeight;
158 os << std::setw(10) <<
"Class: " <<
GetClass() << std::endl;
160 os <<
"Selector: " << this->GetSelector() <<std::endl;
161 os <<
"My address is " << long(
this) <<
", ";
162 if (this->GetParent() != NULL) os <<
" parent at addr: " << long(this->GetParent()) ;
163 if (this->GetLeft() != NULL) os <<
" left daughter at addr: " << long(this->GetLeft());
164 if (this->GetRight() != NULL) os <<
" right daughter at addr: " << long(this->GetRight()) ;
166 os <<
" **** > "<< std::endl;
174 os << this->GetDepth() <<
" " << this->GetPos() <<
" " << this->GetSelector()
175 <<
" data: " << std::endl;
176 std::vector<Float_t>::const_iterator it=fEventV.begin();
177 os << fEventV.size() <<
" vars: ";
178 for (;it!=fEventV.end(); ++it) os <<
" " << std::setw(10) << *it;
179 os <<
" EvtWeight " << std::setw(10) << fWeight;
180 os << std::setw(10) <<
"Class: " <<
GetClass() << std::endl;
182 if (this->GetLeft() != NULL)this->GetLeft()->PrintRec(os) ;
183 if (this->GetRight() != NULL)this->GetRight()->PrintRec(os);
193 UInt_t depth, selIdx, nvar;
200 if ( itmp==-1 ) {
return kFALSE; }
204 this->SetDepth(depth);
206 this->SetSelector(selIdx);
212 for (
UInt_t ivar=0; ivar<nvar; ivar++) {
213 is >> evtValFloat; fEventV.push_back(evtValFloat);
215 is >> tmp >> fWeight;
217 fClass = (sigbkgd==
"S" || sigbkgd==
"Signal")?0:1;
231 if (sb==
"Signal" || sb==
"0")
238 fEventV.resize(nvars);
259 std::ios_base::fmtflags ff =
s.flags();
261 for (
UInt_t i=0; i<fEventV.size(); i++)
s << std::scientific <<
" " << fEventV[i];
262 for (
UInt_t i=0; i<fTargets.size(); i++)
s << std::scientific <<
" " << fTargets[i];
271 for (
UInt_t i=0; i<fEventV.size(); i++){
275 while (
s >> temp) fTargets.push_back(temp);
Node for the BinarySearch or Decision Trees.
std::vector< Float_t > fTargets
virtual void PrintRec(std::ostream &os) const
recursively print the node and its daughters (--> print the 'tree')
std::vector< Float_t > fEventV
virtual void ReadContent(std::stringstream &s)
read events from node
virtual Bool_t GoesLeft(const Event &) const
check if the event fed into the node goes/descends to the left daughter
virtual ~BinarySearchTreeNode()
node destructor
virtual Bool_t EqualsMe(const Event &) const
check if the event fed into the node actually equals the event that forms the node (in case of a sear...
virtual void Print(std::ostream &os) const
print the node
virtual void AddAttributesToNode(void *node) const
adding attributes to tree node
virtual void ReadAttributes(void *node, UInt_t tmva_Version_Code=TMVA_VERSION_CODE)
read attributes from XML
const std::vector< Float_t > & GetTargets() const
BinarySearchTreeNode(const Event *e=NULL, UInt_t signalClass=0)
constructor of a node for the search tree
virtual Bool_t GoesRight(const Event &) const
check if the event fed into the node goes/descends to the right daughter
virtual void AddContentToNode(std::stringstream &s) const
adding attributes to tree node
virtual Bool_t ReadDataRecord(std::istream &is, UInt_t tmva_Version_Code=TMVA_VERSION_CODE)
Read the data block.
Node for the BinarySearch or Decision Trees.
virtual void SetRight(Node *r)
virtual void SetLeft(Node *l)
virtual void SetParent(Node *p)
static constexpr double s
create variable transformations