Jets and MET

Last updated on 2024-07-09 | Edit this page

Overview

Questions

  • How are jets and missing transverse energy treated in CMS Open Data?

Objectives

  • Identify jet and MET code collections in AOD files
  • Understand typical features of jet/MET objects

After tracks and energy deposits in the CMS tracking detectors (inner, muon) and calorimeters (electromagnetic, hadronic) are reconstructed as particle flow candidates, an event can be interpreted in various ways. Two common elements of event interpretation are clustering jets and calculating missing transverse momentum.

Jets


Jets are spatially-grouped collections of long-lived particles that are produced when a quark or gluon hadronizes. The kinetmatic properties of jets resemble that of the initial partons that produced them. In the CMS language, jets are made up of many particles, with the following predictable energy composition:

  • ~65% charged hadrons
  • ~25% photons (from neutral pions)
  • ~10% neutral hadrons

Jets are very messy! Hadronization and the subsequent decays of unstable hadrons can produce 100s of particles near each other in the CMS detector. Hence these particles are rarely analyzed individually. How can we determine which particle candidates should be included in each jet?

Clustering

Jets can be clustered using a variety of different inputs from the CMS detector. “CaloJets” use only calorimeter energy deposits. “GenJets” use generated particles from a simulation. But by far the most common are “PFJets”, from particle flow candidates.

The result of the CMS Particle Flow algorithm is a list of particle candidates that account for all inner-tracker and muon tracks and all above-threshold energy deposits in the calorimeters. These particles are formed into jets using a “clustering algorithm”. The most common algorithm used by CMS is the “anti-kt” algorithm, which is abbreviated “AK”. It iterates over particle pairs and finds the two (i and j) that are the closest in some distance measure and determines whether to combine them:

\(d_{ij} = \min(p^{-2}_{T,i},p^{-2}_{T,j}) \Delta R^2_{ij}/R^2\)

Particle pairs are combined as long as \(d_{ij} < p^{-2}_{T,i}\). The momentum power (-2) used by the anti-kt algorithm means that higher-momentum particles are clustered first. This leads to jets with a round shape that tend to be centered on the hardest particle. In CMS software this clustering is implemented using the FastJet package.

Pileup

Inevitably, the list of particle flow candidates contains particles that did not originate from the primary interaction point. CMS experiences multiple simultaneous collisions, called “pileup”, during each “bunch crossing” of the LHC, so particles from multiple collisions coexist in the detector. There are various methods to remove their contributions from jets:

  • Charged hadron subtraction CHS: all charged hadron candidates are associated with a track. If the track is not associated with the primary vertex, that charged hadron can be removed from the list. CHS is limited to the region of the detector covered by the inner tracker. The pileup contribution to neutral hadrons has to be removed mathematically – more in episode 3!
  • PileUp Per Particle Identification (PUPPI, available in Run 2): CHS is applied, and then all remaining particles are weighted based on their likelihood of arising from pileup. This method is more stable and performant in high pileup scenarios such as the upcoming HL-LHC era.

Small-radius jets in NanoAOD


The most basic setting for anti-kt particle-flow jets in CMS is a radius parameter of 0.4. These jets are often called “AK4 jets” or “small-radius jets”. Their information is stored in the “Jet_*” collection in NanoAOD:

Jet collection branches
Object property Type Description
Jet_area Float_t jet catchment area, for JECs
Jet_bRegCorr Float_t pt correction for b-jet energy regression
Jet_bRegRes Float_t res on pt corrected with b-jet regression
Jet_btagCSVV2 Float_t pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)
Jet_btagDeepB Float_t DeepCSV b+bb tag discriminator
Jet_btagDeepCvB Float_t DeepCSV c vs b+bb discriminator
Jet_btagDeepCvL Float_t DeepCSV c vs udsg discriminator
Jet_btagDeepFlavB Float_t DeepJet b+bb+lepb tag discriminator
Jet_btagDeepFlavCvB Float_t DeepJet c vs b+bb+lepb discriminator
Jet_btagDeepFlavCvL Float_t DeepJet c vs uds+g discriminator
Jet_btagDeepFlavQG Float_t DeepJet g vs uds discriminator
Jet_cRegCorr Float_t pt correction for c-jet energy regression
Jet_cRegRes Float_t res on pt corrected with c-jet regression
Jet_chEmEF Float_t charged Electromagnetic Energy Fraction
Jet_chFPV0EF Float_t charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.
Jet_chHEF Float_t charged Hadron Energy Fraction
Jet_cleanmask UChar_t simple cleaning mask with priority to leptons
Jet_electronIdx1 Int_t (index to Electron) index of first matching electron
Jet_electronIdx2 Int_t (index to Electron) index of second matching electron
Jet_eta Float_t eta
Jet_hfadjacentEtaStripsSize Int_t eta size of the strips next to the central tower strip in HF (noise discriminating variable)
Jet_hfcentralEtaStripSize Int_t eta size of the central tower strip in HF (noise discriminating variable)
Jet_hfsigmaEtaEta Float_t sigmaEtaEta for HF jets (noise discriminating variable)
Jet_hfsigmaPhiPhi Float_t sigmaPhiPhi for HF jets (noise discriminating variable)
Jet_jetId Int_t Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto
Jet_mass Float_t mass
Jet_muEF Float_t muon Energy Fraction
Jet_muonIdx1 Int_t (index to Muon) index of first matching muon
Jet_muonIdx2 Int_t (index to Muon) index of second matching muon
Jet_muonSubtrFactor Float_t 1-(muon-subtracted raw pt)/(raw pt)
Jet_nConstituents UChar_t Number of particles in the jet
Jet_nElectrons Int_t number of electrons in the jet
Jet_nMuons Int_t number of muons in the jet
Jet_neEmEF Float_t neutral Electromagnetic Energy Fraction
Jet_neHEF Float_t neutral Hadron Energy Fraction
Jet_phi Float_t phi
Jet_pt Float_t pt
Jet_puId Int_t Pileup ID flags with 106X (2016) training
Jet_puIdDisc Float_t Pileup ID discriminant with 106X (2016) training
Jet_qgl Float_t Quark vs Gluon likelihood discriminator
Jet_rawFactor Float_t 1 - Factor to get back to raw pT
nJet UInt_t slimmedJets, i.e. ak4 PFJets CHS with JECs applied, after basic selection (pt > 15)

By now you should be able to identify the 4-vector information and the cross-reference indices in this list of branches! Many of the variables in the list will be discussed in the later lesson pages on heavy flavor tagging and jet energy corrections.

Jet identification

Particle-flow jets are not immune to noise in the detector, and jets used in analyses should be filtered to remove noise jets. CMS has defined a “noise jet ID” that considers information about the energy types within the jet:

  • charged hadron fraction – what fraction of the jet consists of charged hadrons? This will be greater than 0 if the jet is within the inner tracker region.
  • neutral hadron fraction – what fraction of the jet consists of neutral hadrons? This should always be less than 1.
  • charged electromagnetic fraction – what fraction of the jet consists of electrons? This should always be less than 1.
  • neutral electromagnetic fraction – what fraction of the jet consists of photons? This should always be less than 1.
  • number of constituents – this should be greater than 1.

These criteria demonstrate how particle-flow jets combine information across subdetectors. Jets will typically have energy from electrons and photons, but those fractions of the total energy should be less than one. Similarly, jets should have some energy from charged hadrons if they overlap the inner tracker, and all the energy should not come from neutral hadrons. A mixture of energy sources is expected for genuine jets. All of these energy fractions (and more) can be accessed in NanoAOD. Whenever you use jets, requirements should be placed on the value of Jet_jetId, rejecting at least values of 0.

Jet collection branches
Object property Type Description
Jet_chEmEF Float_t charged Electromagnetic Energy Fraction
Jet_chFPV0EF Float_t charged fromPV==0 Energy Fraction (energy excluded from CHS jets). Previously called betastar.
Jet_chHEF Float_t charged Hadron Energy Fraction
Jet_jetId Int_t Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto
Jet_muEF Float_t muon Energy Fraction
Jet_nConstituents UChar_t Number of particles in the jet
Jet_nElectrons Int_t number of electrons in the jet
Jet_nMuons Int_t number of muons in the jet
Jet_neEmEF Float_t neutral Electromagnetic Energy Fraction
Jet_neHEF Float_t neutral Hadron Energy Fraction
Jet_puId Int_t Pileup ID flags with 106X (2016) training

Another important identification algorithm is the “pileup jet ID”, which can identify jets that are not likely to come from the primary collision of an event.

Large-radius jets in NanoAOD


Another useful anti-kt jet radius is 0.8, called “AK8 jets” or “large-radius jets”. These jets are stored if they have transverse momentum above 170 GeV, and are represented by the “FatJet_*” collection in NanoAOD:

Jet collection branches
Object property Type Description
FatJet_area Float_t jet catchment area, for JECs
FatJet_btagCSVV2 Float_t pfCombinedInclusiveSecondaryVertexV2 b-tag discriminator (aka CSVV2)
FatJet_btagDDBvLV2 Float_t DeepDoubleX V2(mass-decorrelated) discriminator for H(Z)->bb vs QCD
FatJet_btagDDCvBV2 Float_t DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs H(Z)->bb
FatJet_btagDDCvLV2 Float_t DeepDoubleX V2 (mass-decorrelated) discriminator for H(Z)->cc vs QCD
FatJet_btagDeepB Float_t DeepCSV b+bb tag discriminator
FatJet_btagHbb Float_t Higgs to BB tagger discriminator
FatJet_deepTagMD_H4qvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger H->4q vs QCD discriminator
FatJet_deepTagMD_HbbvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger H->bb vs QCD discriminator
FatJet_deepTagMD_TvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger top vs QCD discriminator
FatJet_deepTagMD_WvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger W vs QCD discriminator
FatJet_deepTagMD_ZHbbvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger Z/H->bb vs QCD discriminator
FatJet_deepTagMD_ZHccvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger Z/H->cc vs QCD discriminator
FatJet_deepTagMD_ZbbvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger Z->bb vs QCD discriminator
FatJet_deepTagMD_ZvsQCD Float_t Mass-decorrelated DeepBoostedJet tagger Z vs QCD discriminator
FatJet_deepTagMD_bbvsLight Float_t Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->bb vs light flavour discriminator
FatJet_deepTagMD_ccvsLight Float_t Mass-decorrelated DeepBoostedJet tagger Z/H/gluon->cc vs light flavour discriminator
FatJet_deepTag_H Float_t DeepBoostedJet tagger H(bb,cc,4q) sum
FatJet_deepTag_QCD Float_t DeepBoostedJet tagger QCD(bb,cc,b,c,others) sum
FatJet_deepTag_QCDothers Float_t DeepBoostedJet tagger QCDothers value
FatJet_deepTag_TvsQCD Float_t DeepBoostedJet tagger top vs QCD discriminator
FatJet_deepTag_WvsQCD Float_t DeepBoostedJet tagger W vs QCD discriminator
FatJet_deepTag_ZvsQCD Float_t DeepBoostedJet tagger Z vs QCD discriminator
FatJet_electronIdx3SJ Int_t (index to Electron) index of electron matched to jet
FatJet_eta Float_t eta
FatJet_jetId Int_t Jet ID flags bit1 is loose (always false in 2017 since it does not exist), bit2 is tight, bit3 is tightLepVeto
FatJet_lsf3 Float_t Lepton Subjet Fraction (3 subjets)
FatJet_mass Float_t mass
FatJet_msoftdrop Float_t Corrected soft drop mass with PUPPI
FatJet_muonIdx3SJ Int_t (index to Muon) index of muon matched to jet
FatJet_n2b1 Float_t N2 with beta=1
FatJet_n3b1 Float_t N3 with beta=1
FatJet_nConstituents UChar_t Number of particles in the jet
FatJet_particleNetMD_QCD Float_t Mass-decorrelated ParticleNet tagger raw QCD score
FatJet_particleNetMD_Xbb Float_t Mass-decorrelated ParticleNet tagger raw X->bb score. For X->bb vs QCD tagging, use Xbb/(Xbb+QCD)
FatJet_particleNetMD_Xcc Float_t Mass-decorrelated ParticleNet tagger raw X->cc score. For X->cc vs QCD tagging, use Xcc/(Xcc+QCD)
FatJet_particleNetMD_Xqq Float_t Mass-decorrelated ParticleNet tagger raw X->qq (uds) score. For X->qq vs QCD tagging, use Xqq/(Xqq+QCD). For W vs QCD tagging, use (Xcc+Xqq)/(Xcc+Xqq+QCD)
FatJet_particleNet_H4qvsQCD Float_t ParticleNet tagger H(->VV->qqqq) vs QCD discriminator
FatJet_particleNet_HbbvsQCD Float_t ParticleNet tagger H(->bb) vs QCD discriminator
FatJet_particleNet_HccvsQCD Float_t ParticleNet tagger H(->cc) vs QCD discriminator
FatJet_particleNet_QCD Float_t ParticleNet tagger QCD(bb,cc,b,c,others) sum
FatJet_particleNet_TvsQCD Float_t ParticleNet tagger top vs QCD discriminator
FatJet_particleNet_WvsQCD Float_t ParticleNet tagger W vs QCD discriminator
FatJet_particleNet_ZvsQCD Float_t ParticleNet tagger Z vs QCD discriminator
FatJet_particleNet_mass Float_t ParticleNet mass regression
FatJet_phi Float_t phi
FatJet_pt Float_t pt
FatJet_rawFactor Float_t 1 - Factor to get back to raw pT
FatJet_subJetIdx1 Int_t (index to Subjet) index of first subjet
FatJet_subJetIdx2 Int_t (index to Subjet) index of second subjet
FatJet_tau1 Float_t Nsubjettiness (1 axis)
FatJet_tau2 Float_t Nsubjettiness (2 axis)
FatJet_tau3 Float_t Nsubjettiness (3 axis)
FatJet_tau4 Float_t Nsubjettiness (4 axis)
nFatJet UInt_t slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis

Beyond the 4-vector information, FatJet_jetId variable, and cross-reference indices, the overwhelming majority of variables stored for FatJets are used to identify hadronic decays of high-momentum massive SM particles like top quarks, Higgs bosons, W bosons, and Z bosons. This will be covered in a later lesson.

MET


Missing transverse momentum is the negative vector sum of the transverse momenta of all particle flow candidates in an event. The magnitude of the missing transverse momentum vector is called missing transverse energy and referred to with the acronym “MET”. Since energy corrections are made to the particle flow jets (see the last page in this lesson), those corrections are propagated to MET by adding back the momentum vectors of the original jets and then subtracting the momentum vectors of the corrected jets. This correction is called “Type 1” and is standard for all CMS analyses.

Object property Type Description
MET_MetUnclustEnUpDeltaX Float_t Delta (METx_mod-METx) Unclustered Energy Up
MET_MetUnclustEnUpDeltaY Float_t Delta (METy_mod-METy) Unclustered Energy Up
MET_covXX Float_t xx element of met covariance matrix
MET_covXY Float_t xy element of met covariance matrix
MET_covYY Float_t yy element of met covariance matrix
MET_phi Float_t phi
MET_pt Float_t pt
MET_significance Float_t MET significance
MET_sumEt Float_t scalar sum of Et
MET_sumPtUnclustered Float_t sumPt used for MET significance

The standard “MET” magnitude is found in MET_pt, and the azimuthal angle of the vector is MET_phi (since MET can only be computed in the transverse plane, no MET_eta is found). The MET_significance variable can be a useful tool: it describes the likelihood that the MET arose from noise or mismeasurement in the detector as opposed to a neutrino or similar non-interacting particle. The four-vectors of the other physics objects along with their uncertainties are required to compute the significance of the MET signature. MET that is directed nearly (anti)colinnear with a physics object is likely to arise from mismeasurement and should not have a large significance.

Key Points

  • Jets are spatially-grouped collections of particles that traversed the CMS detector
  • Particles from additional proton-proton collisions (pileup) must be removed from jets
  • Missing transverse energy is the negative vector sum of particle candidates
  • Many of the variables discussed for other objects also exist for jets