63def AtlasExtrapolatorCfg(flags, name='AtlasExtrapolator'):
64
65
66 from TrkConfig.AtlasExtrapolatorToolsConfig import (
67 AtlasMultipleScatteringUpdatorCfg)
68
69 result = ComponentAccumulator()
70
71
72 from TrkConfig.TrkExRungeKuttaPropagatorConfig import (
73 RungeKuttaPropagatorCfg)
74 AtlasRungeKuttaPropagator = result.popToolsAndMerge(
75 RungeKuttaPropagatorCfg(flags))
76 AtlasSTEP_Propagator = result.popToolsAndMerge(
77 AtlasSTEP_PropagatorCfg(flags))
78 ITkPropagator = None
79 if flags.Detector.GeometryITk:
80 from TrkConfig.TrkExRungeKuttaPropagatorConfig import ITkPropagatorCfg
81 ITkPropagator = result.popToolsAndMerge(
82 ITkPropagatorCfg(flags))
83
84 AtlasPropagators = []
85 AtlasPropagators += [AtlasRungeKuttaPropagator]
86 AtlasPropagators += [AtlasSTEP_Propagator]
87 if flags.Detector.GeometryITk:
88 AtlasPropagators += [ITkPropagator]
89
90
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))
99
100 AtlasUpdators = []
101 AtlasUpdators += [AtlasMaterialEffectsUpdator]
102 AtlasUpdators += [AtlasMaterialEffectsUpdatorLandau]
103 if flags.Detector.GeometryITk:
104 AtlasUpdators += [ITkMaterialEffectsUpdator]
105
106 AtlasNavigator = result.popToolsAndMerge(TC.AtlasNavigatorCfg(flags))
107
108
109 AtlasSubPropagators = []
110 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
111 if flags.Detector.GeometryITk:
112 AtlasSubPropagators += [ITkPropagator.name]
113 else:
114 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
115 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
116 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
117 AtlasSubPropagators += [AtlasSTEP_Propagator.name]
118 AtlasSubPropagators += [AtlasRungeKuttaPropagator.name]
119
120 AtlasSubUpdators = []
121 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
122 if flags.Detector.GeometryITk:
123 AtlasSubUpdators += [ITkMaterialEffectsUpdator.name]
124 else:
125 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
126 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
127 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
128 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
129 AtlasSubUpdators += [AtlasMaterialEffectsUpdator.name]
130
131 AtlasELossUpdater = result.popToolsAndMerge(
132 TC.AtlasEnergyLossUpdatorCfg(flags))
133 AtlasEnergyLossUpdater = AtlasELossUpdater
134
135
136 Extrapolator = CompFactory.Trk.Extrapolator(
137 name,
138 Navigator=AtlasNavigator,
139 MaterialEffectsUpdators=AtlasUpdators,
140 MultipleScatteringUpdater=result.popToolsAndMerge(
141 AtlasMultipleScatteringUpdatorCfg(flags, UseTrkUtils=True)),
142 STEP_Propagator=AtlasSTEP_Propagator,
143 Propagators=AtlasPropagators,
144 SubPropagators=AtlasSubPropagators,
145 SubMEUpdators=AtlasSubUpdators,
146 EnergyLossUpdater=AtlasEnergyLossUpdater
147 )
148
149 result.setPrivateTools(Extrapolator)
150 return result
151
152
153@AccumulatorCache