|
|
|||
File indexing completed on 2026-09-27 09:15:00
0001 /** 0002 * @file LCContent/include/LCTrackClusterAssociation/TrackRecoveryHelixAlgorithm.h 0003 * 0004 * @brief Header file for the track recovery helix algorithm class. 0005 * 0006 * $Log: $ 0007 */ 0008 #ifndef LC_TRACK_RECOVERY_HELIX_ALGORITHM_H 0009 #define LC_TRACK_RECOVERY_HELIX_ALGORITHM_H 1 0010 0011 #include "Pandora/Algorithm.h" 0012 0013 namespace lc_content { 0014 0015 /** 0016 * @brief TrackRecoveryHelixAlgorithm class 0017 */ 0018 class TrackRecoveryHelixAlgorithm : public pandora::Algorithm { 0019 public: 0020 /** 0021 * @brief Default constructor 0022 */ 0023 TrackRecoveryHelixAlgorithm(); 0024 0025 private: 0026 /** 0027 * @brief AssociationInfo class 0028 */ 0029 class AssociationInfo { 0030 public: 0031 /** 0032 * @brief Constructor 0033 * 0034 * @param pCluster address of cluster to which association could be made 0035 * @param closestApproach distance of closest approach between the cluster and the track under consideration 0036 */ 0037 AssociationInfo(const pandora::Cluster* const pCluster, const float closestApproach); 0038 0039 /** 0040 * @brief Get the address of the cluster to which association could be made 0041 * 0042 * @return The address of the cluster 0043 */ 0044 const pandora::Cluster* GetCluster() const; 0045 0046 /** 0047 * @brief Get the distance of closest approach between the cluster and the track under consideration 0048 * 0049 * @return The distance of closest approach 0050 */ 0051 float GetClosestApproach() const; 0052 0053 /** 0054 * @brief Operator< to order by address of associated cluster 0055 * 0056 * @param rhs association info to compare with 0057 */ 0058 bool operator<(const AssociationInfo& rhs) const; 0059 0060 private: 0061 const pandora::Cluster* m_pCluster; ///< The cluster to which an association would be made 0062 float m_closestApproach; ///< The distance of closest approach 0063 }; 0064 0065 typedef std::set<AssociationInfo> AssociationInfoSet; 0066 typedef std::map<const pandora::Track*, AssociationInfoSet> TrackAssociationInfoMap; 0067 0068 pandora::StatusCode Run(); 0069 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle); 0070 0071 /** 0072 * @brief Get a map specifying cluster association information for every possible matching cluster 0073 * 0074 * @param trackAssociationInfoMap the track association info map 0075 */ 0076 pandora::StatusCode GetTrackAssociationInfoMap(TrackAssociationInfoMap& trackAssociationInfoMap) const; 0077 0078 /** 0079 * @brief Use information in the track association info map to create track to cluster associations 0080 * 0081 * @param trackAssociationInfoMap the track association info map 0082 */ 0083 pandora::StatusCode MakeTrackClusterAssociations(TrackAssociationInfoMap& trackAssociationInfoMap) const; 0084 0085 float m_maxTrackClusterDeltaZ; ///< Max z separation between track calorimeter projection and cluster to allow 0086 ///< association 0087 float m_maxAbsoluteTrackClusterChi; ///< Max absolute track-cluster consistency chi value to allow association 0088 unsigned int 0089 m_maxLayersCrossed; ///< Max number of layers crossed by track helix between calorimeter projection and cluster 0090 0091 unsigned int m_maxSearchLayer; ///< Max pseudo layer to examine when calculating track-cluster distance 0092 float m_parallelDistanceCut; ///< Max allowed projection of track-hit separation along track direction 0093 float m_minTrackClusterCosAngle; ///< Min cos(angle) between track and cluster initial direction 0094 0095 unsigned int m_helixComparisonNLayers; ///< Number of cluster layers used in cluster-helix comparison 0096 unsigned int 0097 m_helixComparisonMaxOccupiedLayers; ///< Max number of occupied cluster layers used in cluster-helix comparison 0098 0099 float m_maxTrackClusterDistance; ///< Max track-cluster separation to allow association 0100 float m_maxClosestHelixClusterDistance; ///< Max helix-cluster closest approach to allow association 0101 float m_maxMeanHelixClusterDistance; ///< Max helix-cluster mean approach to allow association 0102 }; 0103 0104 //------------------------------------------------------------------------------------------------------------------------------------------ 0105 0106 inline TrackRecoveryHelixAlgorithm::AssociationInfo::AssociationInfo(const pandora::Cluster* const pCluster, 0107 const float closestApproach) 0108 : m_pCluster(pCluster), m_closestApproach(closestApproach) {} 0109 0110 //------------------------------------------------------------------------------------------------------------------------------------------ 0111 0112 inline const pandora::Cluster* TrackRecoveryHelixAlgorithm::AssociationInfo::GetCluster() const { return m_pCluster; } 0113 0114 //------------------------------------------------------------------------------------------------------------------------------------------ 0115 0116 inline float TrackRecoveryHelixAlgorithm::AssociationInfo::GetClosestApproach() const { return m_closestApproach; } 0117 0118 } // namespace lc_content 0119 0120 #endif // #ifndef LC_TRACK_RECOVERY_HELIX_ALGORITHM_H
| [ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
|
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
|