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
16
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"
21
22 if args.skip_onnx and args.useMlSeeder:
23 print(
"INFO: --skip-onnx requested. Switching to the standard seeder for the non-ONNX baseline.")
24
25 if args.athenaDebug:
26 flags.Exec.DebugMessageComponents = [
27 "SegmentEdgeInferenceAlg",
28 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool",
29 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool.OnnxRuntimeSessionToolCPU",
30 "SegmentEdgeInferenceAlg.SegmentEdgeClassifierTool.OnnxRuntimeSessionToolCUDA",
31 "MSTrackFinderAlg.MlMsTrackSeeder",
32 ]
33
34 from AthOnnxComps.OnnxRuntimeFlags import OnnxRuntimeType
35 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CUDA if run_edge_classifier else OnnxRuntimeType.CPU
36
37 flags, cfg = setupGeoR4TestCfg(args, flags)
38
39 if not args.skipTrackTester:
40 cfg.merge(setupHistSvcCfg(flags, outFile=args.outRootFile,
41 outStream="MuonTrackTester"))
42
43 output_level = 1 if args.athenaDebug else 3
44
45 from MuonConfig.ReconstructionConfigR4 import MuonReconstructionConfig
47
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",
56
57 "MaxSegmentsPerBucket": args.maxSegmentsPerBucket,
58 "MaxEdgesPerNodeBeforeInference": 6,
59 "MaxEdgesPerTargetChamberBeforeInference": args.maxEdgesPerTargetChamber,
60 "EnableTruthDiagnostics": args.truthDiagnostics,
61 },
62 "PairGateDecoration": "MsSegments.mlTrackComponent",
63 "PairGateThreshold": args.edgeThreshold,
64 "MaxEdgesPerNodePerLayer": args.maxEdgesPerLayer,
65
66 "SeedAnchorsPerComponent": 1,
67 "AnchorInnermostLayer": True,
68 "KeepBestSegmentPerChamber": not args.keepAllSegmentsPerChamber,
69 "OutputLevel": output_level,
70 }
71 if filter_segment_container:
72 edge_inference_kwargs["FilteredSegmentKey"] = filtered_segment_key
73 cfg.merge(SegmentEdgeInferenceAlgCfg(flags, **edge_inference_kwargs))
74
75 ms_track_finder = cfg.getEventAlgo("MSTrackFinderAlg")
76 ms_track_finder.OutputLevel = 3
77 if run_ml_seeder:
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(
82 "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,
99 )
100 elif filter_segment_container:
101 ms_track_finder.SeedingTool.SegmentContainer = filtered_segment_key
102
103 if not args.skipTrackTester:
104 from MuonTrackFindingTest.MsTrackFindingTester import MsTrackTesterCfg
105 cfg.merge(MsTrackTesterCfg(flags, scheduleLegacy=False, outFile=args.outRootFile))
106
107 cfg.printConfig(withDetails=True, summariseProps=True)
108 executeTest(cfg)
109
110
void print(char *figname, TCanvas *c1)