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(
"--use-gpu", action=
"store_true", default=
True,
21 help=
"Use GPU for ONNX inference (default: True)")
22 parser.add_argument(
"--use-cpu", dest=
"use_gpu", action=
"store_false",
23 help=
"Use CPU for ONNX inference")
24 parser.add_argument(
"--skip_bucket_filter", action=
"store_true", default=
False,
25 help=
"Skip the bucket filter inference step (default: False)")
27 args = parser.parse_args()
29 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
30 flags = initConfigFlags()
31 flags.PerfMon.doFullMonMT =
not args.noPerfMon
32 flags.PerfMon.OutputJSON=
"perfmonmt_MuonR4Reco.json"
34 from AthOnnxComps.OnnxRuntimeFlags
import OnnxRuntimeType
36 use_gpu_requested = getattr(args,
"use_gpu",
True)
41 import onnxruntime
as ort
42 gpu_available =
"CUDAExecutionProvider" in ort.get_available_providers()
46 gpu_available = torch.cuda.is_available()
49 if use_gpu_requested
and gpu_available:
50 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CUDA
52 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CPU
54 flags, cfg = setupGeoR4TestCfg(args,flags)
57 cfg.merge(setupHistSvcCfg(flags,outFile=args.outRootFile,
58 outStream=
"MuonEtaHoughTransformTest"))
60 from MuonConfig.MuonDataPrepConfig
import xAODUncalibMeasPrepCfg
61 cfg.merge(xAODUncalibMeasPrepCfg(flags))
63 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
64 cfg.merge(MuonSpacePointFormationCfg(flags))
73 from MuonInference.InferenceConfig
import (
74 GraphBucketFilterToolCfg,
79 if not args.skip_bucket_filter:
80 bucketTool = cfg.popToolsAndMerge(
81 GraphBucketFilterToolCfg(
83 ReadSpacePoints=
"MuonSpacePoints",
84 WriteSpacePointKey=
"FilteredMlBuckets",
90 name=
"GraphInferenceAlgBuckets",
91 InferenceTools=[bucketTool],
95 sp_input_container =
"FilteredMlBuckets"
98 sp_input_container =
"MuonSpacePoints"
101 spTool = cfg.popToolsAndMerge(
102 GraphSPFilterToolCfg(
104 ReadSpacePoints=sp_input_container,
105 WriteSpacePointKey=
"FilteredMlSpacePoints",
110 GraphInferenceAlgCfg(
112 name=
"GraphInferenceAlgSP",
113 InferenceTools=[spTool],
118 from MuonPatternRecognitionTest.PatternTestConfig
import LegacyMuonRecoChainCfg
119 cfg.merge(LegacyMuonRecoChainCfg(flags))
122 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig
import MuonPatternRecognitionCfg
123 cfg.merge(MuonPatternRecognitionCfg(flags))
125 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").SpacePointContainer =
"FilteredMlSpacePoints"
128 from MuonPatternRecognitionTest.PatternTestConfig
import MuonR4PatternRecoChainCfg, MuonR4SegmentRecoChainCfg
129 cfg.merge(MuonR4PatternRecoChainCfg(flags))
132 cfg.merge(MuonR4SegmentRecoChainCfg(flags))
134 from MuonPatternRecognitionTest.PatternTestConfig
import TrackTruthMatchCfg
135 cfg.merge(TrackTruthMatchCfg(flags))
137 from MuonPatternRecognitionTest.PatternTestConfig
import MuonRecoChainTesterCfg
138 cfg.merge(MuonRecoChainTesterCfg(flags))
140 from PerfMonVTune.PerfMonVTuneConfig
import VTuneProfilerServiceCfg
141 cfg.merge(VTuneProfilerServiceCfg(flags, ProfiledAlgs=[
"MuonHoughTransformAlg"]))
143 if args.monitorPlots:
144 from MuonPatternRecognitionTest.PatternTestConfig
import PatternVisualizationToolCfg
145 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
146 CanvasPreFix=
"EtaHoughPlotValid",
147 AllCanvasName=
"AllEtaHoughiDiPuffPlots", doPhiBucketViews =
False,
148 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
149 cfg.getEventAlgo(
"MuonPhiHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
150 CanvasPreFix=
"PhiHoughPlotValid",
151 AllCanvasName=
"AllPhiHoughiDiPuffPlots",doEtaBucketViews =
False,
152 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
153 cfg.getEventAlgo(
"MuonSegmentFittingAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
154 CanvasPreFix=
"SegmentPlotValid",
155 AllCanvasName=
"AllSegmentFitPlots", doPhiBucketViews =
False,
156 displayTruthOnly =
True, saveSinglePDFs =
True, saveSummaryPDF=
False))