9 from MuonGeoModelTestR4.testGeoModel
import setupGeoR4TestCfg
10 from MuonConfig.MuonConfigUtils
import executeTest, setupHistSvcCfg
11 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
12 flags = initConfigFlags()
13 flags.PerfMon.doFullMonMT =
not args.noPerfMon
14 flags.PerfMon.OutputJSON =
"perfmonmt_MuonR4Reco.json"
15 flags.Trigger.Muon.useNewRegionSelector =
False
17 run_edge_classifier =
not args.skip_onnx
18 run_ml_seeder = args.useMlSeeder
and run_edge_classifier
19 filter_segment_container = args.filterSegmentsWithoutMlConnections
and run_edge_classifier
20 filtered_segment_key =
"MsSegmentsMlConnected"
22 if args.skip_onnx
and args.useMlSeeder:
23 print(
"INFO: --skip-onnx requested. Switching to the standard seeder for the non-ONNX baseline.")
26 flags.Exec.DebugMessageComponents = [
27 "SegmentEdgeInferenceAlg",
28 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool",
29 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool.OnnxRuntimeSessionToolCPU",
30 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool.OnnxRuntimeSessionToolCUDA",
31 "MSTrackFinderAlg.MlMsTrackSeeder",
34 from AthOnnxComps.OnnxRuntimeFlags
import OnnxRuntimeType
35 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CUDA
if run_edge_classifier
else OnnxRuntimeType.CPU
37 flags, cfg = setupGeoR4TestCfg(args, flags)
39 if not args.skipTrackTester:
40 cfg.merge(setupHistSvcCfg(flags, outFile=args.outRootFile,
41 outStream=
"MuonTrackTester"))
43 output_level = 1
if args.athenaDebug
else 3
45 from MuonConfig.ReconstructionConfigR4
import MuonReconstructionConfig
48 if run_edge_classifier:
49 if args.truthDiagnostics
and not flags.Input.isMC:
50 print(
"WARNING: --truthDiagnostics requested on non-MC input.")
51 from MuonInference.InferenceConfig
import SegmentEdgeInferenceAlgCfg
52 edge_inference_kwargs = {
53 "EdgeClassifierTool": {
54 "ModelPath": args.edgeModel,
55 "ReadSpacePoints":
"MuonSpacePoints",
57 "MaxSegmentsPerBucket": args.maxSegmentsPerBucket,
58 "MaxEdgesPerNodeBeforeInference": 6,
59 "MaxEdgesPerTargetChamberBeforeInference": args.maxEdgesPerTargetChamber,
60 "EnableTruthDiagnostics": args.truthDiagnostics,
62 "PairGateDecoration":
"MsSegments.mlTrackComponent",
63 "PairGateThreshold": args.edgeThreshold,
64 "MaxEdgesPerNodePerLayer": args.maxEdgesPerLayer,
66 "SeedAnchorsPerComponent": 1,
67 "AnchorInnermostLayer":
True,
68 "KeepBestSegmentPerChamber":
not args.keepAllSegmentsPerChamber,
69 "OutputLevel": output_level,
71 if filter_segment_container:
72 edge_inference_kwargs[
"FilteredSegmentKey"] = filtered_segment_key
73 cfg.merge(SegmentEdgeInferenceAlgCfg(flags, **edge_inference_kwargs))
75 ms_track_finder = cfg.getEventAlgo(
"MSTrackFinderAlg")
76 ms_track_finder.OutputLevel = 3
78 from MuonTrackFindingAlgs.TrackFindingConfig
import MsTrackSeedingToolCfg, SegmentSelectorCfg
79 from AthenaConfiguration.ComponentFactory
import CompFactory
80 baseline_seeder = cfg.popToolsAndMerge(MsTrackSeedingToolCfg(flags))
81 ms_track_finder.SeedingTool = CompFactory.MuonR4.MlMsTrackSeeder(
83 BaselineSeeder=baseline_seeder,
84 SegmentContainer=
"MsSegments",
85 CandidateDecoration=
"mlTrackComponent",
86 SegmentSelectionTool=cfg.popToolsAndMerge(SegmentSelectorCfg(flags)),
87 TwoSegmentMinComponentScore=args.mlTwoSegMinScore,
88 ExtraClusterSeeds=args.mlExtraClusterSeeds,
89 ExtraClusterMinScore=args.mlExtraClusterMinScore,
90 InnerPointingMaxDeg=args.mlInnerPointingMaxDeg,
91 InnerRescueWindow=args.mlInnerRescueWindow,
92 InnerRescueMaxDeg=args.mlInnerRescueMaxDeg,
93 VariantSeeds=args.mlVariantSeeds,
94 VariantMinLayers=args.mlVariantMinLayers,
95 VariantMaxPointingDeg=args.mlVariantMaxPointingDeg,
96 VariantMinScore=args.mlVariantMinScore,
97 EnableTruthDiagnostics=args.truthDiagnostics
and flags.Input.isMC,
98 OutputLevel=2
if args.athenaDebug
else 3,
100 elif filter_segment_container:
101 ms_track_finder.SeedingTool.SegmentContainer = filtered_segment_key
103 if not args.skipTrackTester:
104 from MuonTrackFindingTest.MsTrackFindingTester
import MsTrackTesterCfg
105 cfg.merge(MsTrackTesterCfg(flags, scheduleLegacy=
False, outFile=args.outRootFile))
107 cfg.printConfig(withDetails=
True, summariseProps=
True)