ATLAS Offline Software
Loading...
Searching...
No Matches
AccelTrackTrigSequence.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from TrigInDetConfig.InnerTrackerTrigSequence import InnerTrackerTrigSequence
4from AthenaConfiguration.AthConfigFlags import AthConfigFlags
5from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
6
7from AthenaCommon.Logging import logging
8from AthenaConfiguration.ComponentFactory import CompFactory
9
10class AccelTrackTrigSequence(InnerTrackerTrigSequence):
11 def __init__(self, flags : AthConfigFlags, signature : str, rois : str, inView : str):
12 super().__init__(flags, signature,rois,inView)
13 self.log = logging.getLogger("AccelTrigTrigSequence")
14 self.log.info(f"EFTracking signature: {self.signature} rois: {self.rois} inview: {self.inView}")
15 def sequence(self, recoType : str) -> ComponentAccumulator:
16 """ main method to instantiate tracking in the trigger menu
17 recoType can be used to generate a specific step. The pattern recognition
18 and production of xAOD trackparticles should happen in FastTrackFinder step
19 """
20 ca = ComponentAccumulator()
21
22 if self.inView:
23 #to invoke VDV to make sure RoI and other info is available in view
24 ca.merge(self.viewDataVerifier())
25
26 #if there is need for splitting of the sequence in steps it can be added here
27 if recoType =="FastTrackFinder":
28 ca.merge(self.trackFinding())
29
30 return ca
31
32 def f100(self) -> ComponentAccumulator:
33 import EFTrackConfig.F100Config as F100Config
34 from TrigInDetConfig.ActsTrigSequence import ActsTrigSequence
35
36 ca = ComponentAccumulator()
37
38 seq = ActsTrigSequence(self.flags, self.signature, self.rois, self.inView)
39
40 ca.merge(F100Config.dataPreparation(self.flags, self.signature, self.inView, self.rois))
41 ca.merge(seq.fastTrackFinder())
42
43 return ca
44
45 def f100_precision(self) -> ComponentAccumulator:
46 from TrigInDetConfig.ActsTrigSequence import ActsTrigSequence
47
48 ca = ComponentAccumulator()
49
50 seq = ActsTrigSequence(self.flags, self.signature, self.rois, self.inView)
51
52 #this does not require new data preparation of its own
53 ca.merge(seq.sequenceAfterPattern())
54
55 return ca
56
57 def trackFinding(self) -> ComponentAccumulator:
58 ca = ComponentAccumulator()
59
60 self.log.info(f'merge EFTrackPipeline {self.flags.Trigger.EFTrackPipeline}')
61
62 match self.flags.Trigger.EFTrackPipeline:
63 case "F100":
64 ca.merge(self.f100())
65 pass
66 case "G200":
67 pass
68
69 #other pipelines can be added here
70
71 case _:
72 pass
73
74 return ca
75
76 def sequenceAfterPattern(self, rois="") -> ComponentAccumulator:
77 """ this method is used by the menu to generate precision tracking step.
78 for AccelTrackTrigSequence it should just make tracks from pattern available again
79 """
80 ca = ComponentAccumulator()
81
82 match self.flags.Trigger.EFTrackPipeline:
83 case "F100":
84 ca.merge(self.f100_precision())
85 pass
86 case "G200":
87 pass
88
89 #other pipelines can be added here
90
91 case _:
92 pass
93
94 return ca
95
96 def viewDataVerifier(self, viewVerifier='IDViewDataVerifier') -> ComponentAccumulator:
97
98 acc = ComponentAccumulator()
99
100 ViewDataVerifier = CompFactory.AthViews.ViewDataVerifier(
101 name = viewVerifier + "_" + self.signature,
102 DataObjects= {('xAOD::EventInfo', 'StoreGateSvc+EventInfo'),
103 ('PixelRDO_Cache', 'PixRDOCache'),
104 ('SCT_RDO_Cache', 'SctRDOCache'),
105 #enable later when BS ready
106 #( 'IDCInDetBSErrContainer_Cache' , self.flags.Trigger.ITkTracking.PixBSErrCacheKey ),
107 #( 'IDCInDetBSErrContainer_Cache' , self.flags.Trigger.ITkTracking.SCTBSErrCacheKey ),
108 #( 'IDCInDetBSErrContainer_Cache' , self.flags.Trigger.ITkTracking.SCTFlaggedCondCacheKey ),
109 ('xAOD::EventInfo', 'EventInfo'),
110 ('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' ),
111 ('TrigRoiDescriptorCollection', str(self.rois)),
112 ( 'TagInfo' , 'DetectorStore+ProcessingTags' )} )
113
114 if self.flags.Input.isMC:
115 ViewDataVerifier.DataObjects |= {( 'PixelRDO_Container' , 'StoreGateSvc+ITkPixelRDOs' ),
116 ( 'SCT_RDO_Container' , 'StoreGateSvc+ITkStripRDOs' ),
117 ( 'InDetSimDataCollection' , 'ITkPixelSDO_Map'),
118 ('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' )}
119 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
120 sgil_load = [( 'PixelRDO_Container' , 'StoreGateSvc+ITkPixelRDOs' ),
121 ( 'SCT_RDO_Container' , 'StoreGateSvc+ITkStripRDOs' ),
122 ( 'InDetSimDataCollection' , 'ITkPixelSDO_Map'),]
123 acc.merge(SGInputLoaderCfg(self.flags, Load=sgil_load))
124
125 ViewDataVerifier.DataObjects |= {
126 ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkPixelDetectorElementStatus' ),
127 ('InDet::SiDetectorElementStatus' , 'StoreGateSvc+ITkStripDetectorElementStatus' ),
128 }
129
130 acc.addEventAlgo(ViewDataVerifier)
131 return acc
132
ComponentAccumulator sequence(self, str recoType)
__init__(self, AthConfigFlags flags, str signature, str rois, str inView)
ComponentAccumulator viewDataVerifier(self, viewVerifier='IDViewDataVerifier')