From 18f33847a3ea775703da71fc24351c17c113a146 Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller Date: Wed, 22 Apr 2026 10:49:16 +0200 Subject: [PATCH 1/4] Set the CellID encoding parameters at `finalize` in `Lcio2EDM4hep.cpp` Since due to 4c89e08c2a29b4c4b3c82bac06a59797faf2dd82 in k4FWCore, it is not possible to set parameters in the event loop anymore. --- .../k4MarlinWrapper/converters/Lcio2EDM4hep.h | 2 ++ k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h index 3b6b24d8..2b7a2e82 100644 --- a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h +++ b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h @@ -64,6 +64,8 @@ class Lcio2EDM4hepTool : public AlgTool, virtual public IEDMConverter { SmartIF m_metadataSvc; PodioDataSvc* m_podioDataSvc; + std::map m_cellIDEncodings{}; + // ********************************** // Check if a collection was already registered to skip it // ********************************** diff --git a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp index baf18dc8..3ee2f0e2 100644 --- a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp +++ b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp @@ -64,7 +64,12 @@ StatusCode Lcio2EDM4hepTool::initialize() { return AlgTool::initialize(); } -StatusCode Lcio2EDM4hepTool::finalize() { return AlgTool::finalize(); } +StatusCode Lcio2EDM4hepTool::finalize() { + for (const auto& [key, value] : m_cellIDEncodings) { + k4FWCore::putParameter(key, value, this); + } + return AlgTool::finalize(); +} // ********************************** // Check if a collection was already registered to skip it @@ -115,8 +120,7 @@ void Lcio2EDM4hepTool::registerCollection( mdFrame.putParameter(podio::collMetadataParamName(name, edm4hep::labels::CellIDEncoding), lcio_coll_cellid_str); } else { - k4FWCore::putParameter(podio::collMetadataParamName(name, edm4hep::labels::CellIDEncoding), - lcio_coll_cellid_str); + m_cellIDEncodings[podio::collMetadataParamName(name, edm4hep::labels::CellIDEncoding)] = lcio_coll_cellid_str; } debug() << "Storing CellIDEncoding " << podio::collMetadataParamName(name, edm4hep::labels::CellIDEncoding) << " value: " << lcio_coll_cellid_str << endmsg; From 1238db69fe6685fafdee2e09c463ee77a9669299 Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller Date: Mon, 27 Apr 2026 16:19:48 +0200 Subject: [PATCH 2/4] Comment block --- k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp index 3ee2f0e2..e00afd79 100644 --- a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp +++ b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp @@ -247,11 +247,12 @@ StatusCode Lcio2EDM4hepTool::convertCollections(lcio::LCEventImpl* the_event) { for (const auto& [collName, pidInfo] : pidInfos) { edm4hep::utils::PIDHandler::setAlgoInfo(metadataFrame, collName, pidInfo); } - } else { - for (const auto& [collName, pidInfo] : pidInfos) { - m_metadataSvc->put(collName, pidInfo); - } } + // else { + // for (const auto& [collName, pidInfo] : pidInfos) { + // m_metadataSvc->put(collName, pidInfo); + // } + // } auto& globalObjMap = getGlobalObjectMap(this); From 5dc29ba3e951269e098e7a771ce6b7697b4e191b Mon Sep 17 00:00:00 2001 From: Juan Miguel Carceller Date: Wed, 29 Apr 2026 08:50:39 +0200 Subject: [PATCH 3/4] Revert "Comment block" This reverts commit cdc11091ff109769a4a01094fdfaeb1d28bbff64. --- k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp index e00afd79..3ee2f0e2 100644 --- a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp +++ b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp @@ -247,12 +247,11 @@ StatusCode Lcio2EDM4hepTool::convertCollections(lcio::LCEventImpl* the_event) { for (const auto& [collName, pidInfo] : pidInfos) { edm4hep::utils::PIDHandler::setAlgoInfo(metadataFrame, collName, pidInfo); } + } else { + for (const auto& [collName, pidInfo] : pidInfos) { + m_metadataSvc->put(collName, pidInfo); + } } - // else { - // for (const auto& [collName, pidInfo] : pidInfos) { - // m_metadataSvc->put(collName, pidInfo); - // } - // } auto& globalObjMap = getGlobalObjectMap(this); From 082db2655d9a5ca59a651f4246534a77bcff470c Mon Sep 17 00:00:00 2001 From: Thomas Madlener Date: Thu, 23 Apr 2026 14:58:21 +0200 Subject: [PATCH 4/4] Also move storage of ParticleID meta info to finalize --- .../k4MarlinWrapper/converters/Lcio2EDM4hep.h | 3 +++ .../src/components/Lcio2EDM4hep.cpp | 19 ++++--------------- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h index 2b7a2e82..31308e05 100644 --- a/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h +++ b/k4MarlinWrapper/k4MarlinWrapper/converters/Lcio2EDM4hep.h @@ -26,6 +26,8 @@ #include "k4MarlinWrapper/converters/IEDMConverter.h" +#include + #include #include @@ -65,6 +67,7 @@ class Lcio2EDM4hepTool : public AlgTool, virtual public IEDMConverter { PodioDataSvc* m_podioDataSvc; std::map m_cellIDEncodings{}; + std::map m_pidMetas{}; // ********************************** // Check if a collection was already registered to skip it diff --git a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp index 3ee2f0e2..ddc3fab7 100644 --- a/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp +++ b/k4MarlinWrapper/src/components/Lcio2EDM4hep.cpp @@ -68,6 +68,9 @@ StatusCode Lcio2EDM4hepTool::finalize() { for (const auto& [key, value] : m_cellIDEncodings) { k4FWCore::putParameter(key, value, this); } + for (const auto& [coll, pidMeta] : m_pidMetas) { + k4FWCore::putParameter(coll, pidMeta, this); + } return AlgTool::finalize(); } @@ -195,8 +198,6 @@ StatusCode Lcio2EDM4hepTool::convertCollections(lcio::LCEventImpl* the_event) { // were empty bool needCaloHitContribs = false; - std::map pidInfos{}; - for (const auto& [lcioName, edm4hepName] : collsToConvert) { try { auto* lcio_coll = the_event->getCollection(lcioName); @@ -221,7 +222,7 @@ StatusCode Lcio2EDM4hepTool::convertCollections(lcio::LCEventImpl* the_event) { // Collect the ParticleID meta information because that has to go to the // ParticleID collections for (const auto& pidInfo : LCIO2EDM4hepConv::getPIDMetaInfo(lcio_coll)) { - pidInfos.try_emplace(LCIO2EDM4hepConv::getPIDCollName(lcioName, pidInfo.algoName), pidInfo); + m_pidMetas.try_emplace(LCIO2EDM4hepConv::getPIDCollName(lcioName, pidInfo.algoName), pidInfo); } } @@ -241,18 +242,6 @@ StatusCode Lcio2EDM4hepTool::convertCollections(lcio::LCEventImpl* the_event) { } } - // Set the ParticleID meta information - if (m_podioDataSvc) { - auto& metadataFrame = m_podioDataSvc->getMetaDataFrame(); - for (const auto& [collName, pidInfo] : pidInfos) { - edm4hep::utils::PIDHandler::setAlgoInfo(metadataFrame, collName, pidInfo); - } - } else { - for (const auto& [collName, pidInfo] : pidInfos) { - m_metadataSvc->put(collName, pidInfo); - } - } - auto& globalObjMap = getGlobalObjectMap(this); globalObjMap.update(lcio2edm4hepMaps);