LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
SplitShowersTool class. More...
#include "SplitShowersTool.h"
Public Types | |
typedef ThreeViewShowersAlgorithm::MatchingType::TensorType | TensorType |
typedef std::vector< TensorType::ElementList::const_iterator > | IteratorList |
Public Member Functions | |
SplitShowersTool () | |
Default constructor. More... | |
bool | Run (ThreeViewShowersAlgorithm *const pAlgorithm, TensorType &overlapTensor) |
Run the algorithm tool. More... | |
Private Member Functions | |
void | FindSplitShowers (ThreeViewShowersAlgorithm *const pAlgorithm, const TensorType &overlapTensor, ClusterMergeMap &clusterMergeMap) const |
Find split showers, using information from the overlap tensor. More... | |
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 identification. More... | |
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. More... | |
void | FindShowerMerges (ThreeViewShowersAlgorithm *const pAlgorithm, const IteratorList &iteratorList, pandora::ClusterSet &usedClusters, ClusterMergeMap &clusterMergeMap) const |
Get cluster merges specific elements of the tensor. More... | |
bool | CheckClusterProximities (ThreeViewShowersAlgorithm *const pAlgorithm, const pandora::ClusterList &clusterList) const |
Check the clusters in a provided cluster list are in suitable proximity for merging. More... | |
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, if available. More... | |
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. More... | |
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 split shower) More... | |
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. More... | |
bool | ApplyChanges (ThreeViewShowersAlgorithm *const pAlgorithm, const ClusterMergeMap &clusterMergeMap) const |
Apply the changes cached in a cluster merge map and update the tensor accordingly. More... | |
pandora::StatusCode | ReadSettings (const pandora::TiXmlHandle xmlHandle) |
Private Attributes | |
unsigned int | m_nCommonClusters |
The number of common clusters. More... | |
float | m_minMatchedFraction |
The min matched sampling point fraction for use as a key tensor element. More... | |
unsigned int | m_minMatchedSamplingPoints |
The min number of matched sampling points for use as a key tensor element. More... | |
bool | m_checkClusterProximities |
Whether to check the proximities of the candidate split shower clusters. More... | |
float | m_maxClusterSeparation |
The maximum separation for clusters to be merged. More... | |
bool | m_checkClusterVertexRelations |
Whether to check the consistency of the clusters with the event vertex. More... | |
float | m_minVertexLongitudinalDistance |
Vertex association check: min longitudinal distance cut. More... | |
float | m_maxVertexLongitudinalDistance |
Vertex association check: max longitudinal distance cut. More... | |
float | m_maxVertexTransverseDistance |
Vertex association check: max transverse distance cut. More... | |
float | m_vertexAngularAllowance |
Vertex association check: pointing angular allowance in degrees. More... | |
unsigned int | m_maxVertexAssociations |
The maximum number of vertex associations for clusters to be merged. More... | |
bool | m_checkClusterSplitPositions |
Whether to check the cluster split positions, if there are splits in multiple views. More... | |
float | m_vetoMergeXDifference |
The x distance between split positions in two views below which may refuse a merge. More... | |
float | m_vetoMergeXOverlap |
The x overlap between candidate cluster sliding fits below which may refuse a merge. More... | |
SplitShowersTool class.
Definition at line 19 of file SplitShowersTool.h.
|
inherited |
Definition at line 175 of file ThreeViewShowersAlgorithm.h.
|
inherited |
Definition at line 174 of file ThreeViewShowersAlgorithm.h.
lar_content::SplitShowersTool::SplitShowersTool | ( | ) |
Default constructor.
Definition at line 24 of file SplitShowersTool.cc.
|
private |
Apply the changes cached in a cluster merge map and update the tensor accordingly.
pAlgorithm | address of the calling algorithm |
clusterMergeMap | the cluster merge map |
Definition at line 366 of file SplitShowersTool.cc.
References lar_content::MatchingBaseAlgorithm::MakeClusterMerges(), and lar_content::LArClusterHelper::SortByNHits().
Referenced by Run().
|
private |
Check the clusters in a provided cluster list are in suitable proximity for merging.
pAlgorithm | address of the calling algorithm |
clusterList | the cluster list |
Definition at line 221 of file SplitShowersTool.cc.
References lar_content::LArClusterHelper::GetClosestDistance(), and m_maxClusterSeparation.
Referenced by FindShowerMerges().
|
private |
Check the consistency of the split positions in the provided u, v and w cluster lists.
pAlgorithm | address of the calling algorithm |
clusterListU | the u cluster list |
clusterListV | the v cluster list |
clusterListW | the w cluster list |
Definition at line 288 of file SplitShowersTool.cc.
References f, GetSplitXDetails(), m_vetoMergeXDifference, and m_vetoMergeXOverlap.
Referenced by FindShowerMerges().
|
private |
Check the consistency of the clusters in a provided cluster list with the event vertex, if available.
pAlgorithm | address of the calling algorithm |
clusterList | the cluster list |
Definition at line 245 of file SplitShowersTool.cc.
References lar_content::ThreeViewShowersAlgorithm::GetCachedSlidingFitResult(), lar_content::LArClusterHelper::GetClusterHitType(), lar_content::TwoDSlidingShowerFitResult::GetShowerFitResult(), lar_content::LArPointingClusterHelper::IsEmission(), lar_content::LArPointingClusterHelper::IsNode(), m_maxVertexAssociations, m_maxVertexLongitudinalDistance, m_maxVertexTransverseDistance, m_minVertexLongitudinalDistance, m_vertexAngularAllowance, and lar_content::LArGeometryHelper::ProjectPosition().
Referenced by FindShowerMerges().
|
private |
Get cluster merges specific elements of the tensor.
pAlgorithm | address of the calling algorithm |
iteratorList | list of iterators to relevant tensor elements |
usedClusters | the list of used clusters |
clusterMergeMap | to be populated with cluster merges |
Definition at line 149 of file SplitShowersTool.cc.
References CheckClusterProximities(), CheckClusterSplitPositions(), CheckClusterVertexRelations(), m_checkClusterProximities, m_checkClusterSplitPositions, m_checkClusterVertexRelations, m_nCommonClusters, and SpecifyClusterMerges().
Referenced by FindSplitShowers().
|
private |
Find split showers, using information from the overlap tensor.
pAlgorithm | address of the calling algorithm |
overlapTensor | the overlap tensor |
clusterMergeMap | to receive the list of cluster merges |
Definition at line 57 of file SplitShowersTool.cc.
References FindShowerMerges(), lar_content::OverlapTensor< T >::GetConnectedElements(), lar_content::OverlapTensor< T >::GetSortedKeyClusters(), PassesElementCuts(), and SelectTensorElements().
Referenced by Run().
|
private |
Get the x coordinate representing the midpoint between two clusters (hypothesis: clusters represent a split shower)
pAlgorithm | address of the calling algorithm |
pClusterA | the address of cluster A |
pClusterB | the address of cluster B |
splitXPosition | to receive the split position estimate |
overlapX | to receive the overlap estimate |
Definition at line 317 of file SplitShowersTool.cc.
References f, lar_content::ThreeViewShowersAlgorithm::GetCachedSlidingFitResult(), and lar_content::TwoDSlidingShowerFitResult::GetShowerFitResult().
Referenced by CheckClusterSplitPositions().
|
private |
Whether a provided (iterator to a) tensor element passes the selection cuts for undershoots identification.
eIter | the iterator to the tensor element |
usedClusters | the list of used clusters |
Definition at line 93 of file SplitShowersTool.cc.
References m_minMatchedFraction, and m_minMatchedSamplingPoints.
Referenced by FindSplitShowers(), and SelectTensorElements().
|
private |
Definition at line 394 of file SplitShowersTool.cc.
References m_checkClusterProximities, m_checkClusterSplitPositions, m_checkClusterVertexRelations, m_maxClusterSeparation, m_maxVertexAssociations, m_maxVertexLongitudinalDistance, m_maxVertexTransverseDistance, m_minMatchedFraction, m_minMatchedSamplingPoints, m_minVertexLongitudinalDistance, m_nCommonClusters, m_vertexAngularAllowance, m_vetoMergeXDifference, and m_vetoMergeXOverlap.
|
virtual |
Run the algorithm tool.
pAlgorithm | address of the calling algorithm |
overlapTensor | the overlap tensor |
Implements lar_content::ShowerTensorTool.
Definition at line 44 of file SplitShowersTool.cc.
References ApplyChanges(), and FindSplitShowers().
|
private |
Select elements representing possible components of interest due to undershoots in clustering.
eIter | iterator to a candidate element |
elementList | the provided element list |
usedClusters | the list of used clusters |
iteratorList | to receive a list of iterators to relevant elements |
Definition at line 109 of file SplitShowersTool.cc.
References m_nCommonClusters, and PassesElementCuts().
Referenced by FindSplitShowers().
|
private |
Populate the cluster merge map, based on the information contained in the provided cluster list.
pAlgorithm | address of the calling algorithm |
clusterList | the cluster list |
clusterMergeMap | to receive the populated cluster merge map |
Definition at line 344 of file SplitShowersTool.cc.
References lar_content::ThreeViewShowersAlgorithm::GetCachedSlidingFitResult(), and lar_content::TwoDSlidingShowerFitResult::GetShowerFitResult().
Referenced by FindShowerMerges().
|
private |
Whether to check the proximities of the candidate split shower clusters.
Definition at line 133 of file SplitShowersTool.h.
Referenced by FindShowerMerges(), and ReadSettings().
|
private |
Whether to check the cluster split positions, if there are splits in multiple views.
Definition at line 143 of file SplitShowersTool.h.
Referenced by FindShowerMerges(), and ReadSettings().
|
private |
Whether to check the consistency of the clusters with the event vertex.
Definition at line 136 of file SplitShowersTool.h.
Referenced by FindShowerMerges(), and ReadSettings().
|
private |
The maximum separation for clusters to be merged.
Definition at line 134 of file SplitShowersTool.h.
Referenced by CheckClusterProximities(), and ReadSettings().
|
private |
The maximum number of vertex associations for clusters to be merged.
Definition at line 141 of file SplitShowersTool.h.
Referenced by CheckClusterVertexRelations(), and ReadSettings().
|
private |
Vertex association check: max longitudinal distance cut.
Definition at line 138 of file SplitShowersTool.h.
Referenced by CheckClusterVertexRelations(), and ReadSettings().
|
private |
Vertex association check: max transverse distance cut.
Definition at line 139 of file SplitShowersTool.h.
Referenced by CheckClusterVertexRelations(), and ReadSettings().
|
private |
The min matched sampling point fraction for use as a key tensor element.
Definition at line 130 of file SplitShowersTool.h.
Referenced by PassesElementCuts(), and ReadSettings().
|
private |
The min number of matched sampling points for use as a key tensor element.
Definition at line 131 of file SplitShowersTool.h.
Referenced by PassesElementCuts(), and ReadSettings().
|
private |
Vertex association check: min longitudinal distance cut.
Definition at line 137 of file SplitShowersTool.h.
Referenced by CheckClusterVertexRelations(), and ReadSettings().
|
private |
The number of common clusters.
Definition at line 129 of file SplitShowersTool.h.
Referenced by FindShowerMerges(), ReadSettings(), and SelectTensorElements().
|
private |
Vertex association check: pointing angular allowance in degrees.
Definition at line 140 of file SplitShowersTool.h.
Referenced by CheckClusterVertexRelations(), and ReadSettings().
|
private |
The x distance between split positions in two views below which may refuse a merge.
Definition at line 144 of file SplitShowersTool.h.
Referenced by CheckClusterSplitPositions(), and ReadSettings().
|
private |
The x overlap between candidate cluster sliding fits below which may refuse a merge.
Definition at line 145 of file SplitShowersTool.h.
Referenced by CheckClusterSplitPositions(), and ReadSettings().