ATLAS Offline Software
MuonTrackBuildingConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6 from TrkConfig.TrkGlobalChi2FitterConfig import MCTBFitterCfg, MCTBSLFitterCfg
7 from MuonConfig.MuonRecToolsConfig import MuonTrackCleanerCfg, MuonSegmentMomentumFromFieldCfg, MuonSeededSegmentFinderCfg, MuonEDMPrinterToolCfg
8 from AthenaConfiguration.Enums import BeamType
9 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentFittingToolCfg
10 
11 def MooTrackFitterCfg(flags, name = 'MooTrackFitter', prefix='', **kwargs):
12  # Based on https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L179
13  # (Tons of explicit configuration missing from there though)
14  Muon__MooTrackFitter=CompFactory.Muon.MooTrackFitter
15  MuonSegmentMomentum=CompFactory.MuonSegmentMomentum
16  from MuonConfig.MuonRecToolsConfig import MuonPhiHitSelectorCfg, MuonTrackToSegmentToolCfg, MuonTrackSummaryHelperToolCfg, MuPatHitToolCfg
17 
18  result = ComponentAccumulator()
19  mctb_fitter = result.getPrimaryAndMerge(MCTBFitterCfg(flags, name = prefix+'MCTBFitter'))
20  kwargs.setdefault("Fitter", mctb_fitter)
21 
22  mu_pat_hit_tool = result.popToolsAndMerge(MuPatHitToolCfg(flags))
23  result.addPublicTool(mu_pat_hit_tool)
24  kwargs.setdefault("HitTool", mu_pat_hit_tool)
25 
26  from TrkConfig.TrkExSTEP_PropagatorConfig import AtlasSTEP_PropagatorCfg
27  muon_prop = result.popToolsAndMerge(AtlasSTEP_PropagatorCfg(flags, name='MuonPropagator'))
28 
29  kwargs.setdefault("Propagator", muon_prop)
30  kwargs.setdefault("SLFit" , not (flags.BField.barrelToroidOn and flags.BField.endcapToroidOn) )
31  if flags.Muon.MuonTrigger:
32  kwargs.setdefault("SLFit", False)
33  kwargs.setdefault("ReducedChi2Cut", flags.Muon.Chi2NDofCut)
34 
35  momentum_estimator=""
36  if flags.Beam.Type is BeamType.Cosmics:
37  momentum_estimator = MuonSegmentMomentum(DoCosmics = True)
38  else:
39  momentum_estimator=result.popToolsAndMerge(MuonSegmentMomentumFromFieldCfg(flags))
40 
41  result.addPublicTool(momentum_estimator)
42  kwargs.setdefault("SegmentMomentum", momentum_estimator )
43 
44  kwargs.setdefault("MuonPrinterTool", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags) ))
45 
46  track_to_segment_tool = result.popToolsAndMerge(MuonTrackToSegmentToolCfg(flags))
47  kwargs.setdefault("TrackToSegmentTool", track_to_segment_tool)
48 
49  kwargs.setdefault("PhiHitSelector", result.popToolsAndMerge(MuonPhiHitSelectorCfg(flags)))
50  kwargs.setdefault("TrackCleaner", result.popToolsAndMerge(MuonTrackCleanerCfg(flags)))
51  kwargs.setdefault("SegmentInOverlapTool", result.popToolsAndMerge(MuonSegmentInOverlapResolvingToolCfg(flags)))
52 
53  # Leaving "SegmentInOverlapTool" as default, which is what happens in the current configuration.
54 
55  track_summary_helper = result.popToolsAndMerge(MuonTrackSummaryHelperToolCfg(flags))
56  kwargs.setdefault("TrackSummaryTool", track_summary_helper)
57 
58  kwargs.setdefault("CleanPhiHits", True)
59  kwargs.setdefault("UsePreciseHits", True)
60  kwargs.setdefault("UsePrefit", False)
61  kwargs.setdefault("SeedAtStartOfTrack", False)
62 
63  fitter = Muon__MooTrackFitter(prefix + name, **kwargs)
64  result.setPrivateTools(fitter)
65  return result
66 
67 @AccumulatorCache
68 def MooTrackBuilderCfg(flags, name="MooTrackBuilderTemplate", prefix="", doSegmentPhiMatching=True, **kwargs):
69  Muon__MooTrackBuilder=CompFactory.Muon.MooTrackBuilder
70  from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg, TriggerChamberClusterOnTrackCreatorCfg
71  from MuonConfig.MuonRecToolsConfig import MuonTrackToSegmentToolCfg, MuonTrackExtrapolationToolCfg
72  from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
73 
74  # Based on this: https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L221
75  # ignoring all the name_prefix stuff for the moment, since I'm not sure it's necessary any more.
76  result = ComponentAccumulator()
77  moo_track_fitter = result.popToolsAndMerge(MooTrackFitterCfg(flags, name='MooTrackFitter', prefix=prefix))
78  kwargs.setdefault("Fitter", moo_track_fitter)
79 
80  # Now setup SL fitter (MooSLTrackFitter as defined here:
81  # https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecExampleConfigDb.py#L203)
82  mctbslfitter = result.popToolsAndMerge(MCTBSLFitterCfg(flags, name=prefix+'MCTBSLFitter'))
83 
84  # Just take the default configuration, as per https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonRecExampleConfigDb.py#L56
85  from TrkConfig.TrkExSTEP_PropagatorConfig import AtlasSTEP_PropagatorCfg
86  muon_prop = result.popToolsAndMerge(AtlasSTEP_PropagatorCfg(flags, name = 'MuonStraightLinePropagator'))
87 
88  moo_sl_track_fitter = result.popToolsAndMerge(MooTrackFitterCfg( flags, name="MooSLTrackFitter", prefix=prefix, Fitter = mctbslfitter, Propagator=muon_prop, ReducedChi2Cut=10.0, SLFit=True))
89 
90  kwargs.setdefault("SLFitter", moo_sl_track_fitter)
91  kwargs.setdefault("RecalibrateMDTHitsOnTrack", ( (not flags.Muon.doSegmentT0Fit) and flags.Beam.Type is BeamType.Collisions) )
92 
93  muon_seeded_segment_finder = result.popToolsAndMerge(MuonSeededSegmentFinderCfg(flags))
94  kwargs.setdefault("SeededSegmentFinder", muon_seeded_segment_finder)
95 
96  mdt_dcot_creator = result.popToolsAndMerge(MdtDriftCircleOnTrackCreatorCfg(flags))
97  kwargs.setdefault("MdtRotCreator", mdt_dcot_creator)
98 
99  muon_comp_cluster_creator = result.popToolsAndMerge(TriggerChamberClusterOnTrackCreatorCfg(flags))
100  kwargs.setdefault("CompetingClustersCreator", muon_comp_cluster_creator)
101 
102  kwargs.setdefault("Propagator", muon_prop)
103  kwargs.setdefault("ChamberHoleRecoveryTool",
104  result.popToolsAndMerge(MuonChamberHoleRecoveryToolCfg(flags)))
105 
106  result.merge(AtlasFieldCacheCondAlgCfg(flags) )
107 
108  kwargs.setdefault("TrackToSegmentTool", result.popToolsAndMerge(MuonTrackToSegmentToolCfg(flags)))
109  kwargs.setdefault("Printer", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags)))
110  kwargs.setdefault('Extrapolator', result.popToolsAndMerge( MuonTrackExtrapolationToolCfg(flags) ) )
111 
112  # FIXME - remove ErrorOptimisationTool from cxx?
113  # declareProperty("ErrorOptimisationTool","" );Extrapolator
114  kwargs.setdefault("CandidateTool", result.popToolsAndMerge(MuPatCandidateToolCfg(flags)))
115 
116  kwargs.setdefault("CandidateMatchingTool",
117  result.popToolsAndMerge(MooCandidateMatchingToolCfg(flags, name = 'MooCandidateMatchingTool',
118  doSegmentPhiMatching=doSegmentPhiMatching, prefix=prefix)))
119 
120  from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
121  kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)))
122 
123  if "PullCalculator" not in kwargs:
124  from TrkConfig.TrkResidualPullCalculatorConfig import (
125  ResidualPullCalculatorCfg)
126  kwargs.setdefault("PullCalculator", result.popToolsAndMerge(
128 
129  result.setPrivateTools(Muon__MooTrackBuilder(name, **kwargs))
130  return result
131 
132 def MuonSegmentInOverlapResolvingToolCfg(flags, name="MuonSegmentInOverlapResolvingTool", **kwargs):
133  from MuonConfig.MuonRecToolsConfig import MuonEDMHelperSvcCfg
134  from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
135  result = ComponentAccumulator()
136  kwargs.setdefault("edmHelper", result.getPrimaryAndMerge(MuonEDMHelperSvcCfg(flags)) )
137  kwargs.setdefault("Printer", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags)) )
138  kwargs.setdefault("AtlasRungeKuttaPropagator", result.popToolsAndMerge(
139  RungeKuttaPropagatorCfg(flags)))
140 
141  if "ResidualPullCalculator" not in kwargs:
142  from TrkConfig.TrkResidualPullCalculatorConfig import (
143  ResidualPullCalculatorCfg)
144  kwargs.setdefault("ResidualPullCalculator", result.popToolsAndMerge(
146 
147  result.setPrivateTools(CompFactory.Muon.MuonSegmentInOverlapResolvingTool(name, **kwargs))
148  return result
149 
150 # Taken from https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L268
151 # Not bothering with MuonSegmentMatchingToolTight - just pass in TightSegmentMatching=True
152 def MuonSegmentMatchingToolCfg(flags, name="MuonSegmentMatchingTool", **kwargs):
153  Muon__MuonSegmentMatchingTool=CompFactory.Muon.MuonSegmentMatchingTool
154 
155  kwargs.setdefault( "doThetaMatching", flags.Muon.useSegmentMatching)
156  kwargs.setdefault( "doPhiMatching", False )
157  if flags.Beam.Type is BeamType.Cosmics:
158  kwargs.setdefault("OverlapMatchAveragePhiHitPullCut", 200.)
159  kwargs.setdefault( "ToroidOn", False ) # Was "not jobproperties.BField.allToroidOn()" but do not have access to Field here.
160 
161  # There are two tools which this depends on which aren't properties and which weren't defined in old configuration
162  # Ignore for now, but FIXME one day
163 
164  # m_pairMatchingTool("Muon::MuonSegmentPairMatchingTool/MuonSegmentPairMatchingTool"),
165  # Also, residual pull calculator not yet configured. #FIXME
166 
167  result = MuonEDMPrinterToolCfg(flags)
168  kwargs.setdefault("Printer", result.getPrimary() )
169  kwargs.setdefault("MuonSegmentInOverlapResolvingTool", result.popToolsAndMerge(
171  kwargs.setdefault("MuonSegmentPairMatchingTool", CompFactory.Muon.MuonSegmentPairMatchingTool('MuonSegmentPairMatchingTool'))
172 
173  matching = Muon__MuonSegmentMatchingTool(name, **kwargs)
174  result.setPrivateTools(matching)
175  return result
176 
177 def MooCandidateMatchingToolCfg(flags, name="MooCandidateMatchingTool", doSegmentPhiMatching=False, prefix="", **kwargs):
178  Muon__MooCandidateMatchingTool=CompFactory.Muon.MooCandidateMatchingTool
179  from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
180 
181  result = ComponentAccumulator()
182 
183  # Won't explicitly configure MuonEDMHelperSvc
184  kwargs.setdefault("MuonPrinterTool", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags) ))
185  kwargs.setdefault("Extrapolator", result.popToolsAndMerge(AtlasExtrapolatorCfg(flags)))
186 
187  acc = MuonSegmentMatchingToolCfg(flags, name=prefix+"MuonSegmentMatchingTool", doPhiMatching = doSegmentPhiMatching)
188  muon_seg_matching = acc.getPrimary()
189  result.merge(acc)
190  kwargs.setdefault("SegmentMatchingTool", muon_seg_matching)
191 
192  acc = MuonSegmentMatchingToolCfg(flags, name = prefix+"MuonSegmentMatchingToolTight", TightSegmentMatching=True, doPhiMatching = doSegmentPhiMatching)
193  muon_seg_matching_tight = acc.getPrimary()
194  result.merge(acc)
195  kwargs.setdefault("SegmentMatchingToolTight", muon_seg_matching_tight)
196 
197  kwargs.setdefault("DoTrackSegmentMatching", flags.Muon.useTrackSegmentMatching)
198  kwargs.setdefault("RequireSameSide", flags.Beam.Type is not BeamType.Collisions)
199  if flags.Muon.useAlignmentCorrections:
200  kwargs.setdefault("AlignmentErrorPosX", 5.0)
201  kwargs.setdefault("AlignmentErrorPosY", 0.2)
202  kwargs.setdefault("AlignmentErrorAngleX", 0.002)
203  kwargs.setdefault("AlignmentErrorAngleY", 0.001)
204 
205  else: # no alignment corrections
206  kwargs.setdefault("AlignmentErrorPosX", 10.0)
207  kwargs.setdefault("AlignmentErrorPosY", 5.0)
208  kwargs.setdefault("AlignmentErrorAngleX", 0.004)
209  kwargs.setdefault("AlignmentErrorAngleY", 0.002)
210 
211  kwargs.setdefault("MuPatCandidateTool", result.popToolsAndMerge(MuPatCandidateToolCfg(flags)))
212 
213  moo_cand_matching_tool = Muon__MooCandidateMatchingTool(prefix+name,**kwargs)
214  result.setPrivateTools(moo_cand_matching_tool)
215  return result
216 
217 def MuonSegmentRegionRecoveryToolCfg(flags, name="MuonSegmentRegionRecoveryTool", **kwargs):
218  Muon__MuonSegmentRegionRecoveryTool=CompFactory.Muon.MuonSegmentRegionRecoveryTool
219  from TrkConfig.AtlasExtrapolatorConfig import MuonExtrapolatorCfg
220  from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
221  from MuonConfig.MuonCondAlgConfig import MuonStationIntersectCondAlgCfg
222  from MuonCombinedConfig.MuonCombinedRecToolsConfig import CombinedMuonTrackBuilderFitCfg
223  from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
224 
225  # Based on https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MooreTools.py#L426
226 
227  result = ComponentAccumulator()
228  kwargs.setdefault("SeededSegmentFinder",
229  result.popToolsAndMerge(MuonSeededSegmentFinderCfg(flags)))
230 
231  kwargs.setdefault("TrackSegmentMatchingTool",
232  result.popToolsAndMerge(MooCandidateMatchingToolCfg(flags)))
233 
234  kwargs.setdefault("ChamberHoleRecoveryTool",
235  result.popToolsAndMerge(MuonChamberHoleRecoveryToolCfg(flags)))
236 
237  kwargs.setdefault("Extrapolator",
238  result.popToolsAndMerge(MuonExtrapolatorCfg(flags)))
239  if 'OnlyEO' in kwargs:
240  #MuonEORecoveryTool's CombinedMuonTrackBuilderFit apparently *should* have MuonHoleRecovery
241  kwargs.setdefault("Builder", result.popToolsAndMerge(
243  else:
244  kwargs.setdefault("Builder", result.popToolsAndMerge(
245  CombinedMuonTrackBuilderFitCfg(flags, MuonHoleRecovery= "")))
246 
247 
248  kwargs.setdefault("Fitter",
249  result.popToolsAndMerge(MCTBSLFitterCfg(flags, name='MCTBSLFitter')))
250  kwargs.setdefault("HitSummaryTool", result.popToolsAndMerge( MuonHitSummaryToolCfg(flags)))
251  kwargs.setdefault("EDMPrinter", result.getPrimaryAndMerge(
252  MuonEDMPrinterToolCfg(flags)))
253  result.merge( MuonStationIntersectCondAlgCfg(flags))
254 
255  # Not bothering to handle IDHelper or EDMHelper. Default is okay.
256 
257  from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg, regSelTool_RPC_Cfg, regSelTool_TGC_Cfg
258  acc = regSelTool_MDT_Cfg(flags)
259  kwargs.setdefault("MDTRegionSelector", acc.popPrivateTools())
260  result.merge(acc)
261 
262  acc = regSelTool_TGC_Cfg(flags)
263  kwargs.setdefault("TGCRegionSelector", acc.popPrivateTools())
264  result.merge(acc)
265 
266  acc = regSelTool_RPC_Cfg(flags)
267  kwargs.setdefault("RPCRegionSelector", acc.popPrivateTools())
268  result.merge(acc)
269 
270  if flags.Detector.GeometryCSC:
271  from RegionSelector.RegSelToolConfig import regSelTool_CSC_Cfg
272  acc = regSelTool_CSC_Cfg(flags)
273  kwargs.setdefault("CSCRegionSelector", acc.popPrivateTools())
274  result.merge(acc)
275  else:
276  kwargs.setdefault("CSCRegionSelector", "")
277 
278  if flags.Detector.GeometrysTGC:
279  from RegionSelector.RegSelToolConfig import regSelTool_STGC_Cfg
280  acc = regSelTool_STGC_Cfg(flags)
281  kwargs.setdefault("STGCRegionSelector", acc.popPrivateTools())
282  result.merge(acc)
283  else:
284  kwargs.setdefault("STGCRegionSelector", "")
285 
286  if flags.Detector.GeometryMM:
287  from RegionSelector.RegSelToolConfig import regSelTool_MM_Cfg
288  acc = regSelTool_MM_Cfg(flags)
289  kwargs.setdefault("MMRegionSelector", acc.popPrivateTools())
290  result.merge(acc)
291  else:
292  kwargs.setdefault("MMRegionSelector", "")
293 
294  if "TrackSummaryTool" not in kwargs:
295  kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)))
296 
297  segment_region_recovery_tool = Muon__MuonSegmentRegionRecoveryTool(name, **kwargs)
298  result.setPrivateTools(segment_region_recovery_tool)
299  return result
300 
301 def MuPatCandidateToolCfg(flags, name="MuPatCandidateTool", **kwargs):
302  # https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuPatTools.py#L32
303 
304  from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg, TriggerChamberClusterOnTrackCreatorCfg
305  from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonSegmentSelectionToolCfg
306  result = MdtDriftCircleOnTrackCreatorCfg(flags)
307  kwargs.setdefault("MdtRotCreator", result.getPrimary())
308 
309  if flags.Detector.GeometryCSC:
310  from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import CscClusterOnTrackCreatorCfg
311  kwargs.setdefault("CscRotCreator", result.popToolsAndMerge(CscClusterOnTrackCreatorCfg(flags)))
312  else:
313  kwargs.setdefault("CscRotCreator", "")
314 
315  kwargs.setdefault("CompetingClustersCreator", result.popToolsAndMerge(TriggerChamberClusterOnTrackCreatorCfg(flags)))
316 
317  kwargs.setdefault("MuonPrinterTool", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags) ))
318 
319  from MuonConfig.MuonRecToolsConfig import MuPatHitToolCfg
320  kwargs.setdefault("HitTool", result.getPrimaryAndMerge(MuPatHitToolCfg(flags)))
321  kwargs.setdefault("SegmentSelector", result.popToolsAndMerge(MuonSegmentSelectionToolCfg(flags)))
322 
323  result.setPrivateTools(CompFactory.Muon.MuPatCandidateTool(name, **kwargs))
324  return result
325 
326 def MuonChamberHoleRecoveryToolCfg(flags, name="MuonChamberHoleRecoveryTool", **kwargs):
327  result=ComponentAccumulator()
328  # Not setting explicitly MuonStationIntersectSvc
329 
330  from TrkConfig.AtlasExtrapolatorConfig import MuonExtrapolatorCfg
331  kwargs.setdefault("Extrapolator", result.popToolsAndMerge(MuonExtrapolatorCfg(flags)))
332 
333  from MuonConfig.MuonGeometryConfig import TrackingVolumesSvcCfg
334  kwargs.setdefault("TrackingVolumesSvc", result.getPrimaryAndMerge(TrackingVolumesSvcCfg(flags)))
335 
336  from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg, MuonClusterOnTrackCreatorCfg
337  kwargs.setdefault("MdtRotCreator", result.getPrimaryAndMerge(MdtDriftCircleOnTrackCreatorCfg(flags)))
338 
339  kwargs.setdefault("AddMeasurements", not flags.Muon.doSegmentT0Fit )
340  if flags.Detector.GeometryCSC:
341  extrakwargs={}
342  from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import CscClusterOnTrackCreatorCfg
343  kwargs.setdefault("CscRotCreator", result.popToolsAndMerge(CscClusterOnTrackCreatorCfg(flags, **extrakwargs)))
344  else:
345  kwargs["CscRotCreator"] = None
346  kwargs.setdefault("CscPrepDataContainer","")
347 
348  kwargs.setdefault("ClusterRotCreator", result.popToolsAndMerge(MuonClusterOnTrackCreatorCfg(flags)))
349 
350  if not flags.Detector.GeometrysTGC:
351  kwargs.setdefault("sTgcPrepDataContainer","")
352 
353  if not flags.Detector.GeometryMM:
354  kwargs.setdefault("MMPrepDataContainer","")
355 
356  kwargs.setdefault('TgcPrepDataContainer', 'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC else 'TGC_Measurements')
357  kwargs.setdefault("EDMPrinter", result.popToolsAndMerge(MuonEDMPrinterToolCfg(flags) ))
358 
359  if "PullCalculator" not in kwargs:
360  from TrkConfig.TrkResidualPullCalculatorConfig import (
361  ResidualPullCalculatorCfg)
362  kwargs.setdefault("PullCalculator", result.popToolsAndMerge(
364 
365  result.setPrivateTools(CompFactory.Muon.MuonChamberHoleRecoveryTool(name, **kwargs))
366  return result
367 
368 def EMEO_MuonChamberHoleRecoveryToolCfg(flags, name = "MuonChamberRecovery_EMEO"):
369  return MuonChamberHoleRecoveryToolCfg(flags,
370  name=name,
371  sTgcPrepDataContainer="",
372  MMPrepDataContainer="")
373 
374 def MuonTrackSteeringCfg(flags, name="MuonTrackSteering", **kwargs):
375  Muon__MuonTrackSteering=CompFactory.Muon.MuonTrackSteering
376  # This is based on https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonStandalone.py#L35
377  result=ComponentAccumulator()
378 
379  # This was originally defined here: https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonStandaloneFlags.py#L137
380  MoorelikeStrategy=[
381  "BarrelCombined[CombineSegInStation,DoRefinement,DoAmbiSolving,CutSeedsOnTracks]:BML,BMS;BOL,BOS;BIL,BIS",
382  "EndcapCombined[CombineSegInStation,DoRefinement,DoAmbiSolving,CutSeedsOnTracks]:EML,EMS;EOL,EOS;EIL,EIS;CSL,CSS;EEL,EES;BEE",
383  "BarrelEndcap[CombineSegInStation,DoRefinement,DoAmbiSolving,CutSeedsOnTracks,BarrelEndcapFilter]:EML,EMS;EEL,EES;BML,BMS;EIL,EIS;BIL,BIS;BOL,BOS"]
384 
385  kwargs.setdefault("StrategyList", MoorelikeStrategy)
386 
387  # Set properties which were set in MuonStandalone.py, and which aren't default (fix this later, because we don't want to break existing configuration)
388  # extraFlags are ignored (don't believe they're necessary)
389 
390  result = MCTBSLFitterCfg(flags)
391  mctbslfitter = result.getPrimary()
392 
393  acc = MuonSegmentRegionRecoveryToolCfg(flags, name='MuonEORecoveryTool', OnlyEO = True, Fitter=mctbslfitter, UseFitterOutlierLogic=False)
394  muon_eo_recovery_tool = acc.getPrimary()
395  result.merge(acc)
396 
397  kwargs.setdefault("HoleRecoveryTool", muon_eo_recovery_tool)
398  kwargs.setdefault("SegSeedQCut", 2 if flags.Beam.Type != BeamType.Cosmics else 1)
399  kwargs.setdefault("Seg2ndQCut", 1)
400 
401  if "TrackBuilderTool" not in kwargs:
402  # Old config had: kwargs["TrackBuilderTool"] = getPublicToolClone("MooMuonTrackBuilder", "MooTrackBuilderTemplate",
403  # extraFlags=extraFlags)
404  # For some strange reason, MooTrackBuilderTemplate was just a MooTrackBuilder i.e. they had:
405  # addTool( "MuonRecExample.MooreTools.MooTrackBuilder", "MooTrackBuilderTemplate") but passing in extraFlags
406  # I have simplified this. Also, in the old configuration there was the possiblity to set optimiseMomentumResolutionUsingChi2 to true in extraflags (which were passed to TrackBuilderTool but not TrackRefinementTool) - however I don't think this was used, and have removed it.
407  # However some other things were set in extraFlags here: https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonStandalone.py#L39
408  # So I might well have made a mistake. TODO check
409  kwargs["TrackBuilderTool"] = result.popToolsAndMerge( MooTrackBuilderCfg(flags, name='MooMuonTrackBuilder', prefix="MuSt_"))
410 
411  if "TrackRefinementTool" not in kwargs:
412  kwargs["TrackRefinementTool"] = result.popToolsAndMerge( MooTrackBuilderCfg(flags, name='MooTrackBuilderTemplate', doSegmentPhiMatching=False))
413 
414  acc=MuPatCandidateToolCfg(flags)
415  cand_tool = acc.getPrimary()
416  result.merge(acc)
417  kwargs.setdefault("MuPatCandidateTool", cand_tool)
418 
419  from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
420  acc = MuonAmbiProcessorCfg(flags, name='MuonAmbiProcessor')
421  ambi = acc.getPrimary()
422  result.merge(acc)
423  kwargs.setdefault("AmbiguityTool", ambi)
424 
425  kwargs.setdefault("MooBuilderTool", result.popToolsAndMerge( MooTrackBuilderCfg(flags, name='MooMuonTrackBuilder', prefix="MuSt_")))
426 
427  kwargs.setdefault("CandidateMatchingTool",
428  result.popToolsAndMerge(MooCandidateMatchingToolCfg(flags, doSegmentPhiMatching=True)))
429 
430  kwargs.setdefault("MuonSegmentFittingTool",
431  result.popToolsAndMerge(MuonSegmentFittingToolCfg(flags)))
432  kwargs.setdefault("MuonTrackSelector",
433  result.popToolsAndMerge(MuonTrackSelectorCfg(flags)))
434 
435  kwargs.setdefault("HoleRecoveryTool",
436  result.popToolsAndMerge(MuonChamberHoleRecoveryToolCfg(flags)))
437 
438  from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
439  kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(MuonTrackSummaryToolCfg(flags)))
440  kwargs.setdefault("DoSummary", flags.Muon.printSummary)
441 
442 
443  track_maker_steering = Muon__MuonTrackSteering(name,**kwargs)
444  result.setPrivateTools(track_maker_steering)
445  return result
446 
447 def MuonTrackSelectorCfg(flags, name = "MuonTrackSelectorTool", **kwargs):
448  from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryHelperToolCfg
449 
450  result = ComponentAccumulator()
451  if flags.Beam.Type in [BeamType.Cosmics, BeamType.SingleBeam] or not flags.Input.isMC:
452  kwargs.setdefault("UseRPCHoles", False)
453  kwargs.setdefault("UseTGCHoles", False)
454  kwargs.setdefault("MaxMdtHolesOnTwoStationTrack", 10)
455  kwargs.setdefault("MaxMdtHolesOnTrack", 30)
456  kwargs.setdefault("HolesToHitsRatioCutPerStation", 2)
457  kwargs.setdefault("CountMDTOutlierAsHoles", False)
458  else:
459  kwargs.setdefault("MaxMdtHolesOnTwoStationTrack", 4)
460  kwargs.setdefault("MaxMdtHolesOnTrack", 5)
461  kwargs.setdefault("CountMDTOutlierAsHoles", True)
462 
463  kwargs.setdefault("TrackSummaryHelperTool", result.popToolsAndMerge(MuonTrackSummaryHelperToolCfg(flags)))
464 
465  theTool = CompFactory.Muon.MuonTrackSelectorTool(name, **kwargs)
466  result.setPrivateTools(theTool)
467  return result
468 
469 def EMEO_MuPatTrackBuilderCfg(flags, name="MuPatTrackBuilder_EMEO", **kwargs):
470  result = ComponentAccumulator()
471 
472  recovery_tool = result.getPrimaryAndMerge(EMEO_MuonChamberHoleRecoveryToolCfg(flags))
473  acc = MooTrackBuilderCfg(flags,
474  name = "MooMuonTrackBuilder_EMEO",
475  ChamberHoleRecoveryTool = recovery_tool)
476 
477  track_builder= result.getPrimaryAndMerge(acc)
478 
479  acc = MuonTrackSteeringCfg(flags,
480  name = "MuonTrackSteering_EMEO",
481  TrackBuilderTool = track_builder)
482  track_steering = acc.getPrimary()
483  result.merge(acc)
484 
485  kwargs.setdefault("TrackSteering", track_steering)
486  kwargs.setdefault("MuonSegmentCollection", "TrackMuonSegmentsEMEO")
487  kwargs.setdefault("SpectrometerTrackOutputLocation", "EMEO_MuonSpectrometerTracks")
488 
489  the_alg = CompFactory.MuPatTrackBuilder(name = name, **kwargs)
490  result.addEventAlgo(the_alg, primary = True)
491  return result
492 
493 def MuPatTrackBuilderCfg(flags, name = "MuPatTrackBuilder", **kwargs):
494  result=ComponentAccumulator()
495  acc = MuonTrackSteeringCfg(flags)
496  track_steering = acc.getPrimary()
497  result.merge(acc)
498 
499  kwargs.setdefault("TrackSteering", track_steering)
500  kwargs.setdefault("MuonSegmentCollection", "TrackMuonSegments")
501  kwargs.setdefault("SpectrometerTrackOutputLocation", "MuonSpectrometerTracks")
502 
503  track_builder = CompFactory.MuPatTrackBuilder(name=name, **kwargs)
504  result.addEventAlgo( track_builder, primary=True )
505 
506  return result
507 def MuonTrackBuildingCfg(flags, name = "MuPatTrackBuilder", **kwargs):
508  # This is based on https://gitlab.cern.ch/atlas/athena/blob/release/22.0.3/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonStandalone.py#L162
509  result=ComponentAccumulator()
510 
511  #Arguably this should be somewhere deeper - not quite sure where yet though. FIXME
512  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
513  result.merge( MuonGeoModelCfg(flags) )
514  from MuonConfig.MuonRecToolsConfig import MuonEDMHelperSvcCfg
515  result.merge(MuonEDMHelperSvcCfg(flags))
516 
517  # release 21 ESDs contain a Trk::SegmentCollection named 'MuonSegments' instead of 'TrackMuonSegments', the following 2 lines account for that
518  from MuonConfig.MuonSegmentNameFixConfig import MuonSegmentNameFixCfg
519  result.merge(MuonSegmentNameFixCfg(flags))
520  result.merge(MuPatTrackBuilderCfg(flags))
521 
522  if flags.Muon.runCommissioningChain:
523  result.merge(EMEO_MuPatTrackBuilderCfg(flags))
524  return result
525 
526 
527 if __name__=="__main__":
528  # To run this, do e.g.
529  # python -m MuonConfig.MuonTrackBuildingConfig --run --threads=
530  from MuonConfig.MuonConfigUtils import SetupMuonStandaloneConfigFlags, SetupMuonStandaloneOutput, SetupMuonStandaloneCA
531 
534 
535  # Run the actual test.
536  acc = MuonTrackBuildingCfg(args, flags)
537  cfg.merge(acc)
538 
539 
540  # This is a temporary fix - it should go someplace central as it replaces the functionality of addInputRename from here:
541  # https://gitlab.cern.ch/atlas/athena/blob/master/Control/SGComps/python/AddressRemappingSvc.py
542  AddressRemappingSvc, ProxyProviderSvc=CompFactory.getComps("AddressRemappingSvc","ProxyProviderSvc",)
545  pps.ProviderNames += [ 'AddressRemappingSvc' ]
546  ars.TypeKeyRenameMaps += [ '%s#%s->%s' % ("TrackCollection", "MuonSpectrometerTracks", "MuonSpectrometerTracks_old") ]
547 
548  cfg.addService(pps)
549  cfg.addService(ars)
550 
551  itemsToRecord = ["TrackCollection#MuonSpectrometerTracks"]
552  SetupMuonStandaloneOutput(cfg, flags, itemsToRecord)
553 
554  cfg.printConfig(withDetails = True)
555 
556  f=open("MuonTrackBuilding.pkl","wb")
557  cfg.store(f)
558  f.close()
559 
560  if not args.config_only:
561  sc = cfg.run(20)
562  if not sc.isSuccess():
563  import sys
564  sys.exit("Execution failed")
565 
python.MuonRecToolsConfig.MuonAmbiProcessorCfg
def MuonAmbiProcessorCfg(flags, name="MuonAmbiProcessor", **kwargs)
Definition: MuonRecToolsConfig.py:135
RegSelToolConfig.regSelTool_MDT_Cfg
def regSelTool_MDT_Cfg(flags)
Definition: RegSelToolConfig.py:129
AddressRemappingSvc
This class provides the interface to the LCG POOL persistency software.
Definition: AddressRemappingSvc.h:41
python.MuonRecToolsConfig.MuonTrackSummaryHelperToolCfg
def MuonTrackSummaryHelperToolCfg(flags, name="MuonTrackSummaryHelperTool", **kwargs)
Definition: MuonRecToolsConfig.py:114
python.MuonCondAlgConfig.MuonStationIntersectCondAlgCfg
def MuonStationIntersectCondAlgCfg(flags, name='MuonStationIntersectCondAlg', **kwargs)
Definition: MuonCondAlgConfig.py:340
python.MuonTrackBuildingConfig.MooTrackBuilderCfg
def MooTrackBuilderCfg(flags, name="MooTrackBuilderTemplate", prefix="", doSegmentPhiMatching=True, **kwargs)
Definition: MuonTrackBuildingConfig.py:68
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.MuonRecToolsConfig.MuonSeededSegmentFinderCfg
def MuonSeededSegmentFinderCfg(flags, name="MuonSeededSegmentFinder", **kwargs)
Definition: MuonRecToolsConfig.py:62
RegSelToolConfig.regSelTool_STGC_Cfg
def regSelTool_STGC_Cfg(flags)
Definition: RegSelToolConfig.py:180
python.MuonRIO_OnTrackCreatorToolConfig.TriggerChamberClusterOnTrackCreatorCfg
def TriggerChamberClusterOnTrackCreatorCfg(flags, name="TriggerChamberClusterOnTrackCreator", **kwargs)
Definition: MuonRIO_OnTrackCreatorToolConfig.py:25
python.MuonRecToolsConfig.MuonEDMPrinterToolCfg
def MuonEDMPrinterToolCfg(flags, name="MuonEDMPrinterTool", **kwargs)
Definition: MuonRecToolsConfig.py:10
python.MuonTrackBuildingConfig.MuPatTrackBuilderCfg
def MuPatTrackBuilderCfg(flags, name="MuPatTrackBuilder", **kwargs)
Definition: MuonTrackBuildingConfig.py:493
python.TrkTrackSummaryToolConfig.MuonTrackSummaryToolCfg
def MuonTrackSummaryToolCfg(flags, name="MuonTrackSummaryTool", **kwargs)
Definition: TrkTrackSummaryToolConfig.py:143
ProxyProviderSvc
manages the address providers and add proxies on demand to the store
Definition: ProxyProviderSvc.h:43
python.MuonTrackBuildingConfig.MuPatCandidateToolCfg
def MuPatCandidateToolCfg(flags, name="MuPatCandidateTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:301
python.MuonSegmentNameFixConfig.MuonSegmentNameFixCfg
def MuonSegmentNameFixCfg(flags)
Definition: MuonSegmentNameFixConfig.py:5
python.MuonConfigUtils.SetupMuonStandaloneCA
def SetupMuonStandaloneCA(args, flags)
Definition: MuonConfigUtils.py:29
RegSelToolConfig.regSelTool_TGC_Cfg
def regSelTool_TGC_Cfg(flags)
Definition: RegSelToolConfig.py:156
python.MuonTrackBuildingConfig.MuonTrackSelectorCfg
def MuonTrackSelectorCfg(flags, name="MuonTrackSelectorTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:447
python.TrkGlobalChi2FitterConfig.MCTBSLFitterCfg
def MCTBSLFitterCfg(flags, name='MCTBSLFitter', **kwargs)
Definition: TrkGlobalChi2FitterConfig.py:253
python.MuonRecToolsConfig.MuPatHitToolCfg
def MuPatHitToolCfg(flags, name="MuPatHitTool", **kwargs)
Definition: MuonRecToolsConfig.py:222
python.AtlasExtrapolatorConfig.AtlasExtrapolatorCfg
def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator')
Definition: AtlasExtrapolatorConfig.py:63
python.TrkExRungeKuttaPropagatorConfig.RungeKuttaPropagatorCfg
def RungeKuttaPropagatorCfg(flags, name='AtlasRungeKuttaPropagator', **kwargs)
Definition: TrkExRungeKuttaPropagatorConfig.py:9
python.MuonTrackBuildingConfig.MuonChamberHoleRecoveryToolCfg
def MuonChamberHoleRecoveryToolCfg(flags, name="MuonChamberHoleRecoveryTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:326
python.MuonSegmentFindingConfig.MuonSegmentFittingToolCfg
def MuonSegmentFittingToolCfg(flags, name="MuonSegmentFittingTool", **kwargs)
Definition: MuonSegmentFindingConfig.py:94
python.MuonCombinedRecToolsConfig.CombinedMuonTrackBuilderFitCfg
def CombinedMuonTrackBuilderFitCfg(flags, name='CombinedMuonTrackBuilderFit', **kwargs)
Definition: MuonCombinedRecToolsConfig.py:819
python.MuonGeometryConfig.TrackingVolumesSvcCfg
def TrackingVolumesSvcCfg(flags, name="TrackingVolumesSvc", **kwargs)
Definition: MuonGeometryConfig.py:10
RegSelToolConfig.regSelTool_CSC_Cfg
def regSelTool_CSC_Cfg(flags)
Definition: RegSelToolConfig.py:168
python.MuonTrackBuildingConfig.MooTrackFitterCfg
def MooTrackFitterCfg(flags, name='MooTrackFitter', prefix='', **kwargs)
Definition: MuonTrackBuildingConfig.py:11
python.MuonTrackBuildingConfig.MuonTrackBuildingCfg
def MuonTrackBuildingCfg(flags, name="MuPatTrackBuilder", **kwargs)
Definition: MuonTrackBuildingConfig.py:507
python.TrkExSTEP_PropagatorConfig.AtlasSTEP_PropagatorCfg
def AtlasSTEP_PropagatorCfg(flags, name='AtlasSTEP_Propagator', **kwargs)
Definition: TrkExSTEP_PropagatorConfig.py:16
python.MuonRIO_OnTrackCreatorToolConfig.CscClusterOnTrackCreatorCfg
def CscClusterOnTrackCreatorCfg(flags, name="CscClusterOnTrackCreator", **kwargs)
Definition: MuonRIO_OnTrackCreatorToolConfig.py:34
python.MuonRecToolsConfig.MuonSegmentMomentumFromFieldCfg
def MuonSegmentMomentumFromFieldCfg(flags, name="MuonSegmentMomentumFromField", **kwargs)
Definition: MuonRecToolsConfig.py:98
python.MuonTrackBuildingConfig.EMEO_MuonChamberHoleRecoveryToolCfg
def EMEO_MuonChamberHoleRecoveryToolCfg(flags, name="MuonChamberRecovery_EMEO")
Definition: MuonTrackBuildingConfig.py:368
python.MuonTrackBuildingConfig.EMEO_MuPatTrackBuilderCfg
def EMEO_MuPatTrackBuilderCfg(flags, name="MuPatTrackBuilder_EMEO", **kwargs)
Definition: MuonTrackBuildingConfig.py:469
python.MuonCombinedRecToolsConfig.MuonSegmentSelectionToolCfg
def MuonSegmentSelectionToolCfg(flags, name="MuonSegmentSelectionTool", **kwargs)
Definition: MuonCombinedRecToolsConfig.py:1042
python.MuonRecToolsConfig.MuonTrackExtrapolationToolCfg
def MuonTrackExtrapolationToolCfg(flags, name="MuonTrackExtrapolationTool", **kwargs)
Definition: MuonRecToolsConfig.py:252
RegSelToolConfig.regSelTool_MM_Cfg
def regSelTool_MM_Cfg(flags)
Definition: RegSelToolConfig.py:186
python.MuonRecToolsConfig.MuonPhiHitSelectorCfg
def MuonPhiHitSelectorCfg(flags, name="MuonPhiHitSelector", **kwargs)
Definition: MuonRecToolsConfig.py:201
python.AtlasExtrapolatorConfig.MuonExtrapolatorCfg
def MuonExtrapolatorCfg(flags, name="MuonExtrapolator", **kwargs)
Definition: AtlasExtrapolatorConfig.py:376
python.MuonRecToolsConfig.MuonEDMHelperSvcCfg
def MuonEDMHelperSvcCfg(flags, name="MuonEDMHelperSvc", **kwargs)
Definition: MuonRecToolsConfig.py:29
python.MuonConfigUtils.SetupMuonStandaloneOutput
def SetupMuonStandaloneOutput(cfg, flags, itemsToRecord)
Definition: MuonConfigUtils.py:48
python.MuonTrackBuildingConfig.MuonSegmentInOverlapResolvingToolCfg
def MuonSegmentInOverlapResolvingToolCfg(flags, name="MuonSegmentInOverlapResolvingTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:132
Trk::open
@ open
Definition: BinningType.h:40
python.MuonRecToolsConfig.MuonTrackCleanerCfg
def MuonTrackCleanerCfg(flags, name="MuonTrackCleaner", seg=False, **kwargs)
Definition: MuonRecToolsConfig.py:150
python.TrkGlobalChi2FitterConfig.MCTBFitterCfg
def MCTBFitterCfg(flags, name='MCTBFitter', **kwargs)
Definition: TrkGlobalChi2FitterConfig.py:238
python.MuonRIO_OnTrackCreatorToolConfig.MuonClusterOnTrackCreatorCfg
def MuonClusterOnTrackCreatorCfg(flags, name="MuonClusterOnTrackCreator", **kwargs)
Definition: MuonRIO_OnTrackCreatorToolConfig.py:96
python.MuonRIO_OnTrackCreatorToolConfig.MdtDriftCircleOnTrackCreatorCfg
def MdtDriftCircleOnTrackCreatorCfg(flags, name="MdtDriftCircleOnTrackCreator", **kwargs)
Definition: MuonRIO_OnTrackCreatorToolConfig.py:73
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
python.MuonConfigUtils.SetupMuonStandaloneConfigFlags
def SetupMuonStandaloneConfigFlags(default_input=['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/RecExRecoTest/ESD.16747874._000011_100events.pool.root'])
Definition: MuonConfigUtils.py:6
python.MuonRecToolsConfig.MuonTrackToSegmentToolCfg
def MuonTrackToSegmentToolCfg(flags, name="MuonTrackToSegmentTool", **kwargs)
Definition: MuonRecToolsConfig.py:35
python.MuonTrackBuildingConfig.MuonTrackSteeringCfg
def MuonTrackSteeringCfg(flags, name="MuonTrackSteering", **kwargs)
Definition: MuonTrackBuildingConfig.py:374
MuonSegmentMomentum
Definition: MuonSegmentMomentum.h:18
python.MagFieldServicesConfig.AtlasFieldCacheCondAlgCfg
def AtlasFieldCacheCondAlgCfg(flags, **kwargs)
Definition: MagFieldServicesConfig.py:8
python.MuonTrackBuildingConfig.MuonSegmentRegionRecoveryToolCfg
def MuonSegmentRegionRecoveryToolCfg(flags, name="MuonSegmentRegionRecoveryTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:217
python.TrkResidualPullCalculatorConfig.ResidualPullCalculatorCfg
def ResidualPullCalculatorCfg(flags, name='ResidualPullCalculator', **kwargs)
Definition: TrkResidualPullCalculatorConfig.py:6
RegSelToolConfig.regSelTool_RPC_Cfg
def regSelTool_RPC_Cfg(flags)
Definition: RegSelToolConfig.py:144
python.MuonRecToolsConfig.MuonHitSummaryToolCfg
def MuonHitSummaryToolCfg(flags, name="MuonHitSummaryTool", **kwargs)
Definition: MuonRecToolsConfig.py:52
python.MuonTrackBuildingConfig.MooCandidateMatchingToolCfg
def MooCandidateMatchingToolCfg(flags, name="MooCandidateMatchingTool", doSegmentPhiMatching=False, prefix="", **kwargs)
Definition: MuonTrackBuildingConfig.py:177
python.MuonTrackBuildingConfig.MuonSegmentMatchingToolCfg
def MuonSegmentMatchingToolCfg(flags, name="MuonSegmentMatchingTool", **kwargs)
Definition: MuonTrackBuildingConfig.py:152