5 from ..Config.MenuComponents
import MenuSequenceCA, SelectionCA, InViewRecoCA, InEventRecoCA
7 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
8 from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
9 from AthenaCommon.CFElements
import parOR, seqAND
10 from AthenaCommon.Logging
import logging
11 from AthenaConfiguration.ComponentFactory
import CompFactory
12 log = logging.getLogger(__name__)
15 from .MuonRecoSequences
import muonNames
19 from TrigEDMConfig.TriggerEDM
import recordable
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
46 seql2sa =
seqAND(
"L2MuonSASeq{}".
format(
"_probe" if is_probe_leg
else ""))
47 acc.addSequence(seql2sa)
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)
65 acc.merge(muFastl2mtRecoSeq, sequenceName=seqFilter.name)
68 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
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
93 sequenceOut = muNames.L2SAName+
"Calib"
94 recoSA.mergeReco(muFastRecoSeq)
97 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
99 selAccSA.mergeReco(recoSA, robPrefetchCA=robPrefetchAlg)
101 return (selAccSA, sequenceOut)
109 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
111 name =
'TrigL2MufastHypoAlg',
112 MuonL2SAInfoFromMuFastAlg = sequenceOut)
114 selAcc.addHypoAlgo(l2saHypo)
116 l2saSequence = MenuSequenceCA(flags, selAcc,
117 HypoToolGen = TrigMufastHypoToolFromDict, isProbe=is_probe_leg)
128 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
130 name =
'TrigL2MufastCalibHypoAlg',
131 MuonL2SAInfoFromMuFastAlg = sequenceOut)
133 selAcc.addHypoAlgo(l2saHypo)
135 l2saSequence = MenuSequenceCA(flags, selAcc,
136 HypoToolGen = TrigMufastHypoToolFromDict, isProbe=is_probe_leg)
147 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
149 name =
'TrigL2mtMufastHypoAlg',
150 MuonL2SAInfoFromMuFastAlg = muNames.L2SAName+
"l2mtmode")
152 selAcc.addHypoAlgo(l2saHypo)
154 l2saSequence = MenuSequenceCA(flags, selAcc,
155 HypoToolGen = TrigMufastHypoToolFromDict, isProbe=is_probe_leg)
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
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 )]
202 seql2cb =
seqAND(
"l2muCombFilterSequence{}".
format(
"_probe" if is_probe_leg
else ""))
203 acc.addSequence(seql2cb)
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)
248 recoCB.mergeReco(acc)
251 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
253 selAccCB.mergeReco(recoCB, robPrefetchCA=robPrefetchAlg)
255 return (selAccCB, sequenceOut)
263 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
265 name =
'TrigL2MuCBHypoAlg',
266 MuonL2CBInfoFromMuCombAlg = sequenceOut)
268 selAcc.addHypoAlgo(l2cbHypo)
270 l2cbSequence = MenuSequenceCA(flags, selAcc,
271 HypoToolGen = TrigmuCombHypoToolFromDict, isProbe=is_probe_leg)
283 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2IOHypoToolwORFromDict
285 name =
'TrigL2MuCBIOHypoAlg',
286 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"IOmode")
288 selAcc.addHypoAlgo(l2cbHypo)
290 l2cbSequence = MenuSequenceCA(flags, selAcc,
291 HypoToolGen = Trigl2IOHypoToolwORFromDict, isProbe=is_probe_leg)
298 selAcc = SelectionCA(
'l2muCombLRT', isProbe=is_probe_leg)
300 viewName=
"l2muCombLRT"
301 ViewCreatorCenteredOnIParticleTool=CompFactory.ViewCreatorCentredOnIParticleROITool
303 roiTool = ViewCreatorCenteredOnIParticleTool(RoisWriteHandleKey =
recordable(
"HLT_Roi_L2SAMuon_LRT"),
304 RoIZedWidth=flags.Trigger.InDetTracking.muonLRT.zedHalfWidth,
305 RoIEtaWidth=flags.Trigger.InDetTracking.muonLRT.etaHalfWidth,
306 RoIPhiWidth=flags.Trigger.InDetTracking.muonLRT.phiHalfWidth,
307 UseZedPosition=
False)
308 requireParentView =
True
310 recol2cb = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
313 from .MuonRecoSequences
import muCombRecoSequenceCfg, muonIDFastTrackingSequenceCfg
314 sequenceOut = muNamesLRT.L2CBName
315 recol2cb.mergeReco(
muCombRecoSequenceCfg(flags, viewName+
"RoIs",
"FTF_LRT", l2CBname = sequenceOut ))
322 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
324 selAcc.mergeReco(recol2cb, robPrefetchAlg)
327 return (selAcc, sequenceOut)
335 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
337 name =
'TrigL2MuCBLRTHypoAlg',
338 MuonL2CBInfoFromMuCombAlg = sequenceOut,
339 RoILinkName =
"l2lrtroi")
341 selAcc.addHypoAlgo(l2cbHypo)
343 l2cbSequence = MenuSequenceCA(flags, selAcc,
344 HypoToolGen = TrigmuCombHypoToolFromDict, isProbe=is_probe_leg)
355 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolwORFromDict
357 name =
'TrigL2MuCBHypoAlg',
358 MuonL2CBInfoFromMuCombAlg = sequenceOut)
360 selAcc.addHypoAlgo(l2cbHypo)
362 l2cbSequence = MenuSequenceCA(flags, selAcc,
363 HypoToolGen = TrigmuCombHypoToolwORFromDict, isProbe=is_probe_leg)
373 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, Trigl2mtCBHypoToolwORFromDict
375 name =
'TrigL2mtMuCBHypoAlg',
376 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"l2mtmode")
378 selAcc.addHypoAlgo(l2cbHypo)
380 l2cbSequence = MenuSequenceCA(flags, selAcc,
381 HypoToolGen = Trigl2mtCBHypoToolwORFromDict, isProbe=is_probe_leg)
392 selAccMS = SelectionCA(
'EFMuMSSel_RoI', isProbe=is_probe_leg)
394 viewName=
"EFMuMSReco_RoI"
395 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
398 requireParentView =
True
400 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
404 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
405 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
407 recoMS.mergeReco(
muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
410 recoMS.mergeReco(muEFSARecoSequenceAcc)
412 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
414 selAccMS.mergeReco(recoMS, robPrefetchCA=prefetch)
416 return (selAccMS, sequenceOut)
424 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
426 name =
'TrigMuonEFMSonlyHypo_RoI',
427 MuonDecisions = sequenceOut,
430 selAcc.addHypoAlgo(efmuMSHypo)
432 efmuMSSequence = MenuSequenceCA(flags, selAcc,
433 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict, isProbe=is_probe_leg)
436 return efmuMSSequence
445 from .MuonRecoSequences
import isCosmic
446 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName, isProbe=is_probe_leg)
448 viewName=
"EFMuCBReco_RoI" if not isCosmic(flags)
else "CosmicEFCB"
449 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
451 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
453 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
457 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
458 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
461 seqmerge =
seqAND(
"muonCBInsideOutMergingSequence{}".
format(
"_probe" if is_probe_leg
else ""))
462 acc.addSequence(seqmerge)
466 seqreco =
parOR(
"muonEFCBandInsideOutRecoSequence{}".
format(
"_probe" if is_probe_leg
else ""))
467 acc2.addSequence(seqreco)
468 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
470 sequenceOutCB = muNames.EFCBOutInName
474 seqfilter =
seqAND(
"muonEFInsideOutSequence{}".
format(
"_probe" if is_probe_leg
else ""))
475 acc3.addSequence(seqfilter)
476 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuons", MuonContainerLocation=sequenceOutCB)
477 acc3.merge(muonFilter, sequenceName=seqfilter.name)
481 seqio =
parOR(
"efmuInsideOutViewNode_RoI{}".
format(
"_probe" if is_probe_leg
else ""))
482 acc4.addSequence(seqio)
484 sequenceOutInsideOut = muNames.EFCBInOutName
486 acc3.merge(acc4, sequenceName=seqfilter.name)
487 acc2.merge(acc3, sequenceName=seqreco.name)
488 acc.merge(acc2, sequenceName=seqmerge.name)
490 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons", MuonCBContainerLocation=sequenceOutCB,
491 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=muNames.EFCBName)
493 acc.merge(mergeMuons, sequenceName=seqmerge.name)
494 recoCB.mergeReco(acc)
495 selAccCB.mergeReco(recoCB)
497 return (selAccCB, muNames.EFCBName)
505 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
507 name =
'TrigMuonEFCombinerHypoAlg',
508 MuonDecisions = sequenceOut,
509 MapToPreviousDecisions=
True)
511 selAcc.addHypoAlgo(efmuCBHypo)
513 efmuCBSequence = MenuSequenceCA(flags, selAcc,
514 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict, isProbe=is_probe_leg)
516 return efmuCBSequence
524 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
526 name =
'TrigMuonEFCombinerIDperfHypoAlg',
528 MuonDecisions = sequenceOut,
529 MapToPreviousDecisions=
True)
531 selAcc.addHypoAlgo(efmuCBHypo)
533 efmuCBSequence = MenuSequenceCA(flags, selAcc,
534 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict, isProbe=is_probe_leg)
536 return efmuCBSequence
544 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpHypoAlgCfg, TrigMuonEFIdtpHypoToolFromDict
546 name =
'TrigMuonEFIdtpHypoAlg')
549 selAcc.addHypoAlgo(efmuCBHypo)
551 efmuCBSequence = MenuSequenceCA(flags, selAcc,
552 HypoToolGen = TrigMuonEFIdtpHypoToolFromDict, isProbe=is_probe_leg)
554 return efmuCBSequence
559 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
561 viewName=
"EFMuCBLRTReco"
562 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
563 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
565 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
567 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
570 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
572 sequenceOut = muNamesLRT.EFCBName
574 selAccCB.mergeReco(recoCB)
576 return (selAccCB, sequenceOut)
584 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
586 name =
'TrigMuonEFCombinerHypoAlgLRT',
587 MuonDecisions = sequenceOut,
588 MapToPreviousDecisions=
True)
591 selAcc.addHypoAlgo(efmuCBLRTHypo)
593 efmuCBSequence = MenuSequenceCA(flags, selAcc,
594 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict, isProbe=is_probe_leg)
596 return efmuCBSequence
604 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
606 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
608 MuonDecisions = sequenceOut,
609 MapToPreviousDecisions=
True)
612 selAcc.addHypoAlgo(efmuCBLRTHypo)
614 efmuCBSequence = MenuSequenceCA(flags, selAcc,
615 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict, isProbe=is_probe_leg)
617 return efmuCBSequence
626 selAccMS = SelectionCA(
'EFMuMSSel_FS')
628 viewName=
"EFMuMSReco_FS"
629 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
631 requireParentView =
False
633 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
637 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
638 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
639 recoMS.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
642 recoMS.mergeReco(muEFSARecoSequenceAcc)
644 selAccMS.mergeReco(recoMS)
646 return (selAccMS, sequenceOut)
654 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
657 name =
'TrigMuonEFMSonlyHypo_FS',
658 MuonDecisions = sequenceOut,
661 selAcc.addHypoAlgo(efmuMSHypo)
663 efmuMSSequence = MenuSequenceCA(flags, selAcc,
664 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName, isProbe=is_probe_leg)
667 return efmuMSSequence
676 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
678 viewName=
"EFMuCBReco_FS"
680 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
682 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
683 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
686 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
687 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
690 seqmerge =
seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".
format(
"_probe" if is_probe_leg
else ""))
691 acc.addSequence(seqmerge)
693 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
695 seqreco =
parOR(
"muonEFCBFSInsideOutRecoSequence{}".
format(
"_probe" if is_probe_leg
else ""))
696 acc2.addSequence(seqreco)
699 sequenceOutCB = muNamesFS.EFCBOutInName
702 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
705 seqfilt =
seqAND(
"muonEFCBFSInsideOutSequence{}".
format(
"_probe" if is_probe_leg
else ""))
706 acc3.addSequence(seqfilt)
707 acc3.merge(muonFilter, sequenceName=seqfilt.name)
712 seqio =
parOR(
"efmuInsideOutViewNode_FS{}".
format(
"_probe" if is_probe_leg
else ""))
713 acc4.addSequence(seqio)
716 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
717 acc3.merge(acc4, sequenceName=seqfilt.name)
718 acc2.merge(acc3, sequenceName=seqreco.name)
719 acc.merge(acc2, sequenceName=seqmerge.name)
720 sequenceOutInsideOut = muNamesFS.EFCBInOutName
723 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
724 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
725 acc.merge(mergeMuons, sequenceName=seqmerge.name)
726 recoCB.mergeReco(acc)
728 sequenceOut = muNamesFS.EFCBName
729 selAccCB.mergeReco(recoCB)
731 return (selAccCB, sequenceOut)
739 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromName
741 name =
'TrigMuonEFFSCombinerHypoAlg',
742 MuonDecisions = sequenceOut)
744 selAcc.addHypoAlgo(efmuCBHypo)
746 efmuCBSequence = MenuSequenceCA(flags, selAcc,
747 HypoToolGen = TrigMuonEFCombinerHypoToolFromName, isProbe=is_probe_leg)
749 return efmuCBSequence
754 selAcc = SelectionCA(
'EFLateMuSel')
756 viewName=
"EFLateMuRoIReco"
757 viewcreator = CompFactory.ViewCreatorInitialROITool
758 roiTool = viewcreator()
759 requireParentView =
True
761 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
763 from .MuonRecoSequences
import efLateMuRoISequenceCfg
767 recoLateMu.mergeReco(efLateMuRoIAcc)
769 selAcc.mergeReco(recoLateMu)
770 return (selAcc, sequenceOut)
778 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonLateMuRoIHypoAlgCfg, TrigMuonLateMuRoIHypoToolFromDict
780 name =
'TrigMuonLateMuRoIHypoAlg',
781 LateRoIs = sequenceOut)
783 selAcc.addHypoAlgo(latemuHypo)
785 latemuRoISequence = MenuSequenceCA(flags, selAcc,
786 HypoToolGen = TrigMuonLateMuRoIHypoToolFromDict)
789 return latemuRoISequence
794 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
795 selAcc = SelectionCA(
'EFLateMuAlg')
797 viewName=
"EFLateMuReco"
798 viewcreator = CompFactory.ViewCreatorNamedROITool
799 roiTool = viewcreator(ROILinkName=
"feature")
800 requireParentView =
True
802 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, mergeUsingFeature=
True)
806 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
807 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
809 recoLateMu.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
814 sequenceOut = muNames.EFCBInOutName+
'_Late'
817 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
819 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
821 return (selAcc, sequenceOut)
830 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
831 trigMuonEFLateHypo =
TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
833 selAcc.addHypoAlgo(trigMuonEFLateHypo)
834 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
836 return MenuSequenceCA(flags, selAcc,
837 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
850 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
852 viewName=
"EFMuIsoReco"+name
854 roisWriteHandleKey =
"Roi_MuonIsoMS"
856 roisWriteHandleKey =
recordable(
"HLT_Roi_MuonIso")
858 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
859 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
860 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
861 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
863 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
864 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
868 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
869 sequenceOut = muNames.EFIsoMuonName+name
873 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
876 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
878 return (selAccIso, sequenceOut)
886 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
888 name =
'EFMuisoHypoAlg',
889 EFMuonsName = sequenceOut)
891 selAcc.addHypoAlgo(efmuisoHypo)
893 efmuisoSequence = MenuSequenceCA(flags, selAcc,
894 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict, isProbe=is_probe_leg)
896 return efmuisoSequence
904 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
906 name =
'EFMuMSisoHypoAlg',
907 EFMuonsName = sequenceOut)
909 selAcc.addHypoAlgo(efmuisoHypo)
911 efmuisoSequence = MenuSequenceCA(flags, selAcc,
912 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict, isProbe=is_probe_leg)
914 return efmuisoSequence
923 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
924 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
926 selAcc = SelectionCA(
'muRoIClusterSel')
928 viewName=
"MuRoIClusReco"
929 viewcreator = CompFactory.ViewCreatorInitialROITool
930 roiTool = viewcreator()
932 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
934 selAcc.mergeReco(recoRoICluster)
938 name =
'MuRoiClusterHypoAlg')
940 selAcc.addHypoAlgo(hypoAlg)
942 muRoIClusterSequence = MenuSequenceCA(flags, selAcc,
943 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
945 return muRoIClusterSequence
956 from ..Config.GenerateMenuMT
import GenerateMenuMT
958 chains = [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']]
967 from ..Config.GenerateMenuMT
import GenerateMenuMT
969 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2io" in chain.name]
970 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if not any(key
in chain.name
for key
in [
'noL2Comb',
'l2mt'])]
979 from ..Config.GenerateMenuMT
import GenerateMenuMT
981 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2mt" in chain.name]
982 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if "l2mt" in chain.name]