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 if flags.TrackOverlay.isTrackOverlaySeq and flags.TrackOverlay.doRoISiOverlay:
112 # merged signal + pileup RDOs inside calo RoIs, signal-only RDOs elsewhere
113 from TrackOverlayRec.TrackOverlayRoIConfig import (
114 TrackOverlayRoISiRDOMergerAlgCfg, RoIPixelRDOs)
115 acc.merge(TrackOverlayRoISiRDOMergerAlgCfg(flags))
116 kwargs.setdefault("DataObjectName", RoIPixelRDOs)
117 kwargs.setdefault("DataObjectName", prefix + "PixelRDOs")
118 kwargs.setdefault("ClustersName", "PixelClusters")
119
120 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(prefix+name, **kwargs))
121 return acc
122
123
124def PixelClusterizationPUCfg(flags, name="InDetPixelClusterizationPU", **kwargs):
125 kwargs.setdefault("DataObjectName", "Pixel_PU_RDOs")
126 kwargs.setdefault("ClustersName", "PixelPUClusters")
127 kwargs.setdefault("AmbiguitiesMap", "PixelClusterAmbiguitiesMapPU")
128 return PixelClusterizationCfg(flags, name, **kwargs)
129
130
131def TrigPixelClusterizationCfg(flags, RoIs, name="InDetPixelClusterization", **kwargs):
132 acc = ComponentAccumulator()
133
134 if "RegSelTool" not in kwargs:
135 from RegionSelector.RegSelToolConfig import regSelTool_Pixel_Cfg
136 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
137 regSelTool_Pixel_Cfg(flags)))
138
139 if "clusteringTool" not in kwargs:
140 from InDetConfig.SiClusterizationToolConfig import TrigMergedPixelsToolCfg
141 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
142 TrigMergedPixelsToolCfg(flags)))
143
144 if "gangedAmbiguitiesFinder" not in kwargs:
145 from InDetConfig.SiClusterizationToolConfig import PixelGangedAmbiguitiesFinderCfg
146 kwargs.setdefault("gangedAmbiguitiesFinder", acc.popToolsAndMerge(
147 PixelGangedAmbiguitiesFinderCfg(flags)))
148
149 kwargs.setdefault("AmbiguitiesMap", flags.Trigger.InDetTracking.ClusterAmbiguitiesMap)
150 kwargs.setdefault("ClustersName", "PixelTrigClusters")
151 kwargs.setdefault("isRoI_Seeded", True)
152 kwargs.setdefault("RoIs", RoIs)
153 kwargs.setdefault("ClusterContainerCacheKey", flags.Trigger.InDetTracking.PixelClusterCacheKey)
154 kwargs.setdefault("useDataPoolWithCache", True)
155 kwargs.setdefault("name", f"{name}_{RoIs}")
156
157 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(**kwargs))
158 return acc
159
160
161def ITkPixelClusterizationCfg(flags, name = "ITkPixelClusterization", **kwargs):
162 acc = ComponentAccumulator()
163
164 prefix = clusterizationInputPrefix(flags)
165
166 if "clusteringTool" not in kwargs:
167 from InDetConfig.SiClusterizationToolConfig import ITkMergedPixelsToolCfg
168 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
169 ITkMergedPixelsToolCfg(flags)))
170
171 if "gangedAmbiguitiesFinder" not in kwargs:
172 from InDetConfig.SiClusterizationToolConfig import ITkPixelGangedAmbiguitiesFinderCfg
173 kwargs.setdefault("gangedAmbiguitiesFinder", acc.popToolsAndMerge(ITkPixelGangedAmbiguitiesFinderCfg(flags)))
174 kwargs.setdefault("DataObjectName", prefix + "ITkPixelRDOs")
175 kwargs.setdefault("ClustersName", "ITkPixelClusters")
176 kwargs.setdefault("AmbiguitiesMap", "ITkPixelClusterAmbiguitiesMap")
177
178 acc.addEventAlgo(CompFactory.InDet.PixelClusterization(prefix+name, **kwargs))
179 return acc
180
181
182def ITkTrigPixelClusterizationCfg(flags, name = "ITkTrigPixelClusterization", roisKey="", signature="", **kwargs):
183 acc = ComponentAccumulator()
184 from RegionSelector.RegSelToolConfig import regSelTool_ITkPixel_Cfg
185 acc.merge(ITkPixelClusterizationCfg(flags,
186 name="ITkPixelClusterization_"+signature,
187 isRoI_Seeded=True,
188 RoIs=roisKey,
189 ClustersName = "ITkTrigPixelClusters",
190 ClusterContainerCacheKey=flags.Trigger.ITkTracking.PixelClusterCacheKey,
191 AmbiguitiesMap = flags.Trigger.ITkTracking.ClusterAmbiguitiesMap,
192 RegSelTool= acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags))))
193 return acc
194
195
196def SCTClusterizationCfg(flags, name="InDetSCT_Clusterization", **kwargs):
197 acc = ComponentAccumulator()
198
199 prefix = clusterizationInputPrefix(flags)
200
201 if "conditionsTool" not in kwargs:
202 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg
203 kwargs.setdefault("conditionsTool", acc.popToolsAndMerge(
204 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False)))
205
206 if "SCTDetElStatus" not in kwargs :
207 from SCT_ConditionsAlgorithms.SCT_ConditionsAlgorithmsConfig import SCT_DetectorElementStatusAlgWithoutFlaggedCfg
208 acc.merge( SCT_DetectorElementStatusAlgWithoutFlaggedCfg(flags) )
209 kwargs.setdefault("SCTDetElStatus", "SCTDetectorElementStatusWithoutFlagged" )
210
211 if "clusteringTool" not in kwargs:
212 from InDetConfig.SiClusterizationToolConfig import SCT_ClusteringToolCfg
213 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
214 SCT_ClusteringToolCfg(flags)))
215
216 if flags.TrackOverlay.isTrackOverlaySeq and flags.TrackOverlay.doRoISiOverlay:
217 # merged signal + pileup RDOs inside calo RoIs, signal-only RDOs elsewhere
218 from TrackOverlayRec.TrackOverlayRoIConfig import (
219 TrackOverlayRoISiRDOMergerAlgCfg, RoISCT_RDOs)
220 acc.merge(TrackOverlayRoISiRDOMergerAlgCfg(flags))
221 kwargs.setdefault("DataObjectName", RoISCT_RDOs)
222 kwargs.setdefault("DataObjectName", prefix + "SCT_RDOs")
223 kwargs.setdefault("ClustersName", 'SCT_Clusters')
224
225 acc.addEventAlgo(CompFactory.InDet.SCT_Clusterization(prefix+name, **kwargs))
226 return acc
227
228
229def SCTClusterizationPUCfg(flags, name="InDetSCT_ClusterizationPU", **kwargs):
230 kwargs.setdefault("DataObjectName", "SCT_PU_RDOs" )
231 kwargs.setdefault("ClustersName", "SCT_PU_Clusters")
232 return SCTClusterizationCfg(flags, name, **kwargs)
233
234
235def TrigSCTClusterizationCfg(flags, RoIs, name="InDetSCT_Clusterization", **kwargs):
236 acc = ComponentAccumulator()
237
238 if "RegSelTool" not in kwargs:
239 from RegionSelector.RegSelToolConfig import regSelTool_SCT_Cfg
240 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
241 regSelTool_SCT_Cfg(flags)))
242
243 if "conditionsTool" not in kwargs:
244 from SCT_ConditionsTools.SCT_ConditionsToolsConfig import SCT_ConditionsSummaryToolCfg
245 kwargs.setdefault("conditionsTool", acc.popToolsAndMerge(
246 SCT_ConditionsSummaryToolCfg(flags, withFlaggedCondTool=False, withTdaqTool=False)))
247
248 if "clusteringTool" not in kwargs:
249 from InDetConfig.SiClusterizationToolConfig import Trig_SCT_ClusteringToolCfg
250 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
251 Trig_SCT_ClusteringToolCfg(flags)))
252
253 kwargs.setdefault("DataObjectName", 'SCT_RDOs')
254 kwargs.setdefault("ClustersName", 'SCT_TrigClusters')
255 kwargs.setdefault("isRoI_Seeded", True)
256 kwargs.setdefault("RoIs", RoIs)
257 kwargs.setdefault("ClusterContainerCacheKey", flags.Trigger.InDetTracking.SCTClusterCacheKey)
258 kwargs.setdefault("FlaggedCondCacheKey", "")
259 kwargs.setdefault("useDataPoolWithCache", True)
260 kwargs.setdefault("name", f"{name}_{RoIs}")
261
262 acc.addEventAlgo(CompFactory.InDet.SCT_Clusterization(**kwargs))
263 return acc
264
265
266def ITkStripClusterizationCfg(flags, name="ITkStripClusterization", **kwargs):
267 acc = ComponentAccumulator()
268
269 prefix = clusterizationInputPrefix(flags)
270
271 kwargs.setdefault("conditionsTool",None) # SCTDetElStatus is used instead
272 if "SCTDetElStatus" not in kwargs :
273 if not flags.Trigger.doHLT :
274 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig import (
275 ITkStripDetectorElementStatusAlgCfg)
276 acc.merge(ITkStripDetectorElementStatusAlgCfg(flags))
277 kwargs.setdefault("SCTDetElStatus", "ITkStripDetectorElementStatus")
278
279 if "clusteringTool" not in kwargs:
280 from InDetConfig.SiClusterizationToolConfig import ITKStrip_SCT_ClusteringToolCfg
281 kwargs.setdefault("clusteringTool", acc.popToolsAndMerge(
282 ITKStrip_SCT_ClusteringToolCfg(flags)))
283 kwargs.setdefault("DataObjectName", prefix + 'ITkStripRDOs')
284 kwargs.setdefault("ClustersName", 'ITkStripClusters')
285 kwargs.setdefault("SCT_FlaggedCondData", "ITkStripFlaggedCondData")
286 # Disable noisy modules suppression
287 kwargs.setdefault("maxFiredStrips", 0)
288
289 acc.addEventAlgo( CompFactory.InDet.SCT_Clusterization(prefix+name, **kwargs))
290 return acc
291
292
293def ITkTrigStripClusterizationCfg(flags, name="ITkTrigStripClusterization", roisKey="", signature="", **kwargs):
294 acc = ComponentAccumulator()
295 from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
296 acc.merge(ITkStripClusterizationCfg(flags,
297 name="ITkStripClusterization_"+signature,
298 isRoI_Seeded=True,
299 RoIs=roisKey,
300 ClustersName = "ITkTrigStripClusters",
301 ClusterContainerCacheKey=flags.Trigger.ITkTracking.SCTClusterCacheKey,
302 RegSelTool= acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags))))
303 return acc
304
305
306def InDetTRT_RIO_MakerCfg(flags, name = "InDetTRT_RIO_Maker", **kwargs):
307 acc = ComponentAccumulator()
308
309 # track overlay always uses full input container here
310 if flags.Common.ProductionStep in [ProductionStep.PileUpPretracking, ProductionStep.MinbiasPreprocessing]:
311 prefix = flags.Overlay.BkgPrefix
312 else:
313 prefix = ''
314
315 if "TRT_DriftCircleTool" not in kwargs:
316 from InDetConfig.TRT_DriftCircleToolConfig import TRT_DriftCircleToolCfg
317 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
318 TRT_DriftCircleToolCfg(flags)))
319 kwargs.setdefault("TRTRIOLocation", 'TRT_DriftCircles')
320 #Backtracking is disable during the processing of pileup tracks,
321 #the standard TRT_RDOs are used for track overlay when overlaying with HS RDOs.
322 kwargs.setdefault("TRTRDOLocation", prefix + 'TRT_RDOs')
323
324 acc.addEventAlgo(CompFactory.InDet.TRT_RIO_Maker(prefix+name, **kwargs))
325 return acc
326
327
328def InDetTRT_NoTime_RIO_MakerCfg(flags, name = "InDetTRT_NoTime_RIO_Maker", **kwargs):
329 acc = ComponentAccumulator()
330
331 if "TRT_DriftCircleTool" not in kwargs:
332 from InDetConfig.TRT_DriftCircleToolConfig import TRT_NoTime_DriftCircleToolCfg
333 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
334 TRT_NoTime_DriftCircleToolCfg(flags)))
335
336 kwargs.setdefault("TRTRIOLocation", 'TRT_DriftCirclesUncalibrated')
337
338 acc.merge(InDetTRT_RIO_MakerCfg(flags, name, **kwargs))
339 return acc
340
341
342def InDetTRT_Phase_RIO_MakerCfg(flags, name = "InDetTRT_Phase_RIO_Maker", **kwargs):
343 acc = ComponentAccumulator()
344
345 if "TRT_DriftCircleTool" not in kwargs:
346 from InDetConfig.TRT_DriftCircleToolConfig import TRT_Phase_DriftCircleToolCfg
347 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
348 TRT_Phase_DriftCircleToolCfg(flags)))
349
350 acc.merge(InDetTRT_RIO_MakerCfg(flags, name, **kwargs))
351 return acc
352
353
354def InDetTRT_RIO_MakerPUCfg(flags, name = "InDetTRT_RIO_MakerPU", **kwargs):
355 kwargs.setdefault("TRTRDOLocation", 'TRT_PU_RDOs')
356 kwargs.setdefault("TRTRIOLocation", 'TRT_PU_DriftCircles')
357 return InDetTRT_RIO_MakerCfg(flags, name, **kwargs)
358
359
360def TrigTRTRIOMakerCfg(flags, RoIs, name="InDetTrigMTTRTDriftCircleMaker", **kwargs):
361 acc = ComponentAccumulator()
362
363 if "RegSelTool" not in kwargs:
364 from RegionSelector.RegSelToolConfig import regSelTool_TRT_Cfg
365 kwargs.setdefault("RegSelTool", acc.popToolsAndMerge(
366 regSelTool_TRT_Cfg(flags)))
367
368 if "TRT_DriftCircleTool" not in kwargs:
369 from InDetConfig.TRT_DriftCircleToolConfig import TRT_DriftCircleToolCfg
370 kwargs.setdefault("TRT_DriftCircleTool", acc.popToolsAndMerge(
371 TRT_DriftCircleToolCfg(flags)))
372
373 kwargs.setdefault("TRTRIOLocation", "TRT_TrigDriftCircles")
374 kwargs.setdefault("TRTRDOLocation", "TRT_RDOs_TRIG" if flags.Input.Format is Format.BS else "TRT_RDOs")
375 kwargs.setdefault("isRoI_Seeded", True)
376 kwargs.setdefault("RoIs", RoIs)
377
378 kwargs.setdefault("TRT_DriftCircleCache", flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey)
379 kwargs.setdefault("useDataPoolWithCache", True)
380
381 kwargs.setdefault("name", f"{name}_{RoIs}")
382 acc.addEventAlgo(CompFactory.InDet.TRT_RIO_Maker(**kwargs))
383 return acc
384
385
387 acc = ComponentAccumulator()
388 #
389 # -- Pixel Clusterization
390 #
391 if flags.Detector.EnableITkPixel:
392 acc.merge(ITkPixelClusterizationCfg(flags))
393 #
394 # --- Strip Clusterization
395 #
396 if flags.Detector.EnableITkStrip:
397 acc.merge(ITkStripClusterizationCfg(flags))
398
399 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)