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 = f
'{"_newFast" if useNewFast else ""}{"_mlbkt" if useBucketFilter else ""}'
397 selAccMS = SelectionCA(f
'EFMuMSSel_RoI{suffix}', isProbe=is_probe_leg)
399 viewName=f
"EFMuMSReco_RoI{suffix}"
401 recoMS = InViewRecoCA(name=viewName, isProbe=is_probe_leg)
404 roiTool = CompFactory.ViewCreatorFetchFromViewROITool(RoisWriteHandleKey=f
"HLT_Roi_L2SAMuonForEF{suffix}",
405 InViewRoIs =
"forMS",
406 ViewToFetchFrom =
"L2MuFastRecoViews")
407 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg)
410 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
412 truthAlgs = ComponentAccumulator()
413 if muonflags.Muon.setupTruthAlgorithms:
414 loadFromSG = [(
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MDT_SDO' ),
415 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+MM_SDO' ),
416 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+RPC_SDO' ),
417 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+TGC_SDO' ),
418 (
'xAOD::MuonSimHitContainer' ,
'StoreGateSvc+sTGC_SDO' )]
419 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
420 truthAlgs.merge(SGInputLoaderCfg(muonflags, loadFromSG))
422 from xAODTruthCnv.xAODTruthCnvConfig
import GEN_AOD2xAODCfg
423 truthAlgs.merge(GEN_AOD2xAODCfg(muonflags))
424 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthObjCreatorsCfg
425 truthAlgs.merge(MuonTruthObjCreatorsCfg(muonflags, useSDO=
True))
427 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
429 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
431 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, viewName+
'RoIs', f
'RoI{suffix}', useBucketFilter=useBucketFilter)
432 recoMS.mergeReco(muEFSARecoSequenceAcc)
434 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
435 prefetch=ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
436 selAccMS.mergeReco(recoMS, robPrefetchCA=prefetch, upSequenceCA=truthAlgs)
438 return (selAccMS, sequenceOut)
444 (selAcc, sequenceOut) =
muEFSAAlgSequenceCfg(flags, is_probe_leg, useBucketFilter=useBucketFilter, useNewFast=useNewFast)
446 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
447 suffix = f
'{"_newFast" if useNewFast else ""}{"_mlbkt" if useBucketFilter else ""}'
448 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
449 name = f
'TrigMuonEFMSonlyHypo_RoI{suffix}',
450 MuonDecisions = sequenceOut,
453 selAcc.addHypoAlgo(efmuMSHypo)
455 efmuMSSequence = MenuSequence(flags, selAcc,
456 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
459 return efmuMSSequence
468 from .MuonRecoSequences
import isCosmic
469 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName+suffix, isProbe=is_probe_leg)
471 viewName=
"EFMuCBReco_RoI"+suffix
if not isCosmic(flags)
else "CosmicEFCB"
472 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
474 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
476 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
480 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
481 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
483 acc = ComponentAccumulator()
484 seqmerge = seqAND(
"muonCBInsideOutMergingSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
485 acc.addSequence(seqmerge)
488 acc2 = ComponentAccumulator()
489 seqreco = parOR(
"muonEFCBandInsideOutRecoSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
490 acc2.addSequence(seqreco)
491 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
492 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix ), sequenceName=seqreco.name)
493 sequenceOutCB = muNames.EFCBOutInName+suffix
496 acc3 = ComponentAccumulator()
497 seqfilter = seqAND(
"muonEFInsideOutSequence{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
498 acc3.addSequence(seqfilter)
499 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuons"+suffix, MuonContainerLocation=sequenceOutCB)
500 acc3.merge(muonFilter, sequenceName=seqfilter.name)
503 acc4 = ComponentAccumulator()
504 seqio = parOR(
"efmuInsideOutViewNode_RoI{}{}".format(suffix,
"_probe" if is_probe_leg
else ""))
505 acc4.addSequence(seqio)
506 acc4.merge(muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix), sequenceName=seqio.name+suffix)
507 sequenceOutInsideOut = muNames.EFCBInOutName+suffix
509 acc3.merge(acc4, sequenceName=seqfilter.name)
510 acc2.merge(acc3, sequenceName=seqreco.name)
511 acc.merge(acc2, sequenceName=seqmerge.name)
514 mergedMuonOutputLocation = recordable(muNames.EFCBName+
'_'+suffix)
516 mergedMuonOutputLocation = muNames.EFCBName
517 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons"+suffix, MuonCBContainerLocation=sequenceOutCB,
518 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=mergedMuonOutputLocation)
520 acc.merge(mergeMuons, sequenceName=seqmerge.name)
521 recoCB.mergeReco(acc)
522 selAccCB.mergeReco(recoCB)
524 return (selAccCB, muNames.EFCBName)
532 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
533 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
534 name =
'TrigMuonEFCombinerHypoAlg',
535 MuonDecisions = sequenceOut,
536 MapToPreviousDecisions=
True)
538 selAcc.addHypoAlgo(efmuCBHypo)
540 efmuCBSequence = MenuSequence(flags, selAcc,
541 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
543 return efmuCBSequence
551 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
552 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
553 name =
'TrigMuonEFCombinerHypoAlgIOmode',
554 MuonDecisions = sequenceOut+
'_IOmode',
555 MapToPreviousDecisions=
True)
557 selAcc.addHypoAlgo(efmuCBHypo)
559 efmuCBSequence = MenuSequence(flags, selAcc,
560 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
562 return efmuCBSequence
570 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
571 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
572 name =
'TrigMuonEFCombinerHypoAlgl2mtmode',
573 MuonDecisions = sequenceOut+
'_l2mtmode',
574 MapToPreviousDecisions=
True)
576 selAcc.addHypoAlgo(efmuCBHypo)
578 efmuCBSequence = MenuSequence(flags, selAcc,
579 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
581 return efmuCBSequence
608 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
609 efmuCBHypo = TrigMuonEFHypoAlgCfg( flags,
610 name =
'TrigMuonEFCombinerIDperfHypoAlg',
612 MuonDecisions = sequenceOut,
613 MapToPreviousDecisions=
True)
615 selAcc.addHypoAlgo(efmuCBHypo)
617 efmuCBSequence = MenuSequence(flags, selAcc,
618 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
620 return efmuCBSequence
643 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
645 viewName=
"EFMuCBLRTReco"
646 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
647 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
649 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
651 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
654 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
655 recoCB.mergeReco(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"LRT",
''))
656 sequenceOut = muNamesLRT.EFCBName
658 selAccCB.mergeReco(recoCB)
660 return (selAccCB, sequenceOut)
668 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
669 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
670 name =
'TrigMuonEFCombinerHypoAlgLRT',
671 MuonDecisions = sequenceOut,
672 MapToPreviousDecisions=
True)
675 selAcc.addHypoAlgo(efmuCBLRTHypo)
677 efmuCBSequence = MenuSequence(flags, selAcc,
678 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
680 return efmuCBSequence
688 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
689 efmuCBLRTHypo = TrigMuonEFHypoAlgCfg( flags,
690 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
692 MuonDecisions = sequenceOut,
693 MapToPreviousDecisions=
True)
696 selAcc.addHypoAlgo(efmuCBLRTHypo)
698 efmuCBSequence = MenuSequence(flags, selAcc,
699 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
701 return efmuCBSequence
710 selAccMS = SelectionCA(
'EFMuMSSel_FS')
712 viewName=
"EFMuMSReco_FS"
713 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
715 requireParentView =
False
717 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
721 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
722 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
723 recoMS.mergeReco(muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
725 muEFSARecoSequenceAcc, sequenceOut = muEFSARecoSequenceCfg(muonflags, recoMS.name+
'RoIs',
'FS' )
726 recoMS.mergeReco(muEFSARecoSequenceAcc)
728 selAccMS.mergeReco(recoMS)
730 return (selAccMS, sequenceOut)
738 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
740 efmuMSHypo = TrigMuonEFHypoAlgCfg( flags,
741 name =
'TrigMuonEFMSonlyHypo_FS',
742 MuonDecisions = sequenceOut,
745 selAcc.addHypoAlgo(efmuMSHypo)
747 efmuMSSequence = MenuSequence(flags, selAcc,
748 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
751 return efmuMSSequence
760 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
762 viewName=
"EFMuCBReco_FS"
764 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
766 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
767 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
770 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
771 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
773 acc = ComponentAccumulator()
774 seqmerge = seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".format(
"_probe" if is_probe_leg
else ""))
775 acc.addSequence(seqmerge)
777 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
778 acc2 = ComponentAccumulator()
779 seqreco = parOR(
"muonEFCBFSInsideOutRecoSequence{}".format(
"_probe" if is_probe_leg
else ""))
780 acc2.addSequence(seqreco)
782 acc2.merge(muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
''), sequenceName=seqreco.name)
783 sequenceOutCB = muNamesFS.EFCBOutInName
786 muonFilter = MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
788 acc3 = ComponentAccumulator()
789 seqfilt = seqAND(
"muonEFCBFSInsideOutSequence{}".format(
"_probe" if is_probe_leg
else ""))
790 acc3.addSequence(seqfilt)
791 acc3.merge(muonFilter, sequenceName=seqfilt.name)
795 acc4 = ComponentAccumulator()
796 seqio = parOR(
"efmuInsideOutViewNode_FS{}".format(
"_probe" if is_probe_leg
else ""))
797 acc4.addSequence(seqio)
799 muonEFInsideOutRecoAlgSequence = muEFInsideOutRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"FS",
'' )
800 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
801 acc3.merge(acc4, sequenceName=seqfilt.name)
802 acc2.merge(acc3, sequenceName=seqreco.name)
803 acc.merge(acc2, sequenceName=seqmerge.name)
804 sequenceOutInsideOut = muNamesFS.EFCBInOutName
807 mergeMuons = MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
808 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
809 acc.merge(mergeMuons, sequenceName=seqmerge.name)
810 recoCB.mergeReco(acc)
812 sequenceOut = muNamesFS.EFCBName
813 selAccCB.mergeReco(recoCB)
815 return (selAccCB, sequenceOut)
877 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
878 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
880 viewName =
"EFLateMuReco"
881 viewcreator = CompFactory.ViewCreatorNamedROITool
882 roiTool = viewcreator(ROILinkName=
"feature")
884 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
888 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
889 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
891 recoLateMu.mergeReco(muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
893 recoLateMu.mergeReco(muonIDFastTrackingSequenceCfg(flags, recoLateMu.name+
"RoIs",
"muonLate" ))
895 recoLateMu.mergeReco(muEFInsideOutRecoSequenceCfg(muonflagsCB, recoLateMu.name+
"RoIs",
"LateMu",
''))
896 sequenceOut = muNames.EFCBInOutName+
'_Late'
899 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
900 robPrefetchAlg = ROBPrefetchingAlgCfg_Muon(flags, nameSuffix=viewName)
901 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
903 return (selAcc, sequenceOut)
912 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
913 trigMuonEFLateHypo = TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
915 selAcc.addHypoAlgo(trigMuonEFLateHypo)
916 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
918 return MenuSequence(flags, selAcc,
919 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
932 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
934 viewName=
"EFMuIsoReco"+name
936 roisWriteHandleKey =
"Roi_MuonIsoMS"
938 roisWriteHandleKey = recordable(
"HLT_Roi_MuonIso")
940 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
941 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
942 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
943 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
945 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
946 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
950 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
951 sequenceOut = muNames.EFIsoMuonName+name
952 recoIso.mergeReco(efmuisoRecoSequenceCfg( flags, viewName+
"RoIs",
"IsoViewMuons"+name, doMSiso ))
955 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
956 robPrefetchAlg = ROBPrefetchingAlgCfg_Si(flags, nameSuffix=viewName+
'_probe' if is_probe_leg
else viewName)
958 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
960 return (selAccIso, sequenceOut)
968 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
969 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
970 name =
'EFMuisoHypoAlg',
971 EFMuonsName = sequenceOut)
973 selAcc.addHypoAlgo(efmuisoHypo)
975 efmuisoSequence = MenuSequence(flags, selAcc,
976 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
978 return efmuisoSequence
986 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
987 efmuisoHypo = TrigMuonEFTrackIsolationHypoAlgCfg( flags,
988 name =
'EFMuMSisoHypoAlg',
989 EFMuonsName = sequenceOut)
991 selAcc.addHypoAlgo(efmuisoHypo)
993 efmuisoSequence = MenuSequence(flags, selAcc,
994 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
996 return efmuisoSequence
1005 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
1006 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
1008 selAcc = SelectionCA(
'muRoIClusterSel')
1010 viewName=
"MuRoIClusReco"
1011 viewcreator = CompFactory.ViewCreatorInitialROITool
1012 roiTool = viewcreator()
1014 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
1015 recoRoICluster.mergeReco(MuonClusterConfig(flags,
'muvtxMuonCluster'))
1016 selAcc.mergeReco(recoRoICluster)
1019 hypoAlg = MuonClusterHypoAlgConfig( flags,
1020 name =
'MuRoiClusterHypoAlg')
1022 selAcc.addHypoAlgo(hypoAlg)
1024 muRoIClusterSequence = MenuSequence(flags, selAcc,
1025 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
1027 return muRoIClusterSequence