29 #ifndef POINTINGCLUSTERASSOCIATIONNEWALGORITHM_H
30 #define POINTINGCLUSTERASSOCIATIONNEWALGORITHM_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);
84 pandora::StatusCode
FindClustersToMerge(
const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap)
const;
102 pandora::StatusCode
FindBestParentCluster(
const pandora::Cluster *
const pDaughterCluster,
const pandora::ClusterVector &clusterVector,
103 const pandora::Cluster *&pBestParentCluster)
const;
112 pandora::StatusCode
GetClusterBackwardDirection(
const pandora::Cluster *
const pCluster, pandora::CartesianVector &backwardDirection, pandora::CartesianVector &innerPosition)
const;
116 bool m_allowNeutralParentMerging;
117 unsigned int m_minNCaloHits;
118 unsigned int m_maxNCaloHits;
119 unsigned int m_minNPseudoLayers;
120 unsigned int m_maxNPseudoLayers;
121 float m_chi2AssociationCut;
122 unsigned int m_nBackwardLayersFit;
123 float m_maxBackwardAngle;
124 float m_maxBackwardDistanceFine;
125 float m_maxBackwardDistanceCoarse;
126 unsigned int m_maxBackwardPseudoLayer;
127 unsigned int m_minParentClusterBackwardNHits;
128 float m_maxClusterFitDca;
129 float m_minClusterCosOpeningAngle;
130 float m_minClusterFitCosOpeningAngle;
131 float m_minClusterFitCosOpeningAngle2;
133 float m_maxStartingClusterDistance;
134 float m_maxClusterDistanceToMerge;
136 arma::mat m_clusterCentroidsMatrix;
137 std::vector<APRILCluster*> m_clustersToMerge;
142 inline pandora::Algorithm *PointingClusterAssociationNewAlgorithm::Factory::CreateAlgorithm()
const
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: PointingClusterAssociationNewAlgorithm.cc:902
bool CanMergeCluster(const pandora::Cluster *const pCluster) const
Whether the cluster is eligible for association.
Definition: PointingClusterAssociationNewAlgorithm.cc:730
Cluster class.
Definition: Cluster.h:89
Factory class for instantiating algorithm.
Definition: PointingClusterAssociationNewAlgorithm.h:53
PointingClusterAssociationNewAlgorithm class.
Definition: PointingClusterAssociationNewAlgorithm.h:47
bool m_discriminatePhotonPid
Whether to discriminate photons.
Definition: PointingClusterAssociationNewAlgorithm.h:115
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: PointingClusterAssociationNewAlgorithm.cc:780
pandora::StatusCode FindClustersToMerge(const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap) const
Algorithm workhorse, find associations between daughter and parent cluster.
Definition: PointingClusterAssociationNewAlgorithm.cc:754
pandora::StatusCode GetEligibleClusters(std::vector< APRILCluster * > &clusterVector) const
Get the eligible clusters for parent-daughter association.
Definition: PointingClusterAssociationNewAlgorithm.cc:698