LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
CrossedTrackSplittingAlgorithm class. More...
#include "CrossedTrackSplittingAlgorithm.h"
Public Member Functions | |
CrossedTrackSplittingAlgorithm () | |
Default constructor. More... | |
Protected Member Functions | |
virtual pandora::StatusCode | Run () |
Private Types | |
typedef KDTreeLinkerAlgo< const pandora::CaloHit *, 2 > | HitKDTree2D |
typedef KDTreeNodeInfoT< const pandora::CaloHit *, 2 > | HitKDNode2D |
typedef std::vector< HitKDNode2D > | HitKDNode2DList |
typedef std::unordered_map< const pandora::Cluster *, pandora::ClusterSet > | ClusterToClustersMap |
typedef std::unordered_map< const pandora::CaloHit *, const pandora::Cluster * > | HitToClusterMap |
Private Member Functions | |
pandora::StatusCode | ReadSettings (const pandora::TiXmlHandle xmlHandle) |
pandora::StatusCode | PreparationStep (const pandora::ClusterVector &clusterVector) |
Perform any preparatory actions, such as caching information for subsequent expensive calculations. More... | |
pandora::StatusCode | TidyUpStep () |
Tidy up any information cached in e.g. the preparation step. More... | |
pandora::StatusCode | FindBestSplitPosition (const TwoDSlidingFitResult &slidingFit1, const TwoDSlidingFitResult &slidingFit2, pandora::CartesianVector &splitPosition, pandora::CartesianVector &direction1, pandora::CartesianVector &direction2) const |
Find the best split position and direction for a pair of clusters. More... | |
void | FindCandidateSplitPositions (const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2, pandora::CartesianPointVector &candidateVector) const |
Find average positions of pairs of hits within a maximum separation. More... | |
Private Attributes | |
float | m_maxClusterSeparation |
maximum separation of two clusters More... | |
float | m_maxClusterSeparationSquared |
maximum separation of two clusters (squared) More... | |
float | m_minCosRelativeAngle |
maximum relative angle between tracks after un-crossing More... | |
float | m_searchRegion1D |
Search region, applied to each dimension, for look-up from kd-trees. More... | |
ClusterToClustersMap | m_nearbyClusters |
The nearby clusters map. More... | |
CrossedTrackSplittingAlgorithm class.
Definition at line 28 of file CrossedTrackSplittingAlgorithm.h.
|
private |
Definition at line 41 of file CrossedTrackSplittingAlgorithm.h.
|
private |
Definition at line 38 of file CrossedTrackSplittingAlgorithm.h.
|
private |
Definition at line 39 of file CrossedTrackSplittingAlgorithm.h.
|
private |
Definition at line 37 of file CrossedTrackSplittingAlgorithm.h.
|
private |
Definition at line 42 of file CrossedTrackSplittingAlgorithm.h.
lar_content::CrossedTrackSplittingAlgorithm::CrossedTrackSplittingAlgorithm | ( | ) |
Default constructor.
Definition at line 23 of file CrossedTrackSplittingAlgorithm.cc.
|
privatevirtual |
Find the best split position and direction for a pair of clusters.
slidingFit1 | the sliding linear fit to the first cluster |
slidingFit2 | the sliding linear fit to the second cluster |
splitPosition | the output split position |
direction1 | the output direction of the first new cluster |
direction2 | the output direction of the second new cluster |
Implements lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm.
Definition at line 86 of file CrossedTrackSplittingAlgorithm.cc.
References a1, a2, f, FindCandidateSplitPositions(), lar_content::LArClusterHelper::GetClosestDistance(), lar_content::TwoDSlidingFitResult::GetCluster(), lar_content::TwoDSlidingFitResult::GetGlobalFitPosition(), lar_content::TwoDSlidingFitResult::GetGlobalFitProjection(), lar_content::TwoDSlidingFitResult::GetGlobalMaxLayerPosition(), lar_content::TwoDSlidingFitResult::GetGlobalMinLayerPosition(), lar_content::LArPointingClusterHelper::GetIntersection(), lar_content::TwoDSlidingFitResult::GetLayerFitHalfWindowLength(), lar_content::TwoDSlidingFitResult::GetLocalPosition(), m_maxClusterSeparation, m_minCosRelativeAngle, m_nearbyClusters, t1, and t2.
|
private |
Find average positions of pairs of hits within a maximum separation.
pCluster1 | the first cluster |
pCluster2 | the second cluster |
candidateVector | to receive the average positions |
Definition at line 241 of file CrossedTrackSplittingAlgorithm.cc.
References lar_content::LArClusterHelper::GetClosestPosition(), m_maxClusterSeparationSquared, and lar_content::LArClusterHelper::SortHitsByPosition().
Referenced by FindBestSplitPosition().
|
privatevirtual |
Perform any preparatory actions, such as caching information for subsequent expensive calculations.
clusterVector | the cluster vector |
Reimplemented from lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm.
Definition at line 33 of file CrossedTrackSplittingAlgorithm.cc.
References lar_content::KDTreeLinkerAlgo< DATA, DIM >::build(), lar_content::build_2d_kd_search_region(), lar_content::fill_and_bound_2d_kd_tree(), m_nearbyClusters, m_searchRegion1D, and lar_content::KDTreeLinkerAlgo< DATA, DIM >::search().
|
privatevirtual |
Reimplemented from lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm.
Definition at line 274 of file CrossedTrackSplittingAlgorithm.cc.
References m_maxClusterSeparation, m_maxClusterSeparationSquared, m_minCosRelativeAngle, m_searchRegion1D, and lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::ReadSettings().
|
protectedvirtualinherited |
Definition at line 29 of file TwoDSlidingFitSplittingAndSwitchingAlgorithm.cc.
References lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::BuildSlidingFitResultMap(), f, lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::FindBestSplitPosition(), lar_content::TwoDSlidingFitResult::GetCluster(), lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::GetListOfCleanClusters(), lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::PreparationStep(), lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::ReplaceClusters(), and lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm::TidyUpStep().
|
privatevirtual |
Tidy up any information cached in e.g. the preparation step.
Reimplemented from lar_content::TwoDSlidingFitSplittingAndSwitchingAlgorithm.
Definition at line 77 of file CrossedTrackSplittingAlgorithm.cc.
References m_nearbyClusters.
|
private |
maximum separation of two clusters
Definition at line 60 of file CrossedTrackSplittingAlgorithm.h.
Referenced by FindBestSplitPosition(), and ReadSettings().
|
private |
maximum separation of two clusters (squared)
Definition at line 61 of file CrossedTrackSplittingAlgorithm.h.
Referenced by FindCandidateSplitPositions(), and ReadSettings().
|
private |
maximum relative angle between tracks after un-crossing
Definition at line 62 of file CrossedTrackSplittingAlgorithm.h.
Referenced by FindBestSplitPosition(), and ReadSettings().
|
private |
The nearby clusters map.
Definition at line 65 of file CrossedTrackSplittingAlgorithm.h.
Referenced by FindBestSplitPosition(), PreparationStep(), and TidyUpStep().
|
private |
Search region, applied to each dimension, for look-up from kd-trees.
Definition at line 64 of file CrossedTrackSplittingAlgorithm.h.
Referenced by PreparationStep(), and ReadSettings().