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
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
275
276 specialConfigString = GetFileMD(secondaryInputFiles).
get(
'specialConfiguration',
'')
277 if len(specialConfigString)>0:
278
280 spcitems = specialConfigString.split(";")
281 for spcitem in spcitems:
282
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'):
292 if v == 'SimulationJobOptions/preInclude.RhadronsPythia8.py':
293 v = 'SimulationJobOptions/preInclude.RHadronsPythia8.py'
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