96using std::numeric_limits, std::nothrow, std::map;
 
  117   fFoamType(kSeparate),
 
  124   fFillFoamWithOrigWeights(
kFALSE),
 
  125   fDTSeparation(kFoam),
 
 
  156   fFoamType(kSeparate),
 
  163   fFillFoamWithOrigWeights(
kFALSE),
 
  164   fDTSeparation(kFoam),
 
  172      Log() << kFATAL << 
"Name too long " << 
name.Data() << 
Endl;
 
 
  184   delete fVariableNames;
 
  186   if (fDistr)  
delete fDistr;
 
  187   if (fPseRan) 
delete fPseRan;
 
  188   if (fXmin) { 
delete [] fXmin;  fXmin=0; }
 
  189   if (fXmax) { 
delete [] fXmax;  fXmax=0; }
 
  193      for(
Int_t i=0; i<fNCells; i++) 
delete fCells[i]; 
 
 
  223   , fFoamType(kSeparate)
 
  230   , fFillFoamWithOrigWeights(
kFALSE)
 
  231   , fDTSeparation(kFoam)
 
  238   Log() << kFATAL << 
"COPY CONSTRUCTOR NOT IMPLEMENTED" << 
Endl;
 
 
  251      Log() << kFATAL << 
"<SetDim>: Dimension is zero or negative!" << 
Endl;
 
  254   if (fXmin) 
delete [] fXmin;
 
  255   if (fXmax) 
delete [] fXmax;
 
 
  266      Log() << kFATAL << 
"<SetXmin>: Dimension out of bounds!" << 
Endl;
 
  277      Log() << kFATAL << 
"<SetXmax>: Dimension out of bounds!" << 
Endl;
 
 
  295   if(fPseRan==0) Log() << kFATAL << 
"Random number generator not set" << 
Endl;
 
  296   if(fDistr==0)  Log() << kFATAL << 
"Distribution function not set" << 
Endl;
 
  297   if(fDim==0)    Log() << kFATAL << 
"Zero dimension not allowed" << 
Endl;
 
  304   if(fRvec==0)  Log() << kFATAL << 
"Cannot initialize buffer fRvec" << 
Endl;
 
  308      if(fAlpha==0)  Log() << kFATAL << 
"Cannot initialize buffer fAlpha" << 
Endl;
 
  313      fInhiDiv = 
new Int_t[fDim];
 
  314      for(
Int_t i=0; i<fDim; i++) fInhiDiv[i]=0;
 
  318      fMaskDiv = 
new Int_t[fDim];
 
  319      for(
Int_t i=0; i<fDim; i++) fMaskDiv[i]=1;
 
  323   for(
Int_t i=0; i<fDim; i++){
 
  330      ((
TH1D*)(*fHistEdg)[i])->Sumw2();
 
 
  358      for(
Int_t i=0; i<fNCells; i++) 
delete fCells[i];
 
  364      Log() << kFATAL << 
"not enough memory to create " << fNCells
 
  367   for(
Int_t i=0; i<fNCells; i++){
 
  369      fCells[i]->SetSerial(i);
 
  379      Explore( fCells[
iCell] );    
 
 
  390   if (fLastCe==fNCells){
 
  391      Log() << kFATAL << 
"Too many cells" << 
Endl;
 
  395   cell = fCells[fLastCe];
 
  397   cell->Fill(status, parent, 0, 0);
 
 
  478   for (i=0;i<fDim;i++) ((
TH1D *)(*fHistEdg)[i])->Reset(); 
 
  492         for (k=0; k<fDim; k++) {
 
  507      if ( 
nevEff >= fNBin*fEvPerBin) 
break;
 
  517         Log() << kFATAL << 
"No events were found during exploration of " 
  518               << 
"root cell.  Please check PDEFoam parameters nSampl " 
  519               << 
"and VolFrac." << 
Endl;
 
  521         Log() << kWARNING << 
"Negative number of events found during " 
  522               << 
"exploration of root cell" << 
Endl;
 
  527   for (k=0; k<fDim;k++){
 
  529      if ( fInhiDiv[k]==1) fMaskDiv[k] =0; 
 
  551   for (parent = 
cell->GetPare(); parent!=0; parent = parent->
GetPare()){
 
 
  582      if( fMaskDiv[
kProj]) {
 
  599               if ( (
xUp-
xLo) < std::numeric_limits<double>::epsilon()) 
sswIn=0.;
 
  601               if ( (1.0-
xUp+
xLo) < std::numeric_limits<double>::epsilon()) 
sswOut=0.;
 
  629      Log() << kFATAL << 
"Something wrong with kBest" << 
Endl;
 
 
  639   fPseRan->RndmArray(fDim,fRvec);   
 
  640   for(
Int_t k=0; k<fDim; k++) fAlpha[k] = fRvec[k];
 
 
  660   for(i=0; i<=fLastCe; i++) {
 
  661      if( fCells[i]->GetStat() == 1 ) {
 
  663         driv = fCells[i]->GetDriv();
 
  664         if (
driv < std::numeric_limits<float>::epsilon())
 
  669         if (
xDiv <= std::numeric_limits<Double_t>::epsilon() ||
 
  670             xDiv >= 1.0 - std::numeric_limits<Double_t>::epsilon())
 
  674         if (GetMaxDepth() > 0)
 
  679            bCutNmin = GetCellElement(fCells[i], 0) > GetNmin();
 
  691         Log() << kVERBOSE << 
"Warning: No cell with more than " 
  692               << GetNmin() << 
" events found!" << 
Endl;
 
  694         Log() << kVERBOSE << 
"Warning: Maximum depth reached: " 
  695               << GetMaxDepth() << 
Endl;
 
  697         Log() << kWARNING << 
"<PDEFoam::PeekMax>: no more candidate cells (drivMax>0) found for further splitting." << 
Endl;
 
 
  718   if(fLastCe+1 >= fNCells) Log() << kFATAL << 
"Buffer limit is reached, fLastCe=fnBuf" << 
Endl;
 
  733   cell->SetDau0((fCells[
d1]));
 
  734   cell->SetDau1((fCells[
d2]));
 
  736   Explore( (fCells[
d1]) );
 
  737   Explore( (fCells[
d2]) );
 
 
  752   std::vector<Double_t> xvec;
 
  753   xvec.reserve(GetTotDim());
 
 
  768   fTimer->Init(fNCells);
 
  773   while ( (fLastCe+2) < fNCells ) {  
 
  777         Log() << kVERBOSE << 
"Break: "<< fLastCe+1 << 
" cells created" << 
Endl;
 
  780            delete fCells[
jCell];
 
  788      if ( Divide( 
newCell )==0) 
break;  
 
  793   Log() << kVERBOSE << GetNActiveCells() << 
" active cells created" << 
Endl;
 
 
  803   if(fDim==0) Log() << kFATAL << 
"SetInhiDiv: fDim=0" << 
Endl;
 
  805      fInhiDiv = 
new Int_t[ fDim ];
 
  806      for(
Int_t i=0; i<fDim; i++) fInhiDiv[i]=0;
 
  812      Log() << kFATAL << 
"Wrong iDim" << 
Endl;
 
 
  828   if (level==1) Log() << kVERBOSE <<  
"Performing consistency checks for created foam" << 
Endl;
 
  832      if( ((
cell->GetDau0()==0) && (
cell->GetDau1()!=0) ) ||
 
  833          ((
cell->GetDau1()==0) && (
cell->GetDau0()!=0) ) ) {
 
  835         if (level==1) Log() << kFATAL << 
"ERROR: Cell's no %d has only one daughter " << 
iCell << 
Endl;
 
  837      if( (
cell->GetDau0()==0) && (
cell->GetDau1()==0) && (
cell->GetStat()==0) ) {
 
  839         if (level==1) Log() << kFATAL << 
"ERROR: Cell's no %d  has no daughter and is inactive " << 
iCell << 
Endl;
 
  841      if( (
cell->GetDau0()!=0) && (
cell->GetDau1()!=0) && (
cell->GetStat()==1) ) {
 
  843         if (level==1) Log() << kFATAL << 
"ERROR: Cell's no %d has two daughters and is active " << 
iCell << 
Endl;
 
  847      if( (
cell->GetPare())!=fCells[0] ) { 
 
  848         if ( (
cell != 
cell->GetPare()->GetDau0()) && (
cell != 
cell->GetPare()->GetDau1()) ) {
 
  850            if (level==1) Log() << kFATAL << 
"ERROR: Cell's no %d parent not pointing to this cell " << 
iCell << 
Endl;
 
  855      if(
cell->GetDau0()!=0) {
 
  856         if(
cell != (
cell->GetDau0())->GetPare()) {
 
  858            if (level==1)  Log() << kFATAL << 
"ERROR: Cell's no %d daughter 0 not pointing to this cell " << 
iCell << 
Endl;
 
  861      if(
cell->GetDau1()!=0) {
 
  862         if(
cell != (
cell->GetDau1())->GetPare()) {
 
  864            if (level==1) Log() << kFATAL << 
"ERROR: Cell's no %d daughter 1 not pointing to this cell " << 
iCell << 
Endl;
 
  867      if(
cell->GetVolume()<1E-50) {
 
  869         if(level==1) Log() << kFATAL << 
"ERROR: Cell no. " << 
iCell << 
" has Volume of <1E-50" << 
Endl;
 
  876      if( (
cell->GetStat()==1) && (
cell->GetVolume()<1E-11) ) {
 
  878         if(level==1) Log() << kFATAL << 
"ERROR: Cell no. " << 
iCell << 
" is active but Volume is 0 " <<  
Endl;
 
  883      Log() << kVERBOSE << 
"Check has found " << 
errors << 
" errors and " << 
warnings << 
" warnings." << 
Endl;
 
  886      Info(
"CheckAll",
"Check - found total %d  errors \n",
errors);
 
 
  897      Log() << kWARNING << 
"<PrintCell(iCell=" << 
iCell 
  898            << 
")>: cell number " << 
iCell << 
" out of bounds!" 
  908   Log() << 
"Cell[" << 
iCell << 
"]={ ";
 
  909   Log() << 
"  " << fCells[
iCell] << 
"  " << 
Endl;  
 
  910   Log() << 
" Xdiv[abs. coord.]=" 
  913   Log() << 
" Abs. coord. = (";
 
  915      Log() << 
"dim[" << 
idim << 
"]={" 
  922   Log() << 
")" << 
Endl;
 
  925   Log() << 
"Elements: [";
 
  928      for (
Int_t i=0; i<
vec->GetNrows(); i++){
 
  929         if (i>0) Log() << 
", ";
 
  930         Log() << GetCellElement(fCells[
iCell], i);
 
  934   Log() << 
"]" << 
Endl;
 
 
  957   std::vector<Float_t> values  = 
ev->GetValues();
 
  958   std::vector<Float_t> 
tvalues = VarTransform(values);
 
  963   SetCellElement(
cell, 0, GetCellElement(
cell, 0) + 
wt);
 
  964   SetCellElement(
cell, 1, GetCellElement(
cell, 1) + 
wt*
wt);
 
 
  974   Log() << kVERBOSE << 
"Delete cell elements" << 
Endl;
 
 
 1017   std::vector<Float_t> 
txvec(VarTransform(xvec));
 
 1019      return GetCellValue(FindCell(
txvec), 
cv);
 
 
 1045   std::map<Int_t,Float_t> 
txvec;
 
 1046   for (std::map<Int_t,Float_t>::const_iterator it=xvec.begin(); it!=xvec.end(); ++it)
 
 1047      txvec.insert(std::pair<Int_t, Float_t>(it->first, VarTransform(it->first, it->second)));
 
 1050   std::vector<PDEFoamCell*> 
cells = FindCells(
txvec);
 
 
 1086   while (
cell->GetStat()!=1) { 
 
 
 1123   while (
cell->GetStat()!=1) { 
 
 1127      map<Int_t, Float_t>::const_iterator it = 
txvec.find(
idim);
 
 
 1172   std::vector<PDEFoamCell*> 
cells(0);
 
 
 1198   std::vector<PDEFoamCell*> 
cells(0);
 
 
 1220   if ( GetTotDim()!=1 )
 
 1221      Log() << kFATAL << 
"<Draw1Dim>: function can only be used for 1-dimensional foams!" 
 1229   if (!
h1) Log() << kFATAL << 
"ERROR: Can not create histo" << 
hname << 
Endl;
 
 1234      std::vector<Float_t> 
txvec;
 
 1241         val = GetCellValue(FindCell(
txvec), cell_value);
 
 
 1275      Log() << kFATAL << 
"<Project2>: wrong dimensions given: " 
 1282      Log() << kWARNING << 
"Warning: number of bins too big: " << 
nbin 
 1283            << 
" Using 1000 bins for each dimension instead." << 
Endl;
 
 1285   } 
else if (
nbin<1) {
 
 1286      Log() << kWARNING << 
"Wrong bin number: " << 
nbin 
 1287            << 
"; set nbin=50" << 
Endl;
 
 1299   if (!
h1) Log() << kFATAL << 
"ERROR: Can not create histo" << 
hname << 
Endl;
 
 1307         std::map<Int_t, Float_t> 
txvec;
 
 1313         std::vector<TMVA::PDEFoamCell*> 
cells = FindCells(
txvec);
 
 1318         for (std::vector<TMVA::PDEFoamCell*>::const_iterator it = 
cells.
begin();
 
 1325            std::vector<Float_t> 
tvec;
 
 1326            for (
Int_t i=0; i<GetTotDim(); ++i) {
 
 1336               sum_cv += GetCellValue(FindCell(
tvec), cell_value);
 
 
 1361      return GetCellElement(
cell, 0);
 
 1364      return GetCellElement(
cell, 1);
 
 1366   case kValueDensity: {
 
 1369      if (volume > numeric_limits<double>::epsilon()) {
 
 1370         return GetCellValue(
cell, kValue)/volume;
 
 1374            Log() << kWARNING << 
"<GetCellDensity(cell)>: ERROR: cell volume" 
 1375                  << 
" negative or zero!" 
 1376                  << 
" ==> return cell density 0!" 
 1377                  << 
" cell volume=" << volume
 
 1378                  << 
" cell entries=" << GetCellValue(
cell, kValue) << 
Endl;
 
 1380            Log() << kWARNING << 
"<GetCellDensity(cell)>: WARNING: cell volume" 
 1381                  << 
" close to zero!" 
 1382                  << 
" cell volume: " << volume << 
Endl;
 
 1389      return cell->GetIntg();
 
 1392      return cell->GetDriv();
 
 1395      if (
cell->GetIntg() != 0)
 
 1396         return cell->GetDriv()/
cell->GetIntg();
 
 1401      return cell->GetVolume();
 
 1404      Log() << kFATAL << 
"<GetCellValue>: unknown cell value" << 
Endl;
 
 
 
 1446         Log() << kFATAL << 
"<SetCellElement> ERROR: cell element is not a TVectorD*" << 
Endl;
 
 
 1462      Log() << kINFO << 
"Elapsed time: " + fTimer->GetElapsedTime()
 
 1470   if (fLastCe%
modulo == 0)   fTimer->DrawProgressBar( fLastCe );
 
 
 1513   if (GetTotDim() != 2)
 
 1514      Log() << kFATAL << 
"RootPlot2dim() can only be used with " 
 1515            << 
"two-dimensional foams!" << 
Endl;
 
 1518   ECellValue cell_value = kValue;
 
 1522      cell_value = kValue;
 
 1523   } 
else if (opt.
Contains(
"rms_ov_mean")){
 
 1524      cell_value = kRmsOvMean;
 
 1541      outfile << 
"TColor *graycolors[100];" << std::endl;
 
 1542      outfile << 
"for (Int_t i=0.; i<100; i++)" << std::endl;
 
 1543      outfile << 
"  graycolors[i]=new TColor(1000+i, 1-(Float_t)i/100.,1-(Float_t)i/100.,1-(Float_t)i/100.);"<< std::endl;
 
 1546      outfile << 
"cMap = new TCanvas(\"" << fName << 
"\",\"Cell Map for " 
 1547              << fName << 
"\",600,600);" << std::endl;
 
 1549   outfile<<
"TBox*a=new TBox();"<<std::endl;
 
 1550   outfile<<
"a->SetFillStyle(0);"<<std::endl;  
 
 1551   outfile<<
"a->SetLineWidth(4);"<<std::endl;
 
 1552   outfile<<
"TBox *b1=new TBox();"<<std::endl;  
 
 1553   outfile<<
"TText*t=new TText();"<<std::endl;  
 
 1555      outfile << (
colors ? 
"gStyle->SetPalette(1, 0);" : 
"gStyle->SetPalette(0);")
 
 1557      outfile <<
"b1->SetFillStyle(1001);"<<std::endl;
 
 1558      outfile<<
"TBox *b2=new TBox();"<<std::endl;  
 
 1559      outfile <<
"b2->SetFillStyle(0);"<<std::endl;
 
 1562      outfile <<
"b1->SetFillStyle(0);"<<std::endl;
 
 1575         if ( fCells[
iCell]->GetStat() == 1) {
 
 1583      outfile << 
"// observed minimum and maximum of distribution: " << std::endl;
 
 1584      outfile << 
"// Float_t zmin = "<< zmin << 
";" << std::endl;
 
 1585      outfile << 
"// Float_t zmax = "<< zmax << 
";" << std::endl;
 
 1588   outfile << 
"// used minimum and maximum of distribution (taking into account log scale if applicable): " << std::endl;
 
 1589   outfile << 
"Float_t zmin = "<< zmin << 
";" << std::endl;
 
 1590   outfile << 
"Float_t zmax = "<< zmax << 
";" << std::endl;
 
 1601   outfile << 
"// =========== Rectangular cells  ==========="<< std::endl;
 
 1603      if ( fCells[
iCell]->GetStat() == 1) {
 
 1622            outfile << 
"b1->SetFillColor(" << color << 
");" << std::endl;
 
 1626         outfile<<
"b1->DrawBox("<<
x1<<
","<<
y1<<
","<<
x2<<
","<<
y2<<
");"<<std::endl;
 
 1628            outfile<<
"b2->DrawBox("<<
x1<<
","<<
y1<<
","<<
x2<<
","<<
y2<<
");"<<std::endl;
 
 1632            outfile<<
"t->SetTextColor(4);"<<std::endl;
 
 1634               outfile<<
"t->SetTextSize(0.025);"<<std::endl;  
 
 1635            else if(fLastCe<251)
 
 1636               outfile<<
"t->SetTextSize(0.015);"<<std::endl;
 
 1638               outfile<<
"t->SetTextSize(0.008);"<<std::endl;
 
 1641            outfile<<
"t->DrawText("<<
x<<
","<<
y<<
","<<
"\""<<
iCell<<
"\""<<
");"<<std::endl;
 
 1645   outfile<<
"// ============== End Rectangles ==========="<< std::endl;
 
 
 1658   GetDistr()->FillBinarySearchTree(
ev);
 
 
 1667   if(fDistr) 
delete fDistr;
 
 
 
 
static const Float_t kVlow
 
static const Float_t kHigh
 
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t wmin
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t wmax
 
Option_t Option_t TPoint TPoint const char y1
 
R__EXTERN TStyle * gStyle
 
TVectorT< Double_t > TVectorD
 
const_iterator begin() const
 
const_iterator end() const
 
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
 
virtual void SetOwner(Bool_t enable=kTRUE)
Set whether this collection is the owner (enable==true) of its content.
 
1-D histogram with a double per channel (see TH1 documentation)
 
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
 
virtual Int_t GetNbinsY() const
 
static void AddDirectory(Bool_t add=kTRUE)
Sets the flag controlling the automatic add of histograms in memory.
 
virtual Int_t GetNbinsX() const
 
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
 
virtual Double_t GetBinContent(Int_t bin) const
Return content of bin number bin.
 
static Bool_t AddDirectoryStatus()
Static function: cannot be inlined on Windows/NT.
 
2-D histogram with a double per channel (see TH1 documentation)
 
ostringstream derivative to redirect and format output
 
PDEFoamCell * GetPare() const
 
void SetDriv(Double_t Driv)
 
void SetIntg(Double_t Intg)
 
This class is the abstract kernel interface for PDEFoam.
 
Implementation of PDEFoam.
 
Double_t GetCellElement(const PDEFoamCell *cell, UInt_t i) const
Returns cell element i of cell 'cell'.
 
void DeleteBinarySearchTree()
Delete the foam's density estimator, which contains the binary search tree.
 
void MakeAlpha()
Internal subprogram used by Create.
 
TObjArray * fVariableNames
collection of all variable names
 
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...
 
void OutputGrow(Bool_t finished=false)
Overridden function of PDEFoam to avoid native foam output.
 
void SetCellElement(PDEFoamCell *cell, UInt_t i, Double_t value)
Set cell element i of cell to value.
 
Int_t Divide(PDEFoamCell *)
Internal subprogram used by Create.
 
void PrintCell(Long_t iCell=0)
Prints geometry of and elements of 'iCell', as well as relations to parent and daughter cells.
 
void ResetCellElements()
Remove the cell elements from all cells.
 
void Grow()
Internal subprogram used by Create.
 
TH1D * Draw1Dim(ECellValue cell_value, Int_t nbin, PDEFoamKernelBase *kernel=nullptr)
Draws 1-dimensional foam (= histogram)
 
Double_t Eval(Double_t *xRand, Double_t &event_density)
Internal subprogram.
 
void PrintCells()
Prints geometry of ALL cells of the FOAM.
 
void SetXmax(Int_t idim, Double_t wmax)
set upper foam bound in dimension idim
 
virtual ~PDEFoam()
Default destructor.
 
PDEFoam()
Default constructor for streamer, user should not use it.
 
virtual TH2D * Project2(Int_t idim1, Int_t idim2, ECellValue cell_value=kValue, PDEFoamKernelBase *kernel=nullptr, UInt_t nbin=50)
Project foam variable idim1 and variable idim2 to histogram.
 
virtual Bool_t CellValueIsUndefined(PDEFoamCell *)
Returns true, if the value of the given cell is undefined.
 
virtual void FillFoamCells(const Event *ev, Float_t wt)
This function fills a weight 'wt' into the PDEFoam cell, which corresponds to the given event 'ev'.
 
void Create()
Basic initialization of FOAM invoked by the user.
 
void SetInhiDiv(Int_t, Int_t)
This can be called before Create, after setting kDim It defines which variables are excluded in the p...
 
void InitCells()
Internal subprogram used by Create.
 
PDEFoamCell * FindCell(const std::vector< Float_t > &) const
Find cell that contains 'xvec' (in foam coordinates [0,1]).
 
void FillBinarySearchTree(const Event *ev)
Insert event to internal foam's density estimator PDEFoamDensityBase.
 
virtual void Explore(PDEFoamCell *Cell)
Internal subprogram used by Create.
 
void SetXmin(Int_t idim, Double_t wmin)
set lower foam bound in dimension idim
 
std::vector< TMVA::PDEFoamCell * > FindCells(const std::vector< Float_t > &) const
Find all cells, that contain txvec.
 
void Varedu(Double_t[5], Int_t &, Double_t &, Double_t &)
Internal subprogram used by Create.
 
Int_t CellFill(Int_t, PDEFoamCell *)
Internal subprogram used by Create.
 
Long_t PeekMax()
Internal subprogram used by Create.
 
void RootPlot2dim(const TString &filename, TString opt, Bool_t createCanvas=kTRUE, Bool_t colors=kTRUE)
Debugging tool which plots the cells of a 2-dimensional PDEFoam as rectangles in C++ format readable ...
 
void CheckAll(Int_t)
User utility, miscellaneous and debug.
 
void SetDim(Int_t kDim)
Sets dimension of cubical space.
 
Timing information for training and evaluation of MVA methods.
 
Mother of all ROOT objects.
 
virtual void Print(Option_t *option="") const
This method must be overridden when a class wants to print itself.
 
Random number generator class based on M.
 
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
 
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
 
void SetPalette(Int_t ncolors=kBird, Int_t *colors=nullptr, Float_t alpha=1.)
See TColor::SetPalette.
 
Int_t GetColorPalette(Int_t i) const
Return color number i in current palette.
 
Int_t GetNumberOfColors() const
Return number of colors in the color palette.
 
MsgLogger & Endl(MsgLogger &ml)
 
Short_t Abs(Short_t d)
Returns the absolute value of parameter Short_t d.