ATLAS Offline Software
Loading...
Searching...
No Matches
ITkAlignToolsConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5
6def ITkAlignModuleToolCfg(flags, name="ITkAlignModuleTool", **kwargs):
7 cfg = ComponentAccumulator()
8 cfg.setPrivateTools(CompFactory.InDet.InDetAlignModuleTool(name, **kwargs))
9 return cfg
10
11def ITkGeometryManagerToolCfg(flags, name="ITkGeometryManagerTool", **kwargs):
12
13 cfg = ComponentAccumulator()
14
15 kwargs.setdefault("PixelDetectorManager","ITkPixel")
16 kwargs.setdefault("StripDetectorManager","ITkStrip")
17 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
18 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
19
20 kwargs.setdefault("AlignPixel", flags.ITk.Align.alignITkPixel)
21 kwargs.setdefault("AlignSCT", flags.ITk.Align.alignITkStrip)
22 kwargs.setdefault("AlignmentLevel", -1)
23 kwargs.setdefault("ModuleSelection", [])
24
25 if flags.ITk.Align.alignITkPixel:
26 kwargs.setdefault("PixelGeometryManager", cfg.addPublicTool(
27 cfg.popToolsAndMerge(ITkPixelGeometryManagerToolCfg(flags))))
28
29 if flags.ITk.Align.alignITkStrip:
30 kwargs.setdefault("SCTGeometryManager", cfg.addPublicTool(
31 cfg.popToolsAndMerge(ITkStripGeometryManagerToolCfg(flags))))
32
33 cfg.setPrivateTools(CompFactory.InDet.SiGeometryManagerTool(name, **kwargs))
34 return cfg
35
36def ITkPixelGeometryManagerToolCfg(flags, name="ITkPixelManagerTool", **kwargs):
37
38 cfg = ComponentAccumulator()
39
40 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
41 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
42
43 kwargs.setdefault("PixelDetectorManager","ITkPixel")
44 kwargs.setdefault("EtaCorrection",False)
45
46
47 kwargs.setdefault("AlignmentLevel", 1)
48 # kwargs.setdefault("AlignmentLevelBarrel", 12)
49 # kwargs.setdefault("AlignmentLevelEndcaps", 12)
50
51 kwargs.setdefault("SetSoftCutBarrelX", 0.02)
52 kwargs.setdefault("SetSoftCutBarrelY", 0.02)
53 kwargs.setdefault("SetSoftCutBarrelZ", 0.02)
54 kwargs.setdefault("SetSoftCutBarrelRotX", 0.05)
55 kwargs.setdefault("SetSoftCutBarrelRotY", 0.05)
56 kwargs.setdefault("SetSoftCutBarrelRotZ", 0.05)
57 kwargs.setdefault("SetSoftCutEndcapX", 0.02)
58 kwargs.setdefault("SetSoftCutEndcapY", 0.02)
59 kwargs.setdefault("SetSoftCutEndcapZ", 0.02)
60 kwargs.setdefault("SetSoftCutEndcapRotX", 0.05)
61 kwargs.setdefault("SetSoftCutEndcapRotY", 0.05)
62 kwargs.setdefault("SetSoftCutEndcapRotZ", 0.05)
63
64 cfg.setPrivateTools(
65 CompFactory.InDet.PixelGeometryManagerTool(name, **kwargs))
66 return cfg
67
68def ITkStripGeometryManagerToolCfg(flags, name="ITkStripManagerTool", **kwargs):
69
70 cfg = ComponentAccumulator()
71
72 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
73 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
74
75 kwargs.setdefault("StripDetectorManager","ITkStrip")
76
77
78 kwargs.setdefault("AlignmentLevel", 0)
79 # kwargs.setdefault("AlignmentLevelBarrel", 2)
80 # kwargs.setdefault("AlignmentLevelEndcaps", 2)
81
82 kwargs.setdefault("SetSoftCutBarrelX", 0.05)
83 kwargs.setdefault("SetSoftCutBarrelY", 0.05)
84 kwargs.setdefault("SetSoftCutBarrelZ", 0.05)
85 kwargs.setdefault("SetSoftCutBarrelRotX", 0.05)
86 kwargs.setdefault("SetSoftCutBarrelRotY", 0.05)
87 kwargs.setdefault("SetSoftCutBarrelRotZ", 0.05)
88 kwargs.setdefault("SetSoftCutEndcapX", 0.05)
89 kwargs.setdefault("SetSoftCutEndcapY", 0.05)
90 kwargs.setdefault("SetSoftCutEndcapZ", 0.005)
91 kwargs.setdefault("SetSoftCutEndcapRotX", 0.005)
92 kwargs.setdefault("SetSoftCutEndcapRotY", 0.05)
93 kwargs.setdefault("SetSoftCutEndcapRotZ", 0.05)
94
95 cfg.setPrivateTools(
96 CompFactory.InDet.SCTGeometryManagerTool(name, **kwargs))
97 return cfg
98
99def ITkTrkAlignDBToolCfg(flags, name="ITkTrkAlignDBTool", **kwargs):
100 cfg = ComponentAccumulator()
101
102 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
103 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
104
105 kwargs.setdefault("SiGeometryManager", cfg.addPublicTool(
106 cfg.popToolsAndMerge(ITkGeometryManagerToolCfg(flags))))
107
108 kwargs.setdefault("PixelGeometryManager", cfg.addPublicTool(
109 cfg.popToolsAndMerge(ITkPixelGeometryManagerToolCfg(flags))))
110
111 kwargs.setdefault("SCTGeometryManager", cfg.addPublicTool(
112 cfg.popToolsAndMerge(ITkStripGeometryManagerToolCfg(flags))))
113
114 from InDetAlignGenTools.InDetAlignGenToolsConfig import ITkAlignDBTool
115 kwargs.setdefault("IDAlignDBTool", cfg.addPublicTool(cfg.popToolsAndMerge(ITkAlignDBTool(flags))))
116
117 kwargs.setdefault("WriteOldConstants", not flags.ITk.Align.accumulate)
118 kwargs.setdefault("UpdateConstants", not flags.ITk.Align.accumulate)
119
120 #Set filenames empty to suppress writing
121 kwargs.setdefault("OutputIBLDistFile","")
122 kwargs.setdefault("OldIBLDistFile","")
123
124 cfg.setPrivateTools(CompFactory.InDet.SiTrkAlignDBTool(name, **kwargs))
125 return cfg
126
127def ITkMatrixToolCfg(flags, name="ITkMatrixTool", **kwargs):
128 cfg = ComponentAccumulator()
129
130 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
131 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
132
133 kwargs.setdefault("PathBinName", f"{flags.ITk.Align.baseDir}/Accumulate/")
134 kwargs.setdefault("PathTxtName", f"{flags.ITk.Align.baseDir}/Accumulate/")
135 kwargs.setdefault("InputTFiles", [f"{flags.ITk.Align.baseDir}/Accumulate/{flags.ITk.Align.inputTFiles}"])
136 kwargs.setdefault("SolveOption", 3)
137 kwargs.setdefault("MinNumHitsPerModule", 10)
138
139 kwargs.setdefault("WriteTFile", flags.ITk.Align.accumulate)
140 kwargs.setdefault("ReadTFile", not flags.ITk.Align.accumulate)
141 kwargs.setdefault("ScaleMatrix", True)
142 kwargs.setdefault("WriteEigenMat", False)
143 kwargs.setdefault("WriteEigenMatTxt", False)
144
145 cfg.setPrivateTools(CompFactory.Trk.MatrixTool(name, **kwargs))
146 return cfg
147
148def ITkGlobalChi2AlignToolCfg(flags, name="ITkGlobalChi2AlignTool", **kwargs):
149 cfg = ComponentAccumulator()
150
151 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
152 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
153
154 kwargs.setdefault("MatrixTool", cfg.popToolsAndMerge(ITkMatrixToolCfg(flags)))
155
156 kwargs.setdefault("StoreLocalDerivOnly", flags.ITk.Align.solveLocal)
157 kwargs.setdefault("SecondDerivativeCut", 0)
158 #kwargs.setdefault("OutputLevel", 1)
159
160 cfg.setPrivateTools(CompFactory.Trk.GlobalChi2AlignTool(name, **kwargs))
161 return cfg
162
163def ITkAlignResidualCalculatorCfg(flags, name="ITkAlignResidualCalculator", **kwargs):
164 cfg = ComponentAccumulator()
165
166 if "ResidualPullCalculator" not in kwargs:
167 from TrkConfig.TrkResidualPullCalculatorConfig import (
168 ResidualPullCalculatorCfg)
169 kwargs.setdefault("ResidualPullCalculator", cfg.popToolsAndMerge(
170 ResidualPullCalculatorCfg(flags)))
171
172 if "UpdatorTool" not in kwargs:
173 from TrkConfig.TrkMeasurementUpdatorConfig import KalmanUpdatorCfg
174 kwargs.setdefault("UpdatorTool", cfg.popToolsAndMerge(
175 KalmanUpdatorCfg(flags)))
176
177 kwargs.setdefault("ResidualType", 0)
178
179 cfg.setPrivateTools(CompFactory.Trk.AlignResidualCalculator(name, **kwargs))
180 return cfg
181
182
183def ITkAlignTrackCreatorCfg(flags, name="ITkAlignTrackCreator", **kwargs):
184 cfg = ComponentAccumulator()
185
186 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
187 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
188
189 kwargs.setdefault("ResidualCalculator", cfg.popToolsAndMerge(
191
192 kwargs.setdefault("IncludeScatterers", False)
193 kwargs.setdefault("RemoveATSOSNotInAlignModule", False)
194
195 cfg.setPrivateTools(CompFactory.Trk.AlignTrackCreator(name, **kwargs))
196 return cfg
197
198def ITkBeamspotVertexPreProcessorCfg(flags, name="ITkBeamspotVertexPreProcessor", **kwargs):
199 cfg = ComponentAccumulator()
200
201 kwargs.setdefault("AlignModuleTool", cfg.addPublicTool(
202 cfg.popToolsAndMerge(ITkAlignModuleToolCfg(flags))))
203
204 if "TrackFitter" not in kwargs:
205 from TrkConfig.CommonTrackFitterConfig import ITkStandaloneTrackFitterCfg
206 kwargs.setdefault("TrackFitter", cfg.addPublicTool(
207 cfg.popToolsAndMerge(ITkStandaloneTrackFitterCfg(flags,
208 FillDerivativeMatrix = True))))
209
210 if "TrackToVertexIPEstimatorTool" not in kwargs:
211 from TrkConfig.TrkVertexFitterUtilsConfig import TrackToVertexIPEstimatorCfg
212 kwargs.setdefault("TrackToVertexIPEstimatorTool", cfg.addPublicTool(
213 cfg.popToolsAndMerge(TrackToVertexIPEstimatorCfg(flags))))
214
215 if "BSConstraintTrackSelector" not in kwargs:
216 from InDetConfig.InDetTrackSelectionToolConfig import Align_InDetTrackSelectionToolCfg
217 kwargs.setdefault("BSConstraintTrackSelector", cfg.addPublicTool(
218 cfg.popToolsAndMerge(Align_InDetTrackSelectionToolCfg(flags))))
219
220 if "Extrapolator" not in kwargs:
221 from TrkConfig.AtlasExtrapolatorConfig import InDetExtrapolatorCfg
222 kwargs.setdefault("Extrapolator", cfg.addPublicTool(
223 cfg.popToolsAndMerge(InDetExtrapolatorCfg(flags))))
224
225 kwargs.setdefault("UseSingleFitter", True)
226 kwargs.setdefault("RunOutlierRemoval", False)
227 kwargs.setdefault("DoBSConstraint", False)
228 kwargs.setdefault("DoAssociatedToPVSelection", False)
229
230 cfg.setPrivateTools(
231 CompFactory.Trk.BeamspotVertexPreProcessor(name, **kwargs))
232 return cfg
233
234
235
ITkTrkAlignDBToolCfg(flags, name="ITkTrkAlignDBTool", **kwargs)
ITkGlobalChi2AlignToolCfg(flags, name="ITkGlobalChi2AlignTool", **kwargs)
ITkBeamspotVertexPreProcessorCfg(flags, name="ITkBeamspotVertexPreProcessor", **kwargs)
ITkStripGeometryManagerToolCfg(flags, name="ITkStripManagerTool", **kwargs)
ITkAlignTrackCreatorCfg(flags, name="ITkAlignTrackCreator", **kwargs)
ITkMatrixToolCfg(flags, name="ITkMatrixTool", **kwargs)
ITkAlignResidualCalculatorCfg(flags, name="ITkAlignResidualCalculator", **kwargs)
ITkPixelGeometryManagerToolCfg(flags, name="ITkPixelManagerTool", **kwargs)
ITkAlignModuleToolCfg(flags, name="ITkAlignModuleTool", **kwargs)
ITkGeometryManagerToolCfg(flags, name="ITkGeometryManagerTool", **kwargs)