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, isProbe=is_probe_leg)
453 viewName=
"EFMuCBReco_RoI" 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(
"_probe" if is_probe_leg
else ""))
467 acc.addSequence(seqmerge)
471 seqreco =
parOR(
"muonEFCBandInsideOutRecoSequence{}".
format(
"_probe" if is_probe_leg
else ""))
472 acc2.addSequence(seqreco)
473 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
475 sequenceOutCB = muNames.EFCBOutInName
479 seqfilter =
seqAND(
"muonEFInsideOutSequence{}".
format(
"_probe" if is_probe_leg
else ""))
480 acc3.addSequence(seqfilter)
481 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuons", MuonContainerLocation=sequenceOutCB)
482 acc3.merge(muonFilter, sequenceName=seqfilter.name)
486 seqio =
parOR(
"efmuInsideOutViewNode_RoI{}".
format(
"_probe" if is_probe_leg
else ""))
487 acc4.addSequence(seqio)
489 sequenceOutInsideOut = muNames.EFCBInOutName
491 acc3.merge(acc4, sequenceName=seqfilter.name)
492 acc2.merge(acc3, sequenceName=seqreco.name)
493 acc.merge(acc2, sequenceName=seqmerge.name)
495 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFMuons", MuonCBContainerLocation=sequenceOutCB,
496 MuonInsideOutContainerLocation=sequenceOutInsideOut, MuonOutputLocation=muNames.EFCBName)
498 acc.merge(mergeMuons, sequenceName=seqmerge.name)
499 recoCB.mergeReco(acc)
500 selAccCB.mergeReco(recoCB)
502 return (selAccCB, muNames.EFCBName)
510 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
512 name =
'TrigMuonEFCombinerHypoAlg',
513 MuonDecisions = sequenceOut,
514 MapToPreviousDecisions=
True)
516 selAcc.addHypoAlgo(efmuCBHypo)
518 efmuCBSequence = MenuSequence(flags, selAcc,
519 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
521 return efmuCBSequence
529 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
531 name =
'TrigMuonEFCombinerIDperfHypoAlg',
533 MuonDecisions = sequenceOut,
534 MapToPreviousDecisions=
True)
536 selAcc.addHypoAlgo(efmuCBHypo)
538 efmuCBSequence = MenuSequence(flags, selAcc,
539 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
541 return efmuCBSequence
549 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFIdtpHypoAlgCfg, TrigMuonEFIdtpHypoToolFromDict
551 name =
'TrigMuonEFIdtpHypoAlg')
554 selAcc.addHypoAlgo(efmuCBHypo)
556 efmuCBSequence = MenuSequence(flags, selAcc,
557 HypoToolGen = TrigMuonEFIdtpHypoToolFromDict)
559 return efmuCBSequence
564 selAccCB = SelectionCA(
'EFMuCBLRTSel'+selCAName, isProbe=is_probe_leg)
566 viewName=
"EFMuCBLRTReco"
567 ViewCreatorTool=CompFactory.ViewCreatorNamedROITool
568 roiTool = ViewCreatorTool(ROILinkName=
"l2lrtroi")
570 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
572 from .MuonRecoSequences
import muEFCBRecoSequenceCfg
575 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
577 sequenceOut = muNamesLRT.EFCBName
579 selAccCB.mergeReco(recoCB)
581 return (selAccCB, sequenceOut)
589 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
591 name =
'TrigMuonEFCombinerHypoAlgLRT',
592 MuonDecisions = sequenceOut,
593 MapToPreviousDecisions=
True)
596 selAcc.addHypoAlgo(efmuCBLRTHypo)
598 efmuCBSequence = MenuSequence(flags, selAcc,
599 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
601 return efmuCBSequence
609 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromDict
611 name =
'TrigMuonEFCombinerHypoAlgLRTIDPerf',
613 MuonDecisions = sequenceOut,
614 MapToPreviousDecisions=
True)
617 selAcc.addHypoAlgo(efmuCBLRTHypo)
619 efmuCBSequence = MenuSequence(flags, selAcc,
620 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict)
622 return efmuCBSequence
631 selAccMS = SelectionCA(
'EFMuMSSel_FS')
633 viewName=
"EFMuMSReco_FS"
634 ViewCreatorFSROITool=CompFactory.ViewCreatorFSROITool
636 requireParentView =
False
638 recoMS = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView = requireParentView)
642 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
643 from .MuonRecoSequences
import muEFSARecoSequenceCfg, muonDecodeCfg
644 recoMS.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoMS.name+
"RoIs"))
647 recoMS.mergeReco(muEFSARecoSequenceAcc)
649 selAccMS.mergeReco(recoMS)
651 return (selAccMS, sequenceOut)
659 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFMSonlyHypoToolFromName
662 name =
'TrigMuonEFMSonlyHypo_FS',
663 MuonDecisions = sequenceOut,
666 selAcc.addHypoAlgo(efmuMSHypo)
668 efmuMSSequence = MenuSequence(flags, selAcc,
669 HypoToolGen = TrigMuonEFMSonlyHypoToolFromName)
672 return efmuMSSequence
681 selAccCB = SelectionCA(
'EFMuCBSel_FS', isProbe=is_probe_leg)
683 viewName=
"EFMuCBReco_FS"
685 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey =
"MuonCandidates_FS_ROIs")
687 recoCB = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView =
True, isProbe=is_probe_leg, mergeUsingFeature=
True,
688 PlaceMuonInView=
True, InViewMuons =
"InViewMuons", InViewMuonCandidates =
"MuonCandidates_FS")
691 from TrigMuonEF.TrigMuonEFConfig
import MuonFilterAlgCfg, MergeEFMuonsAlgCfg
692 from .MuonRecoSequences
import muEFCBRecoSequenceCfg, muEFInsideOutRecoSequenceCfg
695 seqmerge =
seqAND(
"muonCBInsideOutMergingSequenceEFCBFS{}".
format(
"_probe" if is_probe_leg
else ""))
696 acc.addSequence(seqmerge)
698 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
700 seqreco =
parOR(
"muonEFCBFSInsideOutRecoSequence{}".
format(
"_probe" if is_probe_leg
else ""))
701 acc2.addSequence(seqreco)
704 sequenceOutCB = muNamesFS.EFCBOutInName
707 muonFilter =
MuonFilterAlgCfg(flags, name=
"FilterZeroMuonsEFCBFS", MuonContainerLocation = sequenceOutCB)
710 seqfilt =
seqAND(
"muonEFCBFSInsideOutSequence{}".
format(
"_probe" if is_probe_leg
else ""))
711 acc3.addSequence(seqfilt)
712 acc3.merge(muonFilter, sequenceName=seqfilt.name)
717 seqio =
parOR(
"efmuInsideOutViewNode_FS{}".
format(
"_probe" if is_probe_leg
else ""))
718 acc4.addSequence(seqio)
721 acc4.merge(muonEFInsideOutRecoAlgSequence, sequenceName=seqio.name)
722 acc3.merge(acc4, sequenceName=seqfilt.name)
723 acc2.merge(acc3, sequenceName=seqreco.name)
724 acc.merge(acc2, sequenceName=seqmerge.name)
725 sequenceOutInsideOut = muNamesFS.EFCBInOutName
728 mergeMuons =
MergeEFMuonsAlgCfg(flags, name=
"MergeEFCBFSMuons", MuonCBContainerLocation = sequenceOutCB,
729 MuonInsideOutContainerLocation = sequenceOutInsideOut, MuonOutputLocation = muNamesFS.EFCBName)
730 acc.merge(mergeMuons, sequenceName=seqmerge.name)
731 recoCB.mergeReco(acc)
733 sequenceOut = muNamesFS.EFCBName
734 selAccCB.mergeReco(recoCB)
736 return (selAccCB, sequenceOut)
744 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg, TrigMuonEFCombinerHypoToolFromName
746 name =
'TrigMuonEFFSCombinerHypoAlg',
747 MuonDecisions = sequenceOut)
749 selAcc.addHypoAlgo(efmuCBHypo)
751 efmuCBSequence = MenuSequence(flags, selAcc,
752 HypoToolGen = TrigMuonEFCombinerHypoToolFromName)
754 return efmuCBSequence
759 selAcc = SelectionCA(
'EFLateMuSel', isProbe=is_probe_leg)
761 viewName =
"EFLateMuRoIReco"
762 viewcreator = CompFactory.ViewCreatorInitialROITool
763 roiTool = viewcreator()
765 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg)
767 from .MuonRecoSequences
import efLateMuRoISequenceCfg
771 recoLateMu.mergeReco(efLateMuRoIAcc)
773 selAcc.mergeReco(recoLateMu)
774 return (selAcc, sequenceOut)
782 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonLateMuRoIHypoAlgCfg, TrigMuonLateMuRoIHypoToolFromDict
784 name =
'TrigMuonLateMuRoIHypoAlg',
785 LateRoIs = sequenceOut)
787 selAcc.addHypoAlgo(latemuHypo)
789 latemuRoISequence = MenuSequence(flags, selAcc,
790 HypoToolGen = TrigMuonLateMuRoIHypoToolFromDict)
793 return latemuRoISequence
798 from .MuonRecoSequences
import muEFInsideOutRecoSequenceCfg, muonDecodeCfg, muonIDFastTrackingSequenceCfg
799 selAcc = SelectionCA(
'EFLateMuAlg', isProbe=is_probe_leg)
801 viewName =
"EFLateMuReco"
802 viewcreator = CompFactory.ViewCreatorNamedROITool
803 roiTool = viewcreator(ROILinkName=
"feature")
805 recoLateMu = InViewRecoCA(name=viewName, RoITool = roiTool, RequireParentView=
True, mergeUsingFeature=
True, isProbe=is_probe_leg)
809 muonflagsCB = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.Muon').cloneAndReplace(
'MuonCombined',
'Trigger.Offline.Combined.MuonCombined')
810 muonflags = flags.cloneAndReplace(
'Muon',
'Trigger.Offline.SA.Muon')
812 recoLateMu.mergeReco(
muonDecodeCfg(muonflags,RoIs=recoLateMu.name+
"RoIs"))
817 sequenceOut = muNames.EFCBInOutName+
'_Late'
820 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Muon
822 selAcc.mergeReco(recoLateMu, robPrefetchCA = robPrefetchAlg)
824 return (selAcc, sequenceOut)
833 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFHypoAlgCfg
834 trigMuonEFLateHypo =
TrigMuonEFHypoAlgCfg(
"TrigMuonEFCombinerLateMuHypoAlg", MuonDecisions = sequenceOut )
836 selAcc.addHypoAlgo(trigMuonEFLateHypo)
837 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFCombinerHypoToolFromDict
839 return MenuSequence(flags, selAcc,
840 HypoToolGen = TrigMuonEFCombinerHypoToolFromDict )
853 selAccIso = SelectionCA(
'EFMuIso'+name, isProbe=is_probe_leg)
855 viewName=
"EFMuIsoReco"+name
857 roisWriteHandleKey =
"Roi_MuonIsoMS"
859 roisWriteHandleKey =
recordable(
"HLT_Roi_MuonIso")
861 roiTool = CompFactory.ViewCreatorCentredOnIParticleROITool(RoisWriteHandleKey = roisWriteHandleKey,
862 RoIEtaWidth=flags.Trigger.InDetTracking.muonIso.etaHalfWidth,
863 RoIPhiWidth=flags.Trigger.InDetTracking.muonIso.phiHalfWidth,
864 RoIZedWidth=flags.Trigger.InDetTracking.muonIso.zedHalfWidth)
866 recoIso = InViewRecoCA(name=viewName, RoITool = roiTool, isProbe=is_probe_leg, mergeUsingFeature=
True,
867 PlaceMuonInView=
True, InViewMuons =
"IsoViewMuons"+name, InViewMuonCandidates =
"IsoMuonCandidates"+name)
871 from .MuonRecoSequences
import efmuisoRecoSequenceCfg
872 sequenceOut = muNames.EFIsoMuonName+name
876 from TrigGenericAlgs.TrigGenericAlgsConfig
import ROBPrefetchingAlgCfg_Si
879 selAccIso.mergeReco(recoIso, robPrefetchCA = robPrefetchAlg)
881 return (selAccIso, sequenceOut)
889 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
891 name =
'EFMuisoHypoAlg',
892 EFMuonsName = sequenceOut)
894 selAcc.addHypoAlgo(efmuisoHypo)
896 efmuisoSequence = MenuSequence(flags, selAcc,
897 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
899 return efmuisoSequence
907 from TrigMuonHypo.TrigMuonHypoConfig
import TrigMuonEFTrackIsolationHypoAlgCfg, TrigMuonEFTrackIsolationHypoToolFromDict
909 name =
'EFMuMSisoHypoAlg',
910 EFMuonsName = sequenceOut)
912 selAcc.addHypoAlgo(efmuisoHypo)
914 efmuisoSequence = MenuSequence(flags, selAcc,
915 HypoToolGen = TrigMuonEFTrackIsolationHypoToolFromDict)
917 return efmuisoSequence
926 from TrigLongLivedParticles.TrigLongLivedParticlesConfig
import MuonClusterConfig
927 from TrigLongLivedParticlesHypo.TrigLongLivedParticlesHypoConfig
import MuonClusterHypoAlgConfig, TrigLongLivedParticlesHypoToolFromDict
929 selAcc = SelectionCA(
'muRoIClusterSel')
931 viewName=
"MuRoIClusReco"
932 viewcreator = CompFactory.ViewCreatorInitialROITool
933 roiTool = viewcreator()
935 recoRoICluster = InEventRecoCA(name=viewName, RoITool = roiTool, mergeUsingFeature =
False, RoIs =
'HLT_muVtxCluster_RoIs')
937 selAcc.mergeReco(recoRoICluster)
941 name =
'MuRoiClusterHypoAlg')
943 selAcc.addHypoAlgo(hypoAlg)
945 muRoIClusterSequence = MenuSequence(flags, selAcc,
946 HypoToolGen = TrigLongLivedParticlesHypoToolFromDict)
948 return muRoIClusterSequence
959 from ..Config.GenerateMenuMT
import GenerateMenuMT
961 chains = [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']]
970 from ..Config.GenerateMenuMT
import GenerateMenuMT
972 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2io" in chain.name]
973 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if not any(key
in chain.name
for key
in [
'noL2Comb',
'l2mt'])]
982 from ..Config.GenerateMenuMT
import GenerateMenuMT
984 chains = [chain.name
for chain
in menu.chainsInMenu[
'Muon']
if "l2mt" in chain.name]
985 chains += [chain.name
for chain
in menu.chainsInMenu[
'Bphysics']
if "l2mt" in chain.name]