5 versionRegex = re.compile(
r'\(v\.(.*)\)$')
7 ignoredGenerators = [
"Pythia8B",
"Powheg"]
11 from pathlib
import Path
12 from PathResolver
import PathResolver
15 with filePath.open()
as f:
16 header = f.readline().strip().
split(
",")
17 generators = header[2:]
19 line = line.strip().
split(
",")
20 item = {generator: version
for generator, version
in zip(generators, line[2:])}
21 item[
'version'] = line[0]
26 from pathlib
import Path
27 from PathResolver
import PathResolver
30 with filePath.open()
as f:
36 line = line.split(
",")
37 data[
int(line[0])] = line[1]
42 for generator
in generators:
43 env_variable = f
"{generator.upper()}VER"
44 output[generator] =
getenv(env_variable,
None)
49 metadataStringSplit = metadataString.split(
"+")
50 for s
in metadataStringSplit:
51 match = versionRegex.search(s)
53 s = s.replace(match.group(0),
"")
54 output[s] = match.group(1)
61 for generator, version
in generatorsDictionary.items():
62 if version
is not None:
63 list.append(f
"{generator}(v.{version})")
65 list.append(generator)
69 return "+".
join(generatorsVersionedList)
73 from AthenaCommon.Logging
import logging
74 log = logging.getLogger(
"GeneratorsInfo")
75 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
77 generatorsData = flags.Input.GeneratorsInfo
78 log.info(f
"Generators data: {generatorsData}")
80 missingVersion =
False
81 for k, v
in generatorsData.items():
82 if v
is None and k
not in ignoredGenerators:
85 if not missingVersion:
88 log.info(
"At least one MC generator is missing version information. Attempting to fix...")
90 from PyUtils.AMITagHelperConfig
import inputAMITags
93 if tags
and tags[0].startswith(
"e"):
98 if flags.Input.MCChannelNumber
and flags.Input.MCChannelNumber
in releaseDataSampleOverridesDict:
99 log.warning(f
"Overriding e-tag for sample {flags.Input.MCChannelNumber} to {releaseDataSampleOverridesDict[flags.Input.MCChannelNumber]}.")
100 tag = releaseDataSampleOverridesDict[flags.Input.MCChannelNumber]
103 if tag
not in releaseDataDict:
104 log.warning(f
"Could not find release data for tag {tag}.")
107 releaseData = releaseDataDict[tag]
108 for k, v
in generatorsData.items():
109 if v
is None and k
not in ignoredGenerators
and k
in releaseData:
110 log.info(f
"Setting version for {k} to {releaseData[k]}.")
111 generatorsData[k] = releaseData[k]
115 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg