diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_LocalOccupancy.h b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_LocalOccupancy.h index b4cbbe6eb45c0d81f19b6e040d4a0b8ef74491c0..f96a1abc7dfa120d08162bdef13aa2bdedc58ef7 100644 --- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_LocalOccupancy.h +++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/TRT_ElectronPidTools/TRT_LocalOccupancy.h @@ -126,6 +126,8 @@ namespace InDet SG::ReadHandleKey<TRT_DriftCircleContainer> m_trt_driftcircles{ this, "TRT_DriftCircleCollection", "TRT_DriftCircles", "m_trt_driftcircles" }; SG::ReadCondHandleKey<TRTCond::AliveStraws> m_strawReadKey{this,"AliveStraws","AliveStraws","AliveStraws in-key"}; + SG::ReadHandleKey<OccupancyData> m_occupancyCacheRead{"OccupancyData"}; + SG::WriteHandleKey<OccupancyData> m_occupancyCacheWrite{"OccupancyData"}; bool m_isTrigger; bool m_T0Shift; // choice to use T0shift or not float m_lowGate; diff --git a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_LocalOccupancy.cxx b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_LocalOccupancy.cxx index 2ad75ecc6eb357c2424604b8b98d17760a6d6055..05d58a1939d8890f2153bb4f358449358d1e3963 100644 --- a/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_LocalOccupancy.cxx +++ b/InnerDetector/InDetRecTools/TRT_ElectronPidTools/src/TRT_LocalOccupancy.cxx @@ -86,6 +86,12 @@ StatusCode TRT_LocalOccupancy::initialize() ATH_CHECK( m_trt_driftcircles.initialize(!m_trt_driftcircles.empty()) ); ATH_CHECK( m_strawReadKey.initialize() ); + std::string OccupancyCacheName = name() + "OccupancyData"; + m_occupancyCacheRead = OccupancyCacheName; + m_occupancyCacheWrite = OccupancyCacheName; + ATH_CHECK(m_occupancyCacheRead.initialize()); + ATH_CHECK(m_occupancyCacheWrite.initialize()); + return StatusCode::SUCCESS; } @@ -492,11 +498,12 @@ int TRT_LocalOccupancy::mapEtaToPartition(const double t_eta) const { const TRT_LocalOccupancy::OccupancyData* TRT_LocalOccupancy::getData(const EventContext& ctx) const { - SG::ReadHandle<OccupancyData> rh (name() + "OccupancyData"); - if (rh.isValid()) + SG::ReadHandle<OccupancyData> rh (m_occupancyCacheRead,ctx); + if (rh.isValid()){ return rh.cptr(); + } - SG::WriteHandle<OccupancyData> wh (name() + "OccupancyData"); + SG::WriteHandle<OccupancyData> wh (m_occupancyCacheWrite,ctx); return wh.put (makeData(ctx), true); }