ATLAS Offline Software
MuonMenuSequences.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from ..Config.MenuComponents import MenuSequence, SelectionCA, InViewRecoCA, InEventRecoCA
6 
7 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
9 from AthenaCommon.CFElements import parOR, seqAND
10 from AthenaCommon.Logging import logging
11 from AthenaConfiguration.ComponentFactory import CompFactory
12 log = logging.getLogger(__name__)
13 
14 #muon container names (for RoI based sequences)
15 from .MuonRecoSequences import muonNames
16 muNames = muonNames().getNames('RoI')
17 muNamesLRT = muonNames().getNames('LRT')
18 muNamesFS = muonNames().getNames('FS')
19 from TrigEDMConfig.TriggerEDM import recordable
20 
21 #-----------------------------------------------------#
22 
24 def muFastAlgSequenceCfg(flags, selCAName="", is_probe_leg=False):
25 
26  selAccSA = SelectionCA('L2MuFastSel'+selCAName, isProbe=is_probe_leg)
27 
28  viewName="L2MuFastReco"
29 
30  recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
31 
32 
34  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
35  from .MuonRecoSequences import muFastRecoSequenceCfg, muonDecodeCfg
36  recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+'RoIs'))
37 
38  extraLoads = []
39  from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming import CFNaming
40  filterInput = [ CFNaming.inputMakerOutName('IM_'+viewName) ]
41  for decision in filterInput:
42  extraLoads += [( 'xAOD::TrigCompositeContainer', 'StoreGateSvc+%s' % decision )]
43 
44  from .MuonRecoSequences import isCosmic
45  acc = ComponentAccumulator()
46  seql2sa = seqAND("L2MuonSASeq{}".format("_probe" if is_probe_leg else ""))
47  acc.addSequence(seql2sa)
48  muFastRecoSeq = muFastRecoSequenceCfg( muonflags, viewName+'RoIs', doFullScanID= isCosmic(flags), extraLoads=extraLoads )
49  sequenceOut = muNames.L2SAName
50  acc.merge(muFastRecoSeq, sequenceName=seql2sa.name)
51 
52 
53  seqFilter = seqAND("L2MuonMTSeq{}".format("_probe" if is_probe_leg else ""))
54  acc.addSequence(seqFilter)
55  from TrigMuonEF.TrigMuonEFConfig import MuonChainFilterAlgCfg
56  MultiTrackChains = getMultiTrackChainNames()
57  MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags, "SAFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
58  InputDecisions = filterInput,
59  L2MuFastContainer = muNames.L2SAName+"l2mtmode",
60  L2MuCombContainer = muNames.L2CBName+"l2mtmode",
61  WriteMuFast = True, NotGate = True)
62 
63  acc.merge(MultiTrackChainFilter, sequenceName=seqFilter.name)
64  muFastl2mtRecoSeq = muFastRecoSequenceCfg( muonflags, viewName+'RoIs', doFullScanID= isCosmic(flags), l2mtmode=True )
65  acc.merge(muFastl2mtRecoSeq, sequenceName=seqFilter.name)
66  recoSA.mergeReco(acc)
67 
68  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Muon
69  robPrefetch = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
70 
71  selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetch)
72 
73 
74  return (selAccSA, sequenceOut)
75 
76 
77 def muFastCalibAlgSequenceCfg(flags, is_probe_leg=False):
78 
79  selAccSA = SelectionCA('L2MuFastCalibSel', isProbe=is_probe_leg)
80 
81  viewName="L2MuFastCalibReco"
82 
83  recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
84 
85 
87  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
88  from .MuonRecoSequences import muFastRecoSequenceCfg, muonDecodeCfg
89  recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+'RoIs'))
90 
91  from .MuonRecoSequences import isCosmic
92  muFastRecoSeq = muFastRecoSequenceCfg( muonflags, viewName+'RoIs', doFullScanID= isCosmic(flags), calib=True )
93  sequenceOut = muNames.L2SAName+"Calib"
94  recoSA.mergeReco(muFastRecoSeq)
95 
96 
97  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Muon
98  robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
99  selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetchAlg)
100 
101  return (selAccSA, sequenceOut)
102 
103 
104 @AccumulatorCache
105 def muFastSequenceGenCfg(flags, is_probe_leg=False):
106 
107  (selAcc, sequenceOut) = muFastAlgSequenceCfg(flags, "", is_probe_leg)
108 
109  from TrigMuonHypo.TrigMuonHypoConfig import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
110  l2saHypo = TrigMufastHypoAlgCfg( flags,
111  name = 'TrigL2MufastHypoAlg',
112  MuonL2SAInfoFromMuFastAlg = sequenceOut)
113 
114  selAcc.addHypoAlgo(l2saHypo)
115 
116  l2saSequence = MenuSequence(flags, selAcc,
117  HypoToolGen = TrigMufastHypoToolFromDict)
118 
119 
120  return l2saSequence
121 
122 
123 @AccumulatorCache
124 def muFastCalibSequenceGenCfg(flags, is_probe_leg=False):
125 
126  (selAcc, sequenceOut) = muFastCalibAlgSequenceCfg(flags, is_probe_leg)
127 
128  from TrigMuonHypo.TrigMuonHypoConfig import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
129  l2saHypo = TrigMufastHypoAlgCfg( flags,
130  name = 'TrigL2MufastCalibHypoAlg',
131  MuonL2SAInfoFromMuFastAlg = sequenceOut)
132 
133  selAcc.addHypoAlgo(l2saHypo)
134 
135  l2saSequence = MenuSequence(flags, selAcc,
136  HypoToolGen = TrigMufastHypoToolFromDict)
137 
138 
139  return l2saSequence
140 
141 
142 @AccumulatorCache
143 def mul2mtSAOvlpRmSequenceGenCfg(flags, is_probe_leg=False):
144 
145  (selAcc, sequenceOut) = muFastAlgSequenceCfg(flags, "mt", is_probe_leg)
146 
147  from TrigMuonHypo.TrigMuonHypoConfig import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
148  l2saHypo = TrigMufastHypoAlgCfg( flags,
149  name = 'TrigL2mtMufastHypoAlg',
150  MuonL2SAInfoFromMuFastAlg = muNames.L2SAName+"l2mtmode")
151 
152  selAcc.addHypoAlgo(l2saHypo)
153 
154  l2saSequence = MenuSequence(flags, selAcc,
155  HypoToolGen = TrigMufastHypoToolFromDict)
156 
157 
158  return l2saSequence
159 
160 
161 
162 #-----------------------------------------------------#
163 
165 
166 def muCombAlgSequenceCfg(flags, selCAName="", is_probe_leg=False, trackingMode = "FTF"):
167 
169  from .MuonRecoSequences import muFastRecoSequenceCfg, muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg, muonIDCosmicTrackingSequenceCfg, isCosmic
170 
171  selAccCB = SelectionCA('L2MuCombSel'+selCAName, isProbe=is_probe_leg)
172 
173  viewName="Cosmic" if isCosmic(flags) else "L2MuCombReco"
174 
175  ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
176  #temporarily using different view names until L2 SA sequence is migrated to CA
177  roiTool = ViewCreatorFetchFromViewROITool(RoisWriteHandleKey="HLT_Roi_L2SAMuon", InViewRoIs = muNames.L2forIDName)
178  requireParentView = True
179 
180  recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
181  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
182 
183 
184  sequenceOut = muNames.L2CBName
185 
186  acc = ComponentAccumulator()
187  from TrigMuonEF.TrigMuonEFConfig import MuonChainFilterAlgCfg
188 
189 
190  from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming import CFNaming
191  filterInput = [ CFNaming.inputMakerOutName('IM_'+viewName) ]
192  extraLoads = []
193  for decision in filterInput:
194  extraLoads += [( 'xAOD::TrigCompositeContainer' , 'StoreGateSvc+%s' % decision )]
195 
196  if isCosmic(flags):
197  recoCB.mergeReco(muonIDCosmicTrackingSequenceCfg( flags, viewName+"RoIs" , "cosmics", extraLoads, extraLoads ))
198  else:
199  recoCB.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+"RoIs", "muon", extraLoads, extraLoads, trackingMode = trackingMode ))
200 
201  # for nominal muComb
202  seql2cb = seqAND("l2muCombFilterSequence{}".format("_probe" if is_probe_leg else ""))
203  acc.addSequence(seql2cb)
204 
205  #Filter algorithm to run muComb only if non-Bphysics muon chains are active
206  muonChainFilter = MuonChainFilterAlgCfg(muonflags, "FilterBphysChains", ChainsToFilter = getBphysChainNames(),
207  InputDecisions = filterInput,
208  L2MuCombContainer = sequenceOut,
209  WriteMuComb = True, WriteMuFast=False)
210  acc.merge(muonChainFilter, sequenceName=seql2cb.name)
211 
212 
213 
214  acc.merge(muCombRecoSequenceCfg(flags, viewName+"RoIs", "FTF", l2mtmode=False, l2CBname = sequenceOut ), sequenceName=seql2cb.name)
215 
216  # for L2 multi-track SA
217  MultiTrackChains = getMultiTrackChainNames()
218  MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags, "CBFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
219  InputDecisions = filterInput,
220  L2MuFastContainer = muNames.L2SAName+"l2mtmode",
221  L2MuCombContainer = muNames.L2CBName+"l2mtmode",
222  WriteMuComb = True, NotGate = True)
223 
224 
225  seql2cbmt = seqAND("l2mtmuCombFilterSequence{}".format("_probe" if is_probe_leg else ""))
226  acc.addSequence(seql2cbmt)
227  acc.merge(MultiTrackChainFilter, sequenceName=seql2cbmt.name)
228 
229 
230  sequenceOutL2mtCB = muNames.L2CBName+"l2mtmode"
231  acc.merge(muCombRecoSequenceCfg(flags, viewName+"RoIs", "FTF", l2mtmode=True, l2CBname = sequenceOutL2mtCB ), sequenceName=seql2cbmt.name)
232 
233 
234 
235  # for Inside-out L2SA
236  seql2iocb = seqAND("l2muFastIOFilterSequence{}".format("_probe" if is_probe_leg else ""))
237  acc.addSequence(seql2iocb)
238 
239  from .MuonRecoSequences import isCosmic
240  sequenceOutL2SAIO = muNames.L2SAName+"IOmode"
241  insideoutMuonChainFilter = MuonChainFilterAlgCfg("FilterInsideOutMuonChains", ChainsToFilter = getInsideOutMuonChainNames(),
242  InputDecisions = filterInput,
243  L2MuFastContainer = sequenceOutL2SAIO, L2MuCombContainer = muNames.L2CBName+"IOmode",
244  WriteMuFast = True, WriteMuComb = True, NotGate=True)
245 
246  acc.merge(insideoutMuonChainFilter, sequenceName=seql2iocb.name)
247  acc.merge(muFastRecoSequenceCfg(muonflags, viewName+"RoIs", doFullScanID=isCosmic(flags) , InsideOutMode=True), sequenceName=seql2iocb.name)
248  recoCB.mergeReco(acc)
249 
250 
251  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Si
252  robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
253  selAccCB.mergeReco(recoCB, robPrefetchCA=robPrefetchAlg)
254 
255  return (selAccCB, sequenceOut)
256 
257 
258 @AccumulatorCache
259 def muCombSequenceGenCfg(flags, is_probe_leg=False, trackingMode = "FTF"):
260 
261  (selAcc, sequenceOut) = muCombAlgSequenceCfg(flags, "", is_probe_leg, trackingMode = trackingMode)
262 
263  from TrigMuonHypo.TrigMuonHypoConfig import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
264  l2cbHypo = TrigmuCombHypoAlgCfg( flags,
265  name = 'TrigL2MuCBHypoAlg',
266  MuonL2CBInfoFromMuCombAlg = sequenceOut,
267  )
268 
269  selAcc.addHypoAlgo(l2cbHypo)
270 
271  l2cbSequence = MenuSequence(flags, selAcc,
272  HypoToolGen = TrigmuCombHypoToolFromDict)
273 
274 
275  return l2cbSequence
276 
277 
278 @AccumulatorCache
279 def mul2IOOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode = "FTF"):
280 
281 
282  (selAcc, sequenceOut) = muCombAlgSequenceCfg(flags, "IO", is_probe_leg, trackingMode = trackingMode)
283 
284  from TrigMuonHypo.TrigMuonHypoConfig import TrigmuCombHypoAlgCfg, Trigl2IOHypoToolwORFromDict
285  l2cbHypo = TrigmuCombHypoAlgCfg( flags,
286  name = 'TrigL2MuCBIOHypoAlg',
287  MuonL2CBInfoFromMuCombAlg = sequenceOut+"IOmode",
288  )
289 
290  selAcc.addHypoAlgo(l2cbHypo)
291 
292  l2cbSequence = MenuSequence(flags, selAcc,
293  HypoToolGen = Trigl2IOHypoToolwORFromDict)
294 
295  return l2cbSequence
296 
297 
298 def muCombLRTAlgSequenceCfg(flags, is_probe_leg=False):
299 
300  selAcc = SelectionCA('l2muCombLRT', isProbe=is_probe_leg)
301 
302  viewName="l2muCombLRT"
303  ViewCreatorCenteredOnIParticleTool=CompFactory.ViewCreatorCentredOnIParticleROITool
304 
305  roiTool = ViewCreatorCenteredOnIParticleTool(RoisWriteHandleKey = recordable("HLT_Roi_L2SAMuon_LRT"),
306  RoIZedWidth=flags.Trigger.InDetTracking.muonLRT.zedHalfWidth,
307  RoIEtaWidth=flags.Trigger.InDetTracking.muonLRT.etaHalfWidth,
308  RoIPhiWidth=flags.Trigger.InDetTracking.muonLRT.phiHalfWidth,
309  UseZedPosition=False)
310  requireParentView = True
311 
312  recol2cb = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
313 
314 
315  from .MuonRecoSequences import muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg
316  sequenceOut = muNamesLRT.L2CBName
317  recol2cb.mergeReco(muCombRecoSequenceCfg(flags, viewName+"RoIs", "FTF_LRT", l2CBname = sequenceOut ))
318 
319  extraLoads = []
320 
321  recol2cb.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+"RoIs" , "muonLRT", extraLoads, doLRT=True ))
322 
323 
324  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Si
325  robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
326  selAcc.mergeReco(recol2cb, robPrefetchAlg)
327 
328 
329  return (selAcc, sequenceOut)
330 
331 
332 @AccumulatorCache
333 def muCombLRTSequenceGenCfg(flags, is_probe_leg=False, trackingMode = "FTF"):
334 
335  (selAcc, sequenceOut) = muCombLRTAlgSequenceCfg(flags, is_probe_leg)
336 
337  from TrigMuonHypo.TrigMuonHypoConfig import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
338  l2cbHypo = TrigmuCombHypoAlgCfg( flags,
339  name = 'TrigL2MuCBLRTHypoAlg',
340  MuonL2CBInfoFromMuCombAlg = sequenceOut,
341  RoILinkName = "l2lrtroi",
342  )
343 
344  selAcc.addHypoAlgo(l2cbHypo)
345 
346  l2cbSequence = MenuSequence(flags, selAcc,
347  HypoToolGen = TrigmuCombHypoToolFromDict)
348 
349 
350  return l2cbSequence
351 
352 
353 @AccumulatorCache
354 def muCombOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode = "FTF"):
355 
356  (selAcc, sequenceOut) = muCombAlgSequenceCfg(flags, "", is_probe_leg, trackingMode = trackingMode)
357 
358  from TrigMuonHypo.TrigMuonHypoConfig import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolwORFromDict
359  l2cbHypo = TrigmuCombHypoAlgCfg( flags,
360  name = 'TrigL2MuCBHypoAlg',
361  MuonL2CBInfoFromMuCombAlg = sequenceOut,
362  )
363 
364  selAcc.addHypoAlgo(l2cbHypo)
365 
366  l2cbSequence = MenuSequence(flags, selAcc,
367  HypoToolGen = TrigmuCombHypoToolwORFromDict)
368 
369  return l2cbSequence
370 
371 
372 @AccumulatorCache
373 def mul2mtCBOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode = "FTF"):
374 
375  (selAcc, sequenceOut) = muCombAlgSequenceCfg(flags, "mt", is_probe_leg, trackingMode = trackingMode)
376 
377  from TrigMuonHypo.TrigMuonHypoConfig import TrigmuCombHypoAlgCfg, Trigl2mtCBHypoToolwORFromDict
378  l2cbHypo = TrigmuCombHypoAlgCfg( flags,
379  name = 'TrigL2mtMuCBHypoAlg',
380  MuonL2CBInfoFromMuCombAlg = sequenceOut+"l2mtmode",
381  )
382 
383  selAcc.addHypoAlgo(l2cbHypo)
384 
385  l2cbSequence = MenuSequence(flags, selAcc,
386  HypoToolGen = Trigl2mtCBHypoToolwORFromDict)
387 
388  return l2cbSequence
389 
390 
391 
394 
395 def muEFSAAlgSequenceCfg(flags, is_probe_leg=False):
396 
397  selAccMS = SelectionCA('EFMuMSSel_RoI', isProbe=is_probe_leg)
398 
399  viewName="EFMuMSReco_RoI"
400  ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
401  #temporarily using different view names until L2 SA sequence is migrated to CA
402  roiTool = ViewCreatorFetchFromViewROITool(RoisWriteHandleKey="HLT_Roi_L2SAMuonForEF", InViewRoIs = "forMS", ViewToFetchFrom = "L2MuFastRecoViews")
403  requireParentView = True
404 
405  recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
406 
407 
408  #Clone and replace offline flags so we can set muon trigger specific values
409  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
410  from .MuonRecoSequences import muEFSARecoSequenceCfg, muonDecodeCfg
411  #Run decoding again since we are using updated RoIs
412  recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+"RoIs"))
413 
414  muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, viewName+'RoIs', 'RoI' )
415  recoMS.mergeReco(muEFSARecoSequenceAcc)
416 
417  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Muon
418  prefetch=ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
419  selAccMS.mergeReco(recoMS, robPrefetchCA=prefetch)
420 
421  return (selAccMS, sequenceOut)
422 
423 
424 @AccumulatorCache
425 def muEFSASequenceGenCfg(flags, is_probe_leg=False):
426 
427  (selAcc, sequenceOut) = muEFSAAlgSequenceCfg(flags, is_probe_leg)
428 
429  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
430  efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
431  name = 'TrigMuonEFMSonlyHypo_RoI',
432  MuonDecisions = sequenceOut,
433  IncludeSAmuons=True)
434 
435  selAcc.addHypoAlgo(efmuMSHypo)
436 
437  efmuMSSequence = MenuSequence(flags, selAcc,
438  HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
439 
440 
441  return efmuMSSequence
442 
443 
444 
447 
448 def muEFCBAlgSequenceCfg(flags, selCAName='', is_probe_leg=False):
449 
450  from .MuonRecoSequences import isCosmic
451  selAccCB = SelectionCA('EFMuCBSel_RoI'+selCAName, isProbe=is_probe_leg)
452 
453  viewName="EFMuCBReco_RoI" if not isCosmic(flags) else "CosmicEFCB"
454  ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
455  #temporarily using different view names until L2 SA sequence is migrated to CA
456  roiTool = ViewCreatorTool(ROILinkName="l2cbroi")
457 
458  recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = True, isProbe=is_probe_leg, mergeUsingFeature=True)
459 
460  #By default the EFCB sequence will run both outside-in and
461  #(if zero muons are found) inside-out reconstruction
462  from TrigMuonEF.TrigMuonEFConfig import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
463  from .MuonRecoSequences import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
464 
465  acc = ComponentAccumulator()
466  seqmerge = seqAND("muonCBInsideOutMergingSequence{}".format("_probe" if is_probe_leg else ""))
467  acc.addSequence(seqmerge)
468 
469  #outside-in reco sequence
470  acc2 = ComponentAccumulator()
471  seqreco = parOR("muonEFCBandInsideOutRecoSequence{}".format("_probe" if is_probe_leg else ""))
472  acc2.addSequence(seqreco)
473  muonflagsCB = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon').cloneAndReplace('MuonCombined', 'Trigger.Offline.Combined.MuonCombined')
474  acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+"RoIs", "RoI" ), sequenceName=seqreco.name)
475  sequenceOutCB = muNames.EFCBOutInName
476 
477  #Algorithm to filter events with no muons
478  acc3 = ComponentAccumulator()
479  seqfilter = seqAND("muonEFInsideOutSequence{}".format("_probe" if is_probe_leg else ""))
480  acc3.addSequence(seqfilter)
481  muonFilter = MuonFilterAlgCfg(flags, name="FilterZeroMuons", MuonContainerLocation=sequenceOutCB)
482  acc3.merge(muonFilter, sequenceName=seqfilter.name)
483 
484  #inside-out reco sequence - runs only if filter is passed
485  acc4 = ComponentAccumulator()
486  seqio = parOR("efmuInsideOutViewNode_RoI{}".format("_probe" if is_probe_leg else ""))
487  acc4.addSequence(seqio)
488  acc4.merge(muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+"RoIs", "RoI"), sequenceName=seqio.name)
489  sequenceOutInsideOut = muNames.EFCBInOutName
490 
491  acc3.merge(acc4, sequenceName=seqfilter.name)
492  acc2.merge(acc3, sequenceName=seqreco.name)
493  acc.merge(acc2, sequenceName=seqmerge.name)
494  #Merge muon containers from outside-in and inside-out reco
495  mergeMuons = MergeEFMuonsAlgCfg(flags, name="MergeEFMuons", MuonCBContainerLocation=sequenceOutCB,
496  MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=muNames.EFCBName)
497 
498  acc.merge(mergeMuons, sequenceName=seqmerge.name)
499  recoCB.mergeReco(acc)
500  selAccCB.mergeReco(recoCB)
501 
502  return (selAccCB, muNames.EFCBName)
503 
504 
505 @AccumulatorCache
506 def muEFCBSequenceGenCfg(flags, is_probe_leg=False):
507 
508  (selAcc, sequenceOut) = muEFCBAlgSequenceCfg(flags, '', is_probe_leg)
509 
510  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
511  efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
512  name = 'TrigMuonEFCombinerHypoAlg',
513  MuonDecisions = sequenceOut,
514  MapToPreviousDecisions=True)
515 
516  selAcc.addHypoAlgo(efmuCBHypo)
517 
518  efmuCBSequence = MenuSequence(flags, selAcc,
519  HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
520 
521  return efmuCBSequence
522 
523 
524 @AccumulatorCache
525 def muEFCBIDperfSequenceGenCfg(flags, is_probe_leg=False):
526 
527  (selAcc, sequenceOut) = muEFCBAlgSequenceCfg(flags, 'idperf', is_probe_leg)
528 
529  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
530  efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
531  name = 'TrigMuonEFCombinerIDperfHypoAlg',
532  IncludeSAmuons=True,
533  MuonDecisions = sequenceOut,
534  MapToPreviousDecisions=True)
535 
536  selAcc.addHypoAlgo(efmuCBHypo)
537 
538  efmuCBSequence = MenuSequence(flags, selAcc,
539  HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
540 
541  return efmuCBSequence
542 
543 
544 @AccumulatorCache
545 def muEFIDtpSequenceGenCfg(flags, is_probe_leg=False):
546 
547  (selAcc, sequenceOut) = muEFCBAlgSequenceCfg(flags, 'idtp', is_probe_leg)
548 
549  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFIdtpHypoAlgCfg, TrigMuonEFIdtpHypoToolFromDict
550  efmuCBHypo = TrigMuonEFIdtpHypoAlgCfg( flags,
551  name = 'TrigMuonEFIdtpHypoAlg')
552 
553 
554  selAcc.addHypoAlgo(efmuCBHypo)
555 
556  efmuCBSequence = MenuSequence(flags, selAcc,
557  HypoToolGen = TrigMuonEFIdtpHypoToolFromDict)
558 
559  return efmuCBSequence
560 
561 
562 def muEFCBLRTAlgSequenceCfg(flags, selCAName='', is_probe_leg=False):
563 
564  selAccCB = SelectionCA('EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
565 
566  viewName="EFMuCBLRTReco"
567  ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
568  roiTool = ViewCreatorTool(ROILinkName="l2lrtroi")
569 
570  recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = True, mergeUsingFeature=True, isProbe=is_probe_leg)
571 
572  from .MuonRecoSequences import muEFCBRecoSequenceCfg
573 
574  #outside-in reco sequence
575  muonflagsCB = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon').cloneAndReplace('MuonCombined', 'Trigger.Offline.Combined.MuonCombined')
576  recoCB.mergeReco(muEFCBRecoSequenceCfg(muonflagsCB, viewName+"RoIs", "LRT"))
577  sequenceOut = muNamesLRT.EFCBName
578 
579  selAccCB.mergeReco(recoCB)
580 
581  return (selAccCB, sequenceOut)
582 
583 
584 @AccumulatorCache
585 def muEFCBLRTSequenceGenCfg(flags, is_probe_leg=False):
586 
587  (selAcc, sequenceOut) = muEFCBLRTAlgSequenceCfg(flags, '', is_probe_leg)
588 
589  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
590  efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
591  name = 'TrigMuonEFCombinerHypoAlgLRT',
592  MuonDecisions = sequenceOut,
593  MapToPreviousDecisions=True)
594 
595 
596  selAcc.addHypoAlgo(efmuCBLRTHypo)
597 
598  efmuCBSequence = MenuSequence(flags, selAcc,
599  HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
600 
601  return efmuCBSequence
602 
603 
604 @AccumulatorCache
605 def muEFCBLRTIDperfSequenceGenCfg(flags, is_probe_leg=False):
606 
607  (selAcc, sequenceOut) = muEFCBLRTAlgSequenceCfg(flags, 'idperf', is_probe_leg)
608 
609  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
610  efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
611  name = 'TrigMuonEFCombinerHypoAlgLRTIDPerf',
612  IncludeSAmuons=True,
613  MuonDecisions = sequenceOut,
614  MapToPreviousDecisions=True)
615 
616 
617  selAcc.addHypoAlgo(efmuCBLRTHypo)
618 
619  efmuCBSequence = MenuSequence(flags, selAcc,
620  HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
621 
622  return efmuCBSequence
623 
624 
625 
628 
630 
631  selAccMS = SelectionCA('EFMuMSSel_FS')
632 
633  viewName="EFMuMSReco_FS"
634  ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
635  roiTool = ViewCreatorFSROITool(RoisWriteHandleKey="MuonFS_RoIs")
636  requireParentView = False
637 
638  recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
639 
640 
641  #Clone and replace offline flags so we can set muon trigger specific values
642  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
643  from .MuonRecoSequences import muEFSARecoSequenceCfg, muonDecodeCfg
644  recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=recoMS.name+"RoIs"))
645 
646  muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, recoMS.name+'RoIs', 'FS' )
647  recoMS.mergeReco(muEFSARecoSequenceAcc)
648 
649  selAccMS.mergeReco(recoMS)
650 
651  return (selAccMS, sequenceOut)
652 
653 
654 @AccumulatorCache
655 def muEFSAFSSequenceGenCfg(flags, is_probe_leg=False):
656 
657  (selAcc, sequenceOut) = muEFSAFSAlgSequenceCfg(flags)
658 
659  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
660 
661  efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
662  name = 'TrigMuonEFMSonlyHypo_FS',
663  MuonDecisions = sequenceOut,
664  IncludeSAmuons=True)
665 
666  selAcc.addHypoAlgo(efmuMSHypo)
667 
668  efmuMSSequence = MenuSequence(flags, selAcc,
669  HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
670 
671 
672  return efmuMSSequence
673 
674 
675 
678 
679 def muEFCBFSAlgSequenceCfg(flags, is_probe_leg=False):
680 
681  selAccCB = SelectionCA('EFMuCBSel_FS', isProbe=is_probe_leg)
682 
683  viewName="EFMuCBReco_FS"
684  #temporarily using different view names until L2 SA sequence is migrated to CA
685  roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = "MuonCandidates_FS_ROIs")
686 
687  recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = True, isProbe=is_probe_leg, mergeUsingFeature=True,
688  PlaceMuonInView=True, InViewMuons = "InViewMuons", InViewMuonCandidates = "MuonCandidates_FS")
689 
690 
691  from TrigMuonEF.TrigMuonEFConfig import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
692  from .MuonRecoSequences import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
693  #outside-in reco sequence
694  acc = ComponentAccumulator()
695  seqmerge = seqAND("muonCBInsideOutMergingSequenceEFCBFS{}".format("_probe" if is_probe_leg else ""))
696  acc.addSequence(seqmerge)
697 
698  muonflagsCB = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon').cloneAndReplace('MuonCombined', 'Trigger.Offline.Combined.MuonCombined')
699  acc2 = ComponentAccumulator()
700  seqreco = parOR("muonEFCBFSInsideOutRecoSequence{}".format("_probe" if is_probe_leg else ""))
701  acc2.addSequence(seqreco)
702 
703  acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+"RoIs", "FS" ), sequenceName=seqreco.name)
704  sequenceOutCB = muNamesFS.EFCBOutInName
705 
706  #Alg fitltering for no muon events
707  muonFilter = MuonFilterAlgCfg(flags, name="FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
708 
709  acc3 = ComponentAccumulator()
710  seqfilt = seqAND("muonEFCBFSInsideOutSequence{}".format("_probe" if is_probe_leg else ""))
711  acc3.addSequence(seqfilt)
712  acc3.merge(muonFilter, sequenceName=seqfilt.name)
713 
714 
715  #If filter passed
716  acc4 = ComponentAccumulator()
717  seqio = parOR("efmuInsideOutViewNode_FS{}".format("_probe" if is_probe_leg else ""))
718  acc4.addSequence(seqio)
719 
720  muonEFInsideOutRecoAlgSequence = muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+"RoIs", "FS" )
721  acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
722  acc3.merge(acc4, sequenceName=seqfilt.name)
723  acc2.merge(acc3, sequenceName=seqreco.name)
724  acc.merge(acc2, sequenceName=seqmerge.name)
725  sequenceOutInsideOut = muNamesFS.EFCBInOutName
726 
727  #Merge muon containers from O-I and I-O reco
728  mergeMuons = MergeEFMuonsAlgCfg(flags, name="MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
729  MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
730  acc.merge(mergeMuons, sequenceName=seqmerge.name)
731  recoCB.mergeReco(acc)
732 
733  sequenceOut = muNamesFS.EFCBName
734  selAccCB.mergeReco(recoCB)
735 
736  return (selAccCB, sequenceOut)
737 
738 
739 @AccumulatorCache
740 def muEFCBFSSequenceGenCfg(flags, is_probe_leg=False):
741 
742  (selAcc, sequenceOut) = muEFCBFSAlgSequenceCfg(flags, is_probe_leg)
743 
744  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromName
745  efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
746  name = 'TrigMuonEFFSCombinerHypoAlg',
747  MuonDecisions = sequenceOut)
748 
749  selAcc.addHypoAlgo(efmuCBHypo)
750 
751  efmuCBSequence = MenuSequence(flags, selAcc,
752  HypoToolGen = TrigMuonEFCombinerHypoToolFromName)
753 
754  return efmuCBSequence
755 
756 
757 def efLateMuRoIAlgSequenceCfg(flags, is_probe_leg=False):
758 
759  selAcc = SelectionCA('EFLateMuSel', isProbe=is_probe_leg)
760 
761  viewName = "EFLateMuRoIReco"
762  viewcreator = CompFactory.ViewCreatorInitialROITool
763  roiTool = viewcreator()
764 
765  recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg)
766 
767  from .MuonRecoSequences import efLateMuRoISequenceCfg
768 
769  #Get Late Muon RoIs
770  efLateMuRoIAcc, sequenceOut = efLateMuRoISequenceCfg(flags)
771  recoLateMu.mergeReco(efLateMuRoIAcc)
772 
773  selAcc.mergeReco(recoLateMu)
774  return (selAcc, sequenceOut)
775 
776 
777 @AccumulatorCache
778 def efLateMuRoISequenceGenCfg(flags, is_probe_leg=False):
779 
780  (selAcc, sequenceOut) = efLateMuRoIAlgSequenceCfg(flags, is_probe_leg)
781 
782  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonLateMuRoIHypoAlgCfg, TrigMuonLateMuRoIHypoToolFromDict
783  latemuHypo = TrigMuonLateMuRoIHypoAlgCfg( flags,
784  name = 'TrigMuonLateMuRoIHypoAlg',
785  LateRoIs = sequenceOut)
786 
787  selAcc.addHypoAlgo(latemuHypo)
788 
789  latemuRoISequence = MenuSequence(flags, selAcc,
790  HypoToolGen = TrigMuonLateMuRoIHypoToolFromDict)
791 
792 
793  return latemuRoISequence
794 
795 
796 def efLateMuAlgSequenceCfg(flags, is_probe_leg=False):
797 
798  from .MuonRecoSequences import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
799  selAcc = SelectionCA('EFLateMuAlg', isProbe=is_probe_leg)
800 
801  viewName = "EFLateMuReco"
802  viewcreator = CompFactory.ViewCreatorNamedROITool
803  roiTool = viewcreator(ROILinkName="feature")
804 
805  recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=True, mergeUsingFeature=True, isProbe=is_probe_leg)
806 
807 
808  #Clone and replace offline flags so we can set muon trigger specific values
809  muonflagsCB = flags.cloneAndReplace('Muon', 'Trigger.Offline.Muon').cloneAndReplace('MuonCombined', 'Trigger.Offline.Combined.MuonCombined')
810  muonflags = flags.cloneAndReplace('Muon', 'Trigger.Offline.SA.Muon')
811  #decode data in these RoIs
812  recoLateMu.mergeReco(muonDecodeCfg(muonflags,RoIs=recoLateMu.name+"RoIs"))
813  #ID fast tracking
814  recoLateMu.mergeReco(muonIDFastTrackingSequenceCfg(flags, recoLateMu.name+"RoIs","muonLate" ))
815  #inside-out reco sequence
816  recoLateMu.mergeReco(muEFInsideOutRecoSequenceCfg(muonflagsCB, recoLateMu.name+"RoIs", "LateMu"))
817  sequenceOut = muNames.EFCBInOutName+'_Late'
818 
819 
820  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Muon
821  robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName)
822  selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
823 
824  return (selAcc, sequenceOut)
825 
826 
827 @AccumulatorCache
828 def efLateMuSequenceGenCfg(flags, is_probe_leg=False):
829 
830  (selAcc, sequenceOut) = efLateMuAlgSequenceCfg(flags, is_probe_leg=False)
831 
832  # setup EFCB hypo
833  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFHypoAlgCfg
834  trigMuonEFLateHypo = TrigMuonEFHypoAlgCfg( "TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
835 
836  selAcc.addHypoAlgo(trigMuonEFLateHypo)
837  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFCombinerHypoToolFromDict
838 
839  return MenuSequence(flags, selAcc,
840  HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
841 
842 
843 
844 
847 def muEFIsoAlgSequenceCfg(flags, doMSiso=False, is_probe_leg=False):
848  name = ""
849  if doMSiso:
850  name = "MS"
851 
852 
853  selAccIso = SelectionCA('EFMuIso'+name, isProbe=is_probe_leg)
854 
855  viewName="EFMuIsoReco"+name
856  if doMSiso:
857  roisWriteHandleKey = "Roi_MuonIsoMS"
858  else:
859  roisWriteHandleKey = recordable("HLT_Roi_MuonIso")
860 
861  roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
862  RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
863  RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
864  RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
865 
866  recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=True,
867  PlaceMuonInView=True, InViewMuons = "IsoViewMuons"+name, InViewMuonCandidates = "IsoMuonCandidates"+name)
868 
869 
870 
871  from .MuonRecoSequences import efmuisoRecoSequenceCfg
872  sequenceOut = muNames.EFIsoMuonName+name
873  recoIso.mergeReco(efmuisoRecoSequenceCfg( flags, viewName+"RoIs", "IsoViewMuons"+name, doMSiso ))
874 
875 
876  from TrigGenericAlgs.TrigGenericAlgsConfig import ROBPrefetchingAlgCfg_Si
877  robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+'_probe' if is_probe_leg else viewName)
878 
879  selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
880 
881  return (selAccIso, sequenceOut)
882 
883 
884 @AccumulatorCache
885 def muEFIsoSequenceGenCfg(flags, is_probe_leg=False):
886 
887  (selAcc, sequenceOut) = muEFIsoAlgSequenceCfg(flags, False, is_probe_leg)
888 
889  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
890  efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
891  name = 'EFMuisoHypoAlg',
892  EFMuonsName = sequenceOut)
893 
894  selAcc.addHypoAlgo(efmuisoHypo)
895 
896  efmuisoSequence = MenuSequence(flags, selAcc,
897  HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
898 
899  return efmuisoSequence
900 
901 
902 @AccumulatorCache
903 def muEFMSIsoSequenceGenCfg(flags, is_probe_leg=False):
904 
905  (selAcc, sequenceOut) = muEFIsoAlgSequenceCfg(flags, True, is_probe_leg)
906 
907  from TrigMuonHypo.TrigMuonHypoConfig import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
908  efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
909  name = 'EFMuMSisoHypoAlg',
910  EFMuonsName = sequenceOut)
911 
912  selAcc.addHypoAlgo(efmuisoHypo)
913 
914  efmuisoSequence = MenuSequence(flags, selAcc,
915  HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
916 
917  return efmuisoSequence
918 
919 
920 
923 
925 
926  from TrigLongLivedParticles.TrigLongLivedParticlesConfig import MuonClusterConfig
927  from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
928 
929  selAcc = SelectionCA('muRoIClusterSel')
930 
931  viewName="MuRoIClusReco"
932  viewcreator = CompFactory.ViewCreatorInitialROITool
933  roiTool = viewcreator()
934 
935  recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature = False, RoIs = 'HLT_muVtxCluster_RoIs')
936  recoRoICluster.mergeReco(MuonClusterConfig(flags, 'muvtxMuonCluster'))
937  selAcc.mergeReco(recoRoICluster)
938 
939 
940  hypoAlg = MuonClusterHypoAlgConfig( flags,
941  name = 'MuRoiClusterHypoAlg')
942 
943  selAcc.addHypoAlgo(hypoAlg)
944 
945  muRoIClusterSequence = MenuSequence(flags, selAcc,
946  HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
947 
948  return muRoIClusterSequence
949 
950 
951 
952 
957 
959  from ..Config.GenerateMenuMT import GenerateMenuMT
960  menu = GenerateMenuMT() # get menu singleton
961  chains = [chain.name for chain in menu.chainsInMenu['Bphysics']]
962  return chains
963 
964 
968 
970  from ..Config.GenerateMenuMT import GenerateMenuMT
971  menu = GenerateMenuMT() # get menu singleton
972  chains = [chain.name for chain in menu.chainsInMenu['Muon'] if "l2io" in chain.name]
973  chains += [chain.name for chain in menu.chainsInMenu['Bphysics'] if not any(key in chain.name for key in ['noL2Comb','l2mt'])]
974  return chains
975 
976 
980 
982  from ..Config.GenerateMenuMT import GenerateMenuMT
983  menu = GenerateMenuMT() # get menu singleton
984  chains = [chain.name for chain in menu.chainsInMenu['Muon'] if "l2mt" in chain.name]
985  chains += [chain.name for chain in menu.chainsInMenu['Bphysics'] if "l2mt" in chain.name]
986  return chains
python.HLT.Muon.MuonMenuSequences.muEFCBSequenceGenCfg
def muEFCBSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:506
python.HLT.Muon.MuonMenuSequences.muFastCalibSequenceGenCfg
def muFastCalibSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:124
python.HLT.Muon.MuonMenuSequences.muEFSAAlgSequenceCfg
def muEFSAAlgSequenceCfg(flags, is_probe_leg=False)
EFSA step ###.
Definition: MuonMenuSequences.py:395
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
TrigMuonEFConfig.MergeEFMuonsAlgCfg
def MergeEFMuonsAlgCfg(flags, name="MergeEFMuonsAlg", **kwargs)
Definition: TrigMuonEFConfig.py:50
python.HLT.Muon.MuonMenuSequences.muEFCBAlgSequenceCfg
def muEFCBAlgSequenceCfg(flags, selCAName='', is_probe_leg=False)
EFCB seq ###.
Definition: MuonMenuSequences.py:448
vtune_athena.format
format
Definition: vtune_athena.py:14
python.TrigGenericAlgsConfig.ROBPrefetchingAlgCfg_Muon
def ROBPrefetchingAlgCfg_Muon(flags, nameSuffix, **kwargs)
Definition: TrigGenericAlgsConfig.py:63
python.HLT.Muon.MuonRecoSequences.muCombRecoSequenceCfg
def muCombRecoSequenceCfg(flags, RoIs, name, l2mtmode=False, l2CBname="")
Definition: MuonRecoSequences.py:299
python.HLT.Muon.MuonRecoSequences.efLateMuRoISequenceCfg
def efLateMuRoISequenceCfg(flags)
Definition: MuonRecoSequences.py:649
python.HLT.Muon.MuonRecoSequences.muonDecodeCfg
def muonDecodeCfg(flags, RoIs)
Definition: MuonRecoSequences.py:132
ViewCreatorFSROITool
Definition: ViewCreatorFSROITool.h:22
python.HLT.Muon.MuonMenuSequences.muFastCalibAlgSequenceCfg
def muFastCalibAlgSequenceCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:77
python.HLT.Muon.MuonMenuSequences.muCombAlgSequenceCfg
def muCombAlgSequenceCfg(flags, selCAName="", is_probe_leg=False, trackingMode="FTF")
************* Step2 ************* ### --------------------------------------------------—#
Definition: MuonMenuSequences.py:166
python.HLT.Muon.MuonMenuSequences.mul2mtSAOvlpRmSequenceGenCfg
def mul2mtSAOvlpRmSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:143
python.HLT.Muon.MuonRecoSequences.isCosmic
def isCosmic(flags)
Definition: MuonRecoSequences.py:61
GenerateMenuMT
Definition: GenerateMenuMT.py:1
python.HLT.Muon.MuonRecoSequences.muEFSARecoSequenceCfg
def muEFSARecoSequenceCfg(flags, RoIs, name)
Definition: MuonRecoSequences.py:326
python.HLT.Muon.MuonRecoSequences.muonIDFastTrackingSequenceCfg
def muonIDFastTrackingSequenceCfg(flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None, doLRT=False, trackingMode="FTF")
Definition: MuonRecoSequences.py:263
python.HLT.Muon.MuonMenuSequences.muCombSequenceGenCfg
def muCombSequenceGenCfg(flags, is_probe_leg=False, trackingMode="FTF")
Definition: MuonMenuSequences.py:259
TrigMuonEFConfig.MuonFilterAlgCfg
def MuonFilterAlgCfg(flags, name="FilterZeroMuons", **kwargs)
Definition: TrigMuonEFConfig.py:40
python.HLT.Muon.MuonMenuSequences.muEFCBIDperfSequenceGenCfg
def muEFCBIDperfSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:525
python.HLT.Muon.MuonMenuSequences.mul2mtCBOvlpRmSequenceGenCfg
def mul2mtCBOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode="FTF")
Definition: MuonMenuSequences.py:373
TrigMuonHypoConfig.TrigMufastHypoAlgCfg
def TrigMufastHypoAlgCfg(flags, name="UNSPECIFIED", **kwargs)
Definition: TrigMuonHypoConfig.py:285
python.HLT.Muon.MuonRecoSequences.efmuisoRecoSequenceCfg
def efmuisoRecoSequenceCfg(flags, RoIs, Muons, doMSiso=False)
Definition: MuonRecoSequences.py:613
python.HLT.Muon.MuonMenuSequences.getInsideOutMuonChainNames
def getInsideOutMuonChainNames()
Get muon triggers except L2 inside-out trigger to filter chains where we don't want to run L2SA IO mo...
Definition: MuonMenuSequences.py:969
python.HLT.Muon.MuonMenuSequences.muEFSAFSAlgSequenceCfg
def muEFSAFSAlgSequenceCfg(flags)
EF SA full scan ###.
Definition: MuonMenuSequences.py:629
python.HLT.Muon.MuonMenuSequences.muEFCBLRTAlgSequenceCfg
def muEFCBLRTAlgSequenceCfg(flags, selCAName='', is_probe_leg=False)
Definition: MuonMenuSequences.py:562
python.HLT.Muon.MuonMenuSequences.muCombLRTSequenceGenCfg
def muCombLRTSequenceGenCfg(flags, is_probe_leg=False, trackingMode="FTF")
Definition: MuonMenuSequences.py:333
python.HLT.Muon.MuonMenuSequences.muCombLRTAlgSequenceCfg
def muCombLRTAlgSequenceCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:298
python.HLT.Muon.MuonMenuSequences.muEFIsoSequenceGenCfg
def muEFIsoSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:885
TrigMuonHypoConfig.TrigMuonEFTrackIsolationHypoAlgCfg
def TrigMuonEFTrackIsolationHypoAlgCfg(flags, name="TrigMuonEFTrackIsolationHypoAlg", **kwargs)
Definition: TrigMuonHypoConfig.py:973
python.HLT.Muon.MuonMenuSequences.efLateMuRoISequenceGenCfg
def efLateMuRoISequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:778
python.HLT.Muon.MuonRecoSequences.muEFInsideOutRecoSequenceCfg
def muEFInsideOutRecoSequenceCfg(flags, RoIs, name)
Definition: MuonRecoSequences.py:538
python.HLT.Muon.MuonMenuSequences.muEFCBLRTSequenceGenCfg
def muEFCBLRTSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:585
python.CFElements.seqAND
def seqAND(name, subs=[])
Definition: CFElements.py:25
python.JetAnalysisCommon.parOR
parOR
Definition: JetAnalysisCommon.py:271
python.HLT.Muon.MuonRecoSequences.muonIDCosmicTrackingSequenceCfg
def muonIDCosmicTrackingSequenceCfg(flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None)
Definition: MuonRecoSequences.py:273
ViewCreatorFetchFromViewROITool
Definition: ViewCreatorFetchFromViewROITool.h:26
python.HLT.Muon.MuonMenuSequences.muEFMSIsoSequenceGenCfg
def muEFMSIsoSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:903
python.HLT.Muon.MuonMenuSequences.muEFSAFSSequenceGenCfg
def muEFSAFSSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:655
python.HLT.Muon.MuonMenuSequences.muFastSequenceGenCfg
def muFastSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:105
TrigMuonEFConfig.MuonChainFilterAlgCfg
def MuonChainFilterAlgCfg(flags, name="MuonChainFilter", **kwargs)
Definition: TrigMuonEFConfig.py:61
python.HLT.Muon.MuonMenuSequences.muRoiClusterSequenceGenCfg
def muRoiClusterSequenceGenCfg(flags)
Muon RoI Cluster Trigger for MS LLP Searches ##.
Definition: MuonMenuSequences.py:924
python.HLT.Muon.MuonMenuSequences.muEFSASequenceGenCfg
def muEFSASequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:425
TrigMuonHypoConfig.TrigMuonEFHypoAlgCfg
def TrigMuonEFHypoAlgCfg(flags, name="UNSPECIFIED", **kwargs)
Definition: TrigMuonHypoConfig.py:665
python.HLT.Muon.MuonMenuSequences.muCombOvlpRmSequenceGenCfg
def muCombOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode="FTF")
Definition: MuonMenuSequences.py:354
python.HLT.Muon.MuonMenuSequences.efLateMuSequenceGenCfg
def efLateMuSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:828
python.HLT.Muon.MuonRecoSequences.muEFCBRecoSequenceCfg
def muEFCBRecoSequenceCfg(flags, RoIs, name)
Definition: MuonRecoSequences.py:428
python.HLT.Muon.MuonMenuSequences.muEFIsoAlgSequenceCfg
def muEFIsoAlgSequenceCfg(flags, doMSiso=False, is_probe_leg=False)
efMuiso step ###
Definition: MuonMenuSequences.py:847
python.HLT.Muon.MuonMenuSequences.efLateMuAlgSequenceCfg
def efLateMuAlgSequenceCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:796
TrigMuonHypoConfig.TrigMuonLateMuRoIHypoAlgCfg
def TrigMuonLateMuRoIHypoAlgCfg(flags, name="TrigMuRoIHypoAlg", **kwargs)
Definition: TrigMuonHypoConfig.py:1078
python.HLT.Muon.MuonMenuSequences.getBphysChainNames
def getBphysChainNames()
Get Bphysics triggers to # filter chains where we # don't want to run muComb #.
Definition: MuonMenuSequences.py:958
python.HLT.Muon.MuonMenuSequences.muFastAlgSequenceCfg
def muFastAlgSequenceCfg(flags, selCAName="", is_probe_leg=False)
************* Step1 ************* ### --------------------------------------------------—#
Definition: MuonMenuSequences.py:24
python.TrigGenericAlgsConfig.ROBPrefetchingAlgCfg_Si
def ROBPrefetchingAlgCfg_Si(flags, nameSuffix, **kwargs)
Definition: TrigGenericAlgsConfig.py:57
TrigMuonHypoConfig.TrigmuCombHypoAlgCfg
def TrigmuCombHypoAlgCfg(flags, name="UNSPECIFIED", **kwargs)
Definition: TrigMuonHypoConfig.py:476
python.HLT.Muon.MuonMenuSequences.muEFCBFSSequenceGenCfg
def muEFCBFSSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:740
python.HLT.Muon.MuonMenuSequences.getMultiTrackChainNames
def getMultiTrackChainNames()
Get muon triggers except L2 multi-track trigger to filter chains where we don't want to run L2SA mult...
Definition: MuonMenuSequences.py:981
python.TrigLongLivedParticlesHypoConfig.MuonClusterHypoAlgConfig
def MuonClusterHypoAlgConfig(flags, name="MuonClusterHypoAlgConfig")
Definition: TrigLongLivedParticlesHypoConfig.py:17
TrigLongLivedParticlesConfig.MuonClusterConfig
def MuonClusterConfig(flags, name="MuonClusterConfig")
Definition: TrigLongLivedParticlesConfig.py:7
python.HLT.Muon.MuonMenuSequences.efLateMuRoIAlgSequenceCfg
def efLateMuRoIAlgSequenceCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:757
python.HLT.Muon.MuonMenuSequences.muEFCBLRTIDperfSequenceGenCfg
def muEFCBLRTIDperfSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:605
python.TriggerEDM.recordable
def recordable(arg, runVersion=3)
Definition: TriggerEDM.py:34
TrigMuonHypoConfig.TrigMuonEFIdtpHypoAlgCfg
def TrigMuonEFIdtpHypoAlgCfg(flags, name="TrigMuonEFIdtpHypoAlg", **kwargs)
Definition: TrigMuonHypoConfig.py:1075
python.HLT.Muon.MuonMenuSequences.muEFIDtpSequenceGenCfg
def muEFIDtpSequenceGenCfg(flags, is_probe_leg=False)
Definition: MuonMenuSequences.py:545
python.HLT.Muon.MuonRecoSequences.muFastRecoSequenceCfg
def muFastRecoSequenceCfg(flags, RoIs, doFullScanID=False, InsideOutMode=False, extraLoads=None, l2mtmode=False, calib=False)
Definition: MuonRecoSequences.py:222
python.HLT.Muon.MuonRecoSequences.muonNames
Definition: MuonRecoSequences.py:27
python.HLT.Muon.MuonMenuSequences.mul2IOOvlpRmSequenceGenCfg
def mul2IOOvlpRmSequenceGenCfg(flags, is_probe_leg=False, trackingMode="FTF")
Definition: MuonMenuSequences.py:279
python.HLT.Muon.MuonMenuSequences.muEFCBFSAlgSequenceCfg
def muEFCBFSAlgSequenceCfg(flags, is_probe_leg=False)
EF CB full scan ###.
Definition: MuonMenuSequences.py:679