8#ifndef LAR_OVERLAP_MATRIX_H
9#define LAR_OVERLAP_MATRIX_H 1
13#include <unordered_map>
129 unsigned int &n1,
unsigned int &n2)
const;
132 typedef std::unordered_map<const pandora::Cluster *, OverlapResult>
OverlapList;
133 typedef std::unordered_map<const pandora::Cluster *, OverlapList>
TheMatrix;
250 this->GetConnectedElements(pCluster, ignoreUnavailable, elementList, n1, n2);
258 unsigned int n1(0), n2(0);
259 this->GetConnectedElements(pCluster, ignoreUnavailable, elementList, n1, n2);
267 return m_overlapMatrix.begin();
275 return m_overlapMatrix.end();
284 const OverlapList &overlapList(this->GetOverlapList(pCluster1));
285 typename OverlapList::const_iterator iter = overlapList.find(pCluster2);
287 if (overlapList.end() == iter)
298 typename TheMatrix::const_iterator iter = m_overlapMatrix.find(pCluster1);
300 if (m_overlapMatrix.end() == iter)
311 return m_clusterNavigationMap12;
319 return m_clusterNavigationMap21;
327 m_overlapMatrix.clear();
328 m_clusterNavigationMap12.clear();
329 m_clusterNavigationMap21.clear();
338 m_pCluster1(pCluster1),
339 m_pCluster2(pCluster2),
340 m_overlapResult(overlapResult)
365 return m_overlapResult;
Header file defining relevant internal typedefs, sort and string conversion functions.
const pandora::Cluster * m_pCluster2
The address of cluster 2.
const pandora::Cluster * m_pCluster1
The address of cluster 1.
bool operator<(const Element &rhs) const
Element less than operator.
const OverlapResult & GetOverlapResult() const
Get the overlap result.
Element(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const OverlapResult &overlapResult)
Constructor.
const pandora::Cluster * GetCluster1() const
Get the address of cluster 1.
OverlapResult m_overlapResult
The overlap result.
const pandora::Cluster * GetCluster2() const
Get the address of cluster 2.
bool DefaultAmbiguityFunction(const pandora::ClusterList &clusterList1, const pandora::ClusterList &clusterList2, const pandora::Cluster *&pCluster1, const pandora::Cluster *&pCluster2) const
Default ambiguity function, checking that only one cluster from view 1 and view 2 is found.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterNavigationMap
void GetNConnections(const pandora::Cluster *const pCluster, const bool ignoreUnavailable, unsigned int &n1, unsigned int &n2) const
Get the number of connections for a specified cluster.
ClusterNavigationMap m_clusterNavigationMap12
The cluster navigation map 1->2.
void SetOverlapResult(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const OverlapResult &overlapResult)
Set overlap result.
const_iterator begin() const
Returns an iterator referring to the first element in the overlap matrix.
const ClusterNavigationMap & GetClusterNavigationMap12() const
Get the cluster navigation map 1->2.
TheMatrix::const_iterator const_iterator
TheMatrix m_overlapMatrix
The overlap matrix.
std::vector< Element > ElementList
void GetSortedKeyClusters(pandora::ClusterVector &sortedKeyClusters) const
Get a sorted vector of key clusters (view 1 clusters with current implementation)
const ClusterNavigationMap & GetClusterNavigationMap21() const
Get the cluster navigation map 2->1.
std::unordered_map< const pandora::Cluster *, OverlapResult > OverlapList
void ExploreConnections(const pandora::Cluster *const pCluster, const bool ignoreUnavailable, pandora::ClusterList &clusterList1, pandora::ClusterList &clusterList2) const
Explore connections associated with a given cluster.
const OverlapList & GetOverlapList(const pandora::Cluster *const pCluster1) const
Get the overlap list for a specified cluster.
void RemoveCluster(const pandora::Cluster *const pCluster)
Remove entries from matrix corresponding to specified cluster.
ClusterNavigationMap m_clusterNavigationMap21
The cluster navigation map 2->1.
void Clear()
Clear overlap matrix.
std::unordered_map< const pandora::Cluster *, OverlapList > TheMatrix
const OverlapResult & GetOverlapResult(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2) const
Get the overlap result for a specified pair of clusters.
void GetUnambiguousElements(const bool ignoreUnavailable, ElementList &elementList) const
Get unambiguous elements.
const_iterator end() const
Returns an iterator referring to the past-the-end element in the overlap matrix.
void ReplaceOverlapResult(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, const OverlapResult &overlapResult)
SetReplace an existing overlap result.
void GetConnectedElements(const pandora::Cluster *const pCluster, const bool ignoreUnavailable, ElementList &elementList) const
Get a list of elements connected to a specified cluster.
TwoViewDeltaRayOverlapResult class.
StatusCodeException class.
std::vector< const Cluster * > ClusterVector
MANAGED_CONTAINER< const Cluster * > ClusterList