5 from ..Config.MenuComponents
import MenuSequence, 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 = MenuSequence(flags, selAcc,
117 HypoToolGen = TrigMufastHypoToolFromDict)
128 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
130 name =
'TrigL2MufastCalibHypoAlg',
131 MuonL2SAInfoFromMuFastAlg = sequenceOut)
133 selAcc.addHypoAlgo(l2saHypo)
135 l2saSequence = MenuSequence(flags, selAcc,
136 HypoToolGen = TrigMufastHypoToolFromDict)
147 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMufastHypoAlgCfg, TrigMufastHypoToolFromDict
149 name =
'TrigL2mtMufastHypoAlg',
150 MuonL2SAInfoFromMuFastAlg = muNames.L2SAName+
"l2mtmode")
152 selAcc.addHypoAlgo(l2saHypo)
154 l2saSequence = MenuSequence(flags, selAcc,
155 HypoToolGen = TrigMufastHypoToolFromDict)
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)
261 (selAcc, sequenceOut) =
muCombAlgSequenceCfg(flags,
"", is_probe_leg, trackingMode = trackingMode)
263 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
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
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 ))
324 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
326 selAcc.mergeReco(recol2cb, robPrefetchAlg)
329 return (selAcc, sequenceOut)
337 from TrigMuonHypo.TrigMuonHypoConfig
import TrigmuCombHypoAlgCfg, TrigmuCombHypoToolFromDict
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
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
379 name =
'TrigL2mtMuCBHypoAlg',
380 MuonL2CBInfoFromMuCombAlg = sequenceOut+
"l2mtmode",
383 selAcc.addHypoAlgo(l2cbHypo)
385 l2cbSequence = MenuSequence(flags, selAcc,
386 HypoToolGen = Trigl2mtCBHypoToolwORFromDict)
397 selAccMS = SelectionCA(
'EFMuMSSel_RoI', isProbe=is_probe_leg)
399 viewName=
"EFMuMSReco_RoI"
400 ViewCreatorFetchFromViewROITool=CompFactory.ViewCreatorFetchFromViewROITool
403 requireParentView =
True
405 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView, isProbe=is_probe_leg)
409 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
410 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
412 recoMS.mergeReco(
muonDecodeCfg(muonflags,RoIs=viewName+
"RoIs"))
415 recoMS.mergeReco(muEFSARecoSequenceAcc)
417 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
419 selAccMS.mergeReco(recoMS, robPrefetchCA=prefetch)
421 return (selAccMS, sequenceOut)
429 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromDict
431 name =
'TrigMuonEFMSonlyHypo_RoI',
432 MuonDecisions = sequenceOut,
435 selAcc.addHypoAlgo(efmuMSHypo)
437 efmuMSSequence = MenuSequence(flags, selAcc,
438 HypoToolGen = TrigMuonEFMSonlyHypoToolFromDict)
441 return efmuMSSequence
450 from .MuonRecoSequences
import isCosmic
451 selAccCB = SelectionCA(
'EFMuCBSel_RoI'+selCAName+suffix, isProbe=is_probe_leg)
453 viewName=
"EFMuCBReco_RoI"+suffix
if not isCosmic(flags)
else "CosmicEFCB"
454 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
456 roiTool = ViewCreatorTool(ROILinkName=
"l2cbroi")
458 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True)
462 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
463 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
466 seqmerge =
seqAND(
"muonCBInsideOutMergingSequence{}{}".
format(suffix,
"_probe" if is_probe_leg
else ""))
467 acc.addSequence(seqmerge)
471 seqreco =
parOR(
"muonEFCBandInsideOutRecoSequence{}{}".
format(suffix,
"_probe" if is_probe_leg
else ""))
472 acc2.addSequence(seqreco)
473 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
474 acc2.merge(
muEFCBRecoSequenceCfg(muonflagsCB, viewName+
"RoIs",
"RoI", suffix ), sequenceName=seqreco.name)
475 sequenceOutCB = muNames.EFCBOutInName+suffix
479 seqfilter =
seqAND(
"muonEFInsideOutSequence{}{}".
format(suffix,
"_probe" if is_probe_leg
else ""))
480 acc3.addSequence(seqfilter)
481 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuons"+suffix, MuonContainerLocation=sequenceOutCB)
482 acc3.merge(muonFilter, sequenceName=seqfilter.name)
486 seqio =
parOR(
"efmuInsideOutViewNode_RoI{}{}".
format(suffix,
"_probe" if is_probe_leg
else ""))
487 acc4.addSequence(seqio)
489 sequenceOutInsideOut = muNames.EFCBInOutName+suffix
491 acc3.merge(acc4, sequenceName=seqfilter.name)
492 acc2.merge(acc3, sequenceName=seqreco.name)
493 acc.merge(acc2, sequenceName=seqmerge.name)
496 mergedMuonOutputLocation =
recordable(muNames.EFCBName+
'_'+suffix)
498 mergedMuonOutputLocation = muNames.EFCBName
499 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons"+suffix, MuonCBContainerLocation=sequenceOutCB,
500 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=mergedMuonOutputLocation)
502 acc.merge(mergeMuons, sequenceName=seqmerge.name)
503 recoCB.mergeReco(acc)
504 selAccCB.mergeReco(recoCB)
506 return (selAccCB, muNames.EFCBName)
514 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
516 name =
'TrigMuonEFCombinerHypoAlg',
517 MuonDecisions = sequenceOut,
518 MapToPreviousDecisions=
True)
520 selAcc.addHypoAlgo(efmuCBHypo)
522 efmuCBSequence = MenuSequence(flags, selAcc,
523 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
525 return efmuCBSequence
533 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
535 name =
'TrigMuonEFCombinerHypoAlgIOmode',
536 MuonDecisions = sequenceOut+
'_IOmode',
537 MapToPreviousDecisions=
True)
539 selAcc.addHypoAlgo(efmuCBHypo)
541 efmuCBSequence = MenuSequence(flags, selAcc,
542 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
544 return efmuCBSequence
552 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
554 name =
'TrigMuonEFCombinerHypoAlgl2mtmode',
555 MuonDecisions = sequenceOut+
'_l2mtmode',
556 MapToPreviousDecisions=
True)
558 selAcc.addHypoAlgo(efmuCBHypo)
560 efmuCBSequence = MenuSequence(flags, selAcc,
561 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
563 return efmuCBSequence
571 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
573 name =
'TrigMuonEFCombinerHypoAlgidReuse',
574 MuonDecisions = sequenceOut+
'_idReuse',
575 MapToPreviousDecisions=
True)
577 selAcc.addHypoAlgo(efmuCBHypo)
579 efmuCBSequence = MenuSequence(flags, selAcc,
580 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
582 return efmuCBSequence
590 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
592 name =
'TrigMuonEFCombinerIDperfHypoAlg',
594 MuonDecisions = sequenceOut,
595 MapToPreviousDecisions=
True)
597 selAcc.addHypoAlgo(efmuCBHypo)
599 efmuCBSequence = MenuSequence(flags, selAcc,
600 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
602 return efmuCBSequence
610 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpHypoAlgCfg, TrigMuonEFIdtpHypoToolFromDict
612 name =
'TrigMuonEFIdtpHypoAlg')
615 selAcc.addHypoAlgo(efmuCBHypo)
617 efmuCBSequence = MenuSequence(flags, selAcc,
618 HypoToolGen = TrigMuonEFIdtpHypoToolFromDict)
620 return efmuCBSequence
625 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
627 viewName=
"EFMuCBLRTReco"
628 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
629 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
631 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
633 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
636 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
638 sequenceOut = muNamesLRT.EFCBName
640 selAccCB.mergeReco(recoCB)
642 return (selAccCB, sequenceOut)
650 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
652 name =
'TrigMuonEFCombinerHypoAlgLRT',
653 MuonDecisions = sequenceOut,
654 MapToPreviousDecisions=
True)
657 selAcc.addHypoAlgo(efmuCBLRTHypo)
659 efmuCBSequence = MenuSequence(flags, selAcc,
660 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
662 return efmuCBSequence
670 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
672 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
674 MuonDecisions = sequenceOut,
675 MapToPreviousDecisions=
True)
678 selAcc.addHypoAlgo(efmuCBLRTHypo)
680 efmuCBSequence = MenuSequence(flags, selAcc,
681 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
683 return efmuCBSequence
692 selAccMS = SelectionCA(
'EFMuMSSel_FS')
694 viewName=
"EFMuMSReco_FS"
695 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
697 requireParentView =
False
699 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
703 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
704 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
705 recoMS.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
708 recoMS.mergeReco(muEFSARecoSequenceAcc)
710 selAccMS.mergeReco(recoMS)
712 return (selAccMS, sequenceOut)
720 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
723 name =
'TrigMuonEFMSonlyHypo_FS',
724 MuonDecisions = sequenceOut,
727 selAcc.addHypoAlgo(efmuMSHypo)
729 efmuMSSequence = MenuSequence(flags, selAcc,
730 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
733 return efmuMSSequence
742 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
744 viewName=
"EFMuCBReco_FS"
746 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
748 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
749 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
752 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
753 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
756 seqmerge =
seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".
format(
"_probe" if is_probe_leg
else ""))
757 acc.addSequence(seqmerge)
759 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
761 seqreco =
parOR(
"muonEFCBFSInsideOutRecoSequence{}".
format(
"_probe" if is_probe_leg
else ""))
762 acc2.addSequence(seqreco)
765 sequenceOutCB = muNamesFS.EFCBOutInName
768 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
771 seqfilt =
seqAND(
"muonEFCBFSInsideOutSequence{}".
format(
"_probe" if is_probe_leg
else ""))
772 acc3.addSequence(seqfilt)
773 acc3.merge(muonFilter, sequenceName=seqfilt.name)
778 seqio =
parOR(
"efmuInsideOutViewNode_FS{}".
format(
"_probe" if is_probe_leg
else ""))
779 acc4.addSequence(seqio)
782 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
783 acc3.merge(acc4, sequenceName=seqfilt.name)
784 acc2.merge(acc3, sequenceName=seqreco.name)
785 acc.merge(acc2, sequenceName=seqmerge.name)
786 sequenceOutInsideOut = muNamesFS.EFCBInOutName
789 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
790 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
791 acc.merge(mergeMuons, sequenceName=seqmerge.name)
792 recoCB.mergeReco(acc)
794 sequenceOut = muNamesFS.EFCBName
795 selAccCB.mergeReco(recoCB)
797 return (selAccCB, sequenceOut)
805 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromName
807 name =
'TrigMuonEFFSCombinerHypoAlg',
808 MuonDecisions = sequenceOut)
810 selAcc.addHypoAlgo(efmuCBHypo)
812 efmuCBSequence = MenuSequence(flags, selAcc,
813 HypoToolGen = TrigMuonEFCombinerHypoToolFromName)
815 return efmuCBSequence
820 selAcc = SelectionCA(
'EFLateMuSel', isProbe=is_probe_leg)
822 viewName =
"EFLateMuRoIReco"
823 viewcreator = CompFactory.ViewCreatorInitialROITool
824 roiTool = viewcreator()
826 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg)
828 from .MuonRecoSequences
import efLateMuRoISequenceCfg
832 recoLateMu.mergeReco(efLateMuRoIAcc)
834 selAcc.mergeReco(recoLateMu)
835 return (selAcc, sequenceOut)
843 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonLateMuRoIHypoAlgCfg, TrigMuonLateMuRoIHypoToolFromDict
845 name =
'TrigMuonLateMuRoIHypoAlg',
846 LateRoIs = sequenceOut)
848 selAcc.addHypoAlgo(latemuHypo)
850 latemuRoISequence = MenuSequence(flags, selAcc,
851 HypoToolGen = TrigMuonLateMuRoIHypoToolFromDict)
854 return latemuRoISequence
859 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
860 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
862 viewName =
"EFLateMuReco"
863 viewcreator = CompFactory.ViewCreatorNamedROITool
864 roiTool = viewcreator(ROILinkName=
"feature")
866 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
870 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
871 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
873 recoLateMu.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
878 sequenceOut = muNames.EFCBInOutName+
'_Late'
881 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
883 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
885 return (selAcc, sequenceOut)
894 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
895 trigMuonEFLateHypo =
TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
897 selAcc.addHypoAlgo(trigMuonEFLateHypo)
898 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
900 return MenuSequence(flags, selAcc,
901 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
914 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
916 viewName=
"EFMuIsoReco"+name
918 roisWriteHandleKey =
"Roi_MuonIsoMS"
920 roisWriteHandleKey =
recordable(
"HLT_Roi_MuonIso")
922 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
923 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
924 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
925 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
927 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
928 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
932 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
933 sequenceOut = muNames.EFIsoMuonName+name
937 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
940 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
942 return (selAccIso, sequenceOut)
950 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
952 name =
'EFMuisoHypoAlg',
953 EFMuonsName = sequenceOut)
955 selAcc.addHypoAlgo(efmuisoHypo)
957 efmuisoSequence = MenuSequence(flags, selAcc,
958 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
960 return efmuisoSequence
968 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
970 name =
'EFMuMSisoHypoAlg',
971 EFMuonsName = sequenceOut)
973 selAcc.addHypoAlgo(efmuisoHypo)
975 efmuisoSequence = MenuSequence(flags, selAcc,
976 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
978 return efmuisoSequence
987 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
988 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
990 selAcc = SelectionCA(
'muRoIClusterSel')
992 viewName=
"MuRoIClusReco"
993 viewcreator = CompFactory.ViewCreatorInitialROITool
994 roiTool = viewcreator()
996 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
998 selAcc.mergeReco(recoRoICluster)
1002 name =
'MuRoiClusterHypoAlg')
1004 selAcc.addHypoAlgo(hypoAlg)
1006 muRoIClusterSequence = MenuSequence(flags, selAcc,
1007 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
1009 return muRoIClusterSequence
1020 from ..Config.GenerateMenuMT
import GenerateMenuMT
1022 chains = [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']]
1031 from ..Config.GenerateMenuMT
import GenerateMenuMT
1033 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2io" in chain.name]
1034 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if not any(key
in chain.name
for key
in [
'noL2Comb',
'l2mt'])]
1043 from ..Config.GenerateMenuMT
import GenerateMenuMT
1045 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2mt" in chain.name]
1046 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if "l2mt" in chain.name]