246def PFCfg(inputFlags, tracktype="", clustersin=None, calclustersin=None, tracksin=None, verticesin=None, cellsin=None):
247
248 result=ComponentAccumulator()
249 seqname = f'HLTPFlow_{tracktype}'
250 result.addSequence(parOR(seqname))
251
252
253 if clustersin is None:
254 clustersin=inputFlags.eflowRec.RawClusterColl
255 if calclustersin is None:
256 calclustersin=inputFlags.eflowRec.CalClusterColl
257 if tracksin is None:
258 tracksin = inputFlags.eflowRec.TrackColl
259 if verticesin is None:
260 verticesin = inputFlags.eflowRec.VertexColl
261
262 result.merge(TrackingGeoCfg(inputFlags))
263 calogeocfg = CaloGeoAndNoiseCfg(inputFlags)
264 result.merge(calogeocfg)
265
266 selcfg = HLTPFTrackSelectorCfg(inputFlags, tracktype, tracksin, verticesin, clustersin, cellsin)
267 PFTrackSelector = selcfg.getPrimary()
268
269
271 PFTrackSelector.MonTool = monTool
272
273 result.merge( selcfg, seqname )
274
275
276
277
278
279 from eflowRec.PFCfg import getPFClusterSelectorTool
280 from eflowRec.PFCfg import getPFCellLevelSubtractionTool,getPFRecoverSplitShowersTool
281
282 PFTrackClusterMatchingTool_1 = CompFactory.PFTrackClusterMatchingTool("CalObjBldMatchingTool")
284 monTool_matching.HistPath = 'PFTrackClusterMatchingTool_1'
285 PFTrackClusterMatchingTool_1.MonTool_ClusterMatching = monTool_matching
286
287 cellSubtractionTool = getPFCellLevelSubtractionTool(
288 inputFlags,
289 "PFCellLevelSubtractionTool",
290 )
291 cellSubtractionTool.PFTrackClusterMatchingTool=PFTrackClusterMatchingTool_1
292
293 recoverSplitShowersTool = getPFRecoverSplitShowersTool(
294 inputFlags,
295 "PFRecoverSplitShowersTool",
296 )
297 recoverSplitShowersTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
298
299 result.addEventAlgo(
300 CompFactory.PFAlgorithm(
301 f"PFAlgorithm_{tracktype}",
302 PFClusterSelectorTool = getPFClusterSelectorTool(
303 inputFlags,
304 clustersin,
305 calclustersin,
306 "PFClusterSelectorTool",
307 ),
308 SubtractionToolList = [
309 cellSubtractionTool,
310 recoverSplitShowersTool,
311 ],
312 BaseToolList = [
313 result.popToolsAndMerge(getHLTPFMomentCalculatorTool(inputFlags)),
314 ],
316 eflowRecTracksInputName = PFTrackSelector.eflowRecTracksOutputName,
317 eflowRecClustersOutputName = f"eflowRecClusters_{tracktype}",
318 PFCaloClustersOutputName = f"PFCaloCluster_{tracktype}",
319 eflowCaloObjectsOutputName = f"eflowCaloObjects_{tracktype}",
320 ),
321 seqname
322 )
323
324
325
326
327 chargedPFOArgs = dict(
328 inputFlags=inputFlags,
329 nameSuffix=f"_{tracktype}",
330 chargedFlowElementOutputName=f"HLT_{tracktype}ChargedParticleFlowObjects",
331 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
332 )
333 neutralPFOArgs = dict(
334 inputFlags=inputFlags,
335 nameSuffix=f"_{tracktype}",
336 neutralFlowElementOutputName=f"HLT_{tracktype}NeutralParticleFlowObjects",
337 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
338 )
339 from eflowRec.PFCfg import getChargedFlowElementCreatorAlgorithm,getNeutralFlowElementCreatorAlgorithm
340 result.addEventAlgo(getNeutralFlowElementCreatorAlgorithm(**neutralPFOArgs), seqname)
341 result.addEventAlgo(getChargedFlowElementCreatorAlgorithm(**chargedPFOArgs), seqname)
342
343
344 return result
345
getMonTool_PFAlgorithm(flags)
getMonTool_PFTrackClusterMatching(flags)