3from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory
import CompFactory
5from AthenaMonitoringKernel.GenericMonitoringTool
import GenericMonitoringTool
9 acc = ComponentAccumulator()
11 from L1TopoSimulation.L1TopoInputHistograms
import configureEMTauInputProviderHistograms, configureEnergyInputProviderHistograms, configureJetInputProviderHistograms
12 emtauProvider = CompFactory.LVL1.EMTauInputProvider(
"EMTauInputProvider")
14 emtauProvider.MonTool.HistPath =
'L1LegacyTopoSimulation/EMTauInputProvider'
15 configureEMTauInputProviderHistograms(emtauProvider, flags)
16 energyProvider = CompFactory.LVL1.EnergyInputProvider(
"EnergyInputProvider")
18 energyProvider.MonTool.HistPath =
'L1LegacyTopoSimulation/EnergyInputProvider'
19 configureEnergyInputProviderHistograms(energyProvider, flags)
20 jetProvider = CompFactory.LVL1.JetInputProvider(
"JetInputProvider")
22 jetProvider.MonTool.HistPath =
'L1LegacyTopoSimulation/JetInputProvider'
23 configureJetInputProviderHistograms(jetProvider, flags)
25 topoSimAlg = CompFactory.LVL1.L1TopoSimulation(
"L1LegacyTopoSimulation",
26 EMTAUInputProvider = emtauProvider,
27 JetInputProvider = jetProvider,
28 EnergyInputProvider = energyProvider,
30 InputDumpFile =
"inputdump_legacy.txt",
31 EnableInputDump = flags.Trigger.enableL1TopoDump,
32 UseBitwise = flags.Trigger.enableL1TopoBWSimulation,
33 MonHistBaseDir =
"L1/L1LegacyTopoAlgorithms"
37 topoSimAlg.MuonInputProvider.locationMuCTPItoL1Topo =
""
38 topoSimAlg.MuonInputProvider.locationMuCTPItoL1Topo1 =
""
39 topoSimAlg.MuonInputProvider.locationMuonRoI =
""
40 topoSimAlg.MuonInputProvider.locationMuonRoI1 =
""
41 topoSimAlg.MuonInputProvider.ROIBResultLocation =
""
43 acc.addEventAlgo(topoSimAlg)
46def L1TopoSimulationCfg(flags, doMonitoring=True, readMuCTPI=False, name="L1TopoSimulation", deactivateL1TopoMuons=False, useMuonRoIs=False, useMuonDecoder=False, writeMuonRoIs = True):
48 acc = ComponentAccumulator()
56 if flags.Trigger.L1.doMuon
and not deactivateL1TopoMuons:
57 muProvider = CompFactory.LVL1.MuonInputProvider(
"MuonInputProvider")
60 If muons coming from the decoding, we use MuonRoI, otherwise MuCTPIL1Topo
61 So here we should be adding proper flag for P1, and when input file is RAW
62 Simply, if muons are simulated, we will use MuCTPIL1Topo, if decoded MuonRoI
66 muProvider.locationMuCTPItoL1Topo =
""
67 muProvider.locationMuCTPItoL1Topo1 =
""
68 muProvider.locationMuonRoI =
"L1MuCTPItoL1TopoLocationFromMuonRoI"
69 muProvider.locationMuonRoI1 =
"L1MuCTPItoL1TopoLocationFromMuonRoI1"
71 muProvider.locationMuonRoI =
"LVL1MuonRoIs"
72 muProvider.locationMuonRoI1 =
"LVL1MuonRoIsBCp1"
74 muProvider.locationMuonRoI =
""
75 muProvider.locationMuonRoI1 =
""
78 from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig
import RPCRecRoiToolCfg, TGCRecRoiToolCfg
79 muProvider.RecRpcRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags))
80 muProvider.RecTgcRoiTool = acc.popToolsAndMerge(TGCRecRoiToolCfg(flags))
83 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg,TgcBytestreamDecodeCfg
84 acc.merge(RpcBytestreamDecodeCfg(flags))
85 acc.merge(TgcBytestreamDecodeCfg(flags))
86 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig
import MuonRoIByteStreamToolCfg
87 muonRoiTool = acc.popToolsAndMerge(MuonRoIByteStreamToolCfg(flags, name=
"L1MuonBSDecoderToolInL1Topo", writeBS=
False, writeDecodedMuonRoIs = writeMuonRoIs))
88 decoderTools += [muonRoiTool]
95 if flags.Trigger.L1.doeFex:
96 emtauProvider = CompFactory.LVL1.eFexInputProvider(
"eFexInputProvider")
97 if flags.Trigger.L1.dojFex:
98 jetProvider = CompFactory.LVL1.jFexInputProvider(
"jFexInputProvider")
99 if flags.Trigger.L1.dogFex:
100 energyProvider = CompFactory.LVL1.gFexInputProvider(
"gFexInputProvider")
102 controlHistSvc = CompFactory.LVL1.ControlHistSvc(
"ControlHistSvc")
108 from L1TopoByteStream.L1TopoByteStreamConfig
import L1TopoPhase1ByteStreamToolCfg
109 l1topoBSTool = acc.popToolsAndMerge(L1TopoPhase1ByteStreamToolCfg(flags,
"L1TopoBSDecoderTool"))
110 decoderTools += [l1topoBSTool]
111 maybeMissingRobs += l1topoBSTool.ROBIDs
114 decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name=
"L1TriggerByteStreamDecoder",
115 DecoderTools=decoderTools,
116 MaybeMissingROBs=maybeMissingRobs)
118 acc.addEventAlgo(decoderAlg, sequenceName=
'AthAlgSeq')
120 if not flags.Trigger.enableL1CaloPhase1:
121 if (emtauProvider !=
""):
122 emtauProvider.eFexEMRoIKey =
""
123 emtauProvider.eFexTauRoIKey =
""
124 if (jetProvider !=
""):
125 jetProvider.jFexSRJetRoIKey =
""
126 jetProvider.jFexLRJetRoIKey =
""
127 jetProvider.jFexFwdElRoIKey =
""
128 jetProvider.jFexTauRoIKey =
""
129 jetProvider.jFexMETRoIKey =
""
130 jetProvider.jFexSumETRoIKey =
""
131 jetProvider.gMETComponentsJwojKey =
""
132 if (energyProvider !=
""):
133 energyProvider.gFexSRJetRoIKey =
""
134 energyProvider.gFexLRJetRoIKey =
""
135 energyProvider.gMETComponentsJwojKey =
""
136 energyProvider.gMHTComponentsJwojKey =
""
137 energyProvider.gMETComponentsNoiseCutKey =
""
138 energyProvider.gMETComponentsRmsKey =
""
139 energyProvider.gScalarEJwojKey =
""
140 energyProvider.gEspressoKey =
""
141 energyProvider.gRistrettoKey =
""
143 if (jetProvider !=
"")
and (energyProvider !=
""):
145 jetProvider.gMETComponentsJwojKey = energyProvider.gMETComponentsJwojKey
147 topoSimAlg = CompFactory.LVL1.L1TopoSimulation(name,
148 MuonInputProvider = muProvider,
149 EMTAUInputProvider = emtauProvider,
150 JetInputProvider = jetProvider,
151 EnergyInputProvider = energyProvider,
152 ControlHistSvc = controlHistSvc,
153 IsLegacyTopo =
False,
154 doMonitoring = doMonitoring,
155 EnableInputDump = flags.Trigger.enableL1TopoDump,
156 UseBitwise = flags.Trigger.enableL1TopoBWSimulation
158 if name!=
"L1TopoSimulation":
159 topoSimAlg.MonHistBaseDir =
"L1/OnlineL1TopoAlgorithms"
161 acc.addEventAlgo(topoSimAlg)
165 from L1TopoOnlineMonitoring
import L1TopoOnlineMonitoringConfig
as TopoMonConfig
166 if name==
"L1TopoSimulation":
167 acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,
'L1/L1TopoSimDecisions',
168 doHwMon=IsData,doComp=IsData, doMultComp=IsData))
170 acc.addEventAlgo(TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,
'L1/OnlineL1TopoSimDecisions',
171 toolName=name+
"_Monitor",
172 doHwMon=IsData,doComp=IsData, doMultComp=IsData))
178 acc = ComponentAccumulator()
180 efex_provider_attr = [
'eFexEMRoI',
'eFexTauRoI']
181 jfex_provider_attr = [
'jFexSRJetRoI',
'jFexLRJetRoI',
'jFexFwdElRoI',
'jFexTauRoI',
'jFexMETRoI',
'jFexSumETRoI',
'gMETComponentsJwoj']
182 gfex_provider_attr = [
'gFexSRJetRoI',
'gFexLRJetRoI',
'gScalarEJwoj',
'gMETComponentsJwoj',
'gMHTComponentsJwoj',
'gMETComponentsNoiseCut',
'gMETComponentsRms',
'gEspresso',
'gRistretto']
188 from L1TopoSimulation.L1TopoInputHistograms
import configureMuonInputProviderHistograms, configureeFexInputProviderHistograms, configurejFexInputProviderHistograms, configuregFexInputProviderHistograms
193 muProvider = CompFactory.LVL1.MuonInputProvider(
"MuonInputProvider")
195 if flags.Trigger.L1.doMuonTopoInputs:
196 muProvider.locationMuCTPItoL1Topo =
""
197 muProvider.locationMuCTPItoL1Topo1 =
""
198 muProvider.locationMuonRoI =
"L1MuCTPItoL1TopoLocationFromMuonRoI"
199 muProvider.locationMuonRoI1 =
"L1MuCTPItoL1TopoLocationFromMuonRoI1"
201 muProvider.locationMuonRoI =
""
202 muProvider.locationMuonRoI1 =
""
205 from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig
import RPCRecRoiToolCfg, TGCRecRoiToolCfg
206 muProvider.RecRpcRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags))
207 muProvider.RecTgcRoiTool = acc.popToolsAndMerge(TGCRecRoiToolCfg(flags))
209 muProvider.MonTool.HistPath =
'L1TopoSimulation/MuonInputProvider'
210 configureMuonInputProviderHistograms(muProvider, flags)
213 efexProvider = CompFactory.LVL1.eFexInputProvider(
"eFexInputProvider")
215 efexProvider.MonTool.HistPath =
'L1TopoSimulation/eFexInputProvider'
216 configureeFexInputProviderHistograms(efexProvider, flags)
217 jfexProvider = CompFactory.LVL1.jFexInputProvider(
"jFexInputProvider")
219 jfexProvider.MonTool.HistPath =
'L1TopoSimulation/jFexInputProvider'
220 configurejFexInputProviderHistograms(jfexProvider, flags)
221 gfexProvider = CompFactory.LVL1.gFexInputProvider(
"gFexInputProvider")
223 gfexProvider.MonTool.HistPath =
'L1TopoSimulation/gFexInputProvider'
224 configuregFexInputProviderHistograms(gfexProvider, flags)
226 for attr
in efex_provider_attr:
227 res = [x
for x
in outputEDM
if attr
in x]
229 key = res[0].
split(
'#')[1]
230 print (f
'Key found for eFEX: {key}')
231 setattr(efexProvider,attr+
'Key',key)
233 setattr(efexProvider,attr+
'Key',
'')
235 for attr
in jfex_provider_attr:
236 res = [x
for x
in outputEDM
if attr
in x]
238 key = res[0].
split(
'#')[1]
239 print (f
'Key found for jFEX: {key}')
240 setattr(jfexProvider,attr+
'Key',key)
242 setattr(jfexProvider,attr+
'Key',
'')
244 for attr
in gfex_provider_attr:
245 res = [x
for x
in outputEDM
if attr
in x]
247 key = res[0].
split(
'#')[1]
248 print (f
'Key found for gFEX: {key}')
249 setattr(gfexProvider,attr+
'Key',key)
251 setattr(gfexProvider,attr+
'Key',
'')
253 topoSimAlg = CompFactory.LVL1.L1TopoSimulation(
"L1TopoSimulation",
254 MuonInputProvider = muProvider,
255 EMTAUInputProvider = efexProvider,
256 JetInputProvider = jfexProvider,
257 EnergyInputProvider = gfexProvider,
258 IsLegacyTopo =
False,
259 doMonitoring = doMonitoring,
260 EnableInputDump = flags.Trigger.enableL1TopoDump,
261 UseBitwise = flags.Trigger.enableL1TopoBWSimulation
264 acc.addEventAlgo(topoSimAlg)
268if __name__ ==
'__main__':
269 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
270 from AthenaCommon.Logging
import logging
273 from argparse
import RawTextHelpFormatter
275 from libpyeformat_helper
import SourceIdentifier, SubDetector
277 log = logging.getLogger(
'runL1TopoSim')
281 parser = argparse.ArgumentParser(
"Running L1TopoSimulation standalone for the BS input", formatter_class=RawTextHelpFormatter)
282 parser.add_argument(
"-i",
"--inputs",nargs=
'*',action=
"store", dest=
"inputs", help=
"Inputs will be used in commands", required=
True)
283 parser.add_argument(
"-m",
"--module",action=
"store", dest=
"module", help=
"Input modules wants to be simulated.",default=
"", required=
False)
284 parser.add_argument(
"-bw",
"--useBitWise",action=
"store_true", dest=
"useBW", help=
"Run with L1Topo Bitwise simulation?",default=
True, required=
False)
285 parser.add_argument(
"-ifex",
"--doCaloInput",action=
"store_true", dest=
"doCaloInput", help=
"Decoding L1Calo inputs",default=
False, required=
False)
286 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)
287 parser.add_argument(
"-hdwMon",
"--algoHdwMon",action=
"store_true", dest=
"algoHdwMon", help=
"Fill algorithm histograms based on hardware decision.",default=
False, required=
False)
288 parser.add_argument(
"-perfMon",
"--perfMonitoring",action=
"store_true", dest=
"perfmon", help=
"Enable performance monitoring",default=
False, required=
False)
289 parser.add_argument(
"-redoMenu",
"--rederiveMenu",action=
"store_true", dest=
"redoMenu", help=
"Will rederive the menu based in local code",default=
False, required=
False)
290 parser.add_argument(
"-l",
"--logLevel",action=
"store", dest=
"log", help=
"Log level.",default=
"warning", required=
False)
291 parser.add_argument(
"-n",
"--nevent", type=int, action=
"store", dest=
"nevent", help=
"Maximum number of events will be executed.",default=0, required=
False)
292 parser.add_argument(
"-s",
"--skipEvents", type=int, action=
"store", dest=
"skipEvents", help=
"How many events will be skipped.",default=0, required=
False)
293 parser.add_argument(
"-d",
"--enableL1TopoDump", type=bool, action=
"store", dest=
"enableL1TopoDump", help=
"Whether to output events into inputdump.txt",default=
False, required=
False)
294 args = parser.parse_args()
296 supportedSubsystems = [
'Muons',
'jFex',
'eFex',
'gFex',
'Topo']
297 args_subsystem = args.module.split(
',')
298 subsystem = list(
set(args_subsystem) &
set(supportedSubsystems) )
299 filename = args.inputs
301 if len(subsystem)==0:
302 log.warning(f
'subsystem not given or the given subsystem not supported with one of the: {supportedSubsystems}')
304 if args.log ==
'info': algLogLevel = INFO
305 if args.log ==
'warning': algLogLevel = WARNING
306 if args.log ==
'debug': algLogLevel = DEBUG
307 if args.log ==
'verbose': algLogLevel = VERBOSE
309 flags = initConfigFlags()
311 flags.Exec.OutputLevel = algLogLevel
313 flags.Exec.MaxEvents = args.nevent
314 flags.Trigger.triggerMenuSetup =
'PhysicsP1_pp_run3_v1'
316 flags.Trigger.triggerConfig =
'FILE'
318 flags.Trigger.triggerConfig =
'DB'
319 flags.Input.Files = args.inputs
320 flags.Concurrency.NumThreads = 1
321 flags.Concurrency.NumConcurrentEvents = 1
322 flags.Exec.SkipEvents = args.skipEvents
323 flags.Output.AODFileName =
'AOD.pool.root'
324 flags.Trigger.doLVL1 =
True
325 flags.Trigger.L1.doMuon =
True
326 flags.Trigger.enableL1MuonPhase1 =
True
327 flags.Trigger.L1.doMuonTopoInputs =
True
328 flags.Trigger.enableL1TopoBWSimulation = args.useBW
329 flags.PerfMon.doFullMonMT = args.perfmon
330 flags.PerfMon.OutputJSON =
'perfmonmt_test.json'
331 flags.Trigger.enableL1TopoDump = args.enableL1TopoDump
333 if not flags.Input.isMC:
334 from AthenaConfiguration.TestDefaults
import defaultGeometryTags
335 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
338 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
339 acc = MainServicesCfg(flags)
342 from PerfMonComps.PerfMonCompsConfig
import PerfMonMTSvcCfg
343 acc.merge(PerfMonMTSvcCfg(flags))
345 from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
346 acc.merge(ByteStreamReadCfg(flags, type_names=[
'CTP_RDO/CTP_RDO']))
349 from TrigConfigSvc.TrigConfigSvcCfg
import L1ConfigSvcCfg,generateL1Menu
350 acc.merge(L1ConfigSvcCfg(flags))
351 if "data22" not in filename:
352 generateL1Menu(flags)
355 from AnalysisTriggerAlgs.AnalysisTriggerAlgsConfig
import RoIBResultToxAODCfg
356 xRoIBResultAcc, xRoIBResultOutputs = RoIBResultToxAODCfg(flags)
357 acc.merge(xRoIBResultAcc)
361 maybeMissingRobs = []
363 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig
import RoIBResultByteStreamToolCfg
364 roibResultTool = acc.popToolsAndMerge(RoIBResultByteStreamToolCfg(flags, name=
"RoIBResultBSDecoderTool", writeBS=
False))
365 decoderTools += [roibResultTool]
367 for module_id
in roibResultTool.L1TopoModuleIds:
368 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_TOPO_PROC, module_id)))
370 for module_id
in roibResultTool.JetModuleIds:
371 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_JET_PROC_ROI, module_id)))
373 for module_id
in roibResultTool.EMModuleIds:
374 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_CLUSTER_PROC_ROI, module_id)))
378 auxType = edmType.replace(
'Container',
'AuxContainer')
379 return [f
'{edmType}#{edmName}',
380 f
'{auxType}#{edmName}Aux.']
382 outputEDM += [
'CTP_RDO#*']
383 outputEDM += [
'ROIB::RoIBResult#*']
385 outputEDM +=
addEDM(
'xAOD::JetEtRoI' ,
'LVL1JetEtRoI')
386 outputEDM +=
addEDM(
'xAOD::JetRoIContainer' ,
'LVL1JetRoIs')
387 outputEDM +=
addEDM(
'xAOD::EmTauRoIContainer',
'LVL1EmTauRoIs')
389 outputEDM += [
"xAOD::EnergySumRoI#LVL1EnergySumRoI",
"xAOD::EnergySumRoIAuxInfo#LVL1EnergySumRoIAux."]
391 if 'Muons' in subsystem:
392 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg,TgcBytestreamDecodeCfg
393 rpcdecodingAcc = RpcBytestreamDecodeCfg(flags)
394 acc.merge(rpcdecodingAcc)
395 tgcdecodingAcc = TgcBytestreamDecodeCfg(flags)
396 acc.merge(tgcdecodingAcc)
398 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig
import MuonRoIByteStreamToolCfg
399 muonRoiTool = acc.popToolsAndMerge(MuonRoIByteStreamToolCfg(flags, name=
"L1MuonBSDecoderTool", writeBS=
False))
400 decoderTools += [muonRoiTool]
401 outputEDM +=
addEDM(
'xAOD::MuonRoIContainer' ,
'*')
402 maybeMissingRobs += muonRoiTool.ROBIDs
404 if 'jFex' in subsystem:
405 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import jFexRoiByteStreamToolCfg,jFexInputByteStreamToolCfg
406 jFexTool = acc.popToolsAndMerge(jFexRoiByteStreamToolCfg(flags,
'jFexBSDecoder', writeBS=
False))
407 decoderTools += [jFexTool]
408 outputEDM +=
addEDM(
'xAOD::jFexSRJetRoIContainer', jFexTool.jJRoIContainerWriteKey.Path)
409 outputEDM +=
addEDM(
'xAOD::jFexLRJetRoIContainer', jFexTool.jLJRoIContainerWriteKey.Path)
410 outputEDM +=
addEDM(
'xAOD::jFexTauRoIContainer' , jFexTool.jTauRoIContainerWriteKey.Path)
411 outputEDM +=
addEDM(
'xAOD::jFexFwdElRoIContainer', jFexTool.jEMRoIContainerWriteKey.Path)
412 outputEDM +=
addEDM(
'xAOD::jFexSumETRoIContainer', jFexTool.jTERoIContainerWriteKey.Path)
413 outputEDM +=
addEDM(
'xAOD::jFexMETRoIContainer' , jFexTool.jXERoIContainerWriteKey.Path)
414 maybeMissingRobs += jFexTool.ROBIDs
416 jFexInputByteStreamTool = acc.popToolsAndMerge(jFexInputByteStreamToolCfg(flags,
'jFexInputBSDecoderTool', writeBS=
False))
417 decoderTools += [jFexInputByteStreamTool]
418 outputEDM +=
addEDM(
'xAOD::jFexTowerContainer', jFexInputByteStreamTool.jTowersWriteKey.Path)
419 maybeMissingRobs += jFexInputByteStreamTool.ROBIDs
422 if 'eFex' in subsystem:
423 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import eFexByteStreamToolCfg
424 eFexTool = acc.popToolsAndMerge(eFexByteStreamToolCfg(flags,
'eFexBSDecoder', writeBS=
False, decodeInputs=args.doCaloInput))
425 decoderTools += [eFexTool]
426 outputEDM +=
addEDM(
'xAOD::eFexEMRoIContainer', eFexTool.eEMContainerWriteKey.Path)
427 outputEDM +=
addEDM(
'xAOD::eFexTauRoIContainer', eFexTool.eTAUContainerWriteKey.Path)
429 outputEDM +=
addEDM(
'xAOD::eFexTowerContainer', eFexTool.eTowerContainerWriteKey.Path)
430 maybeMissingRobs += eFexTool.ROBIDs
433 if 'gFex' in subsystem:
434 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig
import gFexByteStreamToolCfg,gFexInputByteStreamToolCfg
435 gFexTool = acc.popToolsAndMerge(gFexByteStreamToolCfg(flags,
'gFexBSDecoder', writeBS=
False))
436 decoderTools += [gFexTool]
437 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer', gFexTool.gFexRhoOutputContainerWriteKey.Path)
438 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer', gFexTool.gFexSRJetOutputContainerWriteKey.Path)
439 outputEDM +=
addEDM(
'xAOD::gFexJetRoIContainer', gFexTool.gFexLRJetOutputContainerWriteKey.Path)
440 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gScalarEJwojOutputContainerWriteKey.Path)
441 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gEspressoOutputContainerWriteKey.Path)
443 if hasattr(gFexTool,
'gRistrettoOutputContainerWriteKey'):
444 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gRistrettoOutputContainerWriteKey.Path)
445 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsJwojOutputContainerWriteKey.Path)
446 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gMHTComponentsJwojOutputContainerWriteKey.Path)
447 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gMSTComponentsJwojOutputContainerWriteKey.Path)
448 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsNoiseCutOutputContainerWriteKey.Path)
449 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gMETComponentsRmsOutputContainerWriteKey.Path)
450 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gScalarENoiseCutOutputContainerWriteKey.Path)
451 outputEDM +=
addEDM(
'xAOD::gFexGlobalRoIContainer', gFexTool.gScalarERmsOutputContainerWriteKey.Path)
452 maybeMissingRobs += gFexTool.ROBIDs
454 gFexInputByteStreamTool = acc.popToolsAndMerge(gFexInputByteStreamToolCfg(flags,
'gFexInputByteStreamTool', writeBS=
False))
455 decoderTools += [gFexInputByteStreamTool]
456 outputEDM +=
addEDM(
'xAOD::gFexTowerContainer', gFexInputByteStreamTool.gTowersWriteKey.Path)
457 maybeMissingRobs += gFexInputByteStreamTool.ROBIDs
459 if 'Topo' in subsystem:
460 from L1TopoByteStream.L1TopoByteStreamConfig
import L1TopoPhase1ByteStreamToolCfg
461 l1topoBSTool = acc.popToolsAndMerge(L1TopoPhase1ByteStreamToolCfg(flags,
"L1TopoBSDecoderTool"))
462 decoderTools += [l1topoBSTool]
463 outputEDM +=
addEDM(
'xAOD::L1TopoRawDataContainer', l1topoBSTool.L1TopoPhase1RAWDataWriteContainer.Path)
464 maybeMissingRobs += l1topoBSTool.ROBIDs
466 decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name=
"L1TriggerByteStreamDecoder",
467 DecoderTools=decoderTools,
468 MaybeMissingROBs=maybeMissingRobs,
469 OutputLevel=algLogLevel)
471 acc.addEventAlgo(decoderAlg, sequenceName=
'AthAlgSeq')
473 roib2topo = CompFactory.LVL1.RoiB2TopoInputDataCnv(name=
'RoiB2TopoInputDataCnv')
474 roib2topo.OutputLevel = algLogLevel
475 acc.addEventAlgo(roib2topo, sequenceName=
"AthAlgSeq")
476 from L1TopoByteStream.L1TopoByteStreamConfig
import L1TopoByteStreamCfg
477 acc.merge(L1TopoByteStreamCfg(flags), sequenceName=
'AthAlgSeq')
478 outputEDM +=
addEDM(
'xAOD::L1TopoRawDataContainer',
'L1TopoRawData')
482 acc.getEventAlgo(
'L1TopoSimulation').FillHistoBasedOnHardware =
True
483 acc.getEventAlgo(
'L1TopoSimulation').PrescaleDAQROBAccess = 1
484 outputEDM +=
addEDM(
'xAOD::L1TopoSimResultsContainer',
'L1_TopoSimResults')
487 from L1TopoOnlineMonitoring
import L1TopoOnlineMonitoringConfig
as TopoMonConfig
489 TopoMonConfig.getL1TopoPhase1OnlineMonitor(flags,
'L1/L1TopoOffline',
True,
True,
True,
True,
True,args.forceCtp,algLogLevel),
490 sequenceName=
"AthAlgSeq"
493 histSvc = CompFactory.THistSvc(Output = [
"EXPERT DATAFILE='expert-monitoring-l1topo.root', OPT='RECREATE'"])
494 acc.addService(histSvc)
496 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
497 log.debug(
'Adding the following output EDM to ItemList: %s', outputEDM)
498 acc.merge(OutputStreamCfg(flags,
'AOD', ItemList=outputEDM))
499 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
500 acc.merge(SetupMetaDataForStreamCfg(flags,
'AOD'))
502 if args.log ==
'verbose' or args.perfmon:
503 acc.printConfig(withDetails=
True, summariseProps=
True, printDefaults=
True)
505 if acc.run().isFailure():
std::vector< std::string > split(const std::string &s, const std::string &t=":")
L1TopoSimulationCfg(flags, doMonitoring=True, readMuCTPI=False, name="L1TopoSimulation", deactivateL1TopoMuons=False, useMuonRoIs=False, useMuonDecoder=False, writeMuonRoIs=True)
L1LegacyTopoSimulationCfg(flags)
L1TopoSimulationStandaloneCfg(flags, outputEDM=[], doMuons=False, doMonitoring=True)