ATLAS Offline Software
Loading...
Searching...
No Matches
ParameterWriterConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3"""Configuration for writing parameters as in-file metadata"""
4
5
6def writeParametersToMetaData(flags, folderName, parameters, beginRun, endRun):
7 """
8 Configure IOVDbMetaDataTool to write parameters as in-file metadata.
9
10 Args:
11 flags: Configuration flags
12 folderName: Folder path (e.g., '/Simulation/Parameters')
13 parameters: Dictionary of key-value pairs to store as strings
14 beginRun: Begin run number for IOV
15 endRun: End run number for IOV
16
17 Returns:
18 ComponentAccumulator with configured IOVDbSvc and IOVDbMetaDataTool
19 """
20 from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
21
22 acc = IOVDbSvcCfg(flags, FoldersToMetaData=[folderName])
23
24 # Get the IOVDbMetaDataTool and configure its Payloads property
25 metaDataTool = acc.getPublicTool("IOVDbMetaDataTool")
26
27 # Build the payload dict in "folder:key" -> "value" format
28 payloadDict = {
29 f"{folderName}:beginRun": str(beginRun),
30 f"{folderName}:endRun": str(endRun)
31 }
32 for key, value in parameters.items():
33 payloadDict[f"{folderName}:{key}"] = value
34
35 # Set the Payloads property (map of string->string)
36 metaDataTool.Payloads = payloadDict
37
38 # Add TagInfo entry for consistency with sqlite mode
39 from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
40 tagAcc = TagInfoMgrCfg(flags)
41 tagInfoMgr = tagAcc.getService("TagInfoMgr")
42 currentPairs = dict(tagInfoMgr.ExtraTagValuePairs) if tagInfoMgr.ExtraTagValuePairs else {}
43 currentPairs[folderName] = "HEAD"
44 tagInfoMgr.ExtraTagValuePairs = currentPairs
45 acc.merge(tagAcc)
46
47 return acc
writeParametersToMetaData(flags, folderName, parameters, beginRun, endRun)