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

Classes

Functions

 GetFileMD (filenames, allowEmpty=True, maxLevel='peeker')
 _initializeGeometryParameters (geoTag, sqliteDB, sqliteDBFullPath)
 DetDescrInfo (geoTag, sqliteDB, sqliteDBFullPath)
 getDefaultDetectors (geoTag, sqliteDB, sqliteDBFullPath, includeForward=False)
 getRunToTimestampDict ()
 getInitialTimeStampsFromRunNumbers (runNumbers)
 getGeneratorsInfo (flags)
 getSpecialConfigurationMetadata (flags)

Variables

 msg = logging.getLogger('AutoConfigFlags')
 _fileMetaData = dict()

Function Documentation

◆ _initializeGeometryParameters()

python.AutoConfigFlags._initializeGeometryParameters ( geoTag,
sqliteDB,
sqliteDBFullPath )
protected
Read geometry database for all detectors

Definition at line 86 of file AutoConfigFlags.py.

86def _initializeGeometryParameters(geoTag,sqliteDB,sqliteDBFullPath):
87 """Read geometry database for all detectors"""
88
89 from AtlasGeoModel import CommonGeoDB
90 from PixelGeoModel import PixelGeoDB
91 from LArGeoAlgsNV import LArGeoDB
92 from MuonGeoModel import MuonGeoDB
93
94 if not sqliteDB:
95 # Read parameters from Oracle/Frontier
96 from AtlasGeoModel.AtlasGeoDBInterface import AtlasGeoDBInterface
97 dbGeomCursor = AtlasGeoDBInterface(geoTag)
98 dbGeomCursor.ConnectAndBrowseGeoDB()
99
100 params = { 'Common' : CommonGeoDB.InitializeGeometryParameters(dbGeomCursor),
101 'Pixel' : PixelGeoDB.InitializeGeometryParameters(dbGeomCursor),
102 'LAr' : LArGeoDB.InitializeGeometryParameters(dbGeomCursor),
103 'Muon' : MuonGeoDB.InitializeGeometryParameters(dbGeomCursor),
104 'Luminosity' : CommonGeoDB.InitializeLuminosityDetectorParameters(dbGeomCursor),
105 }
106
107 msg.debug('Config parameters retrieved from Geometry DB (Frontier/Oracle):')
108 for key in params.keys():
109 msg.debug(f'{key} -> {params[key]}')
110 else:
111 # Read parameters from SQLite
112 from AtlasGeoModel.AtlasGeoDBInterface import AtlasGeoDBInterface_SQLite
113 sqliteReader = AtlasGeoDBInterface_SQLite(geoTag,sqliteDBFullPath)
114 sqliteReader.ConnectToDB()
115
116 params = { 'Common' : CommonGeoDB.InitializeGeometryParameters_SQLite(sqliteReader),
120 'Luminosity' : CommonGeoDB.InitializeLuminosityDetectorParameters_SQLite(sqliteReader),
121 }
122
123 msg.debug('Config parameters retrieved from Geometry DB (SQLite):')
124 for key in params.keys():
125 msg.debug(f'{key} -> {params[key]}')
126
127 return params
128
129
130@lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs
InitializeGeometryParameters(dbGeomCursor)
Definition LArGeoDB.py:3
InitializeGeometryParameters_SQLite(sqliteDbReader)
Definition LArGeoDB.py:34
InitializeGeometryParameters(dbGeomCursor)
Definition MuonGeoDB.py:3
InitializeGeometryParameters_SQLite(sqliteDbReader)
Definition MuonGeoDB.py:31
InitializeGeometryParameters_SQLite(sqliteDbReader)
Definition PixelGeoDB.py:54
InitializeGeometryParameters(dbGeomCursor)
Definition PixelGeoDB.py:3

◆ DetDescrInfo()

python.AutoConfigFlags.DetDescrInfo ( geoTag,
sqliteDB,
sqliteDBFullPath )
Query geometry DB for detector description. Returns dictionary with
detector description. Queries DB for each tag only once.

geoTag: geometry tag (e.g. ATLAS-R2-2016-01-00-01)

Definition at line 131 of file AutoConfigFlags.py.

131def DetDescrInfo(geoTag, sqliteDB, sqliteDBFullPath):
132 """Query geometry DB for detector description. Returns dictionary with
133 detector description. Queries DB for each tag only once.
134
135 geoTag: geometry tag (e.g. ATLAS-R2-2016-01-00-01)
136 """
137 if not geoTag:
138 raise ValueError("No geometry tag specified")
139
140 detDescrInfo = _initializeGeometryParameters(geoTag,sqliteDB,sqliteDBFullPath)
141 detDescrInfo["geomTag"] = geoTag
142 return detDescrInfo
143
144
145@lru_cache(maxsize=4) # maxsize=1 should be enough for most jobs

◆ getDefaultDetectors()

python.AutoConfigFlags.getDefaultDetectors ( geoTag,
sqliteDB,
sqliteDBFullPath,
includeForward = False )
Query geometry DB for detector description.
Returns a set of detectors used in a geometry tag.

geoTag: geometry tag (e.g. ATLAS-R2-2016-01-00-01)

Definition at line 146 of file AutoConfigFlags.py.

146def getDefaultDetectors(geoTag, sqliteDB, sqliteDBFullPath, includeForward=False):
147 """Query geometry DB for detector description.
148 Returns a set of detectors used in a geometry tag.
149
150 geoTag: geometry tag (e.g. ATLAS-R2-2016-01-00-01)
151 """
152 detectors = DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Detectors']
153
154 manualConfig = not DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']["DetectorsConfigured"]
155
156
157 if manualConfig:
158 detectors.add('Bpipe')
159 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond
160 detectors.add('ITkPixel')
161 detectors.add('ITkStrip')
162 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Luminosity']['BCMPrime']:
163 detectors.add('BCMPrime') # since https://gitlab.cern.ch/Atlas-Inner-Tracking/ITKLayouts/-/merge_requests/347 introduced BCMPrime geometry
164 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Luminosity']['PLR']:
165 detectors.add('PLR')
166 else:
167 detectors.add('Pixel')
168 detectors.add('SCT')
169 detectors.add('TRT')
170 detectors.add('BCM')
171
172 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1', 'RUN2', 'RUN3']: # RUN4 and beyond
173 detectors.add('HGTD')
174
175 detectors.add('LAr')
176 detectors.add('Tile')
177
178
179 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] in ['RUN1', 'RUN2', 'RUN3']:
180 detectors.add('MBTS')
181
182 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasMDT']:
183 detectors.add('MDT')
184 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasRPC']:
185 detectors.add('RPC')
186 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasTGC']:
187 detectors.add('TGC')
188 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasCSC']:
189 detectors.add('CSC')
190 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasSTGC']:
191 detectors.add('sTGC')
192 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Muon']['HasMM']:
193 detectors.add('MM')
194
195 if includeForward:
196 detectors.add('Lucid')
197 if DetDescrInfo(geoTag,sqliteDB,sqliteDBFullPath)['Common']['Run'] not in ['RUN1']:
198 detectors.add('AFP')
199 detectors.add('ZDC')
200 detectors.add('ALFA')
201 detectors.add('FwdRegion')
202
203 return detectors
204
205
206# Based on RunDMCFlags.py

◆ GetFileMD()

python.AutoConfigFlags.GetFileMD ( filenames,
allowEmpty = True,
maxLevel = 'peeker' )

Definition at line 65 of file AutoConfigFlags.py.

65def GetFileMD(filenames, allowEmpty=True, maxLevel='peeker'):
66 if not filenames or '_ATHENA_GENERIC_INPUTFILE_NAME_' in filenames:
67 if allowEmpty:
68 msg.info("Running an input-less job. Will have empty metadata.")
69 return {}
70 raise RuntimeError("Metadata can not be read in an input-less job.")
71 if isinstance(filenames, str):
72 filenames = [filenames]
73 for filename in filenames:
74 if filename not in _fileMetaData:
75 msg.info("Obtaining metadata of auto-configuration by peeking into '%s'", filename)
76 _fileMetaData[filename] = DynamicallyLoadMetadata(filename, maxLevel)
77 if _fileMetaData[filename].maxAccessLevel != maxLevel:
78 _fileMetaData[filename].maxAccessLevel = maxLevel
79 if _fileMetaData[filename]['nentries'] not in [None, 0]:
80 return _fileMetaData[filename]
81 else:
82 msg.info("The file: %s has no entries, going to the next one for harvesting the metadata", filename)
83 msg.info("No file with events found, returning anyways metadata associated to the first file %s", filenames[0])
84 return _fileMetaData[filenames[0]]
85

◆ getGeneratorsInfo()

python.AutoConfigFlags.getGeneratorsInfo ( flags)
Read in GeneratorsInfo from the input file

Definition at line 223 of file AutoConfigFlags.py.

223def getGeneratorsInfo(flags):
224 """Read in GeneratorsInfo from the input file
225 """
226 from AthenaConfiguration.Enums import ProductionStep
227 inputFiles = flags.Input.Files
228 if flags.Common.ProductionStep in [ProductionStep.Overlay, ProductionStep.FastChain] and flags.Input.SecondaryFiles and not flags.Overlay.ByteStream:
229 # Do something special for MC Overlay
230 inputFiles = flags.Input.SecondaryFiles
231 generatorsString = ""
232 from AthenaConfiguration.AutoConfigFlags import GetFileMD
233 if inputFiles:
234 generatorsString = GetFileMD(inputFiles).get("generators", "")
235 from GeneratorConfig.Versioning import generatorsGetFromMetadata
236 return generatorsGetFromMetadata( generatorsString )
237
238
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition hcg.cxx:130

◆ getInitialTimeStampsFromRunNumbers()

python.AutoConfigFlags.getInitialTimeStampsFromRunNumbers ( runNumbers)
This is used to hold a dictionary of the form
{152166:1269948352889940910, ...} to allow the
timestamp to be determined from the run.

Definition at line 213 of file AutoConfigFlags.py.

213def getInitialTimeStampsFromRunNumbers(runNumbers):
214 """This is used to hold a dictionary of the form
215 {152166:1269948352889940910, ...} to allow the
216 timestamp to be determined from the run.
217 """
218 run2timestampDict = getRunToTimestampDict()
219 timeStamps = [run2timestampDict.get(runNumber,1) for runNumber in runNumbers] # Add protection here?
220 return timeStamps
221
222

◆ getRunToTimestampDict()

python.AutoConfigFlags.getRunToTimestampDict ( )

Definition at line 207 of file AutoConfigFlags.py.

207def getRunToTimestampDict():
208 # this wrapper is intended to avoid an initial import
209 from .RunToTimestampData import RunToTimestampDict
210 return RunToTimestampDict
211
212

◆ getSpecialConfigurationMetadata()

python.AutoConfigFlags.getSpecialConfigurationMetadata ( flags)
Read in special simulation job option fragments based on metadata
passed by the evgen stage

Definition at line 239 of file AutoConfigFlags.py.

239def getSpecialConfigurationMetadata(flags):
240 """Read in special simulation job option fragments based on metadata
241 passed by the evgen stage
242 """
243 specialConfigDict = dict()
244 legacyPreIncludeToCAPostInclude = { 'SimulationJobOptions/preInclude.AMSB.py' : 'Charginos.CharginosConfig.AMSB_Cfg',
245 'SimulationJobOptions/preInclude.Monopole.py' : 'Monopole.MonopoleConfig.MonopoleCfg',
246 'SimulationJobOptions/preInclude.Quirks.py' : 'Quirks.QuirksConfig.QuirksCfg',
247 'SimulationJobOptions/preInclude.SleptonsLLP.py' : 'Sleptons.SleptonsConfig.SleptonsLLPCfg',
248 'SimulationJobOptions/preInclude.GMSB.py' : 'Sleptons.SleptonsConfig.GMSB_Cfg',
249 'SimulationJobOptions/preInclude.Qball.py' : 'Monopole.MonopoleConfig.QballCfg',
250 'SimulationJobOptions/preInclude.RHadronsPythia8.py' : 'RHadrons.RHadronsConfig.RHadronsCfg',
251 'SimulationJobOptions/preInclude.fcp.py' : 'Monopole.MonopoleConfig.fcpCfg',
252 'SimulationJobOptions/preInclude.Dyon.py' : 'Monopole.MonopoleConfig.DyonCfg' }
253 legacyPreIncludeToCAPreInclude = { 'SimulationJobOptions/preInclude.AMSB.py' : None,
254 'SimulationJobOptions/preInclude.Monopole.py' : 'Monopole.MonopoleConfig.MonopolePreInclude',
255 'SimulationJobOptions/preInclude.Quirks.py' : None,
256 'SimulationJobOptions/preInclude.SleptonsLLP.py' : None,
257 'SimulationJobOptions/preInclude.GMSB.py' : None,
258 'SimulationJobOptions/preInclude.Qball.py' : 'Monopole.MonopoleConfig.QballPreInclude',
259 'SimulationJobOptions/preInclude.RHadronsPythia8.py' : 'RHadrons.RHadronsConfig.RHadronsPreInclude',
260 'SimulationJobOptions/preInclude.fcp.py' : 'Monopole.MonopoleConfig.fcpPreInclude',
261 'SimulationJobOptions/preInclude.Dyon.py' : 'Monopole.MonopoleConfig.DyonPreInclude' }
262 specialConfigString = ''
263 from AthenaConfiguration.Enums import ProductionStep
264 inputFiles = flags.Input.Files
265 secondaryInputFiles = flags.Input.SecondaryFiles
266 if flags.Common.ProductionStep in [ProductionStep.Overlay, ProductionStep.FastChain] and not flags.Overlay.DataOverlay and flags.Input.SecondaryFiles:
267 # Do something special for MC Overlay
268 inputFiles = flags.Input.SecondaryFiles
269 secondaryInputFiles = flags.Input.Files
270 from AthenaConfiguration.AutoConfigFlags import GetFileMD
271 if len(inputFiles)>0:
272 specialConfigString = GetFileMD(inputFiles).get('specialConfiguration', '')
273 if (not len(specialConfigString) or specialConfigString == 'NONE') and len(secondaryInputFiles)>0:
274 # If there is no specialConfiguration metadata in the primary
275 # input try the secondary inputs (MC Overlay case)
276 specialConfigString = GetFileMD(secondaryInputFiles).get('specialConfiguration', '')
277 if len(specialConfigString)>0:
278
280 spcitems = specialConfigString.split(";")
281 for spcitem in spcitems:
282 #print spcitem
283
284 if not spcitem or spcitem.upper() == "NONE":
285 continue
286
287 if "=" not in spcitem:
288 spcitem = "preInclude=" + spcitem
289
290 k, v = spcitem.split("=")
291 if k == "preInclude" and v.endswith('.py'): # Translate old preIncludes into CA-based versions.
292 if v == 'SimulationJobOptions/preInclude.RhadronsPythia8.py':
293 v = 'SimulationJobOptions/preInclude.RHadronsPythia8.py' # ATLASSIM-6687 Fixup for older EVNT files
294 v1 = legacyPreIncludeToCAPreInclude[v]
295 if v1 is not None:
296 specialConfigDict[k] = v1
297 v2 = legacyPreIncludeToCAPostInclude[v]
298 if v2 is not None:
299 specialConfigDict['postInclude'] = v2
300 else:
301 specialConfigDict[k] = v
302 return specialConfigDict
303

Variable Documentation

◆ _fileMetaData

python.AutoConfigFlags._fileMetaData = dict()
protected

Definition at line 10 of file AutoConfigFlags.py.

◆ msg

python.AutoConfigFlags.msg = logging.getLogger('AutoConfigFlags')

Definition at line 7 of file AutoConfigFlags.py.