LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
CosmicRaySplittingAlgorithm class. More...
#include "CosmicRaySplittingAlgorithm.h"
Public Member Functions | |
CosmicRaySplittingAlgorithm () | |
Default constructor. More... | |
Private Member Functions | |
pandora::StatusCode | Run () |
pandora::StatusCode | ReadSettings (const pandora::TiXmlHandle xmlHandle) |
void | GetListOfCleanClusters (const pandora::ClusterList *const pClusterList, pandora::ClusterVector &clusterVector) const |
Populate cluster vector with subset of cluster list, containing clusters judged to be clean. More... | |
void | BuildSlidingFitResultMap (const pandora::ClusterVector &clusterVector, TwoDSlidingFitResultMap &slidingFitResultMap) const |
Build the map of sliding fit results. More... | |
pandora::StatusCode | FindBestSplitPosition (const TwoDSlidingFitResult &slidingFitResult, pandora::CartesianVector &splitPosition, pandora::CartesianVector &splitDirection1, pandora::CartesianVector &splitDirection2) const |
Find the position of greatest scatter along a sliding linear fit. More... | |
pandora::StatusCode | ConfirmSplitPosition (const TwoDSlidingFitResult &branchSlidingFitResult, const TwoDSlidingFitResult &replacementSlidingFitResult, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2, float &lengthSquared1, float &lengthSquared2) const |
Find a second replacement cluster that aligns with the scatter of the first branch cluster. More... | |
pandora::StatusCode | PerformSingleSplit (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &forwardDirection, const pandora::CartesianVector &backwardDirection) const |
Split a branch cluster for case of one replacement cluster. More... | |
pandora::StatusCode | PerformDoubleSplit (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster1, const pandora::Cluster *const pReplacementCluster2, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2) const |
Split a branch cluster for case of two replacement clusters. More... | |
void | GetCaloHitListToMove (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &forwardDirection, const pandora::CartesianVector &backwardDirection, pandora::CaloHitList &caloHitList) const |
Get list of calo hits to move in order to split a branch cluster into two segments for case of one replacement cluster. More... | |
void | GetCaloHitListsToMove (const pandora::Cluster *const pBranchCluster, const pandora::CartesianVector &splitPosition, const pandora::CartesianVector &splitDirection1, const pandora::CartesianVector &splitDirection2, pandora::CaloHitList &caloHitList1, pandora::CaloHitList &caloHitList2) const |
Get lists of calo hits to move in order to split a branch cluster into two segments for case of two replacement clusters. More... | |
bool | IdentifyCrossedTracks (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster1, const pandora::Cluster *const pReplacementCluster2, const pandora::CartesianVector &splitPosition) const |
Identify crossed tracks formed from the branch cluster and its replacement cluster. More... | |
pandora::StatusCode | GetCaloHitListToKeep (const pandora::Cluster *const pBranchCluster, const pandora::CaloHitList &caloHitListToMove, pandora::CaloHitList &caloHitListToKeep) const |
Split the branch cluster and add hits to the replacement cluster. More... | |
pandora::StatusCode | SplitCluster (const pandora::Cluster *const pBranchCluster, const pandora::Cluster *const pReplacementCluster, const pandora::CaloHitList &caloHitListToMove) const |
Split the branch cluster and add hits to the replacement cluster. More... | |
Private Attributes | |
float | m_clusterMinLength |
minimum length of clusters for this algorithm More... | |
unsigned int | m_halfWindowLayers |
number of layers to use for half-window of sliding fit More... | |
float | m_samplingPitch |
sampling pitch for walking along sliding linear fit More... | |
float | m_maxCosSplittingAngle |
smallest scatter angle allowed when splitting cluster More... | |
float | m_minCosMergingAngle |
largest relative angle allowed when merging clusters More... | |
float | m_maxTransverseDisplacement |
maximum transverse displacement of associated clusters More... | |
float | m_maxLongitudinalDisplacement |
maximum longitudinal displacement of associated clusters More... | |
float | m_maxLongitudinalDisplacementSquared |
longitudinal displacement squared More... | |
CosmicRaySplittingAlgorithm class.
Definition at line 21 of file CosmicRaySplittingAlgorithm.h.
lar_content::CosmicRaySplittingAlgorithm::CosmicRaySplittingAlgorithm | ( | ) |
Default constructor.
Definition at line 22 of file CosmicRaySplittingAlgorithm.cc.
|
private |
Build the map of sliding fit results.
clusterVector | the input cluster vector |
slidingFitResultMap | the output sliding fit result map |
Definition at line 182 of file CosmicRaySplittingAlgorithm.cc.
References lar_content::LArClusterHelper::GetClusterHitType(), lar_content::LArGeometryHelper::GetWirePitch(), and m_halfWindowLayers.
Referenced by Run().
|
private |
Find a second replacement cluster that aligns with the scatter of the first branch cluster.
branchSlidingFitResult | the sliding fit result for the branch cluster |
replacementSlidingFitResult | the sliding fit result for the replacement cluster |
splitPosition | the candidate split position on the branch cluster |
splitDirection1 | the first track direction just above the split position |
splitDirection2 | the second track direction just below the split position |
lengthSquared1 | figure of merit for association with first track direction |
lengthSquared2 | figure of merit for association with second track direction |
Definition at line 270 of file CosmicRaySplittingAlgorithm.cc.
References f, lar_content::LArClusterHelper::GetClosestDistance(), lar_content::TwoDSlidingFitResult::GetCluster(), lar_content::TwoDSlidingFitResult::GetGlobalMaxLayerDirection(), lar_content::TwoDSlidingFitResult::GetGlobalMaxLayerPosition(), lar_content::TwoDSlidingFitResult::GetGlobalMinLayerDirection(), lar_content::TwoDSlidingFitResult::GetGlobalMinLayerPosition(), lar_content::LArPointingClusterHelper::GetImpactParameters(), m_maxLongitudinalDisplacement, m_maxTransverseDisplacement, and m_minCosMergingAngle.
Referenced by Run().
|
private |
Find the position of greatest scatter along a sliding linear fit.
slidingFitResult | the input sliding linear fit result |
splitPosition | the position of greatest scatter |
splitDirection1 | the direction vector just above the scatter position |
splitDirection2 | the direction vector just below the scatter position |
Definition at line 207 of file CosmicRaySplittingAlgorithm.cc.
References f, lar_content::TwoDSlidingFitResult::GetGlobalFitDirection(), lar_content::TwoDSlidingFitResult::GetGlobalFitPosition(), lar_content::TwoDSlidingFitResult::GetGlobalMaxLayerPosition(), lar_content::TwoDSlidingFitResult::GetGlobalMinLayerPosition(), lar_content::TwoDSlidingFitResult::GetLayerFitHalfWindowLength(), lar_content::TwoDSlidingFitResult::GetLocalPosition(), m_maxCosSplittingAngle, m_samplingPitch, and n.
Referenced by Run().
|
private |
Get lists of calo hits to move in order to split a branch cluster into two segments for case of two replacement clusters.
pBranchCluster | the branch cluster |
splitPosition | the split position |
splitDirection1 | the direction of the branch cluster just above the split position |
splitDirection2 | the direction of the branch cluster just below the split position |
caloHitList1 | the first segment to be split from the branch cluster |
caloHitList2 | the second segment to be split from the branch cluster |
Definition at line 449 of file CosmicRaySplittingAlgorithm.cc.
Referenced by PerformDoubleSplit().
|
private |
Split the branch cluster and add hits to the replacement cluster.
pBranchCluster | the branch cluster |
caloHitListToMove | the list of hits to be removed from the branch cluster and added to the replacement cluster |
caloHitListToKeep | to receive the list of calo hits to keep |
Definition at line 491 of file CosmicRaySplittingAlgorithm.cc.
Referenced by PerformDoubleSplit(), and PerformSingleSplit().
|
private |
Get list of calo hits to move in order to split a branch cluster into two segments for case of one replacement cluster.
pBranchCluster | the branch cluster |
pReplacementCluster | the replacement cluster |
splitPosition | the split position |
forwardDirection | the direction of the branch cluster just above the split position |
backwardDirection | the direction of the branch cluster just below the split position |
caloHitList | the output hits to be removed from the branch cluster |
Definition at line 397 of file CosmicRaySplittingAlgorithm.cc.
References f, and lar_content::LArClusterHelper::GetClosestPosition().
Referenced by PerformSingleSplit().
|
private |
Populate cluster vector with subset of cluster list, containing clusters judged to be clean.
pClusterList | address of the cluster list |
clusterVector | to receive the populated cluster vector |
Definition at line 165 of file CosmicRaySplittingAlgorithm.cc.
References lar_content::LArClusterHelper::GetLengthSquared(), m_clusterMinLength, and lar_content::LArClusterHelper::SortByNHits().
Referenced by Run().
|
private |
Identify crossed tracks formed from the branch cluster and its replacement cluster.
pBranchCluster | the branch cluster |
pReplacementCluster1 | the first replacement cluster |
pReplacementCluster2 | the second replacement cluster |
splitPosition | the split position |
Definition at line 474 of file CosmicRaySplittingAlgorithm.cc.
References f, lar_content::LArClusterHelper::GetClosestPosition(), and lar_content::LArClusterHelper::GetExtremalCoordinates().
Referenced by Run().
|
private |
Split a branch cluster for case of two replacement clusters.
pBranchCluster | the branch cluster |
pReplacementCluster1 | the first replacement cluster |
pReplacementCluster2 | the second replacement cluster |
splitPosition | the split position |
splitDirection1 | the direction of the branch cluster just above the split position |
splitDirection2 | the direction of the branch cluster just below the split position |
Definition at line 371 of file CosmicRaySplittingAlgorithm.cc.
References GetCaloHitListsToMove(), GetCaloHitListToKeep(), and SplitCluster().
Referenced by Run().
|
private |
Split a branch cluster for case of one replacement cluster.
pBranchCluster | the branch cluster |
pReplacementCluster | the replacement cluster |
splitPosition | the split position |
forwardDirection | the direction of the branch cluster just above the split position |
backwardDirection | the direction of the branch cluster just below the split position |
Definition at line 354 of file CosmicRaySplittingAlgorithm.cc.
References GetCaloHitListToKeep(), GetCaloHitListToMove(), and SplitCluster().
Referenced by Run().
|
private |
Definition at line 531 of file CosmicRaySplittingAlgorithm.cc.
References m_clusterMinLength, m_halfWindowLayers, m_maxCosSplittingAngle, m_maxLongitudinalDisplacement, m_maxLongitudinalDisplacementSquared, m_maxTransverseDisplacement, m_minCosMergingAngle, and m_samplingPitch.
|
private |
Definition at line 36 of file CosmicRaySplittingAlgorithm.cc.
References BuildSlidingFitResultMap(), ConfirmSplitPosition(), f, FindBestSplitPosition(), lar_content::TwoDSlidingFitResult::GetCluster(), GetListOfCleanClusters(), IdentifyCrossedTracks(), if(), m_maxLongitudinalDisplacementSquared, PerformDoubleSplit(), and PerformSingleSplit().
|
private |
Split the branch cluster and add hits to the replacement cluster.
pBranchCluster | the branch cluster |
pReplacementCluster | the replacement cluster |
caloHitListToMove | the list of hits to be removed from the branch cluster and added to the replacement cluster |
Definition at line 513 of file CosmicRaySplittingAlgorithm.cc.
Referenced by PerformDoubleSplit(), and PerformSingleSplit().
|
private |
minimum length of clusters for this algorithm
Definition at line 161 of file CosmicRaySplittingAlgorithm.h.
Referenced by GetListOfCleanClusters(), and ReadSettings().
|
private |
number of layers to use for half-window of sliding fit
Definition at line 162 of file CosmicRaySplittingAlgorithm.h.
Referenced by BuildSlidingFitResultMap(), and ReadSettings().
|
private |
smallest scatter angle allowed when splitting cluster
Definition at line 164 of file CosmicRaySplittingAlgorithm.h.
Referenced by FindBestSplitPosition(), and ReadSettings().
|
private |
maximum longitudinal displacement of associated clusters
Definition at line 167 of file CosmicRaySplittingAlgorithm.h.
Referenced by ConfirmSplitPosition(), and ReadSettings().
|
private |
longitudinal displacement squared
Definition at line 168 of file CosmicRaySplittingAlgorithm.h.
Referenced by ReadSettings(), and Run().
|
private |
maximum transverse displacement of associated clusters
Definition at line 166 of file CosmicRaySplittingAlgorithm.h.
Referenced by ConfirmSplitPosition(), and ReadSettings().
|
private |
largest relative angle allowed when merging clusters
Definition at line 165 of file CosmicRaySplittingAlgorithm.h.
Referenced by ConfirmSplitPosition(), and ReadSettings().
|
private |
sampling pitch for walking along sliding linear fit
Definition at line 163 of file CosmicRaySplittingAlgorithm.h.
Referenced by FindBestSplitPosition(), and ReadSettings().