ATLAS Offline Software
Loading...
Searching...
No Matches
MuonByteStreamCnvTestConfig.py
Go to the documentation of this file.
1"""Define ComponentAccumulator functions for configuration of muon data conversions
2
3Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4"""
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
10
11
12def MdtRDO_DecoderCfg(flags, name="Muon::MdtRDO_Decoder", **kwargs):
13 acc = MuonIdHelperSvcCfg(flags)
14 acc.merge(MDTCablingConfigCfg(flags)) # To provide the Cabling map
15 kwargs.setdefault("MuonIdHelperSvc", acc.getService("MuonIdHelperSvc"))
16 acc.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))
17 return acc
18
19
20def MdtRdoToMdtDigitCfg(flags, name="MdtRdoToMdtDigitAlg", **kwargs):
21 """Return ComponentAccumulator with configured MdtRdoToMdtDigit algorithm"""
22 acc = MuonIdHelperSvcCfg(flags)
23
24 if flags.Common.isOverlay:
25 kwargs.setdefault("MdtRdoContainer", f"{flags.Overlay.BkgPrefix}MDTCSM")
26 kwargs.setdefault("MdtDigitContainer", f"{flags.Overlay.BkgPrefix}MDT_DIGITS")
27
28 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
29 acc.merge(SGInputLoaderCfg(flags, [f'MdtCsmContainer#{kwargs["MdtRdoContainer"]}']))
30 else:
31 kwargs.setdefault("MdtRdoContainer", "MDTCSM")
32 kwargs.setdefault("MdtDigitContainer", "MDT_DIGITS")
33
34 kwargs.setdefault("mdtRdoDecoderTool", acc.popToolsAndMerge(MdtRDO_DecoderCfg(flags)))
35
36 acc.addEventAlgo(CompFactory.MdtRdoToMdtDigit(name, **kwargs))
37 return acc
38
39
40def RpcRdoToRpcDigitCfg(flags, name="RpcRdoToRpcDigitAlg", **kwargs):
41 """Return ComponentAccumulator with configured RpcRdoToRpcDigit algorithm"""
42 acc = ComponentAccumulator()
43
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")
48 else:
49 kwargs.setdefault("RpcRdoContainer", "RPCPAD")
50 kwargs.setdefault("RpcDigitContainer", "RPC_DIGITS")
51 kwargs.setdefault("NRpcRdoContainer", "NRPCRDO")
52
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"]) ]
57
58 if flags.Common.isOverlay:
59 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
60 acc.merge(SGInputLoaderCfg(flags, container))
61
62 # If the length of the list is > 1, then the NRPC container is in the file
63 # and shall be decoded. Same is true if the length is 1 or 3
64 kwargs.setdefault("DecodeNrpcRDO", len(container) > 1 )
65 # If it's data overlay, there's only the legacy container...
66 kwargs.setdefault("DecodeLegacyRDO", len(container) % 2 or \
67 not flags.Input.isMC)
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))
74
75 # Set N BCs and central BC consistently with RPC readout settings
76 kwargs.setdefault("rpcRdoDecoderTool", CompFactory.Muon.RpcRDO_Decoder("RpcRDO_Decoder",
77 BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ))
78
79 acc.addEventAlgo(CompFactory.Muon.RpcRdoToRpcDigit(name, **kwargs))
80 return acc
81
82
83def TgcRdoToTgcDigitCfg(flags, name="TgcRdoToTgcDigitAlg", **kwargs):
84 """Return ComponentAccumulator with configured TgcRdoToTgcDigit algorithm"""
85 acc = ComponentAccumulator()
86
87 from MuonConfig.MuonCablingConfig import TGCCablingConfigCfg
88 acc.merge(TGCCablingConfigCfg(flags))
89
90 if flags.Common.isOverlay:
91 kwargs.setdefault("TgcRdoContainer", f"{flags.Overlay.BkgPrefix}TGCRDO")
92 kwargs.setdefault("TgcDigitContainer",f"{flags.Overlay.BkgPrefix}TGC_DIGITS")
93
94 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
95 acc.merge(SGInputLoaderCfg(flags, [f'TgcRdoContainer#{kwargs["TgcRdoContainer"]}']))
96 else:
97 kwargs.setdefault("TgcRdoContainer", "TGCRDO")
98 kwargs.setdefault("TgcDigitContainer", "TGC_DIGITS")
99
100 acc.addEventAlgo(CompFactory.TgcRdoToTgcDigit(name, **kwargs))
101 return acc
102
103
104def STGC_RdoToDigitCfg(flags, name="STGC_RdoToDigitAlg", **kwargs):
105 """Return ComponentAccumulator with configured STGC_RdoToDigit algorithm"""
106 acc = ComponentAccumulator()
107
108 if flags.Common.isOverlay:
109 kwargs.setdefault("sTgcRdoContainer", f"{flags.Overlay.BkgPrefix}sTGCRDO")
110 kwargs.setdefault("sTgcDigitContainer",f"{flags.Overlay.BkgPrefix}sTGC_DIGITS")
111
112 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
113 acc.merge(SGInputLoaderCfg(flags, [f'Muon::STGC_RawDataContainer#{kwargs["sTgcRdoContainer"]}']))
114 else:
115 kwargs.setdefault("sTgcRdoContainer", "sTGCRDO")
116 kwargs.setdefault("sTgcDigitContainer", "sTGC_DIGITS")
117
118 kwargs.setdefault("sTgcRdoDecoderTool", acc.popToolsAndMerge(STgcRdoDecoderCfg(flags)))
119
120 acc.addEventAlgo(CompFactory.STGC_RdoToDigit(name, **kwargs))
121 return acc
122
123
124def MM_RdoToDigitCfg(flags, name="MM_RdoToDigitAlg", **kwargs):
125 """Return ComponentAccumulator with configured MM_RdoToDigit algorithm"""
126 acc = ComponentAccumulator()
127
128 if flags.Common.isOverlay:
129 kwargs.setdefault("MmRdoContainer", f"{flags.Overlay.BkgPrefix}MMRDO")
130 kwargs.setdefault("MmDigitContainer", f"{flags.Overlay.BkgPrefix}MM_DIGITS")
131
132 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
133 acc.merge(SGInputLoaderCfg(flags, [f'Muon::MM_RawDataContainer#{kwargs["MmRdoContainer"]}']))
134 else:
135 kwargs.setdefault("MmRdoContainer", "MMRDO")
136 kwargs.setdefault("MmDigitContainer", "MM_DIGITS")
137
138 kwargs.setdefault("mmRdoDecoderTool", acc.popToolsAndMerge(MMRdoDecoderCfg(flags)))
139
140 acc.addEventAlgo(CompFactory.MM_RdoToDigit(name, **kwargs))
141 return acc
142
143
144def MdtDigitToMdtRDOCfg(flags, name="MdtDigitToMdtRDO", **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")
150 else:
151 kwargs.setdefault("OutputObjectName", "MDTCSM")
152
153 acc.addEventAlgo(CompFactory.MdtDigitToMdtRDO(name, **kwargs))
154 return acc
155
156
157def RpcDigitToRpcRDOCfg(flags, name="RpcDigitToRpcRDO", **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)))
163
164 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
165 kwargs.setdefault("OutputObjectName", f"{flags.Overlay.BkgPrefix}RPCPAD")
166 else:
167 kwargs.setdefault("OutputObjectName", "RPCPAD")
168
169 kwargs.setdefault("NOBXS", flags.Trigger.L1MuonSim.RPCNBX)
170 kwargs.setdefault("BCZERO", flags.Trigger.L1MuonSim.RPCNBCZ)
171
172 acc.addEventAlgo(CompFactory.RpcDigitToRpcRDO(name, **kwargs))
173 return acc
174
175
176def NrpcDigitToNrpcRDOCfg(flags, name="NrpcDigitToNrpcRDO", **kwargs):
177 """Return ComponentAccumulator with configured NrpcDigitToNrpcRDO algorithm"""
178 acc = ComponentAccumulator()
179 kwargs.setdefault("MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
180
181 from MuonConfig.MuonCablingConfig import NRPCCablingConfigCfg
182 acc.merge(NRPCCablingConfigCfg(flags))
183
184 if flags.Muon.usePhaseIIGeoSetup:
185 kwargs.setdefault("ConvertHitsFromStations", [])
186
187 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
188 kwargs.setdefault("NrpcRdoKey", f"{flags.Overlay.BkgPrefix}NRPCRDO")
189 else:
190 kwargs.setdefault("NrpcRdoKey", "NRPCRDO")
191
192 acc.addEventAlgo(CompFactory.Muon.NrpcDigitToNrpcRDO(name, **kwargs))
193 return acc
194
195
196def TgcDigitToTgcRDOCfg(flags, name="TgcDigitToTgcRDO", **kwargs):
197 """Return ComponentAccumulator with configured TgcDigitToTgcRDO algorithm"""
198 acc = ComponentAccumulator()
199 kwargs.setdefault("MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
200
201 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
202 kwargs.setdefault("OutputObjectName", f"{flags.Overlay.BkgPrefix}TGCRDO")
203 else:
204 kwargs.setdefault("OutputObjectName", "TGCRDO")
205
206 acc.addEventAlgo(CompFactory.TgcDigitToTgcRDO(name, **kwargs))
207 return acc
208
209
210def CscDigitToCscRDOToolCfg(flags, name="CscDigitToCscRDOTool", **kwargs):
211 """Return ComponentAccumulator with configured CscDigitToCscRDOTool"""
212 acc = ComponentAccumulator()
213 # configure basic parameters
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) # doMuonNoise flag not migrated
220
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")
226 else:
227 kwargs.setdefault("OutputObjectName", "CSCRDO")
228
229 from RngComps.RngCompsConfig import AthRNGSvcCfg
230 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
231 acc.setPrivateTools(CompFactory.CscDigitToCscRDOTool("CscDigitToCscRDOTool", **kwargs))
232 return acc
233
234
235def CscDigitToCscRDOCfg(flags, name="CscDigitToCscRDO", **kwargs):
236 """Return ComponentAccumulator with configured CscDigitToCscRDO algorithm"""
237 # for CSC, configuration is in the tool CscDigitToCscRDOTool
238 acc = ComponentAccumulator()
239 kwargs.setdefault("CscDigitToRDOTool", acc.popToolsAndMerge(CscDigitToCscRDOToolCfg(flags)))
240
241 if flags.Concurrency.NumThreads > 0:
242 kwargs.setdefault("Cardinality", flags.Concurrency.NumThreads)
243
244 acc.addEventAlgo(CompFactory.CscDigitToCscRDO(name, **kwargs))
245 return acc
246
247
248def STGC_DigitToRDOCfg(flags, name="STGC_DigitToRDO", **kwargs):
249 """Return ComponentAccumulator with configured STGC_DigitToRDO algorithm"""
250 acc = ComponentAccumulator()
251 kwargs.setdefault("MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
252
253 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
254 kwargs.setdefault("OutputObjectName", f"{flags.Overlay.BkgPrefix}sTGCRDO")
255 else:
256 kwargs.setdefault("OutputObjectName", "sTGCRDO")
257
258 from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg
259 kwargs.setdefault("CalibrationTool", acc.popToolsAndMerge(NSWCalibToolCfg(flags)))
260
261 acc.addEventAlgo(CompFactory.STGC_DigitToRDO(name, **kwargs))
262 return acc
263
264
265def MM_DigitToRDOCfg(flags, name="MM_DigitToRDO", **kwargs):
266 """Return ComponentAccumulator with configured MM_DigitToRDO algorithm"""
267 acc = ComponentAccumulator()
268 kwargs.setdefault("MuonIdHelperSvc", acc.getPrimaryAndMerge(MuonIdHelperSvcCfg(flags)))
269
270 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
271 kwargs.setdefault("OutputObjectName", f"{flags.Overlay.BkgPrefix}MMRDO")
272 else:
273 kwargs.setdefault("OutputObjectName", "MMRDO")
274
275 from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg
276 kwargs.setdefault("CalibrationTool", acc.popToolsAndMerge(NSWCalibToolCfg(flags)))
277
278 acc.addEventAlgo(CompFactory.MM_DigitToRDO(name, **kwargs))
279 return acc
280
281
282def SigMdtDigitToMdtRDOCfg(flags, name="SigMdtDigitToMdtRDO", **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))
289 return acc
290
291
292def SigRpcDigitToRpcRDOCfg(flags, name="SigRpcDigitToRpcRDO", **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))
299 return acc
300
301
302def SigTgcDigitToTgcRDOCfg(flags, name="SigTgcDigitToTgcRDO", **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))
309 return acc
310
311
312def STgcRdoDecoderCfg(flags, name="STGC_RDO_Decoder", **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))
317 return result
318
319
320def MMRdoDecoderCfg(flags, name="MM_RDO_Decoder", **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))
325 return result
326
327
328def MdtRdoDecoderCfg(flags, name="MDT_RDO_Decoder", **kwargs):
329 result = ComponentAccumulator()
330 from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg
331 result.merge(MDTCablingConfigCfg(flags))
332 result.setPrivateTools(CompFactory.Muon.MdtRDO_Decoder(name, **kwargs))
333 return result
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)