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