All in One View

Content from Intro to CMS Physics Objects


Last updated on 2026-07-16 | Edit this page

Overview

Questions

  • What do we call physics objects in CMS?
  • How are physics objects reconstructed?
  • How are physics objects represented in NanoAOD?

Objectives

  • Learn about the different physics objects in CMS and get briefed on their reconstruction
  • Learn more about the collection structure of NanoAOD

Overview


The CMS experment is a giant detector that acts like a camera that “photographs” particle collisions, allowing us to interpret their nature.

Certainly, we cannot directly observe all the particles created in the collisions because some of them decay very quickly or simply do not interact with our detector. However, we can infer their presence. If they decay to more stable particles and interact with the material of the detector, they leave signals that CMS can record. These signals are used to determine the presence of specific types of particles moving through the detector – we call these, physics objects.

The CMS detector has many many sensors of different kinds that can detect signals from particles passing through. Take a look at the CMS experiment in the image below. This is a good recent video that you can watch later to get a quick feeling of how CMS looks now in Run 3.

Physics objects can be:

  • electrons
  • muons
  • photons
  • “jets” (cones of energy from particles made of quarks)
  • tau leptons
  • missing transverse momentum

On the CERN Open Portal (CODP) site you can find a more detailed description of these physics objects and a list of them corresponding to 2010, 2011/2012, and 2015/2016 releases of open data.

In this workshop we will focus on working with open data from the latest 2016 release from Run 2. This release included the NanoAOD file format that contains the most commonly used physics object information in a standard ROOT tree.

Physics Objects reconstruction


Physics objects are mainly reconstructed using methods like clustering adjacent signals and linking information between different CMS detector components. For instance, electromagnetic objects (electrons or photons) are reconstructed by linking tracks from the inner tracking detectors with energy clusters in the electromagnetic calorimeter.

These actions are essential parts of the so-called Particle Flow (PF) algorithm.

The particle-flow (PF) algorithm aims at reconstructing and identifying all stable particles in the event, i.e., electrons, muons, photons, charged hadrons and neutral hadrons, with a thorough combination of all CMS sub-detectors in order to best determine their direction, energy and particle type. This list of individual particles is then used to build jets, to determine the missing transverse energy (which gives an estimate of the direction and energy of the neutrinos and other invisible particles), to reconstruct and identify tau leptons from their decay products, and more.

The PF algorithm is written in C++ and is part of the CMSSW software that is required to analyze any open data in the earlier AOD or MiniAOD formats. For more information about the PF algorithm you can visit a lesson from an earlier workshop: Advanced Tools lesson. The CMS open data from 2016 contains some data samples in the NanoAOD format that have been supplemented with particle flow information: nanoad-pf samples.

Key Points
  • Physics objects are the final abstraction in the detector that can be associated to physical entities like particles.
  • NanoAOD stores physics object properties as branches of a ROOT tree, linked by common name prefixes.

Content from Electrons & Photons


Last updated on 2026-07-16 | Edit this page

Overview

Questions

  • What are electromagnetic objects
  • How are electrons treated in CMS?
  • What variables are available in NanoAOD?

Objectives

  • Understand what electromagnetic objects are in CMS
  • Learn electron member functions for common track-based quantities
  • Learn variables for identification and isolation of electrons
  • Learn variables for electron detector-related quantities

Motivation


In this workshop we will do some simple analysis examples using NanoAOD Open Data. Physics objects that are detected in CMS have their properties measured and stored in the CMS data files. This and the following pages will introduce the different physics objects more deeply and try to explain several of the most important “branches” in NanoAOD ROOT “trees” for each type of object.

Electromagnetic objects


We call photons and electrons electromagnetic particles because they leave most of their energy in the electromagnetic calorimeter (ECAL) so they share many common properties.

Many of the different hypothetical exotic particles for which CMS scientists are searching are unstable. Some of these particles can transform, or decay, into electrons, photons, or both. Electrons and photons are also standard tools to measure better and understand the properties of already known particles. For example, one way to find a Higgs Boson is by looking for signs of either two photons or four electrons in the debris of high energy collisions. Because electrons and photons are crucial in so many different scenarios, the physicists in the CMS collaboration make sure to do their best to reconstruct and identify these objects.

As depicted in the figure above, tracks – from the pixel and silicon tracker systems – as well as ECAL energy deposits are used to identify the passage of electrons in CMS. Being charged, the solid red electron trajectory curves inside the CMS magnetic field. Photons (depicted with dashed lines above) are similar objects but with no tracks. Sophisticated algorithms are run in the reconstruction to take into account subtleties related to the identification of an electromagnetic particle. An example is the convoluted showering of sub-photons and sub-electrons that can reach the ECAL due to bremsstrahlung and photon conversions – in the animation, all three energy deposits shown in the ECAL would be grouped together as coming from one electron object.

From the tracks and energy clusters we can measure the electromagnetic particle’s momentum and energy as well as other properties that help analysts understand better their quality and origin.

Electron variables in NanoAOD


One example of a NanoAOD dataset on the Open Data Portal is the SingleElectron dataset. The “Dataset Semantics” section has a link to the variable list webpage. Each “collection” of objects in the NanoAOD file is linked by a common naming scheme (ex: Electron_*). The individual variables are shown in a table that includes the branch name, the data type, and a brief descriptive comment.

NanoAOD electron branches
Object property Type Description
Electron_charge Int_t electric charge
Electron_cleanmask UChar_t simple cleaning mask with priority to leptons
Electron_convVeto Bool_t pass conversion veto
Electron_cutBased Int_t cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)
Electron_cutBased_HEEP Bool_t cut-based HEEP ID
Electron_dEscaleDown Float_t ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)
Electron_dEscaleUp Float_t ecal energy scale shifted 1 sigma up(adding gain/stat/syst in quadrature)
Electron_dEsigmaDown Float_t ecal energy smearing value shifted 1 sigma up
Electron_dEsigmaUp Float_t ecal energy smearing value shifted 1 sigma up
Electron_deltaEtaSC Float_t delta eta (SC,ele) with sign
Electron_dr03EcalRecHitSumEt Float_t Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03HcalDepth1TowerSumEt Float_t Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03TkSumPt Float_t Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03TkSumPtHEEP Float_t Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV used in HEEP ID
Electron_dxy Float_t dxy (with sign) wrt first PV, in cm
Electron_dxyErr Float_t dxy uncertainty, in cm
Electron_dz Float_t dz (with sign) wrt first PV, in cm
Electron_dzErr Float_t dz uncertainty, in cm
Electron_eCorr Float_t ratio of the calibrated energy/miniaod energy
Electron_eInvMinusPInv Float_t 1/E_SC - 1/p_trk
Electron_energyErr Float_t energy error of the cluster-track combination
Electron_eta Float_t eta
Electron_hoe Float_t H over E
Electron_ip3d Float_t 3D impact parameter wrt first PV, in cm
Electron_isPFcand Bool_t electron is PF candidate
Electron_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)
Electron_jetNDauCharged UChar_t number of charged daughters of the closest jet
Electron_jetPtRelv2 Float_t Relative momentum of the lepton with respect to the closest jet after subtracting the lepton
Electron_jetRelIso Float_t Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)
Electron_lostHits UChar_t number of missing inner hits
Electron_mass Float_t mass
Electron_miniPFRelIso_all Float_t mini PF relative isolation, total (with scaled rho*EA PU corrections)
Electron_miniPFRelIso_chg Float_t mini PF relative isolation, charged component
Electron_mvaFall17V2Iso Float_t MVA Iso ID V2 score
Electron_mvaFall17V2Iso_WP80 Bool_t MVA Iso ID V2 WP80
Electron_mvaFall17V2Iso_WP90 Bool_t MVA Iso ID V2 WP90
Electron_mvaFall17V2Iso_WPL Bool_t MVA Iso ID V2 loose WP
Electron_mvaFall17V2noIso Float_t MVA noIso ID V2 score
Electron_mvaFall17V2noIso_WP80 Bool_t MVA noIso ID V2 WP80
Electron_mvaFall17V2noIso_WP90 Bool_t MVA noIso ID V2 WP90
Electron_mvaFall17V2noIso_WPL Bool_t MVA noIso ID V2 loose WP
Electron_mvaTTH Float_t TTH MVA lepton ID score
Electron_pdgId Int_t PDG code assigned by the event reconstruction (not by MC truth)
Electron_pfRelIso03_all Float_t PF relative isolation dR=0.3, total (with rho*EA PU corrections)
Electron_pfRelIso03_chg Float_t PF relative isolation dR=0.3, charged component
Electron_phi Float_t phi
Electron_photonIdx Int_t (index to Photon) index of the associated photon (-1 if none)
Electron_pt Float_t p_{T}
Electron_r9 Float_t R9 of the supercluster, calculated with full 5x5 region
Electron_scEtOverPt Float_t (supercluster transverse energy)/pt-1
Electron_seedGain UChar_t Gain of the seed crystal
Electron_sieie Float_t sigma_IetaIeta of the supercluster, calculated with full 5x5 region
Electron_sip3d Float_t 3D impact parameter significance wrt first PV, in cm
Electron_tightCharge Int_t Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)
Electron_vidNestedWPBitmap Int_t VID compressed bitmap (MinPtCut,GsfEleSCEtaMultiRangeCut,GsfEleDEtaInSeedCut,GsfEleDPhiInCut,GsfEleFull5x5SigmaIEtaIEtaCut,GsfEleHadronicOverEMEnergyScaledCut,GsfEleEInverseMinusPInverseCut,GsfEleRelPFIsoScaledCut,GsfEleConversionVetoCut,GsfEleMissingHitsCut), 3 bits per cut
Electron_vidNestedWPBitmapHEEP Int_t VID compressed bitmap (MinPtCut,GsfEleSCEtaMultiRangeCut,GsfEleDEtaInSeedCut,GsfEleDPhiInCut,GsfEleFull5x5SigmaIEtaIEtaWithSatCut,GsfEleFull5x5E2x5OverE5x5WithSatCut,GsfEleHadronicOverEMLinearCut,GsfEleTrkPtIsoCut,GsfEleEmHadD1IsoRhoCut,GsfEleDxyCut,GsfEleMissingHitsCut,GsfEleEcalDrivenCut), 1 bits per cut
nElectron UInt_t slimmedElectrons after basic selection (pt > 5 )

Electron 4-vector and track information

All CMS physics objects contain basic 4-vector information: transverse momentum, pseudorapidity (related to angle from one proton beam to the other), azimuthal angle (angle around the cylinder of CMS), and mass or energy. This information can easily be converted into a 4-vector of px, py, pz, and energy.

electron 4-vector branches
Object property Type Description
Electron_eta Float_t eta
Electron_mass Float_t mass
Electron_phi Float_t phi
Electron_pt Float_t p_T, transverse momentum

Most charged physics objects are also connected to tracks from the CMS tracking detectors, and therefore the electric charge can be identified from the track curvature. Electron charge can be computed from 3 unique algorithms, so a tightCharge variable exists to show when multiple of the charge determinations agree. Information from tracks provides other kinematic quantities that are common to multiple types of objects. It is often interesting to check the impact parameter of a charged object’s track with respect to the primary collision vertex, since this gives a good idea of whether or not that particle emerged directly from that particular collision or not. We can access the impact parameters in the xy-plane (dxy or d0) and along the beam axis (dz), as well as their respective uncertainties. There is also a 3D impact parameter significance that is very useful for identifying leptons that emerged from a heavy flavor hadron decay, since those leptons will usually have a larger 3D impact parameter.

electron track-related branches
Object property Type Description
Electron_charge Int_t electric charge
Electron_dxy Float_t dxy (with sign) wrt first PV, in cm
Electron_dxyErr Float_t dxy uncertainty, in cm
Electron_dz Float_t dz (with sign) wrt first PV, in cm
Electron_dzErr Float_t dz uncertainty, in cm
Electron_sip3d Float_t 3D impact parameter significance wrt first PV, in cm
Electron_tightCharge Int_t Tight charge criteria (0:none, 1:isGsfScPixChargeConsistent, 2:isGsfCtfScPixChargeConsistent)
Callout

Track-based info for photons

Note: in the case of Photons, since they are neutral objects, they do not have a direct track link. While the charge variable exists for all objects, it is not used in photon analyses.

Detector information for identification

The most signicant difference between a list of certain particles from a simulation and a list of the corresponding physics objects from CMS data is likely the inherent uncertainty in the reconstruction. Selection of “a muon” or “an electron” for analysis requires algorithms designed to separate “real” objects from “fakes”. These are called identification algorithms.

Other algorithms are designed to measure the amount of energy deposited near the object, to determine if it was likely produced near the primary interaction (typically little nearby energy), or from the decay of a longer-lived particle (typically a lot of nearby energy). These are called isolation algorithms. Many types of isolation algorithms exist to deal with unique physics cases!

Both types of algorithms function using working points that are described on a spectrum from “loose” to “tight”. Working points that are “looser” tend to have a high efficiency for accepting real objects, but perhaps a poor rejection rate for “fake” objects. Working points that are “tighter” tend to have lower efficiencies for accepting real objects, but much better rejection rates for “fake” objects. The choice of working point is highly analysis dependent! Some analyses value efficiency over background rejection, and some analyses are the opposite.

The standard identification and isolation algorithm results can be accessed from the physics object classes.

Multivariate Electron Identification (MVA)

In the Multi-variate Analysis (MVA) approach, simple machine learning networks are trained on multiple parameters of the electron object, and the network’s output value (which typically spans from 0 to 1) can be used to separate real electrons from fake electrons. Analysts choose a particular numerical value to use as the division point between real objects (with values higher that the cut) and fake objects (with values lower than the cut). There are two basic types of MVAs that are were trained by CMS for 2016 electrons:

  • MVA with isolation: the MVA includes standard particle-flow isolation as one of the variables used for training. This MVA is well suited for analyses considering typical prompt electrons that are likely to be isolated from jets or other objects.
  • MVA without isolation: no isolation variables are included for training. This MVA is better suited for analyses in which the electrons might be poorly isolated from jets or other objects.

Both MVAs were assigned working points with 80% efficiency (WP80), 90% efficiency (WP90), and a very high efficiency (“loose”)

electron MVA ID
Object property Type Description
Electron_mvaFall17V2Iso Float_t MVA Iso ID V2 score
Electron_mvaFall17V2Iso_WP80 Bool_t MVA Iso ID V2 WP80
Electron_mvaFall17V2Iso_WP90 Bool_t MVA Iso ID V2 WP90
Electron_mvaFall17V2Iso_WPL Bool_t MVA Iso ID V2 loose WP
Electron_mvaFall17V2noIso Float_t MVA noIso ID V2 score
Electron_mvaFall17V2noIso_WP80 Bool_t MVA noIso ID V2 WP80
Electron_mvaFall17V2noIso_WP90 Bool_t MVA noIso ID V2 WP90
Electron_mvaFall17V2noIso_WPL Bool_t MVA noIso ID V2 loose WP

Cut Based Electron ID

Electron identification can also be evaluated without MVAs, using a set of “cut-based” identification criteria:

electron cut-based ID
Object property Type Description
Electron_cutBased Int_t cut-based ID Fall17 V2 (0:fail, 1:veto, 2:loose, 3:medium, 4:tight)
Electron_cutBased_HEEP Bool_t cut-based HEEP ID

Four standard working points are provided

  • Veto (average efficiency ~95%). Use this working point for vetoing events with more leptons than you want.
  • Loose (average efficiency ~90%). Use this working point when backgrounds are rather low.
  • Medium (average efficiency ~80%). This is a good starting point for generic measurements involving W or Z bosons.
  • Tight (average efficiency ~70%). Use this working point for measurements where backgrounds are a serious problem.

All of the cut-based working points include particle-flow isolation requirements. The HEEP identifier is specifically intended to improve efficiency for high-energy electrons with more than 100-200 GeV of transverse momentum.

Electron isolation

Isolation is computed in similar ways for all physics objects: search for particles in a cone around the object of interest and sum up their energies, subtracting off the energy deposited by particles from other simultaneous collisions. This sum divided by the object’s transverse momentum is called relative isolation and is the most common way to determine whether an object was produced “promptly” in or following the proton-proton collision (ex: electrons from a Z boson decay, or photons from a Higgs boson decay). Relative isolation values will tend to be large for electrons that emerged from decays of hadrons within jets, or other similar “nonprompt” processes.

While many of the electron identification algorithms include isolation, the isolation values are also available:

electron isolation
Object property Type Description
Electron_dr03EcalRecHitSumEt Float_t Non-PF Ecal isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03HcalDepth1TowerSumEt Float_t Non-PF Hcal isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03TkSumPt Float_t Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV
Electron_dr03TkSumPtHEEP Float_t Non-PF track isolation within a delta R cone of 0.3 with electron pt > 35 GeV used in HEEP ID
Electron_pfRelIso03_all Float_t PF relative isolation dR=0.3, total (with rho*EA PU corrections)
Electron_pfRelIso03_chg Float_t PF relative isolation dR=0.3, charged component

Electron cross-reference indices

Electrons can be associated with both jets and photons based on the particle-flow algorithm. Since the jet and photon collections have independent array structures, the indices of the matched jet or photon is provided in the electron collection:

jet and photon index branches
Object property Type Description
Electron_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)
Electron_photonIdx Int_t (index to Photon) index of the associated photon (-1 if none)

Photons


Since photons are also primarily reconstructed as electromagnetic calorimeter showers, the vast majority of their reconstruction methods are common with electrons. Photons also have 4-vector, identification, and isolation information available in NanoAOD

photon collection branches
Object property Type Description
Photon_charge Int_t electric charge
Photon_cleanmask UChar_t simple cleaning mask with priority to leptons
Photon_cutBased Int_t cut-based ID bitmap, Fall17V2, (0:fail, 1:loose, 2:medium, 3:tight)
Photon_cutBased_Fall17V1Bitmap Int_t cut-based ID bitmap, Fall17V1, 2^(0:loose, 1:medium, 2:tight).
Photon_dEscaleDown Float_t ecal energy scale shifted 1 sigma down (adding gain/stat/syst in quadrature)
Photon_dEscaleUp Float_t ecal energy scale shifted 1 sigma up (adding gain/stat/syst in quadrature)
Photon_dEsigmaDown Float_t ecal energy smearing value shifted 1 sigma up
Photon_dEsigmaUp Float_t ecal energy smearing value shifted 1 sigma up
Photon_eCorr Float_t ratio of the calibrated energy/miniaod energy
Photon_electronIdx Int_t (index to Electron) index of the associated electron (-1 if none)
Photon_electronVeto Bool_t pass electron veto
Photon_energyErr Float_t energy error of the cluster from regression
Photon_eta Float_t eta
Photon_hoe Float_t H over E
Photon_isScEtaEB Bool_t is supercluster eta within barrel acceptance
Photon_isScEtaEE Bool_t is supercluster eta within endcap acceptance
Photon_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)
Photon_mass Float_t mass
Photon_mvaID Float_t MVA ID score, Fall17V2
Photon_mvaID_Fall17V1p1 Float_t MVA ID score, Fall17V1p1
Photon_mvaID_WP80 Bool_t MVA ID WP80, Fall17V2
Photon_mvaID_WP90 Bool_t MVA ID WP90, Fall17V2
Photon_pdgId Int_t PDG code assigned by the event reconstruction (not by MC truth)
Photon_pfRelIso03_all Float_t PF relative isolation dR=0.3, total (with rho*EA PU corrections)
Photon_pfRelIso03_chg Float_t PF relative isolation dR=0.3, charged component (with rho*EA PU corrections)
Photon_phi Float_t phi
Photon_pixelSeed Bool_t has pixel seed
Photon_pt Float_t p_{T}
Photon_r9 Float_t R9 of the supercluster, calculated with full 5x5 region
Photon_seedGain UChar_t Gain of the seed crystal
Photon_sieie Float_t sigma_IetaIeta of the supercluster, calculated with full 5x5 region
Photon_vidNestedWPBitmap Int_t Fall17V2 VID compressed bitmap (MinPtCut,PhoSCEtaMultiRangeCut,PhoSingleTowerHadOverEmCut,PhoFull5x5SigmaIEtaIEtaCut,PhoGenericRhoPtScaledCut,PhoGenericRhoPtScaledCut,PhoGenericRhoPtScaledCut), 2 bits per cut
nPhoton UInt_t slimmedPhotons after basic selection (pt > 5 )
Key Points
  • Quantities such as impact parameters and charge have common member functions.
  • Physics objects in CMS are reconstructed from detector signals and are never 100% certain!
  • Identification and isolation algorithms are important for reducing fake objects.

Content from Muons & Tau leptons


Last updated on 2026-07-16 | Edit this page

Overview

Questions

  • How are muons reconstructed in CMS?
  • How are muons treated in CMS OpenData?
  • How are tau leptons reconstructed in CMS?

Objectives

  • Understand how muons are reconstructed in CMS
  • Learn variables for muon track-based quantities
  • Learn variables for identification and isolation of muons
  • Learn the basic elements of tau lepton reconstruction

Overview of muon reconstruction


Muons are the M in CMS (Compact Muon Solenoid). This is in part because they are reconstructed using all the CMS sub-detectors. As it nicely summarized here:

[A muon] is measured by fitting a curve to the hits registered in the four muon stations, which are located outside of the magnet coil, interleaved with iron “return yoke” plates. The particle path is measured by tracking its position through the multiple active layers of each station; for improved precision, this information is combined with the CMS silicon tracker measurements. Measuring the trajectory provides a measurement of particle momentum. Indeed, the strong magnetic field generated by the CMS solenoid bends the particle’s trajectory, with a bending radius that depends on its momentum: the more straight the track, the higher the momentum.

While uons can be reconstructed using only the muon system, the best measurements come from combining information from the muon detectors and the tracking detectors. Muons that leave clear signals in both of these detectors are called “global muons”. Muons have many features in common with electrons, but their own unique identification algorithms. We will use the same NanoAOD file as in the previous episode to look at the Muon NanoAOD branches.

NanoAOD muon collection variables
Object property Type Description
Muon_charge Int_t electric charge
Muon_cleanmask UChar_t simple cleaning mask with priority to leptons
Muon_dxy Float_t dxy (with sign) wrt first PV, in cm
Muon_dxyErr Float_t dxy uncertainty, in cm
Muon_dxybs Float_t dxy (with sign) wrt the beam spot, in cm
Muon_dz Float_t dz (with sign) wrt first PV, in cm
Muon_dzErr Float_t dz uncertainty, in cm
Muon_eta Float_t eta
Muon_fsrPhotonIdx Int_t (index to Fsrphoton) Index of the associated FSR photon
Muon_highPtId UChar_t high-pT cut-based ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)
Muon_highPurity Bool_t inner track is high purity
Muon_inTimeMuon Bool_t inTimeMuon ID
Muon_ip3d Float_t 3D impact parameter wrt first PV, in cm
Muon_isGlobal Bool_t muon is global muon
Muon_isPFcand Bool_t muon is PF candidate
Muon_isStandalone Bool_t muon is a standalone muon
Muon_isTracker Bool_t muon is tracker muon
Muon_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)
Muon_jetNDauCharged UChar_t number of charged daughters of the closest jet
Muon_jetPtRelv2 Float_t Relative momentum of the lepton with respect to the closest jet after subtracting the lepton
Muon_jetRelIso Float_t Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)
Muon_looseId Bool_t muon is loose muon
Muon_mass Float_t mass
Muon_mediumId Bool_t cut-based ID, medium WP
Muon_mediumPromptId Bool_t cut-based ID, medium prompt WP
Muon_miniIsoId UChar_t MiniIso ID from miniAOD selector (1=MiniIsoLoose, 2=MiniIsoMedium, 3=MiniIsoTight, 4=MiniIsoVeryTight)
Muon_miniPFRelIso_all Float_t mini PF relative isolation, total (with scaled rho*EA PU corrections)
Muon_miniPFRelIso_chg Float_t mini PF relative isolation, charged component
Muon_multiIsoId UChar_t MultiIsoId from miniAOD selector (1=MultiIsoLoose, 2=MultiIsoMedium)
Muon_mvaId UChar_t Mva ID from miniAOD selector (1=MvaLoose, 2=MvaMedium, 3=MvaTight, 4=MvaVTight, 5=MvaVVTight)
Muon_mvaLowPt Float_t Low pt muon ID score
Muon_mvaLowPtId UChar_t Low Pt Mva ID from miniAOD selector (1=LowPtMvaLoose, 2=LowPtMvaMedium)
Muon_mvaTTH Float_t TTH MVA lepton ID score
Muon_nStations Int_t number of matched stations with default arbitration (segment & track)
Muon_nTrackerLayers Int_t number of layers in the tracker
Muon_pdgId Int_t PDG code assigned by the event reconstruction (not by MC truth)
Muon_pfIsoId UChar_t PFIso ID from miniAOD selector (1=PFIsoVeryLoose, 2=PFIsoLoose, 3=PFIsoMedium, 4=PFIsoTight, 5=PFIsoVeryTight, 6=PFIsoVeryVeryTight)
Muon_pfRelIso03_all Float_t PF relative isolation dR=0.3, total (deltaBeta corrections)
Muon_pfRelIso03_chg Float_t PF relative isolation dR=0.3, charged component
Muon_pfRelIso04_all Float_t PF relative isolation dR=0.4, total (deltaBeta corrections)
Muon_phi Float_t phi
Muon_pt Float_t pt
Muon_ptErr Float_t ptError of the muon track
Muon_puppiIsoId UChar_t PuppiIsoId from miniAOD selector (1=Loose, 2=Medium, 3=Tight)
Muon_segmentComp Float_t muon segment compatibility
Muon_sip3d Float_t 3D impact parameter significance wrt first PV
Muon_softId Bool_t soft cut-based ID
Muon_softMva Float_t soft MVA ID score
Muon_softMvaId Bool_t soft MVA ID
Muon_tightCharge Int_t Tight charge criterion using pterr/pt of muonBestTrack (0:fail, 2:pass)
Muon_tightId Bool_t cut-based ID, tight WP
Muon_tkIsoId UChar_t TkIso ID (1=TkIsoLoose, 2=TkIsoTight)
Muon_tkRelIso Float_t Tracker-based relative isolation dR=0.3 for highPt, trkIso/tunePpt
Muon_triggerIdLoose Bool_t TriggerIdLoose ID
Muon_tunepRelPt Float_t TuneP relative pt, tunePpt/pt
nMuon UInt_t slimmedMuons after basic selection (pt > 15

These branches for muons are very similar to those we saw earlier for electrons:

  • pt, eta, phi, and mass form the 4-vector
  • charge and tightCharge give electric charge information
  • dxy, dz, ip3d, and their uncertainties or significances give impact parameter information
muon 4-vector and track-related branches
Object property Type Description
Muon_charge Int_t electric charge
Muon_dxy Float_t dxy (with sign) wrt first PV, in cm
Muon_dxyErr Float_t dxy uncertainty, in cm
Muon_dxybs Float_t dxy (with sign) wrt the beam spot, in cm
Muon_dz Float_t dz (with sign) wrt first PV, in cm
Muon_dzErr Float_t dz uncertainty, in cm
Muon_eta Float_t eta
Muon_ip3d Float_t 3D impact parameter wrt first PV, in cm
Muon_mass Float_t mass
Muon_phi Float_t phi
Muon_pt Float_t pt
Muon_sip3d Float_t 3D impact parameter significance wrt first PV
Muon_tightCharge Int_t Tight charge criterion using pterr/pt of muonBestTrack (0:fail, 2:pass)

Muon identification and isolation

The CMS Muon object group has several identification algorithms and the pass/fail decisions for several working points are stored in NanoAOD. A set of cut-based identification working points are available: looseId, mediumId, mediumPromptId, softId, highPtId. Another set of identification algorithms are based on MVA discriminants: mvaId, mvaLowPtId, mvaTTH, softMvaId.

Muon identification variables
Object property Type Description
Muon_highPtId UChar_t high-pT cut-based ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)
Muon_looseId Bool_t muon is loose muon
Muon_mediumId Bool_t cut-based ID, medium WP
Muon_mediumPromptId Bool_t cut-based ID, medium prompt WP
Muon_mvaId UChar_t Mva ID from miniAOD selector (1=MvaLoose, 2=MvaMedium, 3=MvaTight, 4=MvaVTight, 5=MvaVVTight)
Muon_mvaLowPtId UChar_t Low Pt Mva ID from miniAOD selector (1=LowPtMvaLoose, 2=LowPtMvaMedium)
Muon_mvaTTH Float_t TTH MVA lepton ID score
Muon_softId Bool_t soft cut-based ID
Muon_softMvaId Bool_t soft MVA ID
Muon_tightId Bool_t cut-based ID, tight WP

Just as we discussed for electrons, muons that are produced right away during a collision are usually separated from the other objects in the event, or isolated. For instance, an isolated muon might be produced in the decay of a W boson. In contrast, a non-isolated muon might come from hadrons decaying inside a jet.

Muon isolation is calculated from a combination of factors: energy from charged hadrons, energy from neutral hadrons, and energy from photons, all in a cone around the muon. Two cone sizes are used: either radii of 0.3 or 0.4, measured in angular units. Many algorithms also feature a correction factor that subtracts average energy expected from extra simultaneous collisions to this cone. This energy sum is then divided by the muon’s transverse momentum to form “relative” isolation. The whole calculation looks like this:

\(I_{\mu} = \frac{1}{p_{T}} \sum_{R<0.4} \left( p_{T}^{\mathrm{charged\,hadrons}} + \max(p_{T}^{\mathrm{photons}} + p_{T}^{\mathrm{neutral\,hadrons}} - \beta p_{T}^{\mathrm{charged\,pileup}} , 0) \right)\)

Many forms of muon isolation are stored in NanoAOD, as shown in the table. The primary particle-flow isolation variable is Muon_pfIsoId. Another type of isolation in common us is “mini”-isolation, Muon_miniIsoId, which adapts the size of the cone to improve efficiency for leptons that might exist near jets because they were decay products of a high-momentum particle, such as a top quark.

Muon isolation variables
Object property Type Description
Muon_jetRelIso Float_t Relative isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)
Muon_miniIsoId UChar_t MiniIso ID from miniAOD selector (1=MiniIsoLoose, 2=MiniIsoMedium, 3=MiniIsoTight, 4=MiniIsoVeryTight)
Muon_miniPFRelIso_all Float_t mini PF relative isolation, total (with scaled rho*EA PU corrections)
Muon_miniPFRelIso_chg Float_t mini PF relative isolation, charged component
Muon_multiIsoId UChar_t MultiIsoId from miniAOD selector (1=MultiIsoLoose, 2=MultiIsoMedium)
Muon_pfIsoId UChar_t PFIso ID from miniAOD selector (1=PFIsoVeryLoose, 2=PFIsoLoose, 3=PFIsoMedium, 4=PFIsoTight, 5=PFIsoVeryTight, 6=PFIsoVeryVeryTight)
Muon_pfRelIso03_all Float_t PF relative isolation dR=0.3, total (deltaBeta corrections)
Muon_pfRelIso03_chg Float_t PF relative isolation dR=0.3, charged component
Muon_pfRelIso04_all Float_t PF relative isolation dR=0.4, total (deltaBeta corrections)
Muon_puppiIsoId UChar_t PuppiIsoId from miniAOD selector (1=Loose, 2=Medium, 3=Tight)
Muon_tkIsoId UChar_t TkIso ID (1=TkIsoLoose, 2=TkIsoTight)
Muon_tkRelIso Float_t Tracker-based relative isolation dR=0.3 for highPt, trkIso/tunePpt

Muon cross-reference indices

Like electrons, muons can be cross-referenced to other arrays in the NanoAOD file:

Muon cross-reference indices
Object property Type Description
Muon_fsrPhotonIdx Int_t (index to Fsrphoton) Index of the associated FSR photon
Muon_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)

Tau leptons


The CMS Tau object group relies almost entirely on pre-computed algorithms to determine the quality of the tau reconstruction and the decay type. Since this object is not stable and has several decay modes, different combinations of identification and isolation algorithms are used across different analyses. The Run 1 Tau ID page and Nutshell Recipe provide a large table of algorithms that remains a valuable reference.

Taus that decay to leptons are typically identified as electrons or muons in CMS. But taus that decay to hadrons can be identified in the calorimeters based on the characteristic size and shape of their clusters.

Tau collection branches
Object property Type Description
Tau_charge Int_t electric charge
Tau_chargedIso Float_t charged isolation
Tau_cleanmask UChar_t simple cleaning mask with priority to leptons
Tau_decayMode Int_t decayMode()
Tau_dxy Float_t d_{xy} of lead track with respect to PV, in cm (with sign)
Tau_dz Float_t d_{z} of lead track with respect to PV, in cm (with sign)
Tau_eta Float_t eta
Tau_idAntiEleDeadECal Bool_t Anti-electron dead-ECal discriminator
Tau_idAntiMu UChar_t Anti-muon discriminator V3: : bitmask 1 = Loose, 2 = Tight
Tau_idDecayModeOldDMs Bool_t tauID(‘decayModeFinding’)
Tau_idDeepTau2017v2p1VSe UChar_t byDeepTau2017v2p1VSe ID working points (deepTau2017v2p1): bitmask 1 = VVVLoose, 2 = VVLoose, 4 = VLoose, 8 = Loose, 16 = Medium, 32 = Tight, 64 = VTight, 128 = VVTight
Tau_idDeepTau2017v2p1VSjet UChar_t byDeepTau2017v2p1VSjet ID working points (deepTau2017v2p1): bitmask 1 = VVVLoose, 2 = VVLoose, 4 = VLoose, 8 = Loose, 16 = Medium, 32 = Tight, 64 = VTight, 128 = VVTight
Tau_idDeepTau2017v2p1VSmu UChar_t byDeepTau2017v2p1VSmu ID working points (deepTau2017v2p1): bitmask 1 = VLoose, 2 = Loose, 4 = Medium, 8 = Tight
Tau_jetIdx Int_t (index to Jet) index of the associated jet (-1 if none)
Tau_leadTkDeltaEta Float_t eta of the leading track, minus tau eta
Tau_leadTkDeltaPhi Float_t phi of the leading track, minus tau phi
Tau_leadTkPtOverTauPt Float_t pt of the leading track divided by tau pt
Tau_mass Float_t mass
Tau_neutralIso Float_t neutral (photon) isolation
Tau_phi Float_t phi
Tau_photonsOutsideSignalCone Float_t sum of photons outside signal cone
Tau_pt Float_t pt
Tau_puCorr Float_t pileup correction
Tau_rawDeepTau2017v2p1VSe Float_t byDeepTau2017v2p1VSe raw output discriminator (deepTau2017v2p1)
Tau_rawDeepTau2017v2p1VSjet Float_t byDeepTau2017v2p1VSjet raw output discriminator (deepTau2017v2p1)
Tau_rawDeepTau2017v2p1VSmu Float_t byDeepTau2017v2p1VSmu raw output discriminator (deepTau2017v2p1)
Tau_rawIso Float_t combined isolation (deltaBeta corrections)
Tau_rawIsodR03 Float_t combined isolation (deltaBeta corrections, dR=0.3)
nTau UInt_t slimmedTaus after basic selection (pt > 18 && tauID(‘decayModeFindingNewDMs’) && (tauID(‘byLooseCombinedIsolationDeltaBetaCorr3Hits’)

Tau identification variables

The following variables in the tau collection represent the identification and isolation variables.

Tau identification variables
Object property Type Description
Tau_decayMode Int_t decayMode()
Tau_idAntiEleDeadECal Bool_t Anti-electron dead-ECal discriminator
Tau_idAntiMu UChar_t Anti-muon discriminator V3: : bitmask 1 = Loose, 2 = Tight
Tau_idDecayModeOldDMs Bool_t tauID(‘decayModeFinding’)
Tau_idDeepTau2017v2p1VSe UChar_t byDeepTau2017v2p1VSe ID working points (deepTau2017v2p1): bitmask 1 = VVVLoose, 2 = VVLoose, 4 = VLoose, 8 = Loose, 16 = Medium, 32 = Tight, 64 = VTight, 128 = VVTight
Tau_idDeepTau2017v2p1VSjet UChar_t byDeepTau2017v2p1VSjet ID working points (deepTau2017v2p1): bitmask 1 = VVVLoose, 2 = VVLoose, 4 = VLoose, 8 = Loose, 16 = Medium, 32 = Tight, 64 = VTight, 128 = VVTight
Tau_idDeepTau2017v2p1VSmu UChar_t byDeepTau2017v2p1VSmu ID working points (deepTau2017v2p1): bitmask 1 = VLoose, 2 = Loose, 4 = Medium, 8 = Tight
Tau_rawIso Float_t combined isolation (deltaBeta corrections)
Tau_rawIsodR03 Float_t combined isolation (deltaBeta corrections, dR=0.3)

Other tau information

Information about the tau lepton 4-vectors, cross-reference indices, impact parameters, etc, are analogous to the variables for electrons and muons.

Key Points
  • Track access may differ, but track-related member functions are common across objects.
  • Physics objects in CMS are reconstructed from detector signals and are never 100% certain!
  • Muons typically use pre-configured identification and isolation variables”

Content from Jets and MET


Last updated on 2026-07-16 | 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, calorimeters, and muon detectors 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


When a quark or gluon travels through the detector material, it creates a dense shower of long-lived particles. These particles can be clustered together into “jets”. The momentum and energy of a jet resembles that of the initial quark or gluon that produced it. In the CMS language, jets are made up of many particles, with the following predictable energy composition:

  • ~65% charged hadrons
  • ~25% photons (usually produced when neutral pi mesons decay)
  • ~10% neutral hadrons

Jets are very messy! Hadron showers can produce 100s of particles near each other in the CMS detector, so 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.

As we’ve learned, the result of the CMS Particle Flow algorithm is a list of particle candidates. 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 highest momentum particle.

Pileup

Inevitably, the list of particle flow candidates contains particles that did not originate from the primary collision. 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 PF candidates are associated with a track. If the track is not connected 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 since those candidates have no tracks.
  • 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 performs very well 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 the next page.

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”. In a perfect collision, the colliding particles would have exactly 0 momentum in the \(x\) or \(y\) direction. If all of the collision products are detecter perfectly in CMS, the “missing” momentum found when we calculate this vector sum would also be 0. In real life, some particles are not detected at all by CMS, and all particles are measured with slight imperfections, creating MET. Types of particles that would produce “real” MET include neutrinos, dark matter particles, or other exotic particles that would not interact in CMS.

Object property Type Description
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

Content from Jet flavor tagging


Last updated on 2026-07-16 | Edit this page

Overview

Questions

  • How are b hadrons identified in CMS?
  • How are the parent particles of large-radius jets identified in CMS?

Objectives

  • Understand the basics of heavy flavor tagging
  • Learn to access tagging information in NanoAOD files

Jet reconstruction and identification is an important part of the analyses at the LHC. Jets can originate from many different types of particles. The figure below gives an example of how different “parent particles” can influence the internal structure of a jet. Observables related to the mass and internal structure of a jet can help us design algorithms to distinguish between sources.

Several “b tagging” algorithms exist to identify jets from b quarks, which have unique properties that distinguish them from light quark or gluon jets.

B Tagging Algorithms


Tagging algorithms first connect jets with particle tracks that are either connected to one of the jet’s particle flow candidates, or lie within a nearby cone. Both tracks and “secondary vertices” (points where multiple tracks emerge within a jet) can be used in track-based, vertex-based, or “combined” tagging algorithms. The specific details depend upon the algorithm, but they all rely on special properties of b hadrons such as:

  • long lifetime compared to other particles produced in a collision, which allows b hadrons to travel away from the collision before decaying,
  • large mass,
  • high number of tracks compared to other types of quark jets,
  • higher probability of producing a low-momentum electron or muon.

In recent CMS Open Data, the most important b-tagging algorithms are:

  • Combined Secondary Vertex (CSV): many properties of jets, tracks, and secondary vertices are combined into a “boosted decision tree”, which is a simple form of machine learning. This tagger became the default CMS algorithm in Run 1 and early Run 2.
  • DeepCSV: the CSV algorithm was reimagined as a deep neural network.
  • DeepJet: this deep neural network tagger uses a more complex architecture than DeepCSV, and is the most powerful b tagging algorithm for Run 2.

These algorithms produce a single, real number called a b tagging “discriminator” for each jet. The more positive the discriminator value, the more likely it is that this jet contained b hadrons. The DeepCSV and DeepJet algorithms can also identify charm-flavor jets, and DeepJet can even distinguish between light-quark and gluon jets.

NanoAOD b tagging discriminators
Object property Type Description
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

Working points

A jet is considered “b tagged” if the discriminator value exceeds some threshold. Different thresholds will have different efficiencies for identifying true b quark jets and for mis-tagging light quark jets. As we saw for muons and other objects, a “loose” working point will allow the highest mis-tagging rate, while a “tight” working point will sacrifice some correct-tag efficiency in order to reduce mis-tagging. The DeepCSV and DeepJet algorithms are supported by CMS for 2016 Open Data.

The supported working points for DeepCSV and DeepJet for the 2016 Open Data are:

  • Loose (10% misidentification rate): Jet_btagDeepB > 0.1918 , Jet_btagDeepFlav > 0.0480
  • Medium (1% misidentification rate): Jet_btagDeepB > 0.5847, Jet_btagDeepFlav > 0.2489
  • Tight (0.1% misidentification rate): Jet_btagDeepB > 0.8767, Jet_btagDeepFlav > 0.6377

The figure below shows the relationship between b jet efficiency and working point in DeepCSV and DeepJet:

Figure from the DeepJet paper
Figure from the DeepJet paper

FatJet tagging algorithms


In CMS NanoAOD, the “fat” jets have a larger cone size than standard jets. These larger jets are ideal for identifying top quarks or W, Z, or Higgs bosons that have been produced with high momentum and have decayed to several quarks. All of these decay products can be caught within one large-radius jet cone. Several identification algorithms are used in CMS to tell the different sources apart.

Groomed mass and substructure

The mass of a jet is evaluated by summing the energy-momentum four-vectors of all the particle flow candidates that make up the jet and computing the mass of the resulting object. This mass calculation is distorted by gluons that radiate energy away from the initial particles that formed the jet. For example, the masses of light quark jets are measured to be much larger than the actual masses of these quarks – typically 10–50 GeV. Mass Grooming procedures can help reduce the impact of this radiation and bring the jet mass closer to the true values of the parent particles. Grooming algorithms typically cluster the jet’s consitituents into “subjets”, like those represented by the small circles in the figure below. The relationships between different subjets can then be tested to decide which to keep.

The “softdrop” mass is included in NanoAOD for large-radius jets. In the “softdrop” procedure, jets are recursively de-clustered, and at each step subjets that are too low in momentum or large angles separating them from other subjets are discarded. The following image shows the relationship between FatJet momentum, mass, and jet radius. As the momentum increases, jets of larger mass become contained within the FatJet. While W bosons with a mass of 80 GeV can be observed from 200 GeV, top quarks with a mass of 170 GeV require a higher momentum threshold.

The internal structure of a jet can be probed using many observables: N-subjettiness, energy correlation functions, and others. In CMS, N-subjettiness is the default jet substructure variable for identifying boosted particle decays.

The “tau” variables of N-subjettiness, defined below, are jet shape variables whose value approaches 0 for jets having N or fewer subjets. Top quarks typically decay to 3 quarks, so we would expect small tau values for N = 3, 4, 5, 6, etc, but larger values for N = 1 or 2.

\(\tau_{N} = \frac{\sum^{n_{\mathrm{constituents}}}_{i=1} p_{\mathrm{T},i} \min{\Delta R_{1,i}, \Delta R_{2,i}, \ldots, \Delta R_{N,i}}}{\sum^{n_{\mathrm{constituents}}}_{i=1} p_{T,i}R}\)

Ratios of tau values provide the best discrimination for jets with a specific number of subjets. For two-quark jets like W, Z, or H boson decays, we study the ratio tau_2 / tau_1. For three-quark jets we study tau_3 / tau_2.

The figures below show the relevant tau ratios for W boson (left) and top quark (right) jets. The structure in the tau_2/tau_1 plot is very unique: W bosons pool at lower values of tau_2/tau_1, while top quarks (with more than 2 subjets) and light quarks (with only 1 subjet) pool at medium and higher values. In the tau_3/tau_2 plot, top quark jets have low values while both W boson and light quark jets are gathered near 1.

|

For top quark or H boson decays, applying b tagging algorithms to the subjets of the large-radius jets gives another valuable substructure observable. The Combined Secondary Vertex v2 and the DeepCSV discriminants have been stored for the two subjets obtained from the soft drop algorithm in each large-radius jet. For simulation, we also store the generator-level flavor information for the subjet. You can explore the “Subjet” branches in NanoAOD here

Finally, NanoAOD contains some energy correlation function information for large-radius jets. The N2 and N3 functions are described in detail in a CMS paper on boosted jet identification.

Groomed mass, jet substructure, and subjet b-tagging were the backbone of early boosted jet identification in CMS. The figure below shows an example of isolating top quark jets by applying various mass and substructure criteria. However, these algorithms have now been eclipsed by deep neural network identification techniques.

FatJet branches for traditional jet substructure
Object property Type Description
FatJet_msoftdrop Float_t Corrected soft drop mass with PUPPI
FatJet_n2b1 Float_t N2 with beta=1
FatJet_n3b1 Float_t N3 with beta=1
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)

Deep Neural Network taggers

During Run 2, CMS analysts developed many neural network identification schemes for large-radius jets. The best performers have been preserved in the version of NanoAOD available for Open Data. The main algorithms are:

  • DeepDoubleX (or “double-b”): a Boosted Decision Tree optimized for decays of massive particles to a pair of b or c quarks.
  • DeepBoostedJet (or “DeepAK8”): a Convolutional Neural Network combined with a dense network that uses particle-flow candidates and secondary vertices to determine the parent particle of the jet
  • ParticleNet: a Dynamic Graph Convolutional Neural Network applied on “point cloud” data structures built from the particle-flow candidates within a jet.

The deep network taggers provide discriminants for many different particle hypotheses. These are typically grouped into “binarized” discriminants intended to separate a particular massive particle (top, Higgs, etc) from light quark jets. Both DeepAK8 and ParticleNet offer “mass-decorrelated” discriminants, for which the network has been trained in such a way that jet mass is not part of the learning process. For analyses that use the jet mass distribution as a key sensitive variable, decorrelation helps maintain a smoothly falling light-quark jet mass distribution, with no artificial peak near the region of interest (eg, near 125 GeV for Higgs bosons, or new 170 GeV for top quarks).

The branches available in NanoAOD for the deep network taggers are listed below.

FatJet branches for deep network taggers
Object property Type Description
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_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_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
Key Points
  • Tagging algorithms separate heavy flavor jets from jets produced by the hadronization of light quarks and gluons
  • FatJet tagging algorithms can identify jets from massive SM particles
  • Tagging algorithms produce a disriminator value for each jet that represents the likelihood that the jet came from a particular particle
  • Each tagging algorithm has recommended ‘working points’ (discriminator values) based on a misidentification probability for non-interesting jets