3if __name__==
"__main__":
5 from MuonGeoModelTestR4.testGeoModel
import setupGeoR4TestCfg, SetupArgParser, MuonPhaseIITestDefaults
6 from MuonConfig.MuonConfigUtils
import executeTest,setupHistSvcCfg
7 parser = SetupArgParser()
8 parser.set_defaults(nEvents = -1)
9 parser.set_defaults(noMM=
True)
10 parser.set_defaults(noSTGC=
True)
11 parser.set_defaults(outRootFile=
"RecoChainTester.root")
12 parser.set_defaults(inputFile=MuonPhaseIITestDefaults.HITS_PG_R3)
14 parser.add_argument(
"--monitorPlots", action=
'store_true', default=
False,
15 help=
"Setup monitoring plots of the pattern recognition")
16 parser.add_argument(
"--runVtune",
17 help=
"runs VTune profiler service for the muon hough alg", action=
'store_true', default =
False)
18 parser.add_argument(
"--noPerfMon", help=
"If set to true, full perfmonMT is enabled",
19 default=
False, action=
'store_true')
20 parser.add_argument(
"--houghR4", help=
"Schedules the R4 pattern -> legacy segment -> legacy track chain",
21 action=
"store_true", default =
False)
22 parser.add_argument(
"--use-gpu", action=
"store_true", default=
True,
23 help=
"Use GPU for ONNX inference (default: True)")
24 parser.add_argument(
"--use-cpu", dest=
"use_gpu", action=
"store_false",
25 help=
"Use CPU for ONNX inference")
26 parser.add_argument(
"--skip-onnx", action=
"store_true", default=
False,
27 help=
"Skip ONNX inference step")
29 args = parser.parse_args()
31 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
32 flags = initConfigFlags()
33 flags.PerfMon.doFullMonMT =
not args.noPerfMon
34 flags.PerfMon.OutputJSON=
"perfmonmt_MuonR4Reco.json"
36 from AthOnnxComps.OnnxRuntimeFlags
import OnnxRuntimeType
38 use_gpu_requested = getattr(args,
"use_gpu",
True)
43 import onnxruntime
as ort
44 gpu_available =
"CUDAExecutionProvider" in ort.get_available_providers()
48 gpu_available = torch.cuda.is_available()
51 if use_gpu_requested
and gpu_available:
52 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CUDA
54 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CPU
56 flags, cfg = setupGeoR4TestCfg(args,flags)
58 cfg.merge(setupHistSvcCfg(flags,outFile=args.outRootFile,
59 outStream=
"MuonEtaHoughTransformTest"))
61 from MuonConfig.MuonDataPrepConfig
import xAODUncalibMeasPrepCfg
62 cfg.merge(xAODUncalibMeasPrepCfg(flags))
64 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
65 cfg.merge(MuonSpacePointFormationCfg(flags))
68 from MuonPatternRecognitionTest.PatternTestConfig
import LegacyMuonRecoChainCfg
69 cfg.merge(LegacyMuonRecoChainCfg(flags))
71 if not args.skip_onnx:
73 from MuonInference.InferenceConfig
import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
74 bucketTool = cfg.popToolsAndMerge(
75 GraphBucketFilterToolCfg(
82 InferenceTools=[bucketTool],
87 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig
import MuonPatternRecognitionCfg
88 cfg.merge(MuonPatternRecognitionCfg(flags))
90 if not args.skip_onnx:
91 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").SpacePointContainer =
"FilteredMlBuckets"
93 from MuonPatternRecognitionTest.PatternTestConfig
import MuonR4PatternRecoChainCfg, MuonR4SegmentRecoChainCfg
95 cfg.merge(MuonR4PatternRecoChainCfg(flags))
98 cfg.merge(MuonR4SegmentRecoChainCfg(flags))
100 from MuonPatternRecognitionTest.PatternTestConfig
import TrackTruthMatchCfg
101 cfg.merge(TrackTruthMatchCfg(flags, setupHoughR4 = args.houghR4))
104 from MuonPatternRecognitionTest.PatternTestConfig
import MuonRecoChainTesterCfg
105 cfg.merge(MuonRecoChainTesterCfg(flags,
106 SegmentFromR4HoughKey =
"MuonSegmentsFromHoughR4" if args.houghR4
else "" ))
109 from PerfMonVTune.PerfMonVTuneConfig
import VTuneProfilerServiceCfg
110 cfg.merge(VTuneProfilerServiceCfg(flags, ProfiledAlgs=[
"MuonHoughTransformAlg"]))
112 if args.monitorPlots:
113 from MuonPatternRecognitionTest.PatternTestConfig
import PatternVisualizationToolCfg
114 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
115 CanvasPreFix=
"EtaHoughPlotValid",
116 AllCanvasName=
"AllEtaHoughiDiPuffPlots", doPhiBucketViews =
False,
117 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
118 cfg.getEventAlgo(
"MuonPhiHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
119 CanvasPreFix=
"PhiHoughPlotValid",
120 AllCanvasName=
"AllPhiHoughiDiPuffPlots",doEtaBucketViews =
False,
121 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
122 cfg.getEventAlgo(
"MuonSegmentFittingAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
123 CanvasPreFix=
"SegmentPlotValid",
124 AllCanvasName=
"AllSegmentFitPlots", doPhiBucketViews =
False,
125 displayTruthOnly =
True, saveSinglePDFs =
True, saveSummaryPDF=
False))