ATLAS Offline Software
Loading...
Searching...
No Matches
MuonCombinedRecToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3# Defines the shared tools used in muon identification
4# Based on :
5# https://gitlab.cern.ch/atlas/athena/blob/release/22.0.8/Reconstruction/MuonIdentification/MuonCombinedRecExample/python/MuonCombinedTools.py
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8from AthenaConfiguration.Enums import BeamType
9from AthenaConfiguration.AccumulatorCache import AccumulatorCache
10from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
11from MuonConfig.MuonRecToolsConfig import MuonEDMPrinterToolCfg
12from MuonConfig.MuonTrackBuildingConfig import MuonSegmentRegionRecoveryToolCfg
13
14from TrkConfig.AtlasExtrapolatorToolsConfig import AtlasEnergyLossUpdatorCfg
15from AthenaCommon.SystemOfUnits import GeV, mm
16
17
18def InDetCandidateToolCfg(flags, name="InDetCandidateTool", **kwargs):
19 from InDetConfig.InDetTrackSelectorToolConfig import MuonCombinedInDetDetailedTrackSelectorToolCfg
20 result = MuonCombinedInDetDetailedTrackSelectorToolCfg(flags)
21 kwargs.setdefault("TrackSelector", result.popPrivateTools())
22 result.setPrivateTools(
23 CompFactory.MuonCombined.InDetCandidateTool(name, **kwargs))
24 return result
25
26
27def MuonInDetForwardCandidateToolCfg(flags, name='InDetForwardCandidateTool', **kwargs):
28 from InDetConfig.InDetTrackSelectorToolConfig import MuonCombinedInDetDetailedForwardTrackSelectorToolCfg
29 result = MuonCombinedInDetDetailedForwardTrackSelectorToolCfg(flags)
30 kwargs.setdefault("TrackSelector", result.popPrivateTools())
31 kwargs.setdefault("FlagCandidatesAsSiAssociated", True)
32 result.setPrivateTools(result.popToolsAndMerge(
33 InDetCandidateToolCfg(flags, name, **kwargs)))
34 return result # FIXME - is this and the above, actually used?
35
36
37def MuonCaloEnergyToolCfg(flags, name="MuonCaloEnergyTool", **kwargs):
38 from TrackToCalo.TrackToCaloConfig import ParticleCaloCellAssociationToolCfg, ParticleCaloExtensionToolCfg
39
40 result = ParticleCaloExtensionToolCfg(
41 flags, name='MuonParticleCaloExtensionTool')
42 particle_calo_extension_tool = result.getPrimary()
43
44 particle_calo_cell_association_tool = result.popToolsAndMerge(
45 ParticleCaloCellAssociationToolCfg(flags, name='MuonCaloCellAssociationTool', ParticleCaloExtensionTool=particle_calo_extension_tool))
46
47 from TrkConfig.TrkParticleCreatorConfig import MuonCaloParticleCreatorCfg
48 track_particle_creator = result.popToolsAndMerge(
49 MuonCaloParticleCreatorCfg(flags))
50
51 muonCaloEnergyTool = CompFactory.Rec.MuonCaloEnergyTool(name, ParticleCaloExtensionTool=particle_calo_extension_tool,
52 ParticleCaloCellAssociationTool=particle_calo_cell_association_tool,
53 TrackParticleCreator=track_particle_creator)
54 result.setPrivateTools(muonCaloEnergyTool)
55 return result
56
57
58def MuonMaterialProviderToolCfg(flags, name="MuonTrkMaterialProviderTool", **kwargs):
59 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
60 from TrkConfig.AtlasExtrapolatorToolsConfig import AtlasMultipleScatteringUpdatorCfg
61
62 result = AtlasExtrapolatorCfg(flags)
63 atlas_extrapolator = result.popPrivateTools()
64 kwargs.setdefault("Extrapolator", atlas_extrapolator)
65 result.addPublicTool(atlas_extrapolator)
66 kwargs.setdefault("MuonCaloEnergyTool", result.popToolsAndMerge(
67 MuonCaloEnergyToolCfg(flags, name="MuonCaloEnergyTool")))
68
69 # MuonCaloEnergyTool is actually a private tool
70 calo_meas_tool = result.popToolsAndMerge(MuidCaloEnergyMeasCfg(flags))
71 kwargs.setdefault("CaloMeasTool", calo_meas_tool)
72 result.addPublicTool(calo_meas_tool)
73
74 calo_param_tool = MuidCaloEnergyParam(flags)
75 kwargs.setdefault("CaloParamTool", calo_param_tool)
76 result.addPublicTool(calo_param_tool)
77
78 multiple_scattering_tool = result.popToolsAndMerge(
79 AtlasMultipleScatteringUpdatorCfg(flags))
80 kwargs.setdefault("MultipleScatteringTool", multiple_scattering_tool)
81 result.addPublicTool(multiple_scattering_tool)
82
83 useCaloEnergyMeas = True
84 if flags.Muon.MuonTrigger:
85 useCaloEnergyMeas = False
86 kwargs.setdefault("UseCaloEnergyMeasurement", useCaloEnergyMeas)
87 acc = TrackingGeometryCondAlgCfg(flags)
88 kwargs.setdefault("TrackingGeometryReadKey",
89 acc.getPrimary().TrackingGeometryWriteKey)
90 result.merge(acc)
91
92 energy_loss_updator = result.popToolsAndMerge(
93 AtlasEnergyLossUpdatorCfg(flags))
94 kwargs.setdefault("EnergyLossUpdator",
95 energy_loss_updator) # PublicToolHandle
96 result.addPublicTool(energy_loss_updator)
97
98 track_isolation_tool = result.popToolsAndMerge(
100 kwargs.setdefault("TrackIsolationTool", track_isolation_tool)
101 result.addPublicTool(track_isolation_tool)
102
103 tool = CompFactory.Trk.TrkMaterialProviderTool(name=name, **kwargs)
104 result.setPrivateTools(tool)
105 return result
106
107
108def MuonSegmentHitSummaryToolCfg(flags, name="MuonSegmentHitSummaryTool", **kwargs):
109 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
110 result = ComponentAccumulator()
111 kwargs.setdefault("Printer", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)))
112 result.merge(MuonGeoModelCfg(flags))
113 kwargs.setdefault("DetectorManagerKey", "MuonDetectorManager")
114 tool = CompFactory.Muon.MuonSegmentHitSummaryTool(name, **kwargs)
115 result.setPrivateTools(tool)
116 return result
117
118
119def MuonSegmentConverterToolCfg(flags, name="MuonSegmentConverterTool", **kwargs):
120 result = MuonSegmentHitSummaryToolCfg(flags)
121 kwargs.setdefault("MuonSegmentHitSummaryTool", result.popPrivateTools())
122 # HitTimingTool does not need specific configuration
123 tool = CompFactory.Muon.MuonSegmentConverterTool(name, **kwargs)
124 result.setPrivateTools(tool)
125 return result
126
127
128def MuonDressingToolCfg(flags, name="MuonDressingTool", **kwargs):
129 from MuonConfig.MuonRecToolsConfig import MuonHitSummaryToolCfg
130 result = MuonHitSummaryToolCfg(flags)
131 kwargs.setdefault("MuonHitSummaryTool", result.popPrivateTools())
132 # HitTimingTool does not need specific configuration
133 tool = CompFactory.MuonCombined.MuonDressingTool(name, **kwargs)
134 result.setPrivateTools(tool)
135 return result
136
137
138def MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs):
139 from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
140 result = ComponentAccumulator()
141 # Not explicitly setting up MuonIdHelperSvc, nor MuonEDMHelperSvc (configured in top level reco Cfg)
142 muon_edm_printer = result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags))
143 kwargs.setdefault("Printer", muon_edm_printer)
144
145 kwargs.setdefault("MuonPrinter", CompFactory.Rec.MuonPrintingTool(name='MuonPrintingTool',
146 MuonStationPrinter=muon_edm_printer))
147
148 kwargs.setdefault("ParticleCaloExtensionTool",
149 result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags,
150 name='MuonParticleCaloExtensionTool',
151 StartFromPerigee=True)))
152
153 from TrkConfig.TrkParticleCreatorConfig import MuonCombinedParticleCreatorCfg
154 kwargs.setdefault("TrackParticleCreator", result.popToolsAndMerge(
155 MuonCombinedParticleCreatorCfg(flags)))
156
157 from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
158 kwargs.setdefault("AmbiguityProcessor", result.popToolsAndMerge(
159 MuonAmbiProcessorCfg(flags)))
160
161 from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
162 kwargs.setdefault("Propagator", result.popToolsAndMerge(
163 RungeKuttaPropagatorCfg(flags)))
164 kwargs.setdefault("MuonDressingTool", result.popToolsAndMerge(
165 MuonDressingToolCfg(flags)))
166 kwargs.setdefault("AddMDTExtrasMuGirlLowBeta", flags.MuonCombined.addMDTExtrasMuGirlLowBeta)
167 # Not explicitly setting up MomentumBalanceTool nor ScatteringAngleTool
168 # Not explicitly setting up MeanMDTdADCTool (but probably should FIXME)
169
170 kwargs.setdefault("CaloMaterialProvider", result.popToolsAndMerge(
172
173 kwargs.setdefault("TrackQuery", result.popToolsAndMerge(
174 MuonTrackQueryCfg(flags)))
175 # runCommissioningChain
176 if flags.Muon.SAMuonTrigger:
177 from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
178 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
179 MuonTrackSummaryToolCfg(flags)))
180 else:
181 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
182 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
183 MuonCombinedTrackSummaryToolCfg(flags)))
184
185 if flags.Muon.MuonTrigger:
186 kwargs.setdefault("MuonSelectionTool", "")
187 kwargs.setdefault("UseCaloCells", False)
188 kwargs.setdefault("CopyUInt8SummaryKeys", [])
189 else:
190 from MuonSelectorTools.MuonSelectorToolsConfig import MuonSelectionToolCfg
191 kwargs.setdefault("MuonSelectionTool", result.popToolsAndMerge(
192 MuonSelectionToolCfg(flags, name='MuonRecoSelTool')))
193 kwargs.setdefault("RequireMSOEforSA", flags.Beam.Type is BeamType.Collisions)
194 kwargs.setdefault("RequireCaloForSA", flags.Beam.Type is BeamType.Collisions)
195
196 tool = CompFactory.MuonCombined.MuonCreatorTool(name, **kwargs)
197 result.setPrivateTools(tool)
198 return result
199
200
201def ExtrapolateMuonToIPToolCfg(flags, name="ExtrapolateMuonToIPTool", **kwargs):
202 result = AtlasExtrapolatorCfg(flags)
203 kwargs.setdefault("Extrapolator", result.popPrivateTools())
204 from TrkConfig.AtlasExtrapolatorConfig import MuonExtrapolatorCfg
205 kwargs.setdefault("MuonExtrapolator", result.popToolsAndMerge(
206 MuonExtrapolatorCfg(flags)))
207
208 if flags.Muon.MuonTrigger:
209 from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
210 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
211 MuonTrackSummaryToolCfg(flags)))
212 else:
213 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
214 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
215 MuonCombinedTrackSummaryToolCfg(flags)))
216 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
217 MuonEDMPrinterToolCfg(flags)))
218 result.setPrivateTools(CompFactory.ExtrapolateMuonToIPTool(name, **kwargs))
219 return result
220
221
222def MuonCandidateToolCfg(flags, name="MuonCandidateTool", **kwargs):
223 from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
224 result = ComponentAccumulator()
225 muon_edm_printer = result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags))
226 kwargs.setdefault("Printer", muon_edm_printer)
227 if "TrackBuilder" not in kwargs:
228 kwargs.setdefault("TrackBuilder", result.popToolsAndMerge(
229 CombinedMuonTrackBuilderCfg(flags, name="CombinedMuonTrackBuilder")))
230 # Why was this dependent on cosmics? will now always create this
231 # if flags.Beam.Type is BeamType.Cosmics:
232 if flags.Muon.MuonTrigger and flags.Beam.Type is not BeamType.Cosmics:
233 # trigger definitely only uses the ExtrapolateToIPtool in cosmics mode
234 kwargs.setdefault("TrackExtrapolationTool", "")
235 else:
236 kwargs.setdefault("TrackExtrapolationTool", result.popToolsAndMerge(
238 kwargs.setdefault("SegmentContainer", "TrackMuonSegments")
239 kwargs.setdefault("AmbiguityProcessor", result.popToolsAndMerge(
240 MuonAmbiProcessorCfg(flags)))
241
242 from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
243 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
244 MuonTrackSummaryToolCfg(flags)))
245
246 # MuonIDHelperSvc already configured
247
248 if flags.Beam.Type is BeamType.Cosmics:
249 kwargs.setdefault("ExtrapolationStrategy", 1)
250
251 track_segment_association_tool = CompFactory.MuonCombined.TrackSegmentAssociationTool(
252 MuonEDMPrinterTool=muon_edm_printer)
253 kwargs.setdefault("TrackSegmentAssociationTool",
254 track_segment_association_tool)
255 result.addPublicTool(track_segment_association_tool)
256
257 tool = CompFactory.MuonCombined.MuonCandidateTool(name, **kwargs)
258 result.setPrivateTools(tool)
259 return result
260
261
262def MuonCombinedDebuggerToolCfg(flags, name="MuonCombinedDebuggerTool", **kwargs):
263 result = ComponentAccumulator()
264 match_quality = CompFactory.Rec.MuonMatchQuality(
265 TrackQuery=result.popToolsAndMerge(MuonTrackQueryCfg(flags)))
266 kwargs.setdefault("MuonMatchQuality", match_quality)
267 tool = CompFactory.MuonCombined.MuonCombinedDebuggerTool(name, **kwargs)
268 result.setPrivateTools(tool)
269 return result
270
271
272def MuonCombinedToolCfg(flags, name="MuonCombinedTool", **kwargs):
273 tools = []
274 result = ComponentAccumulator()
275 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
276 MuonEDMPrinterToolCfg(flags)))
277
278 if flags.MuonCombined.doCombinedFit:
279 tool = result.popToolsAndMerge(MuonCombinedFitTagToolCfg(flags))
280 tools.append(tool)
281 if flags.MuonCombined.doStatisticalCombination and flags.Beam.Type is not BeamType.Cosmics:
282 tool = result.popToolsAndMerge(MuonCombinedStacoTagToolCfg(flags))
283 tools.append(tool)
284
285 kwargs.setdefault("MuonCombinedTagTools", tools)
286 kwargs.setdefault("MuonCombinedDebuggerTool", result.popToolsAndMerge(
288
290 result.merge(acc)
291 kwargs.setdefault("AlignmentUncertTool", result.getPublicTool(
292 'MuonAlignmentUncertToolTheta'))
293
294 kwargs.setdefault("DeltaEtaPreSelection", 0.2)
295 kwargs.setdefault("DeltaPhiPreSelection", 0.2)
296 tool = CompFactory.MuonCombined.MuonCombinedTool(name, **kwargs)
297 result.setPrivateTools(tool)
298 return result
299
300
301def MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool", **kwargs):
302 if flags.Muon.MuonTrigger:
303 kwargs.setdefault("VertexContainer", "")
304
305 result = ComponentAccumulator()
306 kwargs.setdefault("TrackBuilder", result.popToolsAndMerge(
308
309 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
310 MuonEDMPrinterToolCfg(flags)))
311
312 kwargs.setdefault("TrackQuery", result.popToolsAndMerge(
313 MuonTrackQueryCfg(flags)))
314 kwargs.setdefault("MatchQuality", result.popToolsAndMerge(
315 MuonMatchQualityCfg(flags)))
316
317 from MuonConfig.MuonRecToolsConfig import MuonTrackScoringToolCfg
318 kwargs.setdefault("TrackScoringTool", result.popToolsAndMerge(
319 MuonTrackScoringToolCfg(flags)))
320
321
322 #When both solenoid and toriod are off (e.g. cosmic runs) this cut is likely to kill the combined muon -> loosen up for cosmics
323 if flags.Beam.Type is BeamType.Cosmics and (not flags.BField.endcapToroidOn and not flags.BField.solenoidOn):
324 kwargs.setdefault("MomentumBalanceCut", 1e6)
325
326 tool = CompFactory.MuonCombined.MuonCombinedFitTagTool(name, **kwargs)
327 result.setPrivateTools(tool)
328 return result
329
330
331def EMEO_MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool_EMEO", **kwargs):
332 result = ComponentAccumulator()
333 track_builder = result.popToolsAndMerge(
335 fit_tag_tool = result.popToolsAndMerge(MuonCombinedFitTagToolCfg(flags, name=name,
336 TrackBuilder=track_builder,
337 **kwargs))
338 result.setPrivateTools(fit_tag_tool)
339 return result
340
341
342def EMEO_MuonCombinedToolCfg(flags, name="MuonCombinedTool_EMEO", **kwargs):
343 tools = []
344 result = ComponentAccumulator()
345 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
346 MuonEDMPrinterToolCfg(flags)))
347
348 if flags.MuonCombined.doCombinedFit:
349 tool = result.popToolsAndMerge(EMEO_MuonCombinedFitTagToolCfg(flags))
350 tools.append(tool)
351 if flags.MuonCombined.doStatisticalCombination:
352 tool = result.popToolsAndMerge(MuonCombinedStacoTagToolCfg(flags))
353 tools.append(tool)
354
355 kwargs.setdefault("MuonCombinedTagTools", tools)
356 kwargs.setdefault("MuonCombinedDebuggerTool", result.popToolsAndMerge(
358
360 result.merge(acc)
361 kwargs.setdefault("AlignmentUncertTool", result.getPublicTool(
362 'MuonAlignmentUncertToolTheta'))
363
364 kwargs.setdefault("DeltaEtaPreSelection", 0.2)
365 kwargs.setdefault("DeltaPhiPreSelection", 0.2)
366 tool = CompFactory.MuonCombined.MuonCombinedTool(name, **kwargs)
367 result.setPrivateTools(tool)
368 return result
369
370
371def MuonCombinedStacoTagToolCfg(flags, name="MuonCombinedStacoTagTool", **kwargs):
372
373 result = ComponentAccumulator()
374 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
375 MuonEDMPrinterToolCfg(flags)))
376 kwargs.setdefault("TagTool", result.popToolsAndMerge(
378 kwargs.setdefault("Extrapolator", result.popToolsAndMerge(
379 AtlasExtrapolatorCfg(flags)))
380
381 tool = CompFactory.MuonCombined.MuonCombinedStacoTagTool(name, **kwargs)
382 result.setPrivateTools(tool)
383 return result
384
385# From Combined fit tools.py
386
387
388def MuidMaterialAllocatorCfg(flags, name='MuidMaterialAllocator', **kwargs):
389 from TrkConfig.TrkExSTEP_PropagatorConfig import AtlasSTEP_PropagatorCfg
390 kwargs.setdefault("AggregateMaterial", True)
391 kwargs.setdefault("AllowReordering", False)
392
393 result = AtlasExtrapolatorCfg(flags)
394 kwargs.setdefault("Extrapolator", result.popPrivateTools())
395 # Intersector (a RungeKuttaIntersector) does not require explicit configuration
396 kwargs.setdefault("STEP_Propagator", result.popToolsAndMerge(
397 AtlasSTEP_PropagatorCfg(flags, name="AtlasSTEP_Propagator")))
398 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
399 result.merge(TrackingGeometryCondAlgCfg(flags))
400 kwargs.setdefault("TrackingGeometryReadKey", "AtlasTrackingGeometry")
401
402 tool = CompFactory.Trk.MaterialAllocator(name, **kwargs)
403 result.setPrivateTools(tool)
404 return result
405
406# and the fitter
407
408
409def iPatFitterCfg(flags, name='iPatFitter', **kwargs):
410 from TrkConfig.SolenoidalIntersectorConfig import SolenoidalIntersectorCfg
411 from TrkConfig.TrkExSTEP_PropagatorConfig import AtlasSTEP_PropagatorCfg
412
413 kwargs.setdefault("AggregateMaterial", True)
414 kwargs.setdefault("FullCombinedFit", True)
415 result = MuidMaterialAllocatorCfg(flags)
416 kwargs.setdefault("MaterialAllocator", result.popPrivateTools())
417 # RungeKuttaIntersector needs a AtlasFieldCacheCondObj, but it's impossible to get here without that being configured already so let's be lazy
418 # It does not otherwise require explicit configuration
419 kwargs.setdefault('SolenoidalIntersector', result.popToolsAndMerge(
420 SolenoidalIntersectorCfg(flags)))
421 kwargs.setdefault('Propagator', result.popToolsAndMerge(
422 AtlasSTEP_PropagatorCfg(flags)))
423 # StraightLineIntersector does not need explicit configuration
424 if flags.Muon.MuonTrigger:
425 kwargs.setdefault("MaxIterations", 15)
426 if flags.Muon.SAMuonTrigger:
427 from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
428 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
429 MuonTrackSummaryToolCfg(flags)))
430 else:
431 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
432 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
433 MuonCombinedTrackSummaryToolCfg(flags)))
434
435 tool = CompFactory.Trk.iPatFitter(name, **kwargs)
436 result.setPrivateTools(tool)
437 return result
438
439
440def iPatSLFitterCfg(flags, name='iPatSLFitter', **kwargs):
441 kwargs.setdefault("LineFit", True)
442 kwargs.setdefault("LineMomentum", flags.Muon.straightLineFitMomentum)
443 return iPatFitterCfg(flags, name, **kwargs)
444
445# track cleaner configured to use the same fitter
446
447
448def MuidTrackCleanerCfg(flags, name='MuidTrackCleaner', **kwargs):
449 from MuonConfig.MuonRecToolsConfig import MuonTrackCleanerCfg
450 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
451 if flags.Beam.Type is BeamType.Cosmics:
452 kwargs.setdefault("PullCut", 5.0)
453 kwargs.setdefault("PullCutPhi", 10.0)
454 else:
455 kwargs.setdefault("PullCut", 4.0)
456 kwargs.setdefault("PullCutPhi", 4.0)
457 result = ComponentAccumulator()
458 if flags.Muon.MuonTrigger:
459 kwargs.setdefault("Iterate", False)
460 kwargs.setdefault("RecoverOutliers", False)
461 kwargs.setdefault("Fitter", result.popToolsAndMerge(
462 iPatFitterCfg(flags, 'iPatFitterClean', MaxIterations=4)))
463 else:
464 kwargs.setdefault(
465 "Fitter", result.popToolsAndMerge(iPatFitterCfg(flags)))
466 kwargs.setdefault(
467 "SLFitter", result.popToolsAndMerge(iPatSLFitterCfg(flags)))
468
469 # For these following items, set back to default, because overridden in MuonTrackCleaner and we don't want overrides.
470 # ALL properties that are set in old-style are: PullCut, PullCutPhi, Iterate, RecoverOutliers, Fitter and iPatSLFitter
471 # However since there are defaults we still DO need to explicitly set, it's still probably easier to use MuonTrackCleanerCfg
472 kwargs.setdefault("MaxAvePullSumPerChamber", 3.5)
473 kwargs.setdefault("Chi2Cut", 100.0)
474 kwargs.setdefault("Extrapolator", result.getPrimaryAndMerge(
475 AtlasExtrapolatorCfg(flags)))
476 result.setPrivateTools(result.popToolsAndMerge(
477 MuonTrackCleanerCfg(flags, name, **kwargs)))
478 return result
479
480
481def MuidCaloEnergyParam(flags, name='MuidCaloEnergyParam', **kwargs):
482 kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics)
483 return CompFactory.Rec.MuidCaloEnergyParam(name, **kwargs)
484
485
486def MuidCaloEnergyMeasCfg(flags, name='MuidCaloEnergyMeas', **kwargs):
487 result = ComponentAccumulator()
488 muidcaloenergyparam = MuidCaloEnergyParam(flags)
489 kwargs.setdefault("CaloParamTool", muidcaloenergyparam)
490 # FIXME! Need to setup the folders for CaloNoiseKey (which is why this needs a CA)
491 # Not sure how to do : if flags.haveRIO.Calo_on() but TBH, if the cells aren't there it will abort anyway
492 kwargs.setdefault("CellContainerLocation", "AllCalo")
493 kwargs.setdefault("NoiseThresInSigmas", 4.)
494 tool = CompFactory.Rec.MuidCaloEnergyMeas(name, **kwargs)
495 result.setPrivateTools(tool)
496 return result
497
498
499def MuidCaloEnergyToolParamCfg(flags, name='MuidCaloEnergyToolParam', **kwargs):
500 # Some duplication with MuidCaloEnergyToolCfg but probably safer like this, since
501 # we don't want to set e.g. MinFinalEnergy here
502 result = MuidCaloEnergyMeasCfg(flags)
503 kwargs.setdefault("CaloMeasTool", result.popPrivateTools())
504 kwargs.setdefault("EnergyLossMeasurement", False)
505
506 kwargs.setdefault("CaloParamTool", MuidCaloEnergyParam(flags))
507 if flags.Beam.Type is BeamType.Cosmics:
508 kwargs.setdefault("Cosmics", True)
509 kwargs.setdefault("TrackIsolationTool", result.popToolsAndMerge(
510 MuidTrackIsolationCfg(flags)))
511
512 result.setPrivateTools(CompFactory.Rec.MuidCaloEnergyTool(name, **kwargs))
513 return result
514
515
516def MuidTrackIsolationCfg(flags, name='MuidTrackIsolation', **kwargs):
517 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
518 kwargs.setdefault("InDetTracksLocation",
519 "CombinedInDetTracks" if flags.Detector.GeometryID else "CombinedITkTracks")
520 # RungeKuttaIntersector requires the magnetic field conditions
521 result = AtlasFieldCacheCondAlgCfg(flags)
522 tool = CompFactory.Rec.MuidTrackIsolation(name, **kwargs)
523 result.setPrivateTools(tool)
524 return result
525
526
527def MuidCaloEnergyToolCfg(flags, name='MuidCaloEnergyTool', **kwargs):
528 result = MuidCaloEnergyMeasCfg(flags)
529 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
530 result.merge(LArGMCfg(flags))
531 kwargs.setdefault("CaloMeasTool", result.popPrivateTools())
532 kwargs.setdefault("CaloParamTool", MuidCaloEnergyParam(flags))
533 kwargs.setdefault("MinFinalEnergy", 1.0*GeV)
534 kwargs.setdefault("MinMuonPt", 10.0*GeV)
535 kwargs.setdefault("MopParametrization", True)
536 if flags.Muon.MuonTrigger:
537 kwargs.setdefault("EnergyLossMeasurement", False)
538 kwargs.setdefault("TrackIsolation", False)
539 else:
540 kwargs.setdefault("EnergyLossMeasurement", True)
541 kwargs.setdefault("TrackIsolation", True)
542
543 kwargs.setdefault("TrackIsolationTool", result.popToolsAndMerge(
544 MuidTrackIsolationCfg(flags)))
545 kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics)
546 result.setPrivateTools(CompFactory.Rec.MuidCaloEnergyTool(name, **kwargs))
547 return result
548
549
550def MuidCaloTrackStateOnSurfaceCfg(flags, name='MuidCaloTrackStateOnSurface', **kwargs):
551 result = ComponentAccumulator()
552 from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
553 kwargs.setdefault("Propagator", result.popToolsAndMerge(
554 RungeKuttaPropagatorCfg(flags)))
555 kwargs.setdefault("MinRemainingEnergy", 0.2*GeV)
556 kwargs.setdefault("ParamPtCut", 3.0*GeV)
557 kwargs.setdefault("CaloEnergyDeposit", result.popToolsAndMerge(
558 MuidCaloEnergyToolCfg(flags)))
559 kwargs.setdefault("CaloEnergyParam", result.popToolsAndMerge(
561 # I don't think CaloMaterialParam i.e. MuidCaloMaterialParam needs explicit configuration
562 # Ditto for IntersectorWrapper, since it just uses RKIntersector which doesn't
563 tool = CompFactory.Rec.MuidCaloTrackStateOnSurface(name, **kwargs)
564 result.setPrivateTools(tool)
565 return result
566
567
568def MuidCaloTrackStateOnSurfaceParamCfg(flags, name='MuidCaloTrackStateOnSurfaceParam', **kwargs):
569 result = ComponentAccumulator()
570 from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
571 kwargs.setdefault("Propagator", result.popToolsAndMerge(
572 RungeKuttaPropagatorCfg(flags)))
573 kwargs.setdefault("MinRemainingEnergy", 0.2*GeV)
574 kwargs.setdefault("ParamPtCut", 3.0*GeV)
575 kwargs.setdefault("CaloEnergyDeposit", MuidCaloEnergyParam(flags))
576 kwargs.setdefault("CaloEnergyParam", MuidCaloEnergyParam(flags))
577 tool = CompFactory.Rec.MuidCaloTrackStateOnSurface(name, **kwargs)
578 result.setPrivateTools(tool)
579 return result
580
581
582def MuidMaterialEffectsOnTrackProviderCfg(flags, name='MuidMaterialEffectsOnTrackProvider', **kwargs):
583 result = MuidCaloTrackStateOnSurfaceCfg(flags)
584 kwargs.setdefault("TSOSTool", result.popPrivateTools())
586 kwargs.setdefault("TSOSToolParam", acc.popPrivateTools())
587 result.merge(acc)
588 kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics)
589 tool = CompFactory.Rec.MuidMaterialEffectsOnTrackProvider(name, **kwargs)
590 result.setPrivateTools(tool)
591 return result
592
593
594def MuidMaterialEffectsOnTrackProviderParamCfg(flags, name='MuidMaterialEffectsOnTrackProviderParam', **kwargs):
596 muidtsosparam = result.popPrivateTools()
597 kwargs.setdefault("TSOSTool", muidtsosparam)
598 kwargs.setdefault("TSOSToolParam", muidtsosparam)
599 kwargs.setdefault("Cosmics", flags.Beam.Type is BeamType.Cosmics)
600 tool = CompFactory.Rec.MuidMaterialEffectsOnTrackProvider(name, **kwargs)
601 result.setPrivateTools(tool)
602 return result
603
604
605def MuonTrackQueryCfg(flags, name="MuonTrackQuery", **kwargs):
606 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg
607 result = MdtDriftCircleOnTrackCreatorCfg(flags)
608 kwargs.setdefault("MdtRotCreator", result.popPrivateTools())
609 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
610 result.merge(TrackingGeometryCondAlgCfg(flags))
611 kwargs.setdefault("TrackingGeometryReadKey", "AtlasTrackingGeometry")
612
613 acc = iPatFitterCfg(flags)
614 kwargs.setdefault("Fitter", acc.popPrivateTools())
615 result.merge(acc)
616
617 tool = CompFactory.Rec.MuonTrackQuery(name, **kwargs)
618 result.setPrivateTools(tool)
619 return result
620
621
622def EMEO_MuonSegmentRegionRecoveryToolCfg(flags, name="MuonSegmentRegionRecoveryTool_EMEO"):
623 result = ComponentAccumulator()
624 from MuonConfig.MuonTrackBuildingConfig import EMEO_MuonChamberHoleRecoveryToolCfg
625 chamber_recovery = result.popToolsAndMerge(
626 EMEO_MuonChamberHoleRecoveryToolCfg(flags))
627 trk_builder = result.popToolsAndMerge(
629 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
630 muon_combined_track_summary = result.popToolsAndMerge(
631 MuonCombinedTrackSummaryToolCfg(flags))
632 tool = result.popToolsAndMerge(MuonSegmentRegionRecoveryToolCfg(flags,
633 name=name,
634 ChamberHoleRecoveryTool=chamber_recovery,
635 Builder=trk_builder,
636 TrackSummaryTool=muon_combined_track_summary,
637 STGCRegionSelector="",
638 MMRegionSelector="",
639 RecoverMM=False,
640 RecoverSTGC=False))
641 result.setPrivateTools(tool)
642 return result
643
644
645def EMEO_CombinedMuonTrackBuilderCfg(flags, name="MuonCombinedTrackBuilder_EMEO"):
646 result = ComponentAccumulator()
647 recovery_tool = result.popToolsAndMerge(
649 acc = CombinedMuonTrackBuilderCfg(flags, name,
650 MuonRotCreator="",
651 MuonHoleRecovery=recovery_tool)
652 # Need to reset this to be the primary tool
653 tool = result.popToolsAndMerge(acc)
654 result.setPrivateTools(tool)
655 return result
656
657
658def MuidErrorOptimisationToolCfg(flags, name='MuidErrorOptimisationTool', **kwargs):
659 from MuonConfig.MuonRecToolsConfig import MuonTrackSummaryHelperToolCfg, MuonRefitToolCfg
660 result = ComponentAccumulator()
661 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
662 MuonTrackSummaryHelperToolCfg(flags)))
663 useAlignErrs = True
664 if flags.IOVDb.DatabaseInstance == 'COMP200' or \
665 'HLT' in flags.IOVDb.GlobalTag or flags.Common.isOnline or flags.Muon.MuonTrigger:
666 useAlignErrs = False
667 kwargs.setdefault("RefitTool", result.popToolsAndMerge(MuonRefitToolCfg(
668 flags, name="MuidRefitTool", AlignmentErrors=useAlignErrs,
669 Fitter=result.popToolsAndMerge(iPatFitterCfg(flags)))))
670 tool = CompFactory.Muon.MuonErrorOptimisationTool(name, **kwargs)
671 result.setPrivateTools(tool)
672 return result
673
674
675def MuonAlignmentUncertToolThetaCfg(flags, name="MuonAlignmentUncertToolTheta", **kwargs):
676 result = ComponentAccumulator()
677 from MuonConfig.MuonGeometryConfig import TrackingVolumesSvcCfg
678 kwargs.setdefault("TrackingVolumesSvc", result.getPrimaryAndMerge(TrackingVolumesSvcCfg(flags)))
679 kwargs.setdefault("HistoName", "ThetaScattering")
680 kwargs.setdefault(
681 "InFile", "MuonCombinedBaseTools/AlignmentUncertainties/201029_initial/ID_MS_Uncertainties.root")
682 tool = CompFactory.Muon.MuonAlignmentUncertTool(name, **kwargs)
683 result.addPublicTool(tool)
684 return result
685
686
687def MuonAlignmentUncertToolPhiCfg(flags, name="MuonAlignmentUncertToolPhi", **kwargs):
688 result = ComponentAccumulator()
689 kwargs.setdefault("HistoName", "PhiScattering")
690 from MuonConfig.MuonGeometryConfig import TrackingVolumesSvcCfg
691 kwargs.setdefault("TrackingVolumesSvc", result.getPrimaryAndMerge(TrackingVolumesSvcCfg(flags)))
692 kwargs.setdefault(
693 "InFile", "MuonCombinedBaseTools/AlignmentUncertainties/201029_initial/ID_MS_Uncertainties.root")
694 tool = CompFactory.Muon.MuonAlignmentUncertTool(name, **kwargs)
695 result.addPublicTool(tool)
696 return result
697
698
699@AccumulatorCache
700def CombinedMuonTrackBuilderCfg(flags, name='CombinedMuonTrackBuilder', **kwargs):
701 from AthenaCommon.SystemOfUnits import meter
702 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import CscClusterOnTrackCreatorCfg, MdtDriftCircleOnTrackCreatorCfg, MuonClusterOnTrackCreatorCfg
703 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
704
705 result = ComponentAccumulator()
706
707 from MuonConfig.MuonGeometryConfig import TrackingVolumesSvcCfg
708 kwargs.setdefault("TrackingVolumesSvc", result.getPrimaryAndMerge(TrackingVolumesSvcCfg(flags)))
709
710 kwargs.setdefault("CaloEnergyParam", result.popToolsAndMerge(
712 kwargs.setdefault("CaloTSOS", result.popToolsAndMerge(
714 kwargs.setdefault("Cleaner", result.popToolsAndMerge(
715 MuidTrackCleanerCfg(flags)))
716 result.merge(MuonAlignmentUncertToolPhiCfg(flags))
717 kwargs.setdefault("AlignmentUncertToolPhi",
718 result.getPublicTool('MuonAlignmentUncertToolPhi'))
719 result.merge(MuonAlignmentUncertToolThetaCfg(flags))
720 kwargs.setdefault("AlignmentUncertToolTheta",
721 result.getPublicTool('MuonAlignmentUncertToolTheta'))
722
723 if flags.Detector.GeometryCSC and not flags.Muon.MuonTrigger:
724 kwargs.setdefault("CscRotCreator", result.popToolsAndMerge(
725 CscClusterOnTrackCreatorCfg(flags)))
726 else:
727 kwargs.setdefault("CscRotCreator", "")
728
729 kwargs.setdefault("Extrapolator", result.popToolsAndMerge(
730 AtlasExtrapolatorCfg(flags)))
731 kwargs.setdefault(
732 "Fitter", result.popToolsAndMerge(iPatFitterCfg(flags)))
733 kwargs.setdefault(
734 "SLFitter", result.popToolsAndMerge(iPatSLFitterCfg(flags)))
735 kwargs.setdefault("MaterialAllocator", result.popToolsAndMerge(
737 kwargs.setdefault("MdtRotCreator", result.popToolsAndMerge(
738 MdtDriftCircleOnTrackCreatorCfg(flags)))
739 kwargs.setdefault("MuonRotCreator", result.popToolsAndMerge(
740 MuonClusterOnTrackCreatorCfg(flags)))
741
742 # Tracking Geometry
743 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import (
744 TrackingGeometryCondAlgCfg)
745
746 geom_cond_key = result.getPrimaryAndMerge(
747 TrackingGeometryCondAlgCfg(flags)).TrackingGeometryWriteKey
748 kwargs.setdefault("TrackingGeometryReadKey", geom_cond_key)
749
750 kwargs.setdefault("CleanCombined", True)
751 kwargs.setdefault("CleanStandalone", True)
752 kwargs.setdefault("BadFitChi2", 2.5)
753 kwargs.setdefault("LargeMomentumError", 0.5)
754 kwargs.setdefault("LineMomentum", flags.Muon.straightLineFitMomentum)
755 kwargs.setdefault("LowMomentum", 10.*GeV)
756 kwargs.setdefault("MinEnergy", 0.3*GeV)
757 kwargs.setdefault("PerigeeAtSpectrometerEntrance", False)
758 kwargs.setdefault("ReallocateMaterial", False)
759 kwargs.setdefault("Vertex2DSigmaRPhi", 100.*mm)
760 kwargs.setdefault("Vertex3DSigmaRPhi", 6.*mm)
761 kwargs.setdefault("Vertex3DSigmaZ", 60.*mm)
762 kwargs.setdefault("UseCaloTG", True)
763
764 kwargs.setdefault("CaloMaterialProvider", result.popToolsAndMerge(
766 kwargs.setdefault("TrackQuery", result.popToolsAndMerge(
767 MuonTrackQueryCfg(flags)))
768
769 if flags.Muon.SAMuonTrigger:
770 from TrkConfig.TrkTrackSummaryToolConfig import MuonTrackSummaryToolCfg
771 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
772 MuonTrackSummaryToolCfg(flags)))
773 else:
774 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
775 MuonCombinedTrackSummaryToolCfg(flags)))
776
777 from TrkConfig.TrkExRungeKuttaPropagatorConfig import MuonCombinedPropagatorCfg, RungeKuttaPropagatorCfg
778 propagator = None
779 if flags.Muon.MuonTrigger:
780 propagator = result.popToolsAndMerge(RungeKuttaPropagatorCfg(flags))
781 else:
782 propagator = result.popToolsAndMerge(MuonCombinedPropagatorCfg(flags))
783 kwargs.setdefault("Propagator", propagator)
784 kwargs.setdefault("SLPropagator", propagator)
785 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
786 MuonEDMPrinterToolCfg(flags)))
787
788 if flags.Beam.Type is BeamType.Cosmics:
789 kwargs.setdefault("MdtRotCreator", "")
790 kwargs.setdefault("MuonRotCreator", "")
791 kwargs.setdefault("LowMomentum", 1.5*GeV)
792 kwargs.setdefault("ReallocateMaterial", False)
793 kwargs.setdefault("Vertex2DSigmaRPhi", 100.*mm)
794 kwargs.setdefault("Vertex3DSigmaRPhi", 100.*mm)
795 kwargs.setdefault("Vertex3DSigmaZ", 1.*meter)
796
797 # configure tools for data reprocessing
798 if flags.Muon.enableErrorTuning and 'MuonErrorOptimizer' not in kwargs:
799 erroropt = result.popToolsAndMerge(MuidErrorOptimisationToolCfg(
800 flags, name="MuidErrorOptimisationTool", PrepareForFit=False, RecreateStartingParameters=False))
801 kwargs.setdefault("MuonErrorOptimizer", erroropt)
802 else:
803 kwargs.setdefault("MuonErrorOptimizer", "")
804
805 if flags.Muon.MuonTrigger:
806 kwargs.setdefault("MuonHoleRecovery", "")
807 else:
808 if "MuonHoleRecovery" not in kwargs:
809 # Meeded to resolve circular dependency since MuonSegmentRegionRecoveryToolCfg calls CombinedMuonTrackBuilderCfg (i.e. this)!
810 muon_combined_track_summary = result.popToolsAndMerge(
811 MuonCombinedTrackSummaryToolCfg(flags))
812 acc = MuonSegmentRegionRecoveryToolCfg(
813 flags, name="MuidSegmentRegionRecoveryTool", TrackSummaryTool=muon_combined_track_summary)
814 kwargs.setdefault("MuonHoleRecovery", acc.popPrivateTools())
815 result.merge(acc)
816
817 if flags.Muon.doSegmentT0Fit:
818 kwargs.setdefault("MdtRotCreator", "")
819 tool = CompFactory.Rec.CombinedMuonTrackBuilder(name, **kwargs)
820 result.setPrivateTools(tool)
821 return result
822
823
824def CombinedMuonTrackBuilderFitCfg(flags, name='CombinedMuonTrackBuilderFit', **kwargs):
825 # In the old configuration we had duplication between CombinedMuonTrackBuilder and CombinedMuonTrackBuilderFit
826 # Here we just call the Combined
827 from MuonConfig.MuonTrackBuildingConfig import MuonChamberHoleRecoveryToolCfg
828 result = ComponentAccumulator()
829 kwargs.setdefault("PerigeeAtSpectrometerEntrance", True)
830 kwargs.setdefault("UseCaloTG", False)
831 if flags.Muon.MuonTrigger:
832 kwargs.setdefault("MuonErrorOptimizer", "")
833 else:
834 kwargs.setdefault("MuonErrorOptimizer", result.popToolsAndMerge(
835 MuidErrorOptimisationToolCfg(flags, PrepareForFit=False, RecreateStartingParameters=False)))
836 kwargs.setdefault("MuonHoleRecovery", result.popToolsAndMerge(
837 MuonChamberHoleRecoveryToolCfg(flags)))
838
839 tool = result.popToolsAndMerge(CombinedMuonTrackBuilderCfg(
840 flags, name, **kwargs)) # Need to reset this to be the primary tool
841 result.setPrivateTools(tool)
842 return result
843
844
845def EMEO_CombinedTrackBuilderFitCfg(flags, name="CombinedTrackBuilderFit_EMEO", **kwargs):
846 result = ComponentAccumulator()
847 from MuonConfig.MuonTrackBuildingConfig import EMEO_MuonChamberHoleRecoveryToolCfg
848 if not flags.Muon.MuonTrigger:
849 trk_builder = result.popToolsAndMerge(
850 EMEO_MuonChamberHoleRecoveryToolCfg(flags))
851 kwargs.setdefault("MuonHoleRecovery", trk_builder)
852 else:
853 kwargs.setdefault("MuonHoleRecovery", "")
854 kwargs.setdefault("MuonRotCreator", "")
855 tool = result.popToolsAndMerge(CombinedMuonTrackBuilderFitCfg(
856 flags, name, **kwargs)) # Need to reset this to be the primary tool
857 result.setPrivateTools(tool)
858 return result
859
860
861def MuonMatchQualityCfg(flags, name='MuonMatchQuality', **kwargs):
862 result = CombinedMuonTagTestToolCfg(flags)
863 kwargs.setdefault("TagTool", result.popPrivateTools())
864 kwargs.setdefault("TrackQuery", result.popToolsAndMerge(
865 MuonTrackQueryCfg(flags)))
866
867 tool = CompFactory.Rec.MuonMatchQuality(name, **kwargs)
868 result.setPrivateTools(tool)
869 return result
870
871
872def MuidMuonRecoveryCfg(flags, name='MuidMuonRecovery', **kwargs):
873 result = AtlasExtrapolatorCfg(flags)
874 kwargs.setdefault("Extrapolator", result.popPrivateTools())
875 kwargs.setdefault("TrackBuilder", result.popToolsAndMerge(
877
878 if "ResidualPullCalculator" not in kwargs:
879 from TrkConfig.TrkResidualPullCalculatorConfig import (
880 ResidualPullCalculatorCfg)
881 kwargs.setdefault("ResidualPullCalculator", result.popToolsAndMerge(
882 ResidualPullCalculatorCfg(flags)))
883
884 tool = CompFactory.Rec.MuidMuonRecovery(name, **kwargs)
885 result.setPrivateTools(tool)
886 return result
887
888
889def CombinedMuonTagTestToolCfg(flags, name='CombinedMuonTagTestTool', **kwargs):
890 result = AtlasExtrapolatorCfg(flags)
891 kwargs.setdefault("ExtrapolatorTool", result.popPrivateTools())
892 kwargs.setdefault("Chi2Cut", 50000.)
893 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import TrackingGeometryCondAlgCfg
894 result.merge(TrackingGeometryCondAlgCfg(flags))
895 kwargs.setdefault("TrackingGeometryReadKey", "AtlasTrackingGeometry")
896 tool = CompFactory.MuonCombined.MuonTrackTagTestTool(name, **kwargs)
897 result.setPrivateTools(tool)
898 return result
899
900# From MuonCaloTagTool.py
901
902
903def TrackDepositInCaloToolCfg(flags, name='TrackDepositInCaloTool', **kwargs):
904 from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg, ParticleCaloCellAssociationToolCfg
905 result = ComponentAccumulator()
906 kwargs.setdefault("ParticleCaloExtensionTool",
907 result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)))
908 kwargs.setdefault("ExtrapolatorHandle", result.popToolsAndMerge(
909 AtlasExtrapolatorCfg(flags)))
910 kwargs.setdefault("ParticleCaloCellAssociationTool",
911 result.popToolsAndMerge(ParticleCaloCellAssociationToolCfg(flags, name="Rec::ParticleCaloCellAssociationTool")))
912 tool = CompFactory.TrackDepositInCaloTool(name, **kwargs)
913 result.setPrivateTools(tool)
914 return result
915
916
917def CaloMuonLikelihoodToolCfg(flags, name='CaloMuonLikelihoodTool', **kwargs):
918 from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
919 result = ComponentAccumulator()
920 kwargs.setdefault("ParticleCaloExtensionTool",
921 result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags)))
922 tool = CompFactory.CaloMuonLikelihoodTool(name, **kwargs)
923 result.setPrivateTools(tool)
924 return result
925
926
927def CaloMuonScoreToolCfg(flags, name='CaloMuonScoreTool', **kwargs):
928 from TrackToCalo.TrackToCaloConfig import ParticleCaloCellAssociationToolCfg
929 result = ComponentAccumulator()
930 kwargs.setdefault("ParticleCaloCellAssociationTool",
931 result.popToolsAndMerge(ParticleCaloCellAssociationToolCfg(flags)))
932 tool = CompFactory.CaloMuonScoreTool(name, **kwargs)
933 result.setPrivateTools(tool)
934 return result
935
936
937def CaloMuonTagCfg(flags, name="CaloMuonTag", **kwargs):
938 result = ComponentAccumulator()
939 the_tool = CompFactory.CaloMuonTag(name, **kwargs)
940 result.setPrivateTools(the_tool)
941 return result
942
943
944def MuonCaloTagToolCfg(flags, name='MuonCaloTagTool', **kwargs):
945 result = ComponentAccumulator()
946 kwargs.setdefault("CaloMuonTagLoose",
947 result.popToolsAndMerge(CaloMuonTagCfg(flags, name="CaloMuonTagLoose", TagMode="Loose")))
948 kwargs.setdefault("CaloMuonTagTight",
949 result.popToolsAndMerge(CaloMuonTagCfg(flags)))
950 kwargs.setdefault("CaloMuonLikelihoodTool",
951 result.popToolsAndMerge(CaloMuonLikelihoodToolCfg(flags)))
952 kwargs.setdefault("CaloMuonScoreTool",
953 result.popToolsAndMerge(CaloMuonScoreToolCfg(flags)))
954 kwargs.setdefault("TrackDepositInCaloTool",
955 result.popToolsAndMerge(TrackDepositInCaloToolCfg(flags)))
956 from InDetConfig.InDetTrackSelectorToolConfig import CaloTrkMuIdAlgTrackSelectorToolCfg
957 kwargs.setdefault("TrackSelectorTool",
958 result.popToolsAndMerge(CaloTrkMuIdAlgTrackSelectorToolCfg(flags)))
959 kwargs.setdefault("doCaloLR", False)
960 the_tool = CompFactory.MuonCombined.MuonCaloTagTool(name, **kwargs)
961 result.setPrivateTools(the_tool)
962 return result
963
964# Misc
965
966
967def MuonLayerSegmentFinderToolCfg(flags, name="MuonLayerSegmentFinderTool", **kwargs):
968 from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MuonNSWSegmentFinderToolCfg, MuonPRDSelectionToolCfg
969 result = ComponentAccumulator()
970
971 from MuonConfig.MuonSegmentFindingConfig import Csc2dSegmentMakerCfg, Csc4dSegmentMakerCfg
972 kwargs.setdefault("Csc2DSegmentMaker", result.popToolsAndMerge(
973 Csc2dSegmentMakerCfg(flags)) if flags.Detector.GeometryCSC else "")
974 kwargs.setdefault("Csc4DSegmentMaker", result.popToolsAndMerge(
975 Csc4dSegmentMakerCfg(flags)) if flags.Detector.GeometryCSC else "")
976
977 kwargs.setdefault("MuonPRDSelectionTool", result.popToolsAndMerge(
978 MuonPRDSelectionToolCfg(flags)))
979 kwargs.setdefault("SegmentMaker", result.popToolsAndMerge(
980 DCMathSegmentMakerCfg(flags, name="DCMathSegmentMaker")))
981 kwargs.setdefault("NSWMuonClusterSegmentFinderTool",
982 result.popToolsAndMerge(MuonNSWSegmentFinderToolCfg(flags, name="MuonNSWSegmentFinderTool")))
983
984
985 from AthenaConfiguration.Enums import LHCPeriod
986 if flags.GeoModel.Run < LHCPeriod.Run3 or flags.Muon.MuonTrigger:
987 kwargs.setdefault("InSegmentContainer", "")
988 kwargs.setdefault("MuonLayerSegmentMatchingTool", "")
989 else:
990 kwargs.setdefault("MuonLayerSegmentMatchingTool", result.popToolsAndMerge(
992 tool = CompFactory.Muon.MuonLayerSegmentFinderTool(name, **kwargs)
993 result.setPrivateTools(tool)
994 return result
995
996
997def MuonLayerSegmentMatchingToolCfg(flags, name="MuonLayerSegmentMatchingTool", **kwargs):
998 result = AtlasExtrapolatorCfg(flags)
999 kwargs.setdefault("Extrapolator", result.popPrivateTools())
1000 MuTagTool = result.getPrimaryAndMerge(MuTagMatchingToolCfg(flags))
1001 kwargs.setdefault("MatchTool", MuTagTool)
1002
1003 tool = CompFactory.Muon.MuonLayerSegmentMatchingTool(name, **kwargs)
1004 result.setPrivateTools(tool)
1005 return result
1006
1007
1008def MuonInsideOutRecoToolCfg(flags, name="MuonInsideOutRecoTool", **kwargs):
1009 from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg
1010 if flags.Muon.MuonTrigger:
1011 kwargs.setdefault("VertexContainer", "")
1012 result = ComponentAccumulator()
1013 kwargs.setdefault("MuonEDMPrinterTool", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)))
1014 layersegmentfindertool = result.popToolsAndMerge(
1015 MuonLayerSegmentFinderToolCfg(flags, name="MuonLayerSegmentFinderTool"))
1016 kwargs.setdefault("MuonLayerSegmentFinderTool", layersegmentfindertool)
1017 kwargs.setdefault("MuonLayerSegmentMatchingTool", result.popToolsAndMerge(
1019 kwargs.setdefault("MuonLayerAmbiguitySolverTool", result.popToolsAndMerge(
1021 kwargs.setdefault("MuonCandidateTrackBuilderTool", result.popToolsAndMerge(
1023 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
1024 kwargs.setdefault("TrackSummaryTool", result.popToolsAndMerge(
1025 MuonCombinedTrackSummaryToolCfg(flags)))
1026 kwargs.setdefault("MuonTrackBuilder", result.popToolsAndMerge(
1028 kwargs.setdefault("TrackAmbiguityProcessor",
1029 result.popToolsAndMerge(MuonAmbiProcessorCfg(flags)))
1030
1031 tool = CompFactory.MuonCombined.MuonInsideOutRecoTool(name, **kwargs)
1032 result.setPrivateTools(tool)
1033 return result
1034
1035
1036def MuonCandidateTrackBuilderToolCfg(flags, name="MuonCandidateTrackBuilderTool", **kwargs):
1037 result = CombinedMuonTrackBuilderCfg(flags)
1038 kwargs.setdefault("MuonTrackBuilder", result.popPrivateTools())
1039 muoncandidatetrackbuilder = CompFactory.Muon.MuonCandidateTrackBuilderTool(
1040 name, **kwargs)
1041 result.setPrivateTools(muoncandidatetrackbuilder)
1042 return result
1043
1044
1045def MuonSegmentSelectionToolCfg(flags, name="MuonSegmentSelectionTool", **kwargs):
1046 if flags.Input.isMC is False:
1047 kwargs.setdefault("GoodADCFractionCut", 0.5)
1048 kwargs.setdefault("MinADCPerSegmentCut", 100)
1049 result = ComponentAccumulator()
1050 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
1051 MuonEDMPrinterToolCfg(flags)))
1052 muon_segment_hit_summary_tool = result.popToolsAndMerge(
1054 kwargs.setdefault("MuonSegmentHitSummaryTool",
1055 muon_segment_hit_summary_tool)
1056 result.addPublicTool(muon_segment_hit_summary_tool)
1057
1058 result.setPrivateTools(
1059 CompFactory.Muon.MuonSegmentSelectionTool(name, **kwargs))
1060 return result
1061
1062
1063def MuonLayerAmbiguitySolverToolCfg(flags, name="MuonLayerAmbiguitySolverTool", **kwargs):
1064 from MuonConfig.MuonTrackBuildingConfig import MuonSegmentMatchingToolCfg, MooTrackBuilderCfg
1065 result = MuonSegmentSelectionToolCfg(flags)
1066 kwargs.setdefault("MuonSegmentSelectionTool", result.popPrivateTools())
1067 kwargs.setdefault("MuonSegmentMatchingTool", result.popToolsAndMerge(
1068 MuonSegmentMatchingToolCfg(flags, name='MuonSegmentMatchingToolTight', TightSegmentMatching=True)))
1069
1070 kwargs.setdefault("MuonSegmentTrackBuilder",
1071 result.popToolsAndMerge(MooTrackBuilderCfg(flags, name='MooMuonTrackBuilder', prefix='MuSt_')))
1072 kwargs.setdefault("MuonEDMPrinterTool", result.getPrimaryAndMerge(
1073 MuonEDMPrinterToolCfg(flags)))
1074
1075 result.setPrivateTools(
1076 CompFactory.Muon.MuonLayerAmbiguitySolverTool(name, **kwargs))
1077 return result
1078
1079
1080def MdtDriftCircleOnTrackCreatorStauCfg(flags, name="MdtDriftCircleOnTrackCreatorStau", **kwargs):
1081 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg, MdtCalibWindowNumber, MdtCalibToolForRotsCfg
1082 result = ComponentAccumulator()
1083 kwargs.setdefault("TimingMode", 3)
1084 kwargs.setdefault("CalibrationTool", result.popToolsAndMerge(MdtCalibToolForRotsCfg(flags, TimeWindowSetting = MdtCalibWindowNumber('Collision_t0fit') )) )
1085 the_tool = result.popToolsAndMerge(MdtDriftCircleOnTrackCreatorCfg(flags, name, **kwargs))
1086 result.setPrivateTools(the_tool)
1087 return result
1088
1089
1090def MuonStauRecoToolCfg(flags, name="MuonStauRecoTool", **kwargs):
1091 # In the old configuration this was split over several functions. But since these Stau tools are only used here,
1092 # trying a new approach. We can always refactorise later if necessary.
1093 from MuonConfig.MuonSegmentFindingConfig import DCMathSegmentMakerCfg, MuonPRDSelectionToolCfg
1094 from MuonConfig.MuonTrackBuildingConfig import MuonChamberHoleRecoveryToolCfg
1095 from MuonConfig.MuonRecToolsConfig import MuonAmbiProcessorCfg, MuonSeededSegmentFinderCfg
1096 from MuonConfig.MuonRIO_OnTrackCreatorToolConfig import MdtDriftCircleOnTrackCreatorCfg
1097 from MuonConfig.MuonSegmentFindingConfig import MuonLayerHoughAlgCfg
1098 kwargs.setdefault("DoSummary", flags.Muon.printSummary)
1099 kwargs.setdefault("ConsideredPDGs", [13, -13, 1000015, -1000015])
1100 kwargs.setdefault("DoTruth", flags.Input.isMC)
1101 kwargs.setdefault("AddMDTExtrasMuGirlLowBeta", flags.MuonCombined.addMDTExtrasMuGirlLowBeta)
1102
1103 result = ComponentAccumulator()
1104 result.merge(MuonLayerHoughAlgCfg(flags))
1105 # Not setting up MuonIdHelperSvc nor MuonEDMHelperSvc
1106 kwargs.setdefault("MuonEDMPrinterTool", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)))
1107 kwargs.setdefault("MuonPRDSelectionTool", result.popToolsAndMerge(MuonPRDSelectionToolCfg(flags)))
1108
1109 # This is going to be used in a few tools below
1110 staurotcreator = result.popToolsAndMerge(MdtDriftCircleOnTrackCreatorStauCfg(flags))
1111 kwargs.setdefault("MuonPRDSelectionToolStau",
1112 result.popToolsAndMerge(MuonPRDSelectionToolCfg(flags,
1113 "MuonPRDSelectionToolStau",
1114 MdtDriftCircleOnTrackCreator=staurotcreator)))
1115
1116 segmentmaker = result.popToolsAndMerge(DCMathSegmentMakerCfg(
1117 flags, name="DCMathStauSegmentMaker", MdtCreator=staurotcreator))
1118 # segmentmaker also used by MuonSeededSegmentFinder below
1119 kwargs.setdefault("MuonSegmentMaker", segmentmaker)
1120 kwargs.setdefault("MuonSegmentMakerT0Fit", result.popToolsAndMerge(DCMathSegmentMakerCfg(
1121 flags, name="DCMathT0FitSegmentMaker", doSegmentT0Fit=True)))
1122 # ^ doSegmentT0Fit overrides several defaults, including MdtCreatorT0 and MdtSegmentFinder
1123
1124 kwargs.setdefault("MuonLayerSegmentMatchingTool", result.popToolsAndMerge(
1126
1127 # Not configuring MuonRecoValidationTool as it is off by default, but it would need configuring if used
1128 kwargs.setdefault("TrackAmbiguityProcessor",
1129 result.popToolsAndMerge(MuonAmbiProcessorCfg(flags)))
1130 # I don't believe MuonHitTimingTool needs configuration.
1131 kwargs.setdefault("MuonPRDSelectionTool", result.popToolsAndMerge(
1132 MuonPRDSelectionToolCfg(flags)))
1133 kwargs.setdefault("MuonPRDSelectionToolStau", result.popToolsAndMerge(
1134 MuonPRDSelectionToolCfg(flags, MdtDriftCircleOnTrackCreator=staurotcreator)))
1135 kwargs.setdefault("MdtDriftCircleOnTrackCreator", result.popToolsAndMerge(
1136 MdtDriftCircleOnTrackCreatorCfg(flags)))
1137 kwargs.setdefault("MdtDriftCircleOnTrackCreatorStau", staurotcreator)
1138 # Now setup MuonInsideOutRecoTool property of MuonStauRecoTool. Long chain here! Could split for clarity. Another option would be to have a Stau flag on
1139 # shared tool functions.
1140 chamberholerecoverytool = result.popToolsAndMerge(MuonChamberHoleRecoveryToolCfg(flags,
1141 sTgcPrepDataContainer="",
1142 MMPrepDataContainer=""))
1143 seededsegmentfinder = result.popToolsAndMerge(MuonSeededSegmentFinderCfg(flags, name="MuonStauSeededSegmentFinder", MdtRotCreator=staurotcreator,
1144 SegmentMaker=segmentmaker, SegmentMakerNoHoles=segmentmaker))
1145 fitter = result.popToolsAndMerge(CombinedMuonTrackBuilderFitCfg(
1146 flags, name="CombinedStauTrackBuilderFit", MdtRotCreator=staurotcreator))
1147 from TrkConfig.TrkTrackSummaryToolConfig import MuonCombinedTrackSummaryToolCfg
1148 muon_combined_track_summary = result.popToolsAndMerge(
1149 MuonCombinedTrackSummaryToolCfg(flags))
1150 muidsegmentregionrecovery = result.popToolsAndMerge(MuonSegmentRegionRecoveryToolCfg(flags, name="MuonStauSegmentRegionRecoveryTool", SeededSegmentFinder=seededsegmentfinder,
1151 RecoverMM=False, RecoverSTGC=False, MMRegionSelector="", STGCRegionSelector="",
1152 ChamberHoleRecoveryTool=chamberholerecoverytool, Fitter=fitter, TrackSummaryTool=muon_combined_track_summary))
1153 trackbuilder = result.popToolsAndMerge(CombinedMuonTrackBuilderCfg(
1154 flags, name="CombinedStauTrackBuilder", MdtRotCreator=staurotcreator, MuonHoleRecovery=muidsegmentregionrecovery))
1155 muoncandidatetrackbuilder = CompFactory.Muon.MuonCandidateTrackBuilderTool(
1156 name="MuonStauCandidateTrackBuilderTool", MuonTrackBuilder=trackbuilder)
1157 kwargs.setdefault("MuonInsideOutRecoTool", result.popToolsAndMerge(
1158 MuonInsideOutRecoToolCfg(flags, name='MuonStauInsideOutRecoTool', MuonCandidateTrackBuilderTool=muoncandidatetrackbuilder)))
1159 # Rest
1160
1161 tool = CompFactory.MuonCombined.MuonStauRecoTool(name, **kwargs)
1162 result.setPrivateTools(tool)
1163 return result
1164
1165
1166def MuonSystemExtensionToolCfg(flags, **kwargs):
1167 result = ComponentAccumulator()
1168
1169 from TrackToCalo.TrackToCaloConfig import ParticleCaloExtensionToolCfg
1170 from MuonConfig.MuonRecToolsConfig import MuonEDMPrinterToolCfg
1171
1172 kwargs.setdefault("Extrapolator", result.popToolsAndMerge(AtlasExtrapolatorCfg(flags)))
1173 kwargs.setdefault("Printer", result.addPublicTool(result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags))) )
1174 kwargs.setdefault("ParticleCaloExtensionTool",
1175 result.popToolsAndMerge(ParticleCaloExtensionToolCfg(flags,
1176 name='MuonParticleCaloExtensionTool')))
1177
1178
1179 muon_ext_tool = CompFactory.Muon.MuonSystemExtensionTool("MuonSystemExtensionTool", **kwargs)
1180 result.setPrivateTools(muon_ext_tool)
1181 return result
1182
1183
1184def MuTagMatchingToolCfg(flags, name='MuTagMatchingTool', **kwargs):
1185 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
1186 from TrkConfig.TrkExRungeKuttaPropagatorConfig import RungeKuttaPropagatorCfg
1187
1188 #TODO: defaults in cxx
1189 kwargs.setdefault("AssumeLocalErrors", True)
1190 kwargs.setdefault("PhiCut", 30.)
1191 kwargs.setdefault("GlobalPhiCut", 1.)
1192 kwargs.setdefault("ThetaCut", 5.)
1193 kwargs.setdefault("GlobalThetaCut", 0.5)
1194 kwargs.setdefault("ThetaAngleCut", 5.)
1195 kwargs.setdefault("DoDistanceCut", True)
1196 kwargs.setdefault("CombinedPullCut", 3.0)
1197
1198 result = AtlasExtrapolatorCfg(flags)
1199 kwargs.setdefault("IExtrapolator", result.popPrivateTools())
1200 kwargs.setdefault("Propagator", result.popToolsAndMerge(
1201 RungeKuttaPropagatorCfg(flags)))
1202 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
1203 MuonEDMPrinterToolCfg(flags)))
1204 kwargs.setdefault("MuonSegmentHitSummary", result.popToolsAndMerge(
1206 kwargs.setdefault("MuonSegmentSelection", result.popToolsAndMerge(
1208
1209 if "ResidualPullCalculator" not in kwargs:
1210 from TrkConfig.TrkResidualPullCalculatorConfig import (
1211 ResidualPullCalculatorCfg)
1212 kwargs.setdefault("ResidualPullCalculator", result.popToolsAndMerge(
1213 ResidualPullCalculatorCfg(flags)))
1214
1215 from TrackingGeometryCondAlg.AtlasTrackingGeometryCondAlgConfig import (
1216 TrackingGeometryCondAlgCfg)
1217 acc = TrackingGeometryCondAlgCfg(flags)
1218 geom_cond_key = acc.getPrimary().TrackingGeometryWriteKey
1219 result.merge(acc)
1220 kwargs.setdefault("TrackingGeometryReadKey", geom_cond_key)
1221
1222 tool = CompFactory.MuTagMatchingTool(name, **kwargs)
1223
1224 result.addPublicTool(tool, primary=True)
1225 return result
1226
1227
1228def MuTagAmbiguitySolverToolCfg(flags, name='MuTagAmbiguitySolverTool', **kwargs):
1229 from MuonConfig.MuonTrackBuildingConfig import MuonSegmentMatchingToolCfg
1230 #TODO: defaults in cxx
1231 kwargs.setdefault("RejectOuterEndcap", True)
1232 kwargs.setdefault("RejectMatchPhi", True)
1233 result = ComponentAccumulator()
1234 kwargs.setdefault("Printer", result.getPrimaryAndMerge(MuonEDMPrinterToolCfg(flags)))
1235 kwargs.setdefault("MuonSegmentMatchingTool", result.popToolsAndMerge(
1236 MuonSegmentMatchingToolCfg(flags, name='MuonSegmentMatchingTool', doPhiMatching=False)))
1237 # EJWM. Not sure where doPhiMatching is set to False in old, but this is what I see in configuration diffs
1238
1239 tool = CompFactory.MuTagAmbiguitySolverTool(name, **kwargs)
1240 result.addPublicTool(tool, primary=True)
1241 return result
1242
1243
1244def MuonSegmentTagToolCfg(flags, name="MuonSegmentTagTool", **kwargs):
1245 result = ComponentAccumulator()
1246 mu_tag_matching = result.getPrimaryAndMerge(MuTagMatchingToolCfg(flags))
1247 kwargs.setdefault("MuTagMatchingTool", mu_tag_matching)
1248
1249 kwargs.setdefault("Printer", result.getPrimaryAndMerge(
1250 MuonEDMPrinterToolCfg(flags)))
1251 kwargs.setdefault("MuTagAmbiguitySolverTool", result.getPrimaryAndMerge(
1253 kwargs.setdefault("MuonSegmentSelectionTool", result.getPrimaryAndMerge(
1255 kwargs.setdefault("MuonSegmentHitSummaryTool", result.getPrimaryAndMerge(
1257
1258 result.setPrivateTools(
1259 CompFactory.MuonCombined.MuonSegmentTagTool(name, **kwargs))
1260 return result
AlgTool returning the parametrized value for the calorimeter energy deposited by a traversing muon.
MuonMatchQualityCfg(flags, name='MuonMatchQuality', **kwargs)
MuTagMatchingToolCfg(flags, name='MuTagMatchingTool', **kwargs)
MuonInDetForwardCandidateToolCfg(flags, name='InDetForwardCandidateTool', **kwargs)
MuidCaloTrackStateOnSurfaceParamCfg(flags, name='MuidCaloTrackStateOnSurfaceParam', **kwargs)
MuidTrackCleanerCfg(flags, name='MuidTrackCleaner', **kwargs)
MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool", **kwargs)
MuonMaterialProviderToolCfg(flags, name="MuonTrkMaterialProviderTool", **kwargs)
MuidMuonRecoveryCfg(flags, name='MuidMuonRecovery', **kwargs)
MuonLayerSegmentFinderToolCfg(flags, name="MuonLayerSegmentFinderTool", **kwargs)
MuonSegmentConverterToolCfg(flags, name="MuonSegmentConverterTool", **kwargs)
MuidTrackIsolationCfg(flags, name='MuidTrackIsolation', **kwargs)
MuidCaloTrackStateOnSurfaceCfg(flags, name='MuidCaloTrackStateOnSurface', **kwargs)
MuidMaterialAllocatorCfg(flags, name='MuidMaterialAllocator', **kwargs)
MuidCaloEnergyParam(flags, name='MuidCaloEnergyParam', **kwargs)
MuonCombinedToolCfg(flags, name="MuonCombinedTool", **kwargs)
MuonLayerSegmentMatchingToolCfg(flags, name="MuonLayerSegmentMatchingTool", **kwargs)
MuonCombinedStacoTagToolCfg(flags, name="MuonCombinedStacoTagTool", **kwargs)
EMEO_CombinedMuonTrackBuilderCfg(flags, name="MuonCombinedTrackBuilder_EMEO")
MuonCreatorToolCfg(flags, name="MuonCreatorTool", **kwargs)
MuidMaterialEffectsOnTrackProviderCfg(flags, name='MuidMaterialEffectsOnTrackProvider', **kwargs)
EMEO_CombinedTrackBuilderFitCfg(flags, name="CombinedTrackBuilderFit_EMEO", **kwargs)
EMEO_MuonCombinedFitTagToolCfg(flags, name="MuonCombinedFitTagTool_EMEO", **kwargs)
MuonTrackQueryCfg(flags, name="MuonTrackQuery", **kwargs)
MuonCandidateTrackBuilderToolCfg(flags, name="MuonCandidateTrackBuilderTool", **kwargs)
MuidCaloEnergyMeasCfg(flags, name='MuidCaloEnergyMeas', **kwargs)
MuonCaloTagToolCfg(flags, name='MuonCaloTagTool', **kwargs)
MuonSegmentSelectionToolCfg(flags, name="MuonSegmentSelectionTool", **kwargs)
MdtDriftCircleOnTrackCreatorStauCfg(flags, name="MdtDriftCircleOnTrackCreatorStau", **kwargs)
EMEO_MuonCombinedToolCfg(flags, name="MuonCombinedTool_EMEO", **kwargs)
iPatSLFitterCfg(flags, name='iPatSLFitter', **kwargs)
MuonSegmentHitSummaryToolCfg(flags, name="MuonSegmentHitSummaryTool", **kwargs)
InDetCandidateToolCfg(flags, name="InDetCandidateTool", **kwargs)
TrackDepositInCaloToolCfg(flags, name='TrackDepositInCaloTool', **kwargs)
MuonCandidateToolCfg(flags, name="MuonCandidateTool", **kwargs)
MuidErrorOptimisationToolCfg(flags, name='MuidErrorOptimisationTool', **kwargs)
MuidCaloEnergyToolCfg(flags, name='MuidCaloEnergyTool', **kwargs)
MuidMaterialEffectsOnTrackProviderParamCfg(flags, name='MuidMaterialEffectsOnTrackProviderParam', **kwargs)
MuonSegmentTagToolCfg(flags, name="MuonSegmentTagTool", **kwargs)
EMEO_MuonSegmentRegionRecoveryToolCfg(flags, name="MuonSegmentRegionRecoveryTool_EMEO")
ExtrapolateMuonToIPToolCfg(flags, name="ExtrapolateMuonToIPTool", **kwargs)
MuonAlignmentUncertToolThetaCfg(flags, name="MuonAlignmentUncertToolTheta", **kwargs)
CaloMuonScoreToolCfg(flags, name='CaloMuonScoreTool', **kwargs)
MuonLayerAmbiguitySolverToolCfg(flags, name="MuonLayerAmbiguitySolverTool", **kwargs)
CaloMuonTagCfg(flags, name="CaloMuonTag", **kwargs)
CombinedMuonTagTestToolCfg(flags, name='CombinedMuonTagTestTool', **kwargs)
CaloMuonLikelihoodToolCfg(flags, name='CaloMuonLikelihoodTool', **kwargs)
MuonDressingToolCfg(flags, name="MuonDressingTool", **kwargs)
MuidCaloEnergyToolParamCfg(flags, name='MuidCaloEnergyToolParam', **kwargs)
MuTagAmbiguitySolverToolCfg(flags, name='MuTagAmbiguitySolverTool', **kwargs)
CombinedMuonTrackBuilderFitCfg(flags, name='CombinedMuonTrackBuilderFit', **kwargs)
MuonCaloEnergyToolCfg(flags, name="MuonCaloEnergyTool", **kwargs)
CombinedMuonTrackBuilderCfg(flags, name='CombinedMuonTrackBuilder', **kwargs)
MuonInsideOutRecoToolCfg(flags, name="MuonInsideOutRecoTool", **kwargs)
MuonCombinedDebuggerToolCfg(flags, name="MuonCombinedDebuggerTool", **kwargs)
iPatFitterCfg(flags, name='iPatFitter', **kwargs)
MuonAlignmentUncertToolPhiCfg(flags, name="MuonAlignmentUncertToolPhi", **kwargs)
MuonStauRecoToolCfg(flags, name="MuonStauRecoTool", **kwargs)