59 using Hit3DVec = std::vector<const reco::ClusterHit3D*>;
69 using CandPair = std::pair<double,const reco::ClusterHit3D*>;
119 m_axisValue(axisVal),
140 bool isLeafNode()
const {
return m_splitAxis == SplitAxis::leaf;}
141 bool isNullNode()
const {
return m_splitAxis == SplitAxis::null;}
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
const KdTreeNode & m_leftTree
void configure(fhicl::ParameterSet const &pset)
Configure our kdTree...
std::list< KdTreeNode > KdTreeNodeList
size_t FindNearestNeighbors(const reco::ClusterHit3D *, const KdTreeNode &, CandPairList &, float &) const
float m_pairSigmaPeakTime
Consider hits consistent if "significance" less than this.
kdTree(fhicl::ParameterSet const &pset)
Constructor.
std::vector< const reco::ClusterHit3D * > Hit3DVec
std::list< std::unique_ptr< reco::ClusterHit3D >> HitPairList
float DistanceBetweenNodes(const reco::ClusterHit3D *, const reco::ClusterHit3D *) const
const KdTreeNode & m_rightTree
float m_refLeafBestDist
Set neighborhood distance to this when ref leaf found.
std::pair< double, const reco::ClusterHit3D * > CandPair
KdTreeNode(const reco::ClusterHit3D *hit)
virtual ~kdTree()
Destructor.
std::list< const reco::ClusterHit3D * > HitPairListPtr
bool consistentPairs(const reco::ClusterHit3D *pair1, const reco::ClusterHit3D *pair2, float &hitSeparation) const
The bigger question: are two pairs of hits consistent?
Detector simulation of raw signals on wires.
std::list< CandPair > CandPairList
constexpr auto const & left(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
bool FindEntry(const reco::ClusterHit3D *, const KdTreeNode &, CandPairList &, float &, bool &, int) const
bool FindEntryBrute(const reco::ClusterHit3D *, const KdTreeNode &, int) const
KdTreeNode(SplitAxis axis, float axisVal, const KdTreeNode &left, const KdTreeNode &right)
const KdTreeNode & rightTree() const
float getAxisValue() const
const reco::ClusterHit3D * getClusterHit3D() const
std::vector< KdTreeNode > KdTreeNodeVec
float getTimeToExecute() const
KdTreeNode & BuildKdTree(Hit3DVec::iterator, Hit3DVec::iterator, KdTreeNodeList &, int depth=0) const
Given an input set of ClusterHit3D objects, build a kd tree structure.
const KdTreeNode & leftTree() const
SplitAxis getSplitAxis() const
const reco::ClusterHit3D * m_clusterHit3D