ATLAS Offline Software
Loading...
Searching...
No Matches
FEXReprocessingRun3.py
Go to the documentation of this file.
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3#
4
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import Format
7
8
9if __name__ == '__main__':
10
11
12 from AthenaConfiguration.AllConfigFlags import initConfigFlags
13 from AthenaCommon.Logging import logging
14 import glob
15 import sys
16
17 import argparse
18 parser = argparse.ArgumentParser(prog='python -m L1CaloFEXTools.L1CaloFEXToolsConfig',
19 description="""Decorator tool for FEX towers athena script.\n\n
20 Example: python -m L1CaloFEXTools.L1CaloFEXToolsConfig --filesInput "data22*" --evtMax 10 --outputs eTOBs """)
21 parser.add_argument('--evtMax',type=int,default=-1,help="number of events")
22 parser.add_argument('--filesInput',nargs='+',help="input files",required=True)
23 parser.add_argument('--skipEvents',type=int,default=0,help="number of events to skip")
24 parser.add_argument('--outputLevel',default="WARNING",choices={ 'INFO','WARNING','DEBUG','VERBOSE'})
25 parser.add_argument('--outputs',nargs='+',choices={"jFex","eFex","gFex","legacy","data","emulated","TOBs"},required=True, help="What data to decode and output.")
26 args = parser.parse_args()
27
28
29 log = logging.getLogger('L1CaloFEXToolsConfig')
30 log.setLevel(logging.DEBUG)
31
32 from AthenaCommon import Constants
33 algLogLevel = getattr(Constants,args.outputLevel)
34
35 flags = initConfigFlags()
36 if any(["data" in f for f in args.filesInput]):
37 flags.Trigger.triggerConfig='DB'
38
39 flags.Exec.OutputLevel = algLogLevel
40 flags.Exec.MaxEvents = args.evtMax
41 flags.Exec.SkipEvents = args.skipEvents
42 flags.Input.Files = [file for x in args.filesInput for file in glob.glob(x)]
43 flags.Concurrency.NumThreads = 1
44 flags.Concurrency.NumConcurrentEvents = 1
45
46 if not flags.Input.isMC:
47 from AthenaConfiguration.TestDefaults import defaultGeometryTags
48 flags.GeoModel.AtlasVersion = defaultGeometryTags.autoconfigure(flags)
49
50 if any(["data" in f for f in args.filesInput]):
51 s=args.filesInput[0].replace('*','').replace('.data','')
52 flags.Output.AODFileName = "AOD."+(s.split("/")[-1]).split('_SFO')[0]+"pool.root"
53 else:
54 flags.Output.AODFileName = 'AOD.pool.root'
55
56 flags.Trigger.EDMVersion = 3
57 flags.Trigger.doLVL1 = True
58 flags.Trigger.enableL1CaloPhase1 = True
59
60 # Enable only calo for this test
61 from AthenaConfiguration.DetectorConfigFlags import setupDetectorsFromList
62 setupDetectorsFromList(flags,['LAr','Tile','MBTS'],True)
63
64 flags.lock()
65
66 # Set up the main service "acc"
67 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
68 acc = MainServicesCfg(flags)
69
70 # The decoderAlg needs to load ByteStreamMetadata for the detector mask
71 from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
72 acc.merge(ByteStreamReadCfg(flags))
73
74 # Generate run3 L1 menu
75 from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg
76 acc.merge(L1ConfigSvcCfg(flags))
77
78 decoderTools = []
79 outputEDM = []
80 maybeMissingRobs = []
81
82
83 def addEDM(edmType, edmName):
84 auxType = edmType.replace('Container','AuxContainer')
85 return [f'{edmType}#{edmName}', f'{auxType}#{edmName}Aux.']
86
87 def getSimHandle(key):
88 """
89 Add 'Sim' to the standard handle path
90 """
91 keyPath = key.path()
92 keyPath += "Sim"
93 key.Path = keyPath
94 return key
95
96
99 from L1CaloFEXSim.L1CaloFEXSimCfg import ReadSCellFromByteStreamCfg,TriggerTowersInputCfg
100
101 #Creates SCells
102 acc.merge(ReadSCellFromByteStreamCfg(flags,key="SCell"))
103
104 # Creates the TriggerTower container
105 acc.merge(TriggerTowersInputCfg(flags))
106
107 if "eFex" in args.outputs:
108
109
112 eFEXInputs = CompFactory.LVL1.eTowerMakerFromSuperCells('eTowerMakerFromSuperCells')
113 eFEXInputs.eSuperCellTowerMapperTool = CompFactory.LVL1.eSuperCellTowerMapper('eSuperCellTowerMapper')
114 eFEX = CompFactory.LVL1.eFEXDriver('eFEXDriver')
115 eFEX.eFEXSysSimTool = CompFactory.LVL1.eFEXSysSim('eFEXSysSimTool')
116 eFEX.eFEXSysSimTool.eFEXSimTool = CompFactory.LVL1.eFEXSim('eFEXSimTool')
117 eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool = CompFactory.LVL1.eFEXFPGA('eFEXFPGATool')
118 eFEX.eFEXSysSimTool.eFEXSimTool.eFEXFPGATool.eFEXegAlgoTool = CompFactory.LVL1.eFEXegAlgo('eFEXegAlgoTool',dmCorr=False)
119
120 #TOBs
121 eFEX.eFEXSysSimTool.Key_eFexEMOutputContainer = getSimHandle( eFEX.eFEXSysSimTool.Key_eFexEMOutputContainer )
122 eFEX.eFEXSysSimTool.Key_eFexTauOutputContainer = getSimHandle( eFEX.eFEXSysSimTool.Key_eFexTauOutputContainer)
123
124 outputEDM += addEDM('xAOD::eFexEMRoIContainer' , 'L1_eEMRoISim' )
125 outputEDM += addEDM('xAOD::eFexTauRoIContainer', 'L1_eTauRoISim')
126
127 #xTOBs
128 eFEX.eFEXSysSimTool.Key_eFexEMxTOBOutputContainer = getSimHandle( eFEX.eFEXSysSimTool.Key_eFexEMxTOBOutputContainer )
129 eFEX.eFEXSysSimTool.Key_eFexTauxTOBOutputContainer = getSimHandle( eFEX.eFEXSysSimTool.Key_eFexTauxTOBOutputContainer)
130
131 outputEDM += addEDM('xAOD::eFexEMRoIContainer' , 'L1_eEMxRoISim' )
132 outputEDM += addEDM('xAOD::eFexTauRoIContainer', 'L1_eTauxRoISim')
133
134 acc.addEventAlgo(eFEXInputs, sequenceName='AthAlgSeq')
135 acc.addEventAlgo(eFEX, sequenceName='AthAlgSeq')
136
137
140 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import eFexByteStreamToolCfg
141
142 eFexTool = acc.popToolsAndMerge(eFexByteStreamToolCfg(
143 flags,'eFexBSDecoder',TOBs='eTOBs',xTOBs='exTOBs'))
144
145 decoderTools += [eFexTool]
146 maybeMissingRobs += eFexTool.ROBIDs
147
148 outputEDM += addEDM('xAOD::eFexEMRoIContainer' , 'L1_eEMRoI' )
149 outputEDM += addEDM('xAOD::eFexTauRoIContainer', 'L1_eTauRoI' )
150 outputEDM += addEDM('xAOD::eFexEMRoIContainer' , 'L1_eEMxRoI' )
151 outputEDM += addEDM('xAOD::eFexTauRoIContainer', 'L1_eTauxRoI')
152
153
154 if "jFex" in args.outputs:
155
156 if "TOBs" in args.outputs:
157
160
161 # Testing, could be needed in the future
162 # jFEXInputs = CompFactory.LVL1.jTowerMakerFromSuperCells('jTowerMakerFromSuperCells')
163
164
165 from L1CaloFEXCond.L1CaloFEXCondConfig import jFexDBConfig
166 acc.merge(jFexDBConfig(flags))
167
168
169 jFEXInputs = CompFactory.LVL1.jTowerMakerFromJfexTowers('jTowerMakerFromJfexTowers')
170 jFEXInputs.IsMC = flags.Input.isMC
171 jFEXInputs.jSuperCellTowerMapperTool = CompFactory.LVL1.jSuperCellTowerMapper('jSuperCellTowerMapper')
172 jFEXInputs.jSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
173
174 jFEX = CompFactory.LVL1.jFEXDriver('jFEXDriver')
175 jFEX.jFEXSysSimTool = CompFactory.LVL1.jFEXSysSim('jFEXSysSimTool')
176
177 #TOBs
178 jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexSRJetOutputContainer)
179 jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexLRJetOutputContainer)
180 jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexTauOutputContainer )
181 jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexSumETOutputContainer)
182 jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexMETOutputContainer )
183 jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer = getSimHandle( jFEX.jFEXSysSimTool.Key_jFexFwdElOutputContainer)
184
185 outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetRoISim')
186 outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetRoISim')
187 outputEDM += addEDM('xAOD::jFexTauRoIContainer' , 'L1_jFexTauRoISim' )
188 outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElRoISim')
189 outputEDM += addEDM('xAOD::jFexSumETRoIContainer', 'L1_jFexSumETRoISim')
190 outputEDM += addEDM('xAOD::jFexMETRoIContainer' , 'L1_jFexMETRoISim' )
191
192
193 #xTOBs
194 jFEX.jFEXSysSimTool.Key_xTobOutKey_jJ = getSimHandle( jFEX.jFEXSysSimTool.Key_xTobOutKey_jJ )
195 jFEX.jFEXSysSimTool.Key_xTobOutKey_jLJ = getSimHandle( jFEX.jFEXSysSimTool.Key_xTobOutKey_jLJ )
196 jFEX.jFEXSysSimTool.Key_xTobOutKey_jTau = getSimHandle( jFEX.jFEXSysSimTool.Key_xTobOutKey_jTau)
197 jFEX.jFEXSysSimTool.Key_xTobOutKey_jEM = getSimHandle( jFEX.jFEXSysSimTool.Key_xTobOutKey_jEM )
198
199 outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetxRoISim' )
200 outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetxRoISim' )
201 outputEDM += addEDM('xAOD::jFexTauRoIContainer' , 'L1_jFexTauxRoISim' )
202 outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElxRoISim' )
203
204 acc.addEventAlgo(jFEXInputs, sequenceName='AthAlgSeq')
205 acc.addEventAlgo(jFEX, sequenceName='AthAlgSeq')
206
207
208
211 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexRoiByteStreamToolCfg
212 jFexRoiByteStreamTool = acc.popToolsAndMerge(jFexRoiByteStreamToolCfg(flags, 'jFexBSDecoderTool', writeBS=False))
213
214 decoderTools += [jFexRoiByteStreamTool]
215 maybeMissingRobs += jFexRoiByteStreamTool.ROBIDs
216
217 outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetRoI')
218 outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetRoI')
219 outputEDM += addEDM('xAOD::jFexTauRoIContainer' , 'L1_jFexTauRoI' )
220 outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElRoI')
221 outputEDM += addEDM('xAOD::jFexSumETRoIContainer', 'L1_jFexSumETRoI')
222 outputEDM += addEDM('xAOD::jFexMETRoIContainer' , 'L1_jFexMETRoI' )
223
224 #xTOBs
225 jFexxRoiByteStreamTool = acc.popToolsAndMerge(jFexRoiByteStreamToolCfg(
226 flags, 'jFexBSDecoderTool_xtobs', writeBS=False, xTOBs=True))
227
228 decoderTools += [jFexxRoiByteStreamTool]
229 maybeMissingRobs += jFexxRoiByteStreamTool.ROBIDs
230
231 outputEDM += addEDM('xAOD::jFexSRJetRoIContainer', 'L1_jFexSRJetxRoI')
232 outputEDM += addEDM('xAOD::jFexLRJetRoIContainer', 'L1_jFexLRJetxRoI')
233 outputEDM += addEDM('xAOD::jFexTauRoIContainer' , 'L1_jFexTauxRoI' )
234 outputEDM += addEDM('xAOD::jFexFwdElRoIContainer', 'L1_jFexFwdElxRoI')
235 outputEDM += addEDM('xAOD::jFexSumETRoIContainer', 'L1_jFexSumETxRoI')
236 outputEDM += addEDM('xAOD::jFexMETRoIContainer' , 'L1_jFexMETxRoI' )
237
238 if "data" in args.outputs:
239
242 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import jFexInputByteStreamToolCfg
243 inputjFexTool = acc.popToolsAndMerge(jFexInputByteStreamToolCfg(flags, 'jFexInputBSDecoder'))
244 for module_id in inputjFexTool.ROBIDs:
245 maybeMissingRobs.append(module_id)
246
247 decoderTools += [inputjFexTool]
248
249 # saving/adding the jTower xAOD container
250 outputEDM += addEDM('xAOD::jFexTowerContainer', inputjFexTool.jTowersWriteKey.Path)
251
252
253 # Uses SCell to decorate the jTowers
254 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CalojFEXDecoratorCfg
255 DecoratorAlgo = L1CalojFEXDecoratorCfg(flags, ExtraInfo=True, SCMasking=True)
256 acc.merge(DecoratorAlgo)
257
258 if "emulated" in args.outputs:
259
262 from L1CaloFEXAlgos.FexEmulatedTowersConfig import jFexEmulatedTowersCfg
263 jFEXEmulatorAlgo = jFexEmulatedTowersCfg(flags, name = 'jFexTowerEmulator')
264
265 acc.merge(jFEXEmulatorAlgo)
266
267 # saving/adding the emulated jTower xAOD container
268 outputEDM += addEDM('xAOD::jFexTowerContainer', "L1_jFexEmulatedTowers")
269
270
271 if "gFex" in args.outputs:
272
273
276 gFEXInputs = CompFactory.LVL1.gTowerMakerFromGfexTowers('gTowerMakerFromGfexTowers')
277 gFEXInputs.IsMC = flags.Input.isMC
278 gFEXInputs.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper')
279 gFEXInputs.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
280
281 gFEXInputs50 = CompFactory.LVL1.gTowerMakerFromGfexTowers('gTowerMakerFromGfexTowers50')
282 gFEXInputs50.InputDataTowers = "L1_gFexDataTowers50"
283 gFEXInputs50.MyGTowers = "gTower50Container"
284 gFEXInputs50.IsMC = flags.Input.isMC
285 gFEXInputs50.gSuperCellTowerMapperTool = CompFactory.LVL1.gSuperCellTowerMapper('gSuperCellTowerMapper50')
286 gFEXInputs50.gSuperCellTowerMapperTool.SCellMasking = not flags.Input.isMC
287
288 gFEX = CompFactory.LVL1.gFEXDriver('gFEXDriver')
289 gFEX.gFEXSysSimTool = CompFactory.LVL1.gFEXSysSim('gFEXSysSimTool')
290
291 #TOBs
292 gFEX.gFEXSysSimTool.Key_gFexSRJetOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gFexSRJetOutputContainer )
293 gFEX.gFEXSysSimTool.Key_gFexLRJetOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gFexLRJetOutputContainer )
294 gFEX.gFEXSysSimTool.Key_gFexRhoOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gFexRhoOutputContainer )
295 gFEX.gFEXSysSimTool.Key_gScalarEJwojOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gScalarEJwojOutputContainer )
296 gFEX.gFEXSysSimTool.Key_gMETComponentsJwojOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gMETComponentsJwojOutputContainer )
297 gFEX.gFEXSysSimTool.Key_gMHTComponentsJwojOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gMHTComponentsJwojOutputContainer )
298 gFEX.gFEXSysSimTool.Key_gMSTComponentsJwojOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gMSTComponentsJwojOutputContainer )
299 gFEX.gFEXSysSimTool.Key_gMETComponentsNoiseCutOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gMETComponentsNoiseCutOutputContainer)
300 gFEX.gFEXSysSimTool.Key_gMETComponentsRmsOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gMETComponentsRmsOutputContainer )
301 gFEX.gFEXSysSimTool.Key_gScalarENoiseCutOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gScalarENoiseCutOutputContainer )
302 gFEX.gFEXSysSimTool.Key_gScalarERmsOutputContainer = getSimHandle( gFEX.gFEXSysSimTool.Key_gScalarERmsOutputContainer )
303
304 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexRhoRoISim' )
305 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexSRJetRoISim' )
306 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexLRJetRoISim' )
307 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarEJwojSim' )
308 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMETComponentsJwojSim' )
309 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMHTComponentsJwojSim' )
310 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMSTComponentsJwojSim' )
311 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMETComponentsNoiseCutSim')
312 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarENoiseCutSim' )
313 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarERmsSim' )
314 outputEDM += addEDM('xAOD::gFexTowerContainer', 'L1_gFexTriggerTowers' )
315
316 acc.addEventAlgo(gFEXInputs, sequenceName='AthAlgSeq')
317 acc.addEventAlgo(gFEXInputs50, sequenceName='AthAlgSeq')
318 acc.addEventAlgo(gFEX, sequenceName='AthAlgSeq')
319
320
321
324 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import gFexByteStreamToolCfg
325 gFexTool = acc.popToolsAndMerge(gFexByteStreamToolCfg(flags, 'gFexBSDecoder'))
326 decoderTools += [gFexTool]
327
328 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexRhoRoI' )
329 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexSRJetRoI' )
330 outputEDM += addEDM('xAOD::gFexJetRoIContainer' , 'L1_gFexLRJetRoI' )
331 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarEJwoj' )
332 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMETComponentsJwoj' )
333 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMHTComponentsJwoj' )
334 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMSTComponentsJwoj' )
335 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gMETComponentsNoiseCut')
336 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarENoiseCut' )
337 outputEDM += addEDM('xAOD::gFexGlobalRoIContainer', 'L1_gScalarERms' )
338
339
342 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import gFexInputByteStreamToolCfg
343 gFexInputTool = acc.popToolsAndMerge(gFexInputByteStreamToolCfg(flags, 'gFexInputBSDecoder'))
344 decoderTools += [gFexInputTool]
345 outputEDM += addEDM('xAOD::gFexTowerContainer' , 'L1_gFexDataTowers' )
346
347 # Uses SCell to decorate the gTowers
348 from L1CaloFEXAlgos.L1CaloFEXAlgosConfig import L1CaloGTowerDecoratorCfg
349 DecoratorAlgo = L1CaloGTowerDecoratorCfg(flags, name = 'gFexTower2SCellDecorator')
350 acc.merge(DecoratorAlgo)
351
352 if "legacy" in args.outputs:
353
354 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig import RoIBResultByteStreamToolCfg
355 roibResultTool = acc.popToolsAndMerge(RoIBResultByteStreamToolCfg(flags, name="RoIBResultBSDecoderTool", writeBS=False))
356 decoderTools += [roibResultTool]
357
358 from libpyeformat_helper import SourceIdentifier, SubDetector
359
360 for module_id in roibResultTool.L1TopoModuleIds:
361 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_TOPO_PROC, module_id)))
362
363 for module_id in roibResultTool.JetModuleIds:
364 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_JET_PROC_ROI, module_id)))
365
366 for module_id in roibResultTool.EMModuleIds:
367 maybeMissingRobs.append(int(SourceIdentifier(SubDetector.TDAQ_CALO_CLUSTER_PROC_ROI, module_id)))
368
369 # Converts RoIBResult to xAOD objects
370 from AnalysisTriggerAlgs.AnalysisTriggerAlgsConfig import RoIBResultToxAODCfg
371 xRoIBResultAcc, xRoIBResultOutputs = RoIBResultToxAODCfg(flags)
372 acc.merge(xRoIBResultAcc)
373
374
375 # outputEDM += ['CTP_RDO#*']
376 outputEDM += ['ROIB::RoIBResult#*']
377
378 outputEDM += addEDM('xAOD::JetEtRoI' , 'LVL1JetEtRoI')
379 outputEDM += addEDM('xAOD::JetRoIContainer' , 'LVL1JetRoIs')
380 outputEDM += addEDM('xAOD::EmTauRoIContainer', 'LVL1EmTauRoIs')
381 #different naming scheme of Aux branches and types for legacy EnergySumRoI (MET,sumET)
382 outputEDM += ["xAOD::EnergySumRoI#LVL1EnergySumRoI", "xAOD::EnergySumRoIAuxInfo#LVL1EnergySumRoIAux."]
383
384
385 decoderAlg = CompFactory.L1TriggerByteStreamDecoderAlg(name="L1TriggerByteStreamDecoder", DecoderTools=decoderTools, MaybeMissingROBs=maybeMissingRobs)
386 acc.addEventAlgo(decoderAlg, sequenceName='AthAlgSeq')
387
388
389
390
391
392 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
393 acc.merge(OutputStreamCfg(flags, 'AOD', ItemList=outputEDM))
394
395 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
396 acc.merge(SetupMetaDataForStreamCfg(flags, 'AOD'))
397
398 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
399 acc.merge(SetupMetaDataForStreamCfg(flags, 'AOD'))
400
401 acc.getEventAlgo("EventInfoTagBuilder").PropagateInput = (flags.Input.Format != Format.BS)
402
403 if acc.run().isFailure():
404 sys.exit(1)
405
std::string replace(std::string s, const std::string &s2, const std::string &s3)
Definition hcg.cxx:310
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177
addEDM(edmType, edmName)