DeltaRayExtensionAlgorithm.h
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArTwoDReco/LArCosmicRay/DeltaRayExtensionAlgorithm.h
3  *
4  * @brief Header file for the delta ray extension algorithm class.
5  *
6  * $Log: $
7  */
8 #ifndef LAR_DELTA_RAY_EXTENSION_ALGORITHM_H
9 #define LAR_DELTA_RAY_EXTENSION_ALGORITHM_H 1
10 
11 #include "Pandora/Algorithm.h"
12 
14 
15 namespace lar_content
16 {
17 
18 /**
19  * @brief DeltaRayExtensionAlgorithm class
20  */
22 {
23 public:
24  /**
25  * @brief Default constructor
26  */
28 
29 private:
30  void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const;
31  void FillClusterAssociationMatrix(const pandora::ClusterVector &clusterVector, ClusterAssociationMatrix &clusterAssociationMatrix) const;
32  void FillClusterMergeMap(const ClusterAssociationMatrix &clusterAssociationMatrix, ClusterMergeMap &clusterMergeMap) const;
33 
34  typedef std::unordered_map<const pandora::Cluster *, pandora::CartesianVector> ClusterToCoordinateMap;
35 
36  /**
37  * @brief Reduce number of extremal coordinates calculations by caching results when they are first obtained
38  *
39  * @param pParentCluster the cluster
40  * @param innerCoordinateMap the map from cluster to inner extremal coordinate
41  * @param outerCoordinateMap the map from cluster to outer extremal coordinate
42  * @param innerCoordinate to receive the inner coordinate
43  * @param outerCoordinate to receive the outer coordinate
44  */
45  void GetExtremalCoordinatesFromCache(const pandora::Cluster *const pCluster, ClusterToCoordinateMap &innerCoordinateMap,
46  ClusterToCoordinateMap &outerCoordinateMap, pandora::CartesianVector &innerCoordinate, pandora::CartesianVector &outerCoordinate) const;
47 
48  /**
49  * @brief Form association between two clusters
50  *
51  * @param pParentCluster the parent cluster
52  * @param pDaughterCluster the daughter cluster
53  * @param innerCoordinateMap the map from cluster to inner extremal coordinate
54  * @param outerCoordinateMap the map from cluster to outer extremal coordinate
55  * @param clusterAssociationMatrix the matrix of cluster associations
56  */
57  void FillClusterAssociationMatrix(const pandora::Cluster *const pParentCluster, const pandora::Cluster *const pDaughterCluster,
58  ClusterToCoordinateMap &innerCoordinateMap, ClusterToCoordinateMap &outerCoordinateMap, ClusterAssociationMatrix &clusterAssociationMatrix) const;
59 
60  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
61 
62  float m_minClusterLength; ///<
63  float m_maxClusterLength; ///<
64 
67 };
68 
69 } // namespace lar_content
70 
71 #endif // #ifndef LAR_DELTA_RAY_EXTENSION_ALGORITHM_H
std::unordered_map< const pandora::Cluster *, pandora::CartesianVector > ClusterToCoordinateMap
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::unordered_map< const pandora::Cluster *, ClusterAssociationMap > ClusterAssociationMatrix
void FillClusterMergeMap(const ClusterAssociationMatrix &clusterAssociationMatrix, ClusterMergeMap &clusterMergeMap) const
Fill the cluster merge map.
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...
Header file for the cluster extension algorithm class.
void GetExtremalCoordinatesFromCache(const pandora::Cluster *const pCluster, ClusterToCoordinateMap &innerCoordinateMap, ClusterToCoordinateMap &outerCoordinateMap, pandora::CartesianVector &innerCoordinate, pandora::CartesianVector &outerCoordinate) const
Reduce number of extremal coordinates calculations by caching results when they are first obtained...
void FillClusterAssociationMatrix(const pandora::ClusterVector &clusterVector, ClusterAssociationMatrix &clusterAssociationMatrix) const
Fill the cluster association matrix.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
std::vector< art::Ptr< recob::Cluster > > ClusterVector