43 Bool_t TMVA::Event::fgIsTraining = kFALSE;
44 Bool_t TMVA::Event::fgIgnoreNegWeightsInTraining = kFALSE;
54 fVariableArrangement(0),
66 TMVA::Event::Event(
const std::vector<Float_t>& ev,
67 const std::vector<Float_t>& tg,
70 Double_t boostweight )
75 fVariableArrangement(0),
78 fBoostWeight(boostweight),
87 TMVA::Event::Event(
const std::vector<Float_t>& ev,
88 const std::vector<Float_t>& tg,
89 const std::vector<Float_t>& vi,
92 Double_t boostweight )
97 fVariableArrangement(0),
100 fBoostWeight(boostweight),
109 TMVA::Event::Event(
const std::vector<Float_t>& ev,
112 Double_t boostweight )
117 fVariableArrangement(0),
120 fBoostWeight(boostweight),
129 TMVA::Event::Event(
const std::vector<Float_t*>*& evdyn, UInt_t nvar )
133 fSpectators(evdyn->size()-nvar),
134 fVariableArrangement(0),
141 fValuesDynamic = (std::vector<Float_t*>*) evdyn;
147 TMVA::Event::Event(
const Event& event )
149 fValues(event.fValues),
150 fValuesDynamic(event.fValuesDynamic),
151 fTargets(event.fTargets),
152 fSpectators(event.fSpectators),
153 fVariableArrangement(event.fVariableArrangement),
154 fClass(event.fClass),
155 fWeight(event.fWeight),
156 fBoostWeight(event.fBoostWeight),
157 fDynamic(event.fDynamic),
162 UInt_t nvar =
event.GetNVariables();
164 std::vector<Float_t*>::iterator itDyn=
event.fValuesDynamic->begin(), itDynEnd=
event.fValuesDynamic->end();
165 for (; itDyn!=itDynEnd && idx<nvar; ++itDyn){
166 Float_t value=*(*itDyn);
167 fValues.push_back( value );
171 for (; itDyn!=itDynEnd; ++itDyn){
172 Float_t value=*(*itDyn);
173 fSpectators.push_back( value );
185 TMVA::Event::~Event()
192 void TMVA::Event::SetVariableArrangement( std::vector<UInt_t>*
const m )
const {
196 if(!m)fVariableArrangement.clear();
197 else fVariableArrangement = *m;
204 void TMVA::Event::CopyVarValues(
const Event& other )
206 fValues = other.fValues;
207 fTargets = other.fTargets;
208 fSpectators = other.fSpectators;
210 UInt_t nvar = other.GetNVariables();
213 std::vector<Float_t*>::iterator itDyn=other.fValuesDynamic->begin(), itDynEnd=other.fValuesDynamic->end();
214 for (; itDyn!=itDynEnd && idx<nvar; ++itDyn){
215 Float_t value=*(*itDyn);
216 fValues.push_back( value );
220 for (; itDyn!=itDynEnd; ++itDyn){
221 Float_t value=*(*itDyn);
222 fSpectators.push_back( value );
227 fValuesDynamic = NULL;
229 fClass = other.fClass;
230 fWeight = other.fWeight;
231 fBoostWeight = other.fBoostWeight;
237 Float_t TMVA::Event::GetValue( UInt_t ivar )
const
240 if (fVariableArrangement.size()==0) {
241 retval = fDynamic ? ( *((fValuesDynamic)->at(ivar)) ) : fValues.at(ivar);
244 UInt_t mapIdx = fVariableArrangement[ivar];
248 retval = *((fValuesDynamic)->at(mapIdx));
252 retval = ( mapIdx<fValues.size() ) ? fValues[mapIdx] : fSpectators[mapIdx-fValues.size()];
262 Float_t TMVA::Event::GetSpectator( UInt_t ivar)
const
264 if (fDynamic)
return *(fValuesDynamic->at(GetNVariables()+ivar));
265 else return fSpectators.at(ivar);
271 const std::vector<Float_t>& TMVA::Event::GetValues()
const
273 if (fVariableArrangement.size()==0) {
277 for (std::vector<Float_t*>::const_iterator it = fValuesDynamic->begin(), itEnd=fValuesDynamic->end()-GetNSpectators();
279 Float_t val = *(*it);
280 fValues.push_back( val );
287 for (UInt_t i=0; i< fVariableArrangement.size(); i++){
288 mapIdx = fVariableArrangement[i];
289 fValues.push_back(*((fValuesDynamic)->at(mapIdx)));
295 fValuesRearranged.clear();
296 for (UInt_t i=0; i< fVariableArrangement.size(); i++){
297 mapIdx = fVariableArrangement[i];
298 fValuesRearranged.push_back(fValues.at(mapIdx));
300 return fValuesRearranged;
309 UInt_t TMVA::Event::GetNVariables()
const
313 if (fVariableArrangement.size()==0)
return fValues.size();
314 else return fVariableArrangement.size();
320 UInt_t TMVA::Event::GetNTargets()
const
322 return fTargets.size();
328 UInt_t TMVA::Event::GetNSpectators()
const
333 if (fVariableArrangement.size()==0)
return fSpectators.size();
334 else return fValues.size()-fVariableArrangement.size();
341 void TMVA::Event::SetVal( UInt_t ivar, Float_t val )
343 if ((fDynamic ?( (*fValuesDynamic).size() ) : fValues.size())<=ivar)
344 (fDynamic ?( (*fValuesDynamic).resize(ivar+1) ) : fValues.resize(ivar+1));
346 (fDynamic ?( *(*fValuesDynamic)[ivar] ) : fValues[ivar])=val;
352 void TMVA::Event::Print( std::ostream& o )
const
354 o << *
this << std::endl;
360 void TMVA::Event::SetTarget( UInt_t itgt, Float_t value )
362 if (fTargets.size() <= itgt) fTargets.resize( itgt+1 );
363 fTargets.at(itgt) = value;
369 void TMVA::Event::SetSpectator( UInt_t ivar, Float_t value )
371 if (fSpectators.size() <= ivar) fSpectators.resize( ivar+1 );
372 fSpectators.at(ivar) = value;
382 Double_t TMVA::Event::GetWeight()
const
384 return (fgIgnoreNegWeightsInTraining && fgIsTraining && fWeight < 0) ? 0. : fWeight*fBoostWeight;
392 void TMVA::Event::SetIsTraining(Bool_t b)
401 void TMVA::Event::SetIgnoreNegWeightsInTraining(Bool_t b)
403 fgIgnoreNegWeightsInTraining=b;
409 std::ostream& TMVA::operator << ( std::ostream& os,
const TMVA::Event& event )
411 os <<
"Variables [" <<
event.fValues.size() <<
"]:";
412 for (UInt_t ivar=0; ivar<
event.fValues.size(); ++ivar)
413 os <<
" " << std::setw(10) <<
event.GetValue(ivar);
414 os <<
", targets [" <<
event.fTargets.size() <<
"]:";
415 for (UInt_t ivar=0; ivar<
event.fTargets.size(); ++ivar)
416 os <<
" " << std::setw(10) <<
event.GetTarget(ivar);
417 os <<
", spectators ["<<
event.fSpectators.size() <<
"]:";
418 for (UInt_t ivar=0; ivar<
event.fSpectators.size(); ++ivar)
419 os <<
" " << std::setw(10) <<
event.GetSpectator(ivar);
420 os <<
", weight: " <<
event.GetWeight();
421 os <<
", class: " <<
event.GetClass();