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 if flags.Acts.Clusters.RetrieveChargeInformation:
58 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelChargeCalibCondAlgCfg, ITkPixelOfflineCalibCondAlgCfg
61 kwargs.setdefault(
'PixelChargeCalibCondData',
'ITkPixelChargeCalibCondData')
63 from PixelReadoutGeometry.PixelReadoutGeometryConfig
import ITkPixelReadoutManagerCfg
66 if "PixelLorentzAngleTool" not in kwargs:
67 from SiLorentzAngleTool.ITkPixelLorentzAngleConfig
import ITkPixelLorentzAngleToolCfg
70 kwargs.setdefault(
'UseWeightedPosition', flags.Acts.Clusters.UseWeightedPosition)
71 kwargs.setdefault(
'UseBroadErrors', flags.Beam.Type
is BeamType.Cosmics)
73 acc.setPrivateTools(CompFactory.ActsTrk.PixelClusteringTool(name, **kwargs))
78 name: str =
"ActsStripClusteringTool",
79 **kwargs) -> ComponentAccumulator:
82 if 'LorentzAngleTool' not in kwargs:
83 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
86 kwargs.setdefault(
"conditionsTool",
None)
87 if "StripDetElStatus" not in kwargs :
88 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import (
89 ITkStripDetectorElementStatusAlgCfg)
91 kwargs.setdefault(
"StripDetElStatus",
"ITkStripDetectorElementStatus")
94 kwargs.setdefault(
"maxFiredStrips", 0)
96 if flags.ITk.selectStripIntimeHits
and 'timeBins' not in kwargs:
97 coll_25ns = flags.Beam.BunchSpacing<=25
and flags.Beam.Type
is BeamType.Collisions
98 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
100 acc.setPrivateTools(CompFactory.ActsTrk.StripClusteringTool(name, **kwargs))
104 name: str =
'ActsPixelClusterizationAlg',
106 useCache: bool =
False,
107 **kwargs) -> ComponentAccumulator:
110 kwargs.setdefault(
"IDHelper",
"PixelID")
111 kwargs.setdefault(
"RDOContainerKey",
"ITkPixelRDOs")
112 kwargs.setdefault(
"ClustersKey",
"ITkPixelClusters")
113 kwargs.setdefault(
"DetEleCollKey",
"ITkPixelDetectorElementCollection")
115 kwargs.setdefault(
'RoIs',
'ActsRegionOfInterest')
117 kwargs.setdefault(
'ClusterCacheBackend',
'ActsPixelClusterCache_Back')
118 kwargs.setdefault(
'ClusterCache',
'ActsPixelClustersCache')
120 if 'RegSelTool' not in kwargs:
121 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
124 if 'ClusteringTool' not in kwargs:
127 if 'DetElStatus' not in kwargs:
128 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
130 kwargs.setdefault(
'DetElStatus',
'ITkPixelDetectorElementStatus')
132 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
133 from ActsConfig.ActsMonitoringConfig
import ActsITkPixelClusterizationMonitoringToolCfg
137 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterizationAlg(name, **kwargs))
139 acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheClusterizationAlg(name, **kwargs))
143 name: str =
'ActsStripClusterizationAlg',
144 useCache: bool =
False,
145 **kwargs) -> ComponentAccumulator:
148 kwargs.setdefault(
"RDOContainerKey",
"ITkStripRDOs")
149 kwargs.setdefault(
"ClustersKey",
"ITkStripClusters")
150 kwargs.setdefault(
"IDHelper",
"SCT_ID")
151 kwargs.setdefault(
"DetEleCollKey",
"ITkStripDetectorElementCollection")
153 kwargs.setdefault(
'RoIs',
'ActsRegionOfInterest')
155 kwargs.setdefault(
'ClusterCacheBackend',
'ActsStripClusterCache_Back')
156 kwargs.setdefault(
'ClusterCache',
'ActsStripClustersCache')
158 if 'RegSelTool' not in kwargs:
159 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
162 if 'DetElStatus' not in kwargs :
163 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
165 kwargs.setdefault(
"DetElStatus",
"ITkStripDetectorElementStatus")
167 if 'ClusteringTool' not in kwargs:
170 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
171 from ActsConfig.ActsMonitoringConfig
import ActsITkStripClusterizationMonitoringToolCfg
175 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterizationAlg(name, **kwargs))
177 acc.addEventAlgo(CompFactory.ActsTrk.StripCacheClusterizationAlg(name, **kwargs))
181 name: str =
"ActsClusterCacheCreatorAlg",
182 **kwargs) -> ComponentAccumulator:
184 kwargs.setdefault(
"PixelClustersCacheKey",
"ActsPixelClusterCache_Back")
185 kwargs.setdefault(
"StripClustersCacheKey",
"ActsStripClusterCache_Back")
186 acc.addEventAlgo(CompFactory.ActsTrk.Cache.CreatorAlg(name, **kwargs))
190 name: str =
"ActsPixelClusterPreparationAlg",
191 useCache: bool =
False,
192 **kwargs) -> ComponentAccumulator:
195 kwargs.setdefault(
'InputCollection',
'ITkPixelClusters')
196 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
198 if 'RegSelTool' not in kwargs:
199 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
202 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
203 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
205 name =
"ActsPixelClusterPreparationMonitoringTool")))
208 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterDataPreparationAlg(name, **kwargs))
210 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterCacheDataPreparationAlg(name, **kwargs))
214 name: str =
"ActsStripClusterPreparationAlg",
215 useCache: bool =
False,
216 **kwargs) -> ComponentAccumulator:
219 kwargs.setdefault(
'InputCollection',
'ITkStripClusters')
220 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
222 if 'RegSelTool' not in kwargs:
223 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
226 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
227 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
229 name =
"ActsStripClusterPreparationMonitoringTool")))
232 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterDataPreparationAlg(name, **kwargs))
234 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterCacheDataPreparationAlg(name, **kwargs))
239 name: str =
'ActsHgtdClusterPreparationAlg',
241 useCache: bool =
False,
242 **kwargs) -> ComponentAccumulator:
244 kwargs.setdefault(
'InputCollection',
'HGTDClusters')
245 kwargs.setdefault(
'DetectorElements',
'HGTD_DetectorElementCollection')
249 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
250 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
252 name =
"ActsHgtdClusterPreparationMonitoringTool")))
254 acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterDataPreparationAlg(name, **kwargs))
260 RoIs: str =
"ActsRegionOfInterest",
261 **kwargs: dict) -> ComponentAccumulator:
262 assert isinstance(RoIs, str)
263 assert isinstance(kwargs, dict)
274 kwargs.setdefault(
'processPixels', flags.Detector.EnableITkPixel)
275 kwargs.setdefault(
'processStrips', flags.Detector.EnableITkStrip)
276 kwargs.setdefault(
'processHGTD', flags.Acts.useHGTDClusterInTrackFinding
and flags.Detector.EnableHGTD)
277 kwargs.setdefault(
'runCacheCreation', flags.Acts.useCache)
278 kwargs.setdefault(
'runReconstruction',
True)
279 kwargs.setdefault(
'runPreparation', flags.Acts.useCache)
282 if kwargs[
'runCacheCreation']:
287 if kwargs[
'runReconstruction']:
288 if kwargs[
'processPixels']:
292 if kwargs[
'processStrips']:
296 if kwargs[
'processHGTD']:
300 if kwargs[
'runPreparation']:
301 if kwargs[
'processPixels']:
306 if kwargs[
'processStrips']:
311 if kwargs[
'processHGTD']:
317 if flags.Acts.Clusters.doAnalysis:
318 if kwargs[
'processPixels']:
319 from ActsConfig.ActsAnalysisConfig
import ActsPixelClusterAnalysisAlgCfg
322 if kwargs[
'processStrips']:
323 from ActsConfig.ActsAnalysisConfig
import ActsStripClusterAnalysisAlgCfg
330 previousActsExtension: str =
None) -> ComponentAccumulator:
331 assert previousActsExtension
is None or isinstance(previousActsExtension, str)
335 processPixels = flags.Detector.EnableITkPixel
336 processStrips = flags.Detector.EnableITkStrip
337 processHGTD = flags.Acts.useHGTDClusterInTrackFinding
and flags.Detector.EnableHGTD
340 kwargs.setdefault(
'processPixels', processPixels)
341 kwargs.setdefault(
'processStrips', processStrips)
342 kwargs.setdefault(
'processHGTD', processHGTD)
360 from InDetConfig.ITkActsHelpers
import isPrimaryPass, isValidationPass
364 kwargs.setdefault(
'runCacheCreation', flags.Acts.useCache)
365 kwargs.setdefault(
'runReconstruction',
True)
366 kwargs.setdefault(
'runPreparation', flags.Acts.useCache)
369 kwargs.setdefault(
'runCacheCreation',
False)
370 kwargs.setdefault(
'runReconstruction', flags.Acts.useCache)
371 kwargs.setdefault(
'runPreparation',
True)
374 roisName = f
'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
376 if flags.Tracking.ActiveConfig.extension ==
'ActsLargeRadius':
377 from InDetConfig.ITkActsHelpers
import primaryPassExtension
378 roisName = f
'{primaryPassExtension(flags)}RegionOfInterest'
382 primaryPixelClustersName =
'ITkPixelClusters'
383 primaryStripClustersName =
'ITkStripClusters'
384 primaryHgtdClustersName =
'HGTD_Clusters'
385 pixelClustersName = primaryPixelClustersName
386 stripClustersName = primaryStripClustersName
387 hgtdClustersName = primaryHgtdClustersName
390 if flags.Tracking.ActiveConfig.isSecondaryPass:
391 keyPrefix = flags.Tracking.ActiveConfig.extension.replace(
"Acts",
"")
392 pixelClustersName = f
'ITk{keyPrefix}PixelClusters'
393 stripClustersName = f
'ITk{keyPrefix}StripClusters'
394 hgtdClustersName = f
'{keyPrefix}HGTD_Clusters'
397 if kwargs[
'runCacheCreation']:
398 kwargs.setdefault(
'ClusterCacheCreatorAlg.name', f
'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
401 if kwargs[
'runReconstruction']:
402 if kwargs[
'processPixels']:
403 kwargs.setdefault(
'PixelClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterizationAlg')
404 kwargs.setdefault(
'PixelClusterizationAlg.useCache', flags.Acts.useCache)
405 kwargs.setdefault(
'PixelClusterizationAlg.ClustersKey', pixelClustersName)
406 kwargs.setdefault(
'PixelClusterizationAlg.ClusterCache', f
'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
407 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
408 kwargs.setdefault(
'PixelClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
410 if kwargs[
'processStrips']:
411 kwargs.setdefault(
'StripClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterizationAlg')
412 kwargs.setdefault(
'StripClusterizationAlg.useCache', flags.Acts.useCache)
413 kwargs.setdefault(
'StripClusterizationAlg.ClustersKey', stripClustersName)
414 kwargs.setdefault(
'StripClusterizationAlg.ClusterCache', f
'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
415 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
416 kwargs.setdefault(
'StripClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
418 if kwargs[
'processHGTD']:
419 kwargs.setdefault(
'HgtdClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterizationAlg')
421 kwargs.setdefault(
'HgtdClusterizationAlg.ClusterContainerName', hgtdClustersName)
422 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
423 kwargs.setdefault(
'HgtdClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
427 if kwargs[
'runPreparation']:
428 if kwargs[
'processPixels']:
429 kwargs.setdefault(
'PixelClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterPreparationAlg')
430 kwargs.setdefault(
'PixelClusterPreparationAlg.useCache', flags.Acts.useCache)
431 kwargs.setdefault(
'PixelClusterPreparationAlg.OutputCollection', f
'{pixelClustersName}_Cached' if kwargs[
'runReconstruction']
else pixelClustersName)
433 if not flags.Acts.useCache:
435 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection', pixelClustersName
if kwargs[
'runReconstruction']
else primaryPixelClustersName)
436 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC',
'')
438 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection',
'')
439 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
441 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
442 kwargs.setdefault(
'PixelClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
444 if kwargs[
'processStrips']:
445 kwargs.setdefault(
'StripClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterPreparationAlg')
446 kwargs.setdefault(
'StripClusterPreparationAlg.useCache', flags.Acts.useCache)
447 kwargs.setdefault(
'StripClusterPreparationAlg.OutputCollection', f
'{stripClustersName}_Cached' if kwargs[
'runReconstruction']
else stripClustersName)
448 if not flags.Acts.useCache:
449 kwargs.setdefault(
'StripClusterPreparationAlg.InputCollection', stripClustersName
if kwargs[
'runReconstruction']
else primaryStripClustersName)
450 kwargs.setdefault(
'StripClusterPreparationAlg.InputIDC',
'')
452 kwargs.setdefault(
'StripClusterPreparationAlg.InputCollection',
'')
453 kwargs.setdefault(
'StripClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
455 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
456 kwargs.setdefault(
'StripClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
458 if kwargs[
'processHGTD']:
459 kwargs.setdefault(
'HgtdClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterPreparationAlg')
460 kwargs.setdefault(
'HgtdClusterPreparationAlg.OutputCollection', f
'{hgtdClustersName}_Cached' if kwargs[
'runReconstruction']
else hgtdClustersName)
461 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputCollection', hgtdClustersName
if kwargs[
'runReconstruction']
else primaryHgtdClustersName)
462 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputIDC',
'')
463 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
464 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
467 if flags.Acts.Clusters.doAnalysis:
470 if kwargs[
'processPixels']:
471 kwargs.setdefault(
'PixelClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterAnalysisAlg')
472 kwargs.setdefault(
'PixelClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
473 kwargs.setdefault(
'PixelClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
474 kwargs.setdefault(
'PixelClusterAnalysisAlg.ClusterContainerKey', kwargs[
'PixelClusterPreparationAlg.OutputCollection']
if kwargs[
'runPreparation']
else kwargs[
'PixelClusterizationAlg.ClustersKey'])
476 if kwargs[
'processStrips']:
477 kwargs.setdefault(
'StripClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterAnalysisAlg')
478 kwargs.setdefault(
'StripClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
479 kwargs.setdefault(
'StripClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
480 kwargs.setdefault(
'StripClusterAnalysisAlg.ClusterContainerKey', kwargs[
'StripClusterPreparationAlg.OutputCollection']
if kwargs[
'runPreparation']
else kwargs[
'StripClusterizationAlg.ClustersKey'])
482 if kwargs[
'processHGTD']:
483 kwargs.setdefault(
'HgtdClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterAnalysisAlg')
484 kwargs.setdefault(
'HgtdClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
485 kwargs.setdefault(
'HgtdClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
490 if flags.Acts.EDM.PersistifyClusters
and kwargs[
'runReconstruction']:
492 if kwargs[
'processPixels']:
493 pixel_cluster_shortlist = [
'-validationMeasurementLink']
494 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
496 pixelClusterCollection = kwargs[
'PixelClusterizationAlg.ClustersKey']
497 toAOD += [f
'xAOD::PixelClusterContainer#{pixelClusterCollection}',
498 f
'xAOD::PixelClusterAuxContainer#{pixelClusterCollection}Aux.{pixel_cluster_variables}']
500 if kwargs[
'processStrips']:
501 strip_cluster_shortlist = [
'-validationMeasurementLink']
502 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
504 stripClusterCollection = kwargs[
'StripClusterizationAlg.ClustersKey']
505 toAOD += [f
"xAOD::StripClusterContainer#{stripClusterCollection}",
506 f
"xAOD::StripClusterAuxContainer#{stripClusterCollection}Aux.{strip_cluster_variables}"]
508 if kwargs[
'processHGTD']:
509 hgtdClusterCollection = kwargs[
'HgtdClusterizationAlg.ClusterContainerName']
510 toAOD += [f
"xAOD::HGTDClusterContainer#{hgtdClusterCollection}",
511 f
"xAOD::HGTDClusterAuxContainer#{hgtdClusterCollection}Aux."]
513 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD