ATLAS Offline Software
Loading...
Searching...
No Matches
Lvl1MuonSimulationConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.Enums import Format
6from IOVDbSvc.IOVDbSvcConfig import addFolders
7
8def TMDBConfig(flags):
9 acc = ComponentAccumulator()
10
11 # Read MuRcvRawChCnt from the input file (for POOL directly, for BS via converter)
12 if flags.Input.Format is Format.POOL:
13 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
14 acc.merge(SGInputLoaderCfg(flags, ["TileRawChannelContainer/MuRcvRawChCnt"]))
15 else:
16 from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
17 acc.merge(ByteStreamReadCfg(flags, ["TileRawChannelContainer/MuRcvRawChCnt"]))
18
19 from TileConditions.TileInfoLoaderConfig import TileInfoLoaderCfg
20 acc.merge( TileInfoLoaderCfg(flags) )
21
22 from TileConditions.TileCablingSvcConfig import TileCablingSvcCfg
23 acc.merge(TileCablingSvcCfg(flags))
24
25 from TileConditions.TileEMScaleConfig import TileEMScaleCondAlgCfg
26 acc.merge( TileEMScaleCondAlgCfg(flags) )
27
28 tmdbAlg = CompFactory.TileMuonReceiverDecision('TileMuonReceiverDecision'
29 , TileRawChannelContainer = "MuRcvRawChCnt" # input
30 , TileMuonReceiverContainer = "rerunTileMuRcvCnt" # output
31 , ManualRunPeriod = 2 # forcing Run 2 format (=2) for now, until TGC implements Run 3 format (=3)
32 # run 2 thresholds
33 , MuonReceiverEneThreshCellD6Low = 500
34 , MuonReceiverEneThreshCellD6andD5Low = 500
35 , MuonReceiverEneThreshCellD6High = 600
36 , MuonReceiverEneThreshCellD6andD5High = 600
37 # run 3 thresholds
38 , MuonReceiverEneThreshCellD5 = 500
39 , MuonReceiverEneThreshCellD6 = 500
40 , MuonReceiverEneThreshCellD5andD6 = 500)
41 acc.addEventAlgo(tmdbAlg)
42 return acc
43
45 acc = ComponentAccumulator()
46 if flags.Input.isMC:
47 return acc
48
49 postFix = "_L1MuonSim"
50 from MuonConfig.MuonBytestreamDecodeConfig import MuonCacheNames
51 cacheCreator = CompFactory.MuonCacheCreator(RpcCacheKey = MuonCacheNames.RpcCache,
52 TgcCacheKey = MuonCacheNames.TgcCache,
53 MdtCsmCacheKey = MuonCacheNames.MdtCsmCache,
54 CscCacheKey = (MuonCacheNames.CscCache if flags.Detector.GeometryCSC else ""))
55 acc.addEventAlgo(cacheCreator)
56 # for RPC
57 RPCRodDecoder = CompFactory.Muon.RpcROD_Decoder(name = "RpcROD_Decoder" + postFix, NOBXS=flags.Trigger.L1MuonSim.RPCNBX)
58 MuonRpcRawDataProviderTool = CompFactory.Muon.RPC_RawDataProviderToolMT(name = "RPC_RawDataProviderToolMT" + postFix,
59 RpcContainerCacheKey = MuonCacheNames.RpcCache,
60 WriteOutRpcSectorLogic = False,
61 Decoder = RPCRodDecoder,
62 RdoLocation = "RPCPAD_L1" )
63 RpcRawDataProvider = CompFactory.Muon.RpcRawDataProvider(name = "RpcRawDataProvider" + postFix,
64 ProviderTool = MuonRpcRawDataProviderTool)
65 acc.addEventAlgo(RpcRawDataProvider)
66 # for TGC
67 TGCRodDecoder = CompFactory.Muon.TGC_RodDecoderReadout(name = "TGC_RodDecoderReadout" + postFix)
68 MuonTgcRawDataProviderTool = CompFactory.Muon.TGC_RawDataProviderToolMT(name = "TGC_RawDataProviderToolMT" + postFix,
69 TgcContainerCacheKey = MuonCacheNames.TgcCache,
70 Decoder = TGCRodDecoder,
71 RdoLocation = "TGCRDO_L1")
72 TgcRawDataProvider = CompFactory.Muon.TgcRawDataProvider(name = "TgcRawDataProvider" + postFix,
73 ProviderTool = MuonTgcRawDataProviderTool)
74 acc.addEventAlgo(TgcRawDataProvider)
75 # for sTGC
76 if flags.Detector.GeometrysTGC:
77 Muon__STGC_RawDataProviderToolMT=CompFactory.Muon.STGC_RawDataProviderToolMT
78 from MuonConfig.MuonBytestreamDecodeConfig import sTgcRODDecoderCfg
79 MuonsTgcRawDataProviderTool = Muon__STGC_RawDataProviderToolMT(name = "STGC_RawDataProviderToolMT"+postFix,
80 Decoder = acc.popToolsAndMerge(sTgcRODDecoderCfg(flags,
81 name = "sTgcROD_Decoder"+postFix)),
82 RdoLocation = "sTGCRDO_L1")
83 Muon__sTgcRawDataProvider=CompFactory.Muon.sTgcRawDataProvider
84 sTgcRawDataProvider = Muon__sTgcRawDataProvider(name = "sTgcRawDataProvider"+postFix,
85 ProviderTool = MuonsTgcRawDataProviderTool )
86 acc.addEventAlgo(sTgcRawDataProvider)
87
88 # for MM
89 if flags.Detector.GeometryMM:
90 from MuonConfig.MuonBytestreamDecodeConfig import MmRDODDecoderCfg
91 Muon_MM_RawDataProviderToolMT = CompFactory.Muon.MM_RawDataProviderToolMT
92 MuonMmRawDataProviderTool = Muon_MM_RawDataProviderToolMT(name = "MM_RawDataProviderToolMT"+postFix,
93 Decoder = acc.popToolsAndMerge(MmRDODDecoderCfg(flags,
94 name="MM_RODDecoder"+postFix)),
95 RdoLocation = "MMRDO_L1")
96 Muon__MmRawDataProvider = CompFactory.Muon.MM_RawDataProvider
97 MmRawDataProvider = Muon__MmRawDataProvider(name = "MmRawDataProvider"+postFix, ProviderTool = MuonMmRawDataProviderTool )
98 acc.addEventAlgo(MmRawDataProvider)
99
100 if flags.Trigger.L1MuonSim.EmulateNSW and flags.Trigger.L1MuonSim.NSWVetoMode:
101 # for MDT
102 MDTRodDecoder = CompFactory.MdtROD_Decoder(name = "MdtROD_Decoder" + postFix)
103 MuonMdtRawDataProviderTool = CompFactory.Muon.MDT_RawDataProviderToolMT(name = "MDT_RawDataProviderToolMT" + postFix,
104 CsmContainerCacheKey = MuonCacheNames.MdtCsmCache,
105 Decoder = MDTRodDecoder,
106 RdoLocation = "MDTCSM_L1")
107 MdtRawDataProvider = CompFactory.Muon.MdtRawDataProvider(name = "MdtRawDataProvider" + postFix,
108 ProviderTool = MuonMdtRawDataProviderTool)
109 acc.addEventAlgo(MdtRawDataProvider)
110 # for CSC
111 if flags.Detector.GeometryCSC:
112 CSCRodDecoder = CompFactory.Muon.CscROD_Decoder(name = "CscROD_Decoder" + postFix,
113 IsCosmics = False,
114 IsOldCosmics = False )
115 MuonCscRawDataProviderTool = CompFactory.Muon.CSC_RawDataProviderToolMT(name = "CSC_RawDataProviderToolMT" + postFix,
116 CscContainerCacheKey = MuonCacheNames.CscCache,
117 Decoder = CSCRodDecoder,
118 RdoLocation = "CSCRDO_L1" )
119 CscRawDataProvider = CompFactory.Muon.CscRawDataProvider(name = "CscRawDataProvider" + postFix,
120 ProviderTool = MuonCscRawDataProviderTool)
121 acc.addEventAlgo(CscRawDataProvider)
122
123 return acc
124
126 acc = ComponentAccumulator()
127 if not flags.Trigger.L1MuonSim.EmulateNSW or not flags.Trigger.L1MuonSim.NSWVetoMode:
128 return acc
129 postFix = "_L1MuonSim"
130 suffix = "" if flags.Input.isMC else "_L1"
131 if flags.Input.Format is Format.POOL:
132 rdoInputs = [
133 ('RpcPadContainer','RPCPAD'),
134 ('TgcRdoContainer','TGCRDO'),
135 ('CscRawDataContainer','CSCRDO'),
136 ('MdtCsmContainer','MDTCSM')
137 ]
138 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
139 acc.merge(SGInputLoaderCfg(flags, Load=rdoInputs))
140
141 if flags.Detector.GeometryCSC:
142 from MuonConfig.MuonRdoDecodeConfig import CscRDODecodeCfg
143 acc.merge(CscRDODecodeCfg(flags,name= "CscRdoToCscPrepData" + postFix, RDOContainer = "CSCRDO"+suffix))
144 CscClusterBuilderTool = CompFactory.CscThresholdClusterBuilderTool(name = "CscThresholdClusterBuilderTool" + postFix)
145 CscClusterBuilder = CompFactory.CscThresholdClusterBuilder(name = "CscThresholdClusterBuilder"+postFix,
146 cluster_builder = CscClusterBuilderTool)
147 acc.addEventAlgo(CscClusterBuilder)
148
149 from MuonConfig.MuonRdoDecodeConfig import MdtRDODecodeCfg
150 acc.merge(MdtRDODecodeCfg(flags, name = "MdtRdoToMdtPrepData" + postFix,
151 RDOContainer = "MDTCSM"+suffix ))
152
153 from MuonConfig.MuonRdoDecodeConfig import RpcRDODecodeCfg
154 acc.merge(RpcRDODecodeCfg(flags, name = "RpcRdoToRpcPrepData" + postFix,
155 RDOContainer = "RPCPAD"+suffix))
156
157 from MuonConfig.MuonRdoDecodeConfig import TgcRDODecodeCfg
158 acc.merge(TgcRDODecodeCfg(flags, name = "TgcRdoToPrepData" + postFix,
159 RDOContainer = "TGCRDO"+suffix))
160 return acc
161
163 acc = ComponentAccumulator()
164 if not flags.Trigger.L1MuonSim.EmulateNSW or not flags.Trigger.L1MuonSim.NSWVetoMode:
165 return acc
166 postFix = "_L1MuonSim"
167 theMuonLayerHough = CompFactory.MuonLayerHoughAlg("MuonLayerHoughAlg" + postFix,
168 TgcPrepDataContainer = "TGC_Measurements",
169 RpcPrepDataContainer = "RPC_Measurements",
170 CscPrepDataContainer = ("CSC_Clusters" if flags.Detector.GeometryCSC else ""),
171 MdtPrepDataContainer = "MDT_DriftCircles",
172 sTgcPrepDataContainer = ("STGC_Measurements" if flags.Detector.GeometrysTGC else ""),
173 MMPrepDataContainer = ("MM_Measurements" if flags.Detector.GeometryMM else "") )
174 acc.addEventAlgo(theMuonLayerHough)
175 theSegmentFinderAlg = CompFactory.MuonSegmentFinderAlg("MuonSegmentFinderAlg" + postFix)
176 if not flags.Detector.GeometryCSC:
177 theSegmentFinderAlg.CSC_clusterkey = ""
178 theSegmentFinderAlg.Csc2dSegmentMaker = ""
179 theSegmentFinderAlg.Csc4dSegmentMaker = ""
180 acc.addEventAlgo(theSegmentFinderAlg)
181 xAODMuonSegmentCnv = CompFactory.xAODMaker.MuonSegmentCnvAlg("MuonSegmentCnvAlg" + postFix)
182 acc.addEventAlgo(xAODMuonSegmentCnv)
183 return acc
184
185
186
187def MuonRdoToMuonDigitToolCfg(flags, name="MuonRdoToMuonDigitTool", **kwargs ):
188 result = ComponentAccumulator()
189 kwargs.setdefault("DecodeSTGC_RDO", flags.Detector.GeometrysTGC)
190 kwargs.setdefault("DecodeMM_RDO", flags.Detector.GeometryMM)
191 kwargs.setdefault("DecodeNrpcRDO", flags.Muon.enableNRPC)
192 from MuonConfig.MuonByteStreamCnvTestConfig import STgcRdoDecoderCfg, MMRdoDecoderCfg, MdtRdoDecoderCfg
193 kwargs.setdefault( "stgcRdoDecoderTool", result.popToolsAndMerge(STgcRdoDecoderCfg(flags))
194 if flags.Detector.GeometrysTGC else "" )
195 kwargs.setdefault("mmRdoDecoderTool", result.popToolsAndMerge(MMRdoDecoderCfg(flags))
196 if flags.Detector.GeometryMM else "" )
197 kwargs.setdefault("mdtRdoDecoderTool", result.popToolsAndMerge(MdtRdoDecoderCfg(flags)))
198 #Set N BCs and central BC consistently with RPC readout settings
199 rpcrdo_decode = CompFactory.Muon.RpcRDO_Decoder("RpcRDO_Decoder", BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
200 kwargs.setdefault("rpcRdoDecoderTool", rpcrdo_decode)
201
202 the_tool = CompFactory.MuonRdoToMuonDigitTool (name, **kwargs)
203 result.setPrivateTools(the_tool)
204 return result
205
207 acc = ComponentAccumulator()
208
209 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
210 acc.merge( AtlasFieldCacheCondAlgCfg(flags) )
211 # Read RPCPAD and TGCRDO from the input POOL file (for BS it comes from [Rpc|Tgc]RawDataProvider)
212 suffix = "" if flags.Input.Format is Format.POOL else "_L1"
213 RPCRdoName = "RPCPAD"+suffix
214 TGCRdoName = "TGCRDO"+suffix
215 MMRdoName = "MMRDO"+suffix
216 sTGCRdoName = "sTGCRDO"+suffix
217
218 if flags.Input.Format is Format.POOL:
219 rdoInputs = [('TgcRdoContainer','TGCRDO')]
220
221 if 'RPCPAD' in flags.Input.Collections:
222 rdoInputs += [('RpcPadContainer','RPCPAD')]
223 # Read MMRDO and sTGCRDO
224 if flags.Detector.GeometrysTGC or flags.Detector.GeometryMM:
225 rdoInputs += [
226 ('Muon::MM_RawDataContainer','MMRDO'),
227 ('Muon::STGC_RawDataContainer','sTGCRDO')
228 ]
229 if flags.Muon.enableNRPC and ("NRPCRDO" in flags.Input.Collections):
230 rdoInputs += [
231 ('xAOD::NRPCRDOContainer' , 'NRPCRDO'),
232 ('xAOD::NRPCRDOAuxContainer', 'NRPCRDOAux.')
233 ]
234 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
235 acc.merge(SGInputLoaderCfg(flags, Load=rdoInputs))
236
237 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
238 acc.merge(MuonGeoModelCfg(flags))
239
240 from MuonConfig.MuonByteStreamCnvTestConfig import RpcRdoToRpcDigitCfg, TgcRdoToTgcDigitCfg, STGC_RdoToDigitCfg, MM_RdoToDigitCfg
241
242 acc.merge(RpcRdoToRpcDigitCfg(flags, RpcDigitContainer = "RPC_DIGITS_L1", RpcRdoContainer = RPCRdoName ))
243 acc.merge(TgcRdoToTgcDigitCfg(flags, TgcDigitContainer = "TGC_DIGITS_L1", TgcRdoContainer = TGCRdoName ))
244 if flags.Detector.GeometrysTGC:
245 acc.merge(STGC_RdoToDigitCfg(flags, sTgcRdoContainer = sTGCRdoName, sTgcDigitContainer = "sTGC_DIGITS_L1"))
246 if flags.Detector.GeometryMM:
247 acc.merge(MM_RdoToDigitCfg(flags, MmRdoContainer = MMRdoName, MmDigitContainer = "MM_DIGITS_L1" ))
248
249 return acc
250
252 acc = ComponentAccumulator()
253 if not flags.Detector.GeometrysTGC and not flags.Detector.GeometryMM:
254 return acc
255
256 if flags.Input.Format is Format.POOL and flags.Input.isMC:
257 rdoInputs = [
258 ('McEventCollection','TruthEvent'), # for MM trigger
259 *( [('MuonSimDataCollection','sTGC_SDO')] if not flags.Muon.usePhaseIIGeoSetup else [] ), # for sTGC Pad trigger
260 ('TrackRecordCollection','MuonEntryLayer'), # for MM trigger
261 ]
262 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
263 acc.merge(SGInputLoaderCfg(flags, Load=rdoInputs))
264
265 PadEmulatorTool = CompFactory.NSWL1.PadEmulatorTool("NSWL1__PadEmulatorTool", DoNtuple=flags.Trigger.L1MuonSim.WritesTGCBranches, IsMC = flags.Input.isMC, sTGC_DigitContainerName="sTGC_DIGITS_L1")
266 MMTriggerTool = CompFactory.NSWL1.MMTriggerTool("NSWL1__MMTriggerTool",DoNtuple=flags.Trigger.L1MuonSim.WriteMMBranches, IsMC = flags.Input.isMC, MmDigitContainer="MM_DIGITS_L1")
267 TriggerProcessorTool = CompFactory.NSWL1.TriggerProcessorTool("NSWL1__TriggerProcessorTool")
268
269 # Include NswDcsDb Algorithm for data
270 if not flags.Input.isMC:
271 from MuonConfig.MuonCondAlgConfig import NswDcsDbAlgCfg
272 acc.merge(NswDcsDbAlgCfg(flags))
273
274 nswAlg = CompFactory.NSWL1.NSWL1Simulation("NSWL1Simulation",
275 DoNtuple = flags.Trigger.L1MuonSim.WriteNSWDebugNtuple,
276 DoMM = flags.Trigger.L1MuonSim.doMMTrigger,
277 DoMMDiamonds = flags.Trigger.L1MuonSim.doMMTrigger,
278 DosTGC = flags.Trigger.L1MuonSim.doPadTrigger or flags.Trigger.L1MuonSim.doStripTrigger,
279 DoPad = flags.Trigger.L1MuonSim.doPadTrigger,
280 PadEmulatorTool = PadEmulatorTool,
281 DoStrip = flags.Trigger.L1MuonSim.doStripTrigger,
282 MMTriggerTool = MMTriggerTool,
283 TriggerProcessorTool = TriggerProcessorTool,
284 NSWTrigRDOContainerName = "L1_NSWTrigContainer" )
285 acc.addEventAlgo(nswAlg)
286 return acc
287
289 acc = ComponentAccumulator()
290 rpcAlg = CompFactory.TrigT1RPC("TrigT1RPC",
291 Hardware = True,
292 DataDetail = False,
293 RPCbytestream = False,
294 RPCbytestreamFile = "",
295 RPCDigitContainer = "RPC_DIGITS_L1",
296 useRun3Config = True,
297 NOBXS=flags.Trigger.L1MuonSim.RPCNBX,
298 BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
299 acc.addEventAlgo(rpcAlg)
300 from MuonConfig.MuonCablingConfig import RPCCablingConfigCfg
301 acc.merge( RPCCablingConfigCfg(flags) ) # trigger roads
302 return acc
303
305 acc = ComponentAccumulator()
306 tgcAlg = CompFactory.LVL1TGCTrigger.LVL1TGCTrigger("LVL1TGCTrigger",
307 InputData_perEvent = "TGC_DIGITS_L1",
308 InputRDO = "TGCRDO" if flags.Input.isMC else "TGCRDO_L1",
309 useRun3Config = True,
310 TileMuRcv_Input = "rerunTileMuRcvCnt",
311 TILEMU = True)
312 if (flags.Detector.GeometrysTGC or flags.Detector.GeometryMM):
313 tgcAlg.MaskFileName12 = "TrigT1TGCMaskedChannel.noFI._12.db"
314 tgcAlg.USENSW = True
315 tgcAlg.NSWSideInfo = "AC"
316 tgcAlg.NSWTrigger_Input = "L1_NSWTrigContainer"
317 tgcAlg.FORCENSWCOIN = not flags.Trigger.L1MuonSim.NSWVetoMode
318 tgcAlg.USEBIS78 = flags.Trigger.L1MuonSim.doBIS78
319 else:
320 tgcAlg.MaskFileName12 = "TrigT1TGCMaskedChannel._12.db"
321
322 if flags.Trigger.L1MuonSim.EmulateNSW:
323 tgcAlg.MuctpiPhase1LocationTGC = "L1MuctpiStoreTGCint"
324
325 if flags.Input.Format is Format.BS:
326 from TriggerJobOpts.TriggerByteStreamConfig import ByteStreamReadCfg
327 readBSConfig = ByteStreamReadCfg(flags, ['ByteStreamMetadataContainer/ByteStreamMetadata'])
328 acc.merge(readBSConfig)
329 else:
330 tgcAlg.ByteStreamMetadataRHKey = ''
331 acc.addEventAlgo(tgcAlg)
332
333 from PathResolver import PathResolver
334 bwCW_Run3_filePath=PathResolver.FindCalibFile("TrigT1TGC_CW/BW/CW_BW_Run3.v01.db")
335 acc.merge(addFolders(flags, '<db>sqlite://;schema={0};dbname=OFLP200</db> /TGC/TRIGGER/CW_BW_RUN3'.format(bwCW_Run3_filePath),
336 tag='TgcTriggerCwBwRun3-01',
337 className='CondAttrListCollection'))
338 acc.addCondAlgo(CompFactory.TGCTriggerCondAlg())
339 from MuonConfig.MuonCablingConfig import TGCCablingConfigCfg
340 acc.merge( TGCCablingConfigCfg(flags) )
341 return acc
342
344 acc = ComponentAccumulator()
345 if not flags.Trigger.L1MuonSim.EmulateNSW:
346 return acc
347 recTool = CompFactory.LVL1.TrigT1TGCRecRoiTool("TrigT1TGCRecRoiToolLegacy")
348 recTool.UseRun3Config=False # this is intentional
349 tgcModifier = CompFactory.LVL1TGCTrigger.TGCOutputModifier("TGCOutputModifier",
350 TrigT1TGCRecRoiTool=recTool,
351 InputMuctpiLocation = "L1MuctpiStoreTGCint",
352 OutputMuctpiLocation = "L1MuctpiStoreTGC",
353 EmulateA = True,
354 EmulateC = True,
355 NSWVetoMode = flags.Trigger.L1MuonSim.NSWVetoMode )
356 acc.addEventAlgo(tgcModifier)
357 return acc
358
359def MuctpiConfig(flags):
360 acc = ComponentAccumulator()
361 rpcRecRoiTool = CompFactory.LVL1.TrigT1RPCRecRoiTool("TrigT1RPCRecRoiTool", UseRun3Config=True)
362 tgcRecRoiTool = CompFactory.LVL1.TrigT1TGCRecRoiTool("TrigT1TGCRecRoiTool", UseRun3Config=True)
363 trigThresholdDecTool = CompFactory.LVL1.TrigThresholdDecisionTool(name="TrigThresholdDecisionTool",
364 RPCRecRoiTool = rpcRecRoiTool,
365 TGCRecRoiTool = tgcRecRoiTool)
366 muctpiTool = CompFactory.LVL1MUCTPIPHASE1.MUCTPI_AthTool(name="MUCTPI_AthTool",
367 MuCTPICTPLocation = 'L1MuCTPItoCTPLocation',
368 OverlapStrategyName = flags.Trigger.MUCTPI.OverlapStrategy,
369 LUTXMLFile = flags.Trigger.MUCTPI.LUTXMLFile,
370 BarrelRoIFile = flags.Trigger.MUCTPI.BarrelRoIFile,
371 EndcapForwardRoIFile = flags.Trigger.MUCTPI.EndcapForwardRoIFile,
372 Side0LUTFile = flags.Trigger.MUCTPI.Side0LUTFile,
373 Side1LUTFile = flags.Trigger.MUCTPI.Side1LUTFile,
374 InputSource = 'DIGITIZATION',
375 RPCRecRoiTool = rpcRecRoiTool,
376 TGCRecRoiTool = tgcRecRoiTool,
377 TrigThresholdDecisionTool = trigThresholdDecTool)
378 muctpiAlg = CompFactory.LVL1MUCTPIPHASE1.MUCTPI_AthAlg(name="MUCTPI_AthAlg",
379 MUCTPI_AthTool = muctpiTool)
380 acc.addEventAlgo(muctpiAlg)
381 from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg
382 acc.merge(L1ConfigSvcCfg(flags))
383 return acc
384
385
387 acc = ComponentAccumulator()
388
389 acc.merge(MuonBytestream2RdoConfig(flags)) # data prep for muon bytestream data
390 acc.merge(MuonRdo2DigitConfig(flags)) # input for rpc/tgc trigger simulation
391 acc.merge(RPCTriggerConfig(flags)) # rpc trigger simulation, including bis78 to prepare for bis78-tgc coincidence
392 acc.merge(TMDBConfig(flags)) # for tmdb decision to prepare for tile-muon coincidence
393 acc.merge(NSWTriggerConfig(flags)) # nsw trigger simulation to prepare input for nsw-tgc coincidence
394 acc.merge(TGCTriggerConfig(flags)) # tgc trigger simulation
395 acc.merge(MuonRdo2PrdConfig(flags)) # data prep for nsw-tgc coincidence emulator
396 acc.merge(RecoMuonSegmentSequence(flags)) # segment reco for nsw-tgc coincidence emulator
397 acc.merge(TGCModifierConfig(flags)) # overwrite output from tgc by nsw-tgc coincidence emulator
398 acc.merge(MuctpiConfig(flags)) # muctpi simulation
399
400 return acc
401
402if __name__ == "__main__":
403 import sys
404 from AthenaConfiguration.AllConfigFlags import initConfigFlags
405 flags = initConfigFlags()
406 flags.Input.Files = ['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/TriggerTest/valid1.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.recon.RDO.e8514_e8528_s4159_s4114_r14799_tid34171421_00/RDO.34171421._000011.pool.root.1']
407 flags.Exec.MaxEvents = 5
408 flags.Concurrency.NumThreads = 1
409 flags.Trigger.triggerMenuSetup = 'Dev_pp_run3_v1'
410 flags.fillFromArgs()
411 flags.lock()
412
413 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
414 acc = MainServicesCfg(flags)
415
416 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
417 acc.merge(PoolReadCfg(flags))
418
419 from TrigConfigSvc.TrigConfigSvcCfg import generateL1Menu
420 generateL1Menu(flags)
421
422 acc.merge(Lvl1MuonSimulationCfg(flags))
423
424 acc.printConfig(withDetails=True, summariseProps=True, printDefaults=True)
425 sys.exit(acc.run().isFailure())
static std::string FindCalibFile(const std::string &logical_file_name)
MuonRdoToMuonDigitToolCfg(flags, name="MuonRdoToMuonDigitTool", **kwargs)