ATLAS Offline Software
Loading...
Searching...
No Matches
ActsSpacePointFormationConfig Namespace Reference

Functions

bool reconstructStripSpacePointsInPrimaryPass (flags)
ComponentAccumulator ActsSpacePointCacheCreatorAlgCfg (flags, str name="ActsSpacePointCacheCreatorAlg", **dict kwargs)
ComponentAccumulator ActsPixelSpacePointToolCfg (flags, str name="ActsPixelSpacePointTool", **dict kwargs)
ComponentAccumulator ActsStripSpacePointToolCfg (flags, str name="ActsStripSpacePointTool", **dict kwargs)
ComponentAccumulator ActsCoreStripSpacePointToolCfg (flags, str name="ActsCoreStripSpacePointTool", **dict kwargs)
ComponentAccumulator ActsPixelSpacePointPreparationAlgCfg (flags, str name="ActsPixelSpacePointPreparationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsStripSpacePointPreparationAlgCfg (flags, str name="ActsStripSpacePointPreparationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsStripOverlapSpacePointPreparationAlgCfg (flags, str name='ActsStripOverlapSpacePointPreparationAlg', *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsPixelSpacePointFormationAlgCfg (flags, str name="ActsPixelSpacePointFormationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsStripSpacePointFormationAlgCfg (flags, str name="ActsStripSpacePointFormationAlg", *, bool useCache=False, **dict kwargs)
ComponentAccumulator ActsMainSpacePointFormationCfg (flags, *, str RoIs="ActsRegionOfInterest", **dict kwargs)
ComponentAccumulator ActsMainSpacePointFormationStandaloneCfg (flags)
ComponentAccumulator ActsSpacePointFormationCfg (flags, *, previousActsExtension=None)

Function Documentation

◆ ActsCoreStripSpacePointToolCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsCoreStripSpacePointToolCfg ( flags,
str name = "ActsCoreStripSpacePointTool",
**dict kwargs )

Definition at line 70 of file ActsSpacePointFormationConfig.py.

72 **kwargs: dict) -> ComponentAccumulator:
73 acc = ComponentAccumulator()
74
75 kwargs.setdefault("useSCTLayerDep_OverlapCuts", False)
76
77 if 'LorentzAngleTool' not in kwargs:
78 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
79 kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)) )
80
81 if 'TrackingGeometryTool' not in kwargs:
82 from ActsConfig.ActsGeometryConfig import ActsTrackingGeometryToolCfg
83 kwargs.setdefault('TrackingGeometryTool', acc.getPrimaryAndMerge(ActsTrackingGeometryToolCfg(flags)))
84
85 acc.setPrivateTools(CompFactory.ActsTrk.CoreStripSpacePointFormationTool(name, **kwargs))
86 return acc
87

◆ ActsMainSpacePointFormationCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsMainSpacePointFormationCfg ( flags,
* ,
str RoIs = "ActsRegionOfInterest",
**dict kwargs )

Definition at line 228 of file ActsSpacePointFormationConfig.py.

231 **kwargs: dict) -> ComponentAccumulator:
232 acc = ComponentAccumulator()
233
234 kwargs.setdefault('processPixels', flags.Detector.EnableITkPixel)
235 kwargs.setdefault('processStrips', flags.Detector.EnableITkStrip)
236 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
237 kwargs.setdefault('runReconstruction', True)
238 kwargs.setdefault('runPreparation', flags.Acts.useCache)
239 kwargs.setdefault('processOverlapSpacePoints', True)
240
241 if kwargs['runCacheCreation']:
242 acc.merge(ActsSpacePointCacheCreatorAlgCfg(flags, **extractChildKwargs(prefix='SpacePointCacheCreatorAlg.', **kwargs)))
243
244 if kwargs['runReconstruction']:
245 if kwargs['processPixels']:
246 acc.merge(ActsPixelSpacePointFormationAlgCfg(flags,**extractChildKwargs(prefix='PixelSpacePointFormationAlg.', **kwargs)))
247
248 if kwargs['processStrips']:
249 acc.merge(ActsStripSpacePointFormationAlgCfg(flags, **extractChildKwargs(prefix='StripSpacePointFormationAlg.', **kwargs)))
250
251 if kwargs['runPreparation']:
252 if kwargs['processPixels']:
253 acc.merge(ActsPixelSpacePointPreparationAlgCfg(flags,
254 RoIs=RoIs,
255 **extractChildKwargs(prefix='PixelSpacePointPreparationAlg.', **kwargs)))
256 if kwargs['processStrips']:
257 acc.merge(ActsStripSpacePointPreparationAlgCfg(flags,
258 RoIs=RoIs,
259 **extractChildKwargs(prefix='StripSpacePointPreparationAlg.', **kwargs)))
260 if kwargs['processOverlapSpacePoints']:
261 acc.merge(ActsStripOverlapSpacePointPreparationAlgCfg(flags,
262 RoIs=RoIs,
263 **extractChildKwargs(prefix='StripOverlapSpacePointPreparationAlg.', **kwargs)))
264
265 # Analysis extensions
266 if flags.Acts.SpacePoints.doAnalysis:
267 if kwargs['processPixels']:
268 from ActsConfig.ActsAnalysisConfig import ActsPixelSpacePointAnalysisAlgCfg
269 acc.merge(ActsPixelSpacePointAnalysisAlgCfg(flags, **extractChildKwargs(prefix='PixelSpacePointAnalysisAlg.', **kwargs)))
270 if kwargs['processStrips']:
271 from ActsConfig.ActsAnalysisConfig import ActsStripSpacePointAnalysisAlgCfg
272 acc.merge(ActsStripSpacePointAnalysisAlgCfg(flags, **extractChildKwargs(prefix='StripSpacePointAnalysisAlg.', **kwargs)))
273 if kwargs['processOverlapSpacePoints']:
274 from ActsConfig.ActsAnalysisConfig import ActsStripOverlapSpacePointAnalysisAlgCfg
275 acc.merge(ActsStripOverlapSpacePointAnalysisAlgCfg(flags, **extractChildKwargs(prefix='StripOverlapSpacePointAnalysisAlg.', **kwargs)))
276
277 return acc
278
279# Config to be called outside of loops over tracking passes in main reco
280# Will configure subtools based on MainPass

◆ ActsMainSpacePointFormationStandaloneCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsMainSpacePointFormationStandaloneCfg ( flags)

Definition at line 281 of file ActsSpacePointFormationConfig.py.

281def ActsMainSpacePointFormationStandaloneCfg(flags) -> ComponentAccumulator:
282 primaryFlags = flags.cloneAndReplace(
283 "Tracking.ActiveConfig",
284 f"Tracking.{flags.Tracking.PrimaryPassConfig.value}Pass")
285 return ActsMainSpacePointFormationCfg(primaryFlags)
286

◆ ActsPixelSpacePointFormationAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsPixelSpacePointFormationAlgCfg ( flags,
str name = "ActsPixelSpacePointFormationAlg",
* ,
bool useCache = False,
**dict kwargs )

Definition at line 146 of file ActsSpacePointFormationConfig.py.

150 **kwargs: dict) -> ComponentAccumulator:
151 acc = ComponentAccumulator()
152
153 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
154 acc.merge(ITkPixelReadoutGeometryCfg(flags))
155
156 kwargs.setdefault('PixelClusters', 'ITkPixelClusters')
157 kwargs.setdefault('PixelSpacePoints', 'ITkPixelSpacePoints')
158 kwargs.setdefault('ExtraOutputs',
159 [('xAOD::SpacePointContainer' , f'StoreGateSvc+{kwargs["PixelSpacePoints"]}.measurements')])
160
161 if useCache:
162 kwargs.setdefault('SPCacheBackend', 'ActsPixelSpacePointCache_Back')
163 kwargs.setdefault('SPCache', 'ActsPixelSpacePointCache')
164
165 if 'SpacePointFormationTool' not in kwargs:
166 kwargs.setdefault("SpacePointFormationTool", acc.popToolsAndMerge(ActsPixelSpacePointToolCfg(flags)))
167
168 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
169 from ActsConfig.ActsMonitoringConfig import ActsPixelSpacePointFormationMonitoringToolCfg
170 kwargs.setdefault("MonTool", acc.popToolsAndMerge(ActsPixelSpacePointFormationMonitoringToolCfg(flags)))
171
172
173 if useCache:
174 acc.addEventAlgo(CompFactory.ActsTrk.PixelCacheSpacePointFormationAlg(name, **kwargs))
175 else:
176 acc.addEventAlgo(CompFactory.ActsTrk.PixelSpacePointFormationAlg(name, **kwargs))
177
178 return acc
179

◆ ActsPixelSpacePointPreparationAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsPixelSpacePointPreparationAlgCfg ( flags,
str name = "ActsPixelSpacePointPreparationAlg",
* ,
bool useCache = False,
**dict kwargs )

Definition at line 88 of file ActsSpacePointFormationConfig.py.

92 **kwargs: dict) -> ComponentAccumulator:
93 acc = ComponentAccumulator()
94
95 kwargs.setdefault('InputCollection', 'ITkPixelSpacePoints')
96 kwargs.setdefault('DetectorElements', 'ITkPixelDetectorElementCollection')
97
98 if 'RegSelTool' not in kwargs:
99 from RegionSelector.RegSelToolConfig import regSelTool_ITkPixel_Cfg
100 kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkPixel_Cfg(flags)))
101
102 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
103 from ActsConfig.ActsMonitoringConfig import ActsDataPreparationMonitoringToolCfg
104 kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsDataPreparationMonitoringToolCfg(flags,
105 name = "ActsPixelSpacePointPreparationMonitoringTool")))
106
107 if not useCache:
108 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointDataPreparationAlg(name, **kwargs))
109 else:
110 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointCacheDataPreparationAlg(name, **kwargs))
111 return acc
112

◆ ActsPixelSpacePointToolCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsPixelSpacePointToolCfg ( flags,
str name = "ActsPixelSpacePointTool",
**dict kwargs )

Definition at line 43 of file ActsSpacePointFormationConfig.py.

45 **kwargs: dict) -> ComponentAccumulator:
46 from InDetConfig.ITkActsHelpers import isFastPrimaryPass
47
48 acc = ComponentAccumulator()
49 if isFastPrimaryPass(flags):
50 kwargs.setdefault('UseMaxVariance', True)
51 acc.setPrivateTools(CompFactory.ActsTrk.PixelSpacePointFormationTool(name, **kwargs))
52 return acc
53

◆ ActsSpacePointCacheCreatorAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsSpacePointCacheCreatorAlgCfg ( flags,
str name = "ActsSpacePointCacheCreatorAlg",
**dict kwargs )

Definition at line 33 of file ActsSpacePointFormationConfig.py.

35 **kwargs: dict) -> ComponentAccumulator:
36 acc = ComponentAccumulator()
37 kwargs.setdefault("PixelSpacePointCacheKey", "ActsPixelSpacePointCache_Back")
38 kwargs.setdefault("StripSpacePointCacheKey", "ActsStripSpacePointCache_Back")
39 kwargs.setdefault("StripOverlapSpacePointCacheKey", "ActsStripOverlapSpacePointCache_Back")
40 acc.addEventAlgo(CompFactory.ActsTrk.Cache.CreatorAlg(name, **kwargs))
41 return acc
42

◆ ActsSpacePointFormationCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsSpacePointFormationCfg ( flags,
* ,
previousActsExtension = None )

Definition at line 287 of file ActsSpacePointFormationConfig.py.

289 previousActsExtension = None) -> ComponentAccumulator:
290 acc = ComponentAccumulator()
291
292 processPixels = flags.Detector.EnableITkPixel
293 processStrips = flags.Detector.EnableITkStrip
294
295 # For conversion and LRT pass we do not process pixels since we assume
296 # they have been processed on the primary pass.
297 from InDetConfig.ITkActsHelpers import isPrimaryPass
298 if flags.Tracking.ActiveConfig.extension in ["ActsConversion", "ActsLargeRadius", "ActsValidateLargeRadiusStandalone"]:
299 processPixels = False
300 elif isPrimaryPass(flags) and flags.Tracking.doITkFastTracking:
301 processStrips = reconstructStripSpacePointsInPrimaryPass(flags)
302 elif flags.Tracking.ActiveConfig.extension == "ActsValidateF100" and flags.Tracking.doITkFastTracking:
303 processStrips = False
304 kwargs = dict()
305 kwargs.setdefault('processPixels', processPixels)
306 kwargs.setdefault('processStrips', processStrips)
307
308 # Similarly to Clusterization, space point formation is a three step process at maximum:
309 # (1) Cache Creation
310 # (2) Space Point formation algorithm (reconstruction of space points)
311 # (3) Preparation of collection for downstream algorithms
312 # What step is scheduled depends on the tracking pass and the activation
313 # or de-activation of caching mechanism.
314
315 # Secondary passes do not need cache creation, that has to be performed
316 # on the primary pass, and only if the caching is enabled.
317 # Reconstruction can run on secondary passes only if the caching is enabled,
318 # this is because we may need to process detector elements not processed
319 # on the primary pass.
320 # Preparation has to be performed on secondary passes always, and on primary
321 # pass only if cache is enabled. In the latter case it is used to collect all
322 # the clusters from all views before passing them to the downstream algorithms
323
324 from InDetConfig.ITkActsHelpers import isValidationPass
325 if isPrimaryPass(flags) or isValidationPass(flags):
326 # Primary pass
327 # Validation passes count as primary passes
328 kwargs.setdefault('runCacheCreation', flags.Acts.useCache)
329 kwargs.setdefault('runReconstruction', True)
330 kwargs.setdefault('runPreparation', flags.Acts.useCache)
331 else:
332 # Secondary passes
333 kwargs.setdefault('runCacheCreation', False)
334 kwargs.setdefault('runReconstruction', flags.Acts.useCache)
335 kwargs.setdefault('runPreparation', True)
336
337 # Overlap Space Points may not be required
338 processOverlapSpacePoints = processStrips
339 if flags.Tracking.ActiveConfig.extension in ['ActsConversion']:
340 processOverlapSpacePoints = False
341 kwargs.setdefault('processOverlapSpacePoints', processOverlapSpacePoints)
342
343 # Name of the RoI to be used
344 roisName = f'{flags.Tracking.ActiveConfig.extension}RegionOfInterest'
345 # Large Radius pass uses the same roi as the primary pass (FS roi)
346 if flags.Tracking.ActiveConfig.extension == 'ActsLargeRadius':
347 from InDetConfig.ITkActsHelpers import primaryPassExtension
348 roisName = f'{primaryPassExtension(flags)}RegionOfInterest'
349
350 # Cluster Collection name(s) and Space Point Collection name(s)
351 # The name depends on the tracking pass as well as the cache mechanism
352 pixelClustersName = 'ITkPixelClusters'
353 stripClustersName = 'ITkStripClusters'
354 pixelSpacePointsName = 'ITkPixelSpacePoints'
355 stripSpacePointsName = 'ITkStripSpacePoints'
356 stripOverlapSpacePointsName = 'ITkStripOverlapSpacePoints'
357 # Secondary passes modify the collection name
358 if flags.Tracking.ActiveConfig.isSecondaryPass:
359 pixelClustersName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelClusters'
360 stripClustersName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripClusters'
361 pixelSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}PixelSpacePoints'
362 stripSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripSpacePoints'
363 stripOverlapSpacePointsName = f'ITk{flags.Tracking.ActiveConfig.extension.replace("Acts", "")}StripOverlapSpacePoints'
364 # if cache is enabled, add "_Cached" at the end
365 if flags.Acts.useCache:
366 pixelClustersName += "_Cached"
367 stripClustersName += "_Cached"
368
369 # Primary collections for space points (i.e. produced by primary pass)
370 primaryPixelSpacePointsName = 'ITkPixelSpacePoints'
371 primaryStripSpacePointsName = 'ITkStripSpacePoints'
372 primaryStripOverlapSpacePointsName = 'ITkStripOverlapSpacePoints'
373
374 # Configuration for (1)
375 if kwargs['runCacheCreation']:
376 kwargs.setdefault('SpacePointCacheCreatorAlg.name', f'{flags.Tracking.ActiveConfig.extension}SpacePointCacheCreatorAlg')
377
378 # Configuration for (2)
379 if kwargs['runReconstruction']:
380 if kwargs['processPixels']:
381 kwargs.setdefault('PixelSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointFormationAlg')
382 kwargs.setdefault('PixelSpacePointFormationAlg.useCache', flags.Acts.useCache)
383 kwargs.setdefault('PixelSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
384 kwargs.setdefault('PixelSpacePointFormationAlg.PixelClusters', pixelClustersName)
385 kwargs.setdefault('PixelSpacePointFormationAlg.PixelSpacePoints', pixelSpacePointsName)
386
387 if kwargs['processStrips']:
388 kwargs.setdefault('StripSpacePointFormationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointFormationAlg')
389 kwargs.setdefault('StripSpacePointFormationAlg.useCache', flags.Acts.useCache)
390 kwargs.setdefault('StripSpacePointFormationAlg.SPCache', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
391 kwargs.setdefault('StripSpacePointFormationAlg.StripClusters', stripClustersName)
392 kwargs.setdefault('StripSpacePointFormationAlg.StripSpacePoints', stripSpacePointsName)
393
394 # Handling of Overlap Space Points
395 kwargs.setdefault('StripSpacePointFormationAlg.ProcessOverlapForStrip', kwargs['processOverlapSpacePoints'])
396 kwargs.setdefault('StripSpacePointFormationAlg.OSPCache', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
397 if kwargs['processOverlapSpacePoints']:
398 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', stripOverlapSpacePointsName)
399 else:
400 # Disable keys
401 kwargs.setdefault('StripSpacePointFormationAlg.StripOverlapSpacePoints', '')
402
403 # Configuration for (3)
404 if kwargs['runPreparation']:
405 if kwargs['processPixels']:
406 kwargs.setdefault('PixelSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointPreparationAlg')
407 kwargs.setdefault('PixelSpacePointPreparationAlg.useCache', flags.Acts.useCache)
408 kwargs.setdefault('PixelSpacePointPreparationAlg.OutputCollection', f'{pixelSpacePointsName}_Cached' if kwargs['runReconstruction'] else pixelSpacePointsName)
409 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
410 if not flags.Acts.useCache:
411 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
412 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', pixelSpacePointsName if kwargs['runReconstruction'] else primaryPixelSpacePointsName)
413 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', '')
414 else:
415 kwargs.setdefault('PixelSpacePointPreparationAlg.InputCollection', '')
416 kwargs.setdefault('PixelSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointCache')
417 # Prd Map
418 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
419 kwargs.setdefault('PixelSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
420
421
422 if kwargs['processStrips']:
423 kwargs.setdefault('StripSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointPreparationAlg')
424 kwargs.setdefault('StripSpacePointPreparationAlg.useCache', flags.Acts.useCache)
425 kwargs.setdefault('StripSpacePointPreparationAlg.OutputCollection', f'{stripSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripSpacePointsName)
426 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
427 if not flags.Acts.useCache:
428 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
429 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', stripSpacePointsName if kwargs['runReconstruction'] else primaryStripSpacePointsName)
430 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', '')
431 else:
432 kwargs.setdefault('StripSpacePointPreparationAlg.InputCollection', '')
433 kwargs.setdefault('StripSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointCache')
434 # Prd Map
435 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
436 kwargs.setdefault('StripSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
437
438 if kwargs['processOverlapSpacePoints']:
439 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointPreparationAlg')
440 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.useCache', flags.Acts.useCache)
441 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.OutputCollection', f'{stripOverlapSpacePointsName}_Cached' if kwargs['runReconstruction'] else stripOverlapSpacePointsName)
442 # The input is one between the collection (w/o cache) and the IDC (w/ cache)
443 if not flags.Acts.useCache:
444 # Take the collection from the reconstruction step. If not available take the collection from the primary pass
445 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', stripOverlapSpacePointsName if kwargs['runReconstruction'] else primaryStripOverlapSpacePointsName)
446 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', '')
447 else:
448 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputCollection', '')
449 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputIDC', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointCache')
450 # Prd Map
451 if flags.Tracking.ActiveConfig.isSecondaryPass and previousActsExtension is not None:
452 kwargs.setdefault('StripOverlapSpacePointPreparationAlg.InputPrdMap', f'{previousActsExtension}PrdMap')
453
454 # Analysis algo(s)
455 if flags.Acts.SpacePoints.doAnalysis:
456 # Run analysis code on the resulting space point collection produced by this tracking pass
457 # This collection is the result of (3) if it ran, else the result of (2). We are sure at least one of them run
458 if kwargs['processPixels']:
459 kwargs.setdefault('PixelSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}PixelSpacePointAnalysisAlg')
460 kwargs.setdefault('PixelSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
461 kwargs.setdefault('PixelSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['PixelSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['PixelSpacePointFormationAlg.PixelSpacePoints'])
462
463 if kwargs['processStrips']:
464 kwargs.setdefault('StripSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripSpacePointAnalysisAlg')
465 kwargs.setdefault('StripSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
466 kwargs.setdefault('StripSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripSpacePoints'])
467
468 if kwargs['processOverlapSpacePoints']:
469 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.name', f'{flags.Tracking.ActiveConfig.extension}StripOverlapSpacePointAnalysisAlg')
470 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.extension', flags.Tracking.ActiveConfig.extension)
471 kwargs.setdefault('StripOverlapSpacePointAnalysisAlg.SpacePointContainerKey', kwargs['StripOverlapSpacePointPreparationAlg.OutputCollection'] if kwargs['runPreparation'] else kwargs['StripSpacePointFormationAlg.StripOverlapSpacePoints'])
472
473 acc.merge(ActsMainSpacePointFormationCfg(flags, RoIs=roisName, **kwargs))
474
475
476 # Persistification
477 if flags.Acts.EDM.PersistifySpacePoints and kwargs['runReconstruction']:
478 toAOD = []
479 pixel_spacepoint_shortlist = ['-measurements']
480 strip_spacepoint_shortlist = ['topHalfStripLength',
481 'bottomHalfStripLength',
482 'topStripDirection',
483 'bottomStripDirection',
484 'stripCenterDistance',
485 'topStripCenter',
486 'measurementLink']
487
488 pixel_spacepoint_variables = '.'.join(pixel_spacepoint_shortlist)
489 strip_spacepoint_variables = '.'.join(strip_spacepoint_shortlist)
490
491 if kwargs['processPixels']:
492 pixelSpacePointCollection = kwargs['PixelSpacePointFormationAlg.PixelSpacePoints']
493 toAOD += [f'xAOD::SpacePointContainer#{pixelSpacePointCollection}',
494 f"xAOD::SpacePointAuxContainer#{pixelSpacePointCollection}Aux.{pixel_spacepoint_variables}"]
495
496 if kwargs['processStrips']:
497 stripSpacePointCollection = kwargs['StripSpacePointFormationAlg.StripSpacePoints']
498 toAOD += [f'xAOD::SpacePointContainer#{stripSpacePointCollection}',
499 f"xAOD::SpacePointAuxContainer#{stripSpacePointCollection}Aux.{strip_spacepoint_variables}"]
500
501 if kwargs['processOverlapSpacePoints']:
502 stripSpacePointCollection = kwargs['StripSpacePointFormationAlg.StripOverlapSpacePoints']
503 toAOD += [f'xAOD::SpacePointContainer#{stripSpacePointCollection}',
504 f"xAOD::SpacePointAuxContainer#{stripSpacePointCollection}Aux.{strip_spacepoint_variables}"]
505
506 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
507 acc.merge(addToAOD(flags, toAOD))
508
509 return acc
510

◆ ActsStripOverlapSpacePointPreparationAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsStripOverlapSpacePointPreparationAlgCfg ( flags,
str name = 'ActsStripOverlapSpacePointPreparationAlg',
* ,
bool useCache = False,
**dict kwargs )

Definition at line 138 of file ActsSpacePointFormationConfig.py.

142 **kwargs: dict) -> ComponentAccumulator:
143 kwargs.setdefault('InputCollection', 'ITkStripOverlapSpacePoints')
144 return ActsStripSpacePointPreparationAlgCfg(flags, name=name, useCache=useCache, **kwargs)
145

◆ ActsStripSpacePointFormationAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsStripSpacePointFormationAlgCfg ( flags,
str name = "ActsStripSpacePointFormationAlg",
* ,
bool useCache = False,
**dict kwargs )

Definition at line 180 of file ActsSpacePointFormationConfig.py.

184 **kwargs: dict) -> ComponentAccumulator:
185 acc = ComponentAccumulator()
186
187 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
188 acc.merge(ITkStripReadoutGeometryCfg(flags))
189
190 from BeamSpotConditions.BeamSpotConditionsConfig import BeamSpotCondAlgCfg
191 acc.merge(BeamSpotCondAlgCfg(flags))
192
193 from InDetConfig.SiSpacePointFormationConfig import ITkSiElementPropertiesTableCondAlgCfg
194 acc.merge(ITkSiElementPropertiesTableCondAlgCfg(flags))
195
196
197 kwargs.setdefault('StripClusters', 'ITkStripClusters')
198 kwargs.setdefault('StripSpacePoints', 'ITkStripSpacePoints')
199 kwargs.setdefault('StripOverlapSpacePoints', 'ITkStripOverlapSpacePoints')
200 kwargs.setdefault('ExtraOutputs',
201 [('xAOD::SpacePointContainer' , f'StoreGateSvc+{kwargs["StripSpacePoints"]}.measurements'),
202 ('xAOD::SpacePointContainer' , f'StoreGateSvc+{kwargs["StripOverlapSpacePoints"]}.measurements')])
203
204
205 if useCache:
206 kwargs.setdefault('SPCacheBackend', 'ActsStripSpacePointCache_Back')
207 kwargs.setdefault('SPCache', 'ActsStripSpacePointCache')
208 kwargs.setdefault('OSPCacheBackend', 'ActsStripOverlapSpacePointCache_Back')
209 kwargs.setdefault('OSPCache', 'ActsStripOverlapSpacePointCache')
210
211 if 'SpacePointFormationTool' not in kwargs:
212 from ActsConfig.ActsConfigFlags import SpacePointStrategy
213 if flags.Acts.SpacePointStrategy is SpacePointStrategy.ActsCore:
214 kwargs.setdefault('SpacePointFormationTool', acc.popToolsAndMerge(ActsCoreStripSpacePointToolCfg(flags)))
215 else:
216 kwargs.setdefault('SpacePointFormationTool', acc.popToolsAndMerge(ActsStripSpacePointToolCfg(flags)))
217
218 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
219 from ActsConfig.ActsMonitoringConfig import ActsStripSpacePointFormationMonitoringToolCfg
220 kwargs.setdefault("MonTool", acc.popToolsAndMerge(ActsStripSpacePointFormationMonitoringToolCfg(flags)))
221
222 if useCache:
223 acc.addEventAlgo(CompFactory.ActsTrk.StripCacheSpacePointFormationAlg(name, **kwargs))
224 else:
225 acc.addEventAlgo(CompFactory.ActsTrk.StripSpacePointFormationAlg(name, **kwargs))
226 return acc
227

◆ ActsStripSpacePointPreparationAlgCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsStripSpacePointPreparationAlgCfg ( flags,
str name = "ActsStripSpacePointPreparationAlg",
* ,
bool useCache = False,
**dict kwargs )

Definition at line 113 of file ActsSpacePointFormationConfig.py.

117 **kwargs: dict) -> ComponentAccumulator:
118 acc = ComponentAccumulator()
119
120 kwargs.setdefault('InputCollection', 'ITkStripSpacePoints')
121 kwargs.setdefault('DetectorElements', 'ITkStripDetectorElementCollection')
122
123 if 'RegSelTool' not in kwargs:
124 from RegionSelector.RegSelToolConfig import regSelTool_ITkStrip_Cfg
125 kwargs.setdefault('RegSelTool', acc.popToolsAndMerge(regSelTool_ITkStrip_Cfg(flags)))
126
127 if flags.Acts.doMonitoring and 'MonTool' not in kwargs:
128 from ActsConfig.ActsMonitoringConfig import ActsDataPreparationMonitoringToolCfg
129 kwargs.setdefault('MonTool', acc.popToolsAndMerge(ActsDataPreparationMonitoringToolCfg(flags,
130 name = "ActsStripSpacePointPreparationMonitoringTool")))
131
132 if not useCache:
133 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointDataPreparationAlg(name, **kwargs))
134 else:
135 acc.addEventAlgo(CompFactory.ActsTrk.SpacePointCacheDataPreparationAlg(name, **kwargs))
136 return acc
137

◆ ActsStripSpacePointToolCfg()

ComponentAccumulator ActsSpacePointFormationConfig.ActsStripSpacePointToolCfg ( flags,
str name = "ActsStripSpacePointTool",
**dict kwargs )

Definition at line 54 of file ActsSpacePointFormationConfig.py.

56 **kwargs: dict) -> ComponentAccumulator:
57 acc = ComponentAccumulator()
58
59 kwargs.setdefault("useSCTLayerDep_OverlapCuts", False)
60
61 kwargs.setdefault("useBeamSpotConstraint", flags.Acts.SpacePoints.useBeamSpotConstraintStrips)
62
63 if 'LorentzAngleTool' not in kwargs:
64 from SiLorentzAngleTool.ITkStripLorentzAngleConfig import ITkStripLorentzAngleToolCfg
65 kwargs.setdefault("LorentzAngleTool", acc.popToolsAndMerge(ITkStripLorentzAngleToolCfg(flags)) )
66
67 acc.setPrivateTools(CompFactory.ActsTrk.StripSpacePointFormationTool(name, **kwargs))
68 return acc
69

◆ reconstructStripSpacePointsInPrimaryPass()

bool ActsSpacePointFormationConfig.reconstructStripSpacePointsInPrimaryPass ( flags)

Definition at line 7 of file ActsSpacePointFormationConfig.py.

7def reconstructStripSpacePointsInPrimaryPass(flags) -> bool:
8 # Unlike for clusters, we need some non-trivial logic to understand
9 # if we want reconstruct strip space points
10 # Strip clusters are always created in the Full-Scan primary pass, since they
11 # are used in Track Finding
12 # But for space points this really depends on the fast tracking configuration
13 # and the sequence of secondary passes
14
15 # If strip detector is disabled we reconstruct nothing
16 if not flags.Detector.EnableITkStrip:
17 return False
18
19 # If primary pass is not fast tracking configuration, we reconstruct all space points
20 if not flags.Tracking.doITkFastTracking:
21 return True
22
23 # If we schedule LRT or Low Pt configurations (both are full scan) we reconstruct
24 # space points in primary pass
25 # We do the same for the conversion pass
26 if flags.Acts.doLargeRadius or flags.Acts.doLowPt or flags.Acts.doITkConversion:
27 return True
28
29 # If we only have the primary pass, no need to process strip space points
30 return False
31
32