Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
CrossedTrackSplittingAlgorithm.h
Go to the documentation of this file.
1
8#ifndef LAR_CROSSED_TRACK_SPLITTING_ALGORITHM_H
9#define LAR_CROSSED_TRACK_SPLITTING_ALGORITHM_H 1
10
11#include "Pandora/Algorithm.h"
12
14
15namespace lar_content
16{
17
18template <typename, unsigned int>
19class KDTreeLinkerAlgo;
20template <typename, unsigned int>
21class KDTreeNodeInfoT;
22
23//------------------------------------------------------------------------------------------------------------------------------------------
24
29{
30public:
35
36private:
39 typedef std::vector<HitKDNode2D> HitKDNode2DList;
40
41 typedef std::unordered_map<const pandora::Cluster *, pandora::ClusterSet> ClusterToClustersMap;
42 typedef std::unordered_map<const pandora::CaloHit *, const pandora::Cluster *> HitToClusterMap;
43
48 pandora::CartesianVector &splitPosition, pandora::CartesianVector &direction1, pandora::CartesianVector &direction2) const;
49
57 void FindCandidateSplitPositions(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2,
58 pandora::CartesianPointVector &candidateVector) const;
59
63
66};
67
68} // namespace lar_content
69
70#endif // #ifndef LAR_CROSSED_TRACK_SPLITTING_ALGORITHM_H
Header file for the algorithm class.
Header file for the two dimensional sliding fit splitting and switching algorithm class.
float m_minCosRelativeAngle
maximum relative angle between tracks after un-crossing
float m_maxClusterSeparation
maximum separation of two clusters
void FindCandidateSplitPositions(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, pandora::CartesianPointVector &candidateVector) const
Find average positions of pairs of hits within a maximum separation.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
pandora::StatusCode TidyUpStep()
Tidy up any information cached in e.g. the preparation step.
float m_maxClusterSeparationSquared
maximum separation of two clusters (squared)
pandora::StatusCode FindBestSplitPosition(const TwoDSlidingFitResult &slidingFit1, const TwoDSlidingFitResult &slidingFit2, pandora::CartesianVector &splitPosition, pandora::CartesianVector &direction1, pandora::CartesianVector &direction2) const
Find the best split position and direction for a pair of clusters.
KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > HitKDTree2D
std::unordered_map< const pandora::Cluster *, pandora::ClusterSet > ClusterToClustersMap
std::unordered_map< const pandora::CaloHit *, const pandora::Cluster * > HitToClusterMap
pandora::StatusCode PreparationStep(const pandora::ClusterVector &clusterVector)
Perform any preparatory actions, such as caching information for subsequent expensive calculations.
ClusterToClustersMap m_nearbyClusters
The nearby clusters map.
float m_searchRegion1D
Search region, applied to each dimension, for look-up from kd-trees.
KDTreeNodeInfoT< const pandora::CaloHit *, 2 > HitKDNode2D
Class that implements the KDTree partition of 2D space and a closest point search algorithm.
Data stored in each KDTree node. The dim1/dim2 fields are usually the duplication of some PFRecHit va...
CartesianVector class.
Cluster class.
Definition Cluster.h:31
std::vector< const Cluster * > ClusterVector
std::vector< CartesianVector > CartesianPointVector
StatusCode
The StatusCode enum.