340def PFCfg(inputFlags, tracktype="", clustersin=None, calclustersin=None, tracksin=None, verticesin=None, cellsin=None):
341
342 result=ComponentAccumulator()
343 seqname = f'HLTPFlow_{tracktype}'
344 result.addSequence(parOR(seqname))
345
346
347 if clustersin is None:
348 clustersin=inputFlags.eflowRec.RawClusterColl
349 if calclustersin is None:
350 calclustersin=inputFlags.eflowRec.CalClusterColl
351 if tracksin is None:
352 tracksin = inputFlags.eflowRec.TrackColl
353 if verticesin is None:
354 verticesin = inputFlags.eflowRec.VertexColl
355
356 result.merge(TrackingGeoCfg(inputFlags))
357 calogeocfg = CaloGeoAndNoiseCfg(inputFlags)
358 result.merge(calogeocfg)
359
360 selcfg = HLTPFTrackSelectorCfg(inputFlags, tracktype, tracksin, verticesin, clustersin, cellsin)
361 PFTrackSelector = selcfg.getPrimary()
362
363
365 PFTrackSelector.MonTool = monTool
366
367 result.merge( selcfg, seqname )
368
369
370
371
372
373 from eflowRec.PFCfg import getPFClusterSelectorTool
374
375 PFTrackClusterMatchingTool_1 = CompFactory.PFTrackClusterMatchingTool("CalObjBldMatchingTool")
377 monTool_matching.HistPath = 'PFTrackClusterMatchingTool_1'
378 PFTrackClusterMatchingTool_1.MonTool_ClusterMatching = monTool_matching
379
380 cellSubtractionTool = getHLTPFCellLevelSubtractionTool(
381 inputFlags,
382 "PFCellLevelSubtractionTool",
383 )
384 cellSubtractionTool.PFTrackClusterMatchingTool=PFTrackClusterMatchingTool_1
385
386 recoverSplitShowersTool = getHLTPFRecoverSplitShowersTool(
387 inputFlags,
388 "PFRecoverSplitShowersTool",
389 )
390 recoverSplitShowersTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
391
392 result.addEventAlgo(
393 CompFactory.PFAlgorithm(
394 f"PFAlgorithm_{tracktype}",
395 PFClusterSelectorTool = getPFClusterSelectorTool(
396 inputFlags,
397 clustersin,
398 calclustersin,
399 "PFClusterSelectorTool",
400 ),
401 SubtractionToolList = [
402 cellSubtractionTool,
403 recoverSplitShowersTool,
404 ],
405 BaseToolList = [
406 result.popToolsAndMerge(getHLTPFMomentCalculatorTool(inputFlags)),
407 ],
409 eflowRecTracksInputName = PFTrackSelector.eflowRecTracksOutputName,
410 eflowRecClustersOutputName = f"eflowRecClusters_{tracktype}",
411 PFCaloClustersOutputName = f"PFCaloCluster_{tracktype}",
412 eflowCaloObjectsOutputName = f"eflowCaloObjects_{tracktype}",
413 ),
414 seqname
415 )
416
417
418
419
420 chargedPFOArgs = dict(
421 inputFlags=inputFlags,
422 nameSuffix=f"_{tracktype}",
423 chargedFlowElementOutputName=recordable(f"HLT_{tracktype}ChargedParticleFlowObjects"),
424 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
425 )
426 neutralPFOArgs = dict(
427 inputFlags=inputFlags,
428 nameSuffix=f"_{tracktype}",
429 neutralFlowElementOutputName=recordable(f"HLT_{tracktype}NeutralParticleFlowObjects"),
430 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
431 )
432 from eflowRec.PFCfg import getChargedFlowElementCreatorAlgorithm,getNeutralFlowElementCreatorAlgorithm
433 result.addEventAlgo(getNeutralFlowElementCreatorAlgorithm(**neutralPFOArgs), seqname)
434 result.addEventAlgo(getChargedFlowElementCreatorAlgorithm(**chargedPFOArgs), seqname)
435
436
437 return result
438
getMonTool_PFTrackClusterMatching(flags)
getMonTool_PFAlgorithm(flags)