ROOT logo

class TMVA::TFDISTR: public TMVA::PDEFoamIntegrand

 Implementation of PDEFoam

 The PDEFoam method is an
 extension of the PDERS method, which uses self-adapting binning to
 divide the multi-dimensional phase space in a finite number of
 hyper-rectangles (boxes).

 For a given number of boxes, the binning algorithm adjusts the size
 and position of the boxes inside the multidimensional phase space,
 minimizing the variance of the signal and background densities inside
 the boxes. The binned density information is stored in binary trees,
 allowing for a very fast and memory-efficient classification of

 The implementation of the PDEFoam is based on the monte-carlo
 integration package PDEFoam included in the analysis package ROOT.

Function Members (Methods)

voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
Bool_tCellRMSCut(TMVA::PDEFoamCell* cell, Float_t rms_cut, Int_t nbin)
static TClass*Class()
static TClass*TMVA::PDEFoamIntegrand::Class()
static TClass*TObject::Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Double_tDensity(int nDim, Double_t* Xarg)
virtual Double_tTMVA::PDEFoamIntegrand::Density(Int_t ndim, Double_t*)
virtual Double_tDensity(int nDim, Double_t* Xarg, Double_t& event_density)
virtual Double_tTMVA::PDEFoamIntegrand::Density(Int_t ndim, Double_t*, Double_t&)
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
voidFillBinarySearchTree(const TMVA::Event* ev, TMVA::EFoamType ft, Bool_t NoNegWeights = kFALSE)
voidFillEdgeHist(Int_t nDim, TObjArray* myfHistEdg, Double_t* cellPosi, Double_t* cellSize, Double_t* ceSum, Double_t ceVol)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
UInt_tGetNEvents(TMVA::PDEFoamCell* cell)
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
voidInitialize(Int_t ndim = 2)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual TClass*TMVA::PDEFoamIntegrand::IsA() const
virtual TClass*TObject::IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
TH2D*MakeHistogram(Int_t nbinsx, Int_t nbinsy)
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TMVA::TFDISTR&operator=(const TMVA::TFDISTR&)
TMVA::PDEFoamIntegrand&TMVA::PDEFoamIntegrand::operator=(const TMVA::PDEFoamIntegrand&)
TObject&TObject::operator=(const TObject& rhs)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidSetBackgroundClass(Int_t cls)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDensityCalc(TMVA::TDensityCalc dc)
voidSetDim(Int_t idim)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetSignalClass(Int_t cls)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetVolumeFraction(Float_t vfr)
voidSetXmax(Int_t idim, Float_t wmax)
voidSetXmin(Int_t idim, Float_t wmin)
virtual voidShowMembers(TMemberInspector& insp, char* parent)
virtual voidTMVA::PDEFoamIntegrand::ShowMembers(TMemberInspector& insp, char* parent)
virtual voidTObject::ShowMembers(TMemberInspector& insp, char* parent)
virtual voidStreamer(TBuffer& b)
virtual voidTMVA::PDEFoamIntegrand::Streamer(TBuffer& b)
virtual voidTObject::Streamer(TBuffer& b)
voidStreamerNVirtual(TBuffer& b)
voidTMVA::PDEFoamIntegrand::StreamerNVirtual(TBuffer& b)
voidTObject::StreamerNVirtual(TBuffer& b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
Float_tVarTransform(Int_t idim, Float_t x)
Float_tVarTransformInvers(Int_t idim, Float_t x)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
TMVA::MsgLogger&Log() const

Data Members

Int_tfBackgroundClassTODO: intermediate solution to keep IsSignal() of Event working. TODO: remove IsSignal() from Event
TMVA::MsgLogger*fLogger! message logger
Int_tfSignalClassTODO: intermediate solution to keep IsSignal() of Event working. TODO: remove IsSignal() from Event
TMVA::BinarySearchTree*fBstBinary tree to find events within a volume
TMVA::TDensityCalcfDensityCalcmethod of density calculation
Int_tfDimnumber of dimensions
Float_tfVolFracvolume fraction (with respect to total phase space
Float_t*fXmax[fDim] maximal value of phase space in all dimension
Float_t*fXmin[fDim] minimal value of phase space in all dimension

Class Charts

Inheritance Inherited Members Includes Libraries
Class Charts

Function documentation

void PrintDensity()
 Information output about foam density
void Initialize(Int_t ndim = 2)
 Initialisation procedure of internal foam density.
 Set dimension to 'ndim' and create BinarySearchTree.
void FillBinarySearchTree(const TMVA::Event* ev, TMVA::EFoamType ft, Bool_t NoNegWeights = kFALSE)
 This method creates an TMVA::Event and inserts it into the
 binary search tree.

 If 'NoNegWeights' is true, an event with negative weight will
 not be filled into the foam.  (Default value: false)
void FillEdgeHist(Int_t nDim, TObjArray* myfHistEdg, Double_t* cellPosi, Double_t* cellSize, Double_t* ceSum, Double_t ceVol)
 New method to fill edge histograms directly, without MC sampling.
 DD 10.Jan.2008
UInt_t GetNEvents(TMVA::PDEFoamCell* cell)
 Return number of events (from binary search tree) within a certain volume given
 by the cell coordinates and size.
Bool_t CellRMSCut(TMVA::PDEFoamCell* cell, Float_t rms_cut, Int_t nbin)
 Checks whether the RMS within the cell is greater than 'rms_cut'.
 Furthermore control whether RMSError < RMS.

 1) fill histograms for each dimension
 2) check whether RMS/mean > RMS_error/mean in each dimension
 3) if 2) is kTRUE -> return kTRUE only if RMS/mean > rms_cut in one dimension
    --> cell may be splitten
Double_t Density(int nDim, Double_t* Xarg, Double_t& event_density)
 This function is needed during the foam buildup.
 It return a certain density depending on the selected classification
 or regression options:

 In case of separated foams (classification) or multi target regression:
  - returns event density within volume (specified by VolFrac)
 In case of unified foams: (classification)
  - returns discriminator (N_sig)/(N_sig + N_bg) divided by volume (specified by VolFrac)
 In case of mono target regression:
  - returns average target value within volume divided by volume (specified by VolFrac)
TH2D* MakeHistogram(Int_t nbinsx, Int_t nbinsy)
 Unused function.
 Warning: only works in 2D for now.
Double_t Density(int nDim, Double_t* Xarg)
void SetVolumeFraction(Float_t vfr)
 Getter and setter for VolFrac option
{fVolFrac=vfr; return;}
Float_t GetVolumeFraction()
{return fVolFrac;}
void SetDim(Int_t idim)
 set foam dimension (mandatory before foam build-up!)
void SetXmin(Int_t idim, Float_t wmin)
 set foam boundaries
{fXmin[idim]=wmin; return;}
void SetXmax(Int_t idim, Float_t wmax)
{fXmax[idim]=wmax; return;}
Float_t VarTransform(Int_t idim, Float_t x)
 transformation functions for event variable into foam boundaries
 reason: foam allways has boundaries [0, 1]
Float_t VarTransformInvers(Int_t idim, Float_t x)
void SetDensityCalc(TMVA::TDensityCalc dc)
 Getters and setters for foam filling method
{ fDensityCalc = dc; }
Bool_t FillDiscriminator()
{ return fDensityCalc == kDISCRIMINATOR; }
Bool_t FillTarget0()
{ return fDensityCalc == kTARGET; }
Bool_t FillEventDensity()
{ return fDensityCalc == kEVENT_DENSITY; }
void SetSignalClass(Int_t cls)
{ fSignalClass = cls; }
void SetBackgroundClass(Int_t cls)
{ fBackgroundClass = cls; }
PDEFoamCell& operator=(const TMVA::TFDISTR& )