26 selAccSA = SelectionCA(
'L2MuFastSel'+selCAName, isProbe=is_probe_leg)
28 viewName=
"L2MuFastRecoPhII" if useNewFast
else "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 muFastRecoSeq = muFastRecoSequenceCfg( muonflags, viewName+
'RoIs', doFullScanID= isCosmic(flags), extraLoads=extraLoads, useNewFast=useNewFast )
46 sequenceOut = muNames.L2SANamePhII
if useNewFast
else muNames.L2SAName
49 recoSA.mergeReco(muFastRecoSeq)
51 acc = ComponentAccumulator()
52 seql2sa = seqAND(
"L2MuonSASeq{}".format(
"_probe" if is_probe_leg
else ""))
53 acc.addSequence(seql2sa)
54 acc.merge(muFastRecoSeq, sequenceName=seql2sa.name)
57 seqFilter = seqAND(
"L2MuonMTSeq{}".format(
"_probe" if is_probe_leg
else ""))
58 acc.addSequence(seqFilter)
59 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
61 MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags,
"SAFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
62 InputDecisions = filterInput,
63 L2MuFastContainer = muNames.L2SAName+
"l2mtmode",
64 L2MuCombContainer = muNames.L2CBName+
"l2mtmode",
65 WriteMuFast =
True, NotGate =
True)
67 acc.merge(MultiTrackChainFilter, sequenceName=seqFilter.name)
68 muFastl2mtRecoSeq = muFastRecoSequenceCfg( muonflags, viewName+
'RoIs', doFullScanID= isCosmic(flags), l2mtmode=
True )
69 acc.merge(muFastl2mtRecoSeq, sequenceName=seqFilter.name)
73 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
74 robPrefetch = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
76 selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetch)
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, viewName+
'RoIs', doFullScanID= isCosmic(flags), calib=
True )
97 sequenceOut = muNames.L2SAName+
"Calib"
98 recoSA.mergeReco(muFastRecoSeq)
101 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
102 robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
103 selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetchAlg)
105 return (selAccSA, sequenceOut)
111 suffix = f
'{"_newFast" if useNewFast else ""}'
112 (selAcc, sequenceOut) =
muFastAlgSequenceCfg(flags, selCAName=suffix, useNewFast=useNewFast, is_probe_leg=is_probe_leg)
115 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFFastRecoSAHypoToolFromDict
116 l2saHypo = TrigMuonEFHypoAlgCfg( flags,
117 name =
'TrigEFMufastHypoAlg',
118 MuonDecisions = sequenceOut,
120 HypoToolGen = TrigMuonEFFastRecoSAHypoToolFromDict
123 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
124 l2saHypo = TrigMufastHypoAlgCfg( flags,
125 name =
'TrigL2MufastHypoAlg',
126 MuonL2SAInfoFromMuFastAlg = sequenceOut)
127 HypoToolGen = TrigMufastHypoToolFromDict
129 selAcc.addHypoAlgo(l2saHypo)
131 l2saSequence = MenuSequence(flags, selAcc,
132 HypoToolGen = HypoToolGen)
142 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
143 l2saHypo = TrigMufastHypoAlgCfg( flags,
144 name =
'TrigL2MufastCalibHypoAlg',
145 MuonL2SAInfoFromMuFastAlg = sequenceOut)
147 selAcc.addHypoAlgo(l2saHypo)
149 l2saSequence = MenuSequence(flags, selAcc,
150 HypoToolGen = TrigMufastHypoToolFromDict)
161 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
162 l2saHypo = TrigMufastHypoAlgCfg( flags,
163 name =
'TrigL2mtMufastHypoAlg',
164 MuonL2SAInfoFromMuFastAlg = muNames.L2SAName+
"l2mtmode")
166 selAcc.addHypoAlgo(l2saHypo)
168 l2saSequence = MenuSequence(flags, selAcc,
169 HypoToolGen = TrigMufastHypoToolFromDict)
183 from .MuonRecoSequences
import muFastRecoSequenceCfg, muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg, muonIDCosmicTrackingSequenceCfg, isCosmic
185 selAccCB = SelectionCA(
'L2MuCombSel'+selCAName, isProbe=is_probe_leg)
187 viewName=
"Cosmic" if isCosmic(flags)
else "L2MuCombReco"
189 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
192 requireParentView =
True
194 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
195 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
198 sequenceOut = muNames.L2CBName
200 acc = ComponentAccumulator()
201 from TrigMuonEF.TrigMuonEFConfig
import MuonChainFilterAlgCfg
204 from TriggerMenuMT.HLT.Config.ControlFlow.MenuComponentsNaming
import CFNaming
205 filterInput = [ CFNaming.inputMakerOutName(
'IM_'+viewName) ]
207 for decision
in filterInput:
208 extraLoads += [(
'xAOD::TrigCompositeContainer' ,
'StoreGateSvc+%s' % decision )]
211 recoCB.mergeReco(muonIDCosmicTrackingSequenceCfg( flags, viewName+
"RoIs" ,
"cosmics", extraLoads, extraLoads ))
213 recoCB.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs",
"muon", extraLoads, extraLoads, trackingMode = trackingMode ))
216 seql2cb = seqAND(
"l2muCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
217 acc.addSequence(seql2cb)
220 muonChainFilter = MuonChainFilterAlgCfg(muonflags,
"FilterBphysChains", ChainsToFilter =
getBphysChainNames(),
221 InputDecisions = filterInput,
222 L2MuCombContainer = sequenceOut,
223 WriteMuComb =
True, WriteMuFast=
False)
224 acc.merge(muonChainFilter, sequenceName=seql2cb.name)
228 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
False, l2CBname = sequenceOut ), sequenceName=seql2cb.name)
232 MultiTrackChainFilter = MuonChainFilterAlgCfg(muonflags,
"CBFilterMultiTrackChains", ChainsToFilter = MultiTrackChains,
233 InputDecisions = filterInput,
234 L2MuFastContainer = muNames.L2SAName+
"l2mtmode",
235 L2MuCombContainer = muNames.L2CBName+
"l2mtmode",
236 WriteMuComb =
True, NotGate =
True)
239 seql2cbmt = seqAND(
"l2mtmuCombFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
240 acc.addSequence(seql2cbmt)
241 acc.merge(MultiTrackChainFilter, sequenceName=seql2cbmt.name)
244 sequenceOutL2mtCB = muNames.L2CBName+
"l2mtmode"
245 acc.merge(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF", l2mtmode=
True, l2CBname = sequenceOutL2mtCB ), sequenceName=seql2cbmt.name)
250 seql2iocb = seqAND(
"l2muFastIOFilterSequence{}".format(
"_probe" if is_probe_leg
else ""))
251 acc.addSequence(seql2iocb)
253 from .MuonRecoSequences
import isCosmic
254 sequenceOutL2SAIO = muNames.L2SAName+
"IOmode"
256 InputDecisions = filterInput,
257 L2MuFastContainer = sequenceOutL2SAIO, L2MuCombContainer = muNames.L2CBName+
"IOmode",
258 WriteMuFast =
True, WriteMuComb =
True, NotGate=
True)
260 acc.merge(insideoutMuonChainFilter, sequenceName=seql2iocb.name)
261 acc.merge(muFastRecoSequenceCfg(muonflags, viewName+
"RoIs", doFullScanID=isCosmic(flags) , InsideOutMode=
True), sequenceName=seql2iocb.name)
262 recoCB.mergeReco(acc)
265 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
266 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
267 selAccCB.mergeReco(recoCB, robPrefetchCA=robPrefetchAlg)
269 return (selAccCB, sequenceOut)
275 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
277 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
278 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
279 name =
'TrigL2MuCBHypoAlg',
280 MuonL2CBInfoFromMuCombAlg = sequenceOut,
283 selAcc.addHypoAlgo(l2cbHypo)
285 l2cbSequence = MenuSequence(flags, selAcc,
286 HypoToolGen = TrigmuCombHypoToolFromDict)
296 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"IO", is_probe_leg, trackingMode = trackingMode)
298 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2IOHypoToolwORFromDict
299 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
300 name =
'TrigL2MuCBIOHypoAlg',
301 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"IOmode",
304 selAcc.addHypoAlgo(l2cbHypo)
306 l2cbSequence = MenuSequence(flags, selAcc,
307 HypoToolGen = Trigl2IOHypoToolwORFromDict)
314 selAcc = SelectionCA(
'l2muCombLRT', isProbe=is_probe_leg)
316 viewName=
"l2muCombLRT"
317 ViewCreatorCenteredOnIParticleTool=CompFactory.ViewCreatorCentredOnIParticleROITool
319 roiTool = ViewCreatorCenteredOnIParticleTool(RoisWriteHandleKey = recordable(
"HLT_Roi_L2SAMuon_LRT"),
320 RoIZedWidth=flags.Trigger.InDetTracking.muonLRT.zedHalfWidth,
321 RoIEtaWidth=flags.Trigger.InDetTracking.muonLRT.etaHalfWidth,
322 RoIPhiWidth=flags.Trigger.InDetTracking.muonLRT.phiHalfWidth,
323 UseZedPosition=
False)
324 requireParentView =
True
326 recol2cb = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
329 from .MuonRecoSequences
import muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg
330 sequenceOut = muNamesLRT.L2CBName
331 recol2cb.mergeReco(muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF_LRT", l2CBname = sequenceOut ))
335 recol2cb.mergeReco(muonIDFastTrackingSequenceCfg(flags, viewName+
"RoIs" ,
"muonLRT", extraLoads, doLRT=
True ))
338 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
339 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
340 selAcc.mergeReco(recol2cb, robPrefetchAlg)
343 return (selAcc, sequenceOut)
351 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
352 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
353 name =
'TrigL2MuCBLRTHypoAlg',
354 MuonL2CBInfoFromMuCombAlg = sequenceOut,
355 RoILinkName =
"l2lrtroi",
358 selAcc.addHypoAlgo(l2cbHypo)
360 l2cbSequence = MenuSequence(flags, selAcc,
361 HypoToolGen = TrigmuCombHypoToolFromDict)
370 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
372 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolwORFromDict
373 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
374 name =
'TrigL2MuCBHypoAlg',
375 MuonL2CBInfoFromMuCombAlg = sequenceOut,
378 selAcc.addHypoAlgo(l2cbHypo)
380 l2cbSequence = MenuSequence(flags, selAcc,
381 HypoToolGen = TrigmuCombHypoToolwORFromDict)
389 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"mt", is_probe_leg, trackingMode = trackingMode)
391 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2mtCBHypoToolwORFromDict
392 l2cbHypo = TrigmuCombHypoAlgCfg( flags,
393 name =
'TrigL2mtMuCBHypoAlg',
394 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"l2mtmode",
397 selAcc.addHypoAlgo(l2cbHypo)
399 l2cbSequence = MenuSequence(flags, selAcc,
400 HypoToolGen = Trigl2mtCBHypoToolwORFromDict)
411 selAccMS = SelectionCA(f
'EFMuMSSel_RoI{suffix}', isProbe=is_probe_leg)
413 viewName=f
"EFMuMSReco_RoI{suffix}"
415 recoMS = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
418 roiTool = CompFactory.ViewCreatorFetchFromViewROITool(RoisWriteHandleKey=f
"HLT_Roi_L2SAMuonForEF{suffix}",
419 InViewRoIs =
"forMS",
420 ViewToFetchFrom =
"L2MuFastRecoViews")
421 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg)
424 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
426 truthAlgs = ComponentAccumulator()
427 if muonflags.Muon.setupTruthAlgorithms:
428 loadFromSG = [(
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MDT_SDO' ),
429 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MM_SDO' ),
430 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+RPC_SDO' ),
431 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+TGC_SDO' ),
432 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+sTGC_SDO' )]
433 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
434 truthAlgs.merge(SGInputLoaderCfg(muonflags, loadFromSG))
436 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
437 truthAlgs.merge(GEN_AOD2xAODCfg(muonflags))
438 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthObjCreatorsCfg
439 truthAlgs.merge(MuonTruthObjCreatorsCfg(muonflags, useSDO=
True))
441 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
443 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
445 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, RoIs = viewName+
'RoIs',
446 suffix = f
'RoI{suffix}',
447 useBucketFilter=useBucketFilter)
448 recoMS.mergeReco(muEFSARecoSequenceAcc)
450 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
451 prefetch=ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
452 selAccMS.mergeReco(recoMS, robPrefetchCA=prefetch, upSequenceCA=truthAlgs)
454 return (selAccMS, sequenceOut)
460 if flags.Trigger.Offline.SA.Muon.scheduleActsReco
and flags.Trigger.Offline.SA.Muon.usePhaseIIGeoSetup:
461 suffix = f
'PhII{"_newFast" if useNewFast else ""}{"_mlbkt" if useBucketFilter else ""}'
466 is_probe_leg=is_probe_leg,
467 useBucketFilter=useBucketFilter,
468 useNewFast=useNewFast)
470 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
471 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
472 name = f
'TrigMuonEFMSonlyHypo_RoI{suffix}',
473 MuonDecisions = sequenceOut,
476 selAcc.addHypoAlgo(efmuMSHypo)
478 efmuMSSequence = MenuSequence(flags, selAcc,
479 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
482 return efmuMSSequence
491 from .MuonRecoSequences
import isCosmic
492 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName+suffix, isProbe=is_probe_leg)
494 viewName=
"EFMuCBReco_RoI"+suffix
if not isCosmic(flags)
else "CosmicEFCB"
495 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
497 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
499 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
503 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
504 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
506 acc = ComponentAccumulator()
507 seqmerge = seqAND(
"muonCBInsideOutMergingSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
508 acc.addSequence(seqmerge)
511 acc2 = ComponentAccumulator()
512 seqreco = parOR(
"muonEFCBandInsideOutRecoSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
513 acc2.addSequence(seqreco)
514 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
515 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix ), sequenceName=seqreco.name)
516 sequenceOutCB = muNames.EFCBOutInName+suffix
519 acc3 = ComponentAccumulator()
520 seqfilter = seqAND(
"muonEFInsideOutSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
521 acc3.addSequence(seqfilter)
522 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuons"+suffix, MuonContainerLocation=sequenceOutCB)
523 acc3.merge(muonFilter, sequenceName=seqfilter.name)
526 acc4 = ComponentAccumulator()
527 seqio = parOR(
"efmuInsideOutViewNode_RoI{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
528 acc4.addSequence(seqio)
529 acc4.merge(muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix), sequenceName=seqio.name+suffix)
530 sequenceOutInsideOut = muNames.EFCBInOutName+suffix
532 acc3.merge(acc4, sequenceName=seqfilter.name)
533 acc2.merge(acc3, sequenceName=seqreco.name)
534 acc.merge(acc2, sequenceName=seqmerge.name)
537 mergedMuonOutputLocation = recordable(muNames.EFCBName+
'_'+suffix)
539 mergedMuonOutputLocation = muNames.EFCBName
540 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons"+suffix, MuonCBContainerLocation=sequenceOutCB,
541 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=mergedMuonOutputLocation)
543 acc.merge(mergeMuons, sequenceName=seqmerge.name)
544 recoCB.mergeReco(acc)
545 selAccCB.mergeReco(recoCB)
547 return (selAccCB, muNames.EFCBName)
555 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
556 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
557 name =
'TrigMuonEFCombinerHypoAlg',
558 MuonDecisions = sequenceOut,
559 MapToPreviousDecisions=
True)
561 selAcc.addHypoAlgo(efmuCBHypo)
563 efmuCBSequence = MenuSequence(flags, selAcc,
564 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
566 return efmuCBSequence
574 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
575 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
576 name =
'TrigMuonEFCombinerHypoAlgIOmode',
577 MuonDecisions = sequenceOut+
'_IOmode',
578 MapToPreviousDecisions=
True)
580 selAcc.addHypoAlgo(efmuCBHypo)
582 efmuCBSequence = MenuSequence(flags, selAcc,
583 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
585 return efmuCBSequence
593 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
594 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
595 name =
'TrigMuonEFCombinerHypoAlgl2mtmode',
596 MuonDecisions = sequenceOut+
'_l2mtmode',
597 MapToPreviousDecisions=
True)
599 selAcc.addHypoAlgo(efmuCBHypo)
601 efmuCBSequence = MenuSequence(flags, selAcc,
602 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
604 return efmuCBSequence
631 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
632 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
633 name =
'TrigMuonEFCombinerIDperfHypoAlg',
635 MuonDecisions = sequenceOut,
636 MapToPreviousDecisions=
True)
638 selAcc.addHypoAlgo(efmuCBHypo)
640 efmuCBSequence = MenuSequence(flags, selAcc,
641 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
643 return efmuCBSequence
666 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
668 viewName=
"EFMuCBLRTReco"
669 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
670 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
672 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
674 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
677 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
678 recoCB.mergeReco(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"LRT",
''))
679 sequenceOut = muNamesLRT.EFCBName
681 selAccCB.mergeReco(recoCB)
683 return (selAccCB, sequenceOut)
691 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
692 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
693 name =
'TrigMuonEFCombinerHypoAlgLRT',
694 MuonDecisions = sequenceOut,
695 MapToPreviousDecisions=
True)
698 selAcc.addHypoAlgo(efmuCBLRTHypo)
700 efmuCBSequence = MenuSequence(flags, selAcc,
701 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
703 return efmuCBSequence
711 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
712 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
713 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
715 MuonDecisions = sequenceOut,
716 MapToPreviousDecisions=
True)
719 selAcc.addHypoAlgo(efmuCBLRTHypo)
721 efmuCBSequence = MenuSequence(flags, selAcc,
722 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
724 return efmuCBSequence
733 selAccMS = SelectionCA(
'EFMuMSSel_FS')
735 viewName=
"EFMuMSReco_FS"
736 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
738 requireParentView =
False
740 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
744 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
745 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
746 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
748 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, recoMS.name+
'RoIs',
'FS' )
749 recoMS.mergeReco(muEFSARecoSequenceAcc)
751 selAccMS.mergeReco(recoMS)
753 return (selAccMS, sequenceOut)
761 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
763 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
764 name =
'TrigMuonEFMSonlyHypo_FS',
765 MuonDecisions = sequenceOut,
768 selAcc.addHypoAlgo(efmuMSHypo)
770 efmuMSSequence = MenuSequence(flags, selAcc,
771 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
774 return efmuMSSequence
783 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
785 viewName=
"EFMuCBReco_FS"
787 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
789 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
790 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
793 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
794 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
796 acc = ComponentAccumulator()
797 seqmerge = seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".format(
"_probe" if is_probe_leg
else ""))
798 acc.addSequence(seqmerge)
800 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
801 acc2 = ComponentAccumulator()
802 seqreco = parOR(
"muonEFCBFSInsideOutRecoSequence{}".format(
"_probe" if is_probe_leg
else ""))
803 acc2.addSequence(seqreco)
805 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
''), sequenceName=seqreco.name)
806 sequenceOutCB = muNamesFS.EFCBOutInName
809 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
811 acc3 = ComponentAccumulator()
812 seqfilt = seqAND(
"muonEFCBFSInsideOutSequence{}".format(
"_probe" if is_probe_leg
else ""))
813 acc3.addSequence(seqfilt)
814 acc3.merge(muonFilter, sequenceName=seqfilt.name)
818 acc4 = ComponentAccumulator()
819 seqio = parOR(
"efmuInsideOutViewNode_FS{}".format(
"_probe" if is_probe_leg
else ""))
820 acc4.addSequence(seqio)
822 muonEFInsideOutRecoAlgSequence = muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
'' )
823 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
824 acc3.merge(acc4, sequenceName=seqfilt.name)
825 acc2.merge(acc3, sequenceName=seqreco.name)
826 acc.merge(acc2, sequenceName=seqmerge.name)
827 sequenceOutInsideOut = muNamesFS.EFCBInOutName
830 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
831 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
832 acc.merge(mergeMuons, sequenceName=seqmerge.name)
833 recoCB.mergeReco(acc)
835 sequenceOut = muNamesFS.EFCBName
836 selAccCB.mergeReco(recoCB)
838 return (selAccCB, sequenceOut)
900 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
901 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
903 viewName =
"EFLateMuReco"
904 viewcreator = CompFactory.ViewCreatorNamedROITool
905 roiTool = viewcreator(ROILinkName=
"feature")
907 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
911 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
912 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
914 recoLateMu.mergeReco(muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
916 recoLateMu.mergeReco(muonIDFastTrackingSequenceCfg(flags, recoLateMu.name+
"RoIs",
"muonLate" ))
918 recoLateMu.mergeReco(muEFInsideOutRecoSequenceCfg(muonflagsCB, recoLateMu.name+
"RoIs",
"LateMu",
''))
919 sequenceOut = muNames.EFCBInOutName+
'_Late'
922 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
923 robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName)
924 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
926 return (selAcc, sequenceOut)
935 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
936 trigMuonEFLateHypo = TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
938 selAcc.addHypoAlgo(trigMuonEFLateHypo)
939 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
941 return MenuSequence(flags, selAcc,
942 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
955 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
957 viewName=
"EFMuIsoReco"+name
959 roisWriteHandleKey =
"Roi_MuonIsoMS"
961 roisWriteHandleKey = recordable(
"HLT_Roi_MuonIso")
963 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
964 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
965 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
966 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
968 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
969 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
973 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
974 sequenceOut = muNames.EFIsoMuonName+name
975 recoIso.mergeReco(efmuisoRecoSequenceCfg( flags, viewName+
"RoIs",
"IsoViewMuons"+name, doMSiso ))
978 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
979 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
981 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
983 return (selAccIso, sequenceOut)
991 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
992 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
993 name =
'EFMuisoHypoAlg',
994 EFMuonsName = sequenceOut)
996 selAcc.addHypoAlgo(efmuisoHypo)
998 efmuisoSequence = MenuSequence(flags, selAcc,
999 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
1001 return efmuisoSequence
1009 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
1010 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
1011 name =
'EFMuMSisoHypoAlg',
1012 EFMuonsName = sequenceOut)
1014 selAcc.addHypoAlgo(efmuisoHypo)
1016 efmuisoSequence = MenuSequence(flags, selAcc,
1017 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
1019 return efmuisoSequence
1028 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
1029 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
1031 selAcc = SelectionCA(
'muRoIClusterSel')
1033 viewName=
"MuRoIClusReco"
1034 viewcreator = CompFactory.ViewCreatorInitialROITool
1035 roiTool = viewcreator()
1037 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
1038 recoRoICluster.mergeReco(MuonClusterConfig(flags,
'muvtxMuonCluster'))
1039 selAcc.mergeReco(recoRoICluster)
1042 hypoAlg = MuonClusterHypoAlgConfig( flags,
1043 name =
'MuRoiClusterHypoAlg')
1045 selAcc.addHypoAlgo(hypoAlg)
1047 muRoIClusterSequence = MenuSequence(flags, selAcc,
1048 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
1050 return muRoIClusterSequence