ATLAS Offline Software
Loading...
Searching...
No Matches
ITkPixelOverlayConfig.py
Go to the documentation of this file.
1"""Define methods to construct configured ITk Pixel 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 ITkPixelOverlayAlgCfg(flags, name="ITkPixelOverlay", **kwargs):
11 """Return a ComponentAccumulator for ITk PixelOverlay algorithm"""
12 acc = ComponentAccumulator()
13
14 kwargs.setdefault("BkgInputKey", f"{flags.Overlay.BkgPrefix}ITkPixelRDOs")
15 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}ITkPixelRDOs")
16 kwargs.setdefault("OutputKey", "ITkPixelRDOs")
17
18 # Input setup
19 from SGComps.SGInputLoaderConfig import SGInputLoaderCfg
20 acc.merge(SGInputLoaderCfg(flags, [f'PixelRDO_Container#{kwargs["BkgInputKey"]}']))
21
22 # Do Pixel overlay
23 acc.addEventAlgo(CompFactory.PixelOverlay(name, **kwargs))
24
25 # Setup output
26 if flags.Output.doWriteRDO:
27 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
28 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
29 "PixelRDO_Container#ITkPixelRDOs"
30 ]))
31
32 if not flags.Input.isMC:
33 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
34 "IDCInDetBSErrContainer#ITkPixelByteStreamErrs"
35 ]))
36
37 if flags.Output.doWriteRDO_SGNL:
38 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
39 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
40 f"PixelRDO_Container#{flags.Overlay.SigPrefix}ITkPixelRDOs"
41 ]))
42
43 # for track overlay, write out the signal RDOs because reco tracking will only run on them
44 if flags.Overlay.doTrackOverlay:
45 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
46 f"PixelRDO_Container#{flags.Overlay.SigPrefix}ITkPixelRDOs"
47 ]))
48
49 return acc
50
51
52def ITkPixelTruthOverlayCfg(flags, name="ITkPixelSDOOverlay", **kwargs):
53 """Return a ComponentAccumulator for the ITk Pixel SDO overlay algorithm"""
54 acc = ComponentAccumulator()
55
56 # We do not need background Pixel SDOs
57 kwargs.setdefault("BkgInputKey", "")
58
59 kwargs.setdefault("SignalInputKey", f"{flags.Overlay.SigPrefix}ITkPixelSDO_Map")
60 kwargs.setdefault("OutputKey", "ITkPixelSDO_Map")
61
62 # Do Pixel truth overlay
63 acc.addEventAlgo(CompFactory.InDetSDOOverlay(name, **kwargs))
64
65 # Setup output
66 if flags.Output.doWriteRDO:
67 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
68 acc.merge(OutputStreamCfg(flags, "RDO", ItemList=[
69 "InDetSimDataCollection#ITkPixelSDO_Map"
70 ]))
71
72 if flags.Output.doWriteRDO_SGNL:
73 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
74 acc.merge(OutputStreamCfg(flags, "RDO_SGNL", ItemList=[
75 f"InDetSimDataCollection#{flags.Overlay.SigPrefix}ITkPixelSDO_Map"
76 ]))
77
78 return acc
79
80
82 """Configure and return a ComponentAccumulator for Pixel overlay"""
83 acc = ComponentAccumulator()
84
85 # Add ITk Pixel overlay digitization algorithm
86 from PixelDigitization.ITkPixelDigitizationConfig import ITkPixelOverlayDigitizationBasicCfg
87 acc.merge(ITkPixelOverlayDigitizationBasicCfg(flags))
88
89 # Add ITk Pixel overlay algorithm
90 acc.merge(ITkPixelOverlayAlgCfg(flags))
91
92 # Add ITk Pixel truth overlay
93 if flags.Digitization.EnableTruth:
94 acc.merge(ITkPixelTruthOverlayCfg(flags))
95
96 return acc
ITkPixelTruthOverlayCfg(flags, name="ITkPixelSDOOverlay", **kwargs)
ITkPixelOverlayAlgCfg(flags, name="ITkPixelOverlay", **kwargs)