ATLAS Offline Software
HIJetAugmentationTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 #include <format>
8 
9 namespace DerivationFramework
10 {
12  const std::string& n,
13  const IInterface* p ) : base_class(t,n,p)
14  {
15  }
16 
17  // Destructor
19  {
20  }
21 
22  // Athena initialize and finalize
24  {
28  ATH_CHECK(m_jvtUpdateTool.retrieve());
29 
32 
33  ATH_MSG_INFO("DeltaRJetMatching = "<< m_deltaR.value());
34 
35 
36  return StatusCode::SUCCESS;
37  }
38 
40  {
41 
42  ATH_CHECK(m_jvtUpdateTool->finalize());
43 
44  return StatusCode::SUCCESS;
45  }
46 
47  double deltaR(double eta1, double eta2, double phi1, double phi2) {
48  double deltaPhi = TVector2::Phi_mpi_pi(phi1 - phi2);
49  double deltaEta = eta1 - eta2;
50  return std::sqrt(deltaEta * deltaEta + deltaPhi * deltaPhi);
51  }
52 
53  StatusCode HIJetAugmentationTool::addBranches(const EventContext &ctx) const {
55 
56  // Load jet containers
58  if (!hiJets.isValid()) {
59  ATH_MSG_ERROR("Couldn't retrieve JetContainer with key " << m_hiJet_key);
60  return StatusCode::FAILURE;
61  }
63  if (!caloJets.isValid()) {
64  ATH_MSG_ERROR("Couldn't retrieve JetContainer with key "
65  << m_caloJet_key);
66  return StatusCode::FAILURE;
67  }
68 
70 
71  // first loop over calibrated HI jets
72  for (const auto *hjet : *hiJets) {
73  float mindR = 999.;
74  float matchedJvt = -1;
75  // second loop over topo jets
76  for (const auto *tjet : *caloJets) {
77  float newjvt = m_jvtUpdateTool->updateJvt(*tjet);
78 
79  // perform the matching
80  float dR =
81  deltaR(tjet->eta(), hjet->eta(), hjet->phi(), tjet->phi());
82 
83  if (dR < m_deltaR.value() && dR < mindR) {
84  mindR = dR;
85  matchedJvt = newjvt;
86  }
87  }
88 
89  if (mindR < m_deltaR.value()) {
90  (jvtMatchedHandle)(*hjet) = matchedJvt;
91  } else {
92  (jvtMatchedHandle)(*hjet) = -1;
93  }
94 
95  }
96 
97  return StatusCode::SUCCESS;
98  }
99 }
100 
101 
DerivationFramework::HIJetAugmentationTool::m_jvtUpdateTool
PublicToolHandle< IJetUpdateJvt > m_jvtUpdateTool
JVT update tool.
Definition: HIJetAugmentationTool.h:51
DerivationFramework::HIJetAugmentationTool::m_caloJet_key
SG::ReadHandleKey< xAOD::JetContainer > m_caloJet_key
Definition: HIJetAugmentationTool.h:47
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DerivationFramework::HIJetAugmentationTool::HIJetAugmentationTool
HIJetAugmentationTool(const std::string &t, const std::string &n, const IInterface *p)
Definition: HIJetAugmentationTool.cxx:11
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
xAOD::deltaPhi
setSAddress setEtaMS setDirPhiMS setDirZMS setBarrelRadius setEndcapAlpha setEndcapRadius setInterceptInner setEtaMap setEtaBin setIsTgcFailure setDeltaPt deltaPhi
Definition: L2StandAloneMuon_v1.cxx:161
xAOD::eta1
setEt setPhi setE277 setWeta2 eta1
Definition: TrigEMCluster_v1.cxx:41
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
DerivationFramework::HIJetAugmentationTool::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: HIJetAugmentationTool.h:43
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
Phi_mpi_pi
__HOSTDEV__ double Phi_mpi_pi(double)
Definition: GeoRegion.cxx:10
DerivationFramework::HIJetAugmentationTool::initialize
StatusCode initialize()
Definition: HIJetAugmentationTool.cxx:23
DerivationFramework::HIJetAugmentationTool::m_jvtMatchedKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_jvtMatchedKey
Definition: HIJetAugmentationTool.h:56
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DerivationFramework::HIJetAugmentationTool::~HIJetAugmentationTool
~HIJetAugmentationTool()
Definition: HIJetAugmentationTool.cxx:18
P4Helpers::deltaEta
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .
Definition: P4Helpers.h:66
DerivationFramework::HIJetAugmentationTool::m_hiJet_key
SG::ReadHandleKey< xAOD::JetContainer > m_hiJet_key
Definition: HIJetAugmentationTool.h:45
beamspotman.n
n
Definition: beamspotman.py:727
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:100
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework
THE reconstruction tool.
Definition: ParticleSortingAlg.h:24
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
HIJetAugmentationTool.h
WriteDecorHandle.h
Handle class for adding a decoration to an object.
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
DerivationFramework::HIJetAugmentationTool::addBranches
virtual StatusCode addBranches(const EventContext &ctx) const
Definition: HIJetAugmentationTool.cxx:53
DerivationFramework::HIJetAugmentationTool::m_deltaR
Gaudi::Property< float > m_deltaR
Definition: HIJetAugmentationTool.h:40
SG::WriteDecorHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
DerivationFramework::HIJetAugmentationTool::finalize
StatusCode finalize()
Definition: HIJetAugmentationTool.cxx:39
DerivationFramework::deltaR
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: HIJetAugmentationTool.cxx:47