ATLAS Offline Software
Loading...
Searching...
No Matches
IDAlignToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3# File: InDetAlignConfig/python/IDAlignToolsConfig.py
4# Author: David Brunner (david.brunner@cern.ch), Thomas Strebler (thomas.strebler@cern.ch)
5
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8
9
10
11
12def InDetAlignModuleToolCfg(flags, name="InDetAlignModuleTool", **kwargs):
13 cfg = ComponentAccumulator()
14 cfg.setPrivateTools(CompFactory.InDet.InDetAlignModuleTool(name, **kwargs))
15 return cfg
16
17
18def PixelGeometryManagerToolCfg(flags, name="PixelGeometryManagerTool", **kwargs):
19 cfg = ComponentAccumulator()
20
21 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
22 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
23
24 kwargs.setdefault("AlignmentLevel", flags.InDet.Align.pixelAlignmentLevel)
25 kwargs.setdefault("AlignmentLevelBarrel", flags.InDet.Align.pixelAlignmentLevelBarrel)
26 kwargs.setdefault("AlignmentLevelEndcaps", flags.InDet.Align.pixelAlignmentLevelEndcaps)
27
28 kwargs.setdefault("AlignBarrelBowX", True)
29 kwargs.setdefault("AlignEndcapRotX", False)
30 kwargs.setdefault("AlignEndcapRotY", False)
31 kwargs.setdefault("AlignEndcapZ", False)
32
33 if kwargs["AlignmentLevel"] == 16:
34 kwargs.setdefault("AlignBarrelRotX", False)
35 kwargs.setdefault("AlignBarrelRotY", False)
36 kwargs.setdefault("AlignBarrelRotZ", False)
37 kwargs.setdefault("AlignBarrelX", False)
38 kwargs.setdefault("AlignBarrelY", False)
39 kwargs.setdefault("AlignBarrelZ", False)
40 kwargs.setdefault("AlignEndcaps", False)
41
42 else:
43 kwargs.setdefault("SetSoftCutEndcapX", 0.02)
44 kwargs.setdefault("SetSoftCutEndcapY", 0.02)
45 kwargs.setdefault("SetSoftCutEndcapZ", 0.02)
46 kwargs.setdefault("SetSoftCutEndcapRotX", 0.05)
47 kwargs.setdefault("SetSoftCutEndcapRotY", 0.05)
48 kwargs.setdefault("SetSoftCutEndcapRotZ", 0.05)
49
50 kwargs.setdefault("SetSoftCutBarrelX", 0.02)
51 kwargs.setdefault("SetSoftCutBarrelY", 0.02)
52 kwargs.setdefault("SetSoftCutBarrelZ", 0.02)
53 kwargs.setdefault("SetSoftCutBarrelRotX", 0.05)
54 kwargs.setdefault("SetSoftCutBarrelRotY", 0.05)
55 kwargs.setdefault("SetSoftCutBarrelRotZ", 0.05)
56
57 cfg.setPrivateTools(
58 CompFactory.InDet.PixelGeometryManagerTool(name, **kwargs))
59 return cfg
60
61
62def SCTGeometryManagerToolCfg(flags, name="SCTGeometryManagerTool", **kwargs):
63 cfg = ComponentAccumulator()
64
65 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
66 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
67
68 kwargs.setdefault("AlignmentLevel", flags.InDet.Align.SCTAlignmentLevel)
69 kwargs.setdefault("AlignmentLevelBarrel", flags.InDet.Align.SCTAlignmentLevelBarrel)
70 kwargs.setdefault("AlignmentLevelEndcaps", flags.InDet.Align.SCTAlignmentLevelEndcaps)
71
72 kwargs.setdefault("AlignBarrelRotX", False)
73 kwargs.setdefault("AlignBarrelRotY", False)
74 kwargs.setdefault("AlignBarrelRotZ", False)
75 kwargs.setdefault("AlignBarrelX", False)
76 kwargs.setdefault("AlignBarrelY", False)
77 kwargs.setdefault("AlignBarrelZ", False)
78 kwargs.setdefault("AlignEndcapZ", False)
79
80 kwargs.setdefault("SetSoftCutBarrelX", 0.05)
81 kwargs.setdefault("SetSoftCutBarrelY", 0.05)
82 kwargs.setdefault("SetSoftCutBarrelZ", 0.05)
83 kwargs.setdefault("SetSoftCutBarrelRotX", 0.05)
84 kwargs.setdefault("SetSoftCutBarrelRotY", 0.05)
85 kwargs.setdefault("SetSoftCutBarrelRotZ", 0.05)
86 kwargs.setdefault("SetSoftCutEndcapX", 0.05)
87 kwargs.setdefault("SetSoftCutEndcapY", 0.05)
88 kwargs.setdefault("SetSoftCutEndcapZ", 0.005)
89 kwargs.setdefault("SetSoftCutEndcapRotX", 0.005)
90 kwargs.setdefault("SetSoftCutEndcapRotY", 0.05)
91 kwargs.setdefault("SetSoftCutEndcapRotZ", 0.05)
92
93 cfg.setPrivateTools(
94 CompFactory.InDet.SCTGeometryManagerTool(name, **kwargs))
95 return cfg
96
97
98def SiGeometryManagerToolCfg(flags, name="SiGeometryManagerTool", **kwargs):
99 cfg = ComponentAccumulator()
100
101 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
102 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
103
104 kwargs.setdefault("AlignPixel", flags.InDet.Align.alignPixel)
105 kwargs.setdefault("AlignSCT", flags.InDet.Align.alignSCT)
106 kwargs.setdefault("AlignmentLevel", -1)
107 kwargs.setdefault("ModuleSelection", [])
108
109 kwargs.setdefault("PixelGeometryManager", cfg.addPublicTool(
110 cfg.popToolsAndMerge(PixelGeometryManagerToolCfg(flags))))
111
112 kwargs.setdefault("SCTGeometryManager", cfg.addPublicTool(
113 cfg.popToolsAndMerge(SCTGeometryManagerToolCfg(flags))))
114
115 cfg.setPrivateTools(CompFactory.InDet.SiGeometryManagerTool(name, **kwargs))
116 return cfg
117
118
119def TRTGeometryManagerToolCfg(flags, name="TRTGeometryManagerTool", **kwargs):
120 cfg = ComponentAccumulator()
121
122 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
123 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
124
125 kwargs.setdefault("AlignmentLevel", flags.InDet.Align.TRTAlignmentLevel)
126 kwargs.setdefault("AlignmentLevelBarrel", flags.InDet.Align.TRTAlignmentLevelBarrel)
127 kwargs.setdefault("AlignmentLevelEndcaps", flags.InDet.Align.TRTAlignmentLevelEndcaps)
128
129 kwargs.setdefault("AlignEndcapZ", False)
130
131 kwargs.setdefault("SetSoftCutBarrelX", 0.1)
132 kwargs.setdefault("SetSoftCutBarrelY", 0.1)
133 kwargs.setdefault("SetSoftCutBarrelZ", 0.1)
134 kwargs.setdefault("SetSoftCutBarrelRotX", 0.05)
135 kwargs.setdefault("SetSoftCutBarrelRotY", 0.05)
136 kwargs.setdefault("SetSoftCutBarrelRotZ", 0.05)
137 kwargs.setdefault("SetSoftCutEndcapX", 0.1)
138 kwargs.setdefault("SetSoftCutEndcapY", 0.1)
139 kwargs.setdefault("SetSoftCutEndcapZ", 0.001)
140 kwargs.setdefault("SetSoftCutEndcapRotX", 0.05)
141 kwargs.setdefault("SetSoftCutEndcapRotY", 0.05)
142 kwargs.setdefault("SetSoftCutEndcapRotZ", 0.05)
143
144 cfg.setPrivateTools(
145 CompFactory.InDet.TRTGeometryManagerTool(name, **kwargs))
146 return cfg
147
148
150 flags, name="InDetGeometryManagerTool", **kwargs):
151 cfg = ComponentAccumulator()
152
153 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
154 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
155
156 kwargs.setdefault("AlignSilicon", flags.InDet.Align.alignPixel or flags.InDet.Align.alignSCT)
157 kwargs.setdefault("AlignTRT", flags.InDet.Align.alignTRT)
158 kwargs.setdefault("AlignmentLevel", -1)
159
160 kwargs.setdefault("SiGeometryManager", cfg.addPublicTool(
161 cfg.popToolsAndMerge(SiGeometryManagerToolCfg(flags))))
162
163 kwargs.setdefault("TRTGeometryManager", cfg.addPublicTool(
164 cfg.popToolsAndMerge(TRTGeometryManagerToolCfg(flags))))
165
166 cfg.setPrivateTools(
167 CompFactory.InDet.InDetGeometryManagerTool(name, **kwargs))
168
169 return cfg
170
171
172
173
174def SiTrkAlignDBToolCfg(flags, name="SiTrkAlignDBTool", **kwargs):
175 cfg = ComponentAccumulator()
176
177 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
178 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
179
180 kwargs.setdefault("SiGeometryManager", cfg.addPublicTool(
181 cfg.popToolsAndMerge(SiGeometryManagerToolCfg(flags))))
182
183 kwargs.setdefault("PixelGeometryManager", cfg.addPublicTool(
184 cfg.popToolsAndMerge(PixelGeometryManagerToolCfg(flags))))
185
186 kwargs.setdefault("SCTGeometryManager", cfg.addPublicTool(
187 cfg.popToolsAndMerge(SCTGeometryManagerToolCfg(flags))))
188
189 from InDetAlignGenTools.InDetAlignGenToolsConfig import InDetAlignDBTool
190 kwargs.setdefault("IDAlignDBTool", cfg.addPublicTool(cfg.popToolsAndMerge(InDetAlignDBTool(flags))))
191
192 kwargs.setdefault("WriteAsL2", True)
193 kwargs.setdefault("WriteOldConstants", not flags.InDet.Align.accumulate)
194 kwargs.setdefault("UpdateConstants", not flags.InDet.Align.accumulate)
195
196 cfg.setPrivateTools(CompFactory.InDet.SiTrkAlignDBTool(name, **kwargs))
197 return cfg
198
199def TRTTrkAlignDBToolCfg(flags, name="TRTTrkAlignDBTool", **kwargs):
200 cfg = ComponentAccumulator()
201
202 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
203 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
204
205 kwargs.setdefault("TRTGeometryManager", cfg.addPublicTool(
206 cfg.popToolsAndMerge(TRTGeometryManagerToolCfg(flags))))
207
208 kwargs.setdefault("WriteOldConstants", not flags.InDet.Align.accumulate)
209 kwargs.setdefault("UpdateConstants", not flags.InDet.Align.accumulate)
210
211 cfg.setPrivateTools(CompFactory.InDet.TRTTrkAlignDBTool(name, **kwargs))
212 return cfg
213
214
215def InDetTrkAlignDBToolCfg(flags, name="InDetTrkAlignDBTool", **kwargs):
216 cfg = ComponentAccumulator()
217
218 kwargs.setdefault("SiTrkAlignDBTool", cfg.addPublicTool(
219 cfg.popToolsAndMerge(SiTrkAlignDBToolCfg(flags))))
220 kwargs.setdefault("TRTTrkAlignDBTool", cfg.addPublicTool(
221 cfg.popToolsAndMerge(TRTTrkAlignDBToolCfg(flags))))
222
223 cfg.setPrivateTools(CompFactory.InDet.InDetTrkAlignDBTool(name, **kwargs))
224 return cfg
225
226def GeometryManagerToolCfg(flags, **kwargs):
227
228 if flags.InDet.Align.alignInDet:
229 return InDetGeometryManagerToolCfg(flags, **kwargs)
230 elif flags.InDet.Align.alignSilicon:
231 return SiGeometryManagerToolCfg(flags, **kwargs)
232 elif flags.InDet.Align.alignPixel:
233 return PixelGeometryManagerToolCfg(flags, **kwargs)
234 elif flags.InDet.Align.alignSCT:
235 return SCTGeometryManagerToolCfg(flags, **kwargs)
236 elif flags.InDet.Align.alignTRT:
237 return TRTGeometryManagerToolCfg(flags, **kwargs)
238 else:
239 print("Configuration Error - No Geometry Manager Configured!")
240 pass
241
242def AlignDBToolCfg(flags, **kwargs):
243
244 if flags.InDet.Align.alignInDet:
245 return InDetTrkAlignDBToolCfg(flags, **kwargs)
246 elif (flags.InDet.Align.alignSilicon or flags.InDet.Align.alignPixel or flags.InDet.Align.alignSCT):
247 return SiTrkAlignDBToolCfg(flags, **kwargs)
248 elif flags.InDet.Align.alignTRT:
249 return TRTTrkAlignDBToolCfg(flags, **kwargs)
250 else:
251 print("Configuration Error - No AlignDBTool Configured!")
252 pass
253
254
255
256def MatrixToolCfg(flags, name="MatrixTool", **kwargs):
257 cfg = ComponentAccumulator()
258
259 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
260 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
261
262 kwargs.setdefault("InputTFiles", flags.InDet.Align.inputTFiles)
263 kwargs.setdefault("TFileName", flags.InDet.Align.outputTFile)
264 kwargs.setdefault("SolveOption", 0 if flags.InDet.Align.accumulate else 1)
265 kwargs.setdefault("MinNumHitsPerModule", 10)
266 kwargs.setdefault("AlignIBLbutNotPixel", flags.InDet.Align.pixelAlignmentLevel == 16)
267 kwargs.setdefault("Remove_IBL_Rz", flags.InDet.Align.pixelAlignmentLevel == 11)
268 kwargs.setdefault("RunLocalMethod", False)
269 kwargs.setdefault("ReadTFile", not flags.InDet.Align.accumulate)
270 kwargs.setdefault("ScaleMatrix", True)
271 kwargs.setdefault("WriteEigenMat", False)
272 kwargs.setdefault("WriteEigenMatTxt", False)
273 kwargs.setdefault("WriteMat", False)
274 kwargs.setdefault("WriteTFile", True)
275
276 cfg.setPrivateTools(CompFactory.Trk.MatrixTool(name, **kwargs))
277 return cfg
278
279
280def GlobalChi2AlignToolCfg(flags, name="GlobalChi2AlignTool", **kwargs):
281 cfg = ComponentAccumulator()
282
283 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
284 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
285
286 kwargs.setdefault("MatrixTool", cfg.popToolsAndMerge(MatrixToolCfg(flags)))
287 kwargs.setdefault("SecondDerivativeCut", 0)
288
289 cfg.setPrivateTools(CompFactory.Trk.GlobalChi2AlignTool(name, **kwargs))
290 return cfg
291
292
293
294
295def AlignResidualCalculatorCfg(flags, name="AlignResidualCalculator", **kwargs):
296 cfg = ComponentAccumulator()
297
298 if "ResidualPullCalculator" not in kwargs:
299 from TrkConfig.TrkResidualPullCalculatorConfig import (
300 ResidualPullCalculatorCfg)
301 kwargs.setdefault("ResidualPullCalculator", cfg.popToolsAndMerge(
302 ResidualPullCalculatorCfg(flags)))
303
304 if "UpdatorTool" not in kwargs:
305 from TrkConfig.TrkMeasurementUpdatorConfig import KalmanUpdatorCfg
306 kwargs.setdefault("UpdatorTool", cfg.popToolsAndMerge(
307 KalmanUpdatorCfg(flags)))
308
309 kwargs.setdefault("ResidualType", 0)
310
311 cfg.setPrivateTools(CompFactory.Trk.AlignResidualCalculator(name, **kwargs))
312 return cfg
313
314
315def AlignTrackCreatorCfg(flags, name="AlignTrackCreator", **kwargs):
316 cfg = ComponentAccumulator()
317
318 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
319 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
320
321 kwargs.setdefault("ResidualCalculator", cfg.popToolsAndMerge(
323
324 kwargs.setdefault("IncludeScatterers", False)
325 kwargs.setdefault("RemoveATSOSNotInAlignModule", False)
326
327 cfg.setPrivateTools(CompFactory.Trk.AlignTrackCreator(name, **kwargs))
328 return cfg
329
330
331
332
334 flags, name="BeamspotVertexPreProcessor", **kwargs):
335 cfg = ComponentAccumulator()
336
337 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
338 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
339
340 if "TrackFitter" not in kwargs:
341 from TrkConfig.CommonTrackFitterConfig import InDetStandaloneTrackFitterCfg
342 kwargs.setdefault("TrackFitter", cfg.popToolsAndMerge(
343 InDetStandaloneTrackFitterCfg(flags, FillDerivativeMatrix = True)))
344
345 if "TrackToVertexIPEstimatorTool" not in kwargs:
346 from TrkConfig.TrkVertexFitterUtilsConfig import (
347 TrackToVertexIPEstimatorCfg)
348 kwargs.setdefault("TrackToVertexIPEstimatorTool", cfg.popToolsAndMerge(
349 TrackToVertexIPEstimatorCfg(flags)))
350
351 if "BSConstraintTrackSelector" not in kwargs:
352 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig import (
353 Align_InDetTrackSelectionToolCfg)
354 kwargs.setdefault("BSConstraintTrackSelector", cfg.popToolsAndMerge(
355 Align_InDetTrackSelectionToolCfg(flags)))
356
357 if "TrackSelector" not in kwargs:
358 from InDetTrackSelectionTool.InDetTrackSelectionToolConfig import (
359 Align_InDetTrackSelectionToolCfg)
360 kwargs.setdefault("TrackSelector", cfg.popToolsAndMerge(
361 Align_InDetTrackSelectionToolCfg(flags)))
362
363 if "Extrapolator" not in kwargs:
364 from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
365 kwargs.setdefault("Extrapolator", cfg.popToolsAndMerge(
366 InDetExtrapolatorCfg(flags)))
367
368 kwargs.setdefault("UseSingleFitter", True)
369 kwargs.setdefault("RunOutlierRemoval", True)
370 kwargs.setdefault("DoBSConstraint", False)
371 kwargs.setdefault("DoAssociatedToPVSelection", False)
372 kwargs.setdefault("RunOutlierRemoval", True)
373
374 cfg.setPrivateTools(
375 CompFactory.Trk.BeamspotVertexPreProcessor(name, **kwargs))
376 return cfg
void print(char *figname, TCanvas *c1)
InDetAlignModuleToolCfg(flags, name="InDetAlignModuleTool", **kwargs)
--— Geometry mangager tool config functions --—##
AlignDBToolCfg(flags, **kwargs)
SCTGeometryManagerToolCfg(flags, name="SCTGeometryManagerTool", **kwargs)
GeometryManagerToolCfg(flags, **kwargs)
PixelGeometryManagerToolCfg(flags, name="PixelGeometryManagerTool", **kwargs)
AlignResidualCalculatorCfg(flags, name="AlignResidualCalculator", **kwargs)
--— AlignTrackCreator Setup --—##
MatrixToolCfg(flags, name="MatrixTool", **kwargs)
--— GlobalChi2AlignTool Setup --—##
TRTGeometryManagerToolCfg(flags, name="TRTGeometryManagerTool", **kwargs)
InDetTrkAlignDBToolCfg(flags, name="InDetTrkAlignDBTool", **kwargs)
BeamspotVertexPreProcessorCfg(flags, name="BeamspotVertexPreProcessor", **kwargs)
--— BeamspotVertexPreProcessor Setup --—##
SiGeometryManagerToolCfg(flags, name="SiGeometryManagerTool", **kwargs)
SiTrkAlignDBToolCfg(flags, name="SiTrkAlignDBTool", **kwargs)
--— Inner Detector DB I/O Setup --—##
TRTTrkAlignDBToolCfg(flags, name="TRTTrkAlignDBTool", **kwargs)
AlignTrackCreatorCfg(flags, name="AlignTrackCreator", **kwargs)
GlobalChi2AlignToolCfg(flags, name="GlobalChi2AlignTool", **kwargs)
InDetGeometryManagerToolCfg(flags, name="InDetGeometryManagerTool", **kwargs)