ATLAS Offline Software
Loading...
Searching...
No Matches
PFUnifiedMatchingTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef PFUNIFIEDMATCHINGTOOL_H
6#define PFUNIFIEDMATCHINGTOOL_H
7
9#include "GaudiKernel/ToolHandle.h"
10
11#include "IPFUnifiedBaseTool.h"
13#include "PFMatchPositions.h"
15#include "eflowSubtractor.h"
18
20class eflowRecCluster;
22struct PFData;
23
24
25class PFUnifiedMatchingTool : public extends<AthAlgTool, IPFUnifiedBaseTool>
26{
27
28public:
29 PFUnifiedMatchingTool(const std::string &type, const std::string &name, const IInterface *parent);
31
32 virtual StatusCode initialize() override;
33 virtual StatusCode processPFlowData(
34 const EventContext& ctx,
35 PFData &thePFData
36 ) const override;
37
38protected:
39
41 virtual unsigned int matchAndCreateEflowCaloObj(const EventContext& ctx, PFData &data) const;
42
43 static std::string printTrack(const xAOD::TrackParticle* track);
44 static std::string printCluster(const xAOD::CaloCluster* cluster);
45 void printAllClusters(const std::vector<eflowRecCluster *>& recClusterVector) const;
46
48 ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool{this, "eflowCellEOverPTool", "eflowCellEOverPTool", "Energy Flow E/P Values and Shower Parameters Tool"};
49
50 std::unique_ptr<eflowEEtaBinnedParameters> m_binnedParameters;
51
53 std::unique_ptr<PFMatch::TrackEtaPhiInFixedLayersProvider> m_trkpos;
54
56 ToolHandle<PFTrackClusterMatchingTool> m_theMatchingTool{this, "PFTrackClusterMatchingTool", "PFTrackClusterMatchingTool/CalObjBldMatchingTool", "The track-cluster matching tool"};
57
58 /* Track-cluster matching tools for calculating the pull */
59 ToolHandle<PFTrackClusterMatchingTool> m_theMatchingToolForPull_015{this, "PFTrackClusterMatchingTool_015", "PFTrackClusterMatchingTool/PFPullMatchingTool_015", "The 0.15 track-cluster matching tool to calculate the pull"};
60 ToolHandle<PFTrackClusterMatchingTool> m_theMatchingToolForPull_02{this, "PFTrackClusterMatchingTool_02", "PFTrackClusterMatchingTool/PFPullMatchingTool_02", "The 0.2 track-cluster matching tool to calculate the pull"};
61
63 Gaudi::Property<bool> m_recoverSplitShowers{this,"RecoverSplitShowers",false,"Toggle whether we are recovering split showers or not"};
64
66 Gaudi::Property<int> m_nClusterMatchesToUse{this, "nClusterMatchesToUse", 1, "Number of clusters to match to each track"};
67
69 Gaudi::Property<bool> m_addCPData{this,"addCPData",false,"Toggle whether to decorate FlowElements with additional data for Combined Performance studies "};
70
71 //Helpers
73
75 ToolHandle<PFEnergyPredictorTool> m_NNEnergyPredictorTool{this, "NNEnergyPredictorTool", "","Tool for getting predictiing the energy using an ONNX model "};
76
78 Gaudi::Property<bool> m_useNNEnergy{this, "useNNEnergy", false, "Toggle whether we use the neural net energy"};
79
85 Gaudi::Property<bool> m_useLegacyEBinIndex{this, "useLegacyEBinIndex", true, "Toggle whether we use the legacy energy bin index"};
86
87};
88
89#endif
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
Pure virtual base class, from which concrete classes inherit and define reference e/p mean and widths...
virtual StatusCode processPFlowData(const EventContext &ctx, PFData &thePFData) const override
static std::string printTrack(const xAOD::TrackParticle *track)
ToolHandle< PFTrackClusterMatchingTool > m_theMatchingToolForPull_015
PFUnifiedMatchingTool(const std::string &type, const std::string &name, const IInterface *parent)
ToolHandle< PFEnergyPredictorTool > m_NNEnergyPredictorTool
Tool for getting predictiing the energy using an ONNX model.
Gaudi::Property< bool > m_recoverSplitShowers
Toggle whether we are recovering split showers or not.
Gaudi::Property< int > m_nClusterMatchesToUse
Number of clusters to match to each track if not doing recover split shower subtraction.
void printAllClusters(const std::vector< eflowRecCluster * > &recClusterVector) const
eflowSubtract::Subtractor m_subtractor
ToolHandle< IEFlowCellEOverPTool > m_theEOverPTool
Tool for getting e/p values and hadronic shower cell ordering principle parameters.
ToolHandle< PFTrackClusterMatchingTool > m_theMatchingToolForPull_02
Gaudi::Property< bool > m_useNNEnergy
Toggle whether we use the neural net energy.
std::unique_ptr< eflowEEtaBinnedParameters > m_binnedParameters
static std::string printCluster(const xAOD::CaloCluster *cluster)
virtual StatusCode initialize() override
std::unique_ptr< PFMatch::TrackEtaPhiInFixedLayersProvider > m_trkpos
Track position provider to be used to preselect clusters.
ToolHandle< PFTrackClusterMatchingTool > m_theMatchingTool
Default track-cluster matching tool.
Gaudi::Property< bool > m_addCPData
Toggle whether to decorate eflowRecTrack with additional data for Combined Performance studies.
Gaudi::Property< bool > m_useLegacyEBinIndex
Further discussion about why this flag exists can be found in https://its.cern.ch/jira/browse/ATLJETM...
virtual unsigned int matchAndCreateEflowCaloObj(const EventContext &ctx, PFData &data) const
This matches ID tracks and CaloClusters, and then creates eflowCaloObjects.
Inherits from eflowEEtaBinBase.
This class extends the information about a xAOD::CaloCluster.
Used in eflowCellLevelSubtractionTool and eflowRecoverSplitShowersTool to perform the removal of calo...
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version: