84 Log() << kFATAL <<
"COPY CONSTRUCTOR NOT IMPLEMENTED" <<
Endl;
95 std::vector<Float_t> values = ev->
GetValues();
115 if (!(
fCells[iCell]->GetStat()))
122 Log() << kWARNING <<
"Negative number of signal events in cell " << iCell
123 <<
": " << n_sig <<
". Set to 0." <<
Endl;
127 Log() << kWARNING <<
"Negative number of background events in cell " << iCell
128 <<
": " << n_bg <<
". Set to 0." <<
Endl;
133 if (n_sig + n_bg > 0) {
138 Sqr(n_bg /
Sqr(n_sig + n_bg))*n_bg));
174 if ((idim1 >=
GetTotDim()) || (idim1 < 0) ||
177 Log() << kFATAL <<
"<Project2>: wrong dimensions given: " 178 << idim1 <<
", " << idim2 <<
Endl;
184 Log() << kWARNING <<
"Warning: number of bins too big: " << nbin
185 <<
" Using 1000 bins for each dimension instead." <<
Endl;
187 }
else if (nbin < 1) {
188 Log() << kWARNING <<
"Wrong bin number: " << nbin
189 <<
"; set nbin=50" <<
Endl;
199 h1 =
new TH2D(hname.
Data(),
Form(
"var%d vs var%d", idim1, idim2), nbin,
fXmin[idim1],
fXmax[idim1], nbin, fXmin[idim2], fXmax[idim2]);
201 if (!h1)
Log() << kFATAL <<
"ERROR: Can not create histo" << hname <<
Endl;
202 if (cell_value == kValue)
212 std::map<Int_t, Float_t> txvec;
218 std::vector<TMVA::PDEFoamCell*> cells =
FindCells(txvec);
223 for (std::vector<TMVA::PDEFoamCell*>::const_iterator it = cells.begin();
224 it != cells.end(); ++it) {
227 (*it)->GetHcub(cellPosi, cellSize);
230 std::vector<Float_t> tvec;
232 if (i != idim1 && i != idim2)
233 tvec.push_back(cellPosi[i] + 0.5 * cellSize[i]);
235 tvec.push_back(txvec[i]);
239 if (kernel != NULL) {
240 cv = kernel->
Estimate(
this, tvec, cell_value);
244 if (cell_value == kValue) {
249 if ((d1 != idim1) && (d1 != idim2))
250 area_cell *= cellSize[d1];
MsgLogger & Endl(MsgLogger &ml)
This class is the abstract kernel interface for PDEFoam.
PDEFoamDiscriminant()
Default constructor for streamer, user should not use it.
Float_t VarTransform(Int_t idim, Float_t x) const
std::vector< TMVA::PDEFoamCell * > FindCells(const std::vector< Float_t > &) const
Find all cells, that contain txvec.
virtual TH2D * Project2(Int_t, Int_t, ECellValue, PDEFoamKernelBase *, UInt_t)
Project foam variable idim1 and variable idim2 to histogram.
Double_t GetCellElement(const PDEFoamCell *cell, UInt_t i) const
Returns cell element i of cell 'cell'.
void SetCellElement(PDEFoamCell *cell, UInt_t i, Double_t value)
Set cell element i of cell to value.
virtual void SetRangeUser(Double_t ufirst, Double_t ulast)
Set the viewing range for the axis from ufirst to ulast (in user coordinates).
virtual Float_t Estimate(PDEFoam *, std::vector< Float_t > &, ECellValue)=0
PDEFoamCell * FindCell(const std::vector< Float_t > &) const
Find cell that contains 'xvec' (in foam coordinates [0,1]).
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
Implementation of PDEFoam.
char * Form(const char *fmt,...)
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D
virtual Float_t GetCellValue(const std::vector< Float_t > &xvec, ECellValue cv, PDEFoamKernelBase *)
This function finds the cell, which corresponds to the given untransformed event vector 'xvec' and re...
virtual void Finalize()
Calc discriminator and its error for every cell and save it to the cell.
virtual void FillFoamCells(const Event *ev, Float_t wt)
This function fills an event into the discriminant PDEFoam.
std::vector< Float_t > & GetValues()
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content.
virtual Int_t GetNbinsX() const
Double_t Sqrt(Double_t x)
This PDEFoam variant stores in every cell the discriminant.
TAxis * GetXaxis()
Get the behaviour adopted by the object about the statoverflows. See EStatOverflows for more informat...
virtual Int_t GetNbinsY() const
2-D histogram with a double per channel (see TH1 documentation)}
const char * Data() const