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