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-cpu", action=
"store_true", default=
False,
21 help=
"Use CPU for ONNX inference")
22 parser.add_argument(
"--skip_bucket_filter", action=
"store_true", default=
False,
23 help=
"Skip the bucket filter inference step (default: False)")
25 args = parser.parse_args()
27 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
28 flags = initConfigFlags()
29 flags.PerfMon.doFullMonMT =
not args.noPerfMon
30 flags.PerfMon.OutputJSON=
"perfmonmt_MuonR4Reco.json"
32 from AthOnnxComps.OnnxRuntimeFlags
import OnnxRuntimeType
33 use_gpu_requested =
not args.use_cpu
38 import onnxruntime
as ort
39 gpu_available =
"CUDAExecutionProvider" in ort.get_available_providers()
43 gpu_available = torch.cuda.is_available()
46 if use_gpu_requested
and gpu_available:
47 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CUDA
49 flags.AthOnnx.ExecutionProvider = OnnxRuntimeType.CPU
51 flags, cfg = setupGeoR4TestCfg(args,flags)
54 cfg.merge(setupHistSvcCfg(flags,outFile=args.outRootFile,
55 outStream=
"MuonEtaHoughTransformTest"))
57 from MuonConfig.MuonDataPrepConfig
import xAODUncalibMeasPrepCfg
58 cfg.merge(xAODUncalibMeasPrepCfg(flags))
60 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
61 cfg.merge(MuonSpacePointFormationCfg(flags))
70 from MuonInference.InferenceConfig
import (
71 GraphBucketFilterToolCfg,
76 if not args.skip_bucket_filter:
77 bucketTool = cfg.popToolsAndMerge(
78 GraphBucketFilterToolCfg(
80 ReadSpacePoints=
"MuonSpacePoints",
81 WriteSpacePointKey=
"FilteredMlBuckets",
87 name=
"GraphInferenceAlgBuckets",
88 InferenceTools=[bucketTool],
92 sp_input_container =
"FilteredMlBuckets"
95 sp_input_container =
"MuonSpacePoints"
98 spTool = cfg.popToolsAndMerge(
101 ReadSpacePoints=sp_input_container,
102 WriteSpacePointKey=
"FilteredMlSpacePoints",
107 GraphInferenceAlgCfg(
109 name=
"GraphInferenceAlgSP",
110 InferenceTools=[spTool],
115 from MuonPatternRecognitionTest.PatternTestConfig
import LegacyMuonRecoChainCfg
116 cfg.merge(LegacyMuonRecoChainCfg(flags))
119 from MuonConfig.ReconstructionConfigR4
import MuonReconstructionConfig
122 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").SpacePointContainer =
"FilteredMlSpacePoints"
125 from MuonPatternRecognitionTest.PatternTestConfig
import MuonR4PatternRecoChainCfg, MuonR4SegmentRecoChainCfg
126 cfg.merge(MuonR4PatternRecoChainCfg(flags))
129 cfg.merge(MuonR4SegmentRecoChainCfg(flags))
131 from MuonPatternRecognitionTest.PatternTestConfig
import TrackTruthMatchCfg
132 cfg.merge(TrackTruthMatchCfg(flags))
134 from MuonPatternRecognitionTest.PatternTestConfig
import MuonRecoChainTesterCfg
135 cfg.merge(MuonRecoChainTesterCfg(flags))
137 from PerfMonVTune.PerfMonVTuneConfig
import VTuneProfilerServiceCfg
138 cfg.merge(VTuneProfilerServiceCfg(flags, ProfiledAlgs=[
"MuonHoughTransformAlg"]))
140 if args.monitorPlots:
141 from MuonPatternRecognitionTest.PatternTestConfig
import PatternVisualizationToolCfg
142 cfg.getEventAlgo(
"MuonEtaHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
143 CanvasPreFix=
"EtaHoughPlotValid",
144 AllCanvasName=
"AllEtaHoughiDiPuffPlots", doPhiBucketViews =
False,
145 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
146 cfg.getEventAlgo(
"MuonPhiHoughTransformAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
147 CanvasPreFix=
"PhiHoughPlotValid",
148 AllCanvasName=
"AllPhiHoughiDiPuffPlots",doEtaBucketViews =
False,
149 displayTruthOnly =
True, saveSinglePDFs =
False, saveSummaryPDF=
False))
150 cfg.getEventAlgo(
"MuonSegmentFittingAlg").VisualizationTool = cfg.popToolsAndMerge(PatternVisualizationToolCfg(flags,
151 CanvasPreFix=
"SegmentPlotValid",
152 AllCanvasName=
"AllSegmentFitPlots", doPhiBucketViews =
False,
153 displayTruthOnly =
True, saveSinglePDFs =
True, saveSummaryPDF=
False))