ATLAS Offline Software
Loading...
Searching...
No Matches
RPC_OverlayConfig.py
Go to the documentation of this file.
2"""Define methods to construct configured RPC overlay algorithms
3
4Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5"""
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9
10
11def RPC_OverlayAlgCfg(flags, name="RpcOverlay", **kwargs):
12 """Return a ComponentAccumulator for RPCOverlay algorithm"""
13 acc = ComponentAccumulator()
14
15 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}RPC_DIGITS")
16 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}RPC_DIGITS")
17 kwargs.setdefault("OutputKey", "RPC_DIGITS")
18
19 # Do RPC overlay
20 acc.addEventAlgo(CompFactory.RpcOverlay(name, **kwargs))
21
22 # Setup output
23 if flags.Output.doWriteRDO:
24 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
25 if not flags.Muon.usePhaseIIGeoSetup:
26 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
27 "RpcPadContainer#RPCPAD"
28 ]))
29 if flags.Muon.enableNRPC:
30 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
31 "xAOD::NRPCRDOContainer#NRPCRDO", "xAOD::NRPCRDOAuxContainer#NRPCRDOAux."
32 ]))
33
34 if flags.Output.doWriteRDO_SGNL:
35 if not flags.Muon.usePhaseIIGeoSetup:
36 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
37 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
38 f"RpcPadContainer#{flags.Overlay.SigPrefix}RPCPAD"
39 ]))
40 if flags.Muon.enableNRPC:
41 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
42 f"xAOD::NRPCRDOContainer#{flags.Overlay.SigPrefix}NRPCRDO", f"xAOD::NRPCRDOAuxContainer#{flags.Overlay.SigPrefix}NRPCRDOAux."
43 ]))
44
45 return acc
46
47
48def RPC_TruthOverlayCfg(flags, name="RpcTruthOverlay", **kwargs):
49 """Return a ComponentAccumulator for the RPC SDO overlay algorithm"""
50 acc = ComponentAccumulator()
51
52 # We do not need background RPC SDOs
53 if not flags.Input.isMC:
54 kwargs.setdefault("BkgInputKey", "")
55 else:
56 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}RPC_SDO")
57
58 if kwargs["BkgInputKey"]:
59 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
60 acc.merge(SGInputLoaderCfg(flags, [f'MuonSimDataCollection#{kwargs["BkgInputKey"]}']))
61
62 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}RPC_SDO")
63 kwargs.setdefault("OutputKey", "RPC_SDO")
64
65 # Do RPC truth overlay
66 acc.addEventAlgo(CompFactory.MuonSimDataOverlay(name, **kwargs))
67
68 # Setup output
69 if flags.Output.doWriteRDO:
70 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
71 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
72 "MuonSimDataCollection#RPC_SDO"
73 ]))
74
75 if flags.Output.doWriteRDO_SGNL:
76 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
77 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
78 f"MuonSimDataCollection#{flags.Overlay.SigPrefix}RPC_SDO"
79 ]))
80
81 return acc
82
83
84def RPC_OverlayCfg(flags):
85 """Configure and return a ComponentAccumulator for RPC overlay"""
86 acc = ComponentAccumulator()
87
88 # Add RPC RDO to digit config
89 from MuonConfig.MuonByteStreamCnvTestConfig import RpcRdoToRpcDigitCfg
90 acc.merge(RpcRdoToRpcDigitCfg(flags))
91
92 # Add RPC overlay digitization algorithm
93 from MuonConfig.RPC_DigitizationConfig import RPC_OverlayDigitizationBasicCfg
94 acc.merge(RPC_OverlayDigitizationBasicCfg(flags))
95
96 # Add RPC overlay algorithm
97 acc.merge(RPC_OverlayAlgCfg(flags))
98
99 # Add RPC truth overlay
100 if flags.Digitization.EnableTruth:
101 if flags.Muon.usePhaseIIGeoSetup:
102 from MuonTruthOverlayR4.TruthOverlayConfig import TruthOverlayCfg
103 acc.merge(TruthOverlayCfg(flags, name="RpcTruthOverlay", WriteKey="RPC_SDO", deadTime = 100.))
104 else:
105 acc.merge(RPC_TruthOverlayCfg(flags))
106
107 # Add RPC digit to RDO config
108 from MuonConfig.MuonByteStreamCnvTestConfig import RpcDigitToRpcRDOCfg
109 acc.merge(RpcDigitToRpcRDOCfg(flags))
110 if flags.Muon.enableNRPC:
111 from MuonConfig.MuonByteStreamCnvTestConfig import NrpcDigitToNrpcRDOCfg
112 acc.merge(NrpcDigitToNrpcRDOCfg(flags))
113
114 return acc
RPC_TruthOverlayCfg(flags, name="RpcTruthOverlay", **kwargs)
RPC_OverlayAlgCfg(flags, name="RpcOverlay", **kwargs)