ATLAS Offline Software
Loading...
Searching...
No Matches
MM_OverlayConfig.py
Go to the documentation of this file.
2"""Define methods to construct configured MM 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 MM_OverlayAlgCfg(flags, name="MM_Overlay", **kwargs):
12 """Return a ComponentAccumulator for MM_Overlay algorithm"""
13 acc = ComponentAccumulator()
14
15 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}MM_DIGITS")
16 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}MM_DIGITS")
17 kwargs.setdefault("OutputKey", "MM_DIGITS")
18
19 kwargs.setdefault("IntegrationWindow", 30) # in ns
20
21 # Do MM overlay
22 acc.addEventAlgo(CompFactory.MM_Overlay(name, **kwargs))
23
24 # Setup output
25 if flags.Output.doWriteRDO:
26 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
27 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
28 "Muon::MM_RawDataContainer#MMRDO"
29 ]))
30
31 if flags.Output.doWriteRDO_SGNL:
32 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
33 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
34 f"Muon::MM_RawDataContainer#{flags.Overlay.SigPrefix}MMRDO"
35 ]))
36
37 return acc
38
39
40def MM_TruthOverlayCfg(flags, name="MM_TruthOverlay", **kwargs):
41 """Return a ComponentAccumulator for the MM SDO overlay algorithm"""
42 acc = ComponentAccumulator()
43
44 # We do not need background MDT SDOs
45 if not flags.Input.isMC:
46 kwargs.setdefault("BkgInputKey", "")
47 else:
48 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}MM_SDO")
49
50 if kwargs["BkgInputKey"]:
51 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
52 acc.merge(SGInputLoaderCfg(flags, [f'MuonSimDataCollection#{kwargs["BkgInputKey"]}']))
53
54 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}MM_SDO")
55 kwargs.setdefault("OutputKey", "MM_SDO")
56
57 # Do MDT truth overlay
58 acc.addEventAlgo(CompFactory.MuonSimDataOverlay(name, **kwargs))
59
60 # Setup output
61 if flags.Output.doWriteRDO:
62 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
63 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
64 "MuonSimDataCollection#MM_SDO"
65 ]))
66
67 if flags.Output.doWriteRDO_SGNL:
68 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
69 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
70 f"MuonSimDataCollection#{flags.Overlay.SigPrefix}MM_SDO"
71 ]))
72
73 return acc
74
75
76def MM_OverlayCfg(flags):
77 """Configure and return a ComponentAccumulator for MM overlay"""
78 acc = ComponentAccumulator()
79
80 # Add MM RDO to digit config
81 from MuonConfig.MuonByteStreamCnvTestConfig import MM_RdoToDigitCfg
82 acc.merge(MM_RdoToDigitCfg(flags))
83
84 # Add MM overlay digitization algorithm
85 from MuonConfig.MM_DigitizationConfig import MM_OverlayDigitizationBasicCfg
86 acc.merge(MM_OverlayDigitizationBasicCfg(flags))
87
88 # Add MM overlay algorithm
89 acc.merge(MM_OverlayAlgCfg(flags))
90
91 # Add MM truth overlay
92 if flags.Digitization.EnableTruth:
93 if flags.Muon.usePhaseIIGeoSetup:
94 from MuonTruthOverlayR4.TruthOverlayConfig import TruthOverlayCfg
95 acc.merge(TruthOverlayCfg(flags, name="MmTruthOverlay", WriteKey="MM_SDO", deadTime = 300.))
96 else:
97 acc.merge(MM_TruthOverlayCfg(flags))
98
99 # Add MM digit to RDO config
100 from MuonConfig.MuonByteStreamCnvTestConfig import MM_DigitToRDOCfg
101 acc.merge(MM_DigitToRDOCfg(flags))
102
103 return acc
MM_OverlayAlgCfg(flags, name="MM_Overlay", **kwargs)
MM_TruthOverlayCfg(flags, name="MM_TruthOverlay", **kwargs)