377def muEFSARecoSequenceCfg( flags, RoIs, suffix="", useBucketFilter=False):
378
379 acc = ComponentAccumulator()
380
381 acc.merge(EFMuSADataPrepViewDataVerifierCfg(flags, RoIs=RoIs, suffix=suffix))
382
383 msMuonName = muNames.EFSAName
384 if 'FS' in suffix:
385 msMuonName = muNamesFS.EFSAName
386
387 if flags.Muon.usePhaseIIGeoSetup and flags.Muon.scheduleActsReco:
388
389
390 if flags.Muon.setupTruthAlgorithms:
391 from MuonObjectMarker.ObjectMarkerConfig import TruthMeasMarkerAlgCfg
392 acc.merge(TruthMeasMarkerAlgCfg(flags, name = f"TruthMeasMarkerAlg{suffix}"))
393 from MuonTruthAlgsR4.MuonTruthAlgsConfig import TruthHitAssociationCfg, RecoSegmentTruthAssocCfg, MuonToTruthAssocAlgCfg
394 acc.merge(TruthHitAssociationCfg(flags, useSDO=True, suffix=suffix))
395 acc.merge(RecoSegmentTruthAssocCfg(flags, name=f"MuonSegmentsFromR4TruthMatching{suffix}",
396 SegmentKey="MuonSegmentsFromR4"))
397 acc.merge(MuonToTruthAssocAlgCfg(flags, name=f'MuonToTruthMatchingAlg{suffix}'))
398
399
400 if useBucketFilter:
401 from MuonInference.InferenceConfig import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
402 bucketTool = acc.popToolsAndMerge(GraphBucketFilterToolCfg(flags, name=f"GraphBucketFilterTool{suffix}",
403 WriteSpacePointKey=f"FilteredMlBuckets{suffix}"))
404 acc.merge(GraphInferenceAlgCfg(flags, name = f"GraphInferenceAlg{suffix}",
405 InferenceTools=[bucketTool]))
406
407
408 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig import MuonEtaHoughTransformAlgCfg, MuonNSWSegmentFinderAlgCfg, MuonPhiHoughTransformAlgCfg, MuonSegmentFittingAlgCfg
409 segmentContainers = []
410 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
411 segmentContainers+=["MuonNswSegments"]
412 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name=f"MuonNswEtaHoughTransformAlg{suffix}",
413 EtaHoughMaxContainer = "MuonHoughNswMaxima",
414 SpacePointContainer = "NswSpacePoints"))
415 acc.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f"MuonNswSegmentFinderAlg{suffix}",
416 MuonNswSegmentWriteKey = segmentContainers[-1],
417 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
418 CombinatorialReadKey = "MuonHoughNswMaxima"))
419
420 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
421 if flags.Muon.enableMLBucketFilter:
422 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}",
423 SpacePointContainer = "FilteredMlBuckets"))
424 else:
425 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}"))
426
427 acc.merge(MuonPhiHoughTransformAlgCfg(flags, name = f"MuonPhiHoughTransformAlg{suffix}"))
428
429 segmentContainers+=["R4MuonSegments"]
430 acc.merge(MuonSegmentFittingAlgCfg(flags, name = f"MuonSegmentFittingAlg{suffix}",
431 OutSegmentContainer=segmentContainers[-1]))
432
433 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
434 acc.merge(xAODSegmentCnvAlgCfg(flags, name = f"MuonR4xAODSegmentCnvAlg{suffix}",
435 InSegmentKeys = segmentContainers))
436
437 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
438 acc.merge(MuonR4SegmentCnvAlgCfg(flags, name=f"MuonR4SegmentCnvAlg{suffix}",
439 ReadSegments = segmentContainers,
440 WriteKey="TrackMuonSegments"))
441
442
443 from MuonTrackFindingAlgs.TrackFindingConfig import MSTrackFinderAlgCfg, StandaloneTrackPartCnvCfg, MuidSaTagMakerAlgCfg, MuonCreatorAlgCfg
444 acc.merge(MSTrackFinderAlgCfg(flags, name=f"MSTrackFinderAlg{suffix}"))
445 trackContainer = f"HLT_MSMuons_{suffix}"
446 acc.merge(StandaloneTrackPartCnvCfg(flags, name=f"MuonMsTrackParticleCnvR4{suffix}",
447 TrackParticlesOutKey = trackContainer))
448 acc.merge(MuidSaTagMakerAlgCfg(flags, name=f"MuidSaTagMakerAlg{suffix}",
449 MsTracks = trackContainer))
450 acc.merge(MuonCreatorAlgCfg(flags, name = f"MuonActsCreatorAlg{suffix}",
451 TagKeys = ["MuonTagsSA"],
452 MuonKey = msMuonName))
453
454 else:
455 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
456 acc.merge(MuonLayerHoughAlgCfg(flags, f"TrigMuonLayerHoughAlg{suffix}"))
457 acc.merge(MuonSegmentFinderAlgCfg(flags, f"TrigMuonSegmentMaker{suffix}"))
458
459 from MuonSegmentTrackMaker.MuonTrackMakerAlgsMonitoring import MuPatTrackBuilderMonitoring
460 from MuonConfig.MuonTrackBuildingConfig import MuPatTrackBuilderCfg
461 from xAODTrackingCnv.xAODTrackingCnvConfig import MuonStandaloneTrackParticleCnvAlgCfg
462 acc.merge(MuPatTrackBuilderCfg(flags, name=f"TrigMuPatTrackBuilder{suffix}",
463 MuonSegmentCollection = "TrackMuonSegments",
464 MonTool = MuPatTrackBuilderMonitoring(flags, f"MuPatTrackBuilderMonitoringSA{suffix}")))
465
466 acc.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags, name = f"TrigMuonStandaloneTrackParticleCnvAlg{suffix}"))
467 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg, MuonCreatorAlgCfg
468 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring import MuonCreatorAlgMonitoring
469 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name=f"TrigMuonCandidateAlg{suffix}"))
470 acc.merge(MuonCreatorAlgCfg(flags, name=f"TrigMuonCreatorAlg_{suffix}",
471 CreateSAmuons=True,
472 TagMaps=[],
473 MuonContainerLocation=msMuonName,
474 ExtrapolatedLocation = f"HLT_MSExtrapolatedMuons_{suffix}",
475 MSOnlyExtrapolatedLocation = f"HLT_MSOnlyExtrapolatedMuons_{suffix}",
476 MonTool = MuonCreatorAlgMonitoring(flags, f"MuonCreatorAlgSA_{suffix}")))
477
478 sequenceOut = msMuonName
479
480 return acc, sequenceOut
481
482
483