26 selAccSA = SelectionCA(
'L2MuFastSel'+selCAName, isProbe=is_probe_leg)
28 viewName=
"L2MuFastReco"
30 recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
34 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
35 from .MuonRecoSequences
import muFastRecoSequenceCfg, muonDecodeCfg
36 recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
'RoIs'))
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 )]
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)
53 seqFilter = seqAND(
"L2MuonMTSeq{}".format(
"_probe" if is_probe_leg
else ""))
54 acc.addSequence(seqFilter)
55 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
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)
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)
68 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
69 robPrefetch = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
71 selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetch)
74 return (selAccSA, sequenceOut)
79 selAccSA = SelectionCA(
'L2MuFastCalibSel', isProbe=is_probe_leg)
81 viewName=
"L2MuFastCalibReco"
83 recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
87 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
88 from .MuonRecoSequences
import muFastRecoSequenceCfg, muonDecodeCfg
89 recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
'RoIs'))
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)
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)
101 return (selAccSA, sequenceOut)
169 from .MuonRecoSequences
import muFastRecoSequenceCfg, muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg, muonIDCosmicTrackingSequenceCfg, isCosmic
171 selAccCB = SelectionCA(
'L2MuCombSel'+selCAName, isProbe=is_probe_leg)
173 viewName=
"Cosmic" if isCosmic(flags)
else "L2MuCombReco"
175 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
178 requireParentView =
True
180 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
181 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
184 sequenceOut = muNames.L2CBName
186 acc = ComponentAccumulator()
187 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
190 from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming
import CFNaming
191 filterInput = [ CFNaming.inputMakerOutName(
'IM_'+viewName) ]
193 for decision
in filterInput:
194 extraLoads += [(
'xAOD::TrigCompositeContainer' ,
'StoreGateSvc+%s' % decision )]
197 recoCB.mergeReco(muonIDCosmicTrackingSequenceCfg( flags, viewName+
"RoIs" ,
"cosmics", extraLoads, extraLoads ))
199 recoCB.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs",
"muon", extraLoads, extraLoads, trackingMode = trackingMode ))
202 seql2cb = seqAND(
"l2muCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
203 acc.addSequence(seql2cb)
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)
214 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
False, l2CBname = sequenceOut ), sequenceName=seql2cb.name)
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)
225 seql2cbmt = seqAND(
"l2mtmuCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
226 acc.addSequence(seql2cbmt)
227 acc.merge(MultiTrackChainFilter, sequenceName=seql2cbmt.name)
230 sequenceOutL2mtCB = muNames.L2CBName+
"l2mtmode"
231 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
True, l2CBname = sequenceOutL2mtCB ), sequenceName=seql2cbmt.name)
236 seql2iocb = seqAND(
"l2muFastIOFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
237 acc.addSequence(seql2iocb)
239 from .MuonRecoSequences
import isCosmic
240 sequenceOutL2SAIO = muNames.L2SAName+
"IOmode"
242 InputDecisions = filterInput,
243 L2MuFastContainer = sequenceOutL2SAIO, L2MuCombContainer = muNames.L2CBName+
"IOmode",
244 WriteMuFast =
True, WriteMuComb =
True, NotGate=
True)
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)
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)
255 return (selAccCB, sequenceOut)
261 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
263 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
264 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
265 name =
'TrigL2MuCBHypoAlg',
266 MuonL2CBInfoFromMuCombAlg = sequenceOut,
269 selAcc.addHypoAlgo(l2cbHypo)
271 l2cbSequence = MenuSequence(flags, selAcc,
272 HypoToolGen = TrigmuCombHypoToolFromDict)
282 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"IO", is_probe_leg, trackingMode = trackingMode)
284 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2IOHypoToolwORFromDict
285 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
286 name =
'TrigL2MuCBIOHypoAlg',
287 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"IOmode",
290 selAcc.addHypoAlgo(l2cbHypo)
292 l2cbSequence = MenuSequence(flags, selAcc,
293 HypoToolGen = Trigl2IOHypoToolwORFromDict)
300 selAcc = SelectionCA(
'l2muCombLRT', isProbe=is_probe_leg)
302 viewName=
"l2muCombLRT"
303 ViewCreatorCenteredOnIParticleTool=CompFactory.ViewCreatorCentredOnIParticleROITool
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
312 recol2cb = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
315 from .MuonRecoSequences
import muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg
316 sequenceOut = muNamesLRT.L2CBName
317 recol2cb.mergeReco(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF_LRT", l2CBname = sequenceOut ))
321 recol2cb.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs" ,
"muonLRT", extraLoads, doLRT=
True ))
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)
329 return (selAcc, sequenceOut)
337 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
338 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
339 name =
'TrigL2MuCBLRTHypoAlg',
340 MuonL2CBInfoFromMuCombAlg = sequenceOut,
341 RoILinkName =
"l2lrtroi",
344 selAcc.addHypoAlgo(l2cbHypo)
346 l2cbSequence = MenuSequence(flags, selAcc,
347 HypoToolGen = TrigmuCombHypoToolFromDict)
356 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
358 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolwORFromDict
359 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
360 name =
'TrigL2MuCBHypoAlg',
361 MuonL2CBInfoFromMuCombAlg = sequenceOut,
364 selAcc.addHypoAlgo(l2cbHypo)
366 l2cbSequence = MenuSequence(flags, selAcc,
367 HypoToolGen = TrigmuCombHypoToolwORFromDict)
375 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"mt", is_probe_leg, trackingMode = trackingMode)
377 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2mtCBHypoToolwORFromDict
378 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
379 name =
'TrigL2mtMuCBHypoAlg',
380 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"l2mtmode",
383 selAcc.addHypoAlgo(l2cbHypo)
385 l2cbSequence = MenuSequence(flags, selAcc,
386 HypoToolGen = Trigl2mtCBHypoToolwORFromDict)
396 suffix =
"_mlbkt" if useBucketFilter
else ""
397 selAccMS = SelectionCA(f
'EFMuMSSel_RoI{suffix}', isProbe=is_probe_leg)
399 viewName=f
"EFMuMSReco_RoI{suffix}"
400 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
402 roiTool =
ViewCreatorFetchFromViewROITool(RoisWriteHandleKey=f
"HLT_Roi_L2SAMuonForEF{suffix}", InViewRoIs =
"forMS", ViewToFetchFrom =
"L2MuFastRecoViews")
403 requireParentView =
True
405 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
409 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
410 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
412 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
414 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, viewName+
'RoIs', f
'RoI{suffix}', useBucketFilter=useBucketFilter)
415 recoMS.mergeReco(muEFSARecoSequenceAcc)
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)
421 return (selAccMS, sequenceOut)
427 (selAcc, sequenceOut) =
muEFSAAlgSequenceCfg(flags, is_probe_leg, useBucketFilter=useBucketFilter)
429 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
430 suffix =
"_mlbkt" if useBucketFilter
else ""
431 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
432 name = f
'TrigMuonEFMSonlyHypo_RoI{suffix}',
433 MuonDecisions = sequenceOut,
436 selAcc.addHypoAlgo(efmuMSHypo)
438 efmuMSSequence = MenuSequence(flags, selAcc,
439 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
442 return efmuMSSequence
451 from .MuonRecoSequences
import isCosmic
452 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName+suffix, isProbe=is_probe_leg)
454 viewName=
"EFMuCBReco_RoI"+suffix
if not isCosmic(flags)
else "CosmicEFCB"
455 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
457 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
459 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
463 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
464 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
466 acc = ComponentAccumulator()
467 seqmerge = seqAND(
"muonCBInsideOutMergingSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
468 acc.addSequence(seqmerge)
471 acc2 = ComponentAccumulator()
472 seqreco = parOR(
"muonEFCBandInsideOutRecoSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
473 acc2.addSequence(seqreco)
474 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
475 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix ), sequenceName=seqreco.name)
476 sequenceOutCB = muNames.EFCBOutInName+suffix
479 acc3 = ComponentAccumulator()
480 seqfilter = seqAND(
"muonEFInsideOutSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
481 acc3.addSequence(seqfilter)
482 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuons"+suffix, MuonContainerLocation=sequenceOutCB)
483 acc3.merge(muonFilter, sequenceName=seqfilter.name)
486 acc4 = ComponentAccumulator()
487 seqio = parOR(
"efmuInsideOutViewNode_RoI{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
488 acc4.addSequence(seqio)
489 acc4.merge(muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix), sequenceName=seqio.name+suffix)
490 sequenceOutInsideOut = muNames.EFCBInOutName+suffix
492 acc3.merge(acc4, sequenceName=seqfilter.name)
493 acc2.merge(acc3, sequenceName=seqreco.name)
494 acc.merge(acc2, sequenceName=seqmerge.name)
497 mergedMuonOutputLocation = recordable(muNames.EFCBName+
'_'+suffix)
499 mergedMuonOutputLocation = muNames.EFCBName
500 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons"+suffix, MuonCBContainerLocation=sequenceOutCB,
501 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=mergedMuonOutputLocation)
503 acc.merge(mergeMuons, sequenceName=seqmerge.name)
504 recoCB.mergeReco(acc)
505 selAccCB.mergeReco(recoCB)
507 return (selAccCB, muNames.EFCBName)
515 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
516 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
517 name =
'TrigMuonEFCombinerHypoAlg',
518 MuonDecisions = sequenceOut,
519 MapToPreviousDecisions=
True)
521 selAcc.addHypoAlgo(efmuCBHypo)
523 efmuCBSequence = MenuSequence(flags, selAcc,
524 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
526 return efmuCBSequence
534 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
535 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
536 name =
'TrigMuonEFCombinerHypoAlgIOmode',
537 MuonDecisions = sequenceOut+
'_IOmode',
538 MapToPreviousDecisions=
True)
540 selAcc.addHypoAlgo(efmuCBHypo)
542 efmuCBSequence = MenuSequence(flags, selAcc,
543 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
545 return efmuCBSequence
553 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
554 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
555 name =
'TrigMuonEFCombinerHypoAlgl2mtmode',
556 MuonDecisions = sequenceOut+
'_l2mtmode',
557 MapToPreviousDecisions=
True)
559 selAcc.addHypoAlgo(efmuCBHypo)
561 efmuCBSequence = MenuSequence(flags, selAcc,
562 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
564 return efmuCBSequence
591 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
592 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
593 name =
'TrigMuonEFCombinerIDperfHypoAlg',
595 MuonDecisions = sequenceOut,
596 MapToPreviousDecisions=
True)
598 selAcc.addHypoAlgo(efmuCBHypo)
600 efmuCBSequence = MenuSequence(flags, selAcc,
601 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
603 return efmuCBSequence
626 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
628 viewName=
"EFMuCBLRTReco"
629 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
630 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
632 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
634 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
637 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
638 recoCB.mergeReco(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"LRT",
''))
639 sequenceOut = muNamesLRT.EFCBName
641 selAccCB.mergeReco(recoCB)
643 return (selAccCB, sequenceOut)
651 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
652 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
653 name =
'TrigMuonEFCombinerHypoAlgLRT',
654 MuonDecisions = sequenceOut,
655 MapToPreviousDecisions=
True)
658 selAcc.addHypoAlgo(efmuCBLRTHypo)
660 efmuCBSequence = MenuSequence(flags, selAcc,
661 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
663 return efmuCBSequence
671 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
672 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
673 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
675 MuonDecisions = sequenceOut,
676 MapToPreviousDecisions=
True)
679 selAcc.addHypoAlgo(efmuCBLRTHypo)
681 efmuCBSequence = MenuSequence(flags, selAcc,
682 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
684 return efmuCBSequence
693 selAccMS = SelectionCA(
'EFMuMSSel_FS')
695 viewName=
"EFMuMSReco_FS"
696 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
698 requireParentView =
False
700 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
704 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
705 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
706 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
708 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, recoMS.name+
'RoIs',
'FS' )
709 recoMS.mergeReco(muEFSARecoSequenceAcc)
711 selAccMS.mergeReco(recoMS)
713 return (selAccMS, sequenceOut)
721 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
723 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
724 name =
'TrigMuonEFMSonlyHypo_FS',
725 MuonDecisions = sequenceOut,
728 selAcc.addHypoAlgo(efmuMSHypo)
730 efmuMSSequence = MenuSequence(flags, selAcc,
731 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
734 return efmuMSSequence
743 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
745 viewName=
"EFMuCBReco_FS"
747 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
749 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
750 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
753 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
754 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
756 acc = ComponentAccumulator()
757 seqmerge = seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".format(
"_probe" if is_probe_leg
else ""))
758 acc.addSequence(seqmerge)
760 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
761 acc2 = ComponentAccumulator()
762 seqreco = parOR(
"muonEFCBFSInsideOutRecoSequence{}".format(
"_probe" if is_probe_leg
else ""))
763 acc2.addSequence(seqreco)
765 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
''), sequenceName=seqreco.name)
766 sequenceOutCB = muNamesFS.EFCBOutInName
769 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
771 acc3 = ComponentAccumulator()
772 seqfilt = seqAND(
"muonEFCBFSInsideOutSequence{}".format(
"_probe" if is_probe_leg
else ""))
773 acc3.addSequence(seqfilt)
774 acc3.merge(muonFilter, sequenceName=seqfilt.name)
778 acc4 = ComponentAccumulator()
779 seqio = parOR(
"efmuInsideOutViewNode_FS{}".format(
"_probe" if is_probe_leg
else ""))
780 acc4.addSequence(seqio)
782 muonEFInsideOutRecoAlgSequence = muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
'' )
783 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
784 acc3.merge(acc4, sequenceName=seqfilt.name)
785 acc2.merge(acc3, sequenceName=seqreco.name)
786 acc.merge(acc2, sequenceName=seqmerge.name)
787 sequenceOutInsideOut = muNamesFS.EFCBInOutName
790 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
791 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
792 acc.merge(mergeMuons, sequenceName=seqmerge.name)
793 recoCB.mergeReco(acc)
795 sequenceOut = muNamesFS.EFCBName
796 selAccCB.mergeReco(recoCB)
798 return (selAccCB, sequenceOut)
860 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
861 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
863 viewName =
"EFLateMuReco"
864 viewcreator = CompFactory.ViewCreatorNamedROITool
865 roiTool = viewcreator(ROILinkName=
"feature")
867 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
871 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
872 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
874 recoLateMu.mergeReco(muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
876 recoLateMu.mergeReco(muonIDFastTrackingSequenceCfg(flags, recoLateMu.name+
"RoIs",
"muonLate" ))
878 recoLateMu.mergeReco(muEFInsideOutRecoSequenceCfg(muonflagsCB, recoLateMu.name+
"RoIs",
"LateMu",
''))
879 sequenceOut = muNames.EFCBInOutName+
'_Late'
882 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
883 robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName)
884 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
886 return (selAcc, sequenceOut)
895 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
896 trigMuonEFLateHypo = TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
898 selAcc.addHypoAlgo(trigMuonEFLateHypo)
899 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
901 return MenuSequence(flags, selAcc,
902 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
915 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
917 viewName=
"EFMuIsoReco"+name
919 roisWriteHandleKey =
"Roi_MuonIsoMS"
921 roisWriteHandleKey = recordable(
"HLT_Roi_MuonIso")
923 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
924 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
925 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
926 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
928 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
929 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
933 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
934 sequenceOut = muNames.EFIsoMuonName+name
935 recoIso.mergeReco(efmuisoRecoSequenceCfg( flags, viewName+
"RoIs",
"IsoViewMuons"+name, doMSiso ))
938 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
939 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
941 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
943 return (selAccIso, sequenceOut)
951 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
952 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
953 name =
'EFMuisoHypoAlg',
954 EFMuonsName = sequenceOut)
956 selAcc.addHypoAlgo(efmuisoHypo)
958 efmuisoSequence = MenuSequence(flags, selAcc,
959 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
961 return efmuisoSequence
969 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
970 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
971 name =
'EFMuMSisoHypoAlg',
972 EFMuonsName = sequenceOut)
974 selAcc.addHypoAlgo(efmuisoHypo)
976 efmuisoSequence = MenuSequence(flags, selAcc,
977 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
979 return efmuisoSequence
988 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
989 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
991 selAcc = SelectionCA(
'muRoIClusterSel')
993 viewName=
"MuRoIClusReco"
994 viewcreator = CompFactory.ViewCreatorInitialROITool
995 roiTool = viewcreator()
997 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
998 recoRoICluster.mergeReco(MuonClusterConfig(flags,
'muvtxMuonCluster'))
999 selAcc.mergeReco(recoRoICluster)
1002 hypoAlg = MuonClusterHypoAlgConfig( flags,
1003 name =
'MuRoiClusterHypoAlg')
1005 selAcc.addHypoAlgo(hypoAlg)
1007 muRoIClusterSequence = MenuSequence(flags, selAcc,
1008 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
1010 return muRoIClusterSequence