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)
73 kwargs.setdefault(
'UseBroadErrors', flags.Acts.Clusters.UsePixelBroadErrors
or flags.Beam.Type
is BeamType.Cosmics)
75 acc.setPrivateTools(CompFactory.ActsTrk.PixelClusteringTool(name, **kwargs))
80 name: str =
"ActsStripClusteringTool",
81 **kwargs) -> ComponentAccumulator:
84 if 'LorentzAngleTool' not in kwargs:
85 from SiLorentzAngleTool.ITkStripLorentzAngleConfig
import ITkStripLorentzAngleToolCfg
88 kwargs.setdefault(
"conditionsTool",
None)
89 if "StripDetElStatus" not in kwargs :
90 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import (
91 ITkStripDetectorElementStatusAlgCfg)
93 kwargs.setdefault(
"StripDetElStatus",
"ITkStripDetectorElementStatus")
96 kwargs.setdefault(
"maxFiredStrips", 0)
98 if flags.ITk.selectStripIntimeHits
and 'timeBins' not in kwargs:
99 coll_25ns = flags.Beam.BunchSpacing<=25
and flags.Beam.Type
is BeamType.Collisions
100 kwargs.setdefault(
"timeBins",
"01X" if coll_25ns
else "X1X")
104 kwargs.setdefault(
"errorStrategy",flags.Acts.Clusters.StripClusteringErrorMode.value)
106 acc.setPrivateTools(CompFactory.ActsTrk.StripClusteringTool(name, **kwargs))
110 name: str =
'ActsPixelClusterizationAlg',
112 useCache: bool =
False,
113 **kwargs) -> ComponentAccumulator:
116 kwargs.setdefault(
"IDHelper",
"PixelID")
117 kwargs.setdefault(
"RDOContainerKey",
"ITkPixelRDOs")
118 kwargs.setdefault(
"ClustersKey",
"ITkPixelClusters")
119 kwargs.setdefault(
"DetEleCollKey",
"ITkPixelDetectorElementCollection")
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 'DetElStatus' not in kwargs:
134 from PixelConditionsAlgorithms.ITkPixelConditionsConfig
import ITkPixelDetectorElementStatusAlgCfg
136 kwargs.setdefault(
'DetElStatus',
'ITkPixelDetectorElementStatus')
138 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
139 from ActsConfig.ActsMonitoringConfig
import ActsITkPixelClusterizationMonitoringToolCfg
143 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterizationAlg(name, **kwargs))
145 acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheClusterizationAlg(name, **kwargs))
149 name: str =
'ActsStripClusterizationAlg',
150 useCache: bool =
False,
151 **kwargs) -> ComponentAccumulator:
154 kwargs.setdefault(
"RDOContainerKey",
"ITkStripRDOs")
155 kwargs.setdefault(
"ClustersKey",
"ITkStripClusters")
156 kwargs.setdefault(
"IDHelper",
"SCT_ID")
157 kwargs.setdefault(
"DetEleCollKey",
"ITkStripDetectorElementCollection")
159 kwargs.setdefault(
'RoIs',
'ActsRegionOfInterest')
161 kwargs.setdefault(
'ClusterCacheBackend',
'ActsStripClusterCache_Back')
162 kwargs.setdefault(
'ClusterCache',
'ActsStripClustersCache')
164 if 'RegSelTool' not in kwargs:
165 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
168 if 'DetElStatus' not in kwargs :
169 from SCT_ConditionsAlgorithms.ITkStripConditionsAlgorithmsConfig
import ITkStripDetectorElementStatusAlgCfg
171 kwargs.setdefault(
"DetElStatus",
"ITkStripDetectorElementStatus")
173 if 'ClusteringTool' not in kwargs:
176 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
177 from ActsConfig.ActsMonitoringConfig
import ActsITkStripClusterizationMonitoringToolCfg
181 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterizationAlg(name, **kwargs))
183 acc.addEventAlgo(CompFactory.ActsTrk.StripCacheClusterizationAlg(name, **kwargs))
187 name: str =
"ActsClusterCacheCreatorAlg",
188 **kwargs) -> ComponentAccumulator:
190 kwargs.setdefault(
"PixelClustersCacheKey",
"ActsPixelClusterCache_Back")
191 kwargs.setdefault(
"StripClustersCacheKey",
"ActsStripClusterCache_Back")
192 acc.addEventAlgo(CompFactory.ActsTrk.Cache.CreatorAlg(name, **kwargs))
196 name: str =
"ActsPixelClusterPreparationAlg",
197 useCache: bool =
False,
198 **kwargs) -> ComponentAccumulator:
201 kwargs.setdefault(
'InputCollection',
'ITkPixelClusters')
202 kwargs.setdefault(
'DetectorElements',
'ITkPixelDetectorElementCollection')
204 if 'RegSelTool' not in kwargs:
205 from RegionSelector.RegSelToolConfig
import regSelTool_ITkPixel_Cfg
208 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
209 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
211 name =
"ActsPixelClusterPreparationMonitoringTool")))
214 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterDataPreparationAlg(name, **kwargs))
216 acc.addEventAlgo(CompFactory.ActsTrk.PixelClusterCacheDataPreparationAlg(name, **kwargs))
220 name: str =
"ActsStripClusterPreparationAlg",
221 useCache: bool =
False,
222 **kwargs) -> ComponentAccumulator:
225 kwargs.setdefault(
'InputCollection',
'ITkStripClusters')
226 kwargs.setdefault(
'DetectorElements',
'ITkStripDetectorElementCollection')
228 if 'RegSelTool' not in kwargs:
229 from RegionSelector.RegSelToolConfig
import regSelTool_ITkStrip_Cfg
232 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
233 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
235 name =
"ActsStripClusterPreparationMonitoringTool")))
238 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterDataPreparationAlg(name, **kwargs))
240 acc.addEventAlgo(CompFactory.ActsTrk.StripClusterCacheDataPreparationAlg(name, **kwargs))
244 name: str =
'ActsHgtdClusterPreparationAlg',
246 useCache: bool =
False,
247 **kwargs) -> ComponentAccumulator:
249 kwargs.setdefault(
'InputCollection',
'HGTDClusters')
250 kwargs.setdefault(
'DetectorElements',
'HGTD_DetectorElementCollection')
254 if flags.Acts.doMonitoring
and 'MonTool' not in kwargs:
255 from ActsConfig.ActsMonitoringConfig
import ActsDataPreparationMonitoringToolCfg
257 name =
"ActsHgtdClusterPreparationMonitoringTool")))
259 acc.addEventAlgo(CompFactory.ActsTrk.HgtdClusterDataPreparationAlg(name, **kwargs))
265 RoIs: str =
"ActsRegionOfInterest",
266 **kwargs: dict) -> ComponentAccumulator:
267 assert isinstance(RoIs, str)
268 assert isinstance(kwargs, dict)
279 kwargs.setdefault(
'processPixels', flags.Detector.EnableITkPixel)
280 kwargs.setdefault(
'processStrips', flags.Detector.EnableITkStrip)
281 kwargs.setdefault(
'processHGTD', flags.Acts.useHGTDClusterInTrackFinding
and flags.Detector.EnableHGTD)
282 kwargs.setdefault(
'runCacheCreation', flags.Acts.useCache)
283 kwargs.setdefault(
'runReconstruction',
True)
284 kwargs.setdefault(
'runPreparation', flags.Acts.useCache)
287 if kwargs[
'runCacheCreation']:
292 if kwargs[
'runReconstruction']:
293 if kwargs[
'processPixels']:
297 if kwargs[
'processStrips']:
301 if kwargs[
'processHGTD']:
305 if kwargs[
'runPreparation']:
306 if kwargs[
'processPixels']:
311 if kwargs[
'processStrips']:
316 if kwargs[
'processHGTD']:
322 if flags.Acts.Clusters.doAnalysis:
323 if kwargs[
'processPixels']:
324 from ActsConfig.ActsAnalysisConfig
import ActsPixelClusterAnalysisAlgCfg
327 if kwargs[
'processStrips']:
328 from ActsConfig.ActsAnalysisConfig
import ActsStripClusterAnalysisAlgCfg
335 previousActsExtension: str =
None) -> ComponentAccumulator:
336 assert previousActsExtension
is None or isinstance(previousActsExtension, str)
340 processPixels = flags.Detector.EnableITkPixel
341 processStrips = flags.Detector.EnableITkStrip
342 processHGTD = flags.Acts.useHGTDClusterInTrackFinding
and flags.Detector.EnableHGTD
345 kwargs.setdefault(
'processPixels', processPixels)
346 kwargs.setdefault(
'processStrips', processStrips)
347 kwargs.setdefault(
'processHGTD', processHGTD)
365 from InDetConfig.ITkActsHelpers
import isPrimaryPass, isValidationPass
369 kwargs.setdefault(
'runCacheCreation', flags.Acts.useCache)
370 kwargs.setdefault(
'runReconstruction',
True)
371 kwargs.setdefault(
'runPreparation', flags.Acts.useCache)
374 kwargs.setdefault(
'runCacheCreation',
False)
375 kwargs.setdefault(
'runReconstruction', flags.Acts.useCache)
376 kwargs.setdefault(
'runPreparation',
True)
379 roisName = f
'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
381 if flags.Tracking.ActiveConfig.extension ==
'ActsLargeRadius':
382 from InDetConfig.ITkActsHelpers
import primaryPassExtension
383 roisName = f
'{primaryPassExtension(flags)}RegionOfInterest'
387 primaryPixelClustersName =
'ITkPixelClusters'
388 primaryStripClustersName =
'ITkStripClusters'
389 primaryHgtdClustersName =
'HGTD_Clusters'
390 pixelClustersName = primaryPixelClustersName
391 stripClustersName = primaryStripClustersName
392 hgtdClustersName = primaryHgtdClustersName
395 if flags.Tracking.ActiveConfig.isSecondaryPass:
396 keyPrefix = flags.Tracking.ActiveConfig.extension.replace(
"Acts",
"")
397 pixelClustersName = f
'ITk{keyPrefix}PixelClusters'
398 stripClustersName = f
'ITk{keyPrefix}StripClusters'
399 hgtdClustersName = f
'{keyPrefix}HGTD_Clusters'
402 if kwargs[
'runCacheCreation']:
403 kwargs.setdefault(
'ClusterCacheCreatorAlg.name', f
'{flags.Tracking.ActiveConfig.extension}ClusterCacheCreatorAlg')
406 if kwargs[
'runReconstruction']:
407 if kwargs[
'processPixels']:
408 kwargs.setdefault(
'PixelClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterizationAlg')
409 kwargs.setdefault(
'PixelClusterizationAlg.useCache', flags.Acts.useCache)
410 kwargs.setdefault(
'PixelClusterizationAlg.ClustersKey', pixelClustersName)
411 kwargs.setdefault(
'PixelClusterizationAlg.ClusterCache', f
'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
412 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
413 kwargs.setdefault(
'PixelClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
415 if kwargs[
'processStrips']:
416 kwargs.setdefault(
'StripClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterizationAlg')
417 kwargs.setdefault(
'StripClusterizationAlg.useCache', flags.Acts.useCache)
418 kwargs.setdefault(
'StripClusterizationAlg.ClustersKey', stripClustersName)
419 kwargs.setdefault(
'StripClusterizationAlg.ClusterCache', f
'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
420 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
421 kwargs.setdefault(
'StripClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
423 if kwargs[
'processHGTD']:
424 kwargs.setdefault(
'HgtdClusterizationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterizationAlg')
426 kwargs.setdefault(
'HgtdClusterizationAlg.ClusterContainerName', hgtdClustersName)
427 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
428 kwargs.setdefault(
'HgtdClusterizationAlg.ExtraInputs', {(
'ActsTrk::PrepRawDataAssociation', f
'StoreGateSvc+{previousActsExtension}PrdMap')})
432 if kwargs[
'runPreparation']:
433 if kwargs[
'processPixels']:
434 kwargs.setdefault(
'PixelClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterPreparationAlg')
435 kwargs.setdefault(
'PixelClusterPreparationAlg.useCache', flags.Acts.useCache)
436 kwargs.setdefault(
'PixelClusterPreparationAlg.OutputCollection', f
'{pixelClustersName}_Cached' if kwargs[
'runReconstruction']
else pixelClustersName)
438 if not flags.Acts.useCache:
440 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection', pixelClustersName
if kwargs[
'runReconstruction']
else primaryPixelClustersName)
441 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC',
'')
443 kwargs.setdefault(
'PixelClusterPreparationAlg.InputCollection',
'')
444 kwargs.setdefault(
'PixelClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}PixelClustersCache')
446 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
447 kwargs.setdefault(
'PixelClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
449 if kwargs[
'processStrips']:
450 kwargs.setdefault(
'StripClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterPreparationAlg')
451 kwargs.setdefault(
'StripClusterPreparationAlg.useCache', flags.Acts.useCache)
452 kwargs.setdefault(
'StripClusterPreparationAlg.OutputCollection', f
'{stripClustersName}_Cached' if kwargs[
'runReconstruction']
else stripClustersName)
453 if not flags.Acts.useCache:
454 kwargs.setdefault(
'StripClusterPreparationAlg.InputCollection', stripClustersName
if kwargs[
'runReconstruction']
else primaryStripClustersName)
455 kwargs.setdefault(
'StripClusterPreparationAlg.InputIDC',
'')
457 kwargs.setdefault(
'StripClusterPreparationAlg.InputCollection',
'')
458 kwargs.setdefault(
'StripClusterPreparationAlg.InputIDC', f
'{flags.Tracking.ActiveConfig.extension}StripClustersCache')
460 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
461 kwargs.setdefault(
'StripClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
463 if kwargs[
'processHGTD']:
464 kwargs.setdefault(
'HgtdClusterPreparationAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterPreparationAlg')
465 kwargs.setdefault(
'HgtdClusterPreparationAlg.OutputCollection', f
'{hgtdClustersName}_Cached' if kwargs[
'runReconstruction']
else hgtdClustersName)
466 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputCollection', hgtdClustersName
if kwargs[
'runReconstruction']
else primaryHgtdClustersName)
467 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputIDC',
'')
468 if flags.Tracking.ActiveConfig.isSecondaryPass
and previousActsExtension
is not None:
469 kwargs.setdefault(
'HgtdClusterPreparationAlg.InputPrdMap', f
'{previousActsExtension}PrdMap')
472 if flags.Acts.Clusters.doAnalysis:
475 if kwargs[
'processPixels']:
476 kwargs.setdefault(
'PixelClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}PixelClusterAnalysisAlg')
477 kwargs.setdefault(
'PixelClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
478 kwargs.setdefault(
'PixelClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
479 kwargs.setdefault(
'PixelClusterAnalysisAlg.ClusterContainerKey', kwargs[
'PixelClusterPreparationAlg.OutputCollection']
if kwargs[
'runPreparation']
else kwargs[
'PixelClusterizationAlg.ClustersKey'])
481 if kwargs[
'processStrips']:
482 kwargs.setdefault(
'StripClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}StripClusterAnalysisAlg')
483 kwargs.setdefault(
'StripClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
484 kwargs.setdefault(
'StripClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
485 kwargs.setdefault(
'StripClusterAnalysisAlg.ClusterContainerKey', kwargs[
'StripClusterPreparationAlg.OutputCollection']
if kwargs[
'runPreparation']
else kwargs[
'StripClusterizationAlg.ClustersKey'])
487 if kwargs[
'processHGTD']:
488 kwargs.setdefault(
'HgtdClusterAnalysisAlg.name', f
'{flags.Tracking.ActiveConfig.extension}HgtdClusterAnalysisAlg')
489 kwargs.setdefault(
'HgtdClusterAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
490 kwargs.setdefault(
'HgtdClusterAnalysisAlg.MonGroupName', f
'{flags.Tracking.ActiveConfig.extension}ClusterAnalysisAlg')
495 if flags.Acts.EDM.PersistifyClusters
and kwargs[
'runReconstruction']:
497 if kwargs[
'processPixels']:
498 pixel_cluster_shortlist = [
'-validationMeasurementLink']
499 pixel_cluster_variables =
'.'.
join(pixel_cluster_shortlist)
501 pixelClusterCollection = kwargs[
'PixelClusterizationAlg.ClustersKey']
502 toAOD += [f
'xAOD::PixelClusterContainer#{pixelClusterCollection}',
503 f
'xAOD::PixelClusterAuxContainer#{pixelClusterCollection}Aux.{pixel_cluster_variables}']
505 if kwargs[
'processStrips']:
506 strip_cluster_shortlist = [
'-validationMeasurementLink']
507 strip_cluster_variables =
'.'.
join(strip_cluster_shortlist)
509 stripClusterCollection = kwargs[
'StripClusterizationAlg.ClustersKey']
510 toAOD += [f
"xAOD::StripClusterContainer#{stripClusterCollection}",
511 f
"xAOD::StripClusterAuxContainer#{stripClusterCollection}Aux.{strip_cluster_variables}"]
513 if kwargs[
'processHGTD']:
514 hgtdClusterCollection = kwargs[
'HgtdClusterizationAlg.ClusterContainerName']
515 toAOD += [f
"xAOD::HGTDClusterContainer#{hgtdClusterCollection}",
516 f
"xAOD::HGTDClusterAuxContainer#{hgtdClusterCollection}Aux."]
518 from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD