ATLAS Offline Software
Loading...
Searching...
No Matches
IDAlignToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 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("WriteOldConstants", not flags.InDet.Align.accumulate)
193 kwargs.setdefault("UpdateConstants", not flags.InDet.Align.accumulate)
194
195 cfg.setPrivateTools(CompFactory.InDet.SiTrkAlignDBTool(name, **kwargs))
196 return cfg
197
198def TRTTrkAlignDBToolCfg(flags, name="TRTTrkAlignDBTool", **kwargs):
199 cfg = ComponentAccumulator()
200
201 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
202 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
203
204 kwargs.setdefault("TRTGeometryManager", cfg.addPublicTool(
205 cfg.popToolsAndMerge(TRTGeometryManagerToolCfg(flags))))
206
207 kwargs.setdefault("WriteOldConstants", not flags.InDet.Align.accumulate)
208 kwargs.setdefault("UpdateConstants", not flags.InDet.Align.accumulate)
209
210 cfg.setPrivateTools(CompFactory.InDet.TRTTrkAlignDBTool(name, **kwargs))
211 return cfg
212
213
214def InDetTrkAlignDBToolCfg(flags, name="InDetTrkAlignDBTool", **kwargs):
215 cfg = ComponentAccumulator()
216
217 kwargs.setdefault("SiTrkAlignDBTool", cfg.addPublicTool(
218 cfg.popToolsAndMerge(SiTrkAlignDBToolCfg(flags))))
219 kwargs.setdefault("TRTTrkAlignDBTool", cfg.addPublicTool(
220 cfg.popToolsAndMerge(TRTTrkAlignDBToolCfg(flags))))
221
222 cfg.setPrivateTools(CompFactory.InDet.InDetTrkAlignDBTool(name, **kwargs))
223 return cfg
224
225def GeometryManagerToolCfg(flags, **kwargs):
226
227 if flags.InDet.Align.alignInDet:
228 return InDetGeometryManagerToolCfg(flags, **kwargs)
229 elif flags.InDet.Align.alignSilicon:
230 return SiGeometryManagerToolCfg(flags, **kwargs)
231 elif flags.InDet.Align.alignPixel:
232 return PixelGeometryManagerToolCfg(flags, **kwargs)
233 elif flags.InDet.Align.alignSCT:
234 return SCTGeometryManagerToolCfg(flags, **kwargs)
235 elif flags.InDet.Align.alignTRT:
236 return TRTGeometryManagerToolCfg(flags, **kwargs)
237 else:
238 print("Configuration Error - No Geometry Manager Configured!")
239 pass
240
241def AlignDBToolCfg(flags, **kwargs):
242
243 if flags.InDet.Align.alignInDet:
244 return InDetTrkAlignDBToolCfg(flags, **kwargs)
245 elif (flags.InDet.Align.alignSilicon or flags.InDet.Align.alignPixel or flags.InDet.Align.alignSCT):
246 return SiTrkAlignDBToolCfg(flags, **kwargs)
247 elif flags.InDet.Align.alignTRT:
248 return TRTTrkAlignDBToolCfg(flags, **kwargs)
249 else:
250 print("Configuration Error - No AlignDBTool Configured!")
251 pass
252
253
254
255def MatrixToolCfg(flags, name="MatrixTool", **kwargs):
256 cfg = ComponentAccumulator()
257
258 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
259 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
260
261 kwargs.setdefault("InputTFiles", flags.InDet.Align.inputTFiles)
262 kwargs.setdefault("TFileName", flags.InDet.Align.outputTFile)
263 kwargs.setdefault("SolveOption", 0 if flags.InDet.Align.accumulate else 1)
264 kwargs.setdefault("MinNumHitsPerModule", 10)
265 kwargs.setdefault("AlignIBLbutNotPixel", flags.InDet.Align.pixelAlignmentLevel == 16)
266 kwargs.setdefault("Remove_IBL_Rz", flags.InDet.Align.pixelAlignmentLevel == 11)
267 kwargs.setdefault("RunLocalMethod", False)
268 kwargs.setdefault("ReadTFile", not flags.InDet.Align.accumulate)
269 kwargs.setdefault("ScaleMatrix", True)
270 kwargs.setdefault("WriteEigenMat", False)
271 kwargs.setdefault("WriteEigenMatTxt", False)
272 kwargs.setdefault("WriteMat", False)
273 kwargs.setdefault("WriteTFile", True)
274
275 cfg.setPrivateTools(CompFactory.Trk.MatrixTool(name, **kwargs))
276 return cfg
277
278
279def GlobalChi2AlignToolCfg(flags, name="GlobalChi2AlignTool", **kwargs):
280 cfg = ComponentAccumulator()
281
282 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
283 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
284
285 kwargs.setdefault("MatrixTool", cfg.popToolsAndMerge(MatrixToolCfg(flags)))
286 kwargs.setdefault("SecondDerivativeCut", 0)
287
288 cfg.setPrivateTools(CompFactory.Trk.GlobalChi2AlignTool(name, **kwargs))
289 return cfg
290
291
292
293
294def AlignResidualCalculatorCfg(flags, name="AlignResidualCalculator", **kwargs):
295 cfg = ComponentAccumulator()
296
297 if "ResidualPullCalculator" not in kwargs:
298 from TrkConfig.TrkResidualPullCalculatorConfig import (
299 ResidualPullCalculatorCfg)
300 kwargs.setdefault("ResidualPullCalculator", cfg.popToolsAndMerge(
301 ResidualPullCalculatorCfg(flags)))
302
303 if "UpdatorTool" not in kwargs:
304 from TrkConfig.TrkMeasurementUpdatorConfig import KalmanUpdatorCfg
305 kwargs.setdefault("UpdatorTool", cfg.popToolsAndMerge(
306 KalmanUpdatorCfg(flags)))
307
308 kwargs.setdefault("ResidualType", 0)
309
310 cfg.setPrivateTools(CompFactory.Trk.AlignResidualCalculator(name, **kwargs))
311 return cfg
312
313
314def AlignTrackCreatorCfg(flags, name="AlignTrackCreator", **kwargs):
315 cfg = ComponentAccumulator()
316
317 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
318 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
319
320 kwargs.setdefault("ResidualCalculator", cfg.popToolsAndMerge(
322
323 kwargs.setdefault("IncludeScatterers", False)
324 kwargs.setdefault("RemoveATSOSNotInAlignModule", False)
325
326 cfg.setPrivateTools(CompFactory.Trk.AlignTrackCreator(name, **kwargs))
327 return cfg
328
329
330
331
333 flags, name="BeamspotVertexPreProcessor", **kwargs):
334 cfg = ComponentAccumulator()
335
336 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
337 cfg.popToolsAndMerge(InDetAlignModuleToolCfg(flags))))
338
339 if "TrackFitter" not in kwargs:
340 from TrkConfig.CommonTrackFitterConfig import InDetStandaloneTrackFitterCfg
341 kwargs.setdefault("TrackFitter", cfg.popToolsAndMerge(
342 InDetStandaloneTrackFitterCfg(flags, FillDerivativeMatrix = True)))
343
344 if "TrackToVertexIPEstimatorTool" not in kwargs:
345 from TrkConfig.TrkVertexFitterUtilsConfig import (
346 TrackToVertexIPEstimatorCfg)
347 kwargs.setdefault("TrackToVertexIPEstimatorTool", cfg.popToolsAndMerge(
348 TrackToVertexIPEstimatorCfg(flags)))
349
350 if "BSConstraintTrackSelector" not in kwargs:
351 from InDetConfig.InDetTrackSelectionToolConfig import (
352 Align_InDetTrackSelectionToolCfg)
353 kwargs.setdefault("BSConstraintTrackSelector", cfg.popToolsAndMerge(
354 Align_InDetTrackSelectionToolCfg(flags)))
355
356 if "TrackSelector" not in kwargs:
357 from InDetConfig.InDetTrackSelectionToolConfig import (
358 Align_InDetTrackSelectionToolCfg)
359 kwargs.setdefault("TrackSelector", cfg.popToolsAndMerge(
360 Align_InDetTrackSelectionToolCfg(flags)))
361
362 if "Extrapolator" not in kwargs:
363 from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
364 kwargs.setdefault("Extrapolator", cfg.popToolsAndMerge(
365 InDetExtrapolatorCfg(flags)))
366
367 kwargs.setdefault("UseSingleFitter", True)
368 kwargs.setdefault("RunOutlierRemoval", True)
369 kwargs.setdefault("DoBSConstraint", False)
370 kwargs.setdefault("DoAssociatedToPVSelection", False)
371 kwargs.setdefault("RunOutlierRemoval", True)
372
373 cfg.setPrivateTools(
374 CompFactory.Trk.BeamspotVertexPreProcessor(name, **kwargs))
375 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)