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/LoopingTrackAssociationAlgorithm.h
0003  *
0004  *  @brief  Header file for the looping track association algorithm class.
0005  *
0006  *  $Log: $
0007  */
0008 #ifndef LC_LOOPING_TRACK_ASSOCIATION_ALGORITHM_H
0009 #define LC_LOOPING_TRACK_ASSOCIATION_ALGORITHM_H 1
0010 
0011 #include "Pandora/Algorithm.h"
0012 
0013 namespace lc_content {
0014 
0015 /**
0016  *  @brief  LoopingTrackAssociationAlgorithm class
0017  */
0018 class LoopingTrackAssociationAlgorithm : public pandora::Algorithm {
0019 public:
0020   /**
0021    *  @brief Default constructor
0022    */
0023   LoopingTrackAssociationAlgorithm();
0024 
0025 private:
0026   pandora::StatusCode Run();
0027   pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0028 
0029   /**
0030    *  @brief  Get mean distance of hits in first m_nClusterDeltaRLayers layers of cluster from centre of specified helix
0031    *
0032    *  @param  pCluster address of the cluster
0033    *  @param  helixXCentre x coordinate of helix centre
0034    *  @param  helixYCentre y coordinate of helix centre
0035    *  @param  helixRadius radius of the helix
0036    */
0037   float GetMeanDeltaR(const pandora::Cluster* const pCluster, const float helixXCentre, const float helixYCentre,
0038                       const float helixRadius) const;
0039 
0040   float m_maxTrackClusterDeltaZ; ///< Max z separation between track calorimeter projection and cluster start
0041 
0042   unsigned int m_minHitsInCluster;           ///< Min number of calo hits in cluster
0043   unsigned int m_minOccupiedLayersInCluster; ///< Min number of occupied layers in cluster
0044   unsigned int m_maxClusterInnerLayer;       ///< Max cluster inner pseudo layer to allow association
0045   float m_maxAbsoluteTrackClusterChi;        ///< Max absolute track-cluster consistency chi value to allow association
0046 
0047   float m_maxDeltaR; ///< Max separation between cluster and centre of track helix
0048   float m_minDeltaR; ///< Min separation between cluster and centre of track helix
0049 
0050   unsigned int m_nClusterFitLayers;    ///< Number of cluster layers to use in fit to initial cluster direction
0051   unsigned int m_nClusterDeltaRLayers; ///< Number of cluster layers to use in calculation of cluster meanDeltaR
0052 
0053   float m_directionCosineCut;    ///< Pair of cuts: min direction cosine between track and cluster directions
0054   float m_clusterMipFractionCut; ///< Pair of cuts: cluster min mip fraction
0055 
0056   float m_directionCosineCut1; ///< Selection parameter: min direction cosine between track and cluster directions
0057 
0058   float m_directionCosineCut2; ///< Pair of selection params: min direction cosine between track/cluster directions
0059   float m_deltaRCut2;          ///< Pair of selection params: max absolute distance between cluster and helix centre
0060 
0061   float m_directionCosineCut3; ///< Pair of selection params: min direction cosine between track/cluster directions
0062   float m_deltaRCut3;          ///< Pair of selection params: max absolute distance between cluster and helix centre
0063 
0064   float m_directionCosineCut4; ///< Pair of selection params: min direction cosine between track/cluster directions
0065   float m_deltaRCut4;          ///< Pair of selection params: max absolute distance between cluster and helix centre
0066 };
0067 
0068 } // namespace lc_content
0069 
0070 #endif // #ifndef LC_LOOPING_TRACK_ASSOCIATION_ALGORITHM_H