9def egammaOutputCfg(flags, name="EGOutputList"):
10
11 acc = ComponentAccumulator()
12 outFlags = flags.Egamma.Keys.Output
13
14 toESD = []
15 toAOD = []
16
17 if flags.Egamma.doCentral:
18 toESD += [
19 f"xAOD::ElectronContainer#{outFlags.Electrons}",
20 f"xAOD::ElectronAuxContainer#{outFlags.Electrons}"
21 f"Aux.{outFlags.ElectronsSuppESD}"]
22 toESD += [
23 f"xAOD::PhotonContainer#{outFlags.Photons}",
24 f"xAOD::PhotonAuxContainer#{outFlags.Photons}"
25 f"Aux.{outFlags.PhotonsSuppESD}"]
26 toESD += [
27 f"xAOD::CaloClusterContainer#{outFlags.CaloClusters}",
28 f"xAOD::CaloClusterAuxContainer#{outFlags.CaloClusters}"
29 f"Aux.{outFlags.CaloClustersSuppESD}"]
30 toESD += [
31 f"xAOD::CaloClusterContainer#{outFlags.EgammaLargeClusters}",
32 f"xAOD::CaloClusterAuxContainer#{outFlags.EgammaLargeClusters}"
33 f"Aux.{outFlags.EgammaLargeClustersSuppESD}"]
34 toESD += [
35 f"CaloClusterCellLinkContainer#{outFlags.CaloClusters}"
36 "_links"]
37 toESD += [
38 f"CaloClusterCellLinkContainer#{outFlags.EgammaLargeClusters}"
39 "_links"]
40
41 toAOD += [
42 f"xAOD::ElectronContainer#{outFlags.Electrons}",
43 f"xAOD::ElectronAuxContainer#{outFlags.Electrons}"
44 f"Aux.{outFlags.ElectronsSuppAOD}"]
45 toAOD += [
46 f"xAOD::PhotonContainer#{outFlags.Photons}",
47 f"xAOD::PhotonAuxContainer#{outFlags.Photons}"
48 f"Aux.{outFlags.PhotonsSuppAOD}"]
49 toAOD += [
50 f"xAOD::CaloClusterContainer#{outFlags.CaloClusters}",
51 f"xAOD::CaloClusterAuxContainer#{outFlags.CaloClusters}"
52 f"Aux.{outFlags.CaloClustersSuppAOD}"]
53 toAOD += [
54 f"CaloClusterCellLinkContainer#{outFlags.CaloClusters}_links"]
55
56 if flags.Egamma.doForward:
57 toESD += [
58 f"xAOD::ElectronContainer#{outFlags.ForwardElectrons}",
59 f"xAOD::ElectronAuxContainer#{outFlags.ForwardElectrons}"
60 f"Aux.{outFlags.ForwardElectronsSuppESD}"]
61 toESD += [
62 f"xAOD::CaloClusterContainer#{outFlags.ForwardClusters}",
63 f"xAOD::CaloClusterAuxContainer#{outFlags.ForwardClusters}"
64 f"Aux.{outFlags.ForwardClustersSuppESD}"]
65 toESD += [
66 f"xAOD::CaloClusterContainer#{outFlags.EgammaLargeFWDClusters}",
67 f"xAOD::CaloClusterAuxContainer#{outFlags.EgammaLargeFWDClusters}"
68 f"Aux.{outFlags.EgammaLargeFWDClustersSuppESD}"]
69 toESD += [
70 f"CaloClusterCellLinkContainer#{outFlags.ForwardClusters}"
71 "_links"]
72 toESD += [
73 f"CaloClusterCellLinkContainer#{outFlags.EgammaLargeFWDClusters}"
74 "_links"]
75
76 toAOD += [
77 f"xAOD::ElectronContainer#{outFlags.ForwardElectrons}",
78 f"xAOD::ElectronAuxContainer#{outFlags.ForwardElectrons}"
79 f"Aux.{outFlags.ForwardElectronsSuppAOD}"]
80 toAOD += [
81 f"xAOD::CaloClusterContainer#{outFlags.ForwardClusters}",
82 f"xAOD::CaloClusterAuxContainer#{outFlags.ForwardClusters}"
83 f"Aux.{outFlags.ForwardClustersSuppAOD}"]
84 toAOD += [
85 f"CaloClusterCellLinkContainer#{outFlags.ForwardClusters}"
86 "_links"]
87
88 if flags.Egamma.doTracking:
89 toESD += [
90 f"xAOD::TrackParticleContainer#{outFlags.GSFTrackParticles}",
91 f"xAOD::TrackParticleAuxContainer#{outFlags.GSFTrackParticles}"
92 f"Aux.{outFlags.GSFTrackParticlesSuppESD}"]
93 toESD += [
94 f"TrackCollection#{outFlags.GSFTracks}"]
95
96 toAOD += [
97 f"xAOD::TrackParticleContainer#{outFlags.GSFTrackParticles}",
98 f"xAOD::TrackParticleAuxContainer#{outFlags.GSFTrackParticles}"
99 f"Aux.{outFlags.GSFTrackParticlesSuppAOD}"]
100
101 if (flags.Tracking.writeExtendedSi_PRDInfo or
102 flags.Tracking.writeExtendedTRT_PRDInfo):
103 extension = "GSF_"
104 if flags.Detector.GeometryITk:
105 toAOD += [
106 f"xAOD::TrackStateValidationContainer#{extension}ITkPixel_MSOSs",
107 f"xAOD::TrackStateValidationAuxContainer#{extension}ITkPixel_MSOSsAux.",
108 f"xAOD::TrackStateValidationContainer#{extension}ITkStrip_MSOSs",
109 f"xAOD::TrackStateValidationAuxContainer#{extension}ITkStrip_MSOSsAux."
110 ]
111 else:
112 toAOD += [
113 f"xAOD::TrackStateValidationContainer#{extension}Pixel_MSOSs",
114 f"xAOD::TrackStateValidationAuxContainer#{extension}Pixel_MSOSsAux.",
115 f"xAOD::TrackStateValidationContainer#{extension}SCT_MSOSs",
116 f"xAOD::TrackStateValidationAuxContainer#{extension}SCT_MSOSsAux.",
117 f"xAOD::TrackStateValidationContainer#{extension}TRT_MSOSs",
118 f"xAOD::TrackStateValidationAuxContainer#{extension}TRT_MSOSsAux."
119 ]
120
121 if flags.Egamma.doConversionBuilding:
122 toESD += [
123 f"xAOD::VertexContainer#{outFlags.ConversionVertices}",
124 f"xAOD::VertexAuxContainer#{outFlags.ConversionVertices}"
125 f"Aux.{outFlags.ConversionVerticesSuppESD}"]
126
127 toAOD += [
128 f"xAOD::VertexContainer#{outFlags.ConversionVertices}",
129 f"xAOD::VertexAuxContainer#{outFlags.ConversionVertices}"
130 f"Aux.{outFlags.ConversionVerticesSuppAOD}"]
131
132 if flags.Egamma.doTruthAssociation:
133 toESD += [
134 f"xAOD::TruthParticleContainer#{outFlags.TruthParticles}",
135 f"xAOD::TruthParticleAuxContainer#{outFlags.TruthParticles}"
136 f"Aux.{outFlags.TruthParticlesSuppESD}"]
137
138 toAOD += [f"xAOD::TruthParticleContainer#{outFlags.TruthParticles}",
139 f"xAOD::TruthParticleAuxContainer#{outFlags.TruthParticles}"
140 f"Aux.{outFlags.TruthParticlesSuppAOD}"]
141
142 if flags.Output.doWriteESD:
143 from OutputStreamAthenaPool.OutputStreamConfig import addToESD
144 acc.merge(addToESD(flags, toESD))
145
146 if flags.Output.doWriteAOD:
147 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
148 acc.merge(addToAOD(flags, toAOD))
149
150 return acc