347def PFCfg(inputFlags, tracktype="", clustersin=None, calclustersin=None, tracksin=None, verticesin=None, cellsin=None):
348
349 result=ComponentAccumulator()
350 seqname = f'HLTPFlow_{tracktype}'
351 result.addSequence(parOR(seqname))
352
353
354 if clustersin is None:
355 clustersin=inputFlags.eflowRec.RawClusterColl
356 if calclustersin is None:
357 calclustersin=inputFlags.eflowRec.CalClusterColl
358 if tracksin is None:
359 tracksin = inputFlags.eflowRec.TrackColl
360 if verticesin is None:
361 verticesin = inputFlags.eflowRec.VertexColl
362
363 result.merge(TrackingGeoCfg(inputFlags))
364 calogeocfg = CaloGeoAndNoiseCfg(inputFlags)
365 result.merge(calogeocfg)
366
367 selcfg = HLTPFTrackSelectorCfg(inputFlags, tracktype, tracksin, verticesin, clustersin, cellsin)
368 PFTrackSelector = selcfg.getPrimary()
369
370
372 PFTrackSelector.MonTool = monTool
373
374 result.merge( selcfg, seqname )
375
376
377
378
379
380 from eflowRec.PFCfg import getPFClusterSelectorTool
381
382 PFTrackClusterMatchingTool_1 = CompFactory.PFTrackClusterMatchingTool("CalObjBldMatchingTool")
384 monTool_matching.HistPath = 'PFTrackClusterMatchingTool_1'
385 PFTrackClusterMatchingTool_1.MonTool_ClusterMatching = monTool_matching
386
387
388
389 if inputFlags.Trigger.Jet.PFlowUnifiedChain:
390 from eflowRec.PFCfg import (getPFUnifiedCellLevelMatchingTool,
391 getPFUnifiedCellLevelSubtractionOnlyTool,
392 getPFUnifiedRecoverSplitShowersMatchingTool,
393 getPFUnifiedRecoverSplitShowersSubtractionOnlyTool)
394
395 cellMatchingTool = getPFUnifiedCellLevelMatchingTool(
396 inputFlags,
397 "PFUnifiedCellLevelMatchingTool",
398 )
399 cellMatchingTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
400
401 recoverSplitShowersMatchingTool = getPFUnifiedRecoverSplitShowersMatchingTool(
402 inputFlags,
403 "PFUnifiedRecoverSplitShowersMatchingTool",
404 )
405 recoverSplitShowersMatchingTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
406
407
408 toolListArgs = dict(
409 useUnified = True,
410 UnifiedBaseTools = [
411 cellMatchingTool,
412 getPFUnifiedCellLevelSubtractionOnlyTool(inputFlags, "PFUnifiedCellLevelSubtractionOnlyTool"),
413 recoverSplitShowersMatchingTool,
414 getPFUnifiedRecoverSplitShowersSubtractionOnlyTool(inputFlags, "PFUnifiedRecoverSplitShowersSubtractionOnlyTool"),
415 result.popToolsAndMerge(getHLTPFMomentCalculatorTool(inputFlags)),
416 ],
417 )
418 else:
419 cellSubtractionTool = getHLTPFCellLevelSubtractionTool(
420 inputFlags,
421 "PFCellLevelSubtractionTool",
422 )
423 cellSubtractionTool.PFTrackClusterMatchingTool=PFTrackClusterMatchingTool_1
424
425 recoverSplitShowersTool = getHLTPFRecoverSplitShowersTool(
426 inputFlags,
427 "PFRecoverSplitShowersTool",
428 )
429 recoverSplitShowersTool.PFTrackClusterMatchingTool = PFTrackClusterMatchingTool_1
430
431 toolListArgs = dict(
432 SubtractionToolList = [
433 cellSubtractionTool,
434 recoverSplitShowersTool,
435 ],
436 BaseToolList = [
437 result.popToolsAndMerge(getHLTPFMomentCalculatorTool(inputFlags)),
438 ],
439 )
440
441 result.addEventAlgo(
442 CompFactory.PFAlgorithm(
443 f"PFAlgorithm_{tracktype}",
444 PFClusterSelectorTool = getPFClusterSelectorTool(
445 inputFlags,
446 clustersin,
447 calclustersin,
448 "PFClusterSelectorTool",
449 ),
451 eflowRecTracksInputName = PFTrackSelector.eflowRecTracksOutputName,
452 eflowRecClustersOutputName = f"eflowRecClusters_{tracktype}",
453 PFCaloClustersOutputName = f"PFCaloCluster_{tracktype}",
454 eflowCaloObjectsOutputName = f"eflowCaloObjects_{tracktype}",
455 **toolListArgs,
456 ),
457 seqname
458 )
459
460
461
462
463 chargedPFOArgs = dict(
464 inputFlags=inputFlags,
465 nameSuffix=f"_{tracktype}",
466 chargedFlowElementOutputName=recordable(f"HLT_{tracktype}ChargedParticleFlowObjects"),
467 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
468 )
469 neutralPFOArgs = dict(
470 inputFlags=inputFlags,
471 nameSuffix=f"_{tracktype}",
472 neutralFlowElementOutputName=recordable(f"HLT_{tracktype}NeutralParticleFlowObjects"),
473 eflowCaloObjectContainerName=f"eflowCaloObjects_{tracktype}"
474 )
475 from eflowRec.PFCfg import getChargedFlowElementCreatorAlgorithm,getNeutralFlowElementCreatorAlgorithm
476 result.addEventAlgo(getNeutralFlowElementCreatorAlgorithm(**neutralPFOArgs), seqname)
477 result.addEventAlgo(getChargedFlowElementCreatorAlgorithm(**chargedPFOArgs), seqname)
478
479
480 return result
481
getMonTool_PFTrackClusterMatching(flags)
getMonTool_PFAlgorithm(flags)