8#ifndef LAR_PARTICLE_RECOVERY_ALGORITHM_H
9#define LAR_PARTICLE_RECOVERY_ALGORITHM_H 1
13#include <unordered_map>
137 const pandora::Cluster *
const pCluster2,
const float xMin2,
const float xMax2,
float &xOverlapFraction1,
float &xOverlapFraction2)
const;
Header file for the algorithm class.
SimpleOverlapTensor class.
ClusterNavigationMap m_clusterNavigationMapUV
The cluster navigation map U->V.
void GetConnectedElements(const pandora::Cluster *const pCluster, const bool ignoreUnavailable, pandora::ClusterList &clusterListU, pandora::ClusterList &clusterListV, pandora::ClusterList &clusterListW) const
Get elements connected to a specified cluster.
ClusterNavigationMap m_clusterNavigationMapWU
The cluster navigation map W->U.
std::unordered_map< const pandora::Cluster *, pandora::ClusterList > ClusterNavigationMap
void AddAssociation(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2)
Add an association between two clusters to the simple overlap tensor.
ClusterNavigationMap m_clusterNavigationMapVW
The cluster navigation map V->W.
const pandora::ClusterList & GetKeyClusters() const
Get the list of key clusters.
pandora::ClusterList m_keyClusters
The list of key clusters.
ParticleRecoveryAlgorithm class.
float m_minClusterXSpan
The min x span required in order to consider a cluster.
std::string m_outputPfoListName
The output pfo list name.
unsigned int m_minClusterCaloHits
The min number of hits in base cluster selection method.
bool m_vertexClusterMode
Whether to demand clusters are associated with vertices of existing particles.
void CreateTrackParticle(const pandora::ClusterList &clusterList) const
Create and save a track particle containing the provided clusters.
pandora::StringVector m_inputClusterListNames
The list of cluster list names.
float m_minClusterLengthSquared
The min length (squared) in base cluster selection method.
void ExamineTensor(const SimpleOverlapTensor &overlapTensor) const
Identify unambiguous cluster overlaps and resolve ambiguous overlaps, creating new track particles.
unsigned int m_slidingFitHalfWindow
The half window for the fit sliding result constructor.
void GetInputClusters(pandora::ClusterList &inputClusterListU, pandora::ClusterList &inputClusterListV, pandora::ClusterList &inputClusterListW) const
Get the input cluster lists for processing in this algorithm.
void VertexClusterSelection(const pandora::ClusterList &inputClusterList, pandora::ClusterList &selectedClusterList) const
Select a subset of input clusters nodally associated with the vertices of existing particles.
float m_minXOverlapFractionGaps
The min x overlap fraction when there are gaps involved.
void StandardClusterSelection(const pandora::ClusterList &inputClusterList, pandora::ClusterList &selectedClusterList) const
Select a subset of input clusters for processing in this algorithm.
bool m_checkGaps
Whether to check for gaps in the calculation of the overlap.
float m_maxVertexTransverseDistance
Vertex association check: max transverse distance cut.
float m_sampleStepSize
The sampling step size used in association checks, units cm.
float m_pseudoChi2Cut
The selection cut on the matched chi2.
void CalculateEffectiveOverlapFractions(const pandora::Cluster *const pCluster1, const float xMin1, const float xMax1, const pandora::Cluster *const pCluster2, const float xMin2, const float xMax2, float &xOverlapFraction1, float &xOverlapFraction2) const
Calculate effective overlap fractions taking into account gaps.
ParticleRecoveryAlgorithm()
Default constructor.
pandora::StatusCode Run()
Run the algorithm.
bool CheckConsistency(const pandora::Cluster *const pClusterU, const pandora::Cluster *const pClusterV, const pandora::Cluster *const pClusterW) const
Whether a trio of clusters are consistent with representing projections of the same 3d trajectory.
void SelectInputClusters(const pandora::ClusterList &inputClusterList, pandora::ClusterList &selectedClusterList) const
Select a subset of input clusters for processing in this algorithm.
void FindOverlaps(const pandora::ClusterList &clusterList1, const pandora::ClusterList &clusterList2, SimpleOverlapTensor &overlapTensor) const
Find cluster overlaps and record these in the overlap tensor.
bool IsOverlap(const pandora::Cluster *const pCluster1, const pandora::Cluster *const pCluster2) const
Whether two clusters overlap convincingly in x.
pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle)
Read the algorithm settings.
float m_minXOverlapFraction
The min x overlap fraction required in order to id overlapping clusters.
float m_minVertexLongitudinalDistance
Vertex association check: min longitudinal distance cut.
void CalculateEffectiveSpan(const pandora::Cluster *const pCluster, const float xMin, const float xMax, float &xMinEff, float &xMaxEff) const
Calculate effective span for a given clsuter taking gaps into account.
Algorithm class. Algorithm addresses are held only by the algorithm manager. They have a fully define...
MANAGED_CONTAINER< const Cluster * > ClusterList
std::vector< std::string > StringVector
StatusCode
The StatusCode enum.