8 #ifndef LAR_CLUSTER_ASSOCIATION_ALGORITHM_H 9 #define LAR_CLUSTER_ASSOCIATION_ALGORITHM_H 1 11 #include "Pandora/Algorithm.h" 13 #include <unordered_map> 30 virtual pandora::StatusCode
Run();
31 virtual pandora::StatusCode
ReadSettings(
const pandora::TiXmlHandle xmlHandle);
71 const bool isForward,
const pandora::Cluster *
const pCurrentCluster,
const pandora::Cluster *
const pTestCluster)
const = 0;
81 void UnambiguousPropagation(
const pandora::Cluster *
const pCluster,
const bool isForward, ClusterAssociationMap &clusterAssociationMap)
const;
90 void AmbiguousPropagation(
const pandora::Cluster *
const pCluster,
const bool isForward, ClusterAssociationMap &clusterAssociationMap)
const;
100 void UpdateForUnambiguousMerge(
const pandora::Cluster *
const pClusterToEnlarge,
const pandora::Cluster *
const pClusterToDelete,
101 const bool isForwardMerge, ClusterAssociationMap &clusterAssociationMap)
const;
109 void UpdateForAmbiguousMerge(
const pandora::Cluster *
const pCluster, ClusterAssociationMap &clusterAssociationMap)
const;
120 void NavigateAlongAssociations(
const ClusterAssociationMap &clusterAssociationMap,
const pandora::Cluster *
const pCluster,
121 const bool isForward,
const pandora::Cluster *&pExtremalCluster, pandora::ClusterSet &clusterSet)
const;
130 #endif // #ifndef LAR_CLUSTER_ASSOCIATION_ALGORITHM_H pandora::ClusterSet m_backwardAssociations
The list of backward associations.
virtual pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
std::unordered_map< const pandora::Cluster *, ClusterAssociation > ClusterAssociationMap
bool m_resolveAmbiguousAssociations
Whether to resolve ambiguous associations.
void NavigateAlongAssociations(const ClusterAssociationMap &clusterAssociationMap, const pandora::Cluster *const pCluster, const bool isForward, const pandora::Cluster *&pExtremalCluster, pandora::ClusterSet &clusterSet) const
Navigate along cluster associations, from specified cluster, in specified direction.
pandora::ClusterSet m_forwardAssociations
The list of forward associations.
void AmbiguousPropagation(const pandora::Cluster *const pCluster, const bool isForward, ClusterAssociationMap &clusterAssociationMap) const
Ambiguous propagation.
virtual void PopulateClusterAssociationMap(const pandora::ClusterVector &clusterVector, ClusterAssociationMap &clusterAssociationMap) const =0
Populate the cluster association map.
ClusterAssociation class.
void UnambiguousPropagation(const pandora::Cluster *const pCluster, const bool isForward, ClusterAssociationMap &clusterAssociationMap) const
Unambiguous propagation.
void UpdateForUnambiguousMerge(const pandora::Cluster *const pClusterToEnlarge, const pandora::Cluster *const pClusterToDelete, const bool isForwardMerge, ClusterAssociationMap &clusterAssociationMap) const
Update cluster association map to reflect an unambiguous cluster merge.
ClusterAssociationAlgorithm()
Default constructor.
void UpdateForAmbiguousMerge(const pandora::Cluster *const pCluster, ClusterAssociationMap &clusterAssociationMap) const
Update cluster association map to reflect an ambiguous cluster merge.
ClusterAssociationAlgorithm class.
virtual pandora::StatusCode Run()
std::vector< art::Ptr< recob::Cluster > > ClusterVector
virtual void GetListOfCleanClusters(const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const =0
Populate cluster vector with subset of cluster list, containing clusters judged to be clean...
virtual bool IsExtremalCluster(const bool isForward, const pandora::Cluster *const pCurrentCluster, const pandora::Cluster *const pTestCluster) const =0
Determine which of two clusters is extremal.