ATLAS Offline Software
Loading...
Searching...
No Matches
MuonRecoSequences.py
Go to the documentation of this file.
2# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3#
4
5from AthenaCommon.Logging import logging
6log = logging.getLogger(__name__)
7
8
9from TrigEDMConfig.TriggerEDM import recordable
10from MuonConfig.MuonBytestreamDecodeConfig import RpcBytestreamDecodeCfg, NrpcBytestreamDecodeCfg, TgcBytestreamDecodeCfg, MdtBytestreamDecodeCfg, CscBytestreamDecodeCfg, sTgcBytestreamDecodeCfg, MmBytestreamDecodeCfg
11from MuonConfig.MuonRdoDecodeConfig import RpcRDODecodeCfg, TgcRDODecodeCfg, MdtRDODecodeCfg, CscRDODecodeCfg, CscClusterBuildCfg, StgcRDODecodeCfg, MMRDODecodeCfg
12from MuonConfig.MuonRdoDecodeConfig import MuonPrdCacheNames
13from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
14from AthenaConfiguration.ComponentFactory import CompFactory
15from TrigInDetConfig.utils import getFlagsForActiveConfig
16
17from AthenaConfiguration.Enums import BeamType, LHCPeriod
18
19from .TrigMuonKeys import muonNames
20muNames = muonNames().getNames('RoI')
21muNamesFS = muonNames().getNames('FS')
22muNamesLRT = muonNames().getNames('LRT')
23
24def isCosmic(flags):
25 #FIXME: this might not be ideal criteria to determine if this is cosmic chain but used to work in Run2 and will do for now, ATR-22758
26 return (flags.Beam.Type == BeamType.Cosmics)
27
28def isLRT(name):
29 return "LRT" in name
30
31#Returns relevant track collection name
32def getIDTracks(flags, name='', muonIDreuse=False, precision=False, suffix=''):
33
34 if muonIDreuse or suffix != '':
35 if isLRT(name):
36 return 'HLT_IDTrack_MuonComb_FTF_LRT'
37 elif isCosmic(flags):
38 return 'HLT_IDTrack_MuonComb_FTF'
39 else:
40 return 'HLT_IDTrack_MuonComb_FTF'+suffix
41
42 else:
43 if precision:
44 return flags.Tracking.ActiveConfig.tracks_IDTrig
45 else:
46 if isLRT(name):
47 return flags.Trigger.InDetTracking.muonLRT.tracks_FTF
48 elif isCosmic(flags):
49 return flags.Trigger.InDetTracking.cosmics.tracks_IDTrig
50 else:
51 return flags.Trigger.InDetTracking.muon.tracks_FTF
52
53
55 result = ComponentAccumulator()
56
57 # Cache
58 dataObjects=[( 'RpcPrepDataCollection_Cache' , 'StoreGateSvc+RpcPrdCache' ),
59 ( 'TgcRdo_Cache' , 'StoreGateSvc+TgcRdoCache' ),
60 ( 'MdtCsm_Cache' , 'StoreGateSvc+MdtCsmRdoCache' ),
61 ( 'RpcPad_Cache' , 'StoreGateSvc+RpcRdoCache' ),
62 ( 'RpcCoinDataCollection_Cache' , 'StoreGateSvc+RpcCoinCache' ),
63 ( 'TgcPrepDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.TgcCache + 'AllBCs' ),
64 ( 'TgcCoinDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.TgcCoinCache + 'PriorBC' ),
65 ( 'TgcCoinDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.TgcCoinCache + 'NextBC' ),
66 ( 'TgcCoinDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.TgcCoinCache + 'NextNextBC' ),
67 ( 'TgcCoinDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.TgcCoinCache )
68 ]
69
70 if flags.Detector.GeometrysTGC:
71 dataObjects += [( 'sTgcPrepDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.sTgcCache)]
72 if flags.Input.isMC:
73 dataObjects += [( 'Muon::STGC_RawDataContainer' , 'StoreGateSvc+sTGCRDO' )]
74
75 if flags.Detector.GeometryMM:
76 dataObjects += [( 'MMPrepDataCollection_Cache' , 'StoreGateSvc+' + MuonPrdCacheNames.MmCache)]
77 if flags.Input.isMC:
78 dataObjects += [( 'Muon::MM_RawDataContainer' , 'StoreGateSvc+MMRDO' )]
79
80 if flags.Detector.GeometryCSC:
81 dataObjects+=[( 'CscRawDataCollection_Cache' , 'StoreGateSvc+CscRdoCache' )]
82 if flags.Input.isMC:
83 dataObjects += [( 'CscRawDataContainer' , 'StoreGateSvc+CSCRDO' ),
84 ( 'CscRawDataCollection_Cache' , 'StoreGateSvc+CscRdoCache' )]
85
86 if flags.Input.isMC:
87 dataObjects += [( 'MdtCsmContainer' , 'StoreGateSvc+MDTCSM' ),
88 *( [( 'RpcPadContainer' , 'StoreGateSvc+RPCPAD' )] if "RPCPAD" in flags.Input.Collections else [] ),
89 *( [( 'xAOD::NRPCRDOContainer' , 'StoreGateSvc+NRPCRDO' )] if flags.Muon.enableNRPC else [] ),
90 ('TgcRdoContainer' , 'StoreGateSvc+TGCRDO' )]
91
92 if flags.Muon.usePhaseIIGeoSetup:
93 dataObjects += [('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' )]
94
95 alg = CompFactory.AthViews.ViewDataVerifier( name = "VDVMuDataPrep",
96 DataObjects = dataObjects)
97 result.addEventAlgo(alg)
98 return result
99
100
101def muonDecodeCfg(flags, RoIs):
102 acc = ComponentAccumulator()
103
104 doSeededDecoding =True
105 if 'FSRoI' in RoIs:
106 doSeededDecoding = False
107 acc.merge(MuDataPrepViewDataVerifierCfg(flags))
108
109 # Get RPC BS decoder
110 if not flags.Input.isMC:
111 rpcAcc = RpcBytestreamDecodeCfg( flags, name = "RpcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
112 acc.merge( rpcAcc )
113 if flags.Muon.enableNRPC:
114 acc.merge(NrpcBytestreamDecodeCfg( flags, name="NRpcRawDataProvider_"+RoIs ))
115 # Get RPC RDO convertor
116 rpcAcc = RpcRDODecodeCfg( flags, name= "RpcRdoToRpcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
117 acc.merge( rpcAcc )
118 # Get TGC BS decoder
119 if not flags.Input.isMC:
120 tgcAcc = TgcBytestreamDecodeCfg( flags, name="TgcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
121 acc.merge( tgcAcc )
122 # Get TGC RDO convertor
123 tgcAcc = TgcRDODecodeCfg( flags, name="TgcRdoToTgcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
124 acc.merge( tgcAcc )
125 # Get MDT BS decoder
126 if not flags.Input.isMC:
127 mdtAcc = MdtBytestreamDecodeCfg( flags, name="MdtRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
128 acc.merge( mdtAcc )
129 # Get MDT RDO convertor
130 mdtAcc = MdtRDODecodeCfg( flags, name="MdtRdoToMdtPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
131 acc.merge( mdtAcc )
132 # Get CSC BS decoder
133 if flags.Detector.GeometryCSC:
134 if not flags.Input.isMC:
135 cscAcc = CscBytestreamDecodeCfg( flags, name="CscRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
136 acc.merge( cscAcc )
137 # Get CSC RDO convertor
138 cscAcc = CscRDODecodeCfg( flags, name="CscRdoToCscPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
139 acc.merge( cscAcc )
140 # Get CSC cluster builder
141 cscAcc = CscClusterBuildCfg( flags, name="CscThresholdClusterBuilder_"+RoIs )
142 acc.merge( cscAcc )
143 #sTGC and MM BS decoder
144 if flags.Detector.GeometrysTGC and flags.Detector.GeometryMM:
145 if not flags.Input.isMC:
146 stgcAcc = sTgcBytestreamDecodeCfg(flags, name="sTgcRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
147 acc.merge( stgcAcc )
148 mmAcc = MmBytestreamDecodeCfg(flags, name="MMRawDataProvider_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
149 acc.merge( mmAcc )
150 #sTGC and MM RDO converter
151 stgcAcc = StgcRDODecodeCfg( flags, name="StgcRdoToStgcPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding )
152 acc.merge( stgcAcc )
153
154 mmAcc = MMRDODecodeCfg( flags, name="MMRdoToMMPrepData_"+RoIs, RoIs = RoIs, DoSeededDecoding = doSeededDecoding)
155 acc.merge( mmAcc )
156
157 # SpacePoint formation
158 if flags.Muon.usePhaseIIGeoSetup and flags.Muon.scheduleActsReco:
159 from MuonSpacePointFormation.SpacePointFormationConfig import MuonSpacePointFormationCfg
160 acc.merge( MuonSpacePointFormationCfg( flags, suffix =f'_{RoIs}' ) )
161
162 return acc
163
164def muFastVDVCfg(flags, RoIs, suffix, InsideOutMode, extraLoads):
165 result=ComponentAccumulator()
166 # In insideout mode, need to inherit muon decoding objects for TGC, RPC, MDT, CSC
167 dataObjects=[]
168 if InsideOutMode:
169 dataObjects = [('Muon::TgcPrepDataContainer','StoreGateSvc+TGC_MeasurementsAllBCs'),
170 ('TgcRdoContainer' , 'StoreGateSvc+TGCRDO'),
171 ('Muon::RpcPrepDataContainer','StoreGateSvc+RPC_Measurements'),
172 ('Muon::MdtPrepDataContainer','StoreGateSvc+MDT_DriftCircles'),
173 *( [( 'RpcPadContainer' , 'StoreGateSvc+RPCPAD' )] if "RPCPAD" in flags.Input.Collections else [] )]
174 if flags.Detector.GeometryCSC:
175 dataObjects += [('Muon::CscPrepDataContainer','StoreGateSvc+CSC_Clusters')]
176 if flags.Detector.GeometrysTGC:
177 dataObjects += [('Muon::sTgcPrepDataContainer','StoreGateSvc+STGC_Measurements')]
178 if flags.Detector.GeometryMM:
179 dataObjects += [('Muon::MMPrepDataContainer','StoreGateSvc+MM_Measurements')]
180
181 if flags.Muon.usePhaseIIGeoSetup:
182 dataObjects += [('ActsTrk::GeometryContext' , 'StoreGateSvc+ActsAlignment' )]
183
184 else:
185 dataObjects += [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
186 dataObjects += [( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' )]
187 if flags.Trigger.enableL1MuonPhase1:
188 dataObjects += [( 'xAOD::MuonRoIContainer' , 'StoreGateSvc+LVL1MuonRoIs' )]
189 else:
190 dataObjects += [( 'DataVector< LVL1::RecMuonRoI >' , 'StoreGateSvc+HLT_RecMURoIs' )]
191
192 #For L2 multi-track SA mode
193 if extraLoads:
194 dataObjects += extraLoads
195 ViewVerify = CompFactory.AthViews.ViewDataVerifier("muFastRecoVDV"+suffix, DataObjects = dataObjects)
196
197 result.addEventAlgo(ViewVerify)
198 return result
199
200def muFastRecoSequenceCfg( flags, RoIs, suffix="", doFullScanID = False, InsideOutMode=False, extraLoads=None, l2mtmode=False, calib=False, useNewFast=False ):
201
202 acc = ComponentAccumulator()
203
204 if useNewFast:
205 acc.merge(muFastVDVCfg(flags, RoIs=RoIs, suffix=suffix, InsideOutMode=False, extraLoads=None))
206
207 from MuonFastRecoAlgs.MuonFastReconstructionConfig import MuonGlobalPatternFindingAlgCfg, MuonFastSegmentFittingAlgCfg, MuonFastSABuilderAlgCfg
208 acc.merge(MuonGlobalPatternFindingAlgCfg(flags, name=f"MuonGlobalPatternFindingAlg_{suffix}"))
209 acc.merge(MuonFastSegmentFittingAlgCfg(flags, name=f"MuonFastSegmentFittingAlg_{suffix}"))
210 acc.merge(MuonFastSABuilderAlgCfg(flags, name=f"MuonFastSABuilderAlg_{suffix}",
211 OutMuons=muNames.L2SAMuonsPhII))
212 else:
213 suffix = ""
214 if InsideOutMode:
215 suffix="IOmode"
216 elif l2mtmode:
217 suffix="l2mtmode"
218 elif calib:
219 suffix="Calib"
220
221 acc.merge(muFastVDVCfg(flags, RoIs=RoIs, suffix=suffix, InsideOutMode=InsideOutMode, extraLoads=extraLoads))
222
223
224 from TrigL2MuonSA.TrigL2MuonSAConfig import l2MuFastAlgCfg
225 acc.merge(l2MuFastAlgCfg(flags,
226 roisKey = RoIs,
227 setup = suffix,
228 FILL_FSIDRoI = doFullScanID,
229 MuonL2SAInfo = muNames.L2SAMuons+suffix,
230 L2IOCB = muNames.L2CBMuons+suffix,
231 forID = muNames.L2forIDName+suffix,
232 forMS = "forMS"+suffix,
233 TrackParticlesContainerName = getIDTracks(flags)))
234 return acc
235
236def muonIDtrackVDVCfg( flags, name, RoIs, extraLoads=None, extraLoadsForl2mtmode=None ):
237 result=ComponentAccumulator()
238 dataObjects=[( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
239 if extraLoads:
240 dataObjects += extraLoads
241 if extraLoadsForl2mtmode:
242 dataObjects += extraLoadsForl2mtmode
243 ViewVerify = CompFactory.AthViews.ViewDataVerifier("muCombVDV"+name, DataObjects = dataObjects)
244
245 result.addEventAlgo(ViewVerify)
246 return result
247
248def muonIDFastTrackingSequenceCfg( flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None, doLRT=False, trackingMode="FTF" ):
249
250 acc = ComponentAccumulator()
251 from TrigInDetConfig.TrigInDetConfig import trigInDetFastTrackingCfg
252 acc.merge(trigInDetFastTrackingCfg( flags, roisKey=RoIs, signatureName=name, patternMode=trackingMode ))
253
254 acc.merge(muonIDtrackVDVCfg(flags, name, RoIs, extraLoads, extraLoadsForl2mtmode))
255
256 return acc
257
258def muonIDCosmicTrackingSequenceCfg( flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None ):
259
260 acc = ComponentAccumulator()
261
262 acc.merge(muonIDtrackVDVCfg(flags, 'cosmics', RoIs, extraLoads, extraLoadsForl2mtmode))
263
264 flagsWithTrk = getFlagsForActiveConfig(flags, "cosmics", log)
265
266 from TrigInDetConfig.InnerTrackingTrigSequence import InnerTrackingTrigSequence
267 seq = InnerTrackingTrigSequence.create(flagsWithTrk,
268 flagsWithTrk.Tracking.ActiveConfig.input_name,
269 rois = RoIs,
270 inView = "muCombVDVcosmics")
271 acc.merge(seq.sequence("Offline"))
272
273
274 return acc
275
276def muCombVDVCfg( flags, postFix):
277 result=ComponentAccumulator()
278 dataObjects=[('xAOD::L2StandAloneMuonContainer','StoreGateSvc+%s' % muNames.L2SAMuons+postFix)]
279 ViewVerify = CompFactory.AthViews.ViewDataVerifier("muCombAlgVDV"+postFix, DataObjects = dataObjects)
280 result.addEventAlgo(ViewVerify)
281 return result
282
283
284def muCombRecoSequenceCfg( flags, RoIs, name, l2mtmode=False, l2CBname="" ):
285
286 acc = ComponentAccumulator()
287 postFix = ""
288 if l2mtmode:
289 postFix = "l2mtmode"
290
291 acc.merge(muCombVDVCfg(flags, postFix))
292 from TrigmuComb.TrigmuCombConfig import muCombCfg
293 l2trackname = getIDTracks(flags) if l2mtmode else getIDTracks(flags, name)
294 acc.merge(muCombCfg(flags, f'{postFix}_{name}', useBackExtrp=True,
295 L2StandAloneMuonContainerName = muNames.L2SAMuons+postFix,
296 L2CombinedMuonContainerName = l2CBname, TrackParticleContainerName = l2trackname ))
297
298 return acc
299
300def EFMuSADataPrepViewDataVerifierCfg(flags, RoIs, suffix=""):
301 result=ComponentAccumulator()
302 dataObjects=[( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
303 ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs )]
304
305 if flags.Muon.usePhaseIIGeoSetup:
306 dataObjects += [( 'ActsGeometryContext' , 'StoreGateSvc+ActsAlignment' )]
307
308 if flags.Muon.setupTruthAlgorithms:
309 dataObjects += [( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+MDT_SDO' ),
310 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+MM_SDO' ),
311 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+RPC_SDO' ),
312 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+TGC_SDO' ),
313 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+sTGC_SDO' ),
314 ( 'McEventCollection' , 'StoreGateSvc+TruthEvent' ),
315 # Truth muons containers and decorations
316 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles' ),
317 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles.truthClassification' ),
318 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles.truthOrigin' ),
319 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles.truthParticleLink' ),
320 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles.truthType' ),
321 # Truth segments and SDO-to-segment links
322 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments' ),
323 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments.charge' ),
324 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments.localSegPars' ),
325 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments.pt' ),
326 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments.simHitLinks' ),
327 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+MDT_SDO.truthSegmentLink' ),
328 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+MM_SDO.truthSegmentLink' ),
329 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+RPC_SDO.truthSegmentLink' ),
330 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+TGC_SDO.truthSegmentLink' ),
331 ( 'xAOD::MuonSimHitContainer' , 'StoreGateSvc+sTGC_SDO.truthSegmentLink' ),
332 # Truth segment to truth particle links
333 ( 'xAOD::MuonSegmentContainer' , 'StoreGateSvc+MuonTruthSegments.truthParticleLink' ),
334 ( 'xAOD::TruthParticleContainer' , 'StoreGateSvc+MuonTruthParticles.truthSegmentLinks' )]
335
336 alg = CompFactory.AthViews.ViewDataVerifier( name = f"VDVMuEFSA_{suffix}",
337 DataObjects = dataObjects)
338 result.addEventAlgo(alg)
339 return result
340
341
342def muEFSARecoSequenceCfg(flags, RoIs, suffix="", useBucketFilter=False):
343
344 acc = ComponentAccumulator()
345
346 acc.merge(EFMuSADataPrepViewDataVerifierCfg(flags, RoIs=RoIs, suffix=suffix))
347
348 nameGroups = muNamesFS if 'FS' in suffix else muNames
349
350 msMuonName = nameGroups.EFSAMuons
351 if flags.Muon.usePhaseIIGeoSetup and flags.Muon.scheduleActsReco:
352
353 if "newFast" in suffix:
354 msMuonName = nameGroups.EFSAMuonsPhIINewFast
355 msTrackName = nameGroups.EFSATrackParticlesPhIINewFast
356 elif useBucketFilter:
357 msMuonName = nameGroups.EFSAMuonsPhIIMlbkt
358 msTrackName = nameGroups.EFSATrackParticlesPhIIMlbkt
359 else:
360 msTrackName = nameGroups.EFSATrackParticlesPhII
361
362 # Schedule reco-to-truth object association
363 if flags.Muon.setupTruthAlgorithms:
364 from MuonObjectMarker.ObjectMarkerConfig import TruthMeasMarkerAlgCfg
365 acc.merge(TruthMeasMarkerAlgCfg(flags, name = f"TruthMeasMarkerAlg{suffix}"))
366 from MuonTruthAlgsR4.MuonTruthAlgsConfig import TruthHitAssociationCfg, RecoSegmentTruthAssocCfg, MuonToTruthAssocAlgCfg
367 acc.merge(TruthHitAssociationCfg(flags, useSDO=True, suffix=suffix))
368 acc.merge(RecoSegmentTruthAssocCfg(flags, name=f"MuonSegmentsFromR4TruthMatching{suffix}",
369 SegmentKey="MuonSegmentsFromR4"))
370 acc.merge(MuonToTruthAssocAlgCfg(flags, name=f'MuonToTruthMatchingAlg{suffix}'))
371
372 # ML bucket filter
373 if useBucketFilter:
374 from MuonInference.InferenceConfig import GraphBucketFilterToolCfg, GraphInferenceAlgCfg
375 bucketTool = acc.popToolsAndMerge(GraphBucketFilterToolCfg(flags, name=f"GraphBucketFilterTool{suffix}",
376 WriteSpacePointKey="FilteredMlBuckets"))
377 acc.merge(GraphInferenceAlgCfg(flags, name = f"GraphInferenceAlg{suffix}",
378 InferenceTools=[bucketTool]))
379
380 # Pattern recognition & segment fitting
381 from MuonPatternRecognitionAlgs.MuonPatternRecognitionConfig import MuonEtaHoughTransformAlgCfg, MuonNSWSegmentFinderAlgCfg, MuonPhiHoughTransformAlgCfg, MuonSegmentFittingAlgCfg
382 segmentContainers = []
383 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
384 segmentContainers+=["MuonNswSegments"]
385 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name=f"MuonNswEtaHoughTransformAlg{suffix}",
386 EtaHoughMaxContainer = "MuonHoughNswMaxima",
387 SpacePointContainer = "NswSpacePoints"))
388 acc.merge(MuonNSWSegmentFinderAlgCfg(flags, name=f"MuonNswSegmentFinderAlg{suffix}",
389 MuonNswSegmentWriteKey = segmentContainers[-1],
390 MuonNswSegmentSeedWriteKey = "MuonNswSegmentSeeds",
391 CombinatorialReadKey = "MuonHoughNswMaxima"))
392
393 if flags.Detector.GeometryMDT or flags.Detector.GeometryRPC or flags.Detector.GeometryTGC:
394 if useBucketFilter:
395 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}",
396 SpacePointContainer = "FilteredMlBuckets"))
397 else:
398 acc.merge(MuonEtaHoughTransformAlgCfg(flags, name = f"MuonEtaHoughTransformAlg{suffix}"))
399
400 acc.merge(MuonPhiHoughTransformAlgCfg(flags, name = f"MuonPhiHoughTransformAlg{suffix}"))
401
402 segmentContainers+=["R4MuonSegments"]
403 acc.merge(MuonSegmentFittingAlgCfg(flags, name = f"MuonSegmentFittingAlg{suffix}",
404 OutSegmentContainer=segmentContainers[-1]))
405
406 from MuonSegmentCnv.MuonSegmentCnvConfig import xAODSegmentCnvAlgCfg
407 acc.merge(xAODSegmentCnvAlgCfg(flags, name = f"MuonR4xAODSegmentCnvAlg{suffix}",
408 InSegmentKeys = segmentContainers))
409
410 from MuonSegmentCnv.MuonSegmentCnvConfig import MuonR4SegmentCnvAlgCfg
411 acc.merge(MuonR4SegmentCnvAlgCfg(flags, name=f"MuonR4SegmentCnvAlg{suffix}",
412 ReadSegments = segmentContainers,
413 WriteKey="TrackMuonSegments"))
414
415 # Track building
416 from MuonTrackFindingAlgs.TrackFindingConfig import MSTrackFinderAlgCfg, StandaloneTrackPartCnvCfg, MuidSaTagMakerAlgCfg, MuonCreatorAlgCfg
417 acc.merge(MSTrackFinderAlgCfg(flags, name=f"MSTrackFinderAlg{suffix}"))
418 acc.merge(StandaloneTrackPartCnvCfg(flags, name=f"MuonMsTrackParticleCnvR4{suffix}",
419 TrackParticlesOutKey = msTrackName))
420 acc.merge(MuidSaTagMakerAlgCfg(flags, name=f"MuidSaTagMakerAlg{suffix}",
421 MsTracks = msTrackName))
422 acc.merge(MuonCreatorAlgCfg(flags, name = f"MuonActsCreatorAlg{suffix}",
423 TagKeys = ["MuonTagsSA"],
424 MuonKey = msMuonName))
425 # This alg needs to be removed once the Phase-2 combined steps is ready
426 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg
427 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name=f"MuonCombinedMuonCandidateAlg{suffix}",
428 MuonSpectrometerTrackParticleLocation = msTrackName))
429 else:
430
431 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
432 acc.merge(MuonLayerHoughAlgCfg(flags, f"TrigMuonLayerHoughAlg{suffix}"))
433 acc.merge(MuonSegmentFinderAlgCfg(flags, f"TrigMuonSegmentMaker{suffix}"))
434
435 from MuonSegmentTrackMaker.MuonTrackMakerAlgsMonitoring import MuPatTrackBuilderMonitoring
436 from MuonConfig.MuonTrackBuildingConfig import MuPatTrackBuilderCfg
437 from xAODTrackingCnv.xAODTrackingCnvConfig import MuonStandaloneTrackParticleCnvAlgCfg
438 acc.merge(MuPatTrackBuilderCfg(flags, name=f"TrigMuPatTrackBuilder{suffix}",
439 MuonSegmentCollection = "TrackMuonSegments",
440 MonTool = MuPatTrackBuilderMonitoring(flags, f"MuPatTrackBuilderMonitoringSA{suffix}")))
441
442 acc.merge(MuonStandaloneTrackParticleCnvAlgCfg(flags, name = f"TrigMuonStandaloneTrackParticleCnvAlg{suffix}"))
443 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCombinedMuonCandidateAlgCfg, MuonCreatorAlgCfg
444 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring import MuonCreatorAlgMonitoring
445 acc.merge(MuonCombinedMuonCandidateAlgCfg(flags, name=f"TrigMuonCandidateAlg{suffix}"))
446 acc.merge(MuonCreatorAlgCfg(flags, name=f"TrigMuonCreatorAlg_{suffix}",
447 CreateSAmuons=True,
448 TagMaps=[],
449 MuonContainerLocation=msMuonName,
450 ExtrapolatedLocation = f"HLT_MSExtrapolatedMuons_{suffix}",
451 MSOnlyExtrapolatedLocation = f"HLT_MSOnlyExtrapolatedMuons_{suffix}",
452 MonTool = MuonCreatorAlgMonitoring(flags, f"MuonCreatorAlgSA_{suffix}")))
453
454 sequenceOut = msMuonName
455
456 return acc, sequenceOut
457
458
459
460def VDVEFMuCBCfg(flags, RoIs, name, suffix):
461 acc = ComponentAccumulator()
462 dataObjects = [( 'Muon::MdtPrepDataContainer' , 'StoreGateSvc+MDT_DriftCircles' ),
463 ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_MeasurementsAllBCs' ),
464 ( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ),
465 ( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+%s' % RoIs ),
466 ( 'xAOD::EventInfo' , 'StoreGateSvc+EventInfo' ),
467 ]
468 if "FS" in name:
469 dataObjects +=[( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates_FS' )]
470 else:
471 dataObjects +=[( 'MuonCandidateCollection' , 'StoreGateSvc+MuonCandidates')]
472
473 if flags.Detector.GeometryCSC:
474 dataObjects += [( 'Muon::CscStripPrepDataContainer' , 'StoreGateSvc+CSC_Measurements' )]
475 if flags.Detector.GeometrysTGC and flags.Detector.GeometryMM:
476 dataObjects += [( 'Muon::MMPrepDataContainer' , 'StoreGateSvc+MM_Measurements'),
477 ( 'Muon::sTgcPrepDataContainer' , 'StoreGateSvc+STGC_Measurements') ]
478 if flags.Muon.usePhaseIIGeoSetup:
479 dataObjects += [( 'MuonR4::SpacePointContainer' , 'StoreGateSvc+MuonSpacePoints' )]
480 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
481 dataObjects += [( 'MuonR4::SpacePointContainer' , 'StoreGateSvc+NswSpacePoints' )]
482
483 alg = CompFactory.AthViews.ViewDataVerifier( name = "VDVMuEFCB_"+name+suffix,
484 DataObjects = dataObjects)
485 acc.addEventAlgo(alg)
486 return acc
487
488
489
490def VDVPrecMuTrkCfg(flags, name, suffix):
491 acc = ComponentAccumulator()
492
493 vdvName = "VDVMuTrkLRT" if "LRT" in name else "VDVMuTrk"
494 trkname = "LRT" if "LRT" in name else ''
495 dataObjects = [( 'xAOD::IParticleContainer' , 'StoreGateSvc+'+ getIDTracks(flags, trkname) )]
496
497 if not flags.Muon.enableTrigIDtrackReuse and suffix == '':
498 dataObjects += [( 'xAOD::TrackParticleContainer' , 'StoreGateSvc+'+getIDTracks(flags, trkname, muonIDreuse=flags.Muon.enableTrigIDtrackReuse) )]
499 else:
500 if suffix != 'idReuse':
501 MuonL2CBContainer = muNames.L2CBMuons+suffix
502 else:
503 MuonL2CBContainer = muNames.L2CBMuons
504 dataObjects += [( 'xAOD::L2CombinedMuonContainer', 'StoreGateSvc+'+MuonL2CBContainer)]
505
506 if not flags.Input.isMC:
507 dataObjects += [( 'IDCInDetBSErrContainer' , 'StoreGateSvc+PixelByteStreamErrs' ),
508 ( 'IDCInDetBSErrContainer' , 'StoreGateSvc+SCT_ByteStreamErrs' )]
509
510 alg = CompFactory.AthViews.ViewDataVerifier( name = vdvName+suffix,
511 DataObjects = dataObjects)
512 acc.addEventAlgo(alg)
513 return acc
514
515
516def VDVidReuseITkCfg(flags, suffix):
517 acc = ComponentAccumulator()
518
519 vdvName = "VDVidReuseITk"
520 dataObjects = []
521
522 from TrigInDetConfig.TrigInDetConfig import InDetExtraDataObjectsFromDataPrep
523 InDetExtraDataObjectsFromDataPrep(flags, dataObjects)
524
525 alg = CompFactory.AthViews.ViewDataVerifier( name = vdvName+suffix,
526 DataObjects = dataObjects)
527 acc.addEventAlgo(alg)
528 return acc
529
530
531def muEFCBRecoSequenceCfg( flags, RoIs, name, suffix ):
532
533
534 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring import MuonCreatorAlgMonitoring
535 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg, MuonCombinedAlgCfg, MuonCombinedInDetCandidateAlgCfg
536 acc = ComponentAccumulator()
537
538 acc.merge(VDVEFMuCBCfg(flags, RoIs, name, suffix))
539
540 if "FS" in name:
541 #Need to run tracking for full scan chains
542 from TrigInDetConfig.TrigInDetConfig import trigInDetFastTrackingCfg
543 acc.merge(trigInDetFastTrackingCfg( flags, roisKey=RoIs, signatureName="muonFS" ))
544
545 else:
546 acc.merge(VDVPrecMuTrkCfg(flags, name, suffix))
547
548
549 #Precision Tracking
550 from TrigInDetConfig.TrigInDetConfig import trigInDetPrecisionTrackingCfg
551 #When run in a different view than FTF some data dependencies needs to be loaded through verifier
552 #Pass verifier as an argument and it will automatically append necessary DataObjects
553 #@NOTE: Don't provide any verifier if loaded in the same view as FTF
554 if isCosmic(flags) and 'LRT' not in name:
555 trackParticles=getIDTracks(flags, name, muonIDreuse=flags.Muon.enableTrigIDtrackReuse)
556 elif 'LRT' in name:
557 muLrtFlags = getFlagsForActiveConfig(flags, "muonLRT", log)
558 acc.merge(trigInDetPrecisionTrackingCfg(muLrtFlags, rois= RoIs, signatureName="muonLRT"))
559 trackParticles = getIDTracks(muLrtFlags, name, precision=True)
560 elif 'FS' in name:
561 muFsFlags = getFlagsForActiveConfig(flags, "muonFS", log)
562 acc.merge(trigInDetPrecisionTrackingCfg(muFsFlags, rois= RoIs, signatureName="muonFS", in_view=False))
563 trackParticles = getIDTracks(muFsFlags, precision=True)
564 else:
565 muFlags = getFlagsForActiveConfig(flags, "muon", log)
566 if not flags.Muon.enableTrigIDtrackReuse and suffix == '':
567 acc.merge(trigInDetPrecisionTrackingCfg(muFlags, rois= RoIs, signatureName="muon"))
568 trackParticles=getIDTracks(muFlags, name, muonIDreuse=flags.Muon.enableTrigIDtrackReuse, precision=True, suffix=suffix)
569
570 if flags.Muon.enableTrigIDtrackReuse or suffix != '':
571 if 'LRT' not in name or 'FS' not in name:
572 if flags.GeoModel.Run > LHCPeriod.Run3:
573 acc.merge(VDVidReuseITkCfg(flags, suffix))
574 if suffix != 'idReuse':
575 MuonL2CBInputContainer = muNames.L2CBMuons+suffix
576 else:
577 MuonL2CBInputContainer = muNames.L2CBMuons
578 from TrigMuonEF.TrigMuonEFConfig import GetL2CBmuonInDetTracksAlgCfg
579 acc.merge(GetL2CBmuonInDetTracksAlgCfg(flags, name="GetL2CBInDetTracks"+suffix,
580 MuonL2CBContainerLocation=MuonL2CBInputContainer,
581 IDtrackOutputLocation="HLT_IDTrack_MuonComb_FTF"+suffix))
582
583 #Make InDetCandidates
584 acc.merge(MuonCombinedInDetCandidateAlgCfg(flags, name="TrigMuonCombinedInDetCandidateAlg_"+name+suffix,TrackParticleLocation = [trackParticles], InDetCandidateLocation="InDetCandidates_"+name+suffix))
585
586
587 #MS ID combination
588 candidatesName = "MuonCandidates"
589 if 'FS' in name:
590 candidatesName = "MuonCandidates_FS"
591
592 acc.merge(MuonCombinedAlgCfg(flags,name="TrigMuonCombinedAlg_"+name+suffix, MuonCandidateLocation=candidatesName, InDetCandidateLocation="InDetCandidates_"+name+suffix))
593
594 if 'FS' in name:
595 cbMuonName = muNamesFS.EFCBOutInMuons
596 elif 'LRT' in name:
597 cbMuonName = muNamesLRT.EFCBMuons
598 else:
599 cbMuonName = muNames.EFCBOutInMuons
600
601
602 acc.merge(MuonCreatorAlgCfg(flags, name="TrigMuonCreatorAlgCB_"+name+suffix, MuonCandidateLocation=[candidatesName], TagMaps=["muidcoTagMap"], InDetCandidateLocation="InDetCandidates_"+name+suffix,
603 MuonContainerLocation = cbMuonName+suffix, ExtrapolatedLocation = "CBExtrapolatedMuons"+suffix,
604 MSOnlyExtrapolatedLocation = "CBMSonlyExtrapolatedMuons"+suffix, CombinedLocation = "HLT_CBCombinedMuon_"+name+suffix,
605 MonTool = MuonCreatorAlgMonitoring(flags, "MuonCreatorAlgCB_"+name+suffix)))
606
607
608
609 return acc
610
611
612def VDVMuInsideOutCfg(flags, name, candidatesName, suffix):
613 acc = ComponentAccumulator()
614 dataObjects = [( 'Muon::RpcPrepDataContainer' , 'StoreGateSvc+RPC_Measurements' ),
615 ( 'Muon::TgcPrepDataContainer' , 'StoreGateSvc+TGC_MeasurementsAllBCs' ),
616 ( 'MuonCandidateCollection' , 'StoreGateSvc+'+candidatesName ),
617 ('Trk::SegmentCollection' , 'StoreGateSvc+TrackMuonSegments')]
618 if not isCosmic(flags): dataObjects += [( 'Muon::HoughDataPerSectorVec' , 'StoreGateSvc+HoughDataPerSectorVec')]
619 if flags.Detector.GeometryCSC:
620 dataObjects += [( 'Muon::CscPrepDataContainer' , 'StoreGateSvc+CSC_Clusters' )]
621 if flags.Detector.GeometrysTGC and flags.Detector.GeometryMM:
622 dataObjects += [( 'Muon::MMPrepDataContainer' , 'StoreGateSvc+MM_Measurements'),
623 ( 'Muon::sTgcPrepDataContainer' , 'StoreGateSvc+STGC_Measurements') ]
624
625 alg = CompFactory.AthViews.ViewDataVerifier( name = "VDVMuInsideOut_"+name+suffix,
626 DataObjects = dataObjects)
627 acc.addEventAlgo(alg)
628 return acc
629
630
631def muEFInsideOutRecoSequenceCfg(flags, RoIs, name, suffix ):
632
633 from MuonConfig.MuonSegmentFindingConfig import MuonSegmentFinderAlgCfg, MuonLayerHoughAlgCfg
634 from MuonCombinedAlgs.MuonCombinedAlgsMonitoring import MuonCreatorAlgMonitoring
635 from MuonCombinedConfig.MuonCombinedReconstructionConfig import MuonCreatorAlgCfg, MuGirlStauAlgCfg, StauCreatorAlgCfg, MuonInDetToMuonSystemExtensionAlgCfg, MuonInsideOutRecoAlgCfg, MuonCombinedInDetCandidateAlgCfg
636 from MuonCombinedConfig.MuonCombinedRecToolsConfig import MuonInsideOutRecoToolCfg
637
638 acc = ComponentAccumulator()
639
640 candidatesName = "MuonCandidates"
641 if 'FS' in name:
642 candidatesName = "MuonCandidates_FS"
643
644 if "Late" in name:
645
646 #Need to run hough transform at start of late muon chain
647 acc.merge(MuonLayerHoughAlgCfg(flags, "TrigMuonLayerHoughAlg_"+name,MuonPatternCombinationCollection="MuonLayerHoughCombis_"+name,
648 Key_MuonLayerHoughToolHoughDataPerSectorVec="HoughDataPerSectorVec_"+name))
649
650 acc.merge(MuonSegmentFinderAlgCfg(flags, "TrigMuonSegmentMaker_"+name,MuonLayerHoughCombisKey="MuonLayerHoughCombis_"+name))
651
652
653 # need to run precisions tracking for late muons, since we don't run it anywhere else
654 from TrigInDetConfig.TrigInDetConfig import trigInDetPrecisionTrackingCfg
655 muLateFlags = getFlagsForActiveConfig(flags, "muonLate", log)
656 acc.merge(trigInDetPrecisionTrackingCfg(muLateFlags, rois= RoIs, signatureName="muonLate", in_view=False))
657 trackParticles = muLateFlags.Tracking.ActiveConfig.tracks_IDTrig
658
659 #Make InDetCandidates
660 acc.merge(MuonCombinedInDetCandidateAlgCfg(flags, name="TrigMuonCombinedInDetCandidateAlg_"+name,TrackParticleLocation=[trackParticles],ForwardParticleLocation=trackParticles,InDetCandidateLocation="InDetCandidates_"+name,ExtendBulk=True))
661
662 else:
663 # for non-latemu chains, the decoding/hough transform is run in an earlier step
664 #Need PRD containers for inside-out reco
665 acc.merge(VDVMuInsideOutCfg(flags, name, candidatesName, suffix))
666
667 #Inside-out reconstruction
668
669 cbMuonName = muNames.EFCBInOutMuons+suffix
670 if 'Late' in name:
671 cbMuonName = recordable(cbMuonName+"_Late")
672 acc.merge(MuGirlStauAlgCfg(flags, name="TrigMuonLateInsideOutRecoAlg_"+name,InDetCandidateLocation="InDetCandidates_"+name))
673 acc.merge(StauCreatorAlgCfg(flags, name="TrigLateMuonCreatorAlg_"+name, TagMaps=["stauTagMap"], SegmentContainerName="", InDetCandidateLocation="InDetCandidates_"+name,
674 MuonContainerLocation=cbMuonName, MonTool=MuonCreatorAlgMonitoring(flags, "LateMuonCreatorAlg_"+name)))
675 else:
676 acc.merge(MuonInDetToMuonSystemExtensionAlgCfg(flags, name="TrigInDetMuonExtensionAlg_"+name+suffix, InputInDetCandidates="InDetCandidates_"+name+suffix,
677 WriteInDetCandidates="InDetCandidatesSystemExtended_"+name+suffix))
678 if 'RoI' in name:
679 ioTool = MuonInsideOutRecoToolCfg(flags, MuonLayerSegmentFinderTool="", InputSegments="TrackMuonSegments")
680 else:
681 ioTool = MuonInsideOutRecoToolCfg(flags)
682 InsideOutRecoTool = acc.popToolsAndMerge(ioTool)
683
684 acc.merge(MuonInsideOutRecoAlgCfg(flags, name="TrigMuonInsideOutRecoAlg_"+name+suffix,InDetCandidateLocation="InDetCandidatesSystemExtended_"+name+suffix, MuonCombinedInDetExtensionTool=InsideOutRecoTool))
685
686 acc.merge(MuonCreatorAlgCfg(flags, name="TrigMuonCreatorAlgInsideOut_"+name+suffix, MuonCandidateLocation=[candidatesName], TagMaps=["muGirlTagMap"],InDetCandidateLocation="InDetCandidates_"+name+suffix,
687 MuonContainerLocation = cbMuonName, ExtrapolatedLocation = "InsideOutCBExtrapolatedMuons"+suffix,
688 MSOnlyExtrapolatedLocation = "InsideOutCBMSOnlyExtrapolatedMuons"+suffix, CombinedLocation = "InsideOutCBCombinedMuon"+suffix, MonTool = MuonCreatorAlgMonitoring(flags, "MuonCreatorAlgInsideOut_"+name+suffix)))
689
690 return acc
691
692
693def VDVMuIsoCfg(flags, name, RoIs):
694 acc = ComponentAccumulator()
695 dataObjects = [( 'TrigRoiDescriptorCollection' , 'StoreGateSvc+'+RoIs ),
696 ( 'xAOD::MuonContainer' , 'StoreGateSvc+IsoViewMuons'+name )]
697
698 alg = CompFactory.AthViews.ViewDataVerifier( name = "efMuIsoVDV"+name,
699 DataObjects = dataObjects)
700 acc.addEventAlgo(alg)
701 return acc
702
703
704def efmuisoRecoSequenceCfg( flags, RoIs, Muons, doMSiso=False ):
705
706 name = ""
707 if doMSiso:
708 name = "MS"
709 acc = VDVMuIsoCfg(flags, name, RoIs)
710
711 acc.merge(muonIDFastTrackingSequenceCfg(flags, RoIs, "muonIso"+name ))
712
713 from TrigInDetConfig.TrigInDetConfig import trigInDetPrecisionTrackingCfg
714 muIsoFlags = getFlagsForActiveConfig(flags, "muonIso"+name, log)
715 acc.merge(trigInDetPrecisionTrackingCfg(muIsoFlags, rois= RoIs, signatureName="muonIso"+name, in_view=False))
716 trackParticles = muIsoFlags.Tracking.ActiveConfig.tracks_IDTrig
717
718 # Isolation alg
719 from TrigMuonEF.TrigMuonEFConfig import TrigMuonEFTrackIsolationAlgCfg
720 acc.merge(TrigMuonEFTrackIsolationAlgCfg(flags,name="TrigEFMuIso"+name, requireCombinedMuon = not doMSiso,
721 MuonEFContainer = Muons,IdTrackParticles = trackParticles, MuonContName = muNames.EFIsoMuons+name,
722 ptcone02Name = muNames.EFIsoMuons+name + ".ptcone02",
723 ptcone03Name = muNames.EFIsoMuons+name + ".ptcone03"))
724
725 return acc
726
727def VDVLateMuCfg(flags):
728 acc = ComponentAccumulator()
729 dataObjects = [( 'xAOD::MuonRoIContainer', 'StoreGateSvc+LVL1MuonRoIsBCm2' ),
730 ( 'xAOD::MuonRoIContainer', 'StoreGateSvc+LVL1MuonRoIsBCm1' ),
731 ( 'xAOD::MuonRoIContainer', 'StoreGateSvc+LVL1MuonRoIsBCp1' ),
732 ( 'xAOD::MuonRoIContainer', 'StoreGateSvc+LVL1MuonRoIsBCp2' )]
733
734 alg = CompFactory.AthViews.ViewDataVerifier( name = "efLateMuRoIVDV",
735 DataObjects = dataObjects)
736 acc.addEventAlgo(alg)
737 return acc
738
739
741
742 acc = VDVLateMuCfg(flags)
743
744 from TrigmuRoI.TrigmuRoIConfig import TrigmuRoIConfig
745 sequenceOut = "LateMuRoIs"
746 acc.merge(TrigmuRoIConfig(flags, "TrigmuRoI", outputRoIs=sequenceOut))
747
748 return acc, sequenceOut
muCombRecoSequenceCfg(flags, RoIs, name, l2mtmode=False, l2CBname="")
muEFCBRecoSequenceCfg(flags, RoIs, name, suffix)
muonIDtrackVDVCfg(flags, name, RoIs, extraLoads=None, extraLoadsForl2mtmode=None)
VDVMuInsideOutCfg(flags, name, candidatesName, suffix)
muonIDFastTrackingSequenceCfg(flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None, doLRT=False, trackingMode="FTF")
muFastVDVCfg(flags, RoIs, suffix, InsideOutMode, extraLoads)
EFMuSADataPrepViewDataVerifierCfg(flags, RoIs, suffix="")
VDVEFMuCBCfg(flags, RoIs, name, suffix)
muEFSARecoSequenceCfg(flags, RoIs, suffix="", useBucketFilter=False)
muonIDCosmicTrackingSequenceCfg(flags, RoIs, name, extraLoads=None, extraLoadsForl2mtmode=None)
muEFInsideOutRecoSequenceCfg(flags, RoIs, name, suffix)
efmuisoRecoSequenceCfg(flags, RoIs, Muons, doMSiso=False)
getIDTracks(flags, name='', muonIDreuse=False, precision=False, suffix='')
muFastRecoSequenceCfg(flags, RoIs, suffix="", doFullScanID=False, InsideOutMode=False, extraLoads=None, l2mtmode=False, calib=False, useNewFast=False)