1"""Define ComponentAccumulator functions for configuration of muon data conversions
3Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.Enums
import ProductionStep
8from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
9from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
13 acc = MuonIdHelperSvcCfg(flags)
14 acc.merge(MDTCablingConfigCfg(flags))
15 kwargs.setdefault(
"MuonIdHelperSvc", acc.getService(
"MuonIdHelperSvc"))
16 acc.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))
21 """Return ComponentAccumulator with configured MdtRdoToMdtDigit algorithm"""
22 acc = MuonIdHelperSvcCfg(flags)
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
30 acc.merge(MdtBytestreamDecodeCfg(flags))
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"""
46 acc = ComponentAccumulator()
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
65 acc.merge(RpcBytestreamDecodeCfg(flags))
67 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
68 acc.merge(SGInputLoaderCfg(flags, container))
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
78 acc.merge(NRPCCablingConfigCfg(flags))
79 if kwargs[
"DecodeLegacyRDO"]:
80 from MuonConfig.MuonCablingConfig
import RPCLegacyCablingConfigCfg
81 acc.merge(RPCLegacyCablingConfigCfg(flags))
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"""
93 acc = ComponentAccumulator()
95 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
96 acc.merge(TGCCablingConfigCfg(flags))
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
104 acc.merge(TgcBytestreamDecodeCfg(flags))
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"""
118 acc = ComponentAccumulator()
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
126 acc.merge(sTgcBytestreamDecodeCfg(flags))
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"""
142 acc = ComponentAccumulator()
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
150 acc.merge(MmBytestreamDecodeCfg(flags))
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"""
166 acc = ComponentAccumulator()
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"""
179 acc = ComponentAccumulator()
180 from MuonConfig.MuonCablingConfig
import RPCCablingConfigCfg
181 acc.merge(RPCCablingConfigCfg(flags))
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"""
198 acc = ComponentAccumulator()
199 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
201 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
202 acc.merge(NRPCCablingConfigCfg(flags))
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"""
218 acc = ComponentAccumulator()
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"""
232 acc = ComponentAccumulator()
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)))
251 acc.setPrivateTools(CompFactory.CscDigitToCscRDOTool(
"CscDigitToCscRDOTool", **kwargs))
256 """Return ComponentAccumulator with configured CscDigitToCscRDO algorithm"""
258 acc = ComponentAccumulator()
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"""
270 acc = ComponentAccumulator()
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"""
287 acc = ComponentAccumulator()
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"""
304 acc = ComponentAccumulator()
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"""
314 acc = ComponentAccumulator()
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"""
324 acc = ComponentAccumulator()
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))
333 result = ComponentAccumulator()
334 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
335 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
336 result.setPrivateTools(CompFactory.Muon.STGC_RDO_Decoder(name, **kwargs))
341 result = ComponentAccumulator()
342 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
343 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
344 result.setPrivateTools(CompFactory.Muon.MM_RDO_Decoder(name, **kwargs))
349 result = ComponentAccumulator()
350 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
351 result.merge(MDTCablingConfigCfg(flags))
352 result.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))
CscDigitToCscRDOToolCfg(flags, name="CscDigitToCscRDOTool", **kwargs)
MM_RdoToDigitCfg(flags, name="MM_RdoToDigitAlg", **kwargs)
MdtRdoDecoderCfg(flags, name="MDT_RDO_Decoder", **kwargs)
MdtRDO_DecoderCfg(flags, name="Muon::MdtRDO_Decoder", **kwargs)
MM_DigitToRDOCfg(flags, name="MM_DigitToRDO", **kwargs)
TgcRdoToTgcDigitCfg(flags, name="TgcRdoToTgcDigitAlg", **kwargs)
SigRpcDigitToRpcRDOCfg(flags, name="SigRpcDigitToRpcRDO", **kwargs)
MdtRdoToMdtDigitCfg(flags, name="MdtRdoToMdtDigitAlg", **kwargs)
CscDigitToCscRDOCfg(flags, name="CscDigitToCscRDO", **kwargs)
STGC_RdoToDigitCfg(flags, name="STGC_RdoToDigitAlg", **kwargs)
STgcRdoDecoderCfg(flags, name="STGC_RDO_Decoder", **kwargs)
RpcRdoToRpcDigitCfg(flags, name="RpcRdoToRpcDigitAlg", **kwargs)
SigTgcDigitToTgcRDOCfg(flags, name="SigTgcDigitToTgcRDO", **kwargs)
MdtDigitToMdtRDOCfg(flags, name="MdtDigitToMdtRDO", **kwargs)
MMRdoDecoderCfg(flags, name="MM_RDO_Decoder", **kwargs)
STGC_DigitToRDOCfg(flags, name="STGC_DigitToRDO", **kwargs)
TgcDigitToTgcRDOCfg(flags, name="TgcDigitToTgcRDO", **kwargs)
RpcDigitToRpcRDOCfg(flags, name="RpcDigitToRpcRDO", **kwargs)
NrpcDigitToNrpcRDOCfg(flags, name="NrpcDigitToNrpcRDO", **kwargs)
SigMdtDigitToMdtRDOCfg(flags, name="SigMdtDigitToMdtRDO", **kwargs)