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]
41 from pathlib
import Path
42 from PathResolver
import PathResolver
45 with filePath.open()
as f:
51 line = line.split(
",")
53 for i
in range(1, len(line), 2):
54 versions[line[i]] = line[i+1]
if line[i+1] !=
"None" else None
55 data[
int(line[0])] = versions
60 for generator
in generators:
61 env_variable = f
"{generator.upper()}VER"
62 output[generator] =
getenv(env_variable,
None)
67 metadataStringSplit = metadataString.split(
"+")
68 for s
in metadataStringSplit:
69 match = versionRegex.search(s)
71 s = s.replace(match.group(0),
"")
72 output[s] = match.group(1)
79 for generator, version
in generatorsDictionary.items():
80 if version
is not None:
81 list.append(f
"{generator}(v.{version})")
83 list.append(generator)
87 return "+".
join(generatorsVersionedList)
91 from AthenaCommon.Logging
import logging
92 log = logging.getLogger(
"GeneratorsInfo")
93 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
95 generatorsData = flags.Input.GeneratorsInfo
96 log.info(f
"Generators data: {generatorsData}")
98 missingVersion =
False
99 for k, v
in generatorsData.items():
100 if v
is None and k
not in ignoredGenerators:
101 missingVersion =
True
103 if not missingVersion:
106 log.info(
"At least one MC generator is missing version information. Attempting to fix...")
108 from PyUtils.AMITagHelperConfig
import inputAMITags
111 if tags
and tags[0].startswith(
"e"):
116 if flags.Input.MCChannelNumber
and flags.Input.MCChannelNumber
in releaseDataSampleGeneratorOverridesDict:
117 overrides = releaseDataSampleGeneratorOverridesDict[flags.Input.MCChannelNumber]
118 log.warning(f
"Overriding generators to {'+'.join(overrides.keys())}.")
120 for generator, version
in overrides.items():
121 if version
is not None:
122 log.warning(f
"Overriding version for {generator} to {version}.")
123 generatorsData[generator] = version
127 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg
132 if flags.Input.MCChannelNumber
and flags.Input.MCChannelNumber
in releaseDataSampleTagOverridesDict:
133 log.warning(f
"Overriding e-tag for sample {flags.Input.MCChannelNumber} to {releaseDataSampleTagOverridesDict[flags.Input.MCChannelNumber]}.")
134 tag = releaseDataSampleTagOverridesDict[flags.Input.MCChannelNumber]
138 if tag
not in releaseDataDict:
139 log.warning(f
"Could not find release data for tag {tag}.")
143 releaseData = releaseDataDict[tag]
144 for k, v
in generatorsData.items():
145 if v
is None and k
not in ignoredGenerators
and k
in releaseData:
146 log.info(f
"Setting version for {k} to {releaseData[k]}.")
147 generatorsData[k] = releaseData[k]
151 from EventInfoMgt.TagInfoMgrConfig
import TagInfoMgrCfg