76void* G4KDTree::operator
new(size_t)
78 if(fgAllocator() ==
nullptr){
81 return (
void*) fgAllocator()->MallocSingle();
84void G4KDTree::operator
delete(
void* aNode)
86 fgAllocator()->FreeSingle((
G4KDTree*) aNode);
135 G4cout <<
"template<typename PointT> G4KDTree<PointT>::Build" <<
G4endl;
154 for(
size_t n = 0; n < Nnodes; n +=
fDim)
156 for(
size_t dim = 0; dim <
fDim; dim++)
177 std::vector<G4KDNode_Base*> result;
198 rset->Insert(dist_sq, result[j]);
G4GLOB_DLL std::ostream G4cout
void Insert(G4KDNode_Base *pos)
G4KDNode_Base * PopOutMiddle(std::size_t dimension)
G4KDNode_Base * GetRight()
G4KDNode_Base * Insert(PointT *point)
G4KDNode_Base * GetLeft()
void Print(std::ostream &out, G4int level=0) const
void SetMinMax(const Position &min, const Position &max)
void Extend(const Position &pos)
void __NearestToNode(G4KDNode_Base *source_node, G4KDNode_Base *node, const Position &pos, std::vector< G4KDNode_Base * > &result, G4double *result_dist_sq, HyperRect *fRect, G4int &nbresult)
G4KDTreeResultHandle Nearest(const Position &pos)
G4int __NearestInRange(G4KDNode_Base *node, const Position &pos, const G4double &range_sq, const G4double &range, G4KDTreeResult &list, G4int ordered, G4KDNode_Base *source_node=nullptr)
void Print(std::ostream &out=G4cout) const
G4KDTreeResultHandle NearestInRange(const Position &pos, const G4double &range)
void __InsertMap(G4KDNode_Base *node)
static G4Allocator< G4KDTree > *& fgAllocator()
void __Clear_Rec(G4KDNode_Base *node)
G4KDTree(std::size_t dim=3)
#define G4ThreadLocalStatic