102 acc = ComponentAccumulator()
104 doSeededDecoding =
True
106 doSeededDecoding =
False
110 if not flags.Input.isMC:
111 rpcAcc = RpcBytestreamDecodeCfg( flags, name =
"RpcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
113 if flags.Muon.enableNRPC:
114 acc.merge(NrpcBytestreamDecodeCfg( flags, name=
"NRpcRawDataProvider_"+RoIs ))
116 rpcAcc = RpcRDODecodeCfg( flags, name=
"RpcRdoToRpcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
119 if not flags.Input.isMC:
120 tgcAcc = TgcBytestreamDecodeCfg( flags, name=
"TgcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
123 tgcAcc = TgcRDODecodeCfg( flags, name=
"TgcRdoToTgcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
126 if not flags.Input.isMC:
127 mdtAcc = MdtBytestreamDecodeCfg( flags, name=
"MdtRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
130 mdtAcc = MdtRDODecodeCfg( flags, name=
"MdtRdoToMdtPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
133 if flags.Detector.GeometryCSC:
134 if not flags.Input.isMC:
135 cscAcc = CscBytestreamDecodeCfg( flags, name=
"CscRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
138 cscAcc = CscRDODecodeCfg( flags, name=
"CscRdoToCscPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
141 cscAcc = CscClusterBuildCfg( flags, name=
"CscThresholdClusterBuilder_"+RoIs )
144 if flags.Detector.GeometrysTGC
and flags.Detector.GeometryMM:
145 if not flags.Input.isMC:
146 stgcAcc = sTgcBytestreamDecodeCfg(flags, name=
"sTgcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
148 mmAcc = MmBytestreamDecodeCfg(flags, name=
"MMRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
151 stgcAcc = StgcRDODecodeCfg( flags, name=
"StgcRdoToStgcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
154 mmAcc = MMRDODecodeCfg( flags, name=
"MMRdoToMMPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
158 if flags.Muon.usePhaseIIGeoSetup
and flags.Muon.scheduleActsReco:
159 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
160 acc.merge( MuonSpacePointFormationCfg( flags, suffix =f
'_{RoIs}' ) )
200def muFastRecoSequenceCfg( flags, RoIs, suffix="", doFullScanID = False, InsideOutMode=False, extraLoads=None, l2mtmode=False, calib=False, useNewFast=False ):
202 acc = ComponentAccumulator()
205 acc.merge(
muFastVDVCfg(flags, RoIs=RoIs, suffix=suffix, InsideOutMode=
False, extraLoads=
None))
207 from MuonFastRecoAlgs.MuonFastReconstructionConfig
import MuonFastReconstructionAlgCfg
208 acc.merge(MuonFastReconstructionAlgCfg(flags, name=f
"MuonFastReconstructionAlg{suffix}",
209 OutMuons=muNames.L2SAMuonsPhII))
220 acc.merge(
muFastVDVCfg(flags, RoIs=RoIs, suffix=suffix, InsideOutMode=InsideOutMode, extraLoads=extraLoads))
223 from TrigL2MuonSA.TrigL2MuonSAConfig
import l2MuFastAlgCfg
224 acc.merge(l2MuFastAlgCfg(flags,
227 FILL_FSIDRoI = doFullScanID,
228 MuonL2SAInfo = muNames.L2SAMuons+suffix,
229 L2IOCB = muNames.L2CBMuons+suffix,
230 forID = muNames.L2forIDName+suffix,
231 forMS =
"forMS"+suffix,
343 acc = ComponentAccumulator()
347 nameGroups = muNamesFS
if 'FS' in suffix
else muNames
349 if flags.Muon.usePhaseIIGeoSetup
and flags.Muon.scheduleActsReco:
351 if "newFast" in suffix:
352 msMuonName = nameGroups.EFSAMuonsPhIINewFast
353 msTrackName = nameGroups.EFSATrackParticlesPhIINewFast
354 elif useBucketFilter:
355 msMuonName = nameGroups.EFSAMuonsPhIIMlbkt
356 msTrackName = nameGroups.EFSATrackParticlesPhIIMlbkt
358 msMuonName = nameGroups.EFSAMuonsPhII
359 msTrackName = nameGroups.EFSATrackParticlesPhII
362 if flags.Muon.setupTruthAlgorithms:
363 from MuonObjectMarker.ObjectMarkerConfig
import TruthMeasMarkerAlgCfg
364 acc.merge(TruthMeasMarkerAlgCfg(flags, name = f
"TruthMeasMarkerAlg{suffix}"))
365 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import TruthHitAssociationCfg, RecoSegmentTruthAssocCfg, MuonToTruthAssocAlgCfg
366 acc.merge(TruthHitAssociationCfg(flags, useSDO=
True, suffix=suffix))
367 acc.merge(RecoSegmentTruthAssocCfg(flags, name=f
"MuonSegmentsFromR4TruthMatching{suffix}",
368 SegmentKey=
"MuonSegmentsFromR4"))
369 acc.merge(MuonToTruthAssocAlgCfg(flags, name=f
'MuonToTruthMatchingAlg{suffix}'))
373 from MuonInference.InferenceConfig
import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
374 bucketTool = acc.popToolsAndMerge(GraphBucketFilterToolCfg(flags, name=f
"GraphBucketFilterTool{suffix}",
375 WriteSpacePointKey=
"FilteredMlBuckets"))
376 acc.merge(GraphInferenceAlgCfg(flags, name = f
"GraphInferenceAlg{suffix}",
377 InferenceTools=[bucketTool]))
380 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig
import MuonEtaHoughTransformAlgCfg, MuonNSWSegmentFinderAlgCfg, MuonPhiHoughTransformAlgCfg, MuonSegmentFittingAlgCfg
381 segmentContainers = []
382 if flags.Detector.GeometrysTGC
or flags.Detector.GeometryMM:
383 segmentContainers+=[
"MuonNswSegments"]
384 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name=f
"MuonNswEtaHoughTransformAlg{suffix}",
385 EtaHoughMaxContainer =
"MuonHoughNswMaxima",
386 SpacePointContainer =
"NswSpacePoints"))
387 acc.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f
"MuonNswSegmentFinderAlg{suffix}",
388 MuonNswSegmentWriteKey = segmentContainers[-1],
389 MuonNswSegmentSeedWriteKey =
"MuonNswSegmentSeeds",
390 CombinatorialReadKey =
"MuonHoughNswMaxima"))
392 if flags.Detector.GeometryMDT
or flags.Detector.GeometryRPC
or flags.Detector.GeometryTGC:
394 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f
"MuonEtaHoughTransformAlg{suffix}",
395 SpacePointContainer =
"FilteredMlBuckets"))
397 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f
"MuonEtaHoughTransformAlg{suffix}"))
399 acc.merge(MuonPhiHoughTransformAlgCfg(flags, name = f
"MuonPhiHoughTransformAlg{suffix}"))
401 segmentContainers+=[
"R4MuonSegments"]
402 acc.merge(MuonSegmentFittingAlgCfg(flags, name = f
"MuonSegmentFittingAlg{suffix}",
403 OutSegmentContainer=segmentContainers[-1]))
405 from MuonSegmentCnv.MuonSegmentCnvConfig
import xAODSegmentCnvAlgCfg
406 acc.merge(xAODSegmentCnvAlgCfg(flags, name = f
"MuonR4xAODSegmentCnvAlg{suffix}",
407 InSegmentKeys = segmentContainers))
409 from MuonSegmentCnv.MuonSegmentCnvConfig
import MuonR4SegmentCnvAlgCfg
410 acc.merge(MuonR4SegmentCnvAlgCfg(flags, name=f
"MuonR4SegmentCnvAlg{suffix}",
411 ReadSegments = segmentContainers,
412 WriteKey=
"TrackMuonSegments"))
415 from MuonTrackFindingAlgs.TrackFindingConfig
import MSTrackFinderAlgCfg, StandaloneTrackPartCnvCfg, MuidSaTagMakerAlgCfg, MuonCreatorAlgCfg
416 acc.merge(MSTrackFinderAlgCfg(flags, name=f
"MSTrackFinderAlg{suffix}"))
417 acc.merge(StandaloneTrackPartCnvCfg(flags, name=f
"MuonMsTrackParticleCnvR4{suffix}",
418 TrackParticlesOutKey = msTrackName))
419 acc.merge(MuidSaTagMakerAlgCfg(flags, name=f
"MuidSaTagMakerAlg{suffix}",
420 MsTracks = msTrackName))
421 acc.merge(MuonCreatorAlgCfg(flags, name = f
"MuonActsCreatorAlg{suffix}",
422 TagKeys = [
"MuonTagsSA"],
423 MuonKey = msMuonName))
425 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCombinedMuonCandidateAlgCfg
426 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name=f
"MuonCombinedMuonCandidateAlg{suffix}",
427 MuonSpectrometerTrackParticleLocation = msTrackName))
429 msMuonName = nameGroups.EFSAMuons
431 from MuonConfig.MuonSegmentFindingConfig
import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
432 acc.merge(MuonLayerHoughAlgCfg(flags, f
"TrigMuonLayerHoughAlg{suffix}"))
433 acc.merge(MuonSegmentFinderAlgCfg(flags, f
"TrigMuonSegmentMaker{suffix}"))
435 from MuonSegmentTrackMaker.MuonTrackMakerAlgsMonitoring
import MuPatTrackBuilderMonitoring
436 from MuonConfig.MuonTrackBuildingConfig
import MuPatTrackBuilderCfg
437 from xAODTrackingCnv.xAODTrackingCnvConfig
import MuonStandaloneTrackParticleCnvAlgCfg
438 acc.merge(MuPatTrackBuilderCfg(flags, name=f
"TrigMuPatTrackBuilder{suffix}",
439 MuonSegmentCollection =
"TrackMuonSegments",
440 MonTool = MuPatTrackBuilderMonitoring(flags, f
"MuPatTrackBuilderMonitoringSA{suffix}")))
442 acc.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags, name = f
"TrigMuonStandaloneTrackParticleCnvAlg{suffix}"))
443 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCombinedMuonCandidateAlgCfg, MuonCreatorAlgCfg
444 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring
import MuonCreatorAlgMonitoring
445 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name=f
"TrigMuonCandidateAlg{suffix}"))
446 acc.merge(MuonCreatorAlgCfg(flags, name=f
"TrigMuonCreatorAlg_{suffix}",
449 MuonContainerLocation=msMuonName,
450 ExtrapolatedLocation = f
"HLT_MSExtrapolatedMuons_{suffix}",
451 MSOnlyExtrapolatedLocation = f
"HLT_MSOnlyExtrapolatedMuons_{suffix}",
452 MonTool = MuonCreatorAlgMonitoring(flags, f
"MuonCreatorAlgSA_{suffix}")))
454 sequenceOut = msMuonName
456 return acc, sequenceOut
534 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring
import MuonCreatorAlgMonitoring
535 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCreatorAlgCfg, MuonCombinedAlgCfg, MuonCombinedInDetCandidateAlgCfg
536 acc = ComponentAccumulator()
542 from TrigInDetConfig.TrigInDetConfig
import trigInDetFastTrackingCfg
543 acc.merge(trigInDetFastTrackingCfg( flags, roisKey=RoIs, signatureName=
"muonFS" ))
550 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
554 if isCosmic(flags)
and 'LRT' not in name:
555 trackParticles=
getIDTracks(flags, name, muonIDreuse=flags.Muon.enableTrigIDtrackReuse)
557 muLrtFlags = getFlagsForActiveConfig(flags,
"muonLRT", log)
558 acc.merge(trigInDetPrecisionTrackingCfg(muLrtFlags, rois= RoIs, signatureName=
"muonLRT"))
559 trackParticles =
getIDTracks(muLrtFlags, name, precision=
True)
561 muFsFlags = getFlagsForActiveConfig(flags,
"muonFS", log)
562 acc.merge(trigInDetPrecisionTrackingCfg(muFsFlags, rois= RoIs, signatureName=
"muonFS", in_view=
False))
563 trackParticles =
getIDTracks(muFsFlags, precision=
True)
565 muFlags = getFlagsForActiveConfig(flags,
"muon", log)
566 if not flags.Muon.enableTrigIDtrackReuse
and suffix ==
'':
567 acc.merge(trigInDetPrecisionTrackingCfg(muFlags, rois= RoIs, signatureName=
"muon"))
568 trackParticles=
getIDTracks(muFlags, name, muonIDreuse=flags.Muon.enableTrigIDtrackReuse, precision=
True, suffix=suffix)
570 if flags.Muon.enableTrigIDtrackReuse
or suffix !=
'':
571 if 'LRT' not in name
or 'FS' not in name:
572 if flags.GeoModel.Run > LHCPeriod.Run3:
574 if suffix !=
'idReuse':
575 MuonL2CBInputContainer = muNames.L2CBMuons+suffix
577 MuonL2CBInputContainer = muNames.L2CBMuons
578 from TrigMuonEF.TrigMuonEFConfig
import GetL2CBmuonInDetTracksAlgCfg
579 acc.merge(GetL2CBmuonInDetTracksAlgCfg(flags, name=
"GetL2CBInDetTracks"+suffix,
580 MuonL2CBContainerLocation=MuonL2CBInputContainer,
581 IDtrackOutputLocation=
"HLT_IDTrack_MuonComb_FTF"+suffix))
584 acc.merge(MuonCombinedInDetCandidateAlgCfg(flags, name=
"TrigMuonCombinedInDetCandidateAlg_"+name+suffix,TrackParticleLocation = [trackParticles], InDetCandidateLocation=
"InDetCandidates_"+name+suffix))
588 candidatesName =
"MuonCandidates"
590 candidatesName =
"MuonCandidates_FS"
592 acc.merge(MuonCombinedAlgCfg(flags,name=
"TrigMuonCombinedAlg_"+name+suffix, MuonCandidateLocation=candidatesName, InDetCandidateLocation=
"InDetCandidates_"+name+suffix))
595 cbMuonName = muNamesFS.EFCBOutInMuons
597 cbMuonName = muNamesLRT.EFCBMuons
599 cbMuonName = muNames.EFCBOutInMuons
602 acc.merge(MuonCreatorAlgCfg(flags, name=
"TrigMuonCreatorAlgCB_"+name+suffix, MuonCandidateLocation=[candidatesName], TagMaps=[
"muidcoTagMap"], InDetCandidateLocation=
"InDetCandidates_"+name+suffix,
603 MuonContainerLocation = cbMuonName+suffix, ExtrapolatedLocation =
"CBExtrapolatedMuons"+suffix,
604 MSOnlyExtrapolatedLocation =
"CBMSonlyExtrapolatedMuons"+suffix, CombinedLocation =
"HLT_CBCombinedMuon_"+name+suffix,
605 MonTool = MuonCreatorAlgMonitoring(flags,
"MuonCreatorAlgCB_"+name+suffix)))
633 from MuonConfig.MuonSegmentFindingConfig
import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
634 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring
import MuonCreatorAlgMonitoring
635 from MuonCombinedConfig.MuonCombinedReconstructionConfig
import MuonCreatorAlgCfg, MuGirlStauAlgCfg, StauCreatorAlgCfg, MuonInDetToMuonSystemExtensionAlgCfg, MuonInsideOutRecoAlgCfg, MuonCombinedInDetCandidateAlgCfg
636 from MuonCombinedConfig.MuonCombinedRecToolsConfig
import MuonInsideOutRecoToolCfg
638 acc = ComponentAccumulator()
640 candidatesName =
"MuonCandidates"
642 candidatesName =
"MuonCandidates_FS"
647 acc.merge(MuonLayerHoughAlgCfg(flags,
"TrigMuonLayerHoughAlg_"+name,MuonPatternCombinationCollection=
"MuonLayerHoughCombis_"+name,
648 Key_MuonLayerHoughToolHoughDataPerSectorVec=
"HoughDataPerSectorVec_"+name))
650 acc.merge(MuonSegmentFinderAlgCfg(flags,
"TrigMuonSegmentMaker_"+name,MuonLayerHoughCombisKey=
"MuonLayerHoughCombis_"+name))
654 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
655 muLateFlags = getFlagsForActiveConfig(flags,
"muonLate", log)
656 acc.merge(trigInDetPrecisionTrackingCfg(muLateFlags, rois= RoIs, signatureName=
"muonLate", in_view=
False))
657 trackParticles = muLateFlags.Tracking.ActiveConfig.tracks_IDTrig
660 acc.merge(MuonCombinedInDetCandidateAlgCfg(flags, name=
"TrigMuonCombinedInDetCandidateAlg_"+name,TrackParticleLocation=[trackParticles],ForwardParticleLocation=trackParticles,InDetCandidateLocation=
"InDetCandidates_"+name,ExtendBulk=
True))
669 cbMuonName = muNames.EFCBInOutMuons+suffix
671 cbMuonName = recordable(cbMuonName+
"_Late")
672 acc.merge(MuGirlStauAlgCfg(flags, name=
"TrigMuonLateInsideOutRecoAlg_"+name,InDetCandidateLocation=
"InDetCandidates_"+name))
673 acc.merge(StauCreatorAlgCfg(flags, name=
"TrigLateMuonCreatorAlg_"+name, TagMaps=[
"stauTagMap"], SegmentContainerName=
"", InDetCandidateLocation=
"InDetCandidates_"+name,
674 MuonContainerLocation=cbMuonName, MonTool=MuonCreatorAlgMonitoring(flags,
"LateMuonCreatorAlg_"+name)))
676 acc.merge(MuonInDetToMuonSystemExtensionAlgCfg(flags, name=
"TrigInDetMuonExtensionAlg_"+name+suffix, InputInDetCandidates=
"InDetCandidates_"+name+suffix,
677 WriteInDetCandidates=
"InDetCandidatesSystemExtended_"+name+suffix))
679 ioTool = MuonInsideOutRecoToolCfg(flags, MuonLayerSegmentFinderTool=
"", InputSegments=
"TrackMuonSegments")
681 ioTool = MuonInsideOutRecoToolCfg(flags)
682 InsideOutRecoTool = acc.popToolsAndMerge(ioTool)
684 acc.merge(MuonInsideOutRecoAlgCfg(flags, name=
"TrigMuonInsideOutRecoAlg_"+name+suffix,InDetCandidateLocation=
"InDetCandidatesSystemExtended_"+name+suffix, MuonCombinedInDetExtensionTool=InsideOutRecoTool))
686 acc.merge(MuonCreatorAlgCfg(flags, name=
"TrigMuonCreatorAlgInsideOut_"+name+suffix, MuonCandidateLocation=[candidatesName], TagMaps=[
"muGirlTagMap"],InDetCandidateLocation=
"InDetCandidates_"+name+suffix,
687 MuonContainerLocation = cbMuonName, ExtrapolatedLocation =
"InsideOutCBExtrapolatedMuons"+suffix,
688 MSOnlyExtrapolatedLocation =
"InsideOutCBMSOnlyExtrapolatedMuons"+suffix, CombinedLocation =
"InsideOutCBCombinedMuon"+suffix, MonTool = MuonCreatorAlgMonitoring(flags,
"MuonCreatorAlgInsideOut_"+name+suffix)))
713 from TrigInDetConfig.TrigInDetConfig
import trigInDetPrecisionTrackingCfg
714 muIsoFlags = getFlagsForActiveConfig(flags,
"muonIso"+name, log)
715 acc.merge(trigInDetPrecisionTrackingCfg(muIsoFlags, rois= RoIs, signatureName=
"muonIso"+name, in_view=
False))
716 trackParticles = muIsoFlags.Tracking.ActiveConfig.tracks_IDTrig
719 from TrigMuonEF.TrigMuonEFConfig
import TrigMuonEFTrackIsolationAlgCfg
720 acc.merge(TrigMuonEFTrackIsolationAlgCfg(flags,name=
"TrigEFMuIso"+name, requireCombinedMuon =
not doMSiso,
721 MuonEFContainer = Muons,IdTrackParticles = trackParticles, MuonContName = muNames.EFIsoMuons+name,
722 ptcone02Name = muNames.EFIsoMuons+name +
".ptcone02",
723 ptcone03Name = muNames.EFIsoMuons+name +
".ptcone03"))