Particle Flow Linking (Block Reconstruction)

Complete: 3

Responsible Persons

  • Colin Bernet

Software Architecture


A set of objects which can be of the following types:

  • PFRecTracks
  • PS1 clusters
  • PS2 clusters
  • ECAL clusters
  • HCAL clusters
  • reco::Muons
  • ...


A collection of PFBlocks.

A PFBlock contains a vector of PFBlockElement, corresponding to a set of input objects linked together, in such a way that each object in the block is linked to at least another object in the block.

The PFBlockElement class defines the following types for its objects:

    enum Type { 

A PFBlockElement contains a reference to the input object it was built from, and any quantity necessary for the particle reconstruction and identification algorithm (PFAlgo). For example:

A PFBlock also keeps track of the distance (which unit?) between the various elements, which defines the link quality.

In the following example, the track TK1 is linked to two ECAL barrel clusters: EB1 and EB2. EB2 is much closer from the impact of the track.

--- PFBlock ---
number of elements: 3
TK1 element 0- type 1  charge=  1, pT =  2.824, p =  3.132 (eta,phi)= (0.466,-3.091)  at ECAL shower max
EB1 element 1- type 4   layer= -1, ET =  1.576, E =  1.763 (eta,phi)= (0.482,-3.124)
EB2 element 2- type 4   layer= -1, ET =  0.352, E =  0.391 (eta,phi)= (0.471,-3.079)

link data:
         TK1   EB1   EB2
   TK1        74.9   8.6
   EB1  74.9
   EB2   8.6

Algorithm Description

Block building procedure

The blocks are built in PFBlockAlgo.

  • The initial step consists in reading the input objects to build a global list containing all PFBlockElement.
    • function PFBlockAlgo::setInput. This template function can be used both in the full framework and in FWLite (PFRootEvent).
  • Then, a recursive algorithm starts from an element A in the list of PFBlockElement:
    • the element is put in a newly created PFBlock, removed from the list, and tested against all the others.
      • if another element B is found to be linked to A, it is added to the PFBlock, removed from the list, and tested against the others.
      • And so on, until the PFBlock is complete.
    • The next PFBlockElement in the list is then put into a new PFBlock, and the algorithm starts again to agregate PFBlockElement in the PFBlock.
    • The algorithm stops when the global list of PFBlockElement is empty.

Link Criteria

Responsible: P. Janot.

  • The link by rechit is used everywhere. give details
  • The link by chi2 is not used anymore.


-- JoosepPata - 2019-09-25

Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r2 - 2019-09-26 - JoosepPata
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback