Logo ROOT  
Reference Guide
PDEFoamDensityBase.h
Go to the documentation of this file.
1// @(#)root/tmva $Id$
2// Author: Tancredi Carli, Dominik Dannheim, Alexander Voigt
3
4/**********************************************************************************
5 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6 * Package: TMVA *
7 * Classes: PDEFoamDensityBase *
8 * Web : http://tmva.sourceforge.net *
9 * *
10 * Description: *
11 * Class PDEFoamDensityBase is an Abstract class representing *
12 * n-dimensional real positive integrand function *
13 * The main function is Density() which provides the event density at a *
14 * given point during the foam build-up (sampling). *
15 * *
16 * Authors (alphabetical): *
17 * Tancredi Carli - CERN, Switzerland *
18 * Dominik Dannheim - CERN, Switzerland *
19 * S. Jadach - Institute of Nuclear Physics, Cracow, Poland *
20 * Alexander Voigt - TU Dresden, Germany *
21 * Peter Speckmayer - CERN, Switzerland *
22 * *
23 * Copyright (c) 2008, 2010: *
24 * CERN, Switzerland *
25 * MPI-K Heidelberg, Germany *
26 * *
27 * Redistribution and use in source and binary forms, with or without *
28 * modification, are permitted according to the terms listed in LICENSE *
29 * (http://tmva.sourceforge.net/LICENSE) *
30 **********************************************************************************/
31
32#ifndef ROOT_TMVA_PDEFoamDensityBase
33#define ROOT_TMVA_PDEFoamDensityBase
34
35#include "TObject.h"
36
38#include "TMVA/Event.h"
39#include "TMVA/MsgLogger.h"
40
41namespace TMVA
42{
43
44 // class definition of underlying density
46 {
47 private:
48 std::vector<Double_t> fBox; // range-searching box
49 Double_t fBoxVolume; // volume of range searching box
50 Bool_t fBoxHasChanged; // range searching box has changed
51
52 protected:
53 BinarySearchTree *fBst; // Binary tree to find events within a volume
54 mutable MsgLogger *fLogger; //! message logger
55
56 MsgLogger& Log() const { return *fLogger; }
57
58 // calculate volume of fBox
60
61 public:
63 PDEFoamDensityBase(std::vector<Double_t> box);
65 virtual ~PDEFoamDensityBase();
66
67 // fill event into binary search tree
68 void FillBinarySearchTree(const Event* ev);
69
70 // set the range-searching box
71 void SetBox(std::vector<Double_t> box) { fBox = box; fBoxHasChanged = kTRUE; }
72
73 // get the range-searching box
74 const std::vector<Double_t>& GetBox() const { return fBox; }
75
76 // main function used by PDEFoam
77 // returns density at a given point by range searching in BST
78 virtual Double_t Density(std::vector<Double_t> &Xarg, Double_t &event_density) = 0;
79
80 ClassDef(PDEFoamDensityBase, 1) // PDEFoam event density interface
81 }; //end of PDEFoamDensityBase
82
83} // namespace TMVA
84
85#endif
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:326
A simple Binary search tree including a volume search method.
ostringstream derivative to redirect and format output
Definition: MsgLogger.h:59
This is an abstract class, which provides an interface for a PDEFoam density estimator.
Double_t GetBoxVolume()
Returns the volume of range searching box fBox.
MsgLogger & Log() const
message logger
virtual ~PDEFoamDensityBase()
destructor
void SetBox(std::vector< Double_t > box)
std::vector< Double_t > fBox
void FillBinarySearchTree(const Event *ev)
This method inserts the given event 'ev' it into the binary search tree.
const std::vector< Double_t > & GetBox() const
virtual Double_t Density(std::vector< Double_t > &Xarg, Double_t &event_density)=0
Mother of all ROOT objects.
Definition: TObject.h:37
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition: fillpatterns.C:1
create variable transformations