ATLAS Offline Software
TrigInDetConfig.py
Go to the documentation of this file.
1 #
2 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 #
4 
5 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
6 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7 from AthenaConfiguration.ComponentFactory import CompFactory
8 from AthenaCommon.Logging import logging
9 
10 def 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
61 def 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
87 def 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
120 def 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 
155 def 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  ( 'ActsGeometryContext' , '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 
174 if __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") )
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.TrigInDetConfig.trigInDetLRTCfg
def trigInDetLRTCfg(flags, LRTInputCollection, roisKey, in_view, extra_view_inputs=tuple())
Definition: TrigInDetConfig.py:87
python.InDetPriVxFinderConfig.InDetTrigPriVxFinderCfg
ComponentAccumulator InDetTrigPriVxFinderCfg(flags, str inputTracks, str outputVtx, str name="InDetTrigPriVxFinder", **kwargs)
Definition: InDetPriVxFinderConfig.py:47
python.TrigInDetConfig.trigInDetPrecisionTrackingCfg
def trigInDetPrecisionTrackingCfg(inflags, rois, signatureName, in_view=True)
precision tracking
Definition: TrigInDetConfig.py:120
python.TrigInDetConfig.InDetExtraDataObjectsFromDataPrep
def InDetExtraDataObjectsFromDataPrep(flags, dataObjects)
Definition: TrigInDetConfig.py:10
python.TrigInDetConfig.trigInDetFastTrackingCfg
def trigInDetFastTrackingCfg(inflags, roisKey="EMRoIs", signatureName='', patternMode='FTF', in_view=True)
Definition: TrigInDetConfig.py:61
python.utils.getFlagsForActiveConfig
AthConfigFlags getFlagsForActiveConfig(AthConfigFlags flags, str config_name, logging.Logger log)
Definition: Trigger/TrigTools/TrigInDetConfig/python/utils.py:9
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
python.TrigInDetConfig.ActsIDCCacheCreatorCfg
def ActsIDCCacheCreatorCfg(flags)
Definition: TrigInDetConfig.py:41
python.TrigInDetConfig.trigInDetVertexingCfg
def trigInDetVertexingCfg(flags, inputTracks, outputVtx)
Definition: TrigInDetConfig.py:155
Trk::open
@ open
Definition: BinningType.h:40
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
python.TrigInDetConfig.InDetIDCCacheCreatorCfg
def InDetIDCCacheCreatorCfg(flags)
Definition: TrigInDetConfig.py:18