ATLAS Offline Software
Loading...
Searching...
No Matches
PFUnifiedSubtractionOnlyTool.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 PFUNIFIEDSUBTRACTIONONLYTOOL_H
6#define PFUNIFIEDSUBTRACTIONONLYTOOL_H
7
9#include "GaudiKernel/ToolHandle.h"
10
11#include "IPFUnifiedBaseTool.h"
13#include "PFMatchPositions.h"
16#include "eflowSubtractor.h"
18
19
20class eflowCaloObject;
24struct PFData;
25
26
27class PFUnifiedSubtractionOnlyTool : public extends<AthAlgTool, IPFUnifiedBaseTool>
28{
29
30public:
31 PFUnifiedSubtractionOnlyTool(const std::string &type, const std::string &name, const IInterface *parent);
33
34 virtual StatusCode initialize() override;
35 virtual StatusCode processPFlowData(
36 const EventContext& ctx,
37 PFData &thePFData
38 ) const override;
39
40protected:
41
44
45 virtual void performSubtraction(const EventContext& ctx, const unsigned int& startingPoint, const unsigned int& nCaloObj, PFData &data ) const;
46 virtual void performSubtraction(eflowCaloObject& thisEflowCaloObject) const;
47 void simulateShowers(const EventContext& ctx, eflowCaloObjectContainer& eflowCaloObjects, const unsigned int& nCaloObj) const;
48
49 bool isEOverPFail(double expectedEnergy, double sigma, double clusterEnergy) const;
50
51 bool canAnnihilate(double expectedEnergy, double sigma, double clusterEnergy) const;
52
53 void addSubtractedCells(eflowCaloObject& thisEflowCaloObject, const std::vector<std::pair<xAOD::CaloCluster *, bool> >& clusterList) const;
54
56 ToolHandle<IEFlowCellEOverPTool> m_theEOverPTool{this, "eflowCellEOverPTool", "eflowCellEOverPTool", "Energy Flow E/P Values and Shower Parameters Tool"};
57
58 std::unique_ptr<eflowEEtaBinnedParameters> m_binnedParameters;
59
61 std::unique_ptr<PFMatch::TrackEtaPhiInFixedLayersProvider> m_trkpos;
62
64 Gaudi::Property<bool> m_recoverSplitShowers{this,"RecoverSplitShowers",false,"Toggle whether we are recovering split showers or not"};
65
67 Gaudi::Property<bool> m_calcEOverP{this, "CalcEOverP", false, "Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed"};
68
70 Gaudi::Property<double> m_consistencySigmaCut{this, "ConsistencySigmaCut", 1.0, "Parameter that controls whether a track, in a track-cluster system, will be processed by the split shower recovery algorithm"};
71
73 Gaudi::Property<double> m_subtractionSigmaCut{this, "SubtractionSigmaCut", 1.5, "Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system, after charged shower subtraction"};
74
76 Gaudi::Property<bool> m_isHLLHC{this, "isHLLHC", false, "Toggle whether we have the HLLHC setup"};
77
79 Gaudi::Property<bool> m_addCPData{this,"addCPData",false,"Toggle whether to decorate FlowElements with additional data for Combined Performance studies "};
80
81 //Helpers
85
87 ToolHandle<PFEnergyPredictorTool> m_NNEnergyPredictorTool{this, "NNEnergyPredictorTool", "","Tool for getting predictiing the energy using an ONNX model "};
88
90 Gaudi::Property<bool> m_useNNEnergy{this, "useNNEnergy", false, "Toggle whether we use the neural net energy"};
91
97 Gaudi::Property<bool> m_useLegacyEBinIndex{this, "useLegacyEBinIndex", true, "Toggle whether we use the legacy energy bin index"};
98
99};
100
101#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...
Class to calculate the ratio of new to old energies of CaloClusters after the particle flow charged s...
This class contains a few functions to set the amount of energy removed from a xAOD::CaloCluster by a...
Gaudi::Property< bool > m_recoverSplitShowers
Toggle whether we are recovering split showers or not.
Gaudi::Property< bool > m_isHLLHC
Toggle whether we have the HLLHC setup.
PFUnifiedSubtractionOnlyTool(const std::string &type, const std::string &name, const IInterface *parent)
bool isEOverPFail(double expectedEnergy, double sigma, double clusterEnergy) const
Gaudi::Property< bool > m_useLegacyEBinIndex
Further discussion about why this flag exists can be found in https://its.cern.ch/jira/browse/ATLJETM...
virtual void performSubtraction(const EventContext &ctx, const unsigned int &startingPoint, const unsigned int &nCaloObj, PFData &data) const
Gaudi::Property< bool > m_calcEOverP
Toggle EOverP algorithm mode, whereby no charged shower subtraction is performed.
unsigned int matchAndCreateEflowCaloObj(PFData &data) const
This matches ID tracks and CaloClusters, and then creates eflowCaloObjects.
std::unique_ptr< eflowEEtaBinnedParameters > m_binnedParameters
ToolHandle< IEFlowCellEOverPTool > m_theEOverPTool
Tool for getting e/p values and hadronic shower cell ordering principle parameters.
Gaudi::Property< double > m_consistencySigmaCut
Parameter that controls whether a track, in a track-cluster system, will be processed by the split sh...
Gaudi::Property< bool > m_addCPData
Toggle whether to decorate eflowRecTrack with additional data for Combined Performance studies.
PFSubtractionStatusSetter m_pfSubtractionStatusSetter
Gaudi::Property< double > m_subtractionSigmaCut
Parameter that controls whether to use retain remaining calorimeter energy in track-cluster system,...
ToolHandle< PFEnergyPredictorTool > m_NNEnergyPredictorTool
Tool for getting predictiing the energy using an ONNX model.
virtual StatusCode processPFlowData(const EventContext &ctx, PFData &thePFData) const override
bool canAnnihilate(double expectedEnergy, double sigma, double clusterEnergy) const
virtual StatusCode initialize() override
void addSubtractedCells(eflowCaloObject &thisEflowCaloObject, const std::vector< std::pair< xAOD::CaloCluster *, bool > > &clusterList) const
std::unique_ptr< PFMatch::TrackEtaPhiInFixedLayersProvider > m_trkpos
Track position provider to be used to preselect clusters.
PFSubtractionEnergyRatioCalculator m_pfSubtractionEnergyRatioCalculator
void simulateShowers(const EventContext &ctx, eflowCaloObjectContainer &eflowCaloObjects, const unsigned int &nCaloObj) const
Gaudi::Property< bool > m_useNNEnergy
Toggle whether we use the neural net energy.
An internal EDM object which stores information about systems of associated tracks and calorimeter cl...
Inherits from eflowEEtaBinBase.
Used in eflowCellLevelSubtractionTool and eflowRecoverSplitShowersTool to perform the removal of calo...