From 33ba58758736793d2a4f1dcfe0aa5fb5dd119d1c Mon Sep 17 00:00:00 2001 From: Thomas Madlener Date: Wed, 19 Jul 2023 18:44:10 +0200 Subject: [PATCH] Make MetaDataHandle handle all keys correctly (#124) - Mark getters as const --- k4FWCore/include/k4FWCore/MetaDataHandle.h | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/k4FWCore/include/k4FWCore/MetaDataHandle.h b/k4FWCore/include/k4FWCore/MetaDataHandle.h index 6f6f87cb..1bc625b4 100644 --- a/k4FWCore/include/k4FWCore/MetaDataHandle.h +++ b/k4FWCore/include/k4FWCore/MetaDataHandle.h @@ -18,11 +18,11 @@ template class MetaDataHandle { MetaDataHandle(const Gaudi::DataHandle& handle, const std::string& descriptor, Gaudi::DataHandle::Mode a); ~MetaDataHandle(); - const T get(); + const T get() const; void put(T); private: - std::string fullDescriptor(); + std::string fullDescriptor() const; void checkPodioDataSvc(); private: @@ -55,8 +55,8 @@ MetaDataHandle::MetaDataHandle(const Gaudi::DataHandle& handle, const std::st } //--------------------------------------------------------------------------- -template const T MetaDataHandle::get() { - podio::Frame& frame = m_podio_data_service->getMetaDataFrame(); +template const T MetaDataHandle::get() const { + const auto& frame = m_podio_data_service->getMetaDataFrame(); return frame.getParameter(fullDescriptor()); } @@ -77,18 +77,17 @@ template void MetaDataHandle::put(T value) { } //--------------------------------------------------------------------------- -template std::string MetaDataHandle::fullDescriptor() { - std::string full_descriptor; +template std::string MetaDataHandle::fullDescriptor() const { if (nullptr != m_dataHandle) { - full_descriptor = podio::collMetadataParamName(m_dataHandle->objKey(), m_descriptor); + auto full_descriptor = podio::collMetadataParamName(m_dataHandle->objKey(), m_descriptor); // remove the "/Event/" part of the collections' object key if in read mode - if (m_mode == Gaudi::DataHandle::Reader) { + if (m_mode == Gaudi::DataHandle::Reader && full_descriptor.find("/Event/") == 0u) { full_descriptor.erase(0, 7); } - } else { - full_descriptor = m_descriptor; + return full_descriptor; } - return full_descriptor; + + return m_descriptor; } //---------------------------------------------------------------------------