Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:15:00

0001 /**
0002  *  @file   LCContent/include/LCTrackClusterAssociation/TrackClusterAssociationAlgorithm.h
0003  *
0004  *  @brief  Header file for the track-cluster association algorithm class.
0005  *
0006  *  $Log: $
0007  */
0008 #ifndef LC_TRACK_CLUSTER_ASSOCIATION_ALGORITHM_H
0009 #define LC_TRACK_CLUSTER_ASSOCIATION_ALGORITHM_H 1
0010 
0011 #include "Pandora/Algorithm.h"
0012 
0013 #include <unordered_map>
0014 
0015 namespace lc_content {
0016 
0017 template <typename, unsigned int>
0018 class KDTreeLinkerAlgo;
0019 template <typename, unsigned int>
0020 class KDTreeNodeInfoT;
0021 
0022 //------------------------------------------------------------------------------------------------------------------------------------------
0023 
0024 /**
0025  *  @brief  TrackClusterAssociationAlgorithm class
0026  */
0027 class TrackClusterAssociationAlgorithm : public pandora::Algorithm {
0028 public:
0029   /**
0030    *  @brief Default constructor
0031    */
0032   TrackClusterAssociationAlgorithm();
0033 
0034 private:
0035   pandora::StatusCode Run();
0036 
0037   typedef KDTreeLinkerAlgo<const pandora::CaloHit*, 4> HitKDTree;
0038   typedef KDTreeNodeInfoT<const pandora::CaloHit*, 4> HitKDNode;
0039   typedef std::unordered_multimap<std::pair<const pandora::Track*, unsigned int>, const pandora::CaloHit*>
0040       TracksToHitsInPseudoLayerMap;
0041   typedef std::unordered_map<const pandora::CaloHit*, const pandora::Cluster*> HitsToClustersMap;
0042 
0043   pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0044 
0045   float m_lowEnergyCut;            ///< Energy cut (GeV). Algorithm prefers to associate tracks to high-energy clusters
0046   float m_maxTrackClusterDistance; ///< Max distance between track and cluster to allow association
0047 
0048   unsigned int m_maxSearchLayer;   ///< Max pseudo layer to examine when calculating track-cluster distance
0049   float m_parallelDistanceCut;     ///< Max allowed projection of track-hit separation along track direction
0050   float m_minTrackClusterCosAngle; ///< Min cos(angle) between track and cluster initial direction
0051 };
0052 
0053 } // namespace lc_content
0054 
0055 #endif // #ifndef LC_TRACK_CLUSTER_ASSOCIATION_ALGORITHM_H