28#ifndef G4OctreeFinder_hh
29#define G4OctreeFinder_hh 1
55template<
typename CONTAINER>
61 return (*it)->GetPosition();
64 const std::pair<typename CONTAINER::iterator,G4double>)>
65 compareInterval = [](
const std::pair<typename CONTAINER::iterator,G4double>& iter1,
66 const std::pair<typename CONTAINER::iterator,G4double>& iter2)
69 return (std::get<1>(iter1) < std::get<1>(iter2));
74template<
class T,
typename CONTAINER>
80 using TreeMap = std::map<int, OctreeHandle>;
121 std::vector<std::pair<
typename
122 CONTAINER::iterator,
G4double>>& result,
123 G4bool isSort =
false)
const;
128 std::vector<std::pair<
typename
129 CONTAINER::iterator,
G4double>>& result,
130 G4bool isSort =
false)
const;
135 std::vector<std::pair<
typename
136 CONTAINER::iterator,
G4double>>& result,
137 G4bool isSort =
false)
const;
141 std::vector<std::pair<
142 typename CONTAINER::iterator,
G4double> >&
G4double(* function)(G4double)
G4shared_ptr< Octree > OctreeHandle
void FindNearestInRange(const G4ThreeVector &position, const G4int &key, G4double R, std::vector< std::pair< typename CONTAINER::iterator, G4double > > &result, G4bool isSort=false) const
void BuildTreeMap(const std::map< G4int, CONTAINER * > &listMap)
G4ITType GetITType() override
Extractor< CONTAINER > fExtractor
void SetOctreeUsed(G4bool used)
static G4OctreeFinder * Instance()
void FindNearestInRange(const G4Track &track, const int &key, G4double R, std::vector< std::pair< typename CONTAINER::iterator, G4double > > &result, G4bool isSort=false) const
G4bool IsOctreeUsed() const
static G4ThreadLocal G4OctreeFinder * fInstance
G4int GetVerboseLevel() override
void FindNearest(const G4Track &track, const int &key, G4double R, std::vector< std::pair< typename CONTAINER::iterator, G4double > > &result, G4bool isSort=false) const
void SetVerboseLevel(G4int level) override
void FindNearestInRange(const G4ThreeVector &, G4double R, std::vector< std::pair< typename CONTAINER::iterator, G4double > > &result, G4bool isSorted) const
~G4OctreeFinder() override
void SetOctreeBuilt(G4bool used)
std::map< int, OctreeHandle > TreeMap
G4bool IsOctreeBuilt() const
virtual G4ITType GetITType()=0
virtual ~G4VFinder()=default
virtual void SetVerboseLevel(G4int level)=0
virtual G4int GetVerboseLevel()=0