ATLAS Offline Software
Loading...
Searching...
No Matches
ActsSpacePointFormationInDetConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2# The configurations of the Acts space point formation for the Inner Detector Pixel and SCT detectors.
3
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from ActsConfig.ActsUtilities import extractChildKwargs
7
9 name: str = "ActsIDPixelSpacePointTool",
10 **kwargs: dict) -> ComponentAccumulator:
11 acc = ComponentAccumulator()
12 acc.setPrivateTools(CompFactory.ActsTrk.PixelSpacePointFormationTool(name, **kwargs))
13 return acc
14
16 name: str = "ActsIDStripSpacePointTool",
17 **kwargs: dict) -> ComponentAccumulator:
18 acc = ComponentAccumulator()
19
20 kwargs.setdefault("isITk", False)
21 kwargs.setdefault("useSCTLayerDep_OverlapCuts", True) # not sure about it, but default in SCT workflow, is true
22 # StripGapParameter
23 kwargs.setdefault("StripGapParameter", 0.0)
24
25 if 'LorentzAngleTool' not in kwargs:
26 from SiLorentzAngleTool.SCT_LorentzAngleConfig import SCT_LorentzAngleToolCfg
27 kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(SCT_LorentzAngleToolCfg(flags)))
28
29 acc.setPrivateTools(CompFactory.ActsTrk.StripSpacePointFormationTool(name, **kwargs))
30 return acc
31
33 name: str = "ActsIDPixelSpacePointPreparationAlg",
34 *,
35 useCache: bool = False,
36 **kwargs: dict) -> ComponentAccumulator:
37 acc = ComponentAccumulator()
38
39 kwargs.setdefault('InputCollection', 'PixelSpacePoints')
40 kwargs.setdefault('DetectorElements', 'PixelDetectorElementCollection')
41
42 if 'RegSelTool' not in kwargs:
43 from RegionSelector.RegSelToolConfig import regSelTool_Pixel_Cfg
44 kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_Pixel_Cfg(flags)))
45
46 if not useCache:
47 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointDataPreparationAlg(name, **kwargs))
48 else:
49 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointCacheDataPreparationAlg(name, **kwargs))
50 return acc
51
53 name: str = "ActsIDStripSpacePointPreparationAlg",
54 *,
55 useCache: bool = False,
56 **kwargs: dict) -> ComponentAccumulator:
57 acc = ComponentAccumulator()
58
59 kwargs.setdefault('InputCollection', 'SCT_SpacePoints')
60 kwargs.setdefault('DetectorElements', 'SCT_DetectorElementCollection')
61
62 if 'RegSelTool' not in kwargs:
63 from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg
64 kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_SCT_Cfg(flags)))
65
66 if not useCache:
67 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointDataPreparationAlg(name, **kwargs))
68 else:
69 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointCacheDataPreparationAlg(name, **kwargs))
70 return acc
71
73 name: str = 'ActsIDStripOverlapSpacePointPreparationAlg',
74 *,
75 useCache: bool = False,
76 **kwargs: dict) -> ComponentAccumulator:
77 kwargs.setdefault('InputCollection', 'OverlapSpacePoints')
78 return ActsIDStripSpacePointPreparationAlgCfg(flags, name=name, useCache=useCache, **kwargs)
79
81 name: str = "ActsIDPixelSpacePointFormationAlg",
82 *,
83 useCache: bool = False,
84 **kwargs: dict) -> ComponentAccumulator:
85 acc = ComponentAccumulator()
86
87 from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
88 acc.merge(PixelReadoutGeometryCfg(flags))
89
90 kwargs.setdefault('PixelClusters', 'PixelClusters')
91 kwargs.setdefault('PixelSpacePoints', 'PixelSpacePoints')
92
93 kwargs.setdefault('PixelDetectorElements','PixelDetectorElementCollection')
94
95 if useCache:
96 kwargs.setdefault('SPCacheBackend', 'ActsPixelSpacePointCache_Back')
97 kwargs.setdefault('SPCache', 'ActsPixelSpacePointCache')
98
99 if 'SpacePointFormationTool' not in kwargs:
100 kwargs.setdefault("SpacePointFormationTool", acc.popToolsAndMerge(ActsIDPixelSpacePointToolCfg(flags)))
101
102 if useCache:
103 acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheSpacePointFormationAlg(name, **kwargs))
104 else:
105 acc.addEventAlgo(CompFactory.ActsTrk.PixelSpacePointFormationAlg(name, **kwargs))
106
107 return acc
108
110 name: str = "ActsIDStripSpacePointFormationAlg",
111 *,
112 useCache: bool = False,
113 **kwargs: dict) -> ComponentAccumulator:
114 acc = ComponentAccumulator()
115
116 from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
117 acc.merge(SCT_ReadoutGeometryCfg(flags))
118
119 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
120 acc.merge(BeamSpotCondAlgCfg(flags))
121
122 from InDetConfig.SiSpacePointFormationConfig import InDetSiElementPropertiesTableCondAlgCfg
123 acc.merge(InDetSiElementPropertiesTableCondAlgCfg(flags))
124
125 kwargs.setdefault('StripClusters', 'SCT_Clusters')
126 kwargs.setdefault('StripSpacePoints', 'SCT_SpacePoints')
127 kwargs.setdefault('StripOverlapSpacePoints', 'OverlapSpacePoints')
128
129 kwargs.setdefault('StripDetectorElements', 'SCT_DetectorElementCollection')
130 kwargs.setdefault('StripElementPropertiesTable', 'SCT_ElementPropertiesTable')
131
132 if useCache:
133 kwargs.setdefault('SPCacheBackend', 'ActsStripSpacePointCache_Back')
134 kwargs.setdefault('SPCache', 'ActsStripSpacePointCache')
135 kwargs.setdefault('OSPCacheBackend', 'ActsStripOverlapSpacePointCache_Back')
136 kwargs.setdefault('OSPCache', 'ActsStripOverlapSpacePointCache')
137
138 if 'SpacePointFormationTool' not in kwargs:
139 kwargs.setdefault('SpacePointFormationTool', acc.popToolsAndMerge(ActsIDStripSpacePointToolCfg(flags)))
140
141 if useCache:
142 acc.addEventAlgo(CompFactory.ActsTrk.StripCacheSpacePointFormationAlg(name, **kwargs))
143 else:
144 acc.addEventAlgo(CompFactory.ActsTrk.StripSpacePointFormationAlg(name, **kwargs))
145 return acc
146
148 *,
149 RoIs: str = "ActsRegionOfInterest",
150 **kwargs: dict) -> ComponentAccumulator:
151 acc = ComponentAccumulator()
152
153 kwargs.setdefault('processPixels', flags.Detector.EnablePixel)
154 kwargs.setdefault('processStrips', flags.Detector.EnableSCT)
155 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
156 kwargs.setdefault('runReconstruction', True)
157 kwargs.setdefault('runPreparation', flags.Acts.useCache)
158 kwargs.setdefault('processOverlapSpacePoints', True)
159
160 # has not been validated, CacheCreator copied from ActsSpacePointFormationConfig.py
161 # if kwargs['runCacheCreation']:
162 # acc.merge(ActsSpacePointCacheCreatorAlgCfg(flags, **extractChildKwargs(prefix='SpacePointCacheCreatorAlg.', **kwargs)))
163
164 if kwargs['runReconstruction']:
165 if kwargs['processPixels']:
166 acc.merge(ActsIDPixelSpacePointFormationAlgCfg(flags,**extractChildKwargs(prefix='PixelSpacePointFormationAlg.', **kwargs)))
167 if kwargs['processStrips']:
168 acc.merge(ActsIDStripSpacePointFormationAlgCfg(flags, **extractChildKwargs(prefix='StripSpacePointFormationAlg.', **kwargs)))
169
170 if kwargs['runPreparation']:
171 if kwargs['processPixels']:
173 RoIs=RoIs,
174 **extractChildKwargs(prefix='PixelSpacePointPreparationAlg.', **kwargs)))
175
176 if kwargs['processStrips']:
178 RoIs=RoIs,
179 **extractChildKwargs(prefix='StripSpacePointPreparationAlg.', **kwargs)))
180
181 if kwargs['processOverlapSpacePoints']:
183 RoIs=RoIs,
184 **extractChildKwargs(prefix='StripOverlapSpacePointPreparationAlg.', **kwargs)))
185
186 return acc
187
189 *,
190 previousActsExtension = None) -> ComponentAccumulator:
191 acc = ComponentAccumulator()
192
193 processPixels = flags.Detector.EnablePixel
194 processStrips = flags.Detector.EnableSCT
195
196 kwargs = dict()
197 kwargs.setdefault('processPixels', processPixels)
198 kwargs.setdefault('processStrips', processStrips)
199
200 # Similarly to Clusterization, space point formation is a three step process at maximum:
201 # (1) Cache Creation
202 # (2) Space Point formation algorithm (reconstruction of space points)
203 # (3) Preparation of collection for downstream algorithms
204 # What step is scheduled depends on the tracking pass and the activation
205 # or de-activation of caching mechanism.
206
207 # Secondary passes do not need cache creation, that has to be performed
208 # on the primary pass, and only if the caching is enabled.
209 # Reconstruction can run on secondary passes only if the caching is enabled,
210 # this is because we may need to process detector elements not processed
211 # on the primary pass.
212 # Preparation has to be performed on secondary passes always, and on primary
213 # pass only if cache is enabled. In the latter case it is used to collect all
214 # the clusters from all views before passing them to the downstream algorithms
215
216 # Primary pass
217 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
218 kwargs.setdefault('runReconstruction', True)
219 kwargs.setdefault('runPreparation', flags.Acts.useCache)
220
221 # Overlap Space Points may not be required
222 processOverlapSpacePoints = processStrips
223 if flags.Tracking.ActiveConfig.extension in ['ActsConversion']:
224 processOverlapSpacePoints = False
225 kwargs.setdefault('processOverlapSpacePoints', processOverlapSpacePoints)
226
227 # Name of the RoI to be used
228 roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
229 # Large Radius pass uses the same roi as the primary pass (FS roi)
230 if flags.Tracking.ActiveConfig.extension == 'ActsLargeRadius':
231 roisName = 'ActsRegionOfInterest'
232
233 # Cluster Collection name(s) and Space Point Collection name(s)
234 # The name depends on the tracking pass as well as the cache mechanism
235 pixelClustersName = 'PixelClusters'
236 stripClustersName = 'SCT_Clusters'
237 pixelSpacePointsName = 'PixelSpacePoints'
238 stripSpacePointsName = 'SCT_SpacePoints'
239 stripOverlapSpacePointsName = 'OverlapSpacePoints'
240
241 # if cache is enabled, add "_Cached" at the end
242 # if flags.Acts.useCache:
243 # pixelClustersName += "_Cached"
244 # stripClustersName += "_Cached"
245
246 # Primary collections for space points (i.e. produced by primary pass)
247 primaryPixelSpacePointsName = 'PixelSpacePoints'
248 primaryStripSpacePointsName = 'SCT_SpacePoints'
249 primaryStripOverlapSpacePointsName = 'OverlapSpacePoints'
250
251 # Configuration for (1)
252 if kwargs['runCacheCreation']:
253 kwargs.setdefault('SpacePointCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}SpacePointCacheCreatorAlg')
254
255 # Configuration for (2)
256 if kwargs['runReconstruction']:
257 if kwargs['processPixels']:
258 kwargs.setdefault('PixelSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointFormationAlg')
259 kwargs.setdefault('PixelSpacePointFormationAlg.useCache', flags.Acts.useCache)
260 kwargs.setdefault('PixelSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
261 kwargs.setdefault('PixelSpacePointFormationAlg.PixelClusters', pixelClustersName)
262 kwargs.setdefault('PixelSpacePointFormationAlg.PixelSpacePoints', pixelSpacePointsName)
263
264 if kwargs['processStrips']:
265 kwargs.setdefault('StripSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg')
266 kwargs.setdefault('StripSpacePointFormationAlg.useCache', flags.Acts.useCache)
267 kwargs.setdefault('StripSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
268 kwargs.setdefault('StripSpacePointFormationAlg.StripClusters', stripClustersName)
269 kwargs.setdefault('StripSpacePointFormationAlg.StripSpacePoints', stripSpacePointsName)
270
271 # Handling of Overlap Space Points
272 kwargs.setdefault('StripSpacePointFormationAlg.ProcessOverlapForStrip', kwargs['processOverlapSpacePoints'])
273 kwargs.setdefault('StripSpacePointFormationAlg.OSPCache', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
274 if kwargs['processOverlapSpacePoints']:
275 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', stripOverlapSpacePointsName)
276 else:
277 # Disable keys
278 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', '')
279
280 # Configuration for (3)
281 if kwargs['runPreparation']:
282 if kwargs['processPixels']:
283 kwargs.setdefault('PixelSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointPreparationAlg')
284 kwargs.setdefault('PixelSpacePointPreparationAlg.useCache', flags.Acts.useCache)
285 kwargs.setdefault('PixelSpacePointPreparationAlg.OutputCollection', f'{pixelSpacePointsName}_Cached' if kwargs['runReconstruction'] else pixelSpacePointsName)
286 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
287 if not flags.Acts.useCache:
288 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
289 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', pixelSpacePointsName if kwargs['runReconstruction'] else primaryPixelSpacePointsName)
290 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', '')
291 else:
292 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', '')
293 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
294 # Prd Map
295 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
296 kwargs.setdefault('PixelSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
297
298 if kwargs['processStrips']:
299 kwargs.setdefault('StripSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointPreparationAlg')
300 kwargs.setdefault('StripSpacePointPreparationAlg.useCache', flags.Acts.useCache)
301 kwargs.setdefault('StripSpacePointPreparationAlg.OutputCollection', f'{stripSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripSpacePointsName)
302 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
303 if not flags.Acts.useCache:
304 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
305 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', stripSpacePointsName if kwargs['runReconstruction'] else primaryStripSpacePointsName)
306 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', '')
307 else:
308 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', '')
309 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
310 # Prd Map
311 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
312 kwargs.setdefault('StripSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
313
314 if kwargs['processOverlapSpacePoints']:
315 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointPreparationAlg')
316 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.useCache', flags.Acts.useCache)
317 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.OutputCollection', f'{stripOverlapSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripOverlapSpacePointsName)
318 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
319 if not flags.Acts.useCache:
320 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
321 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', stripOverlapSpacePointsName if kwargs['runReconstruction'] else primaryStripOverlapSpacePointsName)
322 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', '')
323 else:
324 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', '')
325 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
326 # Prd Map
327 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
328 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
329
330 # Analysis algo(s)
331 if flags.Acts.doAnalysis:
332 # Run analysis code on the resulting space point collection produced by this tracking pass
333 # This collection is the result of (3) if it ran, else the result of (2). We are sure at least one of them run
334 if kwargs['processPixels']:
335 kwargs.setdefault('PixelSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointAnalysisAlg')
336 kwargs.setdefault('PixelSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
337 kwargs.setdefault('PixelSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['PixelSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['PixelSpacePointFormationAlg.PixelSpacePoints'])
338
339 if kwargs['processStrips']:
340 kwargs.setdefault('StripSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointAnalysisAlg')
341 kwargs.setdefault('StripSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
342 kwargs.setdefault('StripSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripSpacePoints'])
343
344 if kwargs['processOverlapSpacePoints']:
345 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointAnalysisAlg')
346 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
347 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripOverlapSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripOverlapSpacePoints'])
348
349 acc.merge(ActsIDMainSpacePointFormationCfg(flags, RoIs=roisName, **kwargs))
350 return acc
ComponentAccumulator ActsIDStripOverlapSpacePointPreparationAlgCfg(flags, str name='ActsIDStripOverlapSpacePointPreparationAlg', *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsIDStripSpacePointPreparationAlgCfg(flags, str name="ActsIDStripSpacePointPreparationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsIDStripSpacePointToolCfg(flags, str name="ActsIDStripSpacePointTool", **dict kwargs)
ComponentAccumulator ActsIDPixelSpacePointFormationAlgCfg(flags, str name="ActsIDPixelSpacePointFormationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsIDSpacePointFormationCfg(flags, *, previousActsExtension=None)
ComponentAccumulator ActsIDMainSpacePointFormationCfg(flags, *, str RoIs="ActsRegionOfInterest", **dict kwargs)
ComponentAccumulator ActsIDStripSpacePointFormationAlgCfg(flags, str name="ActsIDStripSpacePointFormationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsIDPixelSpacePointPreparationAlgCfg(flags, str name="ActsIDPixelSpacePointPreparationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsIDPixelSpacePointToolCfg(flags, str name="ActsIDPixelSpacePointTool", **dict kwargs)