Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
ActsClusterizationConfig.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
3 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory import CompFactory
5 from AthenaConfiguration.Enums import BeamType
6 from ActsConfig.ActsUtilities import extractChildKwargs
7 
9  name: str = "ActsHgtdClusteringTool",
10  **kwargs) -> ComponentAccumulator:
11  acc = ComponentAccumulator()
12  acc.setPrivateTools(CompFactory.ActsTrk.HgtdClusteringTool(name, **kwargs))
13  return acc
14 
16  name: str = "ActsHgtdTimedClusteringTool",
17  **kwargs) -> ComponentAccumulator:
18  acc = ComponentAccumulator()
19  acc.setPrivateTools(CompFactory.ActsTrk.HgtdTimedClusteringTool(name, **kwargs))
20  return acc
21 
23  name: str = "ActsHgtdClusterizationAlg",
24  **kwargs) -> ComponentAccumulator:
25  acc = ComponentAccumulator()
26 
27  if flags.HGTD.Geometry.useGeoModelXml:
28  from HGTD_GeoModelXml.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
29  else:
30  from HGTD_GeoModel.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
31  acc.merge(HGTD_ReadoutGeometryCfg(flags))
32 
33  kwargs.setdefault('RDOContainerName', 'HGTD_RDOs')
34  kwargs.setdefault('ClusterContainerName', 'HGTD_Clusters')
35 
36  if 'ClusteringTool' not in kwargs:
37  from HGTD_Config.HGTD_ConfigFlags import ClusteringStrategy
38  if flags.HGTD.Acts.ClusteringStrategy is ClusteringStrategy.SinglePad:
39  kwargs.setdefault('ClusteringTool', acc.popToolsAndMerge(ActsHgtdClusteringToolCfg(flags)))
40  else:
41  kwargs.setdefault('ClusteringTool', acc.popToolsAndMerge(ActsHgtdTimedClusteringToolCfg(flags)))
42 
43  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
44  from ActsConfig.ActsMonitoringConfig import ActsHgtdClusterizationMonitoringToolCfg
45  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsHgtdClusterizationMonitoringToolCfg(flags)))
46 
47  acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterizationAlg(name, **kwargs))
48  return acc
49 
50 
51 
53  name: str = "ActsPixelClusteringTool",
54  **kwargs) -> ComponentAccumulator:
55  acc = ComponentAccumulator()
56 
57  from PixelConditionsAlgorithms.ITkPixelConditionsConfig import ITkPixelChargeCalibCondAlgCfg, ITkPixelOfflineCalibCondAlgCfg
58  acc.merge(ITkPixelChargeCalibCondAlgCfg(flags))
59  acc.merge(ITkPixelOfflineCalibCondAlgCfg(flags))
60 
61  from PixelReadoutGeometry.PixelReadoutGeometryConfig import ITkPixelReadoutManagerCfg
62  acc.merge(ITkPixelReadoutManagerCfg(flags))
63 
64  if 'PixelRDOTool' not in kwargs:
65  from InDetConfig.SiClusterizationToolConfig import ITkPixelRDOToolCfg
66  kwargs.setdefault("PixelRDOTool", acc.popToolsAndMerge(ITkPixelRDOToolCfg(flags)))
67 
68  if "PixelLorentzAngleTool" not in kwargs:
69  from SiLorentzAngleTool.ITkPixelLorentzAngleConfig import ITkPixelLorentzAngleToolCfg
70  kwargs.setdefault("PixelLorentzAngleTool", acc.popToolsAndMerge( ITkPixelLorentzAngleToolCfg(flags) ))
71 
72  kwargs.setdefault(
73  'UseWeightedPosition',
74  not (flags.Tracking.doPixelDigitalClustering or flags.Beam.Type is BeamType.Cosmics)
75  )
76 
77  kwargs.setdefault('UseBroadErrors', flags.Beam.Type is BeamType.Cosmics)
78 
79  acc.setPrivateTools(CompFactory.ActsTrk.PixelClusteringTool(name, **kwargs))
80  return acc
81 
82 
84  name: str = "ActsStripClusteringTool",
85  **kwargs) -> ComponentAccumulator:
86  acc = ComponentAccumulator()
87 
88  if 'LorentzAngleTool' not in kwargs:
89  from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
90  kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)))
91 
92  kwargs.setdefault("conditionsTool",None)
93  if "StripDetElStatus" not in kwargs :
94  from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import (
95  ITkStripDetectorElementStatusAlgCfg)
96  acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
97  kwargs.setdefault("StripDetElStatus", "ITkStripDetectorElementStatus")
98 
99  # Disable noisy modules suppression
100  kwargs.setdefault("maxFiredStrips", 0)
101 
102  if flags.ITk.selectStripIntimeHits and 'timeBins' not in kwargs:
103  coll_25ns = flags.Beam.BunchSpacing<=25 and flags.Beam.Type is BeamType.Collisions
104  kwargs.setdefault("timeBins", "01X" if coll_25ns else "X1X")
105 
106  acc.setPrivateTools(CompFactory.ActsTrk.StripClusteringTool(name, **kwargs))
107  return acc
108 
110  name: str = 'ActsPixelClusterizationAlg',
111  *,
112  useCache: bool = False,
113  **kwargs) -> ComponentAccumulator:
114  acc = ComponentAccumulator()
115 
116  kwargs.setdefault("expectedClustersPerRDO", 32)
117  kwargs.setdefault("IDHelper", "PixelID")
118  kwargs.setdefault("RDOContainerKey", "ITkPixelRDOs")
119  kwargs.setdefault("ClustersKey", "ITkPixelClusters")
120  # Regional selection
121  kwargs.setdefault('RoIs', 'ActsRegionOfInterest')
122 
123  kwargs.setdefault('ClusterCacheBackend', 'ActsPixelClusterCache_Back')
124  kwargs.setdefault('ClusterCache', 'ActsPixelClustersCache')
125 
126  if 'RegSelTool' not in kwargs:
127  from RegionSelector.RegSelToolConfig import regSelTool_ITkPixel_Cfg
128  kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
129 
130  if 'ClusteringTool' not in kwargs:
131  kwargs.setdefault("ClusteringTool", acc.popToolsAndMerge(ActsPixelClusteringToolCfg(flags)))
132 
133  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
134  from ActsConfig.ActsMonitoringConfig import ActsITkPixelClusterizationMonitoringToolCfg
135  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsITkPixelClusterizationMonitoringToolCfg(flags)))
136 
137  if not useCache:
138  acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterizationAlg(name, **kwargs))
139  else:
140  acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheClusterizationAlg(name, **kwargs))
141  return acc
142 
144  name: str = 'ActsStripClusterizationAlg',
145  useCache: bool = False,
146  **kwargs) -> ComponentAccumulator:
147  acc = ComponentAccumulator()
148 
149  kwargs.setdefault("RDOContainerKey", "ITkStripRDOs")
150  kwargs.setdefault("ClustersKey", "ITkStripClusters")
151  kwargs.setdefault("expectedClustersPerRDO", 6)
152  kwargs.setdefault("IDHelper", "SCT_ID")
153  # Regional selection
154  kwargs.setdefault('RoIs', 'ActsRegionOfInterest')
155 
156  kwargs.setdefault('ClusterCacheBackend', 'ActsStripClusterCache_Back')
157  kwargs.setdefault('ClusterCache', 'ActsStripClustersCache')
158 
159  if 'RegSelTool' not in kwargs:
160  from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
161  kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags)))
162 
163  if 'ClusteringTool' not in kwargs:
164  kwargs.setdefault("ClusteringTool", acc.popToolsAndMerge(ActsStripClusteringToolCfg(flags)))
165 
166  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
167  from ActsConfig.ActsMonitoringConfig import ActsITkStripClusterizationMonitoringToolCfg
168  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsITkStripClusterizationMonitoringToolCfg(flags)))
169 
170  if not useCache:
171  acc.addEventAlgo(CompFactory.ActsTrk.StripClusterizationAlg(name, **kwargs))
172  else:
173  acc.addEventAlgo(CompFactory.ActsTrk.StripCacheClusterizationAlg(name, **kwargs))
174  return acc
175 
177  name: str = "ActsClusterCacheCreatorAlg",
178  **kwargs) -> ComponentAccumulator:
179  acc = ComponentAccumulator()
180  kwargs.setdefault("PixelClustersCacheKey", "ActsPixelClusterCache_Back")
181  kwargs.setdefault("StripClustersCacheKey", "ActsStripClusterCache_Back")
182  acc.addEventAlgo(CompFactory.ActsTrk.Cache.CreatorAlg(name, **kwargs))
183  return acc
184 
186  name: str = "ActsPixelClusterPreparationAlg",
187  useCache: bool = False,
188  **kwargs) -> ComponentAccumulator:
189  acc = ComponentAccumulator()
190 
191  kwargs.setdefault('InputCollection', 'ITkPixelClusters')
192  kwargs.setdefault('DetectorElements', 'ITkPixelDetectorElementCollection')
193 
194  if 'RegSelTool' not in kwargs:
195  from RegionSelector.RegSelToolConfig import regSelTool_ITkPixel_Cfg
196  kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
197 
198  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
199  from ActsConfig.ActsMonitoringConfig import ActsDataPreparationMonitoringToolCfg
200  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsDataPreparationMonitoringToolCfg(flags,
201  name = "ActsPixelClusterPreparationMonitoringTool")))
202 
203  if not useCache:
204  acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterDataPreparationAlg(name, **kwargs))
205  else:
206  acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterCacheDataPreparationAlg(name, **kwargs))
207  return acc
208 
210  name: str = "ActsStripClusterPreparationAlg",
211  useCache: bool = False,
212  **kwargs) -> ComponentAccumulator:
213  acc = ComponentAccumulator()
214 
215  kwargs.setdefault('InputCollection', 'ITkStripClusters')
216  kwargs.setdefault('DetectorElements', 'ITkStripDetectorElementCollection')
217 
218  if 'RegSelTool' not in kwargs:
219  from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
220  kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags)))
221 
222  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
223  from ActsConfig.ActsMonitoringConfig import ActsDataPreparationMonitoringToolCfg
224  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsDataPreparationMonitoringToolCfg(flags,
225  name = "ActsStripClusterPreparationMonitoringTool")))
226 
227  if not useCache:
228  acc.addEventAlgo(CompFactory.ActsTrk.StripClusterDataPreparationAlg(name, **kwargs))
229  else:
230  acc.addEventAlgo(CompFactory.ActsTrk.StripClusterCacheDataPreparationAlg(name, **kwargs))
231  return acc
232 
233 
235  name: str = 'ActsHgtdClusterPreparationAlg',
236  *,
237  useCache: bool = False,
238  **kwargs) -> ComponentAccumulator:
239  acc = ComponentAccumulator()
240  kwargs.setdefault('InputCollection', 'HGTDClusters')
241  kwargs.setdefault('DetectorElements', 'HGTD_DetectorElementCollection')
242 
243  # For the time being the HGTD Regional Selector tool does not exist
244 
245  if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
246  from ActsConfig.ActsMonitoringConfig import ActsDataPreparationMonitoringToolCfg
247  kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsDataPreparationMonitoringToolCfg(flags,
248  name = "ActsHgtdClusterPreparationMonitoringTool")))
249 
250  acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterDataPreparationAlg(name, **kwargs))
251  return acc
252 
253 
255  *,
256  RoIs: str = "ActsRegionOfInterest",
257  **kwargs: dict) -> ComponentAccumulator:
258  assert isinstance(RoIs, str)
259  assert isinstance(kwargs, dict)
260 
261  acc = ComponentAccumulator()
262 
263  # Clusterization is a three step process at maximum:
264  # (1) Cache Creation
265  # (2) Clusterization algorithm (reconstruction of clusters)
266  # (3) Preparation of collection for downstream algorithms
267  # What step is scheduled depends on the tracking pass and the activation
268  # or de-activation of caching mechanism
269 
270  kwargs.setdefault('processPixels', flags.Detector.EnableITkPixel)
271  kwargs.setdefault('processStrips', flags.Detector.EnableITkStrip)
272  kwargs.setdefault('processHGTD', flags.Acts.useHGTDClusterInTrackFinding and flags.Detector.EnableHGTD)
273  kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
274  kwargs.setdefault('runReconstruction', True)
275  kwargs.setdefault('runPreparation', flags.Acts.useCache)
276 
277  # Step (1)
278  if kwargs['runCacheCreation']:
279  acc.merge(ActsClusterCacheCreatorAlgCfg(flags,
280  **extractChildKwargs(prefix='ClusterCacheCreatorAlg.', **kwargs)))
281 
282  # Step (2)
283  if kwargs['runReconstruction']:
284  if kwargs['processPixels']:
285  acc.merge(ActsPixelClusterizationAlgCfg(flags,
286  RoIs=RoIs,
287  **extractChildKwargs(prefix='PixelClusterizationAlg.', **kwargs)))
288  if kwargs['processStrips']:
289  acc.merge(ActsStripClusterizationAlgCfg(flags,
290  RoIs=RoIs,
291  **extractChildKwargs(prefix='StripClusterizationAlg.', **kwargs)))
292  if kwargs['processHGTD']:
293  acc.merge(ActsHgtdClusterizationAlgCfg(flags,
294  **extractChildKwargs(prefix='HgtdClusterizationAlg.', **kwargs)))
295  # Step (3)
296  if kwargs['runPreparation']:
297  if kwargs['processPixels']:
298  acc.merge(ActsPixelClusterPreparationAlgCfg(flags,
299  RoIs=RoIs,
300  **extractChildKwargs(prefix='PixelClusterPreparationAlg.', **kwargs)))
301 
302  if kwargs['processStrips']:
303  acc.merge(ActsStripClusterPreparationAlgCfg(flags,
304  RoIs=RoIs,
305  **extractChildKwargs(prefix='StripClusterPreparationAlg.', **kwargs)))
306 
307  if kwargs['processHGTD']:
308  acc.merge(ActsHgtdClusterPreparationAlgCfg(flags,
309  RoIs=RoIs,
310  **extractChildKwargs(prefix='HgtdClusterPreparationAlg.', **kwargs)))
311 
312  # Analysis extensions
313  if flags.Acts.Clusters.doAnalysis:
314  if kwargs['processPixels']:
315  from ActsConfig.ActsAnalysisConfig import ActsPixelClusterAnalysisAlgCfg
316  acc.merge(ActsPixelClusterAnalysisAlgCfg(flags, **extractChildKwargs(prefix='PixelClusterAnalysisAlg.', **kwargs)))
317 
318  if kwargs['processStrips']:
319  from ActsConfig.ActsAnalysisConfig import ActsStripClusterAnalysisAlgCfg
320  acc.merge(ActsStripClusterAnalysisAlgCfg(flags, **extractChildKwargs(prefix='StripClusterAnalysisAlg.', **kwargs)))
321 
322  return acc
323 
325  *,
326  previousActsExtension: str = None) -> ComponentAccumulator:
327  assert previousActsExtension is None or isinstance(previousActsExtension, str)
328 
329  acc = ComponentAccumulator()
330 
331  processPixels = flags.Detector.EnableITkPixel
332  processStrips = flags.Detector.EnableITkStrip
333  processHGTD = flags.Acts.useHGTDClusterInTrackFinding and flags.Detector.EnableHGTD
334 
335  kwargs = dict()
336  kwargs.setdefault('processPixels', processPixels)
337  kwargs.setdefault('processStrips', processStrips)
338  kwargs.setdefault('processHGTD', processHGTD)
339 
340  # Clusterization is a three step process at maximum:
341  # (1) Cache Creation
342  # (2) Clusterization algorithm (reconstruction of clusters)
343  # (3) Preparation of collection for downstream algorithms
344  # What step is scheduled depends on the tracking pass and the activation
345  # or de-activation of caching mechanism.
346 
347  # Secondary passes do not need cache creation, that has to be performed
348  # on the primary pass, and only if the caching is enabled.
349  # Reconstruction can run on secondary passes only if the caching is enabled,
350  # this is because we may need to process detector elements not processed
351  # on the primary pass.
352  # Preparation has to be performed on secondary passes always, and on primary
353  # pass only if cache is enabled. In the latter case it is useed to collect all
354  # the clusters from all views before passing them to the downstream algorithms
355 
356  if flags.Tracking.ActiveConfig.isSecondaryPass:
357  # Secondary passes
358  kwargs.setdefault('runCacheCreation', False)
359  kwargs.setdefault('runReconstruction', flags.Acts.useCache)
360  kwargs.setdefault('runPreparation', True)
361  else:
362  # Primary pass
363  kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
364  kwargs.setdefault('runReconstruction', True)
365  kwargs.setdefault('runPreparation', flags.Acts.useCache)
366 
367  # Name of the RoI to be used
368  roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
369  # Large Radius Tracking uses full scan RoI created in the primary pass
370  if flags.Tracking.ActiveConfig.extension == 'ActsLargeRadius':
371  roisName = 'ActsRegionOfInterest'
372 
373  # Name of the Cluster container -> ITk + extension without "Acts" + Pixel or Strip + Clusters
374  # We also define the same collection from the main ACTS pass (primary)
375  primaryPixelClustersName = 'ITkPixelClusters'
376  primaryStripClustersName = 'ITkStripClusters'
377  primaryHgtdClustersName = 'HGTD_Clusters'
378  pixelClustersName = primaryPixelClustersName
379  stripClustersName = primaryStripClustersName
380  hgtdClustersName = primaryHgtdClustersName
381 
382  # If the workflow is not a primary pass, then change the name of the cluster collections adding that information
383  if flags.Tracking.ActiveConfig.isSecondaryPass:
384  keyPrefix = flags.Tracking.ActiveConfig.extension.replace("Acts", "")
385  pixelClustersName = f'ITk{keyPrefix}PixelClusters'
386  stripClustersName = f'ITk{keyPrefix}StripClusters'
387  hgtdClustersName = f'{keyPrefix}HGTD_Clusters'
388 
389  # Configuration for (1)
390  if kwargs['runCacheCreation']:
391  kwargs.setdefault('ClusterCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
392 
393  # Configuration for (2)
394  if kwargs['runReconstruction']:
395  if kwargs['processPixels']:
396  kwargs.setdefault('PixelClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterizationAlg')
397  kwargs.setdefault('PixelClusterizationAlg.useCache', flags.Acts.useCache)
398  kwargs.setdefault('PixelClusterizationAlg.ClustersKey', pixelClustersName)
399  kwargs.setdefault('PixelClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
400  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
401  kwargs.setdefault('PixelClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
402 
403  if kwargs['processStrips']:
404  kwargs.setdefault('StripClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterizationAlg')
405  kwargs.setdefault('StripClusterizationAlg.useCache', flags.Acts.useCache)
406  kwargs.setdefault('StripClusterizationAlg.ClustersKey', stripClustersName)
407  kwargs.setdefault('StripClusterizationAlg.ClusterCache', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
408  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
409  kwargs.setdefault('StripClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
410 
411  if kwargs['processHGTD']:
412  kwargs.setdefault('HgtdClusterizationAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterizationAlg')
413  # HGTD algo has different convention ... need to use the same
414  kwargs.setdefault('HgtdClusterizationAlg.ClusterContainerName', hgtdClustersName)
415  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
416  kwargs.setdefault('HgtdClusterizationAlg.ExtraInputs', {('ActsTrk::PrepRawDataAssociation', f'StoreGateSvc+{previousActsExtension}PrdMap')})
417 
418 
419  # Configuration for (3)
420  if kwargs['runPreparation']:
421  if kwargs['processPixels']:
422  kwargs.setdefault('PixelClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterPreparationAlg')
423  kwargs.setdefault('PixelClusterPreparationAlg.useCache', flags.Acts.useCache)
424  kwargs.setdefault('PixelClusterPreparationAlg.OutputCollection', f'{pixelClustersName}_Cached' if kwargs['runReconstruction'] else pixelClustersName)
425  # The input is one between the collection (w/o cache) and the IDC (w/ cache)
426  if not flags.Acts.useCache:
427  # Take the collection from the reconstruction step. If not available take the collection from the primary pass
428  kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', pixelClustersName if kwargs['runReconstruction'] else primaryPixelClustersName)
429  kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', '')
430  else:
431  kwargs.setdefault('PixelClusterPreparationAlg.InputCollection', '')
432  kwargs.setdefault('PixelClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
433  # Prd Map for removing previously used measurements
434  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
435  kwargs.setdefault('PixelClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
436 
437  if kwargs['processStrips']:
438  kwargs.setdefault('StripClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterPreparationAlg')
439  kwargs.setdefault('StripClusterPreparationAlg.useCache', flags.Acts.useCache)
440  kwargs.setdefault('StripClusterPreparationAlg.OutputCollection', f'{stripClustersName}_Cached' if kwargs['runReconstruction'] else stripClustersName)
441  if not flags.Acts.useCache:
442  kwargs.setdefault('StripClusterPreparationAlg.InputCollection', stripClustersName if kwargs['runReconstruction'] else primaryStripClustersName)
443  kwargs.setdefault('StripClusterPreparationAlg.InputIDC', '')
444  else:
445  kwargs.setdefault('StripClusterPreparationAlg.InputCollection', '')
446  kwargs.setdefault('StripClusterPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
447  # Prd Map for removing previously used measurements
448  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
449  kwargs.setdefault('StripClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
450 
451  if kwargs['processHGTD']:
452  kwargs.setdefault('HgtdClusterPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterPreparationAlg')
453  kwargs.setdefault('HgtdClusterPreparationAlg.OutputCollection', f'{hgtdClustersName}_Cached' if kwargs['runReconstruction'] else hgtdClustersName)
454  kwargs.setdefault('HgtdClusterPreparationAlg.InputCollection', hgtdClustersName if kwargs['runReconstruction'] else primaryHgtdClustersName)
455  kwargs.setdefault('HgtdClusterPreparationAlg.InputIDC', '')
456  if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
457  kwargs.setdefault('HgtdClusterPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
458 
459  # Analysis algo(s)
460  if flags.Acts.Clusters.doAnalysis:
461  # Run analysis code on the resulting cluster collection produced by this tracking pass
462  # This collection is the result of (3) if it ran, else the result of (2). We are sure at least one of them run
463  if kwargs['processPixels']:
464  kwargs.setdefault('PixelClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelClusterAnalysisAlg')
465  kwargs.setdefault('PixelClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
466  kwargs.setdefault('PixelClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
467  kwargs.setdefault('PixelClusterAnalysisAlg.ClusterContainerKey', kwargs['PixelClusterPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['PixelClusterizationAlg.ClustersKey'])
468 
469  if kwargs['processStrips']:
470  kwargs.setdefault('StripClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripClusterAnalysisAlg')
471  kwargs.setdefault('StripClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
472  kwargs.setdefault('StripClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
473  kwargs.setdefault('StripClusterAnalysisAlg.ClusterContainerKey', kwargs['StripClusterPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripClusterizationAlg.ClustersKey'])
474 
475  if kwargs['processHGTD']:
476  kwargs.setdefault('HgtdClusterAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}HgtdClusterAnalysisAlg')
477  kwargs.setdefault('HgtdClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
478  kwargs.setdefault('HgtdClusterAnalysisAlg.MonGroupName', f'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
479 
480  acc.merge(ActsMainClusterizationCfg(flags, RoIs=roisName, **kwargs))
481 
482  # Persistification
483  if flags.Acts.EDM.PersistifyClusters and kwargs['runReconstruction']:
484  toAOD = []
485  if kwargs['processPixels']:
486  pixelClusterCollection = kwargs['PixelClusterizationAlg.ClustersKey']
487  toAOD += [f'xAOD::PixelClusterContainer#{pixelClusterCollection}',
488  f'xAOD::PixelClusterAuxContainer#{pixelClusterCollection}Aux.']
489 
490  if kwargs['processStrips']:
491  stripClusterCollection = kwargs['StripClusterizationAlg.ClustersKey']
492  toAOD += [f"xAOD::StripClusterContainer#{stripClusterCollection}",
493  f"xAOD::StripClusterAuxContainer#{stripClusterCollection}Aux."]
494 
495  if kwargs['processHGTD']:
496  hgtdClusterCollection = kwargs['HgtdClusterizationAlg.ClusterContainerName']
497  toAOD += [f"xAOD::HGTDClusterContainer#{hgtdClusterCollection}",
498  f"xAOD::HGTDClusterAuxContainer#{hgtdClusterCollection}Aux."]
499 
500  from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
501  acc.merge(addToAOD(flags, toAOD))
502 
503  return acc
504 
ActsClusterizationConfig.ActsPixelClusterizationAlgCfg
ComponentAccumulator ActsPixelClusterizationAlgCfg(flags, str name='ActsPixelClusterizationAlg', *bool useCache=False, **kwargs)
Definition: ActsClusterizationConfig.py:109
ActsClusterizationConfig.ActsHgtdClusteringToolCfg
ComponentAccumulator ActsHgtdClusteringToolCfg(flags, str name="ActsHgtdClusteringTool", **kwargs)
Definition: ActsClusterizationConfig.py:8
python.ITkStripLorentzAngleConfig.ITkStripLorentzAngleToolCfg
def ITkStripLorentzAngleToolCfg(flags, name="ITkStripLorentzAngleTool", **kwargs)
Definition: ITkStripLorentzAngleConfig.py:10
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
ActsUtilities.extractChildKwargs
dict extractChildKwargs(*str prefix, **dict kwargs)
Definition: ActsUtilities.py:3
ActsMonitoringConfig.ActsHgtdClusterizationMonitoringToolCfg
ComponentAccumulator ActsHgtdClusterizationMonitoringToolCfg(flags, str name="ActsHgtdClusterizationMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:64
ActsMonitoringConfig.ActsITkStripClusterizationMonitoringToolCfg
ComponentAccumulator ActsITkStripClusterizationMonitoringToolCfg(flags, str name="ActsITkStripClusterizationMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:31
ActsClusterizationConfig.ActsHgtdClusterizationAlgCfg
ComponentAccumulator ActsHgtdClusterizationAlgCfg(flags, str name="ActsHgtdClusterizationAlg", **kwargs)
Definition: ActsClusterizationConfig.py:22
ActsAnalysisConfig.ActsStripClusterAnalysisAlgCfg
ComponentAccumulator ActsStripClusterAnalysisAlgCfg(flags, str name="ActsStripClusterAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:206
RegSelToolConfig.regSelTool_ITkPixel_Cfg
def regSelTool_ITkPixel_Cfg(flags)
Definition: RegSelToolConfig.py:120
python.SiClusterizationToolConfig.ITkPixelRDOToolCfg
def ITkPixelRDOToolCfg(flags, name="ITkPixelRDOTool", **kwargs)
Definition: SiClusterizationToolConfig.py:103
python.ITkStripConditionsAlgorithmsConfig.ITkStripDetectorElementStatusAlgCfg
def ITkStripDetectorElementStatusAlgCfg(flags, name="ITkStripDetectorElementStatusAlg", **kwargs)
Definition: ITkStripConditionsAlgorithmsConfig.py:90
ActsClusterizationConfig.ActsStripClusterizationAlgCfg
ComponentAccumulator ActsStripClusterizationAlgCfg(flags, str name='ActsStripClusterizationAlg', bool useCache=False, **kwargs)
Definition: ActsClusterizationConfig.py:143
ActsClusterizationConfig.ActsHgtdClusterPreparationAlgCfg
ComponentAccumulator ActsHgtdClusterPreparationAlgCfg(flags, str name='ActsHgtdClusterPreparationAlg', *bool useCache=False, **kwargs)
Definition: ActsClusterizationConfig.py:234
python.ITkPixelLorentzAngleConfig.ITkPixelLorentzAngleToolCfg
def ITkPixelLorentzAngleToolCfg(flags, name="ITkPixelLorentzAngleTool", **kwargs)
Definition: ITkPixelLorentzAngleConfig.py:14
RegSelToolConfig.regSelTool_ITkStrip_Cfg
def regSelTool_ITkStrip_Cfg(flags)
Definition: RegSelToolConfig.py:126
ActsMonitoringConfig.ActsDataPreparationMonitoringToolCfg
ComponentAccumulator ActsDataPreparationMonitoringToolCfg(flags, str name="ActsDataPreparationMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:49
python.PixelReadoutGeometryConfig.ITkPixelReadoutManagerCfg
def ITkPixelReadoutManagerCfg(flags, name="ITkPixelReadoutManager", **kwargs)
Definition: PixelReadoutGeometryConfig.py:13
ActsClusterizationConfig.ActsHgtdTimedClusteringToolCfg
ComponentAccumulator ActsHgtdTimedClusteringToolCfg(flags, str name="ActsHgtdTimedClusteringTool", **kwargs)
Definition: ActsClusterizationConfig.py:15
HGTD_GeoModelConfig.HGTD_ReadoutGeometryCfg
def HGTD_ReadoutGeometryCfg(flags)
Definition: python/HGTD_GeoModelConfig.py:23
ActsClusterizationConfig.ActsClusterizationCfg
ComponentAccumulator ActsClusterizationCfg(flags, *str previousActsExtension=None)
Definition: ActsClusterizationConfig.py:324
ActsClusterizationConfig.ActsStripClusterPreparationAlgCfg
ComponentAccumulator ActsStripClusterPreparationAlgCfg(flags, str name="ActsStripClusterPreparationAlg", bool useCache=False, **kwargs)
Definition: ActsClusterizationConfig.py:209
ActsMonitoringConfig.ActsITkPixelClusterizationMonitoringToolCfg
ComponentAccumulator ActsITkPixelClusterizationMonitoringToolCfg(flags, str name="ActsITkPixelClusterizationMonitoringTool", **kwargs)
Definition: ActsMonitoringConfig.py:13
python.OutputStreamConfig.addToAOD
def addToAOD(flags, itemOrList, **kwargs)
Definition: OutputStreamConfig.py:142
ITkPixelConditionsConfig.ITkPixelChargeCalibCondAlgCfg
def ITkPixelChargeCalibCondAlgCfg(flags, name="ITkPixelChargeCalibCondAlg", **kwargs)
Definition: ITkPixelConditionsConfig.py:74
ActsClusterizationConfig.ActsPixelClusterPreparationAlgCfg
ComponentAccumulator ActsPixelClusterPreparationAlgCfg(flags, str name="ActsPixelClusterPreparationAlg", bool useCache=False, **kwargs)
Definition: ActsClusterizationConfig.py:185
ActsClusterizationConfig.ActsMainClusterizationCfg
ComponentAccumulator ActsMainClusterizationCfg(flags, *str RoIs="ActsRegionOfInterest", **dict kwargs)
Definition: ActsClusterizationConfig.py:254
ITkPixelConditionsConfig.ITkPixelOfflineCalibCondAlgCfg
def ITkPixelOfflineCalibCondAlgCfg(flags, name="ITkPixelOfflineCalibCondAlg", **kwargs)
Definition: ITkPixelConditionsConfig.py:164
ActsClusterizationConfig.ActsClusterCacheCreatorAlgCfg
ComponentAccumulator ActsClusterCacheCreatorAlgCfg(flags, str name="ActsClusterCacheCreatorAlg", **kwargs)
Definition: ActsClusterizationConfig.py:176
ActsClusterizationConfig.ActsStripClusteringToolCfg
ComponentAccumulator ActsStripClusteringToolCfg(flags, str name="ActsStripClusteringTool", **kwargs)
Definition: ActsClusterizationConfig.py:83
ActsClusterizationConfig.ActsPixelClusteringToolCfg
ComponentAccumulator ActsPixelClusteringToolCfg(flags, str name="ActsPixelClusteringTool", **kwargs)
Definition: ActsClusterizationConfig.py:52
ActsAnalysisConfig.ActsPixelClusterAnalysisAlgCfg
ComponentAccumulator ActsPixelClusterAnalysisAlgCfg(flags, str name="ActsPixelClusterAnalysisAlg", str extension="Acts", **kwargs)
Definition: ActsAnalysisConfig.py:172