LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
TwoViewThreeDKinkTool class. More...
#include "TwoViewThreeDKinkTool.h"
Classes | |
class | Modification |
Modification class. More... | |
class | Particle |
Particle class. More... | |
Public Types | |
typedef TwoViewTransverseTracksAlgorithm::MatchingType::MatrixType | MatrixType |
typedef std::vector< MatrixType::ElementList::const_iterator > | IteratorList |
Public Member Functions | |
TwoViewThreeDKinkTool () | |
Constructor. More... | |
virtual | ~TwoViewThreeDKinkTool () |
Destructor. More... | |
bool | Run (TwoViewTransverseTracksAlgorithm *const pAlgorithm, MatrixType &overlapMatrix) |
Run the algorithm tool. More... | |
Private Types | |
typedef std::vector< Modification > | ModificationList |
Private Member Functions | |
void | GetModifications (TwoViewTransverseTracksAlgorithm *const pAlgorithm, const MatrixType &overlapMatrix, ModificationList &modificationList) const |
Get modification objects, identifying required splits and merges for clusters. More... | |
bool | PassesElementCuts (MatrixType::ElementList::const_iterator eIter, const pandora::ClusterSet &usedClusters) const |
Whether a provided (iterator to a) matrix element passes the selection cuts for overshoot identification. More... | |
void | SelectMatrixElements (MatrixType::ElementList::const_iterator eIter, const MatrixType::ElementList &elementList, const pandora::ClusterSet &usedClusters, IteratorList &iteratorList) const |
Select elements representing possible components of interest due to overshoots or undershoots in clustering. More... | |
void | GetIteratorListModifications (TwoViewTransverseTracksAlgorithm *const pAlgorithm, const IteratorList &iteratorList, ModificationList &modificationList) const |
Get modification objects for specific elements of the matrix, identifying required splits and merges for clusters. More... | |
bool | IsThreeDKink (TwoViewTransverseTracksAlgorithm *const pAlgorithm, const Particle &particle, const pandora::CartesianVector &splitPosition, const bool isALowestInX) const |
Whether the provided particle is consistent with being a kink, when examined in three dimensions at the provided split position. More... | |
float | GetXSamplingPoint (const pandora::CartesianVector &splitPosition1, const bool isForwardInX, const TwoDSlidingFitResult &fitResult1, const TwoDSlidingFitResult &fitResult2) const |
Get a sampling point in x that is common to sliding linear fit objects in two views. More... | |
bool | ApplyChanges (TwoViewTransverseTracksAlgorithm *const pAlgorithm, const ModificationList &modificationList) const |
Apply the changes cached in a modification list and update the matrix accordingly. More... | |
pandora::StatusCode | ReadSettings (const pandora::TiXmlHandle xmlHandle) |
Static Private Member Functions | |
static bool | IsALowestInX (const LArPointingCluster &pointingClusterA, const LArPointingCluster &pointingClusterB) |
Whether pointing cluster labelled A extends to lowest x positions (as opposed to that labelled B) More... | |
Private Attributes | |
float | m_minXOverlapFraction |
The min x overlap fraction value for particle creation. More... | |
float | m_minMatchingScore |
The min global matching score for particle creation. More... | |
float | m_minLocallyMatchedFraction |
The min locally matched fraction for particle creation. More... | |
float | m_minLongitudinalImpactParameter |
The min longitudinal impact parameter for connecting accompanying clusters. More... | |
int | m_nLayersForKinkSearch |
The number of sliding fit layers to step in the kink search. More... | |
float | m_additionalXStepForKinkSearch |
An additional (safety) step to tack-on when choosing x sampling. More... | |
float | m_maxTransverseImpactParameter |
The maximum transverse impact parameter for connecting broken clusters. More... | |
float | m_minImpactParameterCosTheta |
The minimum cos theta (angle between vertex directions) for connecting broken clusters. More... | |
float | m_cosThetaCutForKinkSearch |
The cos theta cut used for the kink search in three dimensions. More... | |
TwoViewThreeDKinkTool class.
Definition at line 21 of file TwoViewThreeDKinkTool.h.
|
inherited |
Definition at line 103 of file TwoViewTransverseTracksAlgorithm.h.
|
inherited |
Definition at line 102 of file TwoViewTransverseTracksAlgorithm.h.
|
private |
Definition at line 50 of file TwoViewThreeDKinkTool.h.
lar_content::TwoViewThreeDKinkTool::TwoViewThreeDKinkTool | ( | ) |
Constructor.
nCommonClusters | the number of common clusters to select |
Definition at line 23 of file TwoViewThreeDKinkTool.cc.
|
virtual |
|
private |
Apply the changes cached in a modification list and update the matrix accordingly.
pAlgorithm | address of the calling algorithm |
modificationList | the modification list |
Definition at line 179 of file TwoViewThreeDKinkTool.cc.
References lar_content::MatchingBaseAlgorithm::MakeClusterMerges(), lar_content::NViewTrackMatchingAlgorithm< T >::MakeClusterSplits(), and lar_content::LArClusterHelper::SortByNHits().
Referenced by Run().
|
private |
Get modification objects for specific elements of the matrix, identifying required splits and merges for clusters.
pAlgorithm | address of the calling algorithm |
iteratorList | list of iterators to relevant tensor elements |
modificationList | to be populated with modifications |
Definition at line 268 of file TwoViewThreeDKinkTool.cc.
References f, lar_content::NViewTrackMatchingAlgorithm< T >::GetCachedSlidingFitResult(), lar_content::LArPointingClusterHelper::GetClosestVertices(), lar_content::LArPointingClusterHelper::GetImpactParameters(), IsALowestInX(), IsThreeDKink(), lar_content::TwoViewThreeDKinkTool::Modification::m_affectedClusters, lar_content::TwoViewThreeDKinkTool::Modification::m_clusterMergeMap, m_maxTransverseImpactParameter, m_minImpactParameterCosTheta, m_minLongitudinalImpactParameter, lar_content::TwoViewThreeDKinkTool::Particle::m_pClusterA, lar_content::TwoViewThreeDKinkTool::Particle::m_pClusterB, lar_content::TwoViewThreeDKinkTool::Particle::m_pCommonCluster, and lar_content::TwoViewThreeDKinkTool::Modification::m_splitPositionMap.
Referenced by GetModifications().
|
private |
Get modification objects, identifying required splits and merges for clusters.
pAlgorithm | address of the calling algorithm |
overlapMatrix | the overlap matrix |
modificationList | to be populated with modifications |
Definition at line 131 of file TwoViewThreeDKinkTool.cc.
References lar_content::OverlapMatrix< T >::GetConnectedElements(), GetIteratorListModifications(), lar_content::OverlapMatrix< T >::GetSortedKeyClusters(), PassesElementCuts(), and SelectMatrixElements().
Referenced by Run().
|
private |
Get a sampling point in x that is common to sliding linear fit objects in two views.
splitPosition1 | the split position in view 1 |
isForwardInX | whether to work forwards (or backwards) in x |
fitResult1 | the sliding fit result in view 1 |
fitResult2 | the sliding fit result in view 2 |
Definition at line 80 of file TwoViewThreeDKinkTool.cc.
References f, lar_content::TwoDSlidingFitResult::GetGlobalFitPosition(), lar_content::TwoDSlidingFitResult::GetL(), lar_content::TwoDSlidingFitResult::GetLayer(), lar_content::TwoDSlidingFitResult::GetLocalPosition(), lar_content::TwoDSlidingFitResult::GetMaxLayer(), lar_content::TwoDSlidingFitResult::GetMinAndMaxX(), lar_content::TwoDSlidingFitResult::GetMinLayer(), m_additionalXStepForKinkSearch, and m_nLayersForKinkSearch.
Referenced by IsThreeDKink().
|
staticprivate |
Whether pointing cluster labelled A extends to lowest x positions (as opposed to that labelled B)
pointingClusterA | pointing cluster A |
pointingClusterB | pointing cluster B |
Definition at line 122 of file TwoViewThreeDKinkTool.cc.
References lar_content::LArPointingCluster::GetInnerVertex(), lar_content::LArPointingCluster::GetOuterVertex(), and lar_content::LArPointingCluster::Vertex::GetPosition().
Referenced by GetIteratorListModifications().
|
private |
Whether the provided particle is consistent with being a kink, when examined in three dimensions at the provided split position.
pAlgorithm | the calling algorithm |
particle | the particle |
splitPosition | the candidate split position |
isALowestInX | whether cluster associated with matrix element a extends to lowest x positions |
Definition at line 352 of file TwoViewThreeDKinkTool.cc.
References f, lar_content::NViewTrackMatchingAlgorithm< T >::GetCachedSlidingFitResult(), lar_content::LArClusterHelper::GetClusterHitType(), GetXSamplingPoint(), m_cosThetaCutForKinkSearch, lar_content::TwoViewThreeDKinkTool::Particle::m_pClusterA, lar_content::TwoViewThreeDKinkTool::Particle::m_pClusterB, lar_content::TwoViewThreeDKinkTool::Particle::m_pCommonCluster, and lar_content::LArGeometryHelper::MergeTwoPositions3D().
Referenced by GetIteratorListModifications().
|
private |
Whether a provided (iterator to a) matrix element passes the selection cuts for overshoot identification.
eIter | the iterator to the matrix element |
usedClusters | the list of used clusters |
Definition at line 58 of file TwoViewThreeDKinkTool.cc.
Referenced by GetModifications(), and SelectMatrixElements().
|
private |
Definition at line 419 of file TwoViewThreeDKinkTool.cc.
References m_additionalXStepForKinkSearch, m_cosThetaCutForKinkSearch, m_maxTransverseImpactParameter, m_minImpactParameterCosTheta, m_minLocallyMatchedFraction, m_minLongitudinalImpactParameter, m_minMatchingScore, m_minXOverlapFraction, and m_nLayersForKinkSearch.
|
virtual |
Run the algorithm tool.
pAlgorithm | address of the calling algorithm |
overlapMatrix | the overlap matrix |
Implements lar_content::TransverseMatrixTool.
Definition at line 44 of file TwoViewThreeDKinkTool.cc.
References ApplyChanges(), and GetModifications().
|
private |
Select elements representing possible components of interest due to overshoots or 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 228 of file TwoViewThreeDKinkTool.cc.
References PassesElementCuts().
Referenced by GetModifications().
|
private |
An additional (safety) step to tack-on when choosing x sampling.
Definition at line 168 of file TwoViewThreeDKinkTool.h.
Referenced by GetXSamplingPoint(), and ReadSettings().
|
private |
The cos theta cut used for the kink search in three dimensions.
Definition at line 171 of file TwoViewThreeDKinkTool.h.
Referenced by IsThreeDKink(), and ReadSettings().
|
private |
The maximum transverse impact parameter for connecting broken clusters.
Definition at line 169 of file TwoViewThreeDKinkTool.h.
Referenced by GetIteratorListModifications(), and ReadSettings().
|
private |
The minimum cos theta (angle between vertex directions) for connecting broken clusters.
Definition at line 170 of file TwoViewThreeDKinkTool.h.
Referenced by GetIteratorListModifications(), and ReadSettings().
|
private |
The min locally matched fraction for particle creation.
Definition at line 165 of file TwoViewThreeDKinkTool.h.
Referenced by ReadSettings().
|
private |
The min longitudinal impact parameter for connecting accompanying clusters.
Definition at line 166 of file TwoViewThreeDKinkTool.h.
Referenced by GetIteratorListModifications(), and ReadSettings().
|
private |
The min global matching score for particle creation.
Definition at line 164 of file TwoViewThreeDKinkTool.h.
Referenced by ReadSettings().
|
private |
The min x overlap fraction value for particle creation.
Definition at line 163 of file TwoViewThreeDKinkTool.h.
Referenced by ReadSettings().
|
private |
The number of sliding fit layers to step in the kink search.
Definition at line 167 of file TwoViewThreeDKinkTool.h.
Referenced by GetXSamplingPoint(), and ReadSettings().