111 std::vector<TH1D*> &hbkg, std::vector<TH1D*> &hsig_unw,
112 std::vector<TH1D*> &hbkg_unw)
115 if (hsig.size() != volume.
fLower->size()
116 || hbkg.size() != volume.
fLower->size()
117 || hsig_unw.size() != volume.
fLower->size()
118 || hbkg_unw.size() != volume.
fLower->size())
119 Log() << kFATAL <<
"<PDEFoamDistr::FillHistograms> Edge histograms have wrong size!" <<
Endl;
122 for (
UInt_t idim = 0; idim < hsig.size(); ++idim) {
123 if (!hsig.at(idim) || !hbkg.at(idim) ||
124 !hsig_unw.at(idim) || !hbkg_unw.at(idim))
125 Log() << kFATAL <<
"<PDEFoamDistr::FillHist> Histograms not initialized!" <<
Endl;
129 std::vector<const TMVA::BinarySearchTreeNode*> nodes;
132 fBst->SearchVolume(&volume, &nodes);
135 std::vector<Float_t>
xmin(volume.
fLower->size(), std::numeric_limits<float>::max());
136 std::vector<Float_t>
xmax(volume.
fLower->size(), -std::numeric_limits<float>::max());
137 for (std::vector<const TMVA::BinarySearchTreeNode*>::const_iterator it = nodes.begin();
138 it != nodes.end(); ++it) {
139 std::vector<Float_t> ev = (*it)->GetEventV();
140 for (
UInt_t idim = 0; idim <
xmin.size(); ++idim) {
141 if (ev.at(idim) <
xmin.at(idim))
xmin.at(idim) = ev.at(idim);
142 if (ev.at(idim) >
xmax.at(idim))
xmax.at(idim) = ev.at(idim);
147 for (
UInt_t idim = 0; idim < hsig.size(); ++idim) {
148 hsig.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim),
xmax.at(idim));
149 hbkg.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim),
xmax.at(idim));
150 hsig_unw.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim),
xmax.at(idim));
151 hbkg_unw.at(idim)->GetXaxis()->SetLimits(
xmin.at(idim),
xmax.at(idim));
152 hsig.at(idim)->Reset();
153 hbkg.at(idim)->Reset();
154 hsig_unw.at(idim)->Reset();
155 hbkg_unw.at(idim)->Reset();
159 for (std::vector<const TMVA::BinarySearchTreeNode*>::const_iterator it = nodes.begin();
160 it != nodes.end(); ++it) {
161 std::vector<Float_t> ev = (*it)->GetEventV();
162 Float_t wt = (*it)->GetWeight();
163 for (
UInt_t idim = 0; idim < ev.size(); ++idim) {
164 if ((*it)->GetClass() ==
fClass) {
165 hsig.at(idim)->Fill(ev.at(idim), wt);
166 hsig_unw.at(idim)->Fill(ev.at(idim), 1);
168 hbkg.at(idim)->Fill(ev.at(idim), wt);
169 hbkg_unw.at(idim)->Fill(ev.at(idim), 1);
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.