diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/src/TestMCASTTool.cxx b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/src/TestMCASTTool.cxx index 7b42a48f473164b82345e2f17fbd8e0d6054e22d..2212f88f6f0c40751a717b3ad57b8e2a8bafbcf5 100644 --- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/src/TestMCASTTool.cxx +++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/src/TestMCASTTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "TestMCASTTool.h" @@ -8,6 +8,7 @@ #include "xAODMuon/MuonAuxContainer.h" #include "xAODMuon/MuonContainer.h" +#include "AthContainers/ConstAccessor.h" namespace CP { @@ -117,11 +118,15 @@ namespace CP { std::string syst_name = (*sysItr).name(); - m_SelCategoryRaw = mu->auxdata<int>("raw_MCaST_Category"); - m_SelCategory = mu->auxdata<int>("MCaST_Category"); + static const SG::ConstAccessor<int> raw_MCaST_CategoryAcc ("raw_MCaST_Category"); + static const SG::ConstAccessor<int> MCaST_CategoryAcc ("MCaST_Category"); + static const SG::ConstAccessor<float> InnerDetectorPtAcc ("InnerDetectorPt"); + static const SG::ConstAccessor<float> MuonSpectrometerPtAcc ("MuonSpectrometerPt"); + m_SelCategoryRaw = raw_MCaST_CategoryAcc (*mu); + m_SelCategory = MCaST_CategoryAcc (*mu); m_Combined->SetCalibPt(mu->pt(), syst_name); - m_InnerDet->SetCalibPt(mu->auxdata<float>("InnerDetectorPt"), syst_name); - m_MSExtr->SetCalibPt(mu->auxdata<float>("MuonSpectrometerPt"), syst_name); + m_InnerDet->SetCalibPt(InnerDetectorPtAcc (*mu), syst_name); + m_MSExtr->SetCalibPt(MuonSpectrometerPtAcc (*mu), syst_name); delete mu; } diff --git a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/util/MCAST_Tester.cxx b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/util/MCAST_Tester.cxx index 076d1b7098a6c9610c9f72877718880a9f843472..46f999997577eafacf231deff44f20ad86359424 100644 --- a/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/util/MCAST_Tester.cxx +++ b/PhysicsAnalysis/MuonID/MuonIDAnalysis/MuonMomentumCorrections/util/MCAST_Tester.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ // System include(s): @@ -35,6 +35,7 @@ #include "xAODCore/tools/ReadStats.h" #include "xAODEventInfo/EventInfo.h" #include "xAODMuon/MuonContainer.h" +#include "AthContainers/ConstAccessor.h" ANA_MSG_HEADER(msgMMC) ANA_MSG_SOURCE(msgMMC, "MCASTTest") @@ -346,6 +347,8 @@ int main(int argc, char* argv[]) { muon->muonType()); // either use the correctedCopy call or correct the muon object itself + static const SG::ConstAccessor<float> InnerDetectorPtAcc ("InnerDetectorPt"); + static const SG::ConstAccessor<float> MuonSpectrometerPtAcc ("MuonSpectrometerPt"); if (useCorrectedCopy) { // ::: Create a calibrated muon: xAOD::Muon* mu = 0; @@ -354,8 +357,8 @@ int main(int argc, char* argv[]) { continue; } CorrPtCB = mu->pt(); - CorrPtID = mu->auxdata<float>("InnerDetectorPt"); - CorrPtMS = mu->auxdata<float>("MuonSpectrometerPt"); + CorrPtID = InnerDetectorPtAcc (*mu); + CorrPtMS = MuonSpectrometerPtAcc (*mu); sysTreeMap[*sysListItr]->Fill(); @@ -368,8 +371,8 @@ int main(int argc, char* argv[]) { continue; } CorrPtCB = muon->pt(); - CorrPtID = muon->auxdata<float>("InnerDetectorPt"); - CorrPtMS = muon->auxdata<float>("MuonSpectrometerPt"); + CorrPtID = InnerDetectorPtAcc (*muon); + CorrPtMS = MuonSpectrometerPtAcc (*muon); ExpResoCB = corrTool->expectedResolution("CB", *muon, true); ExpResoID = corrTool->expectedResolution("ID", *muon, true); ExpResoMS = corrTool->expectedResolution("MS", *muon, true); diff --git a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthFilterTool.cxx b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthFilterTool.cxx index 30e8f52482f3d0fc83595df0f634ec980c6db0e7..a8d98335b7cb5879f1ce1e3baf878c7d2aff4680 100644 --- a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthFilterTool.cxx +++ b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthFilterTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "InDetTrackSystematicsTools/InDetTrackTruthFilterTool.h" @@ -11,6 +11,7 @@ #include "xAODTruth/TruthParticleContainer.h" #include "xAODTruth/TruthVertex.h" #include "xAODTruth/TruthVertexContainer.h" +#include "AthContainers/ConstAccessor.h" #include "PathResolver/PathResolver.h" @@ -282,12 +283,18 @@ namespace InDet { } if(m_doLRTSystematics) { - const ElementLink< xAOD::TruthParticleContainer > &truthParticleLink = track->auxdata< ElementLink< xAOD::TruthParticleContainer > >("truthParticleLink"); + static const SG::ConstAccessor<ElementLink< xAOD::TruthParticleContainer > > + truthParticleLinkAcc ("truthParticleLink"); + const ElementLink< xAOD::TruthParticleContainer > &truthParticleLink = + truthParticleLinkAcc (*track); if(truthParticleLink.isValid()) { const xAOD::TruthParticle *truthParticle = *truthParticleLink; double eta = truthParticle->eta(); - const ElementLink< xAOD::TruthVertexContainer > &truthVertexLink = truthParticle->auxdata< ElementLink< xAOD::TruthVertexContainer > >("prodVtxLink"); + static const SG::ConstAccessor<ElementLink< xAOD::TruthVertexContainer > > + prodVtxLinkAcc ("prodVtxLink"); + const ElementLink< xAOD::TruthVertexContainer > &truthVertexLink = + prodVtxLinkAcc (*truthParticle); if(truthVertexLink.isValid()) { const xAOD::TruthVertex *truthVertex = *truthVertexLink; double prodR = truthVertex->perp(); diff --git a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx index 770f254409d2f1a87d2dbcf1d72f3506a8227868..69a850ecf302627a4fd2f6cae364c498b2d2fd99 100644 --- a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx +++ b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InDetTrackTruthOriginTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "InDetTrackSystematicsTools/InDetTrackTruthOriginTool.h" @@ -8,6 +8,7 @@ #include "xAODTruth/TruthParticleContainer.h" #include "xAODTruth/TruthEventContainer.h" #include "TruthUtils/MagicNumbers.h" +#include "AthContainers/ConstAccessor.h" #include <math.h> @@ -42,12 +43,14 @@ namespace InDet { // in practice, all tracks seem to have a truth link, but we need to also // check whether it's valid typedef ElementLink<xAOD::TruthParticleContainer> TruthLink; - if ( !track->isAvailable<TruthLink>("truthParticleLink") ) { + static const SG::ConstAccessor<TruthLink> + truthParticleLinkAcc ("truthParticleLink"); + if ( !truthParticleLinkAcc.isAvailable(*track) ) { return nullptr; } // retrieve the link and check its validity - const TruthLink &link = track->auxdata<TruthLink>("truthParticleLink"); + const TruthLink &link = truthParticleLinkAcc(*track); // a missing or invalid link implies truth particle has been dropped from // the truth record at some stage - probably it was from pilup which by diff --git a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InclusiveTrackFilterTool.cxx b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InclusiveTrackFilterTool.cxx index 0af38a9003b5342487849ba67a954f662a6a34ea..b0a838b1b6ceb296ce362b0ebb30eaa4e8afcb15 100644 --- a/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InclusiveTrackFilterTool.cxx +++ b/PhysicsAnalysis/TrackingID/InDetTrackSystematicsTools/Root/InclusiveTrackFilterTool.cxx @@ -1,9 +1,10 @@ /* - Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration */ #include "InDetTrackSystematicsTools/InclusiveTrackFilterTool.h" #include "xAODTracking/TrackParticleContainer.h" +#include "AthContainers/ConstAccessor.h" namespace InDet { @@ -50,7 +51,8 @@ namespace InDet { return false; } - if (track->isAvailable<unsigned long>("patternRecoInfo") ) { + static const SG::ConstAccessor<unsigned long> patternRecoInfoAcc ("patternRecoInfo"); + if (patternRecoInfoAcc.isAvailable(*track) ) { const std::bitset<xAOD::NumberOfTrackRecoInfo> patternReco = track->patternRecoInfo(); if(not patternReco.test(49)) { ATH_MSG_DEBUG( "Applying LRT uncertainties to non-LRT track! Skipping" );