Synopsis


We will try to disentangle heavy-quark jets from light-flavor jets using machine learning.

Starting point


  • We have generated some jets using PYTHIA event generator (jets reconstructed with anti-kT algorithm with \(R=0.4\)).
  • We saved jets only with transverse momentum \(p_{T} > 50~\mathrm{GeV} \) in some pseudorapidity window \( |\eta| < 3.5 \). Then we python-pickled those into a file Pickled jets.
  • To read the jets one can use the following code (python 2.7): save 1st as particle_jet.py (module loaded in the second)
class Particle(object):

    def __init__(self, pt, eta, phi):
        self.pt = pt
        self.eta = eta
        self.phi = phi


class Jet(Particle):

    def __init__(self, pt, eta, phi):
        super(Jet, self).__init__(pt, eta, phi)
        self.constituents = []

    def add_constituent(self, pt, eta, phi):
        p = Particle(pt, eta, phi)
        self.constituents.append(p)
import pickle

from particle_jet import Jet, Particle

def read():
    print 'reading...'
    jets = pickle.load(open("jets.pickled", "rb"))
    for j in jets:
        print j.pt
        sum_pt = 0
        for c in j.constituents:
            print ' - ', c.pt, c.eta, c.phi
            sum_pt += c.pt
        print ' checksum pt: ', j.pt/sum_pt
    print 'done'

if __name__ == '__main__':
    read()
  • To run the code save it to a file (test.py for example) and issue a terminal command chmod +x test.py and execute with ./test.py in a directory where you downloaded the Pickled jets file.

  • As you can see every jet has properties: transverse momentum \(p_{T}\) (.pt), pseudorapidity \(\eta\) (.eta), and azimuthal angle \(\phi\) (.phi), and a list of constituents which themself have the three properties defining a momentum vector.

Next steps


  • Let's try to draw the constituent distribution \( z = p_{T}^{\mathrm{constituent}} / p_{T}^{\mathrm{jet}} \). It should look like the plot below.

  • Then lets see how the jets look like when making their pixelized picture (10x10 for example) in a local frame with a maximum distance (\(\Delta R)\) between the jet axis and constituent \( \Delta R = \sqrt{(\eta_{\mathrm{jet}} - \eta_{\mathrm{constituent}})^2 + (\varphi_{\mathrm{jet}} - \varphi_{\mathrm{constituent}})^2} < 0.4 \), where the color of each pixel corresponds to the fraction of momentum carried by the constituents (\( z \)).

More jets & more fake jets


  • More jets (warning: files are larger now up to 250MB per file - about 35k jets - we should move to root or other strucure from now on)...

Real jets:

Pickled File

Real jets - events weighted with z

Fake jets:

Pickled File

Fake jets - events weighted with z

Fake jets - 2:

Pickled File

Fake jets - events weighted with z

Fake jets - 2.1:

Pickled File

Fake jets - events weighted with z