113                                                       std::vector<TH1D*> &hbkg, std::vector<TH1D*> &hsig_unw,
   114                                                       std::vector<TH1D*> &hbkg_unw)
   117    if (hsig.size() != volume.
fLower->size()
   118        || hbkg.size() != volume.
fLower->size()
   119        || hsig_unw.size() != volume.
fLower->size()
   120        || hbkg_unw.size() != volume.
fLower->size())
   121       Log() << 
kFATAL << 
"<PDEFoamDistr::FillHistograms> Edge histograms have wrong size!" << 
Endl;
   124    for (
UInt_t idim = 0; idim < hsig.size(); ++idim) {
   125       if (!hsig.at(idim) || !hbkg.at(idim) ||
   126           !hsig_unw.at(idim) || !hbkg_unw.at(idim))
   127          Log() << 
kFATAL << 
"<PDEFoamDistr::FillHist> Histograms not initialized!" << 
Endl;
   131    std::vector<const TMVA::BinarySearchTreeNode*> nodes;
   137    std::vector<Float_t> 
xmin(volume.
fLower->size(), std::numeric_limits<float>::max());
   138    std::vector<Float_t> 
xmax(volume.
fLower->size(), -std::numeric_limits<float>::max());
   139    for (std::vector<const TMVA::BinarySearchTreeNode*>::const_iterator it = nodes.begin();
   140         it != nodes.end(); ++it) {
   141       std::vector<Float_t> ev = (*it)->GetEventV();
   142       for (
UInt_t idim = 0; idim < 
xmin.size(); ++idim) {
   143          if (ev.at(idim) < 
xmin.at(idim))  
xmin.at(idim) = ev.at(idim);
   144          if (ev.at(idim) > 
xmax.at(idim))  
xmax.at(idim) = ev.at(idim);
   149    for (
UInt_t idim = 0; idim < hsig.size(); ++idim) {
   150       hsig.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim), 
xmax.at(idim));
   151       hbkg.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim), 
xmax.at(idim));
   152       hsig_unw.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim), 
xmax.at(idim));
   153       hbkg_unw.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim), 
xmax.at(idim));
   154       hsig.at(idim)->Reset();
   155       hbkg.at(idim)->Reset();
   156       hsig_unw.at(idim)->Reset();
   157       hbkg_unw.at(idim)->Reset();
   161    for (std::vector<const TMVA::BinarySearchTreeNode*>::const_iterator it = nodes.begin();
   162         it != nodes.end(); ++it) {
   163       std::vector<Float_t> ev = (*it)->GetEventV();
   164       Float_t              wt = (*it)->GetWeight();
   165       for (
UInt_t idim = 0; idim < ev.size(); ++idim) {
   166          if ((*it)->GetClass() == 
fClass) {
   167             hsig.at(idim)->Fill(ev.at(idim), wt);
   168             hsig_unw.at(idim)->Fill(ev.at(idim), 1);
   170             hbkg.at(idim)->Fill(ev.at(idim), wt);
   171             hbkg_unw.at(idim)->Fill(ev.at(idim), 1);
 
std::vector< Double_t > * fLower
 
MsgLogger & Endl(MsgLogger &ml)
 
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
 
PDEFoamDecisionTreeDensity()
 
MsgLogger & Log() const
message logger 
 
virtual void FillHistograms(TMVA::Volume &, std::vector< TH1D *> &, std::vector< TH1D *> &, std::vector< TH1D *> &, std::vector< TH1D *> &)
Fill the given histograms with signal and background events, which are found in the volume...
 
virtual Double_t Density(std::vector< Double_t > &Xarg, Double_t &event_density)
This function is not used in the decision tree like PDEFoam, instead FillHist() is used...
 
Abstract ClassifierFactory template that handles arbitrary types. 
 
Double_t SearchVolume(Volume *, std::vector< const TMVA::BinarySearchTreeNode *> *events=0)
search the whole tree and add up all weigths of events that lie within the given voluem ...