QCD-aware truth jet clustering
==============================

The QCDAware clustering scheme is based on standard jet clustering algorithms,
which are modified to only permit clusterings compatible with QCD (and, as an
extension, QED), tracked via a flavour-label user index.

The intended clustering inputs are the final partons which either undergo
hadronization or, in the case of photons and leptons, are themselves stable.

At each clustering step, the pseudojet pair undergoing combination is checked
for compatibility with Standard Model QCD and QED interaction vertices; if the
pair are indeed compatible, the pseudojets are combined, and the resulting
pseudojet is given the appropriate flavor. All the allowed clusterings have
unique flavour transformations, making the algorithm deterministic. The 4-gluon
vertex is not considered due to the clustering limitation to 2->1 combinations.

For instance, two pseudojets labeled respectively as an up-quark and gluon are
allowed to cluster into an up-quark pseudojet; an up-quark and anti-up-quark may
similarly cluster into a gluon pseudojet; however, there is no QCD vertex
corresponding to the combination of up- and strange-quark pseudojets, so such a
clustering is rejected by the algorithm. The distance measure used for the
recombination is independent of the labeling.

The result of the QCDAware clustering is, just as in traditional jet
recombination algorithms, a collection of final pseudojets. However, each
QCDAware pseudojet also carries with it a flavor label that depends on its
constituents and clustering history.

This algorithm is equivalent to the "bland" algorithm discussed in
hep-ph/0601139 without the flavour-kt modifications to the distance
measure and extended to allow for clustering photon radiation from
leptons and quarks.


Technical usage details
-----------------------

Currently the user_index of a pseudojet is used for the flavor label, in the PDG
MC numbering scheme. The inputs to the algorithm should have user_indices set
to the PDG ID code of the corresponding parton. The flavor label of the
resulting pseudojets is also stored in their user_index variables. The
QCDAwarePlugin and DistanceMeasure, which need to be instantiated by
the user, belong to the QCDAwarePlugin namespace.
