//////////////////////////////////////////////////////////////////////
// Memory setup of protected data members:
//
-// kDataOwner; // Toggle ownership of the data
+// fDataOwner; // Toggle ownership of the data
// fNnodes:
// size of branch node array, and index of first terminal node
// fNDim; // number of variables
template <typename Index, typename Value>
TKDTree<Index, Value>::TKDTree() :
TObject()
- ,kDataOwner(kFALSE)
+ ,fDataOwner(kFALSE)
,fNnodes(0)
,fNDim(0)
,fNDimm(0)
template <typename Index, typename Value>
TKDTree<Index, Value>::TKDTree(Index npoints, Index ndim, UInt_t bsize, Value **data) :
TObject()
- ,kDataOwner(kFALSE)
+ ,fDataOwner(kFALSE)
,fNnodes(0)
,fNDim(ndim)
,fNDimm(2*ndim)
template <typename Index, typename Value>
TKDTree<Index, Value>::~TKDTree()
{
+ // Destructor
if (fIndBuffer) delete [] fIndBuffer;
if (fDistBuffer) delete [] fDistBuffer;
if (fkNNdist) delete [] fkNNdist;
if (fIndPoints) delete [] fIndPoints;
if (fRange) delete [] fRange;
if (fBoundaries) delete [] fBoundaries;
- if (kDataOwner && fData){
+ if (fDataOwner && fData){
for(int idim=0; idim<fNDim; idim++) delete [] fData[idim];
delete [] fData;
}
// traverse tree
UChar_t ax;
Value val, dif;
- Int_t nAllNodes = fNnodes + GetNTNodes();
+ Int_t nAllNodes = fNnodes + fNpoints/fBucketSize + ((fNpoints%fBucketSize)?1:0);
Int_t nodeStack[128], nodeIn[128];
Index currentIndex = 0;
nodeStack[0] = inode;
//_________________________________________________________________
template <typename Index, typename Value>
-void TKDTree<Index, Value>::Spread(Index ntotal, Value *a, Index *index, Value &min, Value &max)
+void TKDTree<Index, Value>::Spread(Index ntotal, Value *a, Index *index, Value &min, Value &max) const
{
//Value min, max;
Index i;
//_________________________________________________________________
template <typename Index, typename Value>
-Value TKDTree<Index, Value>::KOrdStat(Index ntotal, Value *a, Index k, Index *index)
+Value TKDTree<Index, Value>::KOrdStat(Index ntotal, Value *a, Index k, Index *index) const
{
//
//copy of the TMath::KOrdStat because I need an Index work array
if(range) memcpy(fRange, range, fNDimm*sizeof(Value));
// total number of nodes including terminal nodes
- Int_t totNodes = fNnodes + GetNTNodes();
+ Int_t totNodes = fNnodes + fNpoints/fBucketSize + ((fNpoints%fBucketSize)?1:0);
fBoundaries = new Value[totNodes*fNDimm];
//Info("MakeBoundaries(Value*)", Form("Allocate boundaries for %d nodes", totNodes));