LArSoft  v06_85_00
Liquid Argon Software toolkit - http://larsoft.org/
LongitudinalAssociationAlgorithm.h
Go to the documentation of this file.
1 
8 #ifndef LAR_LONGITUDINAL_ASSOCIATION_ALGORITHM_H
9 #define LAR_LONGITUDINAL_ASSOCIATION_ALGORITHM_H 1
10 
11 #include "Pandora/Algorithm.h"
12 
13 #include "Helpers/ClusterFitHelper.h"
14 
16 
17 namespace lar_content
18 {
19 
24 {
25 public:
30 
31 private:
32  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
33  void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const;
34  void PopulateClusterAssociationMap(const pandora::ClusterVector &clusterVector, ClusterAssociationMap &clusterAssociationMap) const;
35  bool IsExtremalCluster(const bool isForward, const pandora::Cluster *const pCurrentCluster, const pandora::Cluster *const pTestCluster) const;
36 
45  bool AreClustersAssociated(const pandora::Cluster *const pInnerCluster, const pandora::Cluster *const pOuterCluster) const;
46 
57  bool AreClustersAssociated(const pandora::CartesianVector &innerClusterEnd, const pandora::CartesianVector &outerClusterStart,
58  const pandora::ClusterFitResult &innerFit, const pandora::ClusterFitResult &outerFit) const;
59 
60  unsigned int m_minClusterLayers;
61  unsigned int m_maxGapLayers;
62  unsigned int m_fitLayers;
67  float m_hitSizeZ;
68  float m_hitSizeX;
69 };
70 
71 } // namespace lar_content
72 
73 #endif // #ifndef LAR_LONGITUDINAL_ASSOCIATION_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...
void PopulateClusterAssociationMap(const pandora::ClusterVector &clusterVector, ClusterAssociationMap &clusterAssociationMap) const
Populate the cluster association map.
float m_maxLongitudinalDisplacement
maximum allowed longitudinal displacement after extrapolation (normalised to cell size) ...
float m_minCosRelativeAngle
maximum allowed relative angle between associated clusters
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
unsigned int m_minClusterLayers
minimum allowed number of layers for a clean cluster
Header file for the cluster association algorithm class.
float m_hitSizeX
estimated hit size in x (drift time) dimension, units cm
float m_maxGapDistanceSquared
maximum allowed distance (squared) between associated clusters
std::vector< art::Ptr< recob::Cluster > > ClusterVector
bool IsExtremalCluster(const bool isForward, const pandora::Cluster *const pCurrentCluster, const pandora::Cluster *const pTestCluster) const
Determine which of two clusters is extremal.
unsigned int m_maxGapLayers
maximum allowed number of layers between associated clusters
float m_hitSizeZ
estimated hit size in z (wire number) dimension, units cm
bool AreClustersAssociated(const pandora::Cluster *const pInnerCluster, const pandora::Cluster *const pOuterCluster) const
Determine whether two clusters are associated.
std::unordered_map< const pandora::Cluster *, ClusterAssociation > ClusterAssociationMap
unsigned int m_fitLayers
number of layers to fit at start and end of cluster
float m_maxTransverseDisplacement
maximum allowed transverse displacement after extrapolation (normalised to cell size) ...