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 206 of file OverlayMetadata.py.

206def fastChainOverlayMetadataCheck(flags):
207 """Check fastchain overlay metadata"""
208 # pile-up check
209 if not flags.Overlay.DataOverlay and flags.Input.Files:
210 pileupMetaDataCheck = GetFileMD(flags.Input.Files, maxLevel="full")
211 pileupDigitizationMetadata = pileupMetaDataCheck.get("/Digitization/Parameters", {})
212 pileupSimulationMetadata = pileupMetaDataCheck.get("/Simulation/Parameters", {})
213 pileupTagInfoMetadata = pileupMetaDataCheck.get("/TagInfo", {})
214
215 logger.info("Checking Presampled pile-up metadata against configuration of jobs (i.e. flags)...")
216 overlayInputMetadataCheck(flags, pileupSimulationMetadata, pileupTagInfoMetadata)
217 logger.info("Completed all checks against Presampled pile-up Simulation metadata.")
218
219 if pileupDigitizationMetadata:
220 # Store metadata for later writing in OverlayMainContentCfg
221 flags._Overlay_pileupDigitizationMetadata = pileupDigitizationMetadata
222
223

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

◆ 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 224 of file OverlayMetadata.py.

224def writeOverlayDigitizationMetadata(flags,pileupDict):
225 """Write overlay digitization metadata to intermediate sqlite file (DigitParams.db)"""
226 runNumber = flags.Input.RunNumbers[0]
227 runNumberEnd = flags.Input.RunNumbers[-1]
228 if runNumberEnd == runNumber:
229 runNumberEnd += 1
230 logger.debug('Overlay BeginRun = %s', str(runNumber) )
231 logger.debug('Overlay EndRun = %s', str(runNumberEnd) )
232
233 logger.info('Filling Digitization MetaData')
234 logger.info('Writing overlay digitization parameters to intermediate sqlite file (DigitParams.db)')
235
236 # Write to DigitParams.db intermediate file
237 from IOVDbMetaDataTools import ParameterDbFiller
238 dbFiller = ParameterDbFiller.ParameterDbFiller()
239 dbFiller.setBeginRun(runNumber)
240 dbFiller.setEndRun(runNumberEnd)
241
242 # Copy over pileup dictionary
243 for key in pileupDict:
244 value = str(pileupDict[key])
245 logger.info('DigitizationMetaData: setting "%s" to be %s', key, value)
246 if key in ["BeamIntensityPattern"]:
247 dbFiller.addDigitParam64(key, value)
248 else:
249 dbFiller.addDigitParam(key, value)
250
251 # Make the MetaData Db
252 dbFiller.genDigitDb()

Variable Documentation

◆ logger

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

Definition at line 8 of file OverlayMetadata.py.