Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
SplitShowersTool.h
Go to the documentation of this file.
1
8#ifndef SPLIT_SHOWERS_TOOL_H
9#define SPLIT_SHOWERS_TOOL_H 1
10
12
13namespace lar_content
14{
15
20{
21public:
26
27 bool Run(ThreeViewShowersAlgorithm *const pAlgorithm, TensorType &overlapTensor);
28
29private:
37 void FindSplitShowers(ThreeViewShowersAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ClusterMergeMap &clusterMergeMap) const;
38
45 bool PassesElementCuts(TensorType::ElementList::const_iterator eIter, const pandora::ClusterSet &usedClusters) const;
46
55 void SelectTensorElements(TensorType::ElementList::const_iterator eIter, const TensorType::ElementList &elementList,
56 const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const;
57
66 void FindShowerMerges(ThreeViewShowersAlgorithm *const pAlgorithm, const IteratorList &iteratorList, pandora::ClusterSet &usedClusters,
67 ClusterMergeMap &clusterMergeMap) const;
68
75 bool CheckClusterProximities(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList) const;
76
83 bool CheckClusterVertexRelations(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList) const;
84
93 bool CheckClusterSplitPositions(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterListU,
94 const pandora::ClusterList &clusterListV, const pandora::ClusterList &clusterListW) const;
95
105 void GetSplitXDetails(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::Cluster *const pClusterA,
106 const pandora::Cluster *const pClusterB, float &splitXPosition, float &overlapX) const;
107
115 void SpecifyClusterMerges(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList, ClusterMergeMap &clusterMergeMap) const;
116
125 bool ApplyChanges(ThreeViewShowersAlgorithm *const pAlgorithm, const ClusterMergeMap &clusterMergeMap) const;
126
128
129 unsigned int m_nCommonClusters;
132
135
142
146};
147
148} // namespace lar_content
149
150#endif // #ifndef SPLIT_SHOWERS_TOOL_H
Header file for the three view showers algorithm class.
std::vector< TensorType::ElementList::const_iterator > IteratorList
ThreeViewShowersAlgorithm::MatchingType::TensorType TensorType
SplitShowersTool class.
float m_vetoMergeXOverlap
The x overlap between candidate cluster sliding fits below which may refuse a merge.
void SelectTensorElements(TensorType::ElementList::const_iterator eIter, const TensorType::ElementList &elementList, const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const
Select elements representing possible components of interest due to undershoots in clustering.
float m_maxVertexTransverseDistance
Vertex association check: max transverse distance cut.
float m_minVertexLongitudinalDistance
Vertex association check: min longitudinal distance cut.
float m_minMatchedFraction
The min matched sampling point fraction for use as a key tensor element.
void FindShowerMerges(ThreeViewShowersAlgorithm *const pAlgorithm, const IteratorList &iteratorList, pandora::ClusterSet &usedClusters, ClusterMergeMap &clusterMergeMap) const
Get cluster merges specific elements of the tensor.
bool ApplyChanges(ThreeViewShowersAlgorithm *const pAlgorithm, const ClusterMergeMap &clusterMergeMap) const
Apply the changes cached in a cluster merge map and update the tensor accordingly.
float m_vertexAngularAllowance
Vertex association check: pointing angular allowance in degrees.
unsigned int m_minMatchedSamplingPoints
The min number of matched sampling points for use as a key tensor element.
unsigned int m_maxVertexAssociations
The maximum number of vertex associations for clusters to be merged.
bool m_checkClusterSplitPositions
Whether to check the cluster split positions, if there are splits in multiple views.
float m_maxVertexLongitudinalDistance
Vertex association check: max longitudinal distance cut.
bool CheckClusterVertexRelations(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList) const
Check the consistency of the clusters in a provided cluster list with the event vertex,...
SplitShowersTool()
Default constructor.
bool m_checkClusterVertexRelations
Whether to check the consistency of the clusters with the event vertex.
bool PassesElementCuts(TensorType::ElementList::const_iterator eIter, const pandora::ClusterSet &usedClusters) const
Whether a provided (iterator to a) tensor element passes the selection cuts for undershoots identific...
float m_vetoMergeXDifference
The x distance between split positions in two views below which may refuse a merge.
bool Run(ThreeViewShowersAlgorithm *const pAlgorithm, TensorType &overlapTensor)
Run the algorithm tool.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
void FindSplitShowers(ThreeViewShowersAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ClusterMergeMap &clusterMergeMap) const
Find split showers, using information from the overlap tensor.
void GetSplitXDetails(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::Cluster *const pClusterA, const pandora::Cluster *const pClusterB, float &splitXPosition, float &overlapX) const
Get the x coordinate representing the midpoint between two clusters (hypothesis: clusters represent a...
bool CheckClusterSplitPositions(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterListU, const pandora::ClusterList &clusterListV, const pandora::ClusterList &clusterListW) const
Check the consistency of the split positions in the provided u, v and w cluster lists.
float m_maxClusterSeparation
The maximum separation for clusters to be merged.
bool m_checkClusterProximities
Whether to check the proximities of the candidate split shower clusters.
void SpecifyClusterMerges(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList, ClusterMergeMap &clusterMergeMap) const
Populate the cluster merge map, based on the information contained in the provided cluster list.
bool CheckClusterProximities(ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList) const
Check the clusters in a provided cluster list are in suitable proximity for merging.
unsigned int m_nCommonClusters
The number of common clusters.
Cluster class.
Definition Cluster.h:31
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterMergeMap
MANAGED_CONTAINER< const Cluster * > ClusterList
std::unordered_set< const Cluster * > ClusterSet
StatusCode
The StatusCode enum.