97def SegmentEdgeInferenceAlgCfg(flags, name="SegmentEdgeInferenceAlg", **kwargs):
98 result = ComponentAccumulator()
99
100
101
102 edge_tool_kwargs = {}
103 if "EdgeModelPath" in kwargs:
104 edge_tool_kwargs["ModelPath"] = kwargs.pop("EdgeModelPath")
105
106 if isinstance(kwargs.get("EdgeClassifierTool"), dict):
107 edge_tool_kwargs.update(kwargs.pop("EdgeClassifierTool"))
108
109 candidate_builder_kwargs = {}
110 for key in ("EdgeThreshold",
111 "OverlapThreshold",
112 "UseRecoveryComponents",
113 "SymmetrizeDirectedEdges",
114 "AddAllSegmentsRecoveryCandidate",
115 "KeepIsolatedSegments",
116 "MinCandidateSize"):
117 if key in kwargs:
118 candidate_builder_kwargs[key] = kwargs.pop(key)
119
120 if isinstance(kwargs.get("CandidateBuilderTool"), dict):
121 candidate_builder_kwargs.update(kwargs.pop("CandidateBuilderTool"))
122
123 if "EdgeClassifierTool" not in kwargs:
124 kwargs["EdgeClassifierTool"] = result.popToolsAndMerge(
125 SegmentEdgeClassifierToolCfg(flags, **edge_tool_kwargs))
126 kwargs.setdefault("CandidateBuilderTool", result.popToolsAndMerge(
127 SegmentTrackCandidateBuilderToolCfg(flags, **candidate_builder_kwargs)))
128 kwargs.setdefault("SegmentKey", "MuonSegmentsFromR4")
129 kwargs.setdefault("CandidateDecoration", "MuonSegmentsFromR4.trackCandidateIds")
130 alg = CompFactory.MuonML.SegmentEdgeInferenceAlg(name=name, **kwargs)
131 result.addEventAlgo(alg, primary=True)
132 return result