APRILContent
Algorithm of Particle Reconstruction for ILC - implementation with PandoraSDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations
PointingClusterAssociationAlgorithm.h
Go to the documentation of this file.
1 /*
3  *
4  * PointingClusterAssociationAlgorithm.h header template automatically generated by a class generator
5  * Creation date : jeu. avr. 9 2015
6  *
7  * This file is part of APRILContent libraries.
8  *
9  * APRILContent is free software: you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation, either version 3 of the License, or
12  * (at your option) any later version.
13  * based upon these libraries are permitted. Any copy of these libraries
14  * must include this copyright notice.
15  *
16  * APRILContent is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with APRILContent. If not, see <http://www.gnu.org/licenses/>.
23  *
24  * @author Remi Ete
25  * @copyright CNRS , IPNL
26  */
27 
28 
29 #ifndef POINTINGCLUSTERASSOCIATIONALGORITHM_H
30 #define POINTINGCLUSTERASSOCIATIONALGORITHM_H
31 
32 #include "Pandora/Algorithm.h"
33 #include "Pandora/PandoraInputTypes.h"
35 
36 namespace pandora { class ClusterFitResult; }
37 
38 namespace april_content
39 {
40 
44 class PointingClusterAssociationAlgorithm : public pandora::Algorithm
45 {
46 public:
50  class Factory : public pandora::AlgorithmFactory
51  {
52  public:
53  pandora::Algorithm *CreateAlgorithm() const;
54  };
55 
56 private:
57  pandora::StatusCode Run();
58  pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
59 
65  pandora::StatusCode GetEligibleClusters(pandora::ClusterVector &clusterVector) const;
66 
73  pandora::StatusCode FindClustersToMerge(const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap) const;
74 
82  bool CanMergeCluster(const pandora::Cluster *const pCluster) const;
83 
91  pandora::StatusCode FindBestParentCluster(const pandora::Cluster *const pDaughterCluster, const pandora::ClusterVector &clusterVector,
92  const pandora::Cluster *&pBestParentCluster) const;
93 
101  pandora::StatusCode GetClusterBackwardDirection(const pandora::Cluster *const pCluster, pandora::CartesianVector &backwardDirection, pandora::CartesianVector &innerPosition) const;
102 
103 private:
105  bool m_allowNeutralParentMerging;
106  unsigned int m_minNCaloHits;
107  unsigned int m_maxNCaloHits;
108  unsigned int m_minNPseudoLayers;
109  unsigned int m_maxNPseudoLayers;
110  float m_chi2AssociationCut;
111  unsigned int m_nBackwardLayersFit;
112  float m_maxBackwardAngle;
113  float m_maxBackwardDistanceFine;
114  float m_maxBackwardDistanceCoarse;
115  unsigned int m_maxBackwardPseudoLayer;
116  unsigned int m_minParentClusterBackwardNHits;
117  float m_maxClusterFitDca;
118  float m_minClusterCosOpeningAngle;
119  float m_minClusterFitCosOpeningAngle;
120  float m_minClusterFitCosOpeningAngle2;
121 };
122 
123 //------------------------------------------------------------------------------------------------------------------------------------------
124 
125 inline pandora::Algorithm *PointingClusterAssociationAlgorithm::Factory::CreateAlgorithm() const
126 {
128 }
129 
130 }
131 
132 #endif // POINTINGCLUSTERASSOCIATIONALGORITHM_H
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: PointingClusterAssociationAlgorithm.cc:135
bool CanMergeCluster(const pandora::Cluster *const pCluster) const
Whether the cluster is eligible for association.
Definition: PointingClusterAssociationAlgorithm.cc:85
pandora::StatusCode GetEligibleClusters(pandora::ClusterVector &clusterVector) const
Get the eligible clusters for parent-daughter association.
Definition: PointingClusterAssociationAlgorithm.cc:61
Factory class for instantiating algorithm.
Definition: PointingClusterAssociationAlgorithm.h:50
PointingClusterAssociationAlgorithm class.
Definition: PointingClusterAssociationAlgorithm.h:44
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: PointingClusterAssociationAlgorithm.cc:255
pandora::StatusCode FindClustersToMerge(const pandora::ClusterVector &clusterVector, ClusterToClusterMap &clusterToClusterMap) const
Algorithm workhorse, find associations between daughter and parent cluster.
Definition: PointingClusterAssociationAlgorithm.cc:109
bool m_discriminatePhotonPid
Whether to discriminate photons.
Definition: PointingClusterAssociationAlgorithm.h:104