135def TrigNavSlimmingMTCfg(flags):
136
137 log = logging.getLogger("TrigNavSlimmingMTCfg.py")
138
139 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
140 ca = ComponentAccumulator()
141
142 if flags.Trigger.EDMVersion in [1, 2] and not flags.Trigger.doEDMVersionConversion:
143 log.debug("Not going to run Run 3 navigation slimming on a R2 input file as we are not setup to run the navigation conversion in this job")
144 return ca
145
146
147 if flags.Trigger.decodeHLT is False:
148 log.debug("Nothing to do as Trigger.decodeHLT is False")
149 return ca
150
151 if flags.Trigger.doNavigationSlimming is False:
152 log.debug("Nothing to do as Trigger.doNavigationSlimming is False")
153 return ca
154
155 doESD = flags.Output.doWriteESD
156 doAOD = flags.Output.doWriteAOD
157
158 from TrigDecisionTool.TrigDecisionToolConfig import TrigDecisionToolCfg, getRun3NavigationContainerFromInput
159 from TrigDecisionTool.TrigDecisionToolHelpers import possible_keys
160
161
162
163 inputCollection = getRun3NavigationContainerFromInput(flags)
164 doESDSlim = not isCollectionInInputPOOLFile(flags, "HLTNav_Summary_ESDSlimmed")
165 doAODSlim = not isCollectionInInputPOOLFile(flags, "HLTNav_Summary_AODSlimmed")
166
167 if doESD and doESDSlim:
168 tdt = ca.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
169 esdSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_ESD')
170 esdSlim.TrigDecisionTool = tdt
171 esdSlim.OutputCollection = "HLTNav_Summary_ESDSlimmed"
172 esdSlim.PrimaryInputCollection = inputCollection
173 esdSlim.AllOutputContainers = possible_keys
174 esdSlim.KeepFailedBranched = True
175 esdSlim.KeepOnlyFinalFeatures = False
176 esdSlim.RemoveEmptySteps = False
177 esdSlim.RepackROIs = False
178 esdSlim.RepackFeatures = False
179 esdSlim.EdgesToDrop = ["view"]
180 esdSlim.NodesToDrop = ["F"]
181 esdSlim.ChainsFilter = []
182 ca.addEventAlgo(esdSlim)
183
184 collections = [f"xAOD::TrigCompositeContainer#{esdSlim.OutputCollection}", f"xAOD::TrigCompositeAuxContainer#{esdSlim.OutputCollection}Aux.-"]
185 from OutputStreamAthenaPool.OutputStreamConfig import addToESD
186 ca.merge(addToESD(flags, collections))
187
188 log.info("Producing ESD Slimmed Trigger Navigation Collection. Reading {} and writing {}".format(esdSlim.PrimaryInputCollection, esdSlim.OutputCollection))
189 if esdSlim.OutputCollection not in possible_keys:
190 log.error("Producing a collection {} which is not listed in 'possible_keys'! Add this here too.".format(esdSlim.OutputCollection))
191 else:
192 log.info("Will not create ESD Slimmed Trigger Navigation Collection in this job")
193
194 if doAOD and doAODSlim:
195 tdt = ca.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
196 aodSlim = CompFactory.TrigNavSlimmingMTAlg('TrigNavSlimmingMTAlg_AOD')
197 aodSlim.TrigDecisionTool = tdt
198 aodSlim.OutputCollection = "HLTNav_Summary_AODSlimmed"
199 aodSlim.PrimaryInputCollection = inputCollection
200 aodSlim.AllOutputContainers = possible_keys
201 aodSlim.RemoveEmptySteps = False
202 aodSlim.RepackROIs = False
203 aodSlim.RepackFeatures = False
204 aodSlim.EdgesToDrop = ["view"]
205 aodSlim.NodesToDrop = ["F"]
206 aodSlim.ChainsFilter = []
207
208 if flags.Trigger.AODEDMSet == "AODSLIM":
209 aodSlim.KeepFailedBranched = False
210 aodSlim.KeepOnlyFinalFeatures = True
211 log.info("Producing AODSLIM Trigger Navigation Collection. Reading {} and writing {}".format(aodSlim.PrimaryInputCollection, aodSlim.OutputCollection))
212 else:
213 aodSlim.KeepFailedBranched = True
214 aodSlim.KeepOnlyFinalFeatures = False
215 log.info("Producing AODFULL Slimmed Trigger Navigation Collection. Reading {} and writing {}".format(aodSlim.PrimaryInputCollection, aodSlim.OutputCollection))
216 ca.addEventAlgo(aodSlim)
217
218 collections = [f"xAOD::TrigCompositeContainer#{aodSlim.OutputCollection}", f"xAOD::TrigCompositeAuxContainer#{aodSlim.OutputCollection}Aux.-"]
219 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
220 ca.merge(addToAOD(flags, collections))
221
222 if aodSlim.OutputCollection not in possible_keys:
223 log.error("Producing a collection {} which is not listed in 'possible_keys'! Add this here too.".format(esdSlim.OutputCollection))
224 else:
225 log.info("Will not create AOD Slimmed Trigger Navigation Collection in this job")
226
227 return ca