ATLAS Offline Software
Functions | Variables
python.Versioning Namespace Reference

Functions

def legacyReleaseData ()
 
def legacyReleaseDataSampleTagOverrides ()
 
def legacyReleaseDataSampleGeneratorOverrides ()
 
def generatorsGetInitialVersionedDictionary (generators)
 
def generatorsGetFromMetadata (metadataString)
 
def generatorsVersionedStringList (generatorsDictionary)
 
def generatorsVersionedString (generatorsVersionedList)
 
def GeneratorVersioningFixCfg (flags)
 

Variables

 versionRegex = re.compile(r'\‍(v\.(.*)\‍)$')
 
list ignoredGenerators = ["Pythia8B", "Powheg"]
 

Function Documentation

◆ generatorsGetFromMetadata()

def python.Versioning.generatorsGetFromMetadata (   metadataString)

Definition at line 65 of file Versioning.py.

65 def generatorsGetFromMetadata(metadataString):
66  output = {}
67  metadataStringSplit = metadataString.split("+")
68  for s in metadataStringSplit:
69  match = versionRegex.search(s)
70  if match:
71  s = s.replace(match.group(0), "")
72  output[s] = match.group(1)
73  else:
74  output[s] = None
75  return output
76 

◆ generatorsGetInitialVersionedDictionary()

def python.Versioning.generatorsGetInitialVersionedDictionary (   generators)

Definition at line 58 of file Versioning.py.

59  output = {}
60  for generator in generators:
61  env_variable = f"{generator.upper()}VER"
62  output[generator] = getenv(env_variable, None)
63  return output
64 

◆ generatorsVersionedString()

def python.Versioning.generatorsVersionedString (   generatorsVersionedList)

Definition at line 86 of file Versioning.py.

86 def generatorsVersionedString(generatorsVersionedList):
87  return "+".join(generatorsVersionedList)
88 
89 

◆ generatorsVersionedStringList()

def python.Versioning.generatorsVersionedStringList (   generatorsDictionary)

Definition at line 77 of file Versioning.py.

77 def generatorsVersionedStringList(generatorsDictionary):
78  list = []
79  for generator, version in generatorsDictionary.items():
80  if version is not None:
81  list.append(f"{generator}(v.{version})")
82  else:
83  list.append(generator)
84  return list
85 

◆ GeneratorVersioningFixCfg()

def python.Versioning.GeneratorVersioningFixCfg (   flags)

Definition at line 90 of file Versioning.py.

90 def GeneratorVersioningFixCfg(flags):
91  from AthenaCommon.Logging import logging
92  log = logging.getLogger("GeneratorsInfo")
93  from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
94 
95  generatorsData = flags.Input.GeneratorsInfo
96  log.info(f"Generators data: {generatorsData}")
97 
98  missingVersion = False
99  for k, v in generatorsData.items():
100  if v is None and k not in ignoredGenerators:
101  missingVersion = True
102 
103  if not missingVersion:
104  return ComponentAccumulator()
105 
106  log.info("At least one MC generator is missing version information. Attempting to fix...")
107 
108  from PyUtils.AMITagHelperConfig import inputAMITags
109  tags = inputAMITags(flags, fixBroken=True, silent=True)
110  tag = None
111  if tags and tags[0].startswith("e"):
112  tag = tags[0]
113 
114  # Fix specific samples directly
115  releaseDataSampleGeneratorOverridesDict = legacyReleaseDataSampleGeneratorOverrides()
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())}.")
119  generatorsData = {}
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
124 
125  outputStringList = generatorsVersionedStringList(generatorsData)
126 
127  from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
128  return TagInfoMgrCfg(flags, tagValuePairs={"generators": generatorsVersionedString(outputStringList)})
129 
130  # Fix specific samples' e-tag
131  releaseDataSampleTagOverridesDict = legacyReleaseDataSampleTagOverrides()
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]
135 
136  # Retrieve generators release data
137  releaseDataDict = legacyReleaseData()
138  if tag not in releaseDataDict:
139  log.warning(f"Could not find release data for tag {tag}.")
140  return ComponentAccumulator()
141 
142  # Apply release data to missing generators
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]
148 
149  outputStringList = generatorsVersionedStringList(generatorsData)
150 
151  from EventInfoMgt.TagInfoMgrConfig import TagInfoMgrCfg
152  return TagInfoMgrCfg(flags, tagValuePairs={"generators": generatorsVersionedString(outputStringList)})

◆ legacyReleaseData()

def python.Versioning.legacyReleaseData ( )

Definition at line 10 of file Versioning.py.

10 def legacyReleaseData():
11  from pathlib import Path
12  from PathResolver import PathResolver
13  filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_AthGeneration_versions.txt"))
14  data = {}
15  with filePath.open() as f:
16  header = f.readline().strip().split(",")
17  generators = header[2:]
18  for line in f:
19  line = line.strip().split(",")
20  item = {generator: version for generator, version in zip(generators, line[2:])}
21  item['version'] = line[0]
22  data[line[1]] = item
23  return data
24 

◆ legacyReleaseDataSampleGeneratorOverrides()

def python.Versioning.legacyReleaseDataSampleGeneratorOverrides ( )

Definition at line 40 of file Versioning.py.

41  from pathlib import Path
42  from PathResolver import PathResolver
43  filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_SampleGeneratorOverrides.txt"))
44  data = {}
45  with filePath.open() as f:
46  f.readline() # skip header
47  for line in f:
48  line = line.strip()
49  if line[0] == "#":
50  continue
51  line = line.split(",")
52  versions = {}
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
56  return data
57 

◆ legacyReleaseDataSampleTagOverrides()

def python.Versioning.legacyReleaseDataSampleTagOverrides ( )

Definition at line 25 of file Versioning.py.

26  from pathlib import Path
27  from PathResolver import PathResolver
28  filePath = Path(PathResolver.FindCalibFile("GeneratorConfig/Legacy_SampleTagOverrides.txt"))
29  data = {}
30  with filePath.open() as f:
31  f.readline() # skip header
32  for line in f:
33  line = line.strip()
34  if line[0] == "#":
35  continue
36  line = line.split(",")
37  data[int(line[0])] = line[1]
38  return data
39 

Variable Documentation

◆ ignoredGenerators

list python.Versioning.ignoredGenerators = ["Pythia8B", "Powheg"]

Definition at line 7 of file Versioning.py.

◆ versionRegex

python.Versioning.versionRegex = re.compile(r'\‍(v\.(.*)\‍)$')

Definition at line 5 of file Versioning.py.

PathResolver::FindCalibFile
static std::string FindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.h:63
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TagInfoMgrConfig.TagInfoMgrCfg
def TagInfoMgrCfg(flags, tagValuePairs={})
Definition: TagInfoMgrConfig.py:6
python.Versioning.generatorsVersionedString
def generatorsVersionedString(generatorsVersionedList)
Definition: Versioning.py:86
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:194
python.Versioning.generatorsGetInitialVersionedDictionary
def generatorsGetInitialVersionedDictionary(generators)
Definition: Versioning.py:58
python.Versioning.GeneratorVersioningFixCfg
def GeneratorVersioningFixCfg(flags)
Definition: Versioning.py:90
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.Versioning.generatorsVersionedStringList
def generatorsVersionedStringList(generatorsDictionary)
Definition: Versioning.py:77
python.Versioning.legacyReleaseData
def legacyReleaseData()
Definition: Versioning.py:10
python.Versioning.legacyReleaseDataSampleGeneratorOverrides
def legacyReleaseDataSampleGeneratorOverrides()
Definition: Versioning.py:40
SCT_ConditionsAlgorithms::CoveritySafe::getenv
std::string getenv(const std::string &variableName)
get an environment variable
Definition: SCT_ConditionsUtilities.cxx:17
python.CaloAddPedShiftConfig.int
int
Definition: CaloAddPedShiftConfig.py:45
python.AMITagHelperConfig.inputAMITags
def inputAMITags(flags, fixBroken=False, silent=False)
Definition: AMITagHelperConfig.py:38
python.Versioning.generatorsGetFromMetadata
def generatorsGetFromMetadata(metadataString)
Definition: Versioning.py:65
python.Versioning.legacyReleaseDataSampleTagOverrides
def legacyReleaseDataSampleTagOverrides()
Definition: Versioning.py:25
Trk::split
@ split
Definition: LayerMaterialProperties.h:38