52 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
53 from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
54 from AthenaConfiguration.ComponentFactory
import CompFactory
55 import TrkConfig.AtlasExtrapolatorToolsConfig
as TC
56 from TrkConfig.TrkExSTEP_PropagatorConfig
import AtlasSTEP_PropagatorCfg
66 from TrkConfig.AtlasExtrapolatorToolsConfig
import (
67 AtlasMultipleScatteringUpdatorCfg)
72 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import (
73 RungeKuttaPropagatorCfg)
74 AtlasRungeKuttaPropagator = result.popToolsAndMerge(
76 AtlasSTEP_Propagator = result.popToolsAndMerge(
79 if flags.Detector.GeometryITk:
80 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import ITkPropagatorCfg
81 ITkPropagator = result.popToolsAndMerge(
85 AtlasPropagators += [AtlasRungeKuttaPropagator]
86 AtlasPropagators += [AtlasSTEP_Propagator]
87 if flags.Detector.GeometryITk:
88 AtlasPropagators += [ITkPropagator]
91 AtlasMaterialEffectsUpdator = result.popToolsAndMerge(
92 TC.AtlasMaterialEffectsUpdatorCfg(flags))
93 AtlasMaterialEffectsUpdatorLandau = result.popToolsAndMerge(
94 TC.AtlasMaterialEffectsUpdatorLandauCfg(flags))
95 ITkMaterialEffectsUpdator =
None
96 if flags.Detector.GeometryITk:
97 ITkMaterialEffectsUpdator = result.popToolsAndMerge(
98 TC.ITkMaterialEffectsUpdatorCfg(flags))
101 AtlasUpdators += [AtlasMaterialEffectsUpdator]
102 AtlasUpdators += [AtlasMaterialEffectsUpdatorLandau]
103 if flags.Detector.GeometryITk:
104 AtlasUpdators += [ITkMaterialEffectsUpdator]
106 AtlasNavigator = result.popToolsAndMerge(TC.AtlasNavigatorCfg(flags))
109 AtlasSubPropagators = []
110 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
111 if flags.Detector.GeometryITk:
112 AtlasSubPropagators += [ITkPropagator.name]
114 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
115 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
116 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
117 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
118 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
120 AtlasSubUpdators = []
121 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
122 if flags.Detector.GeometryITk:
123 AtlasSubUpdators += [ITkMaterialEffectsUpdator.name]
125 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
126 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
127 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
128 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
129 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
131 AtlasELossUpdater = result.popToolsAndMerge(
132 TC.AtlasEnergyLossUpdatorCfg(flags))
133 AtlasEnergyLossUpdater = AtlasELossUpdater
136 Extrapolator = CompFactory.Trk.Extrapolator(
138 Navigator=AtlasNavigator,
139 MaterialEffectsUpdators=AtlasUpdators,
140 MultipleScatteringUpdater=result.popToolsAndMerge(
142 STEP_Propagator=AtlasSTEP_Propagator,
143 Propagators=AtlasPropagators,
144 SubPropagators=AtlasSubPropagators,
145 SubMEUpdators=AtlasSubUpdators,
146 EnergyLossUpdater=AtlasEnergyLossUpdater
149 result.setPrivateTools(Extrapolator)
161 PFlowExtrapolator = result.popToolsAndMerge(
164 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import (
165 RungeKuttaPropagatorCfg)
166 RungeKuttaPropagator = result.popToolsAndMerge(
168 from TrkConfig.TrkExSTEP_PropagatorConfig
import (
169 AtlasSTEP_PropagatorCfg)
170 pflowSTEP_Propagator = result.popToolsAndMerge(
173 pflowPropagators = []
174 pflowPropagators += [RungeKuttaPropagator]
175 pflowPropagators += [pflowSTEP_Propagator]
177 pflowSubPropagators = []
178 pflowSubPropagators += [RungeKuttaPropagator.name]
179 pflowSubPropagators += [RungeKuttaPropagator.name]
180 pflowSubPropagators += [pflowSTEP_Propagator.name]
181 pflowSubPropagators += [pflowSTEP_Propagator.name]
182 pflowSubPropagators += [pflowSTEP_Propagator.name]
183 pflowSubPropagators += [RungeKuttaPropagator.name]
185 PFlowExtrapolator.Propagators = pflowPropagators
186 PFlowExtrapolator.SubPropagators = pflowSubPropagators
187 PFlowExtrapolator.STEP_Propagator = pflowSTEP_Propagator
189 result.setPrivateTools(PFlowExtrapolator)
202 egammaExtrapolator = result.popToolsAndMerge(
205 egammaPropagators = []
208 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import (
209 RungeKuttaPropagatorCfg)
210 RungeKuttaPropagator = result.popToolsAndMerge(
212 MaterialEffectsUpdator = result.popToolsAndMerge(
213 TC.AtlasMaterialEffectsUpdatorCfg(flags))
215 egammaPropagators += [RungeKuttaPropagator]
216 egammaUpdators += [MaterialEffectsUpdator]
218 from TrkConfig.TrkExSTEP_PropagatorConfig
import (
219 AtlasNoMatSTEP_PropagatorCfg)
220 NoMatSTEP_Propagator = result.popToolsAndMerge(
222 NoElossMaterialEffectsUpdator = result.popToolsAndMerge(
223 TC.AtlasNoElossMaterialEffectsUpdatorCfg(flags))
225 egammaPropagators += [NoMatSTEP_Propagator]
226 egammaUpdators += [NoElossMaterialEffectsUpdator]
228 if flags.Detector.GeometryITk:
229 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import ITkPropagatorCfg
230 ITkPropagator = result.popToolsAndMerge(
232 ITkMaterialEffectsUpdator = result.popToolsAndMerge(
233 TC.ITkMaterialEffectsUpdatorCfg(flags))
235 egammaPropagators += [ITkPropagator]
236 egammaUpdators += [ITkMaterialEffectsUpdator]
239 egammaSubPropagators = []
240 egammaSubUpdators = []
242 egammaSubPropagators += [RungeKuttaPropagator.name]
243 egammaSubUpdators += [MaterialEffectsUpdator.name]
245 if flags.Detector.GeometryITk:
246 egammaSubPropagators += [ITkPropagator.name]
247 egammaSubUpdators += [ITkMaterialEffectsUpdator.name]
249 egammaSubPropagators += [RungeKuttaPropagator.name]
250 egammaSubUpdators += [MaterialEffectsUpdator.name]
252 egammaSubPropagators += [RungeKuttaPropagator.name]
253 egammaSubUpdators += [MaterialEffectsUpdator.name]
255 egammaSubPropagators += [RungeKuttaPropagator.name]
256 egammaSubUpdators += [NoElossMaterialEffectsUpdator.name]
258 egammaSubPropagators += [NoMatSTEP_Propagator.name]
259 egammaSubUpdators += [NoElossMaterialEffectsUpdator.name]
261 egammaSubPropagators += [RungeKuttaPropagator.name]
262 egammaSubUpdators += [MaterialEffectsUpdator.name]
264 egammaExtrapolator.MaterialEffectsUpdators = egammaUpdators
265 egammaExtrapolator.SubMEUpdators = egammaSubUpdators
266 egammaExtrapolator.Propagators = egammaPropagators
267 egammaExtrapolator.SubPropagators = egammaSubPropagators
269 egammaExtrapolator.STEP_Propagator = NoMatSTEP_Propagator
271 egammaExtrapolator.ApplyMaterialEffects =
False
273 result.setPrivateTools(egammaExtrapolator)
279 name='MCTruthClassifierExtrapolator'):
289 MCTruthExtrapolator = result.popToolsAndMerge(
294 NoElossMaterialEffectsUpdator = result.popToolsAndMerge(
295 TC.AtlasNoElossMaterialEffectsUpdatorCfg(flags))
296 MCTruthUpdators += [NoElossMaterialEffectsUpdator]
298 MCTruthSubUpdators = []
301 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
302 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
303 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
304 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
305 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
306 MCTruthSubUpdators += [NoElossMaterialEffectsUpdator.name]
308 MCTruthExtrapolator.MaterialEffectsUpdators = MCTruthUpdators
309 MCTruthExtrapolator.SubMEUpdators = MCTruthSubUpdators
311 MCTruthExtrapolator.ApplyMaterialEffects =
False
313 result.setPrivateTools(MCTruthExtrapolator)
326 if 'Propagators' not in kwargs:
327 from TrkConfig.TrkExRungeKuttaPropagatorConfig
import (
329 InDetPropagator = result.popToolsAndMerge(
331 Propagators = [InDetPropagator]
332 kwargs.setdefault(
"Propagators", Propagators)
334 propagator = kwargs.get(
'Propagators')[0].name
if (
335 kwargs.get(
'Propagators',
None)
is not None
336 and len(kwargs.get(
'Propagators',
None)) > 0)
else None
338 if 'MaterialEffectsUpdators' not in kwargs:
339 InDetMaterialEffectsUpdator = result.getPrimaryAndMerge(
340 TC.InDetMaterialEffectsUpdatorCfg(flags))
341 MaterialEffectsUpdators = [InDetMaterialEffectsUpdator]
342 kwargs.setdefault(
"MaterialEffectsUpdators", MaterialEffectsUpdators)
343 material_updator = kwargs.get(
'MaterialEffectsUpdators')[0].name
if (
344 kwargs.get(
'MaterialEffectsUpdators',
None)
is not None
345 and len(kwargs.get(
'MaterialEffectsUpdators',
None)) > 0)
else None
347 if 'Navigator' not in kwargs:
348 AtlasNavigator = result.popToolsAndMerge(
349 TC.AtlasNavigatorCfg(flags, name=
"InDetNavigator"))
350 kwargs.setdefault(
"Navigator", AtlasNavigator)
357 sub_propagators += [propagator]
358 sub_updators += [material_updator]
361 sub_propagators += [propagator]
362 sub_updators += [material_updator]
365 sub_updators += [material_updator]
367 kwargs.setdefault(
"SubPropagators", sub_propagators)
368 kwargs.setdefault(
"SubMEUpdators", sub_updators)
370 AtlasELossUpdater = result.popToolsAndMerge(
371 TC.AtlasEnergyLossUpdatorCfg(flags))
372 kwargs.setdefault(
"EnergyLossUpdater", AtlasELossUpdater)
374 extrapolator = CompFactory.Trk.Extrapolator(name, **kwargs)
375 result.setPrivateTools(extrapolator)
380 from TrkConfig.AtlasExtrapolatorToolsConfig
import (
381 AtlasMultipleScatteringUpdatorCfg)
386 AtlasMaterialEffectsUpdator = result.popToolsAndMerge(
387 TC.AtlasMaterialEffectsUpdatorCfg(flags,
388 name=
"MuonMaterialEffectsUpdator"))
389 kwargs.setdefault(
"MaterialEffectsUpdators", [AtlasMaterialEffectsUpdator])
391 kwargs.setdefault(
"MultipleScatteringUpdater",
392 result.popToolsAndMerge(
396 AtlasNavigator = result.popToolsAndMerge(TC.AtlasNavigatorCfg(
397 flags, name=
'InDetNavigator' if use_old_names
else None))
398 kwargs.setdefault(
"Navigator", AtlasNavigator)
400 AtlasELossUpdater = result.popToolsAndMerge(
401 TC.AtlasEnergyLossUpdatorCfg(flags))
402 kwargs.setdefault(
"EnergyLossUpdater", AtlasELossUpdater)
404 if 'STEP_Propagator' not in kwargs:
405 AtlasSTEP_Propagator = result.popToolsAndMerge(
407 kwargs.setdefault(
"STEP_Propagator", AtlasSTEP_Propagator)
409 if 'Propagators' not in kwargs:
411 kwargs.setdefault(
"Propagators", [result.popToolsAndMerge(
414 kwargs.setdefault(
"Propagators", [kwargs[
"STEP_Propagator"]])
416 kwargs.setdefault(
"ResolveMuonStation",
True)
418 kwargs.setdefault(
"Tolerance", 0.0011)
420 extrap = CompFactory.Trk.Extrapolator(name, **kwargs)
421 result.setPrivateTools(extrap)
426 name="MuonStraightLineExtrapolator",
433 muon_prop = result.popToolsAndMerge(
437 kwargs.setdefault(
"Propagators", [muon_prop])
438 kwargs.setdefault(
"STEP_Propagator", muon_prop)
439 extrap = result.popToolsAndMerge(
441 result.setPrivateTools(extrap)
442 result.addPublicTool(extrap)
454 kwargs.setdefault(
"Propagators", [result.popToolsAndMerge(
456 kwargs.setdefault(
"STEP_Propagator",
459 prop = result.popToolsAndMerge(
461 kwargs.setdefault(
"Propagators", [prop])
462 kwargs.setdefault(
"STEP_Propagator", prop)
463 kwargs.setdefault(
"ResolveMuonStation",
False)
464 kwargs.setdefault(
"Navigator", result.popToolsAndMerge(
465 TC.AtlasNavigatorCfg(flags, name=
"InDetNavigator")))
466 kwargs.setdefault(
"EnergyLossUpdater", result.popToolsAndMerge(
467 TC.AtlasEnergyLossUpdatorCfg(flags)))
469 result.setPrivateTools(result.popToolsAndMerge(
474 if __name__ ==
"__main__":
476 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
479 from AthenaConfiguration.ComponentAccumulator
import printProperties
480 from AthenaConfiguration.TestDefaults
import defaultTestFiles
481 from AthenaCommon.Logging
import logging
483 flags.Input.Files = defaultTestFiles.RDO_RUN2
489 mlog = logging.getLogger(
"AtlasExtrapolatorConfigTest")
490 mlog.info(
"Configuring AtlasExtrapolator : ")
495 mlog.info(
"Configuring egammaCaloExtrapolator : ")
500 mlog.info(
"Configuring MCTruthClassifierExtrapolator : ")
506 f =
open(
"atlasextrapolator.pkl",
"wb")