Logo ROOT   master
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 
37 #include "TMVA/BinarySearchTree.h"
38 #include "TMVA/Event.h"
39 #include "TMVA/MsgLogger.h"
40 
41 namespace 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
const std::vector< Double_t > & GetBox() const
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition: fillpatterns.C:1
virtual Double_t Density(std::vector< Double_t > &Xarg, Double_t &event_density)=0
#define ClassDef(name, id)
Definition: Rtypes.h:322
void SetBox(std::vector< Double_t > box)
virtual ~PDEFoamDensityBase()
destructor
void FillBinarySearchTree(const Event *ev)
This method inserts the given event &#39;ev&#39; it into the binary search tree.
MsgLogger & Log() const
message logger
std::vector< Double_t > fBox
double Double_t
Definition: RtypesCore.h:57
ostringstream derivative to redirect and format output
Definition: MsgLogger.h:59
Double_t GetBoxVolume()
Returns the volume of range searching box fBox.
Mother of all ROOT objects.
Definition: TObject.h:37
create variable transformations
This is an abstract class, which provides an interface for a PDEFoam density estimator.
const Bool_t kTRUE
Definition: RtypesCore.h:89
A simple Binary search tree including a volume search method.