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")
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
21 if flags.Overlay.ByteStream:
22 from TRT_RawDataByteStreamCnv.TRT_RawDataByteStreamCnvConfig import TRTRawDataProviderCfg
23 acc.merge(TRTRawDataProviderCfg(flags))
24 else:
25 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
26 acc.merge(SGInputLoaderCfg(flags, [f'TRT_RDO_Container#{kwargs["BkgInputKey"]}']))
27
28 from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
29 acc.merge(TRT_ReadoutGeometryCfg(flags))
30
31
32 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrel", 0.110)
33 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcap", 0.090)
34 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelNoE", 0.060)
35 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapNoE", 0.050)
36 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelAr", 0.100)
37 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapAr", 0.101)
38 kwargs.setdefault("TRT_HT_OccupancyCorrectionBarrelArNoE", 0.088)
39 kwargs.setdefault("TRT_HT_OccupancyCorrectionEndcapArNoE", 0.102)
40
41 from InDetConfig.TRT_ElectronPidToolsConfig import TRT_OverlayLocalOccupancyCfg
42 kwargs.setdefault("TRT_LocalOccupancyTool", acc.popToolsAndMerge(TRT_OverlayLocalOccupancyCfg(flags)))
43
44 from RngComps.RngCompsConfig import AthRNGSvcCfg
45 kwargs.setdefault("RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
46
47
48 acc.addEventAlgo(CompFactory.TRTOverlay(name, **kwargs))
49
50
51 if flags.Output.doWriteRDO:
52 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
53 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
54 "TRT_RDO_Container#TRT_RDOs"
55 ]))
56
57 if not flags.Input.isMC:
58 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
59 "TRT_BSErrContainer#TRT_ByteStreamErrs"
60 ]))
61
62 if flags.Output.doWriteRDO_SGNL:
63 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
64 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
65 f"TRT_RDO_Container#{flags.Overlay.SigPrefix}TRT_RDOs"
66 ]))
67
68
69 if flags.Overlay.doTrackOverlay:
70 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
71 f"TRT_RDO_Container#{flags.Overlay.SigPrefix}TRT_RDOs"
72 ]))
73
74 return acc
75
76