Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-27 09:14:59

0001 /**
0002  *  @file   LCContent/include/LCParticleId/PhotonRecoveryAlgorithm.h
0003  *
0004  *  @brief  Header file for the photon recovery algorithm class.
0005  *
0006  *  $Log: $
0007  */
0008 #ifndef LC_PHOTON_RECOVERY_ALGORITHM_H
0009 #define LC_PHOTON_RECOVERY_ALGORITHM_H 1
0010 
0011 #include "Pandora/Algorithm.h"
0012 
0013 namespace lc_content {
0014 
0015 /**
0016  *  @brief  PhotonRecoveryAlgorithm class
0017  */
0018 class PhotonRecoveryAlgorithm : public pandora::Algorithm {
0019 public:
0020   /**
0021    *  @brief Default constructor
0022    */
0023   PhotonRecoveryAlgorithm();
0024 
0025 private:
0026   pandora::StatusCode Run();
0027   pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle);
0028 
0029   /**
0030    *  @brief  Examine clusters in a specified list, identifying and flagging those clusters that are likely photons
0031    *
0032    *  @param  pClusterList address of the cluster list
0033    */
0034   void FindPhotonsIdentifiedAsHadrons(const pandora::ClusterList* const pClusterList) const;
0035 
0036   /**
0037    *  @brief  Get the maximum of 1) the fraction of total cluster electromagnetic energy deposited in the barrel, or
0038    *          2) the fraction of total cluster electromagnetic energy deposited in the endcap
0039    *
0040    *  @param  pCluster address of the cluster
0041    *
0042    *  @return the barrel endcap energy split
0043    */
0044   float GetBarrelEndCapEnergySplit(const pandora::Cluster* const pCluster) const;
0045 
0046   /**
0047    *  @brief  Examine clusters in a specified list, identifying and flagging candidate "soft" photons
0048    *
0049    *  @param  pClusterList address of the cluster list
0050    */
0051   void PerformSoftPhotonId(const pandora::ClusterList* const pClusterList) const;
0052 
0053   /**
0054    *  @brief  Whether a cluster should be considered as a "soft" photon cluster
0055    *
0056    *  @param  pCluster address of the cluster
0057    *
0058    *  @return boolean
0059    */
0060   bool IsSoftPhoton(const pandora::Cluster* const pCluster) const;
0061 
0062   std::string m_trackClusterAssociationAlgName; ///< The name of the track-cluster association algorithm to run
0063 
0064   float m_minElectromagneticEnergy; ///< Minimum cluster electromagnetic energy for identification as a photon
0065   unsigned int m_maxInnerLayer;     ///< Maximum cluster inner layer
0066 
0067   float m_profileStartCut1;      ///< Initial cut on shower profile start for identification as a photon
0068   float m_profileStartEnergyCut; ///< Electromagnetic energy above which shower profile start cut will be altered
0069   float m_profileStartCut2;      ///< Cut on shower profile start for clusters passing energy cut
0070   float m_profileStartCut3;      ///< Cut on shower profile start for clusters also passing profile discrepancy cuts
0071 
0072   float m_profileDiscrepancyCut1;      ///< Initial cut on shower profile discrepancy for identification as a photon
0073   float m_profileDiscrepancyEnergyCut; ///< Electromagnetic energy above which profile discrepancy cut will be altered
0074   float m_profileDiscrepancyCutParameter1; ///< Parameter1 for calculation of discrepancy cut (for clusters passing
0075                                            ///< energy cut)
0076   float m_profileDiscrepancyCutParameter2; ///< Parameter2 for calculation of discrepancy cut (for clusters passing
0077                                            ///< energy cut)
0078   float m_minProfileDiscrepancy;           ///< Minimum shower profile discrepancy for identification as a photon
0079   float m_profileDiscrepancyCut2; ///< Cut on shower profile discrepancy for clusters also passing profile start cuts
0080 
0081   unsigned int m_maxOverlapInnerLayer;     ///< Maximum inner layer for clusters in barrel-endcap overlap region
0082   float m_maxOverlapMipFraction;           ///< Maximum mip fraction for clusters in barrel-endcap overlap region
0083   float m_minOverlapRadialDirectionCosine; ///< Minimum radial direction cosine for clusters in barrel-endcap overlap
0084                                            ///< region
0085   float m_maxBarrelEndCapSplit;            ///< Maximum barrel-endcap electromagnetic energy split for cluster
0086 
0087   unsigned int m_softPhotonMinCaloHits;   ///< Soft photon id min number of calo hits in cluster
0088   unsigned int m_softPhotonMaxCaloHits;   ///< Soft photon id max number of calo hits in cluster
0089   float m_softPhotonMaxEnergy;            ///< Soft photon id max cluster electromagnetic energy
0090   unsigned int m_softPhotonMaxInnerLayer; ///< Soft photon id max cluster inner pseudolayer
0091   float m_softPhotonMaxDCosR;             ///< Soft photon id max cluster radial direction cosine
0092   float m_softPhotonLowEnergyCut;         ///< Soft photon id low electromagnetic energy cut
0093   float m_softPhotonLowEnergyMaxDCosR;    ///< Soft photon id max radial direction cosine for low energy cluster
0094 };
0095 
0096 } // namespace lc_content
0097 
0098 #endif // #ifndef LC_PHOTON_RECOVERY_ALGORITHM_H