56 ClassImp(TMVA::PDEFoamEventDensity);
60 TMVA::PDEFoamEventDensity::PDEFoamEventDensity()
61 : PDEFoamDensityBase()
71 TMVA::PDEFoamEventDensity::PDEFoamEventDensity(std::vector<Double_t> box)
72 : PDEFoamDensityBase(box)
79 TMVA::PDEFoamEventDensity::PDEFoamEventDensity(
const PDEFoamEventDensity &distr)
80 : PDEFoamDensityBase(distr)
101 Double_t TMVA::PDEFoamEventDensity::Density(std::vector<Double_t> &xev, Double_t &event_density)
104 Log() << kFATAL <<
"<PDEFoamEventDensity::Density()> Binary tree not found!" << Endl;
107 std::vector<Double_t> lb(GetBox().size());
108 std::vector<Double_t> ub(GetBox().size());
111 const Double_t probevolume_inv = 1.0 / GetBoxVolume();
114 for (UInt_t idim = 0; idim < GetBox().size(); ++idim) {
115 lb[idim] = xev[idim] - GetBox().at(idim) / 2.0;
116 ub[idim] = xev[idim] + GetBox().at(idim) / 2.0;
119 TMVA::Volume volume(&lb, &ub);
120 std::vector<const TMVA::BinarySearchTreeNode*> nodes;
123 const Double_t sumOfWeights = fBst->SearchVolume(&volume, &nodes);
126 event_density = nodes.size() * probevolume_inv;
129 return (sumOfWeights + 0.1) * probevolume_inv;