367def muEFSARecoSequenceCfg( flags, RoIs, name, useBucketFilter=False):
368
369 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring import MuonCreatorAlgMonitoring
370 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
371 from MuonConfig.MuonTrackBuildingConfig import MuPatTrackBuilderCfg
372 from xAODTrackingCnv.xAODTrackingCnvConfig import MuonStandaloneTrackParticleCnvAlgCfg
373 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg, MuonCreatorAlgCfg
374
375 acc = ComponentAccumulator()
376
377 acc.merge(EFMuSADataPrepViewDataVerifierCfg(flags, RoIs, name))
378
379 if flags.Muon.usePhaseIIGeoSetup and flags.Muon.scheduleActsReco:
380
381
382 if flags.Muon.setupTruthAlgorithms:
383 from MuonObjectMarker.ObjectMarkerConfig import TruthMeasMarkerAlgCfg
384 acc.merge(TruthMeasMarkerAlgCfg(flags, name = f"TruthMeasMarkerAlg{name}"))
385 from MuonTruthAlgsR4.MuonTruthAlgsConfig import TruthHitAssociationCfg, RecoSegmentTruthAssocCfg
386 acc.merge(TruthHitAssociationCfg(flags, useSDO=True, suffix=f'_{name}'))
387 acc.merge(RecoSegmentTruthAssocCfg(flags, name=f"MuonSegmentsFromR4TruthMatching{name}",
388 SegmentKey="MuonSegmentsFromR4"))
389
390
391 from MuonSpacePointFormation.SpacePointFormationConfig import MuonSpacePointFormationCfg
392 acc.merge( MuonSpacePointFormationCfg( flags, suffix =f'_{name}' ) )
393
394 if useBucketFilter:
395 from MuonInference.InferenceConfig import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
396 bucketTool = acc.popToolsAndMerge(GraphBucketFilterToolCfg(flags, name=f"GraphBucketFilterTool_{name}",
397 WriteSpacePointKey=f"FilteredMlBuckets_{name}"))
398 acc.merge(GraphInferenceAlgCfg(flags, name = f"GraphInferenceAlg_{name}",
399 InferenceTools=[bucketTool]))
400
401
402 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig import MuonEtaHoughTransformAlgCfg, MuonNSWSegmentFinderAlgCfg, MuonPhiHoughTransformAlgCfg, MuonSegmentFittingAlgCfg
403 segmentContainers = []
404 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
405 segmentContainers+=["MuonNswSegments"]
406 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name=f"MuonNswEtaHoughTransformAlg_{name}",
407 EtaHoughMaxContainer = "MuonHoughNswMaxima",
408 SpacePointContainer = "NswSpacePoints"))
409 acc.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f"MuonNswSegmentFinderAlg_{name}",
410 MuonNswSegmentWriteKey = segmentContainers[-1],
411 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
412 CombinatorialReadKey = "MuonHoughNswMaxima"))
413
414 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
415 if flags.Muon.enableMLBucketFilter:
416 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg_{name}",
417 SpacePointContainer = "FilteredMlBuckets"))
418 else:
419 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg_{name}"))
420 acc.merge(MuonPhiHoughTransformAlgCfg(flags, name = f"MuonPhiHoughTransformAlg_{name}"))
421
422 segmentContainers+=["R4MuonSegments"]
423 acc.merge(MuonSegmentFittingAlgCfg(flags, name = f"MuonSegmentFittingAlg_{name}",
424 OutSegmentContainer=segmentContainers[-1]))
425
426 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
427 acc.merge(xAODSegmentCnvAlgCfg(flags, name = f"MuonR4xAODSegmentCnvAlg_{name}",
428 InSegmentKeys = segmentContainers))
429
430 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
431 acc.merge(MuonR4SegmentCnvAlgCfg(flags, name=f"MuonR4SegmentCnvAlg_{name}",
432 ReadSegments = segmentContainers,
433 WriteKey="TrackMuonSegments"))
434 else:
435 acc.merge(MuonLayerHoughAlgCfg(flags, "TrigMuonLayerHoughAlg"))
436 acc.merge(MuonSegmentFinderAlgCfg(flags, "TrigMuonSegmentMaker_"+name))
437
438 from MuonSegmentTrackMaker.MuonTrackMakerAlgsMonitoring import MuPatTrackBuilderMonitoring
439 acc.merge(MuPatTrackBuilderCfg(flags, name="TrigMuPatTrackBuilder_"+name ,MuonSegmentCollection = "TrackMuonSegments", MonTool = MuPatTrackBuilderMonitoring(flags, "MuPatTrackBuilderMonitoringSA_"+name)))
440
441 acc.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags, name = "TrigMuonStandaloneTrackParticleCnvAlg_"+name))
442 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name="TrigMuonCandidateAlg_"+name))
443
444 msMuonName = muNames.EFSAName
445 if 'FS' in name:
446 msMuonName = muNamesFS.EFSAName
447
448 acc.merge(MuonCreatorAlgCfg(flags, name="TrigMuonCreatorAlg_"+name, CreateSAmuons=True, TagMaps=[], MuonContainerLocation=msMuonName,
449 ExtrapolatedLocation = "HLT_MSExtrapolatedMuons_"+name, MSOnlyExtrapolatedLocation = "HLT_MSOnlyExtrapolatedMuons_"+name,
450 MonTool = MuonCreatorAlgMonitoring(flags, "MuonCreatorAlgSA_"+name)))
451
452 sequenceOut = msMuonName
453
454 return acc, sequenceOut
455
456
457