ATLAS Offline Software
Loading...
Searching...
No Matches
PrecisionTracks_GSFRefittedSequence.py
Go to the documentation of this file.
2# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3#
4
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaCommon.Logging import logging
8log = logging.getLogger(__name__)
9
10def precisionTracks_GSFRefitted(flags, RoIs, ion=False, variant=''):
11 """
12 Takes precision Tracks as input and applies GSF refits on top
13 """
14 acc = ComponentAccumulator()
15
16 log.debug('precisionTracks_GSFRefitted(RoIs = %s, variant = %s)',RoIs,variant)
17
18 tag = '_ion' if ion else ''
19 tag+=variant
20
21 from TriggerMenuMT.HLT.Egamma.TrigEgammaKeys import getTrigEgammaKeys
22 TrigEgammaKeys = getTrigEgammaKeys(flags, variant, ion=ion)
23
24 signatureName = 'electronLRT' if 'LRT' in variant else 'electron'
25 from TrigInDetConfig.utils import getFlagsForActiveConfig
26 trkflags = getFlagsForActiveConfig(flags, signatureName, log)
27
28 precisionGsfVDV = CompFactory.AthViews.ViewDataVerifier("PrecisionTrackViewDataVerifier_forGSFRefit"+tag+'VDV')
29
30 # precision Tracking related data dependencies
31 trackParticles = TrigEgammaKeys.precisionTrackingContainer
32 ambimap = flags.Trigger.InDetTracking.ClusterAmbiguitiesMap
33 if flags.Detector.GeometryITk:
34 ambimap = flags.Trigger.ITkTracking.ClusterAmbiguitiesMap
35
36 dataObjects = [( 'xAOD::TrackParticleContainer','StoreGateSvc+%s' % trackParticles),
37 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.averageInteractionsPerCrossing' ),
38 ( 'InDet::PixelGangedClusterAmbiguities' , 'StoreGateSvc+%s' % ambimap ),
39 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.AveIntPerXDecor' ),
40 ]
41
42 if flags.Trigger.useActsTracking and flags.Acts.GsfRefitActs:
43 dataObjects += [('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' ),
44 ( 'xAOD::TrackParticleContainer','StoreGateSvc+%s.actsTrack' % trackParticles)]
45
46
47
48 if flags.Detector.GeometryTRT:
49 dataObjects += [( 'InDet::TRT_DriftCircleContainer' , 'StoreGateSvc+%s' % "TRT_TrigDriftCircles" )]
50 if flags.Input.isMC:
51 dataObjects += [( 'TRT_RDO_Container' , 'StoreGateSvc+TRT_RDOs' ),
52 ( 'InDet::TRT_DriftCircleContainerCache' ,
53 f'StoreGateSvc+{flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey}' )]
54 else:
55 dataObjects += [( 'TRT_RDO_Cache' , f'StoreGateSvc+{flags.Trigger.InDetTracking.TRTRDOCacheKey}' )]
56
57 # These objects must be loaded from SGIL if not from CondInputLoader
58
59 if not flags.Input.isMC:
60 dataObjects.append(( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ))
61
62 from TrigInDetConfig.TrigInDetConfig import InDetExtraDataObjectsFromDataPrep
63 InDetExtraDataObjectsFromDataPrep(flags,dataObjects)
64
65 precisionGsfVDV.DataObjects = dataObjects
66
67 acc.addEventAlgo(precisionGsfVDV)
68
69
70 if flags.Acts.GsfRefitActs:
71 from egammaAlgs.ActsEMBremCollectionBuilderConfig import (
72 TrigActsEMBremCollectionBuilderCfg)
73 acc.merge(TrigActsEMBremCollectionBuilderCfg(trkflags, name='TrigActsEMBremCollectionBuilder'+variant,
74 RefittedTracksLocation = TrigEgammaKeys.precisionElectronTrkCollectionGSF,
75 SelectedTrackParticleContainerName = trackParticles,
76 TrackParticlesOutKey = TrigEgammaKeys.precisionElectronTrackParticleContainerGSF))
77
78 else:
79
80 from TriggerMenuMT.HLT.Electron.TrigEMBremCollectionBuilder import TrigEMBremCollectionBuilderCfg
81 acc.merge(TrigEMBremCollectionBuilderCfg(trkflags,
82 name = "TrigEMBremCollectionBuilderCfg"+variant,
83 TrackParticleContainerName=TrigEgammaKeys.precisionTrackingContainer,
84 SelectedTrackParticleContainerName=TrigEgammaKeys.precisionTrackingContainer,
85 OutputTrkPartContainerName=TrigEgammaKeys.precisionElectronTrackParticleContainerGSF,
86 OutputTrackContainerName=TrigEgammaKeys.precisionElectronTrkCollectionGSF))
87
88 return acc