CrossGapsExtensionAlgorithm.h
Go to the documentation of this file.
1 /**
2  * @file larpandoracontent/LArTwoDReco/LArClusterAssociation/CrossGapsExtensionAlgorithm.h
3  *
4  * @brief Header file for the cross gaps extension algorithm class.
5  *
6  * $Log: $
7  */
8 #ifndef LAR_CROSS_GAPS_EXTENSION_ALGORITHM_H
9 #define LAR_GROSS_GAPS_EXTENSION_ALGORITHM_H 1
10 
12 
14 
15 namespace lar_content
16 {
17 
18 /**
19  * @brief CrossGapsExtensionAlgorithm 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  /**
35  * @brief Build lists of pointing clusters that are adjacent to a detector gap
36  *
37  * @param clusterVector the input vector of clusters
38  * @param innerPointingClusterList the pointing clusters whose inner vertex is close to a detector gap
39  * @param outerPointingClusterList the pointing clusters whose outer vertex is close to a detector gap
40  */
41  void BuildPointingClusterList(const pandora::ClusterVector &clusterVector, LArPointingClusterList &innerPointingClusterList,
42  LArPointingClusterList &outerPointingClusterList) const;
43 
44  /**
45  * @brief Build a list of pointing clusters that are adjacent to a detector gap
46  *
47  * @param useInner check the inner vertex
48  * @param inputPointingClusterList the input list of pointing clusters
49  * @param outputPointingClusterList the output list of pointing clusters
50  */
51  void BuildPointingClusterList(const bool useInner, const LArPointingClusterList &inputPointingClusterList,
52  LArPointingClusterList &outputPointingClusterList) const;
53 
54  /**
55  * @brief Use pointing information to determine whether two clusters are associated
56  *
57  * @param pointingVertex1 the first pointing vertex
58  * @param pointingVertex2 the second pointing vertex
59  */
60  bool IsAssociated(const LArPointingCluster::Vertex &pointingVertex1, const LArPointingCluster::Vertex &pointingVertex2) const;
61 
62  /**
63  * @brief Determine whether a start and end position sit either side of a gap
64  *
65  * @param minZ the start position
66  * @param maxZ the end position
67  * @param hitType the hitType
68  */
69  bool IsAcrossGap(const float minZ, const float maxZ, const pandora::HitType hitType) const;
70 
71  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
72 
73  float m_minClusterLength; ///<
74  float m_minGapFraction; ///<
75  float m_maxGapTolerance; ///<
77  float m_maxRelativeAngle; ///<
78 };
79 
80 } // namespace lar_content
81 
82 #endif // #ifndef LAR_CROSS_GAPS_EXTENSION_ALGORITHM_H
Header file for the lar pointing cluster class.
void BuildPointingClusterList(const pandora::ClusterVector &clusterVector, LArPointingClusterList &innerPointingClusterList, LArPointingClusterList &outerPointingClusterList) const
Build lists of pointing clusters that are adjacent to a detector gap.
enum cvn::HType HitType
std::vector< LArPointingCluster > LArPointingClusterList
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...
void FillClusterMergeMap(const ClusterAssociationMatrix &clusterAssociationMatrix, ClusterMergeMap &clusterMergeMap) const
Fill the cluster merge map.
void FillClusterAssociationMatrix(const pandora::ClusterVector &clusterVector, ClusterAssociationMatrix &clusterAssociationMatrix) const
Fill the cluster association matrix.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::unordered_map< const pandora::Cluster *, ClusterAssociationMap > ClusterAssociationMatrix
Header file for the cluster extension algorithm class.
bool IsAcrossGap(const float minZ, const float maxZ, const pandora::HitType hitType) const
Determine whether a start and end position sit either side of a gap.
bool IsAssociated(const LArPointingCluster::Vertex &pointingVertex1, const LArPointingCluster::Vertex &pointingVertex2) const
Use pointing information to determine whether two clusters are associated.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
std::vector< art::Ptr< recob::Cluster > > ClusterVector