ATLAS Offline Software
Loading...
Searching...
No Matches
python.OverlayMetadata Namespace Reference

Functions

 validateGeometryTag (logger, target, value)
 overlayInputMetadataCheck (flags, simDict, tagInfoDict)
 simulationMetadataCheck (sigdict, pudict)
 tagInfoMetadataCheck (sigdict, pudict)
 overlayMetadataCheck (flags)
 fastChainOverlayMetadataCheck (flags)
 writeOverlayDigitizationMetadata (flags, pileupDict)

Variables

 logger = logging.getLogger("OverlayMetadataConfig")

Function Documentation

◆ fastChainOverlayMetadataCheck()

python.OverlayMetadata.fastChainOverlayMetadataCheck ( flags)
Check fastchain overlay metadata

Definition at line 213 of file OverlayMetadata.py.

213def fastChainOverlayMetadataCheck(flags):
214 """Check fastchain overlay metadata"""
215 if flags.Overlay.ByteStream:
216 filesPileup = flags.Input.SecondaryFiles
217 else:
218 filesPileup = flags.Input.Files
219
220 # pile-up check
221 if not flags.Overlay.DataOverlay and filesPileup:
222 pileupMetaDataCheck = GetFileMD(filesPileup, maxLevel="full")
223 pileupDigitizationMetadata = pileupMetaDataCheck.get("/Digitization/Parameters", {})
224 pileupSimulationMetadata = pileupMetaDataCheck.get("/Simulation/Parameters", {})
225 pileupTagInfoMetadata = pileupMetaDataCheck.get("/TagInfo", {})
226
227 logger.info("Checking Presampled pile-up metadata against configuration of jobs (i.e. flags)...")
228 overlayInputMetadataCheck(flags, pileupSimulationMetadata, pileupTagInfoMetadata)
229 logger.info("Completed all checks against Presampled pile-up Simulation metadata.")
230
231 if pileupDigitizationMetadata:
232 # Store metadata for later writing in OverlayMainContentCfg
233 flags._Overlay_pileupDigitizationMetadata = pileupDigitizationMetadata
234
235

◆ overlayInputMetadataCheck()

python.OverlayMetadata.overlayInputMetadataCheck ( flags,
simDict,
tagInfoDict )
Check the metadata for signal HITS or presampled pileup RDO file

Definition at line 28 of file OverlayMetadata.py.

28def overlayInputMetadataCheck(flags, simDict, tagInfoDict):
29 """Check the metadata for signal HITS or presampled pileup RDO file"""
30 logger.info("Checking Overlay configuration against Signal or presampled pileup RDO metadata...")
31
32 simKeys = simDict.keys()
33 tagInfoKeys = tagInfoDict.keys()
34
35 # Check the PhysicsList set agrees with that used in the simulation
36 if "PhysicsList" in simKeys:
37 if re.match(simDict["PhysicsList"], flags.Sim.PhysicsList):
38 logger.debug("Overlay configuration matches Signal Simulation metadata. [Sim.PhysicsList = %s]", flags.Sim.PhysicsList)
39 else:
40 flags.Sim.PhysicsList = simDict["PhysicsList"]
41 logger.warning("Overlay Sim.PhysicsList does not match the PhysicsList used in the Signal Simulation step! Assume the value from the Signal Simulation step is correct!")
42 logger.warning("Set Sim.PhysicsList = %s", flags.Sim.PhysicsList)
43 else:
44 logger.error("'PhysicsList' key not found in Signal Simulation metadata!")
45 raise AssertionError("Signal Simulation metadata key not found")
46
47 # Check the DetDescrVersion set agrees with that used in the simulation
48 if "SimLayout" in simKeys:
49 if validateGeometryTag(logger, simDict["SimLayout"], flags.GeoModel.AtlasVersion):
50 logger.debug("Overlay configuration matches Signal Simulation metadata. [Geomodel.AtlasVersion = %s]",
51 flags.GeoModel.AtlasVersion)
52 else:
53 flags.GeoModel.AtlasVersion = simDict["SimLayout"]
54 logger.warning("Overlay Geomodel.AtlasVersion does not match the value used in the Signal Simulation step! Assume the value from the Signal Simulation step is correct!")
55 logger.warning("Set Geomodel.AtlasVersion = %s", flags.GeoModel.AtlasVersion)
56 else:
57 logger.error("'SimLayout' key not found in Signal Simulation metadata!")
58 raise AssertionError("Signal Simulation metadata key not found")
59
60 # Check the Conditions Tag set against that used in the simulation
61 if "IOVDbGlobalTag" in tagInfoKeys:
62 if not re.match(tagInfoDict["IOVDbGlobalTag"], flags.IOVDb.GlobalTag):
63 logger.debug("Overlay configuration: [IOVDb.GlobalTag = %s], Signal Simulation metadata: [IOVDb.GlobalTag = %s]",
64 flags.IOVDb.GlobalTag, tagInfoDict['IOVDbGlobalTag'])
65 else:
66 logger.error("'IOVDbGlobalTag' key not found in Signal Simulation metadata!")
67 raise AssertionError("Signal Simulation metadata key not found")
68
69 # Set the TRTRangeCut digitizationFlag based on what was used during the simulation.
70 if "TRTRangeCut" in simKeys:
71 if not re.match(simDict["TRTRangeCut"], str(flags.Sim.TRTRangeCut)):
72 flags.Sim.TRTRangeCut = simDict["TRTRangeCut"]
73 logger.warning("Overlay Sim.TRTRangeCut does not match the value used in the Signal Simulation step! Assume the value from the Signal Simulation step is correct!")
74 logger.warning("Set Sim.TRTRangeCut = %s", flags.Sim.TRTRangeCut)
75 else:
76 logger.warning("'TRTRangeCut' key not found in Signal Simulation metadata!")
77
78 # Check which sub-detectors were simulated
79 # TODO: needed?
80
81 logger.info("Completed checks of Overlay configuration against Signal Simulation metadata.")
82
83

◆ overlayMetadataCheck()

python.OverlayMetadata.overlayMetadataCheck ( flags)
Check overlay metadata

Definition at line 176 of file OverlayMetadata.py.

176def overlayMetadataCheck(flags):
177 """Check overlay metadata"""
178 if flags.Overlay.ByteStream:
179 files = flags.Input.Files
180 filesPileup = flags.Input.SecondaryFiles
181 else:
182 files = flags.Input.SecondaryFiles
183 filesPileup = flags.Input.Files
184
185 if files:
186 signalMetadata = GetFileMD(files, maxLevel="full")
187 signalSimulationMetadata = signalMetadata.get("/Simulation/Parameters", {})
188 signalTagInfoMetadata = signalMetadata.get("/TagInfo", {})
189 # signal check
190 overlayInputMetadataCheck(flags, signalSimulationMetadata, signalTagInfoMetadata)
191 else:
192 # This can be the case for the FastChain with overlay
193 # It is not an error.
194 logger.info("Simulation metadata check not done due to no inputs")
195
196 # pile-up check
197 if not flags.Overlay.DataOverlay and filesPileup:
198 pileupMetaDataCheck = GetFileMD(filesPileup, maxLevel="full")
199 pileupDigitizationMetadata = pileupMetaDataCheck.get("/Digitization/Parameters", {})
200 pileupSimulationMetadata = pileupMetaDataCheck.get("/Simulation/Parameters", {})
201 pileupTagInfoMetadata = pileupMetaDataCheck.get("/TagInfo", {})
202
203 logger.info("Checking Presampled pile-up metadata against Signal Simulation metadata...")
204 simulationMetadataCheck(signalSimulationMetadata, pileupSimulationMetadata)
205 tagInfoMetadataCheck(signalTagInfoMetadata, pileupTagInfoMetadata)
206 logger.info("Completed all checks against Presampled pile-up Simulation metadata.")
207
208 if pileupDigitizationMetadata:
209 # Store metadata for later writing in OverlayMainContentCfg
210 flags._Overlay_pileupDigitizationMetadata = pileupDigitizationMetadata
211
212

◆ simulationMetadataCheck()

python.OverlayMetadata.simulationMetadataCheck ( sigdict,
pudict )
Check the simulation metadata for presampled pileup RDO file

Definition at line 84 of file OverlayMetadata.py.

84def simulationMetadataCheck(sigdict, pudict):
85 """Check the simulation metadata for presampled pileup RDO file"""
86 sigkeys = sigdict.keys()
87 pukeys = pudict.keys()
88
89 # Loop over metadata keys which must have matching values
90 warningKeys = ['G4Version']
91 sigKeysToCheck = ['PhysicsList', 'SimLayout', 'MagneticField', 'hitFileMagicNumber'] + warningKeys
92 for o in sigKeysToCheck:
93 try:
94 assert o in pukeys
95 except AssertionError:
96 logger.error("%s key missing from Presampled pile-up Simulation metadata!", o)
97 raise AssertionError("Presampled pile-up Simulation metadata key not found")
98 try:
99 assert o in sigkeys
100 except AssertionError:
101 logger.error("%s key missing from Signal Simulation metadata!", o)
102 raise AssertionError("Signal Simulation metadata key not found")
103 try:
104 if o == "SimLayout": # allow last part of the simulation tag to differ
105 assert validateGeometryTag(logger, sigdict[o], pudict[o])
106 elif not isinstance(pudict[o], type(sigdict[o])):
107 assert re.match(str(pudict[o]), str(sigdict[o]))
108 else:
109 if isinstance(pudict[o], str):
110 assert re.match(pudict[o], sigdict[o])
111 elif isinstance(pudict[o], int):
112 assert (pudict[o] == sigdict[o])
113 else:
114 assert re.match(str(pudict[o]), str(sigdict[o]))
115 except AssertionError:
116 if o in warningKeys:
117 logger.warning("Simulation metadata mismatch! Presampled pile-up: [%s = %s] Signal: [%s = %s]", o, pudict[o], o, sigdict[o])
118 else:
119 logger.error("Simulation metadata mismatch! Presampled pile-up: [%s = %s] Signal: [%s = %s]", o, pudict[o], o, sigdict[o])
120 raise AssertionError("Simulation metadata mismatch")
121
122

◆ tagInfoMetadataCheck()

python.OverlayMetadata.tagInfoMetadataCheck ( sigdict,
pudict )
Check the tag info metadata for presampled pileup RDO File

Definition at line 123 of file OverlayMetadata.py.

123def tagInfoMetadataCheck(sigdict, pudict):
124 """Check the tag info metadata for presampled pileup RDO File"""
125 sigkeys = sigdict.keys()
126 pukeys = pudict.keys()
127
128 logger.debug("Signal /TagInfo %s", sigdict)
129 logger.debug("Pileup /TagInfo %s", pudict)
130
131 sigOnlyDict = dict()
132 sigOnlyKeySet = set(sigkeys).difference(set(pukeys))
133 logger.debug("The following keys only appear in Signal /TagInfo metadata:")
134 logger.debug(sigOnlyKeySet)
135 for key in sigOnlyKeySet:
136 sigOnlyDict[key] = sigdict[key]
137 logger.debug(" key: %s value: %s", key, sigdict[key])
138 pass
139 # TODO: extra
140 keysToCompareSet = set(sigkeys).intersection(set(pukeys))
141 logger.debug("The following keys appear in Signal and Presampled pile-up /TagInfo metadata:")
142 logger.debug(keysToCompareSet)
143
144 # Loop over metadata keys which must have matching values
145 warningKeys = ['IOVDbGlobalTag']
146 sigKeysToCheck = warningKeys
147 for o in sigKeysToCheck:
148 try:
149 assert o in pukeys
150 except AssertionError:
151 logger.error("%s key missing from Presampled pile-up Simulation metadata!", o)
152 raise AssertionError("Presampled pile-up Simulation metadata key not found")
153 try:
154 assert o in sigkeys
155 except AssertionError:
156 logger.error("%s key missing from Signal Simulation metadata!", o)
157 raise AssertionError("Signal Simulation metadata key not found")
158 try:
159 if not isinstance(pudict[o], type(sigdict[o])):
160 assert re.match(str(pudict[o]), str(sigdict[o]))
161 else:
162 if isinstance(pudict[o], str):
163 assert re.match(pudict[o], sigdict[o])
164 elif isinstance(pudict[o], int):
165 assert (pudict[o] == sigdict[o])
166 else:
167 assert re.match(str(pudict[o]), str(sigdict[o]))
168 except AssertionError:
169 if o in warningKeys:
170 logger.warning("Simulation metadata mismatch! Presampled pile-up: [%s = %s] Signal: [%s = %s]", o, pudict[o], o, sigdict[o])
171 else:
172 logger.error("Simulation metadata mismatch! Presampled pile-up: [%s = %s] Signal: [%s = %s]", o, pudict[o], o, sigdict[o])
173 raise AssertionError("Simulation metadata mismatch")
174
175
STL class.
std::vector< std::string > intersection(std::vector< std::string > &v1, std::vector< std::string > &v2)

◆ validateGeometryTag()

python.OverlayMetadata.validateGeometryTag ( logger,
target,
value )
Validate geometry tag so it is the same as target

Definition at line 11 of file OverlayMetadata.py.

11def validateGeometryTag(logger, target, value):
12 """Validate geometry tag so it is the same as target"""
13 target_layout = target.split('-')
14 value_layout = value.split('-')
15 if len(target_layout) != len(value_layout):
16 return False
17
18 for p, s in zip(target_layout[:-1], value_layout[:-1]):
19 if not re.match(p, s):
20 return False
21
22 if not re.match(target_layout[-1], value_layout[-1]):
23 logger.warning("Simulation geometry tag mismatch! %s vs %s", target, value)
24
25 return True
26
27

◆ writeOverlayDigitizationMetadata()

python.OverlayMetadata.writeOverlayDigitizationMetadata ( flags,
pileupDict )
Write overlay digitization metadata to intermediate sqlite file (DigitParams.db)

Definition at line 236 of file OverlayMetadata.py.

236def writeOverlayDigitizationMetadata(flags,pileupDict):
237 """Write overlay digitization metadata to intermediate sqlite file (DigitParams.db)"""
238 runNumber = flags.Input.RunNumbers[0]
239 runNumberEnd = flags.Input.RunNumbers[-1]
240 if runNumberEnd == runNumber:
241 runNumberEnd += 1
242 logger.debug('Overlay BeginRun = %s', str(runNumber) )
243 logger.debug('Overlay EndRun = %s', str(runNumberEnd) )
244
245 logger.info('Filling Digitization MetaData')
246 logger.info('Writing overlay digitization parameters to intermediate sqlite file (DigitParams.db)')
247
248 # Write to DigitParams.db intermediate file
249 from IOVDbMetaDataTools import ParameterDbFiller
250 dbFiller = ParameterDbFiller.ParameterDbFiller()
251 dbFiller.setBeginRun(runNumber)
252 dbFiller.setEndRun(runNumberEnd)
253
254 # Copy over pileup dictionary
255 for key in pileupDict:
256 value = str(pileupDict[key])
257 logger.info('DigitizationMetaData: setting "%s" to be %s', key, value)
258 if key in ["BeamIntensityPattern"]:
259 dbFiller.addDigitParam64(key, value)
260 else:
261 dbFiller.addDigitParam(key, value)
262
263 # Make the MetaData Db
264 dbFiller.genDigitDb()

Variable Documentation

◆ logger

python.OverlayMetadata.logger = logging.getLogger("OverlayMetadataConfig")

Definition at line 8 of file OverlayMetadata.py.