ATLAS Offline Software
Loading...
Searching...
No Matches
TrigL2MuonSAConfig.py
Go to the documentation of this file.
2# Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3#
4# This file configs the L2MuonSA reco alg in the newJO way,
5# but now is located here temporarily until newJO migrations are done in all trigger signatures.
6# This should be moved at somewhere in offline.
7
8from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
9from AthenaConfiguration.ComponentFactory import CompFactory
10from AthenaConfiguration.AccumulatorCache import AccumulatorCache
11
12from TrigEDMConfig.TriggerEDM import recordable
13
14# Get Rpc data decoder for MuFast data preparator
16
17 acc = ComponentAccumulator()
18
19 # Set Rpc data preparator for MuFast data preparator
20 from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig import RPCRecRoiToolCfg
21 from RegionSelector.RegSelToolConfig import regSelTool_RPC_Cfg
22
23 recRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags, useRun3Config=flags.Trigger.enableL1MuonPhase1))
24 RpcDataPreparator = CompFactory.getComp("TrigL2MuonSA::RpcDataPreparator")(
25 TrigT1RPCRecRoiTool = recRoiTool,
26 RpcClusterPreparator = CompFactory.getComp("TrigL2MuonSA::RpcClusterPreparator")(
27 TrigT1RPCRecRoiTool = recRoiTool),
28 RegSel_RPC = acc.popToolsAndMerge( regSelTool_RPC_Cfg( flags ) )
29 )
30
31 return acc, RpcDataPreparator
32
33# Get Tgc data decoder for MuFast data preparator
35
36 acc = ComponentAccumulator()
37
38 # Set Tgc data preparator for MuFast data preparator
39 TgcDataPreparator = CompFactory.getComp("TrigL2MuonSA::TgcDataPreparator")()
40
41 return acc, TgcDataPreparator
42
43# Get Mdt data decoder for MuFast data preparator
45
46 acc = ComponentAccumulator()
47
48 # Set Mdt data preparator for MuFast data preparator
49 from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg
50 MdtDataPreparator = CompFactory.getComp("TrigL2MuonSA::MdtDataPreparator")(
51 RegSel_MDT = acc.popToolsAndMerge( regSelTool_MDT_Cfg( flags ) ),
52 isPhase2 = flags.Muon.usePhaseIIGeoSetup
53 )
54 return acc, MdtDataPreparator
55
56# Get Csc data decoder for MuFast data preparator
58
59 acc = ComponentAccumulator()
60
61 # Set Csc data preparator for MuFast data preparator
62 CscDataPreparator = CompFactory.getComp("TrigL2MuonSA::CscDataPreparator")()
63
64 return acc, CscDataPreparator
65
67
68 acc = ComponentAccumulator()
69
70 # Set Stgc data preparator for MuFast data preparator
71 from RegionSelector.RegSelToolConfig import regSelTool_STGC_Cfg
72 StgcDataPreparator = CompFactory.getComp("TrigL2MuonSA::StgcDataPreparator")(
73 RegSel_STGC = acc.popToolsAndMerge( regSelTool_STGC_Cfg( flags ) )
74 )
75 return acc, StgcDataPreparator
76
78
79 acc = ComponentAccumulator()
80
81 # Set Mm data preparator for MuFast data preparator
82 TrigL2MuonSA__MmDataPreparator=CompFactory.getComp("TrigL2MuonSA::MmDataPreparator")
83 MmDataPreparator = TrigL2MuonSA__MmDataPreparator()
84 from RegionSelector.RegSelToolConfig import regSelTool_MM_Cfg
85 MmDataPreparator.RegSel_MM = acc.popToolsAndMerge( regSelTool_MM_Cfg( flags ) )
86
87 return acc, MmDataPreparator
88
89def RpcRoadDefinerCfg( flags ):
90
91 acc = ComponentAccumulator()
92
93 # Set RPC road definer for MuFast data preparator
94 from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg
95 RpcRoadDefiner = CompFactory.getComp("TrigL2MuonSA::RpcRoadDefiner")(
96 RegionSelectionTool = acc.popToolsAndMerge( regSelTool_MDT_Cfg( flags ) )
97 )
98 return acc, RpcRoadDefiner
99
100def TgcRoadDefinerCfg( flags ):
101
102 acc = ComponentAccumulator()
103
104 # Set TGC road definer for MuFast data preparator
105 from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg
106 TgcRoadDefiner = CompFactory.getComp("TrigL2MuonSA::TgcRoadDefiner")(
107 RegionSelectionTool = acc.popToolsAndMerge( regSelTool_MDT_Cfg( flags ) )
108 )
109 return acc, TgcRoadDefiner
110
112
113 acc = ComponentAccumulator()
114
115 from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg
116 ClusterRoadDefiner = CompFactory.getComp("TrigL2MuonSA::ClusterRoadDefiner")(
117 RegionSelectionTool = acc.popToolsAndMerge(regSelTool_MDT_Cfg(flags))
118 )
119 return acc, ClusterRoadDefiner
120
121
122def muFastSteeringCfg( flags, roisKey="", setup="", **kwargs ):
123 from MuonConfig.MuonCalibrationConfig import MdtCalibrationToolCfg
124
125 acc = ComponentAccumulator()
126
127 # Get RPC decoder
128 rpcAcc, RpcDataPreparator = RpcDataPreparatorCfg( flags )
129 acc.merge( rpcAcc )
130
131 # Get TGC decoder
132 tgcAcc, TgcDataPreparator = TgcDataPreparatorCfg( flags )
133 acc.merge( tgcAcc )
134
135 # Get MDT decoder
136 mdtAcc, MdtDataPreparator = MdtDataPreparatorCfg( flags )
137 acc.merge( mdtAcc )
138
139 # Get CSC decoder
140 if flags.Detector.GeometryCSC:
141 cscAcc, CscDataPreparator = CscDataPreparatorCfg( flags )
142 acc.merge( cscAcc )
143 else:
144 CscDataPreparator = ""
145
146 # Get sTGC decoder
147 if flags.Detector.GeometrysTGC:
148 stgcAcc, StgcDataPreparator = StgcDataPreparatorCfg( flags )
149 acc.merge( stgcAcc )
150 else:
151 StgcDataPreparator = ""
152
153 # Get MM decoder
154 if flags.Detector.GeometryMM:
155 mmAcc, MmDataPreparator = MmDataPreparatorCfg( flags )
156 acc.merge( mmAcc )
157 else:
158 MmDataPreparator = ""
159
160 # Get RPC road definer
161 rpcRDAcc, RpcRoadDefiner = RpcRoadDefinerCfg( flags )
162 acc.merge( rpcRDAcc )
163
164 # Get TGC road definer
165 tgcRDAcc, TgcRoadDefiner = TgcRoadDefinerCfg( flags )
166 acc.merge( tgcRDAcc )
167
168 # Get Cluster Road Definer
169 clusRDAcc, ClusterRoadDefiner = ClusterRoadDefinerCfg(flags)
170 acc.merge(clusRDAcc)
171
172 # Set MuFast data preparator
173 TrigL2MuonSA__MuFastDataPreparator=CompFactory.getComp("TrigL2MuonSA::MuFastDataPreparator")
174
175 from TrigT1MuonRecRoiTool.TrigT1MuonRecRoiToolConfig import RPCRecRoiToolCfg
176 MuFastDataPreparator = TrigL2MuonSA__MuFastDataPreparator( CSCDataPreparator = CscDataPreparator,
177 MDTDataPreparator = MdtDataPreparator,
178 RPCDataPreparator = RpcDataPreparator,
179 TGCDataPreparator = TgcDataPreparator,
180 STGCDataPreparator = StgcDataPreparator,
181 MMDataPreparator = MmDataPreparator,
182 RpcRoadDefiner = RpcRoadDefiner,
183 TgcRoadDefiner = TgcRoadDefiner,
184 ClusterRoadDefiner = ClusterRoadDefiner,
185 TrigT1RPCRecRoiTool = acc.popToolsAndMerge(RPCRecRoiToolCfg(flags, useRun3Config=flags.Trigger.enableL1MuonPhase1)) )
186
187 # Setup the station fitter
188 TrigL2MuonSA__MuFastStationFitter,TrigL2MuonSA__PtFromAlphaBeta=CompFactory.getComps("TrigL2MuonSA::MuFastStationFitter","TrigL2MuonSA::PtFromAlphaBeta")
189 PtFromAlphaBeta = TrigL2MuonSA__PtFromAlphaBeta()
190 PtFromAlphaBeta.useCscPt = True
191 PtFromAlphaBeta.AvoidMisalignedCSCs = False
192
193 MuFastStationFitter = TrigL2MuonSA__MuFastStationFitter( PtFromAlphaBeta = PtFromAlphaBeta )
194 TrigL2MuonSA__MuFastPatternFinder,TrigL2MuonSA__MuFastTrackFitter,TrigL2MuonSA__MuFastTrackExtrapolator,TrigL2MuonSA__MuCalStreamerTool,TrigL2MuonSA__CscSegmentMaker=CompFactory.getComps("TrigL2MuonSA::MuFastPatternFinder","TrigL2MuonSA::MuFastTrackFitter","TrigL2MuonSA::MuFastTrackExtrapolator","TrigL2MuonSA::MuCalStreamerTool","TrigL2MuonSA::CscSegmentMaker")
195 MuFastPatternFinder = TrigL2MuonSA__MuFastPatternFinder(CalibrationTool=acc.popToolsAndMerge( MdtCalibrationToolCfg(flags)))
196 MuFastTrackFitter = TrigL2MuonSA__MuFastTrackFitter()
197 MuFastTrackExtrapolator = TrigL2MuonSA__MuFastTrackExtrapolator()
198
199 from RegionSelector.RegSelToolConfig import regSelTool_MDT_Cfg, regSelTool_TGC_Cfg
200 MuCalStreamerTool = TrigL2MuonSA__MuCalStreamerTool(
201 RegSel_MDT = acc.popToolsAndMerge(regSelTool_MDT_Cfg(flags)),
202 RegSel_TGC = acc.popToolsAndMerge(regSelTool_TGC_Cfg(flags)) )
203
204
205 CscSegmentMaker = TrigL2MuonSA__CscSegmentMaker()
206
207 if not flags.Detector.GeometrysTGC and not flags.Detector.GeometryMM:
208 MuFastStationFitter.NswStationFitter=""
209
210 # Set Reco alg of muFast step
211 useNSW = (( not flags.Muon.runCommissioningChain ) and ( not flags.Muon.disableNSWForL2SA ))
212 from TrigL2MuonSA.TrigL2MuonSAMonitoring import TrigL2MuonSAMonitoring
213 from TrkConfig.AtlasExtrapolatorConfig import AtlasExtrapolatorCfg
214 muFastAlg = CompFactory.MuFastSteering(
215 name = "MuFastSteering_Muon"+setup,
216 DataPreparator = MuFastDataPreparator,
217 StationFitter = MuFastStationFitter,
218 PatternFinder = MuFastPatternFinder,
219 TrackFitter = MuFastTrackFitter,
220 TrackExtrapolator = MuFastTrackExtrapolator,
221 FtfRoadDefiner = CompFactory.TrigL2MuonSA.FtfRoadDefiner(
222 IOExtrapolator=acc.popToolsAndMerge(AtlasExtrapolatorCfg(flags))),
223 CalibrationStreamer = MuCalStreamerTool,
224 MuonCalibrationStream = recordable("HLT_MuonCalibrationStream") if setup == "Calib" else "",
225 CscSegmentMaker = CscSegmentMaker,
226 MuRoIs = roisKey,
227 R_WIDTH_TGC_FAILED = 200,
228 R_WIDTH_RPC_FAILED = 400,
229 DoCalibrationStream = False,
230 USE_ROIBASEDACCESS_CSC = True,
231 # NSW on/off
232 USE_STGC = useNSW,
233 USE_MM = useNSW,
234
236 USE_ROIBASEDACCESS_STGC= False,
237 USE_ROIBASEDACCESS_MM = False,
238
239 RpcErrToDebugStream = True,
240 topoRoad = True,
241 dEtasurrRoI = 0.14,
242 dPhisurrRoI = 0.14,
243 MonTool = TrigL2MuonSAMonitoring(flags),
244 UseRun3Config = flags.Trigger.enableL1MuonPhase1,
245 UseEndcapInnerFromBarrel = True,
246 **kwargs )
247
248 # Default backextrapolator is for MC Misaligned Detector
249 TrigMuonBackExtrapolator=CompFactory.TrigMuonBackExtrapolator
250 muFastAlg.BackExtrapolator = TrigMuonBackExtrapolator( name = "MisalignedBackExtrapolator",
251 Aligned = False,
252 DataSet = False )
253
254 if setup == '900GeV':
255 muFastAlg.WinPt = 4.0
256 muFastAlg.Scale_Road_BarrelInner = 3
257 muFastAlg.Scale_Road_BarrelMiddle = 3
258 muFastAlg.Scale_Road_BarrelOuter = 3
259 else:
260 muFastAlg.WinPt = 6.0
261 muFastAlg.Scale_Road_BarrelInner = 1
262 muFastAlg.Scale_Road_BarrelMiddle = 1
263 muFastAlg.Scale_Road_BarrelOuter = 1
264
265 if setup == 'Calib' and not flags.Muon.usePhaseIIGeoSetup:
266 muFastAlg.DoCalibrationStream = True
267 muFastAlg.MuonCalDataScouting = False
268 muFastAlg.MuonCalBufferSize = 1024*1024
269
270 elif setup == 'MuonCalibDataScouting' and not flags.Muon.usePhaseIIGeoSetup:
271 muFastAlg.DoCalibrationStream = True
272 muFastAlg.MuonCalDataScouting = True
273 muFastAlg.MuonCalBufferSize = 1024*1024
274
275 elif setup == 'l2mtmode':
276 muFastAlg.multitrackMode = True
277 muFastAlg.doEndcapForl2mt = False
278
279 elif setup == 'IOmode':
280 # Do not run topo road and inside-out mode at the same time
281 muFastAlg.topoRoad = False
282 muFastAlg.InsideOutMode = True
283
284 return acc, muFastAlg
285
286def PtBarrelLUTSvcCfg( flags ):
287
288 acc = ComponentAccumulator()
289 ptBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc')
290 ptBarrelLUTSvc.LUTfile = "pt_barrel.lut"
291 ptBarrelLUTSvc.SP_LUTfile = "pt_barrelSP_new.lut"
292
293 acc.addService( ptBarrelLUTSvc )
294
295 return acc, ptBarrelLUTSvc
296
298
299 acc = ComponentAccumulator()
300 ptBarrelLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtBarrelLUTSvc")(name = 'PtBarrelLUTSvc_MC')
301 ptBarrelLUTSvc_MC.LUTfile = "pt_barrel.mc10.lut"
302 acc.addService( ptBarrelLUTSvc_MC )
303
304 return acc, ptBarrelLUTSvc_MC
305
306def PtEndcapLUTSvcCfg( flags ):
307
308 acc = ComponentAccumulator()
309 ptEndcapLUTSvc = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc')
310 ptEndcapLUTSvc.FileName = "pt_endcap.lut"
311 ptEndcapLUTSvc.EMeanLUT = "pt_comb_mean.lut"
312 ptEndcapLUTSvc.ESigmaLUT = "pt_comb_sigma.lut"
313 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
314 ptEndcapLUTSvc.UseRun3LUT = True
315 else:
316 ptEndcapLUTSvc.UseRun3LUT = False
317 acc.addService( ptEndcapLUTSvc )
318
319 return acc, ptEndcapLUTSvc
320
322
323 acc = ComponentAccumulator()
324 ptEndcapLUTSvc_MC = CompFactory.getComp("TrigL2MuonSA::PtEndcapLUTSvc")(name = 'PtEndcapLUTSvc_MC')
325 ptEndcapLUTSvc_MC.FileName = "pt_endcap.mc10.lut"
326 ptEndcapLUTSvc_MC.EMeanLUT = "pt_comb_mean.lut"
327 ptEndcapLUTSvc_MC.ESigmaLUT = "pt_comb_sigma.lut"
328 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
329 ptEndcapLUTSvc_MC.UseRun3LUT = True
330 else:
331 ptEndcapLUTSvc_MC.UseRun3LUT = False
332 acc.addService( ptEndcapLUTSvc_MC )
333
334 return acc, ptEndcapLUTSvc_MC
335
336
338
339 acc = ComponentAccumulator()
340 alignmentBarrelLUTSvc = CompFactory.getComp("TrigL2MuonSA::AlignmentBarrelLUTSvc")(name = 'AlignmentBarrelLUTSvc')
341 alignmentBarrelLUTSvc.LUTfile = "dZ_barrel.lut"
342 acc.addService( alignmentBarrelLUTSvc )
343
344 return acc, alignmentBarrelLUTSvc
345
346
347@AccumulatorCache
348def l2MuFastAlgCfg( flags, roisKey, setup="", **kwargs ):
349
350 acc = ComponentAccumulator()
351
352 if not roisKey:
353 from HLTSeeding.HLTSeedingConfig import mapThresholdToL1RoICollection
354 roisKey = mapThresholdToL1RoICollection("MU")
355
356 # Get Reco alg of muFast step
357 muFastAcc, muFastFex = muFastSteeringCfg( flags, roisKey, setup, **kwargs )
358 acc.merge( muFastAcc )
359
360 # Get services of the Reco alg
361 acc.merge( PtBarrelLUTSvcCfg(flags)[0] )
362 acc.merge( PtBarrelLUTSvcCfg_MC(flags)[0] )
363 acc.merge( PtEndcapLUTSvcCfg(flags)[0] )
364 acc.merge( PtEndcapLUTSvcCfg_MC(flags)[0] )
365 acc.merge( AlignmentBarrelLUTSvcCfg(flags)[0] )
366 acc.addEventAlgo(muFastFex)
367
368 return acc
369
370
371
372if __name__ == "__main__":
373 from AthenaConfiguration.TestDefaults import defaultTestFiles, defaultGeometryTags
374 from AthenaConfiguration.AllConfigFlags import initConfigFlags
375 flags = initConfigFlags()
376 flags.Input.Files = defaultTestFiles.RAW_RUN2
377 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
378 flags.lock()
379
380 cfg = l2MuFastAlgCfg(flags, roisKey="MURoIs")
381 cfg.printConfig(withDetails=True, summariseProps=True)
382 cfg.wasMerged()
l2MuFastAlgCfg(flags, roisKey, setup="", **kwargs)
muFastSteeringCfg(flags, roisKey="", setup="", **kwargs)