ATLAS Offline Software
Loading...
Searching...
No Matches
TrigInDetConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3#
4
5from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8from AthenaCommon.Logging import logging
9
10def InDetExtraDataObjectsFromDataPrep(flags, dataObjects) :
11 if flags.Detector.GeometryITk:
12 if flags.Detector.EnableITkPixel:
13 dataObjects.append( ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkPixelDetectorElementStatus' ))
14 if flags.Detector.EnableITkStrip:
15 dataObjects.append( ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkStripDetectorElementStatus' ))
16
17
19 #Create IdentifiableCaches
20 acc = ComponentAccumulator()
21 InDet__CacheCreator=CompFactory.getComp("InDet::CacheCreator")
22 InDetCacheCreatorTrig = InDet__CacheCreator(name = "InDetCacheCreatorTrig",
23 TRT_DriftCircleKey = flags.Trigger.InDetTracking.TRT_DriftCircleCacheKey,
24 Pixel_ClusterKey = flags.Trigger.InDetTracking.PixelClusterCacheKey,
25 SCT_ClusterKey = flags.Trigger.InDetTracking.SCTClusterCacheKey,
26 SpacePointCachePix = flags.Trigger.InDetTracking.SpacePointCachePix,
27 SpacePointCacheSCT = flags.Trigger.InDetTracking.SpacePointCacheSCT,
28 SCTRDOCacheKey = flags.Trigger.InDetTracking.SCTRDOCacheKey,
29 SCTBSErrCacheKey = flags.Trigger.InDetTracking.SCTBSErrCacheKey,
30 SCTFlaggedCondCacheKey = flags.Trigger.InDetTracking.SCTFlaggedCondCacheKey,
31 PixRDOCacheKey = flags.Trigger.InDetTracking.PixRDOCacheKey,
32 PixBSErrCacheKey = flags.Trigger.InDetTracking.PixBSErrCacheKey,
33 TRTRDOCacheKey = flags.Trigger.InDetTracking.TRTRDOCacheKey)
34
35 if not flags.Detector.GeometryTRT:
36 InDetCacheCreatorTrig.disableTRT = True
37
38 acc.addEventAlgo( InDetCacheCreatorTrig )
39 return acc
40
42 #Create IdentifiableCaches
43 acc = ComponentAccumulator()
44
45 creator = CompFactory.ActsTrk.Cache.CreatorAlg(name="ActsCacheCreatorTrig",
46 PixelClustersCacheKey="ActsPixelClusterCache_Back",
47 StripClustersCacheKey="ActsStripClusterCache_Back",
48 PixelSpacePointCacheKey="ActsPixelSpacePointCache_Back",
49 StripSpacePointCacheKey="ActsStripSpacePointCache_Back",
50 StripOverlapSpacePointCacheKey="ActsStripOverlapSpacePointCache_Back")
51
52 acc.addEventAlgo(creator)
53
54 return acc
55
56
57
58
59
60@AccumulatorCache
61def trigInDetFastTrackingCfg( inflags, roisKey="EMRoIs", signatureName='', patternMode='FTF', in_view=True ):
62
63 log = logging.getLogger("trigInDetFastTrackingCfg")
64 from TrigInDetConfig.utils import getFlagsForActiveConfig
65 flags = getFlagsForActiveConfig(inflags, signatureName, log)
66
67 """ Generates fast tracking config, it is a primary config function """
68
69 from TrigInDetConfig.InnerTrackingTrigSequence import InnerTrackingTrigSequence
70
71 seq = InnerTrackingTrigSequence.create(flags,
72 flags.Tracking.ActiveConfig.input_name,
73 rois = roisKey,
74 inView = "VDVInDetFTF" if in_view else None)
75 if patternMode=='FTF':
76 acc = seq.sequence("FastTrackFinder")
77 elif patternMode=="fastTracking":
78 acc = seq.sequence("offlinePattern")
79
80 return acc
81
82
83
84
85
86@AccumulatorCache
87def trigInDetLRTCfg(flags, LRTInputCollection, roisKey, in_view, extra_view_inputs=tuple()):
88 from TrigInDetConfig.InnerTrackingTrigSequence import InnerTrackingTrigSequence
89 viewname = "VDVInDetLRT" if in_view else None
90 seq = InnerTrackingTrigSequence.create(flags,
91 flags.Tracking.ActiveConfig.input_name,
92 rois = roisKey,
93 inView = viewname)
94 acc = ComponentAccumulator()
95 if in_view:
96 acc.addEventAlgo( CompFactory.AthViews.ViewDataVerifier(
97 name = "LRTInputVDV_"+viewname + "_" + flags.Tracking.ActiveConfig.input_name,
98 DataObjects = { ( 'TrigRoiDescriptorCollection' , f'StoreGateSvc+{roisKey}' ),
99 ( 'TrackCollection' , 'StoreGateSvc+HLT_IDTrkTrack_FS_FTF' ),
100 } | set(extra_view_inputs) ) )
101
102 #need to make sure the cache containers are available
103 acc.merge(seq.viewDataVerifier(viewname))
104 acc.merge(seq.dataPreparation())
105 acc.merge(seq.spacePointFormation())
106
107 acc.merge(seq.fastTrackFinder(inputTracksName = LRTInputCollection))
108
109 return acc
110
111
112
113
114
115
118
119@AccumulatorCache
120def trigInDetPrecisionTrackingCfg( inflags, rois, signatureName, in_view=True ):
121
122 """ Generates precision tracking config, it is a primary config function """
123
124 acc = ComponentAccumulator()
125 log = logging.getLogger("trigInDetPrecisionTrackingCfg")
126 from TrigInDetConfig.utils import getFlagsForActiveConfig
127 flags = getFlagsForActiveConfig(inflags, signatureName, log)
128
129 if in_view:
130
131 verifier = CompFactory.AthViews.ViewDataVerifier( name = 'VDVInDetPrecision'+flags.Tracking.ActiveConfig.input_name,
132 DataObjects= {( 'xAOD::EventInfo', 'StoreGateSvc+EventInfo'),
133 ( 'SG::AuxElement' , 'StoreGateSvc+EventInfo.averageInteractionsPerCrossing'),
134 ( 'TrigRoiDescriptorCollection' , f'StoreGateSvc+{rois}' ),
135 ( 'TagInfo', 'DetectorStore+ProcessingTags' ),
136 ( ('ActsTrk::TrackContainer' if "Acts" in flags.Tracking.ActiveConfig.trkTracks_FTF else 'TrackCollection'), flags.Tracking.ActiveConfig.trkTracks_FTF )} )
137
138 acc.addEventAlgo(verifier)
139
140 from TrigInDetConfig.InnerTrackingTrigSequence import InnerTrackingTrigSequence
141
142 seq = InnerTrackingTrigSequence.create(flags,
143 flags.Tracking.ActiveConfig.input_name,
144 rois = flags.Tracking.ActiveConfig.roi,
145 inView = verifier.getName() if in_view else '')
146
147 acc.merge(seq.sequenceAfterPattern(rois = rois))
148
149 return acc
150
151
152
153
154
155def trigInDetVertexingCfg(flags, inputTracks, outputVtx):
156
157 acc = ComponentAccumulator()
158
159 acc.addEventAlgo( CompFactory.AthViews.ViewDataVerifier(
160 name = "VtxVDV_" + flags.Tracking.ActiveConfig.input_name,
161 DataObjects = {
162 ('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' )
163 }
164 ))
165
166 from InDetConfig.InDetPriVxFinderConfig import InDetTrigPriVxFinderCfg
167 acc.merge(InDetTrigPriVxFinderCfg(flags, inputTracks = inputTracks, outputVtx =outputVtx))
168
169 return acc
170
171
172
173
174if __name__ == "__main__":
175 from AthenaConfiguration.AllConfigFlags import initConfigFlags
176 from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultGeometryTags
177 ComponentAccumulator.debugMode = "trackCA trackPublicTool trackEventAlgo trackCondAlgo trackPrivateTool"
178 flags = initConfigFlags()
179 flags.Input.Files = defaultTestFiles.RAW_RUN2
180 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
181 flags.lock()
182 # this configuration is not runable, the test checks if there is no mistake in python scripts above
183 # output can be used by experts to check actual configuration (e.g. here we configure to run on RAW and it should be reflected in settings)
184 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
185 acc = MainServicesCfg( flags )
186 roisKey = "ElectronRoIs"
187
188 flags = flags.cloneAndReplace("Tracking.ActiveConfig", "Trigger.InDetTracking.electron")
189 acc.merge( trigInDetFastTrackingCfg( flags, roisKey=roisKey, signatureName="electron" ) )
190 acc.merge( trigInDetPrecisionTrackingCfg( flags, rois=roisKey, signatureName="electron", in_view=True) )
191 acc.merge( trigInDetVertexingCfg( flags, inputTracks=flags.Tracking.ActiveConfig.tracks_FTF, outputVtx="testVtx") )
192
193
194 acc.printConfig(withDetails=True, summariseProps=True)
195 acc.store( open("test.pkl", "wb") )
STL class.
trigInDetPrecisionTrackingCfg(inflags, rois, signatureName, in_view=True)
precision tracking
trigInDetFastTrackingCfg(inflags, roisKey="EMRoIs", signatureName='', patternMode='FTF', in_view=True)
InDetExtraDataObjectsFromDataPrep(flags, dataObjects)
trigInDetVertexingCfg(flags, inputTracks, outputVtx)
trigInDetLRTCfg(flags, LRTInputCollection, roisKey, in_view, extra_view_inputs=tuple())