ATLAS Offline Software
Loading...
Searching...
No Matches
CSC_OverlayConfig.py
Go to the documentation of this file.
2"""Define methods to construct configured CSC overlay algorithms
3
4Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
5"""
6
7from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
8from AthenaConfiguration.ComponentFactory import CompFactory
9
10
11def CSC_OverlayAlgCfg(flags, name="CscOverlay", **kwargs):
12 """Return a ComponentAccumulator for CSCOverlay algorithm"""
13 acc = ComponentAccumulator()
14
15 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}CSCRDO" if not flags.Overlay.IgnoreBkgInputs else "")
16 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}CSCRDO")
17 kwargs.setdefault("OutputKey", "CSCRDO")
18
19 kwargs.setdefault("isDataOverlay", not flags.Input.isMC)
20
21 if kwargs["BkgInputKey"]:
22 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
23 acc.merge(SGInputLoaderCfg(flags, [f'CscRawDataContainer#{kwargs["BkgInputKey"]}']))
24
25 from MuonConfig.MuonCalibrationConfig import CscCalibToolCfg
26 kwargs.setdefault("CalibTool", acc.popToolsAndMerge(CscCalibToolCfg(flags)))
27
28 from MuonConfig.MuonCSC_CnvToolsConfig import MuonCscRDODecoderCfg
29 kwargs.setdefault("CscRdoDecoderTool", acc.popToolsAndMerge(MuonCscRDODecoderCfg(flags)))
30
31 # Do CSC overlay
32 acc.addEventAlgo(CompFactory.CscOverlay(name, **kwargs))
33
34 # Setup output
35 if flags.Output.doWriteRDO:
36 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
37 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
38 "CscRawDataContainer#CSCRDO"
39 ]))
40
41 if flags.Output.doWriteRDO_SGNL:
42 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
43 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
44 f"CscRawDataContainer#{flags.Overlay.SigPrefix}CSCRDO"
45 ]))
46
47 return acc
48
49
50def CSC_TruthOverlayCfg(flags, name="CscTruthOverlay", **kwargs):
51 """Return a ComponentAccumulator for the CSC SDO overlay algorithm"""
52 acc = ComponentAccumulator()
53
54 # We do not need background CSC SDOs
55 if not flags.Input.isMC:
56 kwargs.setdefault("BkgInputKey", "")
57 else:
58 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}CSC_SDO")
59
60 if kwargs["BkgInputKey"]:
61 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
62 acc.merge(SGInputLoaderCfg(flags, [f'CscSimDataCollection#{kwargs["BkgInputKey"]}']))
63
64 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}CSC_SDO")
65 kwargs.setdefault("OutputKey", "CSC_SDO")
66
67 # Do CSC truth overlay
68 acc.addEventAlgo(CompFactory.CscSimDataOverlay(name, **kwargs))
69
70 # Setup output
71 if flags.Output.doWriteRDO:
72 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
73 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
74 "CscSimDataCollection#CSC_SDO"
75 ]))
76
77 if flags.Output.doWriteRDO_SGNL:
78 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
79 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
80 f"CscSimDataCollection#{flags.Overlay.SigPrefix}CSC_SDO"
81 ]))
82
83 return acc
84
85
86def CSC_OverlayCfg(flags):
87 """Configure and return a ComponentAccumulator for CSC overlay"""
88 acc = ComponentAccumulator()
89
90 # Add CSC overlay digitization algorithm
91 from MuonConfig.CSC_DigitizationConfig import CSC_OverlayDigitizationBasicCfg
92 acc.merge(CSC_OverlayDigitizationBasicCfg(flags))
93
94 # Add CSC digit to RDO config
95 from MuonConfig.MuonByteStreamCnvTestConfig import CscDigitToCscRDOCfg
96 acc.merge(CscDigitToCscRDOCfg(flags))
97
98 # Add CSC overlay algorithm
99 acc.merge(CSC_OverlayAlgCfg(flags))
100
101 # Add CSC truth overlay
102 if flags.Digitization.EnableTruth:
103 acc.merge(CSC_TruthOverlayCfg(flags))
104
105 return acc
CSC_OverlayAlgCfg(flags, name="CscOverlay", **kwargs)
CSC_TruthOverlayCfg(flags, name="CscTruthOverlay", **kwargs)