LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
OvershootSplittingAlgorithm.h
Go to the documentation of this file.
1 
8 #ifndef LAR_OVERSHOOT_SPLITTING_ALGORITHM_H
9 #define LAR_OVERSHOOT_SPLITTING_ALGORITHM_H 1
10 
12 
13 namespace lar_content
14 {
15 
20 {
21 public:
26 
27 private:
28  void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const;
29  void FindBestSplitPositions(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterSplittingMap) const;
30 
31  typedef std::pair<float, pandora::CartesianVector> MyTrajectoryPoint;
32  typedef std::vector<MyTrajectoryPoint> MyTrajectoryPointList;
33 
40  void BuildIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterIntersectionMap) const;
41 
49  void BuildSortedIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, const ClusterPositionMap &clusterIntersectionMap,
50  ClusterPositionMap &sortedIntersectionMap) const;
51 
58  void PopulateSplitPositionMap(const ClusterPositionMap &sortedIntersectionMap, ClusterPositionMap &clusterSplittingMap) const;
59 
66  static bool SortByHitProjection(const MyTrajectoryPoint &lhs, const MyTrajectoryPoint &rhs);
67 
68  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
69 
75 };
76 
77 } // namespace lar_content
78 
79 #endif // #ifndef LAR_OVERSHOOT_SPLITTING_ALGORITHM_H
void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const
Populate cluster vector with subset of cluster list, containing clusters judged to be clean...
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::unordered_map< const pandora::Cluster *, pandora::CartesianPointVector > ClusterPositionMap
void BuildIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterIntersectionMap) const
Use sliding fit results to calculate intersections of clusters.
std::unordered_map< const pandora::Cluster *, TwoDSlidingFitResult > TwoDSlidingFitResultMap
void FindBestSplitPositions(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterSplittingMap) const
Determine best split positions based on sliding fit result.
std::vector< MyTrajectoryPoint > MyTrajectoryPointList
Header file for the 2D sliding fit multi-split algorithm class.
std::pair< float, pandora::CartesianVector > MyTrajectoryPoint
static bool SortByHitProjection(const MyTrajectoryPoint &lhs, const MyTrajectoryPoint &rhs)
Sort pfos by number of constituent hits.
std::vector< art::Ptr< recob::Cluster > > ClusterVector
void PopulateSplitPositionMap(const ClusterPositionMap &sortedIntersectionMap, ClusterPositionMap &clusterSplittingMap) const
Select split positions from sorted list of candidate positions.
void BuildSortedIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, const ClusterPositionMap &clusterIntersectionMap, ClusterPositionMap &sortedIntersectionMap) const
Use intersection points to decide on splitting points.