Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
L1TopoSimulationConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaMonitoringKernel.GenericMonitoringTool import GenericMonitoringTool
6 
8 
10 
11  from L1TopoSimulation.L1TopoInputHistograms import configureEMTauInputProviderHistograms, configureEnergyInputProviderHistograms, configureJetInputProviderHistograms
12  emtauProvider = CompFactory.LVL1.EMTauInputProvider("EMTauInputProvider")
13  emtauProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
14  emtauProvider.MonTool.HistPath = 'L1LegacyTopoSimulation/EMTauInputProvider'
15  configureEMTauInputProviderHistograms(emtauProvider, flags)
16  energyProvider = CompFactory.LVL1.EnergyInputProvider("EnergyInputProvider")
17  energyProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
18  energyProvider.MonTool.HistPath = 'L1LegacyTopoSimulation/EnergyInputProvider'
19  configureEnergyInputProviderHistograms(energyProvider, flags)
20  jetProvider = CompFactory.LVL1.JetInputProvider("JetInputProvider")
21  jetProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
22  jetProvider.MonTool.HistPath = 'L1LegacyTopoSimulation/JetInputProvider'
23  configureJetInputProviderHistograms(jetProvider, flags)
24 
25  topoSimAlg = CompFactory.LVL1.L1TopoSimulation("L1LegacyTopoSimulation",
26  EMTAUInputProvider = emtauProvider,
27  JetInputProvider = jetProvider,
28  EnergyInputProvider = energyProvider,
29  IsLegacyTopo = True,
30  InputDumpFile = "inputdump_legacy.txt",
31  EnableInputDump = flags.Trigger.enableL1TopoDump,
32  UseBitwise = flags.Trigger.enableL1TopoBWSimulation,
33  MonHistBaseDir = "L1/L1LegacyTopoAlgorithms"
34  )
35 
36  # No muon inputs to legacy Topo
37  topoSimAlg.MuonInputProvider.locationMuCTPItoL1Topo = ""
38  topoSimAlg.MuonInputProvider.locationMuCTPItoL1Topo1 = ""
39  topoSimAlg.MuonInputProvider.locationMuonRoI = ""
40  topoSimAlg.MuonInputProvider.locationMuonRoI1 = ""
41  topoSimAlg.MuonInputProvider.ROIBResultLocation = ""
42 
43  acc.addEventAlgo(topoSimAlg)
44  return acc
45 
46 def L1TopoSimulationCfg(flags, doMonitoring=True, readMuCTPI=False, name="L1TopoSimulation"):
47 
48  acc = ComponentAccumulator()
49 
50  #Configure the MuonInputProvider
51  muProvider=""
52 
53  if flags.Trigger.L1.doMuon:
54  muProvider = CompFactory.LVL1.MuonInputProvider("MuonInputProvider")
55 
56  """
57  If muons coming from the decoding, we use MuonRoI, otherwise MuCTPIL1Topo
58  So here we should be adding proper flag for P1, and when input file is RAW
59  Simply, if muons are simulated, we will use MuCTPIL1Topo, if decoded MuonRoI
60  """
61 
62  if readMuCTPI:
63  muProvider.locationMuCTPItoL1Topo = ""
64  muProvider.locationMuCTPItoL1Topo1 = ""
65  else:
66  muProvider.locationMuonRoI = ""
67  muProvider.locationMuonRoI1 = ""
68 
69  #Configure the MuonRoiTools for the MIP
70  from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig import RPCRecRoiToolCfg, TGCRecRoiToolCfg
71  muProvider.RecRpcRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags))
72  muProvider.RecTgcRoiTool = acc.popToolsAndMerge(TGCRecRoiToolCfg(flags))
73 
74  emtauProvider = CompFactory.LVL1.eFexInputProvider("eFexInputProvider")
75  jetProvider = CompFactory.LVL1.jFexInputProvider("jFexInputProvider")
76  energyProvider = CompFactory.LVL1.gFexInputProvider("gFexInputProvider")
77 
78  controlHistSvc = CompFactory.LVL1.ControlHistSvc("ControlHistSvc")
79 
80  decoderTools = []
81  maybeMissingRobs = []
82 
83  IsData = True
84  if flags.Input.isMC:
85  IsData = False
86 
87  from L1TopoByteStream.L1TopoByteStreamConfig import L1TopoPhase1ByteStreamToolCfg
88  l1topoBSTool = acc.popToolsAndMerge(L1TopoPhase1ByteStreamToolCfg(flags, "L1TopoBSDecoderTool"))
89  decoderTools += [l1topoBSTool]
90  maybeMissingRobs += l1topoBSTool.ROBIDs
91 
92  if IsData:
93  decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder",
94  DecoderTools=decoderTools,
95  MaybeMissingROBs=maybeMissingRobs)
96 
97  acc.addEventAlgo(decoderAlg, sequenceName='AthAlgSeq')
98 
99  if not flags.Trigger.enableL1CaloPhase1:
100  emtauProvider.eFexEMRoIKey = ""
101  emtauProvider.eFexTauRoIKey = ""
102  jetProvider.jFexSRJetRoIKey = ""
103  jetProvider.jFexLRJetRoIKey = ""
104  jetProvider.jFexFwdElRoIKey = ""
105  jetProvider.jFexTauRoIKey = ""
106  jetProvider.jFexMETRoIKey = ""
107  jetProvider.jFexSumETRoIKey = ""
108  energyProvider.gFexSRJetRoIKey = ""
109  energyProvider.gFexLRJetRoIKey = ""
110  energyProvider.gMETComponentsJwojKey = ""
111  energyProvider.gMHTComponentsJwojKey = ""
112  energyProvider.gMETComponentsNoiseCutKey = ""
113  energyProvider.gMETComponentsRmsKey = ""
114  energyProvider.gScalarEJwojKey = ""
115 
116  topoSimAlg = CompFactory.LVL1.L1TopoSimulation(name,
117  MuonInputProvider = muProvider,
118  EMTAUInputProvider = emtauProvider,
119  JetInputProvider = jetProvider,
120  EnergyInputProvider = energyProvider,
121  ControlHistSvc = controlHistSvc, # if doMonitoring else "",
122  IsLegacyTopo = False,
123  doMonitoring = doMonitoring,
124  EnableInputDump = flags.Trigger.enableL1TopoDump,
125  UseBitwise = flags.Trigger.enableL1TopoBWSimulation
126  )
127  if name!="L1TopoSimulation":
128  topoSimAlg.MonHistBaseDir = "L1/OnlineL1TopoAlgorithms"
129 
130  acc.addEventAlgo(topoSimAlg)
131 
132 
133  if doMonitoring:
134  from L1TopoOnlineMonitoring import L1TopoOnlineMonitoringConfig as TopoMonConfig
135  if name=="L1TopoSimulation":
136  acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,'L1/L1TopoSimDecisions',
137  doHwMon=IsData,doComp=IsData, doMultComp=IsData))
138  else:
139  acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,'L1/OnlineL1TopoSimDecisions',
140  toolName=name+"_Monitor",
141  doHwMon=IsData,doComp=IsData, doMultComp=IsData))
142 
143  return acc
144 
145 def L1TopoSimulationStandaloneCfg(flags, outputEDM=[], doMuons = False, doMonitoring=True):
146 
147  acc = ComponentAccumulator()
148 
149  efex_provider_attr = ['eFexEMRoI','eFexTauRoI']
150  jfex_provider_attr = ['jFexSRJetRoI','jFexLRJetRoI','jFexFwdElRoI','jFexTauRoI','jFexMETRoI','jFexSumETRoI']
151  gfex_provider_attr = ['gFexSRJetRoI','gFexLRJetRoI', 'gScalarEJwoj','gMETComponentsJwoj','gMHTComponentsJwoj', 'gMETComponentsNoiseCut', 'gMETComponentsRms']
152  #Note: Unused container outputs from gFEX are:
153  #'gFexRhoRoI', 'gMSTComponentsJwoj', 'gScalarENoiseCut', 'gScalarERms'
154  #as compared with: https://gitlab.cern.ch/atlas/athena/-/blob/main/Trigger/TrigT1/L1CaloFEX/L1CaloFEXSim/L1CaloFEXSim/gFEXSysSim.h#L128-136
155 
156 
157  from L1TopoSimulation.L1TopoInputHistograms import configureMuonInputProviderHistograms, configureeFexInputProviderHistograms, configurejFexInputProviderHistograms, configuregFexInputProviderHistograms
158 
159  #Configure the MuonInputProvider
160  muProvider=""
161  if doMuons:
162  muProvider = CompFactory.LVL1.MuonInputProvider("MuonInputProvider")
163 
164  if flags.Trigger.L1.doMuonTopoInputs:
165  muProvider.locationMuCTPItoL1Topo = ""
166  muProvider.locationMuCTPItoL1Topo1 = ""
167  else:
168  muProvider.locationMuonRoI = ""
169  muProvider.locationMuonRoI1 = ""
170 
171  #Configure the MuonRoiTools for the MIP
172  from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig import RPCRecRoiToolCfg, TGCRecRoiToolCfg
173  muProvider.RecRpcRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags))
174  muProvider.RecTgcRoiTool = acc.popToolsAndMerge(TGCRecRoiToolCfg(flags))
175  muProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
176  muProvider.MonTool.HistPath = 'L1TopoSimulation/MuonInputProvider'
177  configureMuonInputProviderHistograms(muProvider, flags)
178 
179 
180  efexProvider = CompFactory.LVL1.eFexInputProvider("eFexInputProvider")
181  efexProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
182  efexProvider.MonTool.HistPath = 'L1TopoSimulation/eFexInputProvider'
183  configureeFexInputProviderHistograms(efexProvider, flags)
184  jfexProvider = CompFactory.LVL1.jFexInputProvider("jFexInputProvider")
185  jfexProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
186  jfexProvider.MonTool.HistPath = 'L1TopoSimulation/jFexInputProvider'
187  configurejFexInputProviderHistograms(jfexProvider, flags)
188  gfexProvider = CompFactory.LVL1.gFexInputProvider("gFexInputProvider")
189  gfexProvider.MonTool = GenericMonitoringTool(flags, 'MonTool')
190  gfexProvider.MonTool.HistPath = 'L1TopoSimulation/gFexInputProvider'
191  configuregFexInputProviderHistograms(gfexProvider, flags)
192 
193  for attr in efex_provider_attr:
194  res = [x for x in outputEDM if attr in x]
195  if len(res)>0:
196  key = res[0].split('#')[1]
197  print (f'Key found for eFEX: {key}')
198  setattr(efexProvider,attr+'Key',key)
199  else:
200  setattr(efexProvider,attr+'Key','')
201 
202  for attr in jfex_provider_attr:
203  res = [x for x in outputEDM if attr in x]
204  if len(res)>0:
205  key = res[0].split('#')[1]
206  print (f'Key found for jFEX: {key}')
207  setattr(jfexProvider,attr+'Key',key)
208  else:
209  setattr(jfexProvider,attr+'Key','')
210 
211  for attr in gfex_provider_attr:
212  res = [x for x in outputEDM if attr in x]
213  if len(res)>0:
214  key = res[0].split('#')[1]
215  print (f'Key found for gFEX: {key}')
216  setattr(gfexProvider,attr+'Key',key)
217  else:
218  setattr(gfexProvider,attr+'Key','')
219 
220  topoSimAlg = CompFactory.LVL1.L1TopoSimulation("L1TopoSimulation",
221  MuonInputProvider = muProvider,
222  EMTAUInputProvider = efexProvider,
223  JetInputProvider = jfexProvider,
224  EnergyInputProvider = gfexProvider,
225  IsLegacyTopo = False,
226  doMonitoring = doMonitoring,
227  EnableInputDump = flags.Trigger.enableL1TopoDump,
228  UseBitwise = flags.Trigger.enableL1TopoBWSimulation
229  )
230 
231  acc.addEventAlgo(topoSimAlg)
232 
233  return acc
234 
235 if __name__ == '__main__':
236  from AthenaConfiguration.AllConfigFlags import initConfigFlags
237  from AthenaCommon.Logging import logging
238  from AthenaCommon.Constants import VERBOSE,DEBUG,WARNING,INFO
239  import argparse
240  from argparse import RawTextHelpFormatter
241  import sys
242  from libpyeformat_helper import SourceIdentifier, SubDetector
243 
244  log = logging.getLogger('runL1TopoSim')
245  log.setLevel(DEBUG)
246  algLogLevel = DEBUG
247 
248  parser = argparse.ArgumentParser("Running L1TopoSimulation standalone for the BS input", formatter_class=RawTextHelpFormatter)
249  parser.add_argument("-i","--inputs",nargs='*',action="store", dest="inputs", help="Inputs will be used in commands", required=True)
250  parser.add_argument("-m","--module",action="store", dest="module", help="Input modules wants to be simulated.",default="", required=False)
251  parser.add_argument("-bw","--useBitWise",action="store_true", dest="useBW", help="Run with L1Topo Bitwise simulation?",default=True, required=False)
252  parser.add_argument("-ifex","--doCaloInput",action="store_true", dest="doCaloInput", help="Decoding L1Calo inputs",default=False, required=False)
253  parser.add_argument("-fCtp","--forceCtp",action="store_true", dest="forceCtp", help="Force to CTP monitoring as primary in Sim/Hdw comparison.",default=False, required=False)
254  parser.add_argument("-hdwMon","--algoHdwMon",action="store_true", dest="algoHdwMon", help="Fill algorithm histograms based on hardware decision.",default=False, required=False)
255  parser.add_argument("-perfMon","--perfMonitoring",action="store_true", dest="perfmon", help="Enable performance monitoring",default=False, required=False)
256  parser.add_argument("-redoMenu","--rederiveMenu",action="store_true", dest="redoMenu", help="Will rederive the menu based in local code",default=False, required=False)
257  parser.add_argument("-l","--logLevel",action="store", dest="log", help="Log level.",default="warning", required=False)
258  parser.add_argument("-n","--nevent", type=int, action="store", dest="nevent", help="Maximum number of events will be executed.",default=0, required=False)
259  parser.add_argument("-s","--skipEvents", type=int, action="store", dest="skipEvents", help="How many events will be skipped.",default=0, required=False)
260  parser.add_argument("-d","--enableL1TopoDump", type=bool, action="store", dest="enableL1TopoDump", help="Whether to output events into inputdump.txt",default=False, required=False)
261  args = parser.parse_args()
262 
263  supportedSubsystems = ['Muons','jFex','eFex','gFex','Topo']
264  args_subsystem = args.module.split(',')
265  subsystem = list( set(args_subsystem) & set(supportedSubsystems) )
266  filename = args.inputs
267 
268  if len(subsystem)==0:
269  log.warning(f'subsystem not given or the given subsystem not supported with one of the: {supportedSubsystems}')
270 
271  if args.log == 'info': algLogLevel = INFO
272  if args.log == 'warning': algLogLevel = WARNING
273  if args.log == 'debug': algLogLevel = DEBUG
274  if args.log == 'verbose': algLogLevel = VERBOSE
275 
276  flags = initConfigFlags()
277 
278  flags.Exec.OutputLevel = algLogLevel
279  if(args.nevent > 0):
280  flags.Exec.MaxEvents = args.nevent
281  flags.Trigger.triggerMenuSetup = 'PhysicsP1_pp_run3_v1'
282  if args.redoMenu:
283  flags.Trigger.triggerConfig = 'FILE'
284  else:
285  flags.Trigger.triggerConfig = 'DB'
286  flags.Input.Files = args.inputs
287  flags.Concurrency.NumThreads = 1
288  flags.Concurrency.NumConcurrentEvents = 1
289  flags.Exec.SkipEvents = args.skipEvents
290  flags.Output.AODFileName = 'AOD.pool.root'
291  flags.Trigger.L1.doMuon = True
292  flags.Trigger.enableL1MuonPhase1 = True
293  flags.Trigger.L1.doMuonTopoInputs = True
294  flags.Trigger.enableL1TopoBWSimulation = args.useBW
295  flags.PerfMon.doFullMonMT = args.perfmon
296  flags.PerfMon.OutputJSON = 'perfmonmt_test.json'
297  flags.Trigger.enableL1TopoDump = args.enableL1TopoDump
298  from IOVDbSvc.IOVDbAutoCfgFlags import getLastGlobalTag
299  flags.IOVDb.GlobalTag = getLastGlobalTag(flags)
300 
301  if not flags.Input.isMC:
302  from AthenaConfiguration.TestDefaults import defaultGeometryTags
303  flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
304  flags.lock()
305 
306  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
307  acc = MainServicesCfg(flags)
308 
309  if args.perfmon:
310  from PerfMonComps.PerfMonCompsConfig import PerfMonMTSvcCfg
311  acc.merge(PerfMonMTSvcCfg(flags))
312 
313  from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
314  acc.merge(ByteStreamReadCfg(flags, type_names=['CTP_RDO/CTP_RDO']))
315 
316  # Generate run3 L1 menu
317  from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg,generateL1Menu
318  acc.merge(L1ConfigSvcCfg(flags))
319  if "data22" not in filename:
320  generateL1Menu(flags)
321 
322  # Produce xAOD L1 RoIs from RoIBResult
323  from AnalysisTriggerAlgs.AnalysisTriggerAlgsConfig import RoIBResultToxAODCfg
324  xRoIBResultAcc, xRoIBResultOutputs = RoIBResultToxAODCfg(flags)
325  acc.merge(xRoIBResultAcc)
326 
327  decoderTools = []
328  outputEDM = []
329  maybeMissingRobs = []
330 
331  from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import RoIBResultByteStreamToolCfg
332  roibResultTool = acc.popToolsAndMerge(RoIBResultByteStreamToolCfg(flags, name="RoIBResultBSDecoderTool", writeBS=False))
333  decoderTools += [roibResultTool]
334 
335  for module_id in roibResultTool.L1TopoModuleIds:
336  maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_TOPO_PROC, module_id)))
337 
338  for module_id in roibResultTool.JetModuleIds:
339  maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_JET_PROC_ROI, module_id)))
340 
341  for module_id in roibResultTool.EMModuleIds:
342  maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_CLUSTER_PROC_ROI, module_id)))
343 
344 
345  def addEDM(edmType, edmName):
346  auxType = edmType.replace('Container','AuxContainer')
347  return [f'{edmType}#{edmName}',
348  f'{auxType}#{edmName}Aux.']
349 
350  outputEDM += ['CTP_RDO#*']
351  outputEDM += ['ROIB::RoIBResult#*']
352 
353  outputEDM += addEDM('xAOD::JetEtRoI' , 'LVL1JetEtRoI')
354  outputEDM += addEDM('xAOD::JetRoIContainer' , 'LVL1JetRoIs')
355  outputEDM += addEDM('xAOD::EmTauRoIContainer', 'LVL1EmTauRoIs')
356  #different naming scheme of Aux branches and types for legacy EnergySumRoI (MET,sumET)
357  outputEDM += ["xAOD::EnergySumRoI#LVL1EnergySumRoI", "xAOD::EnergySumRoIAuxInfo#LVL1EnergySumRoIAux."]
358 
359  if 'Muons' in subsystem:
360  from MuonConfig.MuonBytestreamDecodeConfig import RpcBytestreamDecodeCfg,TgcBytestreamDecodeCfg
361  rpcdecodingAcc = RpcBytestreamDecodeCfg(flags)
362  acc.merge(rpcdecodingAcc)
363  tgcdecodingAcc = TgcBytestreamDecodeCfg(flags)
364  acc.merge(tgcdecodingAcc)
365 
366  from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import MuonRoIByteStreamToolCfg
367  muonRoiTool = acc.popToolsAndMerge(MuonRoIByteStreamToolCfg(flags, name="L1MuonBSDecoderTool", writeBS=False))
368  decoderTools += [muonRoiTool]
369  outputEDM += addEDM('xAOD::MuonRoIContainer' , '*')
370  maybeMissingRobs += muonRoiTool.ROBIDs
371 
372  if 'jFex' in subsystem:
373  from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexRoiByteStreamToolCfg,jFexInputByteStreamToolCfg
374  jFexTool = acc.popToolsAndMerge(jFexRoiByteStreamToolCfg(flags, 'jFexBSDecoder', writeBS=False))
375  decoderTools += [jFexTool]
376  outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', jFexTool.jJRoIContainerWriteKey.Path)
377  outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', jFexTool.jLJRoIContainerWriteKey.Path)
378  outputEDM += addEDM('xAOD::jFexTauRoIContainer' , jFexTool.jTauRoIContainerWriteKey.Path)
379  outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', jFexTool.jEMRoIContainerWriteKey.Path)
380  outputEDM += addEDM('xAOD::jFexSumETRoIContainer', jFexTool.jTERoIContainerWriteKey.Path)
381  outputEDM += addEDM('xAOD::jFexMETRoIContainer' , jFexTool.jXERoIContainerWriteKey.Path)
382  maybeMissingRobs += jFexTool.ROBIDs
383  if args.doCaloInput:
384  jFexInputByteStreamTool = acc.popToolsAndMerge(jFexInputByteStreamToolCfg(flags, 'jFexInputBSDecoderTool', writeBS=False))
385  decoderTools += [jFexInputByteStreamTool]
386  outputEDM += addEDM('xAOD::jFexTowerContainer', jFexInputByteStreamTool.jTowersWriteKey.Path)
387  maybeMissingRobs += jFexInputByteStreamTool.ROBIDs
388 
389 
390  if 'eFex' in subsystem:
391  from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import eFexByteStreamToolCfg
392  eFexTool = acc.popToolsAndMerge(eFexByteStreamToolCfg(flags, 'eFexBSDecoder', writeBS=False, decodeInputs=args.doCaloInput))
393  decoderTools += [eFexTool]
394  outputEDM += addEDM('xAOD::eFexEMRoIContainer', eFexTool.eEMContainerWriteKey.Path)
395  outputEDM += addEDM('xAOD::eFexTauRoIContainer', eFexTool.eTAUContainerWriteKey.Path)
396  if args.doCaloInput:
397  outputEDM += addEDM('xAOD::eFexTowerContainer', eFexTool.eTowerContainerWriteKey.Path)
398  maybeMissingRobs += eFexTool.ROBIDs
399 
400 
401  if 'gFex' in subsystem:
402  from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import gFexByteStreamToolCfg,gFexInputByteStreamToolCfg
403  gFexTool = acc.popToolsAndMerge(gFexByteStreamToolCfg(flags, 'gFexBSDecoder', writeBS=False))
404  decoderTools += [gFexTool]
405  outputEDM += addEDM('xAOD::gFexJetRoIContainer', gFexTool.gFexRhoOutputContainerWriteKey.Path)
406  outputEDM += addEDM('xAOD::gFexJetRoIContainer', gFexTool.gFexSRJetOutputContainerWriteKey.Path)
407  outputEDM += addEDM('xAOD::gFexJetRoIContainer', gFexTool.gFexLRJetOutputContainerWriteKey.Path)
408  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gScalarEJwojOutputContainerWriteKey.Path)
409  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsJwojOutputContainerWriteKey.Path)
410  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gMHTComponentsJwojOutputContainerWriteKey.Path)
411  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gMSTComponentsJwojOutputContainerWriteKey.Path)
412  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsNoiseCutOutputContainerWriteKey.Path)
413  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsRmsOutputContainerWriteKey.Path)
414  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gScalarENoiseCutOutputContainerWriteKey.Path)
415  outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', gFexTool.gScalarERmsOutputContainerWriteKey.Path)
416  maybeMissingRobs += gFexTool.ROBIDs
417  if args.doCaloInput:
418  gFexInputByteStreamTool = acc.popToolsAndMerge(gFexInputByteStreamToolCfg(flags, 'gFexInputByteStreamTool', writeBS=False))
419  decoderTools += [gFexInputByteStreamTool]
420  outputEDM += addEDM('xAOD::gFexTowerContainer', gFexInputByteStreamTool.gTowersWriteKey.Path)
421  maybeMissingRobs += gFexInputByteStreamTool.ROBIDs
422 
423  if 'Topo' in subsystem:
424  from L1TopoByteStream.L1TopoByteStreamConfig import L1TopoPhase1ByteStreamToolCfg
425  l1topoBSTool = acc.popToolsAndMerge(L1TopoPhase1ByteStreamToolCfg(flags, "L1TopoBSDecoderTool"))
426  decoderTools += [l1topoBSTool]
427  outputEDM += addEDM('xAOD::L1TopoRawDataContainer', l1topoBSTool.L1TopoPhase1RAWDataWriteContainer.Path)
428  maybeMissingRobs += l1topoBSTool.ROBIDs
429 
430  decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder",
431  DecoderTools=decoderTools,
432  MaybeMissingROBs=maybeMissingRobs,
433  OutputLevel=algLogLevel)
434 
435  acc.addEventAlgo(decoderAlg, sequenceName='AthAlgSeq')
436 
437  roib2topo = CompFactory.LVL1.RoiB2TopoInputDataCnv(name='RoiB2TopoInputDataCnv')
438  roib2topo.OutputLevel = algLogLevel
439  acc.addEventAlgo(roib2topo, sequenceName="AthAlgSeq")
440  from L1TopoByteStream.L1TopoByteStreamConfig import L1TopoByteStreamCfg
441  acc.merge(L1TopoByteStreamCfg(flags), sequenceName='AthAlgSeq')
442  outputEDM += addEDM('xAOD::L1TopoRawDataContainer', 'L1TopoRawData')
443 
444  acc.merge(L1TopoSimulationStandaloneCfg(flags,outputEDM,doMuons=('Muons' in subsystem)), sequenceName='AthAlgSeq')
445  if args.algoHdwMon:
446  acc.getEventAlgo('L1TopoSimulation').FillHistoBasedOnHardware = True
447  acc.getEventAlgo('L1TopoSimulation').PrescaleDAQROBAccess = 1
448  outputEDM += addEDM('xAOD::L1TopoSimResultsContainer','L1_TopoSimResults')
449 
450  # phase1 mon
451  from L1TopoOnlineMonitoring import L1TopoOnlineMonitoringConfig as TopoMonConfig
452  acc.addEventAlgo(
453  TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,'L1/L1TopoOffline',True,True,True,True,True,args.forceCtp,algLogLevel),
454  sequenceName="AthAlgSeq"
455  )
456 
457  from GaudiSvc.GaudiSvcConf import THistSvc # noqa: F401
458  histSvc = CompFactory.THistSvc(Output = ["EXPERT DATAFILE='expert-monitoring-l1topo.root', OPT='RECREATE'"])
459  acc.addService(histSvc)
460 
461  from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
462  log.debug('Adding the following output EDM to ItemList: %s', outputEDM)
463  acc.merge(OutputStreamCfg(flags, 'AOD', ItemList=outputEDM))
464  from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
465  acc.merge(SetupMetaDataForStreamCfg(flags, 'AOD'))
466 
467  if args.log == 'verbose' or args.perfmon:
468  acc.printConfig(withDetails=True, summariseProps=True, printDefaults=True)
469 
470  if acc.run().isFailure():
471  sys.exit(1)
L1TopoByteStreamConfig.L1TopoPhase1ByteStreamToolCfg
def L1TopoPhase1ByteStreamToolCfg(flags, name, writeBS=False)
Definition: L1TopoByteStreamConfig.py:9
TrigT1MuonRecRoiToolConfig.RPCRecRoiToolCfg
def RPCRecRoiToolCfg(flags, name="RPCRecRoiTool", useRun3Config=True)
Definition: TrigT1MuonRecRoiToolConfig.py:8
L1TopoByteStreamConfig.L1TopoByteStreamCfg
def L1TopoByteStreamCfg(flags)
Definition: L1TopoByteStreamConfig.py:40
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
L1TopoSimulationConfig.L1TopoSimulationCfg
def L1TopoSimulationCfg(flags, doMonitoring=True, readMuCTPI=False, name="L1TopoSimulation")
Definition: L1TopoSimulationConfig.py:46
L1TopoInputHistograms.configureeFexInputProviderHistograms
def configureeFexInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:65
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, keepProvenanceTagsRegEx=None, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:16
L1TopoInputHistograms.configureEMTauInputProviderHistograms
def configureEMTauInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:226
python.TrigConfigSvcCfg.generateL1Menu
def generateL1Menu(flags)
Definition: TrigConfigSvcCfg.py:189
L1TopoInputHistograms.configurejFexInputProviderHistograms
def configurejFexInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:114
L1TopoInputHistograms.configureMuonInputProviderHistograms
def configureMuonInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:3
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
AnalysisTriggerAlgsConfig.RoIBResultToxAODCfg
def RoIBResultToxAODCfg(flags)
Definition: AnalysisTriggerAlgsConfig.py:9
L1CaloFEXByteStreamConfig.jFexInputByteStreamToolCfg
def jFexInputByteStreamToolCfg(flags, name, *writeBS=False)
Definition: L1CaloFEXByteStreamConfig.py:232
python.PerfMonCompsConfig.PerfMonMTSvcCfg
def PerfMonMTSvcCfg(flags, **kwargs)
A minimal new-style configuration for PerfMonMTSvc.
Definition: PerfMonCompsConfig.py:10
L1TopoInputHistograms.configureJetInputProviderHistograms
def configureJetInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:250
L1TopoInputHistograms.configuregFexInputProviderHistograms
def configuregFexInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:187
python.IOVDbAutoCfgFlags.getLastGlobalTag
def getLastGlobalTag(prevFlags)
Definition: IOVDbAutoCfgFlags.py:6
TrigT1ResultByteStreamConfig.RoIBResultByteStreamToolCfg
def RoIBResultByteStreamToolCfg(flags, name, writeBS=False)
Definition: TrigT1ResultByteStreamConfig.py:18
L1TopoSimulationConfig.L1TopoSimulationStandaloneCfg
def L1TopoSimulationStandaloneCfg(flags, outputEDM=[], doMuons=False, doMonitoring=True)
Definition: L1TopoSimulationConfig.py:145
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:260
L1CaloFEXByteStreamConfig.gFexByteStreamToolCfg
def gFexByteStreamToolCfg(flags, name, *writeBS=False)
Definition: L1CaloFEXByteStreamConfig.py:148
Constants
some useful constants -------------------------------------------------—
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.MuonBytestreamDecodeConfig.RpcBytestreamDecodeCfg
def RpcBytestreamDecodeCfg(flags, name="RpcRawDataProvider", **kwargs)
This configuration function sets up everything for decoding RPC bytestream data into RDOs.
Definition: MuonBytestreamDecodeConfig.py:34
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
TrigT1ResultByteStreamConfig.MuonRoIByteStreamToolCfg
def MuonRoIByteStreamToolCfg(flags, name, writeBS=False)
Definition: TrigT1ResultByteStreamConfig.py:69
GenericMonitoringTool
Definition: GenericMonitoringTool.py:1
python.MuonBytestreamDecodeConfig.TgcBytestreamDecodeCfg
def TgcBytestreamDecodeCfg(flags, name="TgcRawDataProvider", **kwargs)
Definition: MuonBytestreamDecodeConfig.py:97
L1CaloFEXByteStreamConfig.gFexInputByteStreamToolCfg
def gFexInputByteStreamToolCfg(flags, name, *writeBS=False)
Definition: L1CaloFEXByteStreamConfig.py:275
L1TopoSimulationConfig.addEDM
def addEDM(edmType, edmName)
Definition: L1TopoSimulationConfig.py:345
python.TrigConfigSvcCfg.L1ConfigSvcCfg
def L1ConfigSvcCfg(flags)
Definition: TrigConfigSvcCfg.py:203
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
L1CaloFEXByteStreamConfig.jFexRoiByteStreamToolCfg
def jFexRoiByteStreamToolCfg(flags, name, *writeBS=False, xTOBs=False)
Definition: L1CaloFEXByteStreamConfig.py:87
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
TrigT1MuonRecRoiToolConfig.TGCRecRoiToolCfg
def TGCRecRoiToolCfg(flags, name="TGCRecRoiTool", useRun3Config=True)
Definition: TrigT1MuonRecRoiToolConfig.py:18
L1CaloFEXByteStreamConfig.eFexByteStreamToolCfg
def eFexByteStreamToolCfg(flags, name, *writeBS=False, TOBs=True, xTOBs=False, multiSlice=False, decodeInputs=False)
Definition: L1CaloFEXByteStreamConfig.py:8
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
L1TopoInputHistograms.configureEnergyInputProviderHistograms
def configureEnergyInputProviderHistograms(alg, flags)
Definition: L1TopoInputHistograms.py:220
L1TopoSimulationConfig.L1LegacyTopoSimulationCfg
def L1LegacyTopoSimulationCfg(flags)
Definition: L1TopoSimulationConfig.py:7
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
L1TopoSimulationConfig.int
int
Definition: L1TopoSimulationConfig.py:258