56template <
typename Iterator,
class Extractor,
typename Po
int = G4ThreeVector>
76 template <
typename OutPutContainer>
79 void *
operator new(size_t);
80 void operator delete(
void *);
93 using NodeVector = std::vector<std::pair<Iterator,Point>>;
94 using childNodeArray = std::array<Node*,8>;
97 std::array<std::pair<Iterator,Point>,
105 Node(
const NodeVector& input_values);
106 Node(
const NodeVector& input_values,
108 size_t current_depth);
110 Node(
const Node&) =
delete;
112 template <
typename OutPutContainer>
114 OutPutContainer& resultIndices)
const;
120 void init_max_depth_leaf(
const NodeVector& input_values);
121 void init_leaf(
const NodeVector& input_values);
123 const NodeVector& input_values,
124 size_t current_depth);
127 using wrapped_type =
typename NodeVector::const_iterator;
129 InnerIterator(wrapped_type it):it__(it)
133 return ((*it__).second);
135 InnerIterator& operator++()
140 InnerIterator operator++(
G4int)
142 InnerIterator other = *
this;
149 return this->it__ == rhs.it__;
166#include "G4Octree.icc"
G4ErrorMatrix operator*(const G4ErrorMatrix &m1, const G4ErrorMatrix &m2)
const size_t max_per_node
G4Octree(tree_type &&rhs)
void swap(tree_type &rhs)
tree_type & operator=(tree_type rhs)
G4Octree(Iterator, Iterator, Extractor)
G4Octree(Iterator, Iterator)
void radiusNeighbors(const Point &query, const G4double &radius, OutPutContainer &resultIndices) const
bool operator!=(const HepRotation &r, const HepLorentzRotation <)
bool operator==(const HepRotation &r, const HepLorentzRotation <)
#define G4ThreadLocalStatic