ATLAS Offline Software
MuonJetDrTool.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // Finds the nearest jet and adds its info to the muon.
6 #include "MuonJetDrTool.h"
7 
10 
14  ATH_CHECK(m_jetDR_SGKey.initialize());
15  return StatusCode::SUCCESS;
16 }
17 
18 
20 
21  // Retrieve main muonicle collection
22  SG::ReadHandle<xAOD::MuonContainer> muons{m_muonSGKey, ctx};
23  if (!muons.isValid()) {
24  ATH_MSG_FATAL("Failed to retrieve container " << m_muonSGKey.fullKey());
25  return StatusCode::FAILURE;
26  }
28  if (!jets.isValid()) {
29  ATH_MSG_FATAL("Failed to retrieve " << m_jetSGKey.fullKey());
30  return StatusCode::FAILURE;
31  }
32  SG::WriteDecorHandle<xAOD::MuonContainer, float> decorator_jetdR{m_jetDR_SGKey, ctx};
33 
34  for (auto muon : *muons) {
35  double new_jetdR = FLT_MAX;
36  bool found{false};
37  for (auto jet : *jets) {
38  if (jet->pt() <= m_jetMinPt) continue;
39  new_jetdR = std::min(xAOD::P4Helpers::deltaR(jet, muon), new_jetdR);
40  found = true;
41  }
42  decorator_jetdR(*muon) = found ? new_jetdR : -1;
43  }
44  return StatusCode::SUCCESS;
45 }
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
xAODP4Helpers.h
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
DerivationFramework::MuonJetDrTool::m_jetDR_SGKey
SG::WriteDecorHandleKey< xAOD::MuonContainer > m_jetDR_SGKey
Definition: MuonJetDrTool.h:32
defineDB.jets
jets
Definition: JetTagCalibration/share/defineDB.py:24
DerivationFramework::MuonJetDrTool::m_jetSGKey
SG::ReadHandleKey< xAOD::JetContainer > m_jetSGKey
Definition: MuonJetDrTool.h:31
DerivationFramework::MuonJetDrTool::m_muonSGKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonSGKey
Definition: MuonJetDrTool.h:30
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
xAOD::P4Helpers::deltaR
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Definition: xAODP4Helpers.h:150
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
WriteDecorHandle.h
Handle class for adding a decoration to an object.
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
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
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
DerivationFramework::MuonJetDrTool::addBranches
virtual StatusCode addBranches(const EventContext &ctx) const override final
Definition: MuonJetDrTool.cxx:19
MuonJetDrTool.h
DerivationFramework::MuonJetDrTool::initialize
virtual StatusCode initialize() override final
Definition: MuonJetDrTool.cxx:11