From b249c1504bf248785efcd9d7796b39f4ae3046be Mon Sep 17 00:00:00 2001 From: John Chapman <jchapman@cern.ch> Date: Thu, 20 Sep 2018 15:46:10 +0200 Subject: [PATCH] Patch /TagInfo metadata container with information from the input HITS file The `/TagInfo` metadata container written out by MC Overlay jobs is currently based upon the container from the pre-mixed RDO file. This commit adds any additional key-value pairs from the `/TagInfo` metadata container of the input hard-scatter HITS file. A more robust solution where the two input containers are somehow merged will be sought, but this commit should fix most issues in the short term. Former-commit-id: 1ead2cc9abd5ad03a73811b3625e52c3eecd1458 --- .../python/OverlayPoolReadMetaData.py | 17 +++++++++++++---- .../share/skeleton.OverlayPool_tf.py | 10 ++++++++++ .../OverlayCommonAlgs/python/OverlayFlags.py | 7 +++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Event/EventOverlay/EventOverlayJobTransforms/python/OverlayPoolReadMetaData.py b/Event/EventOverlay/EventOverlayJobTransforms/python/OverlayPoolReadMetaData.py index 6074548c6066..1f85bffd76eb 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/python/OverlayPoolReadMetaData.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/python/OverlayPoolReadMetaData.py @@ -396,14 +396,23 @@ def tagInfoMetaDataCheck(sigtaginfodict,pileuptaginfodict): result = True """Check the metadata for pre-mixed pileup RDO File""" pileupkeys = pileuptaginfodict.keys() + logOverlayPoolReadMetadata.debug("Signal /TagInfo ", sigtaginfodict) + logOverlayPoolReadMetadata.debug("Pileup /TagInfo ", pileuptaginfodict) sigkeys = sigtaginfodict.keys() pileupType = "PreMixed" + sigOnlyDict = dict() sigOnlyKeySet = set(sigkeys).difference(set(pileupkeys)) - logOverlayPoolReadMetadata.info("The following keys only appear in Signal /TagInfo MetaData:") - print sigOnlyKeySet + logOverlayPoolReadMetadata.debug("The following keys only appear in Signal /TagInfo MetaData:") + logOverlayPoolReadMetadata.debug(sigOnlyKeySet) + for key in sigOnlyKeySet: + sigOnlyDict[key] = sigtaginfodict[key] + logOverlayPoolReadMetadata.debug("key: ", key, "value: ", sigtaginfodict[key]) + pass + from OverlayCommonAlgs.OverlayFlags import overlayFlags + overlayFlags.extraTagInfoPairs = sigOnlyDict keysToCompareSet = set(sigkeys).intersection(set(pileupkeys)) - logOverlayPoolReadMetadata.info("The following keys appear in Signal and PreMixed /TagInfo MetaData:") - print keysToCompareSet + logOverlayPoolReadMetadata.debug("The following keys appear in Signal and PreMixed /TagInfo MetaData:") + logOverlayPoolReadMetadata.debug(keysToCompareSet) return result def readInputFileMetadata(): diff --git a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py index a03e83d9bb01..b33dc8003e42 100644 --- a/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py +++ b/Event/EventOverlay/EventOverlayJobTransforms/share/skeleton.OverlayPool_tf.py @@ -206,5 +206,15 @@ if hasattr(runArgs, "postExec") and runArgs.postExec != 'NONE': for cmd in runArgs.postExec: exec(cmd) +from AthenaCommon.AppMgr import ServiceMgr + +#Patch /TagInfo metadata container +from OverlayCommonAlgs.OverlayFlags import overlayFlags +for key in overlayFlags.extraTagInfoPairs.get_Value().keys(): + ServiceMgr.TagInfoMgr.ExtraTagValuePairs += [str(key), str(overlayFlags.extraTagInfoPairs.get_Value()[key])] +if hasattr(runArgs, 'AMITag'): + if runArgs.AMITag != "NONE": + ServiceMgr.TagInfoMgr.ExtraTagValuePairs += ["AMITag", runArgs.AMITag] + #print "OverlayPool_tf.py: at the end. job=\n", job print "\nOverlayPool_tf.py: at the end. ServiceMgr=\n", ServiceMgr diff --git a/Event/EventOverlay/OverlayCommonAlgs/python/OverlayFlags.py b/Event/EventOverlay/OverlayCommonAlgs/python/OverlayFlags.py index b884efddfa71..96158c32cbef 100644 --- a/Event/EventOverlay/OverlayCommonAlgs/python/OverlayFlags.py +++ b/Event/EventOverlay/OverlayCommonAlgs/python/OverlayFlags.py @@ -57,6 +57,13 @@ class outputStore(JobProperty): allowedTypes=['str'] StoredValue = 'StoreGateSvc' +class extraTagInfoPairs(JobProperty): + """ workaround to correctly populate the /TagInfo metadata container + """ + statusOn=False + allowedTypes=['dict'] + StoredValue=dict() + ## Definition and registration of the simulation flag container class Overlay_Flags(JobPropertyContainer): -- GitLab