3 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4 from AthenaConfiguration.ComponentFactory
import CompFactory
5 from AthenaConfiguration.Enums
import BeamType
6 from ActsConfig.ActsUtilities
import extractChildKwargs
9 name: str =
"ActsHgtdClusteringTool",
10 **kwargs) -> ComponentAccumulator:
12 acc.setPrivateTools(CompFactory.ActsTrk.HgtdClusteringTool(name, **kwargs))
16 name: str =
"ActsHgtdTimedClusteringTool",
17 **kwargs) -> ComponentAccumulator:
19 acc.setPrivateTools(CompFactory.ActsTrk.HgtdTimedClusteringTool(name, **kwargs))
23 name: str =
"ActsHgtdClusterizationAlg",
24 **kwargs) -> ComponentAccumulator:
27 if flags.HGTD.Geometry.useGeoModelXml:
28 from HGTD_GeoModelXml.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
30 from HGTD_GeoModel.HGTD_GeoModelConfig
import HGTD_ReadoutGeometryCfg
33 kwargs.setdefault(
'RDOContainerName',
'HGTD_RDOs')
34 kwargs.setdefault(
'ClusterContainerName',
'HGTD_Clusters')
36 if 'ClusteringTool' not in kwargs:
37 from HGTD_Config.HGTD_ConfigFlags
import ClusteringStrategy
38 if flags.HGTD.Acts.ClusteringStrategy
is ClusteringStrategy.SinglePad:
43 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
44 from ActsConfig.ActsMonitoringConfig
import ActsHgtdClusterizationMonitoringToolCfg
47 acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterizationAlg(name, **kwargs))
53 name: str =
"ActsPixelClusteringTool",
54 **kwargs) -> ComponentAccumulator:
57 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelChargeCalibCondAlgCfg, ITkPixelOfflineCalibCondAlgCfg
61 from PixelReadoutGeometry.PixelReadoutGeometryConfig
import ITkPixelReadoutManagerCfg
64 if 'PixelRDOTool' not in kwargs:
65 from InDetConfig.SiClusterizationToolConfig
import ITkPixelRDOToolCfg
68 if "PixelLorentzAngleTool" not in kwargs:
69 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
73 'UseWeightedPosition',
74 not (flags.Tracking.doPixelDigitalClustering
or flags.Beam.Type
is BeamType.Cosmics)
77 kwargs.setdefault(
'UseBroadErrors', flags.Beam.Type
is BeamType.Cosmics)
79 acc.setPrivateTools(CompFactory.ActsTrk.PixelClusteringTool(name, **kwargs))
84 name: str =
"ActsStripClusteringTool",
85 **kwargs) -> ComponentAccumulator:
88 if 'LorentzAngleTool' not in kwargs:
89 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
92 kwargs.setdefault(
"conditionsTool",
None)
93 if "StripDetElStatus" not in kwargs :
94 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import (
95 ITkStripDetectorElementStatusAlgCfg)
97 kwargs.setdefault(
"StripDetElStatus",
"ITkStripDetectorElementStatus")
100 kwargs.setdefault(
"maxFiredStrips", 0)
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")
106 acc.setPrivateTools(CompFactory.ActsTrk.StripClusteringTool(name, **kwargs))
110 name: str =
'ActsPixelClusterizationAlg',
112 useCache: bool =
False,
113 **kwargs) -> ComponentAccumulator:
116 kwargs.setdefault(
"expectedClustersPerRDO", 32)
117 kwargs.setdefault(
"IDHelper",
"PixelID")
118 kwargs.setdefault(
"RDOContainerKey",
"ITkPixelRDOs")
119 kwargs.setdefault(
"ClustersKey",
"ITkPixelClusters")
121 kwargs.setdefault(
'RoIs',
'ActsRegionOfInterest')
123 kwargs.setdefault(
'ClusterCacheBackend',
'ActsPixelClusterCache_Back')
124 kwargs.setdefault(
'ClusterCache',
'ActsPixelClustersCache')
126 if 'RegSelTool' not in kwargs:
127 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
130 if 'ClusteringTool' not in kwargs:
133 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
134 from ActsConfig.ActsMonitoringConfig
import ActsITkPixelClusterizationMonitoringToolCfg
138 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterizationAlg(name, **kwargs))
140 acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheClusterizationAlg(name, **kwargs))
144 name: str =
'ActsStripClusterizationAlg',
145 useCache: bool =
False,
146 **kwargs) -> ComponentAccumulator:
149 kwargs.setdefault(
"RDOContainerKey",
"ITkStripRDOs")
150 kwargs.setdefault(
"ClustersKey",
"ITkStripClusters")
151 kwargs.setdefault(
"expectedClustersPerRDO", 6)
152 kwargs.setdefault(
"IDHelper",
"SCT_ID")
154 kwargs.setdefault(
'RoIs',
'ActsRegionOfInterest')
156 kwargs.setdefault(
'ClusterCacheBackend',
'ActsStripClusterCache_Back')
157 kwargs.setdefault(
'ClusterCache',
'ActsStripClustersCache')
159 if 'RegSelTool' not in kwargs:
160 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
163 if 'ClusteringTool' not in kwargs:
166 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
167 from ActsConfig.ActsMonitoringConfig
import ActsITkStripClusterizationMonitoringToolCfg
171 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterizationAlg(name, **kwargs))
173 acc.addEventAlgo(CompFactory.ActsTrk.StripCacheClusterizationAlg(name, **kwargs))
177 name: str =
"ActsClusterCacheCreatorAlg",
178 **kwargs) -> ComponentAccumulator:
180 kwargs.setdefault(
"PixelClustersCacheKey",
"ActsPixelClusterCache_Back")
181 kwargs.setdefault(
"StripClustersCacheKey",
"ActsStripClusterCache_Back")
182 acc.addEventAlgo(CompFactory.ActsTrk.Cache.CreatorAlg(name, **kwargs))
186 name: str =
"ActsPixelClusterPreparationAlg",
187 useCache: bool =
False,
188 **kwargs) -> ComponentAccumulator:
191 kwargs.setdefault(
'InputCollection',
'ITkPixelClusters')
192 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
194 if 'RegSelTool' not in kwargs:
195 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
198 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
199 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
201 name =
"ActsPixelClusterPreparationMonitoringTool")))
204 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterDataPreparationAlg(name, **kwargs))
206 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterCacheDataPreparationAlg(name, **kwargs))
210 name: str =
"ActsStripClusterPreparationAlg",
211 useCache: bool =
False,
212 **kwargs) -> ComponentAccumulator:
215 kwargs.setdefault(
'InputCollection',
'ITkStripClusters')
216 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
218 if 'RegSelTool' not in kwargs:
219 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
222 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
223 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
225 name =
"ActsStripClusterPreparationMonitoringTool")))
228 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterDataPreparationAlg(name, **kwargs))
230 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterCacheDataPreparationAlg(name, **kwargs))
235 name: str =
'ActsHgtdClusterPreparationAlg',
237 useCache: bool =
False,
238 **kwargs) -> ComponentAccumulator:
240 kwargs.setdefault(
'InputCollection',
'HGTDClusters')
241 kwargs.setdefault(
'DetectorElements',
'HGTD_DetectorElementCollection')
245 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
246 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
248 name =
"ActsHgtdClusterPreparationMonitoringTool")))
250 acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterDataPreparationAlg(name, **kwargs))
256 RoIs: str =
"ActsRegionOfInterest",
257 **kwargs: dict) -> ComponentAccumulator:
258 assert isinstance(RoIs, str)
259 assert isinstance(kwargs, dict)
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)
278 if kwargs[
'runCacheCreation']:
283 if kwargs[
'runReconstruction']:
284 if kwargs[
'processPixels']:
288 if kwargs[
'processStrips']:
292 if kwargs[
'processHGTD']:
296 if kwargs[
'runPreparation']:
297 if kwargs[
'processPixels']:
302 if kwargs[
'processStrips']:
307 if kwargs[
'processHGTD']:
313 if flags.Acts.Clusters.doAnalysis:
314 if kwargs[
'processPixels']:
315 from ActsConfig.ActsAnalysisConfig
import ActsPixelClusterAnalysisAlgCfg
318 if kwargs[
'processStrips']:
319 from ActsConfig.ActsAnalysisConfig
import ActsStripClusterAnalysisAlgCfg
326 previousActsExtension: str =
None) -> ComponentAccumulator:
327 assert previousActsExtension
is None or isinstance(previousActsExtension, str)
331 processPixels = flags.Detector.EnableITkPixel
332 processStrips = flags.Detector.EnableITkStrip
333 processHGTD = flags.Acts.useHGTDClusterInTrackFinding
and flags.Detector.EnableHGTD
336 kwargs.setdefault(
'processPixels', processPixels)
337 kwargs.setdefault(
'processStrips', processStrips)
338 kwargs.setdefault(
'processHGTD', processHGTD)
356 if flags.Tracking.ActiveConfig.isSecondaryPass:
358 kwargs.setdefault(
'runCacheCreation',
False)
359 kwargs.setdefault(
'runReconstruction', flags.Acts.useCache)
360 kwargs.setdefault(
'runPreparation',
True)
363 kwargs.setdefault(
'runCacheCreation', flags.Acts.useCache)
364 kwargs.setdefault(
'runReconstruction',
True)
365 kwargs.setdefault(
'runPreparation', flags.Acts.useCache)
368 roisName = f
'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
370 if flags.Tracking.ActiveConfig.extension ==
'ActsLargeRadius':
371 roisName =
'ActsRegionOfInterest'
375 primaryPixelClustersName =
'ITkPixelClusters'
376 primaryStripClustersName =
'ITkStripClusters'
377 primaryHgtdClustersName =
'HGTD_Clusters'
378 pixelClustersName = primaryPixelClustersName
379 stripClustersName = primaryStripClustersName
380 hgtdClustersName = primaryHgtdClustersName
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'
390 if kwargs[
'runCacheCreation']:
391 kwargs.setdefault(
'ClusterCacheCreatorAlg.name', f
'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
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')})
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')})
411 if kwargs[
'processHGTD']:
412 kwargs.setdefault(
'HgtdClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterizationAlg')
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')})
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)
426 if not flags.Acts.useCache:
428 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection', pixelClustersName
if kwargs[
'runReconstruction']
else primaryPixelClustersName)
429 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC',
'')
431 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection',
'')
432 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
434 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
435 kwargs.setdefault(
'PixelClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
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',
'')
445 kwargs.setdefault(
'StripClusterPreparationAlg.InputCollection',
'')
446 kwargs.setdefault(
'StripClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
448 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
449 kwargs.setdefault(
'StripClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
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')
460 if flags.Acts.Clusters.doAnalysis:
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'])
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'])
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')
483 if flags.Acts.EDM.PersistifyClusters
and kwargs[
'runReconstruction']:
485 if kwargs[
'processPixels']:
486 pixelClusterCollection = kwargs[
'PixelClusterizationAlg.ClustersKey']
487 toAOD += [f
'xAOD::PixelClusterContainer#{pixelClusterCollection}',
488 f
'xAOD::PixelClusterAuxContainer#{pixelClusterCollection}Aux.']
490 if kwargs[
'processStrips']:
491 stripClusterCollection = kwargs[
'StripClusterizationAlg.ClustersKey']
492 toAOD += [f
"xAOD::StripClusterContainer#{stripClusterCollection}",
493 f
"xAOD::StripClusterAuxContainer#{stripClusterCollection}Aux."]
495 if kwargs[
'processHGTD']:
496 hgtdClusterCollection = kwargs[
'HgtdClusterizationAlg.ClusterContainerName']
497 toAOD += [f
"xAOD::HGTDClusterContainer#{hgtdClusterCollection}",
498 f
"xAOD::HGTDClusterAuxContainer#{hgtdClusterCollection}Aux."]
500 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD