24 selAccName = f
'L2MuFastSel_RoI{suffix}' if useNewFast
else f
'L2MuFastSel{suffix}'
25 selAccSA = SelectionCA(selAccName, isProbe=is_probe_leg)
27 viewName= f
"L2MuFastReco_RoI{suffix}" if useNewFast
else "L2MuFastReco"
29 recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
33 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
34 from .MuonRecoSequences
import muFastRecoSequenceCfg, muonDecodeCfg
35 recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
'RoIs'))
38 from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming
import CFNaming
39 filterInput = [ CFNaming.inputMakerOutName(
'IM_'+viewName) ]
40 for decision
in filterInput:
41 extraLoads += [(
'xAOD::TrigCompositeContainer',
'StoreGateSvc+%s' % decision )]
43 from .MuonRecoSequences
import isCosmic
44 muFastRecoSeq = muFastRecoSequenceCfg(muonflags, RoIs=viewName+
'RoIs',
45 suffix=f
"RoI{suffix}" if useNewFast
else "",
46 extraLoads=extraLoads,
47 doFullScanID= isCosmic(flags),
48 useNewFast=useNewFast )
49 sequenceOut = muNames.L2SAPhIIName
if useNewFast
else muNames.L2SAName
52 recoSA.mergeReco(muFastRecoSeq)
54 acc = ComponentAccumulator()
55 seql2sa = seqAND(
"L2MuonSASeq{}".format(
"_probe" if is_probe_leg
else ""))
56 acc.addSequence(seql2sa)
57 acc.merge(muFastRecoSeq, sequenceName=seql2sa.name)
60 seqFilter = seqAND(
"L2MuonMTSeq{}".format(
"_probe" if is_probe_leg
else ""))
61 acc.addSequence(seqFilter)
62 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
64 MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags,
"SAFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
65 InputDecisions = filterInput,
66 L2MuFastContainer = muNames.L2SAName+
"l2mtmode",
67 L2MuCombContainer = muNames.L2CBName+
"l2mtmode",
68 WriteMuFast =
True, NotGate =
True)
70 acc.merge(MultiTrackChainFilter, sequenceName=seqFilter.name)
71 muFastl2mtRecoSeq = muFastRecoSequenceCfg( muonflags, RoIs=viewName+
'RoIs', doFullScanID= isCosmic(flags), l2mtmode=
True )
72 acc.merge(muFastl2mtRecoSeq, sequenceName=seqFilter.name)
76 selAccSA.mergeReco(recoSA)
78 return (selAccSA, sequenceOut)
83 selAccSA = SelectionCA(
'L2MuFastCalibSel', isProbe=is_probe_leg)
85 viewName=
"L2MuFastCalibReco"
87 recoSA = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
91 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
92 from .MuonRecoSequences
import muFastRecoSequenceCfg, muonDecodeCfg
93 recoSA.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
'RoIs'))
95 from .MuonRecoSequences
import isCosmic
96 muFastRecoSeq = muFastRecoSequenceCfg( muonflags, RoIs=viewName+
'RoIs', doFullScanID= isCosmic(flags), calib=
True )
97 sequenceOut = muNames.L2SAName+
"Calib"
98 recoSA.mergeReco(muFastRecoSeq)
100 selAccSA.mergeReco(recoSA)
102 return (selAccSA, sequenceOut)
108 (selAcc, sequenceOut) =
muFastAlgSequenceCfg(flags, suffix=
"", useNewFast=useNewFast, is_probe_leg=is_probe_leg)
111 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFFastRecoSAHypoToolFromDict
112 l2saHypo = TrigMuonEFHypoAlgCfg( flags,
113 name =
'TrigEFMufastHypoAlg_RoI',
114 MuonDecisions = sequenceOut,
116 HypoToolGen = TrigMuonEFFastRecoSAHypoToolFromDict
119 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
120 l2saHypo = TrigMufastHypoAlgCfg( flags,
121 name =
'TrigL2MufastHypoAlg',
122 MuonL2SAInfoFromMuFastAlg = sequenceOut)
123 HypoToolGen = TrigMufastHypoToolFromDict
125 selAcc.addHypoAlgo(l2saHypo)
127 l2saSequence = MenuSequence(flags, selAcc,
128 HypoToolGen = HypoToolGen)
138 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
139 l2saHypo = TrigMufastHypoAlgCfg( flags,
140 name =
'TrigL2MufastCalibHypoAlg',
141 MuonL2SAInfoFromMuFastAlg = sequenceOut)
143 selAcc.addHypoAlgo(l2saHypo)
145 l2saSequence = MenuSequence(flags, selAcc,
146 HypoToolGen = TrigMufastHypoToolFromDict)
157 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
158 l2saHypo = TrigMufastHypoAlgCfg( flags,
159 name =
'TrigL2mtMufastHypoAlg',
160 MuonL2SAInfoFromMuFastAlg = muNames.L2SAName+
"l2mtmode")
162 selAcc.addHypoAlgo(l2saHypo)
164 l2saSequence = MenuSequence(flags, selAcc,
165 HypoToolGen = TrigMufastHypoToolFromDict)
179 from .MuonRecoSequences
import muFastRecoSequenceCfg, muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg, muonIDCosmicTrackingSequenceCfg, isCosmic
181 selAccCB = SelectionCA(
'L2MuCombSel'+selCAName, isProbe=is_probe_leg)
183 viewName=
"Cosmic" if isCosmic(flags)
else "L2MuCombReco"
185 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
188 requireParentView =
True
190 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
191 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
194 sequenceOut = muNames.L2CBName
196 acc = ComponentAccumulator()
197 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
200 from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming
import CFNaming
201 filterInput = [ CFNaming.inputMakerOutName(
'IM_'+viewName) ]
203 for decision
in filterInput:
204 extraLoads += [(
'xAOD::TrigCompositeContainer' ,
'StoreGateSvc+%s' % decision )]
207 recoCB.mergeReco(muonIDCosmicTrackingSequenceCfg( flags, viewName+
"RoIs" ,
"cosmics", extraLoads, extraLoads ))
209 recoCB.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs",
"muon", extraLoads, extraLoads, trackingMode = trackingMode ))
212 seql2cb = seqAND(
"l2muCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
213 acc.addSequence(seql2cb)
216 muonChainFilter = MuonChainFilterAlgCfg(muonflags,
"FilterBphysChains", ChainsToFilter =
getBphysChainNames(),
217 InputDecisions = filterInput,
218 L2MuCombContainer = sequenceOut,
219 WriteMuComb =
True, WriteMuFast=
False)
220 acc.merge(muonChainFilter, sequenceName=seql2cb.name)
224 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
False, l2CBname = sequenceOut ), sequenceName=seql2cb.name)
228 MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags,
"CBFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
229 InputDecisions = filterInput,
230 L2MuFastContainer = muNames.L2SAName+
"l2mtmode",
231 L2MuCombContainer = muNames.L2CBName+
"l2mtmode",
232 WriteMuComb =
True, NotGate =
True)
235 seql2cbmt = seqAND(
"l2mtmuCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
236 acc.addSequence(seql2cbmt)
237 acc.merge(MultiTrackChainFilter, sequenceName=seql2cbmt.name)
240 sequenceOutL2mtCB = muNames.L2CBName+
"l2mtmode"
241 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
True, l2CBname = sequenceOutL2mtCB ), sequenceName=seql2cbmt.name)
246 seql2iocb = seqAND(
"l2muFastIOFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
247 acc.addSequence(seql2iocb)
249 from .MuonRecoSequences
import isCosmic
250 sequenceOutL2SAIO = muNames.L2SAName+
"IOmode"
252 InputDecisions = filterInput,
253 L2MuFastContainer = sequenceOutL2SAIO, L2MuCombContainer = muNames.L2CBName+
"IOmode",
254 WriteMuFast =
True, WriteMuComb =
True, NotGate=
True)
256 acc.merge(insideoutMuonChainFilter, sequenceName=seql2iocb.name)
257 acc.merge(muFastRecoSequenceCfg(muonflags, viewName+
"RoIs", doFullScanID=isCosmic(flags) , InsideOutMode=
True), sequenceName=seql2iocb.name)
258 recoCB.mergeReco(acc)
260 selAccCB.mergeReco(recoCB)
262 return (selAccCB, sequenceOut)
268 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
270 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
271 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
272 name =
'TrigL2MuCBHypoAlg',
273 MuonL2CBInfoFromMuCombAlg = sequenceOut,
276 selAcc.addHypoAlgo(l2cbHypo)
278 l2cbSequence = MenuSequence(flags, selAcc,
279 HypoToolGen = TrigmuCombHypoToolFromDict)
289 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"IO", is_probe_leg, trackingMode = trackingMode)
291 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2IOHypoToolwORFromDict
292 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
293 name =
'TrigL2MuCBIOHypoAlg',
294 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"IOmode",
297 selAcc.addHypoAlgo(l2cbHypo)
299 l2cbSequence = MenuSequence(flags, selAcc,
300 HypoToolGen = Trigl2IOHypoToolwORFromDict)
307 selAcc = SelectionCA(
'l2muCombLRT', isProbe=is_probe_leg)
309 viewName=
"l2muCombLRT"
310 ViewCreatorCenteredOnIParticleTool=CompFactory.ViewCreatorCentredOnIParticleROITool
312 roiTool = ViewCreatorCenteredOnIParticleTool(RoisWriteHandleKey = recordable(
"HLT_Roi_L2SAMuon_LRT"),
313 RoIZedWidth=flags.Trigger.InDetTracking.muonLRT.zedHalfWidth,
314 RoIEtaWidth=flags.Trigger.InDetTracking.muonLRT.etaHalfWidth,
315 RoIPhiWidth=flags.Trigger.InDetTracking.muonLRT.phiHalfWidth,
316 UseZedPosition=
False)
317 requireParentView =
True
319 recol2cb = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
322 from .MuonRecoSequences
import muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg
323 sequenceOut = muNamesLRT.L2CBName
324 recol2cb.mergeReco(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF_LRT", l2CBname = sequenceOut ))
328 recol2cb.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs" ,
"muonLRT", extraLoads, doLRT=
True ))
330 selAcc.mergeReco(recol2cb)
332 return (selAcc, sequenceOut)
340 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
341 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
342 name =
'TrigL2MuCBLRTHypoAlg',
343 MuonL2CBInfoFromMuCombAlg = sequenceOut,
344 RoILinkName =
"l2lrtroi",
347 selAcc.addHypoAlgo(l2cbHypo)
349 l2cbSequence = MenuSequence(flags, selAcc,
350 HypoToolGen = TrigmuCombHypoToolFromDict)
359 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
361 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolwORFromDict
362 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
363 name =
'TrigL2MuCBHypoAlg',
364 MuonL2CBInfoFromMuCombAlg = sequenceOut,
367 selAcc.addHypoAlgo(l2cbHypo)
369 l2cbSequence = MenuSequence(flags, selAcc,
370 HypoToolGen = TrigmuCombHypoToolwORFromDict)
378 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"mt", is_probe_leg, trackingMode = trackingMode)
380 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2mtCBHypoToolwORFromDict
381 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
382 name =
'TrigL2mtMuCBHypoAlg',
383 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"l2mtmode",
386 selAcc.addHypoAlgo(l2cbHypo)
388 l2cbSequence = MenuSequence(flags, selAcc,
389 HypoToolGen = Trigl2mtCBHypoToolwORFromDict)
400 selAccMS = SelectionCA(f
'EFMuMSSel_RoI{suffix}', isProbe=is_probe_leg)
402 viewName=f
"EFMuMSReco_RoI{suffix}"
404 recoMS = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
407 roiTool = CompFactory.ViewCreatorFetchFromViewROITool(RoisWriteHandleKey=f
"HLT_Roi_L2SAMuonForEF{suffix}",
408 InViewRoIs =
"forMS",
409 ViewToFetchFrom =
"L2MuFastRecoViews")
410 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg)
413 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
415 truthAlgs = ComponentAccumulator()
416 if muonflags.Muon.setupTruthAlgorithms:
417 loadFromSG = [(
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MDT_SDO' ),
418 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MM_SDO' ),
419 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+RPC_SDO' ),
420 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+TGC_SDO' ),
421 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+sTGC_SDO' )]
422 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
423 truthAlgs.merge(SGInputLoaderCfg(muonflags, loadFromSG))
425 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
426 truthAlgs.merge(GEN_AOD2xAODCfg(muonflags))
427 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthObjCreatorsCfg
428 truthAlgs.merge(MuonTruthObjCreatorsCfg(muonflags, useSDO=
True))
430 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
432 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
434 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, RoIs = viewName+
'RoIs',
435 suffix = f
'RoI{suffix}',
436 useBucketFilter=useBucketFilter)
437 recoMS.mergeReco(muEFSARecoSequenceAcc)
439 selAccMS.mergeReco(recoMS, upSequenceCA=truthAlgs)
441 return (selAccMS, sequenceOut)
447 if flags.Trigger.Offline.SA.Muon.scheduleActsReco
and flags.Trigger.Offline.SA.Muon.usePhaseIIGeoSetup:
448 suffix = f
'PhII{"_newFast" if useNewFast else ""}{"_mlbkt" if useBucketFilter else ""}'
453 is_probe_leg=is_probe_leg,
454 useBucketFilter=useBucketFilter,
455 useNewFast=useNewFast)
457 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
458 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
459 name = f
'TrigMuonEFMSonlyHypo_RoI{suffix}',
460 MuonDecisions = sequenceOut,
463 selAcc.addHypoAlgo(efmuMSHypo)
465 efmuMSSequence = MenuSequence(flags, selAcc,
466 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
469 return efmuMSSequence
478 from .MuonRecoSequences
import isCosmic
479 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName+suffix, isProbe=is_probe_leg)
481 viewName=
"EFMuCBReco_RoI"+suffix
if not isCosmic(flags)
else "CosmicEFCB"
482 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
484 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
486 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
490 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
491 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
493 acc = ComponentAccumulator()
494 seqmerge = seqAND(
"muonCBInsideOutMergingSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
495 acc.addSequence(seqmerge)
498 acc2 = ComponentAccumulator()
499 seqreco = parOR(
"muonEFCBandInsideOutRecoSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
500 acc2.addSequence(seqreco)
501 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
502 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix ), sequenceName=seqreco.name)
503 sequenceOutCB = muNames.EFCBOutInName+suffix
506 acc3 = ComponentAccumulator()
507 seqfilter = seqAND(
"muonEFInsideOutSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
508 acc3.addSequence(seqfilter)
509 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuons"+suffix, MuonContainerLocation=sequenceOutCB)
510 acc3.merge(muonFilter, sequenceName=seqfilter.name)
513 acc4 = ComponentAccumulator()
514 seqio = parOR(
"efmuInsideOutViewNode_RoI{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
515 acc4.addSequence(seqio)
516 acc4.merge(muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix), sequenceName=seqio.name+suffix)
517 sequenceOutInsideOut = muNames.EFCBInOutName+suffix
519 acc3.merge(acc4, sequenceName=seqfilter.name)
520 acc2.merge(acc3, sequenceName=seqreco.name)
521 acc.merge(acc2, sequenceName=seqmerge.name)
524 mergedMuonOutputLocation = recordable(muNames.EFCBName+
'_'+suffix)
526 mergedMuonOutputLocation = muNames.EFCBName
527 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons"+suffix, MuonCBContainerLocation=sequenceOutCB,
528 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=mergedMuonOutputLocation)
530 acc.merge(mergeMuons, sequenceName=seqmerge.name)
531 recoCB.mergeReco(acc)
532 selAccCB.mergeReco(recoCB)
534 return (selAccCB, muNames.EFCBName)
542 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
543 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
544 name =
'TrigMuonEFCombinerHypoAlg',
545 MuonDecisions = sequenceOut,
546 MapToPreviousDecisions=
True)
548 selAcc.addHypoAlgo(efmuCBHypo)
550 efmuCBSequence = MenuSequence(flags, selAcc,
551 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
553 return efmuCBSequence
561 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
562 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
563 name =
'TrigMuonEFCombinerHypoAlgIOmode',
564 MuonDecisions = sequenceOut+
'_IOmode',
565 MapToPreviousDecisions=
True)
567 selAcc.addHypoAlgo(efmuCBHypo)
569 efmuCBSequence = MenuSequence(flags, selAcc,
570 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
572 return efmuCBSequence
580 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
581 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
582 name =
'TrigMuonEFCombinerHypoAlgl2mtmode',
583 MuonDecisions = sequenceOut+
'_l2mtmode',
584 MapToPreviousDecisions=
True)
586 selAcc.addHypoAlgo(efmuCBHypo)
588 efmuCBSequence = MenuSequence(flags, selAcc,
589 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
591 return efmuCBSequence
599 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
600 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
601 name =
'TrigMuonEFCombinerHypoAlgidReuse',
602 MuonDecisions = sequenceOut+
'_idReuse',
603 MapToPreviousDecisions=
True)
605 selAcc.addHypoAlgo(efmuCBHypo)
607 efmuCBSequence = MenuSequence(flags, selAcc,
608 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
610 return efmuCBSequence
618 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
619 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
620 name =
'TrigMuonEFCombinerIDperfHypoAlg',
622 MuonDecisions = sequenceOut,
623 MapToPreviousDecisions=
True)
625 selAcc.addHypoAlgo(efmuCBHypo)
627 efmuCBSequence = MenuSequence(flags, selAcc,
628 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
630 return efmuCBSequence
638 isPhaseIIMuon = flags.Trigger.Offline.SA.Muon.scheduleActsReco
and flags.Trigger.Offline.SA.Muon.usePhaseIIGeoSetup
640 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpHypoAlgCfg, TrigMuonEFIdtpHypoToolFromDict
641 efmuCBHypo = TrigMuonEFIdtpHypoAlgCfg( flags,
642 name =
'TrigMuonEFIdtpHypoAlg',
643 IsPhIIMuon = isPhaseIIMuon)
646 selAcc.addHypoAlgo(efmuCBHypo)
648 efmuCBSequence = MenuSequence(flags, selAcc,
649 HypoToolGen = TrigMuonEFIdtpHypoToolFromDict)
651 return efmuCBSequence
656 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
658 viewName=
"EFMuCBLRTReco"
659 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
660 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
662 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
664 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
667 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
668 recoCB.mergeReco(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"LRT",
''))
669 sequenceOut = muNamesLRT.EFCBName
671 selAccCB.mergeReco(recoCB)
673 return (selAccCB, sequenceOut)
681 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
682 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
683 name =
'TrigMuonEFCombinerHypoAlgLRT',
684 MuonDecisions = sequenceOut,
685 MapToPreviousDecisions=
True)
688 selAcc.addHypoAlgo(efmuCBLRTHypo)
690 efmuCBSequence = MenuSequence(flags, selAcc,
691 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
693 return efmuCBSequence
701 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
702 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
703 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
705 MuonDecisions = sequenceOut,
706 MapToPreviousDecisions=
True)
709 selAcc.addHypoAlgo(efmuCBLRTHypo)
711 efmuCBSequence = MenuSequence(flags, selAcc,
712 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
714 return efmuCBSequence
723 selAccMS = SelectionCA(f
'EFMuMSSel_FS{suffix}')
725 viewName=f
"EFMuMSReco_FS{suffix}"
726 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
728 requireParentView =
False
730 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
734 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
735 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
736 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
738 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags,
739 RoIs=recoMS.name+
'RoIs',
740 suffix=f
'FS{suffix}',
741 useBucketFilter=useBucketFilter)
742 recoMS.mergeReco(muEFSARecoSequenceAcc)
744 selAccMS.mergeReco(recoMS)
746 return (selAccMS, sequenceOut)
752 if flags.Trigger.Offline.SA.Muon.scheduleActsReco
and flags.Trigger.Offline.SA.Muon.usePhaseIIGeoSetup:
753 suffix = f
'PhII{"_mlbkt" if useBucketFilter else ""}'
759 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
761 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
762 name = f
'TrigMuonEFMSonlyHypo_FS{suffix}',
763 MuonDecisions = sequenceOut,
766 selAcc.addHypoAlgo(efmuMSHypo)
768 efmuMSSequence = MenuSequence(flags, selAcc,
769 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
772 return efmuMSSequence
781 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
783 viewName=
"EFMuCBReco_FS"
785 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
787 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
788 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
791 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
792 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
794 acc = ComponentAccumulator()
795 seqmerge = seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".format(
"_probe" if is_probe_leg
else ""))
796 acc.addSequence(seqmerge)
798 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
799 acc2 = ComponentAccumulator()
800 seqreco = parOR(
"muonEFCBFSInsideOutRecoSequence{}".format(
"_probe" if is_probe_leg
else ""))
801 acc2.addSequence(seqreco)
803 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
''), sequenceName=seqreco.name)
804 sequenceOutCB = muNamesFS.EFCBOutInName
807 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
809 acc3 = ComponentAccumulator()
810 seqfilt = seqAND(
"muonEFCBFSInsideOutSequence{}".format(
"_probe" if is_probe_leg
else ""))
811 acc3.addSequence(seqfilt)
812 acc3.merge(muonFilter, sequenceName=seqfilt.name)
816 acc4 = ComponentAccumulator()
817 seqio = parOR(
"efmuInsideOutViewNode_FS{}".format(
"_probe" if is_probe_leg
else ""))
818 acc4.addSequence(seqio)
820 muonEFInsideOutRecoAlgSequence = muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
'' )
821 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
822 acc3.merge(acc4, sequenceName=seqfilt.name)
823 acc2.merge(acc3, sequenceName=seqreco.name)
824 acc.merge(acc2, sequenceName=seqmerge.name)
825 sequenceOutInsideOut = muNamesFS.EFCBInOutName
828 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
829 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
830 acc.merge(mergeMuons, sequenceName=seqmerge.name)
831 recoCB.mergeReco(acc)
833 sequenceOut = muNamesFS.EFCBName
834 selAccCB.mergeReco(recoCB)
836 return (selAccCB, sequenceOut)
844 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromName
845 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
846 name =
'TrigMuonEFFSCombinerHypoAlg',
847 MuonDecisions = sequenceOut)
849 selAcc.addHypoAlgo(efmuCBHypo)
851 efmuCBSequence = MenuSequence(flags, selAcc,
852 HypoToolGen = TrigMuonEFCombinerHypoToolFromName)
854 return efmuCBSequence
898 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
899 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
901 viewName =
"EFLateMuReco"
902 viewcreator = CompFactory.ViewCreatorNamedROITool
903 roiTool = viewcreator(ROILinkName=
"feature")
905 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
909 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
910 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
912 recoLateMu.mergeReco(muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
914 recoLateMu.mergeReco(muonIDFastTrackingSequenceCfg(flags, recoLateMu.name+
"RoIs",
"muonLate" ))
916 recoLateMu.mergeReco(muEFInsideOutRecoSequenceCfg(muonflagsCB, recoLateMu.name+
"RoIs",
"LateMu",
''))
917 sequenceOut = muNames.EFCBInOutName+
'_Late'
919 selAcc.mergeReco(recoLateMu)
921 return (selAcc, sequenceOut)
930 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
931 trigMuonEFLateHypo = TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
933 selAcc.addHypoAlgo(trigMuonEFLateHypo)
934 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
936 return MenuSequence(flags, selAcc,
937 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
950 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
952 viewName=
"EFMuIsoReco"+name
953 roisWriteHandleKey =
'Roi_MuonIsoMS' if doMSiso
else recordable(
'HLT_Roi_MuonIso')
955 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
956 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
957 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
958 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
960 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
961 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
965 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
966 sequenceOut = muNames.EFIsoMuonName+name
967 recoIso.mergeReco(efmuisoRecoSequenceCfg( flags, viewName+
"RoIs",
"IsoViewMuons"+name, doMSiso ))
969 selAccIso.mergeReco(recoIso)
971 return (selAccIso, sequenceOut)
979 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
980 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
981 name =
'EFMuisoHypoAlg',
982 EFMuonsName = sequenceOut)
984 selAcc.addHypoAlgo(efmuisoHypo)
986 efmuisoSequence = MenuSequence(flags, selAcc,
987 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
989 return efmuisoSequence
997 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
998 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
999 name =
'EFMuMSisoHypoAlg',
1000 EFMuonsName = sequenceOut)
1002 selAcc.addHypoAlgo(efmuisoHypo)
1004 efmuisoSequence = MenuSequence(flags, selAcc,
1005 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
1007 return efmuisoSequence
1016 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
1017 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
1019 selAcc = SelectionCA(
'muRoIClusterSel')
1021 viewName=
"MuRoIClusReco"
1022 viewcreator = CompFactory.ViewCreatorInitialROITool
1023 roiTool = viewcreator()
1025 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
1026 recoRoICluster.mergeReco(MuonClusterConfig(flags,
'muvtxMuonCluster'))
1027 selAcc.mergeReco(recoRoICluster)
1030 hypoAlg = MuonClusterHypoAlgConfig( flags,
1031 name =
'MuRoiClusterHypoAlg')
1033 selAcc.addHypoAlgo(hypoAlg)
1035 muRoIClusterSequence = MenuSequence(flags, selAcc,
1036 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
1038 return muRoIClusterSequence