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;
 
  100     void UpdateForUnambiguousMerge(
const pandora::Cluster *
const pClusterToEnlarge, 
const pandora::Cluster *
const pClusterToDelete,
 
  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. 
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 void PopulateClusterAssociationMap(const pandora::ClusterVector &clusterVector, ClusterAssociationMap &clusterAssociationMap) const =0
Populate the cluster association map. 
pandora::ClusterSet m_forwardAssociations
The list of forward associations. 
void AmbiguousPropagation(const pandora::Cluster *const pCluster, const bool isForward, ClusterAssociationMap &clusterAssociationMap) const 
Ambiguous propagation. 
ClusterAssociation class. 
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. 
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