1 """Define ComponentAccumulator functions for configuration of muon data conversions
3 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import ProductionStep
8 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
9 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
15 kwargs.setdefault(
"MuonIdHelperSvc", acc.getService(
"MuonIdHelperSvc"))
16 acc.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))
21 """Return ComponentAccumulator with configured MdtRdoToMdtDigit algorithm"""
24 if flags.Common.isOverlay:
25 kwargs.setdefault(
"MdtRdoContainer", f
"{flags.Overlay.BkgPrefix}MDTCSM")
26 kwargs.setdefault(
"MdtDigitContainer", f
"{flags.Overlay.BkgPrefix}MDT_DIGITS")
28 if flags.Overlay.ByteStream:
29 from MuonConfig.MuonBytestreamDecodeConfig
import MdtBytestreamDecodeCfg
32 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
33 acc.merge(
SGInputLoaderCfg(flags, [f
'MdtCsmContainer#{kwargs["MdtRdoContainer"]}']))
35 kwargs.setdefault(
"MdtRdoContainer",
"MDTCSM")
36 kwargs.setdefault(
"MdtDigitContainer",
"MDT_DIGITS")
38 kwargs.setdefault(
"mdtRdoDecoderTool", acc.popToolsAndMerge(
MdtRDO_DecoderCfg(flags)))
40 acc.addEventAlgo(CompFactory.MdtRdoToMdtDigit(name, **kwargs))
45 """Return ComponentAccumulator with configured RpcRdoToRpcDigit algorithm"""
48 if flags.Common.isOverlay
or flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
49 kwargs.setdefault(
"RpcRdoContainer", f
"{flags.Overlay.BkgPrefix}RPCPAD")
50 kwargs.setdefault(
"RpcDigitContainer", f
"{flags.Overlay.BkgPrefix}RPC_DIGITS")
51 kwargs.setdefault(
"NRpcRdoContainer", f
"{flags.Overlay.BkgPrefix}NRPCRDO")
53 kwargs.setdefault(
"RpcRdoContainer",
"RPCPAD")
54 kwargs.setdefault(
"RpcDigitContainer",
"RPC_DIGITS")
55 kwargs.setdefault(
"NRpcRdoContainer",
"NRPCRDO")
57 container = [x
for x
in flags.Input.TypedCollections \
58 if x ==
"RpcPadContainer#{cont_name}".
format(cont_name=kwargs[
"RpcRdoContainer"])
or \
59 x ==
"xAOD::NRPCRDOContainer#{cont_name}".
format(cont_name=kwargs[
"NRpcRdoContainer"])
or \
60 x ==
"xAOD::NRPCRDOAuxContainer#{cont_name}Aux.".
format(cont_name=kwargs[
"NRpcRdoContainer"]) ]
62 if flags.Common.isOverlay:
63 if flags.Overlay.ByteStream:
64 from MuonConfig.MuonBytestreamDecodeConfig
import RpcBytestreamDecodeCfg
67 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
72 kwargs.setdefault(
"DecodeNrpcRDO", len(container) > 1 )
74 kwargs.setdefault(
"DecodeLegacyRDO", len(container) % 2
or \
76 if kwargs[
"DecodeNrpcRDO"]:
77 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
79 if kwargs[
"DecodeLegacyRDO"]:
80 from MuonConfig.MuonCablingConfig
import RPCLegacyCablingConfigCfg
84 kwargs.setdefault(
"rpcRdoDecoderTool", CompFactory.Muon.RpcRDO_Decoder(
"RpcRDO_Decoder",
85 BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ))
87 acc.addEventAlgo(CompFactory.Muon.RpcRdoToRpcDigit(name, **kwargs))
92 """Return ComponentAccumulator with configured TgcRdoToTgcDigit algorithm"""
95 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
98 if flags.Common.isOverlay:
99 kwargs.setdefault(
"TgcRdoContainer", f
"{flags.Overlay.BkgPrefix}TGCRDO")
100 kwargs.setdefault(
"TgcDigitContainer",f
"{flags.Overlay.BkgPrefix}TGC_DIGITS")
102 if flags.Overlay.ByteStream:
103 from MuonConfig.MuonBytestreamDecodeConfig
import TgcBytestreamDecodeCfg
106 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
107 acc.merge(
SGInputLoaderCfg(flags, [f
'TgcRdoContainer#{kwargs["TgcRdoContainer"]}']))
109 kwargs.setdefault(
"TgcRdoContainer",
"TGCRDO")
110 kwargs.setdefault(
"TgcDigitContainer",
"TGC_DIGITS")
112 acc.addEventAlgo(CompFactory.TgcRdoToTgcDigit(name, **kwargs))
117 """Return ComponentAccumulator with configured STGC_RdoToDigit algorithm"""
120 if flags.Common.isOverlay:
121 kwargs.setdefault(
"sTgcRdoContainer", f
"{flags.Overlay.BkgPrefix}sTGCRDO")
122 kwargs.setdefault(
"sTgcDigitContainer",f
"{flags.Overlay.BkgPrefix}sTGC_DIGITS")
124 if flags.Overlay.ByteStream:
125 from MuonConfig.MuonBytestreamDecodeConfig
import sTgcBytestreamDecodeCfg
128 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
129 acc.merge(
SGInputLoaderCfg(flags, [f
'Muon::STGC_RawDataContainer#{kwargs["sTgcRdoContainer"]}']))
131 kwargs.setdefault(
"sTgcRdoContainer",
"sTGCRDO")
132 kwargs.setdefault(
"sTgcDigitContainer",
"sTGC_DIGITS")
134 kwargs.setdefault(
"sTgcRdoDecoderTool", acc.popToolsAndMerge(
STgcRdoDecoderCfg(flags)))
136 acc.addEventAlgo(CompFactory.STGC_RdoToDigit(name, **kwargs))
141 """Return ComponentAccumulator with configured MM_RdoToDigit algorithm"""
144 if flags.Common.isOverlay:
145 kwargs.setdefault(
"MmRdoContainer", f
"{flags.Overlay.BkgPrefix}MMRDO")
146 kwargs.setdefault(
"MmDigitContainer", f
"{flags.Overlay.BkgPrefix}MM_DIGITS")
148 if flags.Overlay.ByteStream:
149 from MuonConfig.MuonBytestreamDecodeConfig
import MmBytestreamDecodeCfg
152 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
153 acc.merge(
SGInputLoaderCfg(flags, [f
'Muon::MM_RawDataContainer#{kwargs["MmRdoContainer"]}']))
155 kwargs.setdefault(
"MmRdoContainer",
"MMRDO")
156 kwargs.setdefault(
"MmDigitContainer",
"MM_DIGITS")
158 kwargs.setdefault(
"mmRdoDecoderTool", acc.popToolsAndMerge(
MMRdoDecoderCfg(flags)))
160 acc.addEventAlgo(CompFactory.MM_RdoToDigit(name, **kwargs))
165 """Return ComponentAccumulator with configured MdtDigitToMdtRDO algorithm"""
167 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
168 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
169 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}MDTCSM")
171 kwargs.setdefault(
"OutputObjectName",
"MDTCSM")
173 acc.addEventAlgo(CompFactory.MdtDigitToMdtRDO(name, **kwargs))
178 """Return ComponentAccumulator with configured RpcDigitToRpcRDO algorithm"""
180 from MuonConfig.MuonCablingConfig
import RPCCablingConfigCfg
182 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
184 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
185 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}RPCPAD")
187 kwargs.setdefault(
"OutputObjectName",
"RPCPAD")
189 kwargs.setdefault(
"NOBXS", flags.Trigger.L1MuonSim.RPCNBX)
190 kwargs.setdefault(
"BCZERO", flags.Trigger.L1MuonSim.RPCNBCZ)
192 acc.addEventAlgo(CompFactory.RpcDigitToRpcRDO(name, **kwargs))
197 """Return ComponentAccumulator with configured NrpcDigitToNrpcRDO algorithm"""
199 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
201 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
204 if flags.Muon.usePhaseIIGeoSetup:
205 kwargs.setdefault(
"ConvertHitsFromStations", [])
207 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
208 kwargs.setdefault(
"NrpcRdoKey", f
"{flags.Overlay.BkgPrefix}NRPCRDO")
210 kwargs.setdefault(
"NrpcRdoKey",
"NRPCRDO")
212 acc.addEventAlgo(CompFactory.Muon.NrpcDigitToNrpcRDO(name, **kwargs))
217 """Return ComponentAccumulator with configured TgcDigitToTgcRDO algorithm"""
219 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
221 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
222 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}TGCRDO")
224 kwargs.setdefault(
"OutputObjectName",
"TGCRDO")
226 acc.addEventAlgo(CompFactory.TgcDigitToTgcRDO(name, **kwargs))
231 """Return ComponentAccumulator with configured CscDigitToCscRDOTool"""
234 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
235 from MuonConfig.MuonCalibrationConfig
import CscCalibToolCfg
236 kwargs.setdefault(
"cscCalibTool", acc.popToolsAndMerge(
CscCalibToolCfg(flags)))
237 kwargs.setdefault(
"NumSamples", 4)
238 kwargs.setdefault(
"Latency", 0)
239 kwargs.setdefault(
"addNoise",
not flags.Common.isOverlay)
241 if flags.Common.isOverlay:
242 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}CSC_DIGITS")
243 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}CSCRDO")
244 elif flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
245 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}CSCRDO")
247 kwargs.setdefault(
"OutputObjectName",
"CSCRDO")
249 from RngComps.RngCompsConfig
import AthRNGSvcCfg
250 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
251 acc.setPrivateTools(CompFactory.CscDigitToCscRDOTool(
"CscDigitToCscRDOTool", **kwargs))
256 """Return ComponentAccumulator with configured CscDigitToCscRDO algorithm"""
261 if flags.Concurrency.NumThreads > 0:
262 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
264 acc.addEventAlgo(CompFactory.CscDigitToCscRDO(name, **kwargs))
269 """Return ComponentAccumulator with configured STGC_DigitToRDO algorithm"""
271 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
273 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
274 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}sTGCRDO")
276 kwargs.setdefault(
"OutputObjectName",
"sTGCRDO")
278 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
279 kwargs.setdefault(
"CalibrationTool", acc.popToolsAndMerge(
NSWCalibToolCfg(flags)))
281 acc.addEventAlgo(CompFactory.STGC_DigitToRDO(name, **kwargs))
286 """Return ComponentAccumulator with configured MM_DigitToRDO algorithm"""
288 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
290 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
291 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}MMRDO")
293 kwargs.setdefault(
"OutputObjectName",
"MMRDO")
295 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
296 kwargs.setdefault(
"CalibrationTool", acc.popToolsAndMerge(
NSWCalibToolCfg(flags)))
298 acc.addEventAlgo(CompFactory.MM_DigitToRDO(name, **kwargs))
303 """Return ComponentAccumulator with configured MdtDigitToMdtRDO algorithm"""
305 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
306 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}MDT_DIGITS")
307 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}MDTCSM")
308 acc.addEventAlgo(CompFactory.MdtDigitToMdtRDO(name, **kwargs))
313 """Return ComponentAccumulator with configured RpcDigitToRpcRDO algorithm"""
315 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
316 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}RPC_DIGITS")
317 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}RPCPAD")
318 acc.addEventAlgo(CompFactory.RpcDigitToRpcRDO(name, **kwargs))
323 """Return ComponentAccumulator with configured TgcDigitToTgcRDO algorithm"""
325 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(
MuonIdHelperSvcCfg(flags)))
326 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}TGC_DIGITS")
327 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}TGCRDO")
328 acc.addEventAlgo(CompFactory.TgcDigitToTgcRDO(name, **kwargs))
334 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
335 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(
NSWCalibToolCfg(flags)))
336 result.setPrivateTools(CompFactory.Muon.STGC_RDO_Decoder(name, **kwargs))
342 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
343 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(
NSWCalibToolCfg(flags)))
344 result.setPrivateTools(CompFactory.Muon.MM_RDO_Decoder(name, **kwargs))
350 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
352 result.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))