Serialize IOV metadata to ByteStream files for RDO to BS conversion
When converting MC RDO files to ByteStream format, IOV metadata (e.g., /Digitization/Parameters) is missing, causing issues for algorithms (e.g. LuminosityCondAlg) that need this data when processing ByteStream files.
This MR adds serialization of IOV metadata to ByteStream metadata:
IOVDbMetaDataTool:
- Add
serializeIOVMetadataToBSMetadata()to serialize configured IOV folders to JSON format - Store JSON strings in MetaDataStore as
std::vector<std::string>named "IOVMetaDataStrings" - Format:
IOVMeta.<FolderName>=<JSON>where JSON contains payloads with IOVs and attributes - Add property
FoldersToSerializeToBSMetadatato configure which folders to serialize
LuminosityCondAlg and BunchCrossingCondAlg:
- Add fallback to read digitization parameters from
ByteStreammetadata when folders unavailable - Try traditional
/Digitization/Parametersfolder first, fall back toByteStreammetadata - Parse JSON from
freeMetaDataStringsto extractBeamIntensityPattern
ByteStreamEventStorageOutputSvc:
- Read
beam_typeandbeam_energyfromTagInfoand store inByteStreammetadata - Retrieves IOV metadata strings from MetaDataStore
- Adds them to
freeMetaDataStrings
Configuration:
- Configuration of
IOVDbMetaDataToolto serialize/Digitization/Parameterscan be done via e.g.:
# Configure IOVDbMetaDataTool to serialize IOV metadata to ByteStream
iovDbTool = cfg.getPublicTool("IOVDbMetaDataTool")
iovDbTool.FoldersToSerializeToBSMetadata = ["/Digitization/Parameters"]
log.info("Configured IOVDbMetaDataTool to serialize folders to ByteStream metadata: %s",
iovDbTool.FoldersToSerializeToBSMetadata)
which could be added to RDOtoBS_Skeleton.py (see !84643)
-
LuminosityCondAlgConfig.py,BunchCrossingCondAlgConfig.py: EnableByteStreammetadata reading for MC
Misc:
-
MetaReader.py,AthFileLite.py: Fix parsing of metadata with '=' in values usingsplit('=', 1)
Edited by Maciej Pawel Szymanski