ATLAS Offline Software
Loading...
Searching...
No Matches
InDetPrepRawDataFormationConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2# Configuration of InDetPrepRawDataFormation package
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.Enums import Format
6from AthenaConfiguration.Enums import ProductionStep
7
8
10 """Return clusterization input prefix based on the production step and tracking config"""
11 doTrackOverlay = flags.TrackOverlay.isTrackOverlaySeq
12 if doTrackOverlay:
13 prefix = flags.Overlay.SigPrefix
14 elif flags.Common.ProductionStep in [ProductionStep.PileUpPretracking, ProductionStep.MinbiasPreprocessing]:
15 prefix = flags.Overlay.BkgPrefix
16 else:
17 prefix = ''
18
19 return prefix
20
21
22def HGTDInDetToXAODClusterConversionCfg(flags, name="HGTDInDetToXAODClusterConversion", **kwargs):
23 acc = ComponentAccumulator()
24 kwargs.setdefault('ProcessHgtd', True)
25 acc.addEventAlgo(CompFactory.InDet.InDetToXAODClusterConversion(name, **kwargs))
26
27 # persistification
28 from ActsConfig.ActsPersistificationConfig import PersistifyClusters
29 acc.merge(PersistifyClusters(flags,
30 hgtdClusterCollections=['HGTD_Clusters']))
31 return acc
32
33def HGTDXAODToInDetClusterConversionCfg(flags, name="HGTDXAODToInDetClusterConversion", **kwargs):
34 acc = ComponentAccumulator()
35 kwargs.setdefault('ProcessHgtd', True)
36 acc.addEventAlgo(CompFactory.InDet.XAODToInDetClusterConversion(name, **kwargs))
37 return acc
38
39
40def ITkInDetToXAODClusterConversionCfg(flags, name="ITkInDetToXAODClusterConversion", **kwargs):
41 acc = ComponentAccumulator()
42 kwargs.setdefault('ProcessPixel', flags.Detector.EnableITkPixel)
43 kwargs.setdefault('ProcessStrip', flags.Detector.EnableITkStrip)
44 acc.addEventAlgo(CompFactory.InDet.InDetToXAODClusterConversion(name, **kwargs))
45
46 # persistification
47 pixelClusterCollections = None if not kwargs['ProcessPixel'] else ['ITkPixelClusters']
48 stripClusterCollections = None if not kwargs['ProcessStrip'] else ['ITkStripClusters']
49 from ActsConfig.ActsPersistificationConfig import PersistifyClusters
50 acc.merge(PersistifyClusters(flags,
51 pixelClusterCollections=pixelClusterCollections,
52 stripClusterCollections=stripClusterCollections))
53 return acc
54
55
56def IDInDetToXAODClusterConversionCfg(flags, name="IDInDetToXAODClusterConversion", **kwargs):
57 acc = ComponentAccumulator()
58 kwargs.setdefault('isITk', False)
59 kwargs.setdefault('ProcessPixel', flags.Detector.EnablePixel)
60 kwargs.setdefault('ProcessStrip', flags.Detector.EnableSCT)
61
62 kwargs.setdefault('PixelDetEleCollKey', "PixelDetectorElementCollection")
63 kwargs.setdefault('StripDetEleCollKey', "SCT_DetectorElementCollection")
64
65 kwargs.setdefault('InputPixelClustersName', "PixelClusters")
66 kwargs.setdefault('InputStripClustersName', "SCT_Clusters")
67
68 kwargs.setdefault('OutputPixelClustersName', "PixelClusters")
69 kwargs.setdefault('OutputStripClustersName', "SCT_Clusters")
70
71 acc.addEventAlgo(CompFactory.InDet.InDetToXAODClusterConversion(name, **kwargs))
72
73 # persistification
74 pixelClusterCollections = None if not kwargs['ProcessPixel'] else ['PixelClusters']
75 stripClusterCollections = None if not kwargs['ProcessStrip'] else ['SCT_Clusters']
76 from ActsConfig.ActsPersistificationConfig import PersistifyClusters
77 acc.merge(PersistifyClusters(flags,
78 pixelClusterCollections=pixelClusterCollections,
79 stripClusterCollections=stripClusterCollections))
80 return acc
81
82
83def ITkXAODToInDetClusterConversionCfg(flags, name="ITkXAODToInDetClusterConversion", **kwargs):
84 acc = ComponentAccumulator()
85
86 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
87 kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)) )
88
89 kwargs.setdefault('ProcessPixel', flags.Detector.EnableITkPixel)
90 kwargs.setdefault('ProcessStrip', flags.Detector.EnableITkStrip)
91
92 acc.addEventAlgo(CompFactory.InDet.XAODToInDetClusterConversion(name, **kwargs))
93 return acc
94
95
96def PixelClusterizationCfg(flags, name = "InDetPixelClusterization", **kwargs):
97 acc = ComponentAccumulator()
98
99 prefix = clusterizationInputPrefix(flags)
100
101 if "clusteringTool" not in kwargs:
102 from InDetConfig.SiClusterizationToolConfig import MergedPixelsToolCfg
103 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
104 MergedPixelsToolCfg(flags)))
105
106 if "gangedAmbiguitiesFinder" not in kwargs:
107 from InDetConfig.SiClusterizationToolConfig import PixelGangedAmbiguitiesFinderCfg
108 kwargs.setdefault("gangedAmbiguitiesFinder", acc.popToolsAndMerge(
109 PixelGangedAmbiguitiesFinderCfg(flags)))
110
111 kwargs.setdefault("DataObjectName", prefix + "PixelRDOs")
112 kwargs.setdefault("ClustersName", "PixelClusters")
113
114 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(prefix+name, **kwargs))
115 return acc
116
117
118def PixelClusterizationPUCfg(flags, name="InDetPixelClusterizationPU", **kwargs):
119 kwargs.setdefault("DataObjectName", "Pixel_PU_RDOs")
120 kwargs.setdefault("ClustersName", "PixelPUClusters")
121 kwargs.setdefault("AmbiguitiesMap", "PixelClusterAmbiguitiesMapPU")
122 return PixelClusterizationCfg(flags, name, **kwargs)
123
124
125def TrigPixelClusterizationCfg(flags, RoIs, name="InDetPixelClusterization", **kwargs):
126 acc = ComponentAccumulator()
127
128 if "RegSelTool" not in kwargs:
129 from RegionSelector.RegSelToolConfig import regSelTool_Pixel_Cfg
130 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
131 regSelTool_Pixel_Cfg(flags)))
132
133 if "clusteringTool" not in kwargs:
134 from InDetConfig.SiClusterizationToolConfig import TrigMergedPixelsToolCfg
135 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
136 TrigMergedPixelsToolCfg(flags)))
137
138 if "gangedAmbiguitiesFinder" not in kwargs:
139 from InDetConfig.SiClusterizationToolConfig import PixelGangedAmbiguitiesFinderCfg
140 kwargs.setdefault("gangedAmbiguitiesFinder", acc.popToolsAndMerge(
141 PixelGangedAmbiguitiesFinderCfg(flags)))
142
143 kwargs.setdefault("AmbiguitiesMap", flags.Trigger.InDetTracking.ClusterAmbiguitiesMap)
144 kwargs.setdefault("ClustersName", "PixelTrigClusters")
145 kwargs.setdefault("isRoI_Seeded", True)
146 kwargs.setdefault("RoIs", RoIs)
147 kwargs.setdefault("ClusterContainerCacheKey", flags.Trigger.InDetTracking.PixelClusterCacheKey)
148 kwargs.setdefault("useDataPoolWithCache", True)
149 kwargs.setdefault("name", f"{name}_{RoIs}")
150
151 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(**kwargs))
152 return acc
153
154
155def ITkPixelClusterizationCfg(flags, name = "ITkPixelClusterization", **kwargs):
156 acc = ComponentAccumulator()
157
158 prefix = clusterizationInputPrefix(flags)
159
160 if "clusteringTool" not in kwargs:
161 from InDetConfig.SiClusterizationToolConfig import ITkMergedPixelsToolCfg
162 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
163 ITkMergedPixelsToolCfg(flags)))
164
165 if "gangedAmbiguitiesFinder" not in kwargs:
166 from InDetConfig.SiClusterizationToolConfig import ITkPixelGangedAmbiguitiesFinderCfg
167 kwargs.setdefault("gangedAmbiguitiesFinder", acc.popToolsAndMerge(ITkPixelGangedAmbiguitiesFinderCfg(flags)))
168 kwargs.setdefault("DataObjectName", prefix + "ITkPixelRDOs")
169 kwargs.setdefault("ClustersName", "ITkPixelClusters")
170 kwargs.setdefault("AmbiguitiesMap", "ITkPixelClusterAmbiguitiesMap")
171
172 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(prefix+name, **kwargs))
173 return acc
174
175
176def ITkTrigPixelClusterizationCfg(flags, name = "ITkTrigPixelClusterization", roisKey="", signature="", **kwargs):
177 acc = ComponentAccumulator()
178 from RegionSelector.RegSelToolConfig import regSelTool_ITkPixel_Cfg
179 acc.merge(ITkPixelClusterizationCfg(flags,
180 name="ITkPixelClusterization_"+signature,
181 isRoI_Seeded=True,
182 RoIs=roisKey,
183 ClustersName = "ITkTrigPixelClusters",
184 ClusterContainerCacheKey=flags.Trigger.ITkTracking.PixelClusterCacheKey,
185 AmbiguitiesMap = flags.Trigger.ITkTracking.ClusterAmbiguitiesMap,
186 RegSelTool= acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags))))
187 return acc
188
189
190def SCTClusterizationCfg(flags, name="InDetSCT_Clusterization", **kwargs):
191 acc = ComponentAccumulator()
192
193 prefix = clusterizationInputPrefix(flags)
194
195 if "conditionsTool" not in kwargs:
196 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg
197 kwargs.setdefault("conditionsTool", acc.popToolsAndMerge(
198 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False)))
199
200 if "SCTDetElStatus" not in kwargs :
201 from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementStatusAlgWithoutFlaggedCfg
202 acc.merge( SCT_DetectorElementStatusAlgWithoutFlaggedCfg(flags) )
203 kwargs.setdefault("SCTDetElStatus", "SCTDetectorElementStatusWithoutFlagged" )
204
205 if "clusteringTool" not in kwargs:
206 from InDetConfig.SiClusterizationToolConfig import SCT_ClusteringToolCfg
207 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
208 SCT_ClusteringToolCfg(flags)))
209
210 kwargs.setdefault("DataObjectName", prefix + "SCT_RDOs")
211 kwargs.setdefault("ClustersName", 'SCT_Clusters')
212
213 acc.addEventAlgo(CompFactory.InDet.SCT_Clusterization(prefix+name, **kwargs))
214 return acc
215
216
217def SCTClusterizationPUCfg(flags, name="InDetSCT_ClusterizationPU", **kwargs):
218 kwargs.setdefault("DataObjectName", "SCT_PU_RDOs" )
219 kwargs.setdefault("ClustersName", "SCT_PU_Clusters")
220 return SCTClusterizationCfg(flags, name, **kwargs)
221
222
223def TrigSCTClusterizationCfg(flags, RoIs, name="InDetSCT_Clusterization", **kwargs):
224 acc = ComponentAccumulator()
225
226 if "RegSelTool" not in kwargs:
227 from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg
228 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
229 regSelTool_SCT_Cfg(flags)))
230
231 if "conditionsTool" not in kwargs:
232 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg
233 kwargs.setdefault("conditionsTool", acc.popToolsAndMerge(
234 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False, withTdaqTool=False)))
235
236 if "clusteringTool" not in kwargs:
237 from InDetConfig.SiClusterizationToolConfig import Trig_SCT_ClusteringToolCfg
238 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
239 Trig_SCT_ClusteringToolCfg(flags)))
240
241 kwargs.setdefault("DataObjectName", 'SCT_RDOs')
242 kwargs.setdefault("ClustersName", 'SCT_TrigClusters')
243 kwargs.setdefault("isRoI_Seeded", True)
244 kwargs.setdefault("RoIs", RoIs)
245 kwargs.setdefault("ClusterContainerCacheKey", flags.Trigger.InDetTracking.SCTClusterCacheKey)
246 kwargs.setdefault("FlaggedCondCacheKey", "")
247 kwargs.setdefault("useDataPoolWithCache", True)
248 kwargs.setdefault("name", f"{name}_{RoIs}")
249
250 acc.addEventAlgo(CompFactory.InDet.SCT_Clusterization(**kwargs))
251 return acc
252
253
254def ITkStripClusterizationCfg(flags, name="ITkStripClusterization", **kwargs):
255 acc = ComponentAccumulator()
256
257 prefix = clusterizationInputPrefix(flags)
258
259 kwargs.setdefault("conditionsTool",None) # SCTDetElStatus is used instead
260 if "SCTDetElStatus" not in kwargs :
261 if not flags.Trigger.doHLT :
262 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import (
263 ITkStripDetectorElementStatusAlgCfg)
264 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
265 kwargs.setdefault("SCTDetElStatus", "ITkStripDetectorElementStatus")
266
267 if "clusteringTool" not in kwargs:
268 from InDetConfig.SiClusterizationToolConfig import ITKStrip_SCT_ClusteringToolCfg
269 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
270 ITKStrip_SCT_ClusteringToolCfg(flags)))
271 kwargs.setdefault("DataObjectName", prefix + 'ITkStripRDOs')
272 kwargs.setdefault("ClustersName", 'ITkStripClusters')
273 kwargs.setdefault("SCT_FlaggedCondData", "ITkStripFlaggedCondData")
274 # Disable noisy modules suppression
275 kwargs.setdefault("maxFiredStrips", 0)
276
277 acc.addEventAlgo( CompFactory.InDet.SCT_Clusterization(prefix+name, **kwargs))
278 return acc
279
280
281def ITkTrigStripClusterizationCfg(flags, name="ITkTrigStripClusterization", roisKey="", signature="", **kwargs):
282 acc = ComponentAccumulator()
283 from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
284 acc.merge(ITkStripClusterizationCfg(flags,
285 name="ITkStripClusterization_"+signature,
286 isRoI_Seeded=True,
287 RoIs=roisKey,
288 ClustersName = "ITkTrigStripClusters",
289 ClusterContainerCacheKey=flags.Trigger.ITkTracking.SCTClusterCacheKey,
290 RegSelTool= acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags))))
291 return acc
292
293
294def InDetTRT_RIO_MakerCfg(flags, name = "InDetTRT_RIO_Maker", **kwargs):
295 acc = ComponentAccumulator()
296
297 # track overlay always uses full input container here
298 if flags.Common.ProductionStep in [ProductionStep.PileUpPretracking, ProductionStep.MinbiasPreprocessing]:
299 prefix = flags.Overlay.BkgPrefix
300 else:
301 prefix = ''
302
303 if "TRT_DriftCircleTool" not in kwargs:
304 from InDetConfig.TRT_DriftCircleToolConfig import TRT_DriftCircleToolCfg
305 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
306 TRT_DriftCircleToolCfg(flags)))
307 kwargs.setdefault("TRTRIOLocation", 'TRT_DriftCircles')
308 #Backtracking is disable during the processing of pileup tracks,
309 #the standard TRT_RDOs are used for track overlay when overlaying with HS RDOs.
310 kwargs.setdefault("TRTRDOLocation", prefix + 'TRT_RDOs')
311
312 acc.addEventAlgo(CompFactory.InDet.TRT_RIO_Maker(prefix+name, **kwargs))
313 return acc
314
315
316def InDetTRT_NoTime_RIO_MakerCfg(flags, name = "InDetTRT_NoTime_RIO_Maker", **kwargs):
317 acc = ComponentAccumulator()
318
319 if "TRT_DriftCircleTool" not in kwargs:
320 from InDetConfig.TRT_DriftCircleToolConfig import TRT_NoTime_DriftCircleToolCfg
321 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
322 TRT_NoTime_DriftCircleToolCfg(flags)))
323
324 kwargs.setdefault("TRTRIOLocation", 'TRT_DriftCirclesUncalibrated')
325
326 acc.merge(InDetTRT_RIO_MakerCfg(flags, name, **kwargs))
327 return acc
328
329
330def InDetTRT_Phase_RIO_MakerCfg(flags, name = "InDetTRT_Phase_RIO_Maker", **kwargs):
331 acc = ComponentAccumulator()
332
333 if "TRT_DriftCircleTool" not in kwargs:
334 from InDetConfig.TRT_DriftCircleToolConfig import TRT_Phase_DriftCircleToolCfg
335 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
336 TRT_Phase_DriftCircleToolCfg(flags)))
337
338 acc.merge(InDetTRT_RIO_MakerCfg(flags, name, **kwargs))
339 return acc
340
341
342def InDetTRT_RIO_MakerPUCfg(flags, name = "InDetTRT_RIO_MakerPU", **kwargs):
343 kwargs.setdefault("TRTRDOLocation", 'TRT_PU_RDOs')
344 kwargs.setdefault("TRTRIOLocation", 'TRT_PU_DriftCircles')
345 return InDetTRT_RIO_MakerCfg(flags, name, **kwargs)
346
347
348def TrigTRTRIOMakerCfg(flags, RoIs, name="InDetTrigMTTRTDriftCircleMaker", **kwargs):
349 acc = ComponentAccumulator()
350
351 if "RegSelTool" not in kwargs:
352 from RegionSelector.RegSelToolConfig import regSelTool_TRT_Cfg
353 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
354 regSelTool_TRT_Cfg(flags)))
355
356 if "TRT_DriftCircleTool" not in kwargs:
357 from InDetConfig.TRT_DriftCircleToolConfig import TRT_DriftCircleToolCfg
358 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
359 TRT_DriftCircleToolCfg(flags)))
360
361 kwargs.setdefault("TRTRIOLocation", "TRT_TrigDriftCircles")
362 kwargs.setdefault("TRTRDOLocation", "TRT_RDOs_TRIG" if flags.Input.Format is Format.BS else "TRT_RDOs")
363 kwargs.setdefault("isRoI_Seeded", True)
364 kwargs.setdefault("RoIs", RoIs)
365
366 kwargs.setdefault("TRT_DriftCircleCache", flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey)
367 kwargs.setdefault("useDataPoolWithCache", True)
368
369 kwargs.setdefault("name", f"{name}_{RoIs}")
370 acc.addEventAlgo(CompFactory.InDet.TRT_RIO_Maker(**kwargs))
371 return acc
372
373
375 acc = ComponentAccumulator()
376 #
377 # -- Pixel Clusterization
378 #
379 if flags.Detector.EnableITkPixel:
380 acc.merge(ITkPixelClusterizationCfg(flags))
381 #
382 # --- Strip Clusterization
383 #
384 if flags.Detector.EnableITkStrip:
385 acc.merge(ITkStripClusterizationCfg(flags))
386
387 return acc
HGTDXAODToInDetClusterConversionCfg(flags, name="HGTDXAODToInDetClusterConversion", **kwargs)
ITkPixelClusterizationCfg(flags, name="ITkPixelClusterization", **kwargs)
ITkXAODToInDetClusterConversionCfg(flags, name="ITkXAODToInDetClusterConversion", **kwargs)
TrigTRTRIOMakerCfg(flags, RoIs, name="InDetTrigMTTRTDriftCircleMaker", **kwargs)
PixelClusterizationCfg(flags, name="InDetPixelClusterization", **kwargs)
ITkInDetToXAODClusterConversionCfg(flags, name="ITkInDetToXAODClusterConversion", **kwargs)
InDetTRT_Phase_RIO_MakerCfg(flags, name="InDetTRT_Phase_RIO_Maker", **kwargs)
TrigSCTClusterizationCfg(flags, RoIs, name="InDetSCT_Clusterization", **kwargs)
IDInDetToXAODClusterConversionCfg(flags, name="IDInDetToXAODClusterConversion", **kwargs)
SCTClusterizationCfg(flags, name="InDetSCT_Clusterization", **kwargs)
InDetTRT_NoTime_RIO_MakerCfg(flags, name="InDetTRT_NoTime_RIO_Maker", **kwargs)
InDetTRT_RIO_MakerPUCfg(flags, name="InDetTRT_RIO_MakerPU", **kwargs)
ITkTrigStripClusterizationCfg(flags, name="ITkTrigStripClusterization", roisKey="", signature="", **kwargs)
SCTClusterizationPUCfg(flags, name="InDetSCT_ClusterizationPU", **kwargs)
TrigPixelClusterizationCfg(flags, RoIs, name="InDetPixelClusterization", **kwargs)
InDetTRT_RIO_MakerCfg(flags, name="InDetTRT_RIO_Maker", **kwargs)
ITkTrigPixelClusterizationCfg(flags, name="ITkTrigPixelClusterization", roisKey="", signature="", **kwargs)
ITkStripClusterizationCfg(flags, name="ITkStripClusterization", **kwargs)
HGTDInDetToXAODClusterConversionCfg(flags, name="HGTDInDetToXAODClusterConversion", **kwargs)
PixelClusterizationPUCfg(flags, name="InDetPixelClusterizationPU", **kwargs)