104 from HLTSeeding.HLTSeedingMonitoring
import RoIsUnpackingMonitoring
108 MonTool = RoIsUnpackingMonitoring( flags, prefix=
"EM", maxCount=30, etaOffset=0.05, phiOffset=math.pi/64., maxEta=2.5 ))
115 OutputTrigRoIs = recordable(
"HLT_TAURoI"))
117 tauUnpacker.MonTool = RoIsUnpackingMonitoring( flags, prefix=
"TAU", maxCount=30, etaOffset=0.05, phiOffset=math.pi/64., maxEta=2.5 )
122 jUnpacker.MonTool = RoIsUnpackingMonitoring( flags, prefix=
"J", maxCount=30, maxEta=5 )
124 return [emUnpacker, metUnpacker, tauUnpacker, jUnpacker ]
127 from HLTSeeding.HLTSeedingMonitoring
import RoIsUnpackingMonitoring
130 if flags.Trigger.L1.doeFex:
131 maxRoICount_eFex = 150
132 eFexEMUnpacker = CompFactory.eFexEMRoIsUnpackingTool(
136 RoIHalfWidthEta = 0.2,
137 RoIHalfWidthPhi = 0.2,
138 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"eEM", maxCount=maxRoICount_eFex, maxEta=2.5))
139 eFexTauUnpacker = CompFactory.eFexTauRoIsUnpackingTool(
143 RoIHalfWidthEta = 0.4,
144 RoIHalfWidthPhi = math.pi/8,
145 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"eTAU", maxCount=maxRoICount_eFex, maxEta=2.5))
146 tools += [eFexEMUnpacker, eFexTauUnpacker]
148 if flags.Trigger.L1.dojFex:
149 maxRoICount_jFex = 200
150 jFexEMUnpacker = CompFactory.jFexFwdElRoIsUnpackingTool(
154 RoIHalfWidthEta = 0.4,
155 RoIHalfWidthPhi = math.pi/8,
156 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"jEM", maxCount=maxRoICount_jFex))
157 jFexTauUnpacker = CompFactory.jFexTauRoIsUnpackingTool(
161 RoIHalfWidthEta = 0.4,
162 RoIHalfWidthPhi = math.pi/8,
163 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"jTAU", maxCount=maxRoICount_jFex))
164 jFexSRJetUnpacker = CompFactory.jFexSRJetRoIsUnpackingTool(
167 RoIHalfWidthEta = 0.1,
168 RoIHalfWidthPhi = 0.1,
169 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"jJ", maxCount=maxRoICount_jFex, maxEta=5))
170 jFexLRJetUnpacker = CompFactory.jFexLRJetRoIsUnpackingTool(
173 RoIHalfWidthEta = 0.1,
174 RoIHalfWidthPhi = 0.1,
175 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"jLJ", maxCount=maxRoICount_jFex, maxEta=5))
176 tools += [jFexEMUnpacker, jFexTauUnpacker, jFexSRJetUnpacker, jFexLRJetUnpacker]
178 if flags.Trigger.L1.dogFex:
179 maxRoICount_gFex = 100
180 gFexSRJetUnpacker = CompFactory.gFexSRJetRoIsUnpackingTool(
183 RoIHalfWidthEta = 0.1,
184 RoIHalfWidthPhi = 0.1,
185 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"gJ", maxCount=maxRoICount_gFex, maxEta=5))
186 gFexLRJetUnpacker = CompFactory.gFexLRJetRoIsUnpackingTool(
189 RoIHalfWidthEta = 0.1,
190 RoIHalfWidthPhi = 0.1,
191 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"gLJ", maxCount=maxRoICount_gFex, maxEta=5))
192 tools += [gFexSRJetUnpacker, gFexLRJetUnpacker]
195 if flags.Trigger.L1.doeFex
and flags.Trigger.L1.dojFex:
196 maxRoICount_eFex = 150
197 cTauUnpacker = CompFactory.cTauRoIsUnpackingTool(
201 RoIHalfWidthEta = 0.4,
202 RoIHalfWidthPhi = math.pi/8,
203 MonTool = RoIsUnpackingMonitoring(flags, prefix=
"cTAU", maxCount=maxRoICount_eFex))
204 tools += [cTauUnpacker]
243 acc = ComponentAccumulator()
246 l1trMaker = CompFactory.L1TriggerResultMaker(
250 jFexFwdElRoIKeys = [],
252 jFexSRJetRoIKeys = [],
253 jFexLRJetRoIKeys = [],
254 gFexSRJetRoIKeys = [],
255 gFexLRJetRoIKeys = [],
259 ThresholdPatternTools = [] )
262 if flags.Trigger.L1.doCTP
and flags.Trigger.CTP.UseEDMxAOD:
263 l1trMaker.CTPKey =
"CTPResult"
266 if flags.Trigger.L1.doMuon
and flags.Trigger.enableL1MuonPhase1:
267 l1trMaker.MuRoIKeys = [
"LVL1MuonRoIs"]
268 from TrigT1MuctpiPhase1.TrigT1MuctpiPhase1Config
import TrigThresholdDecisionToolCfg
269 l1trMaker.ThresholdPatternTools += [acc.popToolsAndMerge(TrigThresholdDecisionToolCfg(flags))]
270 elif flags.Trigger.L1.doMuon
and flags.Trigger.enableL0Muon:
271 l1trMaker.MuRoIKey =
"LVL1MuonRoIs"
272 l1trMaker.ThresholdPatternTools += [CompFactory.MURoIThresholdsTool()]
275 if flags.Trigger.L1.doCalo
and flags.Trigger.enableL1CaloPhase1:
276 if flags.Trigger.L1.doeFex:
277 l1trMaker.eFexEMRoIKeys = [
"L1_eEMRoI"]
278 l1trMaker.eFexTauRoIKeys = [
"L1_eTauRoI"]
279 l1trMaker.ThresholdPatternTools += [
280 CompFactory.eFexEMRoIThresholdsTool(),
281 CompFactory.eFexTauRoIThresholdsTool(),
283 if flags.Trigger.L1.dojFex:
284 l1trMaker.jFexFwdElRoIKeys = [
"L1_jFexFwdElRoI"]
285 l1trMaker.jFexTauRoIKeys = [
"L1_jFexTauRoI"]
286 l1trMaker.jFexSRJetRoIKeys = [
"L1_jFexSRJetRoI"]
287 l1trMaker.jFexLRJetRoIKeys = [
"L1_jFexLRJetRoI"]
288 l1trMaker.ThresholdPatternTools += [
289 CompFactory.jFexFwdElRoIThresholdsTool(),
290 CompFactory.jFexTauRoIThresholdsTool(),
291 CompFactory.jFexSRJetRoIThresholdsTool(),
292 CompFactory.jFexLRJetRoIThresholdsTool(),
294 if flags.Trigger.L1.dogFex:
295 l1trMaker.gFexSRJetRoIKeys = [
"L1_gFexSRJetRoI"]
296 l1trMaker.gFexLRJetRoIKeys = [
"L1_gFexLRJetRoI"]
297 l1trMaker.ThresholdPatternTools += [
298 CompFactory.gFexSRJetRoIThresholdsTool(),
299 CompFactory.gFexLRJetRoIThresholdsTool(),
302 if flags.Trigger.L1.doeFex
and flags.Trigger.L1.dojFex:
303 l1trMaker.cTauRoIKey =
"L1_cTauRoI"
304 l1trMaker.cjTauLinkKey =
"L1_cTauRoI.jTauLink"
305 l1trMaker.ThresholdPatternTools += [
306 CompFactory.cTauRoIThresholdsTool(),
312 acc.addEventAlgo(l1trMaker, primary=
True)
318 from AthenaCommon.CFElements
import parOR
319 acc = ComponentAccumulator(sequence=parOR(seqName))
321 acc = ComponentAccumulator()
323 from HLTSeeding.HLTSeedingMonitoring
import CTPUnpackingMonitoring, L1DataConsistencyMonitoring
324 decoderAlg = CompFactory.HLTSeeding(
325 RoIBResult =
"RoIBResult",
326 L1TriggerResult =
"L1TriggerResult" if flags.Trigger.enableL1MuonPhase1
or flags.Trigger.enableL1CaloPhase1
else "",
327 HLTSeedingSummaryKey =
"HLTSeedingSummary",
328 ctpUnpacker = CompFactory.CTPUnpackingTool( ForceEnableAllChains = flags.Trigger.forceEnableAllChains,
329 MonTool = CTPUnpackingMonitoring(flags, 512, 400),
330 UseEDMxAOD = flags.Trigger.CTP.UseEDMxAOD )
334 if not (flags.Trigger.forceEnableAllChains
or flags.Trigger.disableL1ConsistencyChecker):
335 def checkConsistency(thrName):
336 '''Filter out threshold types for which HLT doesn't read TOBs from L1 readout'''
337 return thrName
not in [
'FSNOSEED',
'TE',
'XE',
'XS']
and not thrName.startswith(
'PROBE')
339 decoderAlg.L1DataConsistencyChecker = CompFactory.L1DataConsistencyChecker(
340 ThresholdToDecisionMap = dict([(k,v)
for k,v
in _mapL1ThresholdToDecisionCollection.items()
if checkConsistency(k)]),
341 MonTool = L1DataConsistencyMonitoring(flags),
342 ErrorOnMissingTOB = flags.Trigger.L1.errorOnMissingTOB )
345 from AthenaConfiguration.Enums
import Format
346 if flags.Input.Format
is Format.POOL:
347 transTypeKey = (
"TransientBSOutType",
"StoreGateSvc+TransientBSOutKey")
348 decoderAlg.ExtraInputs.add(transTypeKey)
350 decoderAlg.RoIBRoIUnpackers += [
354 if flags.Trigger.L1.doCalo:
355 if flags.Trigger.enableL1CaloPhase1:
357 if flags.Trigger.enableL1CaloLegacy:
360 if flags.Trigger.L1.doMuon:
361 if flags.Trigger.enableL1MuonPhase1:
368 decoderAlg.DoCostMonitoring = flags.Trigger.CostMonitoring.doCostMonitoring
369 decoderAlg.CostMonitoringChain = flags.Trigger.CostMonitoring.chain
370 decoderAlg.RoiZedWidthDefault = flags.Trigger.InDetTracking.RoiZedWidthDefault
372 if flags.Input.Format
is Format.BS
and not flags.Trigger.doLVL1:
374 from TrigT1ResultByteStream.TrigT1ResultByteStreamConfig
import L1TriggerByteStreamDecoderCfg
375 acc.merge( L1TriggerByteStreamDecoderCfg(flags), sequenceName = seqName )
378 if flags.Trigger.enableL1MuonPhase1
or flags.Trigger.enableL1CaloPhase1
or flags.Trigger.CTP.UseEDMxAOD:
381 acc.addEventAlgo( decoderAlg, sequenceName = seqName )
383 from TrigConfigSvc.TrigConfigSvcCfg
import TrigConfigSvcCfg, HLTPrescaleCondAlgCfg
384 acc.merge( TrigConfigSvcCfg( flags ) )
385 acc.merge( HLTPrescaleCondAlgCfg( flags ) )
388 from TriggerJobOpts.TriggerConfigFlags
import ROBPrefetching
389 if ROBPrefetching.InitialRoI
in flags.Trigger.ROBPrefetchingOptions:
390 allDecisionsSet =
set()
391 for roiUnpacker
in decoderAlg.RoIBRoIUnpackers + decoderAlg.xAODRoIUnpackers:
392 dec = str(roiUnpacker.Decisions)
394 allDecisionsSet.add(dec)
395 allDecisions = sorted(list(allDecisionsSet))
396 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si, ROBPrefetchingAlgCfg_Calo, ROBPrefetchingAlgCfg_Muon
397 acc.merge(ROBPrefetchingAlgCfg_Si(flags,
"initialRoI", RoILinkName=
"initialRoI", ROBPrefetchingInputDecisions=allDecisions), sequenceName=seqName)
398 acc.merge(ROBPrefetchingAlgCfg_Calo(flags,
"initialRoI", RoILinkName=
"initialRoI", ROBPrefetchingInputDecisions=allDecisions), sequenceName=seqName)
399 acc.merge(ROBPrefetchingAlgCfg_Muon(flags,
"initialRoI", RoILinkName=
"initialRoI", ROBPrefetchingInputDecisions=allDecisions), sequenceName=seqName)