ATLAS Offline Software
Loading...
Searching...
No Matches
TRTOverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured TRT overlay algorithms
2
3Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4"""
5
6from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
7from AthenaConfiguration.ComponentFactory import CompFactory
8
9
10def TRTOverlayAlgCfg(flags, name="TRTOverlay", **kwargs):
11 """Return a ComponentAccumulator for TRTOverlay algorithm"""
12 acc = ComponentAccumulator()
13
14 kwargs.setdefault("SortBkgInput", flags.Overlay.DataOverlay)
15 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}TRT_RDOs" if not flags.Overlay.IgnoreBkgInputs else "")
16 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}TRT_RDOs")
17 kwargs.setdefault("SignalInputSDOKey", f"{flags.Overlay.SigPrefix}TRT_SDO_Map")
18 kwargs.setdefault("OutputKey", "TRT_RDOs")
19
20 # Input setup
21 if kwargs["BkgInputKey"]:
22 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
23 acc.merge(SGInputLoaderCfg(flags, [f'TRT_RDO_Container#{kwargs["BkgInputKey"]}']))
24
25 from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
26 acc.merge(TRT_ReadoutGeometryCfg(flags))
27
28 # HT hit correction fraction
29 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrel", 0.110)
30 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcap", 0.090)
31 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelNoE", 0.060)
32 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapNoE", 0.050)
33 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelAr", 0.100)
34 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapAr", 0.101)
35 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelArNoE", 0.088)
36 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapArNoE", 0.102)
37
38 from InDetConfig.TRT_ElectronPidToolsConfig import TRT_OverlayLocalOccupancyCfg
39 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TRT_OverlayLocalOccupancyCfg(flags)))
40
41 from RngComps.RngCompsConfig import AthRNGSvcCfg
42 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
43
44 # Do TRT overlay
45 acc.addEventAlgo(CompFactory.TRTOverlay(name, **kwargs))
46
47 # Setup output
48 if flags.Output.doWriteRDO:
49 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
50 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
51 "TRT_RDO_Container#TRT_RDOs"
52 ]))
53
54 if not flags.Input.isMC:
55 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
56 "TRT_BSErrContainer#TRT_ByteStreamErrs"
57 ]))
58
59 if flags.Output.doWriteRDO_SGNL:
60 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
61 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
62 f"TRT_RDO_Container#{flags.Overlay.SigPrefix}TRT_RDOs"
63 ]))
64
65 return acc
66
67
68def TRTTruthOverlayCfg(flags, name="TRTSDOOverlay", **kwargs):
69 """Return a ComponentAccumulator for the TRT SDO overlay algorithm"""
70 acc = ComponentAccumulator()
71
72 # We do not need background TRT SDOs for data overlay
73 if not flags.Input.isMC:
74 kwargs.setdefault("BkgInputKey", "")
75 else:
76 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}TRT_SDO_Map")
77
78 if kwargs["BkgInputKey"]:
79 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
80 acc.merge(SGInputLoaderCfg(flags, [f'InDetSimDataCollection#{kwargs["BkgInputKey"]}']))
81
82 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}TRT_SDO_Map")
83 kwargs.setdefault("OutputKey", "TRT_SDO_Map")
84
85 # Do TRT truth overlay
86 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
87
88 # Setup output
89 if flags.Output.doWriteRDO:
90 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
91 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
92 "InDetSimDataCollection#TRT_SDO_Map"
93 ]))
94
95 if flags.Output.doWriteRDO_SGNL:
96 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
97 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
98 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}TRT_SDO_Map"
99 ]))
100
101 return acc
102
103
104def TRTOverlayCfg(flags):
105 """Configure and return a ComponentAccumulator for TRT overlay"""
106 acc = ComponentAccumulator()
107
108 # Add TRT overlay digitization algorithm
109 from TRT_Digitization.TRT_DigitizationConfig import TRT_OverlayDigitizationBasicCfg
110 acc.merge(TRT_OverlayDigitizationBasicCfg(flags))
111
112 # Add TRT overlay algorithm
113 acc.merge(TRTOverlayAlgCfg(flags))
114
115 # Add TRT truth overlay
116 if flags.Digitization.EnableTruth:
117 acc.merge(TRTTruthOverlayCfg(flags))
118
119 return acc
TRTOverlayAlgCfg(flags, name="TRTOverlay", **kwargs)
TRTTruthOverlayCfg(flags, name="TRTSDOOverlay", **kwargs)