|
|
|||
File indexing completed on 2026-09-27 09:14:59
0001 /** 0002 * @file LCContent/include/LCPfoConstruction/PfoCreationAlgorithm.h 0003 * 0004 * @brief Header file for the pfo creation algorithm class. 0005 * 0006 * $Log: $ 0007 */ 0008 #ifndef LC_PFO_CREATION_ALGORITHM_H 0009 #define LC_PFO_CREATION_ALGORITHM_H 1 0010 0011 #include "Pandora/Algorithm.h" 0012 0013 #include "Api/PandoraContentApi.h" 0014 0015 namespace lc_content { 0016 0017 /** 0018 * @brief PfoCreationAlgorithm class 0019 */ 0020 class PfoCreationAlgorithm : public pandora::Algorithm { 0021 public: 0022 /** 0023 * @brief Default constructor 0024 */ 0025 PfoCreationAlgorithm(); 0026 0027 private: 0028 typedef PandoraContentApi::ParticleFlowObject::Parameters PfoParameters; 0029 0030 pandora::StatusCode Run(); 0031 pandora::StatusCode ReadSettings(const pandora::TiXmlHandle xmlHandle); 0032 0033 /** 0034 * @brief Create particle flow objects starting from tracks in the main tracker. The pfos will account for 0035 * associated daughter/sibling tracks and associated calorimeter clusters. 0036 */ 0037 pandora::StatusCode CreateTrackBasedPfos() const; 0038 0039 /** 0040 * @brief Add relevant tracks and clusters to a track-based pfo 0041 * 0042 * @param pTrack address of the track to consider 0043 * @param pfoParameters the pfo parameters to populate 0044 * @param readSiblingInfo whether to read sibling track information (set to false to avoid multiple counting) 0045 */ 0046 pandora::StatusCode PopulateTrackBasedPfo(const pandora::Track* const pTrack, PfoParameters& pfoParameters, 0047 const bool readSiblingInfo = true) const; 0048 0049 /** 0050 * @brief Set the basic parameters for a track-based pfo 0051 * 0052 * @param pTrack address of the track to consider 0053 * @param pfoParameters the pfo parameters to populate 0054 */ 0055 pandora::StatusCode SetTrackBasedPfoParameters(const pandora::Track* const pTrack, 0056 PfoParameters& pfoParameters) const; 0057 0058 /** 0059 * @brief Set the parameters for a track-based pfo, where pfo target consists of two or more sibling tracks 0060 * 0061 * @param pTrack address of the track to consider 0062 * @param pfoParameters the pfo parameters to populate 0063 */ 0064 pandora::StatusCode SetSiblingTrackBasedPfoParameters(const pandora::Track* const pTrack, 0065 PfoParameters& pfoParameters) const; 0066 0067 /** 0068 * @brief Set the parameters for a track-based pfo, where the pfo target has one or more daughter tracks 0069 * 0070 * @param pTrack address of the track to consider 0071 * @param pfoParameters the pfo parameters to populate 0072 */ 0073 pandora::StatusCode SetDaughterTrackBasedPfoParameters(const pandora::Track* const pTrack, 0074 PfoParameters& pfoParameters) const; 0075 0076 /** 0077 * @brief Set the parameters for a simple track-based pfo, where the track has no associations with other tracks 0078 * 0079 * @param pTrack address of the track to consider 0080 * @param pfoParameters the pfo parameters to populate 0081 */ 0082 pandora::StatusCode SetSimpleTrackBasedPfoParameters(const pandora::Track* const pTrack, 0083 PfoParameters& pfoParameters) const; 0084 0085 /** 0086 * @brief Create particle flow objects corresponding to neutral particles, These pfos consist only of clusters that 0087 * have no associated tracks. 0088 */ 0089 pandora::StatusCode CreateNeutralPfos() const; 0090 0091 /** 0092 * @brief Get the energy-weighted centroid for a specified cluster, calculated over a particular pseudo layer range 0093 * 0094 * @param pCluster address of the cluster to consider 0095 * @param pseudoLayer the inner pseudo layer of interest 0096 * @param pseudoLayer the outer pseudo layer of interest 0097 * 0098 * @return The energy-weighted centroid, returned by value 0099 */ 0100 const pandora::CartesianVector GetEnergyWeightedCentroid(const pandora::Cluster* const pCluster, 0101 const unsigned int innerPseudoLayer, 0102 const unsigned int outerPseudoLayer) const; 0103 0104 std::string m_outputPfoListName; ///< The output pfo list name 0105 bool m_shouldCreateTrackBasedPfos; ///< Whether to create track-based (charged) pfos 0106 bool m_shouldCreateNeutralPfos; ///< Whether to create neutral pfos 0107 float m_minClusterHadronicEnergy; ///< Min hadronic energy for neutral (non-photon) clusters to be added to pfos 0108 float m_minClusterElectromagneticEnergy; ///< Min electromagnetic energy for neutral (photon) clusters to be added to 0109 ///< pfos 0110 unsigned int m_minHitsInCluster; ///< Min number of calo hits for neutral cluster to be added to pfos 0111 bool m_allowSingleLayerClusters; ///< Whether to allow neutral clusters spanning only a single pseudolayer 0112 unsigned int m_photonPositionAlgorithm; ///< Identifies the algorithm used to calculate photon pfo position vectors 0113 }; 0114 0115 } // namespace lc_content 0116 0117 #endif // #ifndef LC_PFO_CREATION_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 |
|