ROOT logo
#include "TKDInterpolator.h"
#include "TKDNodeInfo.h"

#include "TError.h"
#include "TClonesArray.h"

ClassImp(TKDInterpolator)



//_________________________________________________________________
TKDInterpolator::TKDInterpolator() :
  TKDInterpolatorBase()
{
// Default constructor. To be used with care since in this case building
// of data structure is completly left to the user responsability.
}

//_________________________________________________________________
TKDInterpolator::TKDInterpolator(Int_t ndim, Int_t npoints) :
  TKDInterpolatorBase(ndim)
{
// Wrapper constructor for the TKDTree.

  if(npoints) TKDInterpolatorBase::Build(npoints);
}


//_________________________________________________________________
TKDInterpolator::~TKDInterpolator()
{
}

//_________________________________________________________________
void TKDInterpolator::AddNode(const TKDNodeInfo &node)
{
  if(!fNodes){
    Warning("TKDInterpolator::SetNode()", "Node array not defined.");
    return;
  }

  Int_t n(GetNTNodes());
  new((*fNodes)[n++]) TKDNodeInfo(node);
}

//_________________________________________________________________
Bool_t TKDInterpolator::Build(Int_t npoints, Int_t ndim)
{
  fNSize = ndim;
  return TKDInterpolatorBase::Build(npoints);
}

//_________________________________________________________________
Int_t TKDInterpolator::GetNodeIndex(const Float_t *p)
{
// 	printf("TKDInterpolator::GetNodeIndex() ...\n");
//   printf("Looking for p[");
//   for(int i=0; i<fNSize; i++) printf("%f ", p[i]);
//   printf("] ...\n");

  for(Int_t i=GetNTNodes(); i--;)
    if(((TKDNodeInfo*)(*fNodes)[i])->Has(p)) return i;
  
  printf("Point p[");
  for(int i=0; i<fNSize; i++) printf("%f ", p[i]);
  printf("] outside range.\n");
  return -1;
}


//_________________________________________________________________
Bool_t TKDInterpolator::SetNode(Int_t inode, const TKDNodeInfo &ref)
{
  if(!fNodes){
    Warning("TKDInterpolator::SetNode()", "Node array not defined.");
    return kFALSE;
  }
  if(inode >= GetNTNodes()){
    Warning("TKDInterpolator::SetNode()", "Node array defined up to %d.", GetNTNodes());
    return kFALSE;
  }
  TKDNodeInfo *node = (TKDNodeInfo*)(*fNodes)[inode];
  (*node) = ref;
  return kTRUE;
}

 TKDInterpolator.cxx:1
 TKDInterpolator.cxx:2
 TKDInterpolator.cxx:3
 TKDInterpolator.cxx:4
 TKDInterpolator.cxx:5
 TKDInterpolator.cxx:6
 TKDInterpolator.cxx:7
 TKDInterpolator.cxx:8
 TKDInterpolator.cxx:9
 TKDInterpolator.cxx:10
 TKDInterpolator.cxx:11
 TKDInterpolator.cxx:12
 TKDInterpolator.cxx:13
 TKDInterpolator.cxx:14
 TKDInterpolator.cxx:15
 TKDInterpolator.cxx:16
 TKDInterpolator.cxx:17
 TKDInterpolator.cxx:18
 TKDInterpolator.cxx:19
 TKDInterpolator.cxx:20
 TKDInterpolator.cxx:21
 TKDInterpolator.cxx:22
 TKDInterpolator.cxx:23
 TKDInterpolator.cxx:24
 TKDInterpolator.cxx:25
 TKDInterpolator.cxx:26
 TKDInterpolator.cxx:27
 TKDInterpolator.cxx:28
 TKDInterpolator.cxx:29
 TKDInterpolator.cxx:30
 TKDInterpolator.cxx:31
 TKDInterpolator.cxx:32
 TKDInterpolator.cxx:33
 TKDInterpolator.cxx:34
 TKDInterpolator.cxx:35
 TKDInterpolator.cxx:36
 TKDInterpolator.cxx:37
 TKDInterpolator.cxx:38
 TKDInterpolator.cxx:39
 TKDInterpolator.cxx:40
 TKDInterpolator.cxx:41
 TKDInterpolator.cxx:42
 TKDInterpolator.cxx:43
 TKDInterpolator.cxx:44
 TKDInterpolator.cxx:45
 TKDInterpolator.cxx:46
 TKDInterpolator.cxx:47
 TKDInterpolator.cxx:48
 TKDInterpolator.cxx:49
 TKDInterpolator.cxx:50
 TKDInterpolator.cxx:51
 TKDInterpolator.cxx:52
 TKDInterpolator.cxx:53
 TKDInterpolator.cxx:54
 TKDInterpolator.cxx:55
 TKDInterpolator.cxx:56
 TKDInterpolator.cxx:57
 TKDInterpolator.cxx:58
 TKDInterpolator.cxx:59
 TKDInterpolator.cxx:60
 TKDInterpolator.cxx:61
 TKDInterpolator.cxx:62
 TKDInterpolator.cxx:63
 TKDInterpolator.cxx:64
 TKDInterpolator.cxx:65
 TKDInterpolator.cxx:66
 TKDInterpolator.cxx:67
 TKDInterpolator.cxx:68
 TKDInterpolator.cxx:69
 TKDInterpolator.cxx:70
 TKDInterpolator.cxx:71
 TKDInterpolator.cxx:72
 TKDInterpolator.cxx:73
 TKDInterpolator.cxx:74
 TKDInterpolator.cxx:75
 TKDInterpolator.cxx:76
 TKDInterpolator.cxx:77
 TKDInterpolator.cxx:78
 TKDInterpolator.cxx:79
 TKDInterpolator.cxx:80
 TKDInterpolator.cxx:81
 TKDInterpolator.cxx:82
 TKDInterpolator.cxx:83
 TKDInterpolator.cxx:84
 TKDInterpolator.cxx:85
 TKDInterpolator.cxx:86