ROOT logo
#ifndef ROOT_TKDPDF
#define ROOT_TKDPDF

#ifndef ROOT_TKDInterpolatorBase
#include "TKDInterpolatorBase.h"
#endif

#ifndef ROOT_TKDTree
#include "TKDTree.h"
#endif

// Non parametric interpolation class based on local polinomial regression.
// The class can be used to approximate PDF together with TKDTree or for
// general regression when the data points are given.

template <typename Index, typename Value> class TKDTree;
typedef class TKDTree<Int_t, Float_t> TKDTreeIF;
class TTree;
class TLinearFitter;
class TKDPDF : public TKDTreeIF, public TKDInterpolatorBase
{
public:
  TKDPDF();
  TKDPDF(TTree *t, const Char_t *var, const Char_t *cut = 0, UInt_t bsize = 100, Long64_t nentries = 1000000000, Long64_t firstentry = 0);
  TKDPDF(Int_t npoints, Int_t ndim, UInt_t bsize, Float_t **data);
  ~TKDPDF();

  inline Bool_t GetDataPoint(Int_t n, Float_t *p) const;
  inline Int_t  GetNodeIndex(const Float_t *p);
  void          DrawNode(Int_t tnode, UInt_t ax1=0, UInt_t ax2=1);

private:
  TKDPDF(const TKDPDF &);
  TKDPDF& operator=(const TKDPDF &);
  Bool_t    Build(Int_t ndim = 0);

          
  ClassDef(TKDPDF, 1)   // data interpolator based on KD tree
};


//__________________________________________________________________
Bool_t	TKDPDF::GetDataPoint(Int_t n, Float_t *p) const
{
  if(n < 0 || n >= fNPoints) return kFALSE;
  if(!fData) return kFALSE;
    
  for(int i=0; i<fNDim; i++) p[i] = fData[i][n];
  return kTRUE;
}

//__________________________________________________________________
Int_t	TKDPDF::GetNodeIndex(const Float_t *p)
{
  return FindNode(p) - fNNodes;
}

#endif

 TKDPDF.h:1
 TKDPDF.h:2
 TKDPDF.h:3
 TKDPDF.h:4
 TKDPDF.h:5
 TKDPDF.h:6
 TKDPDF.h:7
 TKDPDF.h:8
 TKDPDF.h:9
 TKDPDF.h:10
 TKDPDF.h:11
 TKDPDF.h:12
 TKDPDF.h:13
 TKDPDF.h:14
 TKDPDF.h:15
 TKDPDF.h:16
 TKDPDF.h:17
 TKDPDF.h:18
 TKDPDF.h:19
 TKDPDF.h:20
 TKDPDF.h:21
 TKDPDF.h:22
 TKDPDF.h:23
 TKDPDF.h:24
 TKDPDF.h:25
 TKDPDF.h:26
 TKDPDF.h:27
 TKDPDF.h:28
 TKDPDF.h:29
 TKDPDF.h:30
 TKDPDF.h:31
 TKDPDF.h:32
 TKDPDF.h:33
 TKDPDF.h:34
 TKDPDF.h:35
 TKDPDF.h:36
 TKDPDF.h:37
 TKDPDF.h:38
 TKDPDF.h:39
 TKDPDF.h:40
 TKDPDF.h:41
 TKDPDF.h:42
 TKDPDF.h:43
 TKDPDF.h:44
 TKDPDF.h:45
 TKDPDF.h:46
 TKDPDF.h:47
 TKDPDF.h:48
 TKDPDF.h:49
 TKDPDF.h:50
 TKDPDF.h:51
 TKDPDF.h:52
 TKDPDF.h:53
 TKDPDF.h:54
 TKDPDF.h:55
 TKDPDF.h:56
 TKDPDF.h:57
 TKDPDF.h:58
 TKDPDF.h:59