29 #ifndef CLUSTERFROMTRACKMERGINGALGORITHM_H
30 #define CLUSTERFROMTRACKMERGINGALGORITHM_H
32 #include "Pandora/Algorithm.h"
33 #include "Pandora/PandoraInputTypes.h"
39 namespace pandora {
class ClusterFitResult; }
41 namespace april_content
53 class Factory :
public pandora::AlgorithmFactory
56 pandora::Algorithm *CreateAlgorithm()
const;
60 pandora::StatusCode
Run();
61 pandora::StatusCode ReadSettings(
const pandora::TiXmlHandle xmlHandle);
65 void GetNearbyClusters(pandora::Cluster* cluster,
const std::vector<april_content::APRILCluster*>& clusterVector,
66 std::vector<april_content::APRILCluster*>& clustersInRange);
68 void SearchProperClusters(
const pandora::Track* pTrack,
APRILCluster* startingCluster,
69 std::vector<april_content::APRILCluster*>& properClusters);
71 pandora::StatusCode CleanClusterForMerging(std::vector<APRILCluster*>& clusterVector);
86 pandora::StatusCode
FindClustersToMerge(
const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap)
const;
104 pandora::StatusCode
FindBestParentCluster(
const pandora::Cluster *
const pDaughterCluster,
const pandora::ClusterVector &clusterVector,
105 const pandora::Cluster *&pBestParentCluster)
const;
114 pandora::StatusCode
GetClusterBackwardDirection(
const pandora::Cluster *
const pCluster, pandora::CartesianVector &backwardDirection, pandora::CartesianVector &innerPosition)
const;
118 bool m_allowNeutralParentMerging;
119 unsigned int m_minNCaloHits;
120 unsigned int m_maxNCaloHits;
121 unsigned int m_minNPseudoLayers;
122 unsigned int m_maxNPseudoLayers;
123 float m_chi2AssociationCut;
124 unsigned int m_nBackwardLayersFit;
125 float m_maxBackwardAngle;
126 float m_maxBackwardDistanceFine;
127 float m_maxBackwardDistanceCoarse;
128 unsigned int m_maxBackwardPseudoLayer;
129 unsigned int m_minParentClusterBackwardNHits;
130 float m_maxClusterFitDca;
131 float m_minClusterCosOpeningAngle;
132 float m_minClusterFitCosOpeningAngle;
133 float m_minClusterFitCosOpeningAngle2;
135 float m_maxStartingClusterDistance;
136 float m_maxClusterTrackAngle;
137 float m_maxClusterDistanceToMerge;
141 arma::mat m_clusterCentroidsMatrix;
142 std::vector<APRILCluster*> m_clustersToMerge;
147 inline pandora::Algorithm *ClusterFromTrackMergingAlgorithm::Factory::CreateAlgorithm()
const
Factory class for instantiating algorithm.
Definition: ClusterFromTrackMergingAlgorithm.h:53
bool CanMergeCluster(const pandora::Cluster *const pCluster) const
Whether the cluster is eligible for association.
pandora::StatusCode GetEligibleClusters(std::vector< APRILCluster * > &clusterVector) const
Get the eligible clusters for parent-daughter association.
Definition: ClusterFromTrackMergingAlgorithm.cc:628
Cluster class.
Definition: Cluster.h:89
pandora::StatusCode FindBestParentCluster(const pandora::Cluster *const pDaughterCluster, const pandora::ClusterVector &clusterVector, const pandora::Cluster *&pBestParentCluster) const
Find the best parent cluster to merge a daughter one.
Definition: ClusterFromTrackMergingAlgorithm.cc:660
ClusterFromTrackMergingAlgorithm class.
Definition: ClusterFromTrackMergingAlgorithm.h:47
pandora::StatusCode FindClustersToMerge(const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap) const
Algorithm workhorse, find associations between daughter and parent cluster.
pandora::StatusCode Run()
Definition: ClusterFromTrackMergingAlgorithm.cc:53
bool m_discriminatePhotonPid
Whether to discriminate photons.
Definition: ClusterFromTrackMergingAlgorithm.h:117
pandora::StatusCode GetClusterBackwardDirection(const pandora::Cluster *const pCluster, pandora::CartesianVector &backwardDirection, pandora::CartesianVector &innerPosition) const
Get the cluster backward direction and the inner cluster position using a cluster fit of the n first ...
Definition: ClusterFromTrackMergingAlgorithm.cc:782