1"""Define ComponentAccumulator functions for configuration of muon data conversions
3Copyright (C) 2002-2026 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 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
29 acc.merge(SGInputLoaderCfg(flags, [f
'MdtCsmContainer#{kwargs["MdtRdoContainer"]}']))
31 kwargs.setdefault(
"MdtRdoContainer",
"MDTCSM")
32 kwargs.setdefault(
"MdtDigitContainer",
"MDT_DIGITS")
34 kwargs.setdefault(
"mdtRdoDecoderTool", acc.popToolsAndMerge(
MdtRDO_DecoderCfg(flags)))
36 acc.addEventAlgo(CompFactory.MdtRdoToMdtDigit(name, **kwargs))
41 """Return ComponentAccumulator with configured RpcRdoToRpcDigit algorithm"""
42 acc = ComponentAccumulator()
44 if flags.Common.isOverlay
or flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
45 kwargs.setdefault(
"RpcRdoContainer", f
"{flags.Overlay.BkgPrefix}RPCPAD")
46 kwargs.setdefault(
"RpcDigitContainer", f
"{flags.Overlay.BkgPrefix}RPC_DIGITS")
47 kwargs.setdefault(
"NRpcRdoContainer", f
"{flags.Overlay.BkgPrefix}NRPCRDO")
49 kwargs.setdefault(
"RpcRdoContainer",
"RPCPAD")
50 kwargs.setdefault(
"RpcDigitContainer",
"RPC_DIGITS")
51 kwargs.setdefault(
"NRpcRdoContainer",
"NRPCRDO")
53 container = [x
for x
in flags.Input.TypedCollections \
54 if x ==
"RpcPadContainer#{cont_name}".format(cont_name=kwargs[
"RpcRdoContainer"])
or \
55 x ==
"xAOD::NRPCRDOContainer#{cont_name}".format(cont_name=kwargs[
"NRpcRdoContainer"])
or \
56 x ==
"xAOD::NRPCRDOAuxContainer#{cont_name}Aux.".format(cont_name=kwargs[
"NRpcRdoContainer"]) ]
58 if flags.Common.isOverlay:
59 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
60 acc.merge(SGInputLoaderCfg(flags, container))
64 kwargs.setdefault(
"DecodeNrpcRDO", len(container) > 1 )
66 kwargs.setdefault(
"DecodeLegacyRDO", len(container) % 2
or \
68 if kwargs[
"DecodeNrpcRDO"]:
69 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
70 acc.merge(NRPCCablingConfigCfg(flags))
71 if kwargs[
"DecodeLegacyRDO"]:
72 from MuonConfig.MuonCablingConfig
import RPCLegacyCablingConfigCfg
73 acc.merge(RPCLegacyCablingConfigCfg(flags))
76 kwargs.setdefault(
"rpcRdoDecoderTool", CompFactory.Muon.RpcRDO_Decoder(
"RpcRDO_Decoder",
77 BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ))
79 acc.addEventAlgo(CompFactory.Muon.RpcRdoToRpcDigit(name, **kwargs))
84 """Return ComponentAccumulator with configured TgcRdoToTgcDigit algorithm"""
85 acc = ComponentAccumulator()
87 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
88 acc.merge(TGCCablingConfigCfg(flags))
90 if flags.Common.isOverlay:
91 kwargs.setdefault(
"TgcRdoContainer", f
"{flags.Overlay.BkgPrefix}TGCRDO")
92 kwargs.setdefault(
"TgcDigitContainer",f
"{flags.Overlay.BkgPrefix}TGC_DIGITS")
94 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
95 acc.merge(SGInputLoaderCfg(flags, [f
'TgcRdoContainer#{kwargs["TgcRdoContainer"]}']))
97 kwargs.setdefault(
"TgcRdoContainer",
"TGCRDO")
98 kwargs.setdefault(
"TgcDigitContainer",
"TGC_DIGITS")
100 acc.addEventAlgo(CompFactory.TgcRdoToTgcDigit(name, **kwargs))
105 """Return ComponentAccumulator with configured STGC_RdoToDigit algorithm"""
106 acc = ComponentAccumulator()
108 if flags.Common.isOverlay:
109 kwargs.setdefault(
"sTgcRdoContainer", f
"{flags.Overlay.BkgPrefix}sTGCRDO")
110 kwargs.setdefault(
"sTgcDigitContainer",f
"{flags.Overlay.BkgPrefix}sTGC_DIGITS")
112 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
113 acc.merge(SGInputLoaderCfg(flags, [f
'Muon::STGC_RawDataContainer#{kwargs["sTgcRdoContainer"]}']))
115 kwargs.setdefault(
"sTgcRdoContainer",
"sTGCRDO")
116 kwargs.setdefault(
"sTgcDigitContainer",
"sTGC_DIGITS")
118 kwargs.setdefault(
"sTgcRdoDecoderTool", acc.popToolsAndMerge(
STgcRdoDecoderCfg(flags)))
120 acc.addEventAlgo(CompFactory.STGC_RdoToDigit(name, **kwargs))
125 """Return ComponentAccumulator with configured MM_RdoToDigit algorithm"""
126 acc = ComponentAccumulator()
128 if flags.Common.isOverlay:
129 kwargs.setdefault(
"MmRdoContainer", f
"{flags.Overlay.BkgPrefix}MMRDO")
130 kwargs.setdefault(
"MmDigitContainer", f
"{flags.Overlay.BkgPrefix}MM_DIGITS")
132 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
133 acc.merge(SGInputLoaderCfg(flags, [f
'Muon::MM_RawDataContainer#{kwargs["MmRdoContainer"]}']))
135 kwargs.setdefault(
"MmRdoContainer",
"MMRDO")
136 kwargs.setdefault(
"MmDigitContainer",
"MM_DIGITS")
138 kwargs.setdefault(
"mmRdoDecoderTool", acc.popToolsAndMerge(
MMRdoDecoderCfg(flags)))
140 acc.addEventAlgo(CompFactory.MM_RdoToDigit(name, **kwargs))
145 """Return ComponentAccumulator with configured MdtDigitToMdtRDO algorithm"""
146 acc = ComponentAccumulator()
147 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
148 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
149 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}MDTCSM")
151 kwargs.setdefault(
"OutputObjectName",
"MDTCSM")
153 acc.addEventAlgo(CompFactory.MdtDigitToMdtRDO(name, **kwargs))
158 """Return ComponentAccumulator with configured RpcDigitToRpcRDO algorithm"""
159 acc = ComponentAccumulator()
160 from MuonConfig.MuonCablingConfig
import RPCCablingConfigCfg
161 acc.merge(RPCCablingConfigCfg(flags))
162 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
164 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
165 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}RPCPAD")
167 kwargs.setdefault(
"OutputObjectName",
"RPCPAD")
169 kwargs.setdefault(
"NOBXS", flags.Trigger.L1MuonSim.RPCNBX)
170 kwargs.setdefault(
"BCZERO", flags.Trigger.L1MuonSim.RPCNBCZ)
172 acc.addEventAlgo(CompFactory.RpcDigitToRpcRDO(name, **kwargs))
177 """Return ComponentAccumulator with configured NrpcDigitToNrpcRDO algorithm"""
178 acc = ComponentAccumulator()
179 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
181 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
182 acc.merge(NRPCCablingConfigCfg(flags))
184 if flags.Muon.usePhaseIIGeoSetup:
185 kwargs.setdefault(
"ConvertHitsFromStations", [])
187 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
188 kwargs.setdefault(
"NrpcRdoKey", f
"{flags.Overlay.BkgPrefix}NRPCRDO")
190 kwargs.setdefault(
"NrpcRdoKey",
"NRPCRDO")
192 acc.addEventAlgo(CompFactory.Muon.NrpcDigitToNrpcRDO(name, **kwargs))
197 """Return ComponentAccumulator with configured TgcDigitToTgcRDO algorithm"""
198 acc = ComponentAccumulator()
199 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
201 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
202 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}TGCRDO")
204 kwargs.setdefault(
"OutputObjectName",
"TGCRDO")
206 acc.addEventAlgo(CompFactory.TgcDigitToTgcRDO(name, **kwargs))
211 """Return ComponentAccumulator with configured CscDigitToCscRDOTool"""
212 acc = ComponentAccumulator()
214 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
215 from MuonConfig.MuonCalibrationConfig
import CscCalibToolCfg
216 kwargs.setdefault(
"cscCalibTool", acc.popToolsAndMerge(CscCalibToolCfg(flags)))
217 kwargs.setdefault(
"NumSamples", 4)
218 kwargs.setdefault(
"Latency", 0)
219 kwargs.setdefault(
"addNoise",
not flags.Common.isOverlay)
221 if flags.Common.isOverlay:
222 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}CSC_DIGITS")
223 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}CSCRDO")
224 elif flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
225 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}CSCRDO")
227 kwargs.setdefault(
"OutputObjectName",
"CSCRDO")
229 from RngComps.RngCompsConfig
import AthRNGSvcCfg
230 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
231 acc.setPrivateTools(CompFactory.CscDigitToCscRDOTool(
"CscDigitToCscRDOTool", **kwargs))
236 """Return ComponentAccumulator with configured CscDigitToCscRDO algorithm"""
238 acc = ComponentAccumulator()
241 if flags.Concurrency.NumThreads > 0:
242 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
244 acc.addEventAlgo(CompFactory.CscDigitToCscRDO(name, **kwargs))
249 """Return ComponentAccumulator with configured STGC_DigitToRDO algorithm"""
250 acc = ComponentAccumulator()
251 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
253 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
254 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}sTGCRDO")
256 kwargs.setdefault(
"OutputObjectName",
"sTGCRDO")
258 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
259 kwargs.setdefault(
"CalibrationTool", acc.popToolsAndMerge(NSWCalibToolCfg(flags)))
261 acc.addEventAlgo(CompFactory.STGC_DigitToRDO(name, **kwargs))
266 """Return ComponentAccumulator with configured MM_DigitToRDO algorithm"""
267 acc = ComponentAccumulator()
268 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
270 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
271 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.BkgPrefix}MMRDO")
273 kwargs.setdefault(
"OutputObjectName",
"MMRDO")
275 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
276 kwargs.setdefault(
"CalibrationTool", acc.popToolsAndMerge(NSWCalibToolCfg(flags)))
278 acc.addEventAlgo(CompFactory.MM_DigitToRDO(name, **kwargs))
283 """Return ComponentAccumulator with configured MdtDigitToMdtRDO algorithm"""
284 acc = ComponentAccumulator()
285 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
286 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}MDT_DIGITS")
287 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}MDTCSM")
288 acc.addEventAlgo(CompFactory.MdtDigitToMdtRDO(name, **kwargs))
293 """Return ComponentAccumulator with configured RpcDigitToRpcRDO algorithm"""
294 acc = ComponentAccumulator()
295 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
296 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}RPC_DIGITS")
297 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}RPCPAD")
298 acc.addEventAlgo(CompFactory.RpcDigitToRpcRDO(name, **kwargs))
303 """Return ComponentAccumulator with configured TgcDigitToTgcRDO algorithm"""
304 acc = ComponentAccumulator()
305 kwargs.setdefault(
"MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
306 kwargs.setdefault(
"InputObjectName", f
"{flags.Overlay.SigPrefix}TGC_DIGITS")
307 kwargs.setdefault(
"OutputObjectName", f
"{flags.Overlay.SigPrefix}TGCRDO")
308 acc.addEventAlgo(CompFactory.TgcDigitToTgcRDO(name, **kwargs))
313 result = ComponentAccumulator()
314 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
315 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
316 result.setPrivateTools(CompFactory.Muon.STGC_RDO_Decoder(name, **kwargs))
321 result = ComponentAccumulator()
322 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
323 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
324 result.setPrivateTools(CompFactory.Muon.MM_RDO_Decoder(name, **kwargs))
329 result = ComponentAccumulator()
330 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
331 result.merge(MDTCablingConfigCfg(flags))
332 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)