29 #ifndef CLUSTERFROMTRACKMERGINGALGORITHM3_H
30 #define CLUSTERFROMTRACKMERGINGALGORITHM3_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);
69 std::vector<april_content::APRILCluster*>& properClusters);
71 void SearchProperClusters(
const pandora::Track* pTrack,
APRILCluster* startingCluster,
72 std::vector<april_content::APRILCluster*>& properClusters);
74 pandora::StatusCode CleanClusterForMerging(std::vector<APRILCluster*>& clusterVector);
89 pandora::StatusCode
FindClustersToMerge(
const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap)
const;
107 pandora::StatusCode
FindBestParentCluster(
const pandora::Cluster *
const pDaughterCluster,
const pandora::ClusterVector &clusterVector,
108 const pandora::Cluster *&pBestParentCluster)
const;
117 pandora::StatusCode
GetClusterBackwardDirection(
const pandora::Cluster *
const pCluster, pandora::CartesianVector &backwardDirection, pandora::CartesianVector &innerPosition)
const;
121 bool m_allowNeutralParentMerging;
122 unsigned int m_minNCaloHits;
123 unsigned int m_maxNCaloHits;
124 unsigned int m_minNPseudoLayers;
125 unsigned int m_maxNPseudoLayers;
126 float m_chi2AssociationCut;
127 unsigned int m_nBackwardLayersFit;
128 float m_maxBackwardAngle;
129 float m_maxBackwardDistanceFine;
130 float m_maxBackwardDistanceCoarse;
131 unsigned int m_maxBackwardPseudoLayer;
132 unsigned int m_minParentClusterBackwardNHits;
133 float m_maxClusterFitDca;
134 float m_minClusterCosOpeningAngle;
135 float m_minClusterFitCosOpeningAngle;
136 float m_minClusterFitCosOpeningAngle2;
138 float m_maxStartingClusterDistance;
139 float m_maxClusterDistanceToMerge;
140 float m_maxClosestPhotonDistance;
142 bool m_mergePhotonClusters;
143 bool m_mergeChargedClusters;
145 bool m_onlyUseConnectedHits;
147 arma::mat m_clusterCentroidsMatrix;
148 std::vector<APRILCluster*> m_clustersToMerge;
153 inline pandora::Algorithm *ClusterFromTrackMergingAlgorithm3::Factory::CreateAlgorithm()
const
ClusterFromTrackMergingAlgorithm3 class.
Definition: ClusterFromTrackMergingAlgorithm3.h:47
Factory class for instantiating algorithm.
Definition: ClusterFromTrackMergingAlgorithm3.h:53
bool m_discriminatePhotonPid
Whether to discriminate photons.
Definition: ClusterFromTrackMergingAlgorithm3.h:120
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: ClusterFromTrackMergingAlgorithm3.cc:766
pandora::StatusCode GetEligibleClusters(std::vector< APRILCluster * > &clusterVector) const
Get the eligible clusters for parent-daughter association.
Definition: ClusterFromTrackMergingAlgorithm3.cc:734
Cluster class.
Definition: Cluster.h:89
pandora::StatusCode Run()
Definition: ClusterFromTrackMergingAlgorithm3.cc:54
pandora::StatusCode FindClustersToMerge(const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap) const
Algorithm workhorse, find associations between daughter and parent cluster.
bool CanMergeCluster(const pandora::Cluster *const pCluster) const
Whether the cluster is eligible for association.
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: ClusterFromTrackMergingAlgorithm3.cc:888