Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
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
13namespace lar_content
14{
15
20{
21public:
26
27private:
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
69
75};
76
77} // namespace lar_content
78
79#endif // #ifndef LAR_OVERSHOOT_SPLITTING_ALGORITHM_H
Header file for the 2D sliding fit multi-split algorithm class.
std::pair< float, pandora::CartesianVector > MyTrajectoryPoint
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.
std::vector< MyTrajectoryPoint > MyTrajectoryPointList
void PopulateSplitPositionMap(const ClusterPositionMap &sortedIntersectionMap, ClusterPositionMap &clusterSplittingMap) const
Select split positions from sorted list of candidate positions.
void BuildIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterIntersectionMap) const
Use sliding fit results to calculate intersections of clusters.
void FindBestSplitPositions(const TwoDSlidingFitResultMap &slidingFitResultMap, ClusterPositionMap &clusterSplittingMap) const
Determine best split positions based on sliding fit result.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
static bool SortByHitProjection(const MyTrajectoryPoint &lhs, const MyTrajectoryPoint &rhs)
Sort pfos by number of constituent hits.
void BuildSortedIntersectionMap(const TwoDSlidingFitResultMap &slidingFitResultMap, const ClusterPositionMap &clusterIntersectionMap, ClusterPositionMap &sortedIntersectionMap) const
Use intersection points to decide on splitting points.
std::unordered_map< const pandora::Cluster *, pandora::CartesianPointVector > ClusterPositionMap
std::unordered_map< const pandora::Cluster *, TwoDSlidingFitResult > TwoDSlidingFitResultMap
std::vector< const Cluster * > ClusterVector
MANAGED_CONTAINER< const Cluster * > ClusterList
StatusCode
The StatusCode enum.