7.7   MET Analysis

Introduction to missing transverse momentum (MET) in CMSSW

7.7.1   Introduction

Missing transverse momentum (MET) is the imbalance in the transverse momentum of all visible particles, particles which interact with the electromagnetic or strong forces, in the final state of collisions. Because momentum is conserved in each direction, MET is the transverse momentum that must have been carried by something invisible. Neutrinos, for example, are invisible particles; therefore, MET is an estimate of transverse momentum of neutrinos. We use MET in measurements of W bosons, top quarks, and tau leptons as these particles can decay into neutrinos. Further, many models of physics beyond the Standard Model predict the existence of particles or something else which are invisible and can carry momentum; e.g., Dark Matter models, supersymmetric models, unparticle models, and models with large extra dimensions. For this reason, we use MET to test such models.

Accurate reconstruction of MET is demanding because it entails reconstruction of all visible particles in an event with precision. This requires a hermetic detector which can detect all particles which electromagnetically or strongly interact with matter. With its highly granular electromagnetic calorimeters, hermetic hadronic calorimeters, redundant muon systems, and all silicon trackers in a strong magnetic field, the CMS detector meets the requirement.

MET is informally referred to as different quantities and objects related to the momentum imbalance, as in many TWiki topics, including this one. MET can mean both a vector quantity and a scalar quantity of the imbalance. Moreover, the invisible particle itself is sometimes casually called MET. In addition, classes and instances representing MET in CMSSW are also called MET or MET Objects.

On the other hand, in publications, different words and mathematical symbols are typically defined as follows:
Missing transverse momentum \({\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}\): the negative of the vector sum of the transverse momenta of all reconstructed objects
Missing transverse energy \({\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}E}}_\textrm{T}\): the magnitude of missing transverse momentum
See PubGuidelines for how to define the missing transverse energy, missing transverse momentum and their symbols in publications.

7.7.2   Computing Environment

CMSSW environment

How to set up a computing environment for CMSSW is briefly described here. The detail is described at WorkBookSetComputerNode.

After logging into LXPLUS or any other machine with CMSSW installed, move to a working directory.

Then, check out CMSSW release if not done yet:

cmsrel CMSSW_5_3_24

Move down two directories and set a CMSSW runtime environment:

cd CMSSW_5_3_24/src

git and github

In addition to the CMSSW runtime environment, a git environment needs to be properly set up in order to be able to check out extra packages from a github repository. The instruction can be found at http://cms-sw.github.io/cmssw/faq.html.

MET Recipes

If you are using CMSSW_5_3 older than CMSSW_5_3_24, you need to check out extra files in order to work out this workbook. The instruction to checkout the extra files are listed on


You can build with the scram command:

scram b -j 9

More information about scram can be found at

Workbook files

This workbook uses files at the github repo:

Clone this repo to your local directory with the following command.

git clone git@github.com:TaiSakuma/WorkBookMet

7.7.3   Sample AOD files

This topic will use two sample AOD files stored in an AFS locker at CERN:

41M  /afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/TTJets_AODSIM_532_numEvent100.root
32M  /afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/MET_Run2012C_AOD_532_numEvent100.root 
The 1st file is 41Mbyte and contains 100 events from /TTJets_MassiveBinDECAY_TuneZ2star_8TeV-madgraph-tauola/Summer12_DR53X-PU_S10_START53_V7A-v1/AODSIM (DAS).

The 2nd file is 32Mbyte and contains 100 events from /MET/Run2012C-24Aug2012-v1/AOD (DAS).


These are the commands used to create the sample files:
cmsrel CMSSW_5_3_8
cd CMSSW_5_3_8/src
edmCopyPickMerge \
  inputFiles=/store/mc/Summer12_DR53X/TTJets_MassiveBinDECAY_TuneZ2star_8TeV-madgraph-tauola/AODSIM/PU_S10_START53_V7A-v1/0000/FED775BD-B8E1-E111-8ED5-003048C69036.root \
  outputFile=TTJets_AODSIM_532.root \
mkdir -p /afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET
cp -a ./TTJets_AODSIM_532_numEvent100.root /afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET

curl -O http://cms-service-dqm.web.cern.ch/cms-service-dqm/CAF/certification/Collisions12/8TeV/Reprocessing/Cert_198022-198523_8TeV_24Aug2012ReReco_Collisions12_JSON.txt
cmsRun ./WorkBookMet/copyPickMerge_cfg.py \
    inputFiles=/store/data/Run2012C/MET/AOD/24Aug2012-v1/00000/FE9CCF41-6AFB-E111-82AF-003048679294.root \
    certFile=Cert_198022-198523_8TeV_24Aug2012ReReco_Collisions12_JSON.txt \
    outputFile=MET_Run2012C_AOD_532.root \
cp -a ./MET_Run2012C_AOD_532_numEvent100.root /afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET

7.7.4   MET Objects in CMSSW

MET Objects in CMSSW are:

  • the class reco::MET, its subclasses, and their instances in RECO and AOD
  • the class pat::MET and its instances in PAT.
RECO, AOD, and PAT are data tiers, which are explained in WorkBookAnalysisOverviewIntroduction. The class hierarchy is drawn in the diagram at Doxygen reco::MET.


We will show an example how to access reco::PFMET, a subclass of reco::MET, in RECO/AOD.

RECO/AOD files contain several MET objects, listed on SWGuideDataFormatRecoMET. In the example, we will access to pfMet, particle-flow MET.

We will use FWLite.Python, introduced at WorkBookFWLitePython. The example Python script that we use is printMet_AOD.py.

Execute by typing:

./WorkBookMet/printMet_AOD.py --inputPath=/afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/TTJets_AODSIM_532_numEvent100.root

The script will print event contents as follows:

   run       lumi     event     met.pt     met.px     met.py    met.phi
     1      34734  10417901     36.837     18.857    -31.645     -59.21
     1      34734  10417902     19.955    -16.211    -11.636    -144.33
     1      34734  10417903     38.794     -9.340    -37.652    -103.93
     1      34734  10417919     96.502    -24.198    -93.419    -104.52
     1      34734  10417920     22.568    -14.566    -17.238    -130.20
     1      34734  10417921     78.944     21.847    -75.861     -73.93

  • run, lumi, event are the run number, the luminosity section, and the event id.
  • met.pt is the magnitude of MET. MET is, in principle, a vector on the px-py plane. However, we often casually call its magnitude MET as well.
  • met.px, met.py are the x and y components of MET respectively.
  • met.phi is the azimuth of MET.

An example of how to fill histograms in PyROOT can be found at WorkBookFWLitePython.

We will explain how we accessed the MET object in printMet_AOD.py.

First, the handle of the PFMET collection is created as:

handleMETs = Handle("std::vector<reco::PFMET>") 

The MET collection is retrieved by calling getByLabel() of event. The collection is specified by the first argument, the same strings that you would give to cms.InputTag() in the cmsRun configuration file. The second argument is the handle created above.

event.getByLabel(("pfMet", '', 'RECO'), handleMETs)

The MET collection can be obtained by calling handleMETs.product(). However, since exactly one MET can be reconstructed per MET definition per event, the collection always contains exactly one object. We obtain the MET object and assigned to met at:

met = handleMETs.product().front()

In the script, we accessed several variables of MET and printed them on the screen:

print '%10.3f' % met.px(),
print '%10.3f' % met.py(),
print '%10.3f' % met.pt(),
print '%10.2f' % (met.phi()/math.pi*180.0),

All methods of reco::PFMET can be found at Doxygen reco::PFMET.


We will briefly demonstrate how to create MET objects in PAT, which correspond to pfMet, and access them.

We will use the the configuration file pat_rawMET_cfg.py to create a pat tuple.

Execute cmsRun with the configuration file.

cmsRun ./WorkBookMet/pat_rawMET_cfg.py inputFiles=file:/afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/TTJets_AODSIM_532_numEvent100.root

This will create a pat tuple file which only contains one collection, patMETs. The following command shows the contents:

edmDumpEventContent pat_rawMET.root

The output will be:

Type                  Module      Label     Process   
vector<pat::MET>      "patMETs"   ""        "PAT"     

The python script printMet_PAT.py shows how to access to the MET object in PAT which we just created.

Run the script:

./WorkBookMet/printMet_PAT.py --inputPath=./pat_rawMET.root

The output will be identical to what we saw when we accessed to pfMet in RECO/AOD above as it should be:

   run       lumi     event             module     met.pt     met.px     met.py    met.phi
     1      34734  10417901            patMETs     36.837     18.857    -31.645     -59.21
     1      34734  10417902            patMETs     19.955    -16.211    -11.636    -144.33
     1      34734  10417903            patMETs     38.794     -9.340    -37.652    -103.93
     1      34734  10417919            patMETs     96.502    -24.198    -93.419    -104.52
     1      34734  10417920            patMETs     22.568    -14.566    -17.238    -130.20
     1      34734  10417921            patMETs     78.944     21.847    -75.861     -73.93



7.7.5   MET Filters

Large MET is caused not only by interesting physics processes in collisions such as production of invisible particles. In fact, large MET has more often uninteresting causes such as detector noise, cosmic rays, and beam-halo particles. MET with uninteresting causes is called false MET, anomalous MET, or fake MET. For an accurate reconstruction of MET, it is, therefore, not sufficient to reconstruct all visible particles produced in collisions.

We developed several algorithms to identify false MET. These algorithms, for example, use timing, pulse shape, and topology of signal. After the identified false MET is removed, the agreement of the MET spectrum with MC, in which causes of false MET are not explicitly simulated, will typically improve significantly.

The MET group recommends a set of MET filters to be used for physics analyses. The recommendation is documented on MissingETOptionalFilters.

Here, we will describe how to apply the recommended MET filters.

We will use the python configuration file met_filters_cfg.py.

To run:

cmsRun ./WorkBookMet/met_filters_cfg.py inputFiles=file:/afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/MET_Run2012C_AOD_532_numEvent100.root

As in the above configuration file, you need to change only few lines of your configuration file in order to apply the recommended MET filters. First, you need to load the python configuration fragment metFilters_cff.


Then, add the sequence


to your path.

The example configuration file uses the global tag


You might need to find the correct tag for you configuration at SWGuideFrontierConditions.

to write:

  • how to store the results of filters

7.7.6   MET Corrections

MET objects accessed above are called raw MET. Raw MET is the negative of the vector sum of \(\vec{p}_\textrm{T}\) of all reconstructed particles:

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} = -\sum_{i\in \textrm{all}} \vec{p}_{\textrm{T}i} \]

The raw MET is systematically different from true MET, i.e., the transverse momentum carried by invisible particles, for many reasons including the non-compensating nature of the calorimeters and detector misalignment. To make MET a better estimate of true MET, MET corrections can be applied.

Type-I Correction

The Type-I correction is the most popular MET correction in CMS. This correction is a propagation of the jet energy corrections (JEC) to MET. The Type-I correction replaces the vector sum of transverse momenta of particles which can be clustered as jets with the vector sum of the transverse momenta of the jets to which JEC is applied.

The particles can be classified into two disjoint sets: either clustered as jets or unclustered:

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} = - \sum_{i \in \textrm{jets}} \vec{p}_{\textrm{T}i} - \sum_{i \in \textrm{uncl}} \vec{p}_{\textrm{T}i}. \]

The first vector sum is the same as the vector sum of \(\vec{p}_\textrm{T}\) of all jets

\[ \sum_{i \in \textrm{jets}} \vec{p}_{\textrm{T}i} = \sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{raw}. \]

The superscript "raw" here indicates that the JEC is not applied to the jets.

The Type-I correction replaces the raw jet \(\vec{p}_\textrm{T}\) with the corrected jet \(\vec{p}_\textrm{T}\). The Type-I correction can be written as the difference between two vector sums:

\[ \vec{C}_\textrm{T}^\textrm{Type-I}=\sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{raw} -\sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{JEC} \]

or equivalently

\[ \vec{C}_\textrm{T}^\textrm{Type-I}=\sum_{i \in \textrm{jets}} \vec{p}_{\textrm{T}i} -\sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{JEC}. \]

This is a vector term which can be added to the raw MET to produce a corrected MET. The first sum cancels the first sum in the raw MET and the second sum places the corrected piece.

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-I} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} + \vec{C}_\textrm{T}^\textrm{Type-I}. \]

As a result, the Type-I corrected MET can be written as

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-I} = - \sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{JEC} - \sum_{i \in \textrm{uncl.}} \vec{p}_{\textrm{T}i}. \]

Note: The detail of JEC can be found at IntroToJEC, CMS-PAS-JME-07-002, and AN-2007/055

Note: The actual Type-I correction is more complicated due to a threshold and an offset. See METType1Type2Formulae

Type-II Correction

The Type-II correction was originally developed for CaloMET and is not recommended to use for pfMET.

The Type-II correction corrects the \(\vec{p}_\textrm{T}\) of unclustered particles by uniformly scaling it by a constant scale factor:

\[ \vec{C}_\textrm{T}^\textrm{Type-II}= (1 - C^{\textrm{uncl.}})\sum_{i\in\textrm{uncl.}} \vec{p}_{\textrm{T}i}. \]

If the Type-II correction is added to Type-I corrected MET

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-I-II} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-I} + \vec{C}_\textrm{T}^\textrm{Type-II}, \]

the Type-I-II corrected MET will be produced

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-I-II} = - \sum_\textrm{jet} \vec{p}_{\textrm{T jet}}^\textrm{JEC} - C^{\textrm{uncl.}}\sum_{i \in \textrm{uncl.}} \vec{p}_{\textrm{T}i}. \]

Note: The Type-II correction is not recommended to use for pfMET.

Note: The actual Type-II correction scales the offset of jet \(\vec{p}_\textrm{T}\) and jet \(\vec{p}_\textrm{T}\) below a threshold as well. See METType1Type2Formulae

Type-0 Correction

The Type-0 correction is a mitigation for the degradation of the MET reconstruction due to the pile-up interactions. This correction is developed for pfMET and cannot be sensibly defined for CaloMET.

Pile-up interactions have little true MET because they produce few invisible particles, e.g., neutrinos from Kaon decays. Therefore, if we were able to measure all visible particles precisely and accurately, pile-up interactions would not much degrade the MET reconstruction. However, in practice, because our measurement of visible particles is not perfect, the MET reconstruction degrades as the number of the pile-up interactions increases.

The Type-0 correction is an application of the charged hadron subtraction (CHS) to MET. CHS removes charged hadrons originating from the vertices for pile-up interactions. In addition to CHS, the Type-0 correction removes an estimate of neutral pile-up contributions. This removal of the estimate is the integral part of the Type-0 correction. Doing only CHS would make MET worse as it becomes clear below.

While, in the Type-I and Type-II corrections, the particles are classified as whether they are clustered as jets or unclustered, in the Type-0 correction, the particles are classified as whether they are produced in the hard scattering of interest (HS) or in pile-up interactions (PU):

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} = - \sum_{i \in \textrm{HS}} \vec{p}_{\textrm{T}i} - \sum_{i \in \textrm{PU}} \vec{p}_{\textrm{T}i}. \]

This equality is theoretically correct. However, we are not able to classify all reconstructed particles in this way because we do not know which particles are produced in the hard scattering. Nevertheless, we would like somehow to remove the second sum and keep only the first sum since the negative of the first sum is the MET in the hard scattering.

We further classify the pile-up particles into neutral particles (neuPU) and charged particles (chPU):

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} = - \sum_{i \in \textrm{HS}} \vec{p}_{\textrm{T}i} - \sum_{i \in \textrm{neuPU}} \vec{p}_{\textrm{T}i} - \sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}. \]

The last sum is taken over the charged particles produced in the pile-up interactions. We can identify such particles from the vertices and can measure the last sum. However, we cannot separate the first and second sums. CHS removes the last sum. It is not a good idea to remove only the last sum and keep the first and second sums. This is more likely to make the reconstructed MET more different from its true value than to make it closer to.

The second sum is for the neutral pile-up particles and the last sum is for the charged pile-up particles. These particles are produced in the same interactions, with little true MET. Therefore, the second sum and the last sum are in nearly opposite directions. At the true level, their magnitudes are close to each other and these two sums nearly cancel each other. The Type-0 correction assumes that the cancellation at the true level is exact:

\[ \sum_{i \in \textrm{neuPU}} \vec{p}_{\textrm{T}i}^\textrm{true} + \sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}^\textrm{true} = 0. \]

The Type-0 correction also assumes that we can measure charged pile-up particles perfectly:

\[ \sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}^\textrm{true} = \sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}. \]

We can justify the assumption as follows. CMS has an all silicon tracker in a strong magnetic field. Pile-up particles have relatively low \(\vec{p}_\textrm{T}\). Low-\(\vec{p}_\textrm{T}\) charged particles make tight turns. And we can measure the curvatures of their tracks precisely with the CMS tracker.

Furthermore, the Type-0 correction assumes that we can measure the directions of neutral pile-up particles perfectly but measure their energies systematically off by the same factor:

\[ \sum_{i \in \textrm{neuPU}} \vec{p}_{\textrm{T}i} = R^\textrm{0}\sum_{i \in \textrm{neuPU}} \vec{p}_{\textrm{T}i}^\textrm{true} \]

The assumptions were made as follows. We can measure the directions precisely from the positions of the calorimeter cells in which we observe the energy deposits. Since we calibrate the calorimeters to measure high-\(\vec{p}_\textrm{T}\) particles, we measure the energies of low-\(\vec{p}_\textrm{T}\) particles systematically off.

With these assumptions, the second sum in raw MET, the contributions from the neutral pile-up particles, can be estimated as:

\[ \sum_{i \in \textrm{neuPU}} \vec{p}_{\textrm{T}i} = - R^\textrm{0}\sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}. \]

The Type-0 correction is this estimate plus the last sum in raw MET:

\[ \vec{C}_\textrm{T}^\textrm{Type-0} = (1- R^\textrm{0})\sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}. \]

This correction can be added to raw MET to remove the identified charged pile-up contributions and an estimate of neutral pile-up contributions:

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-0} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} + \vec{C}_\textrm{T}^\textrm{Type-0}. \]

You can add the Type-I correction to the Type-0 corrected MET to propage JEC to MET:

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-0-I} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-0} + \vec{C}_\textrm{T}^\textrm{Type-I}. \]

pfMET with the Type-0 and Type-I corrections is one of the recommended METs by the MET group to use in physics analyses.

Note: Type-0RT and Type-0PC. Currently, we have two implementations of the Type-0 corrections. Type-0RT is the original implementation of Type-0. It uses reco::Track for the charged pile-up particles. Type-0PC, developed later, uses particle-flow charged hadrons instead. While, in Type-0RT, \(R^\textrm{0}\) is a constant, in Type-0PC, \(R^\textrm{0}\) is a function of the magnitude of \(\sum_{i \in \textrm{chPU}} \vec{p}_{\textrm{T}i}\).

Note: Precisely speaking, if the Type-0 and Type-I corrections are applied at the same time, a certain fraction of particle \(\vec{p}_\textrm{T}\) is overcorrected. The Type-0 correction is applied on a set of particles produced in the pile-up interactions. The Type-I correction is applied on a set of particles clustered as jets. These two sets are not disjoint. Therefore, the particles in both sets, the particles produced in the pile-up interactions and clustered as jets (with \(\vec{p}_\textrm{T}\) above the threshold of the Type-I correction), are incorrectly corrected by the both corrections. In the current implementation, this overcorrection, which is presumably not significantly large, is ignored.

Note: If the Type-0 and Type-II corrections are applied at the same time, the Type-0 correction needs to be scaled by the same scaler factor used in the Type-II correction. See METType012Formulae. However, the Type-II correction is not recommended to use for pfMET and the Type-0 correction is not defined for CaloMET. So, practically, these two corrections are never used at the same time.

xy-Shift Correction

The xy-Shift correction reduces the MET \(\varphi\) modulation. This correction is also a mitigation for the pile-up effects.

The distribution of true MET is independent of \(\varphi\) because of the rotational symmetry of the collisions around the beam axis. However, we observe that the reconstructed MET does depend on \(\varphi\). The MET \(\varphi\) distribution has roughly a sinusoidal curve with the period of 2\(\pi\). The possible causes of the modulation include anisotropic detector responses, inactive calorimeter cells, the detector misalignment, the displacement of the beam spot. The amplitude of the modulation increases roughly linearly with the number of the pile-up interactions.

We can reduce the amplitude of the \(\varphi\) modulation by shifting the origin of the coordinate in the transverse momentum plane

\[ \vec{p}_{\textrm{T}i} \rightarrow \vec{p}_{\textrm{T}i} - \vec{c} \]

where \(\vec{c}\) is the shift. With this shift, MET is

\[\begin{aligned} {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{xy} & = -\sum_{i\in \textrm{all}} (\vec{p}_{\textrm{T}i} - \vec{c}) \\ & = -\sum_{i\in \textrm{all}} \vec{p}_{\textrm{T}i} +\sum_{i\in \textrm{all}} \vec{c} \\ & = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} +n\vec{c}, \end{aligned}\]

where \(n\) is the number of the particles. The total shift \(n\vec{c}\) does not depend on the value of MET. The xy-Shift correction is

\[ \vec{C}_\textrm{T}^\textrm{xy} = n\vec{c}. \]

Therefore, the xy-shifted MET is

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{xy} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{raw} + \vec{C}_\textrm{T}^\textrm{xy}. \]

As the xy-Shift correction does not depend on the value of MET, it can be, for example, added to the Type-0 and Type-I corrected MET, (This is probably incorrect. The above formula indicates that the xy-Shift correction depends on the number of the particles used in MET. For example, raw MET and Type-0 corrected MET don't use the same number of the particles, therefore the same xy-Shift correction cannot be added to raw MET and Type-0 corrected MET.)

\[ {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-0-I-xy} = {\hspace{0.1ex}\not\mathrel{\hspace{-0.1ex}\vec{E}}}_\textrm{T}^\textrm{Type-0-I} + \vec{C}_\textrm{T}^\textrm{xy}. \]

pfMET with the Type-0, Type-I, and xy-Shift corrections is also one of the recommended METs by the MET group to use in physics analyses.

Note: Currently, the xy-Shift correction is implemented as \(\vec{C}_\textrm{T}^\textrm{xy} = \vec{c}_A +n_\textrm{vtx}\vec{c}_B\), where \(\vec{c}_A\) and \(\vec{c}_B\) are constant vectors and \(n_\textrm{vtx}\) is the number of the vertices.

How to apply the MET corrections in CMSSW

We will apply several combinations of the MET corrections to pfMET and CaloMET. We will use an example configuration file corrMet_cfg.py.

This example file is configured to use for MC. To use for data, you need to change two places. The changes can be made by uncommenting the following two lines:

process.corrPfMetType1.jetCorrLabel = cms.string("ak5PFL1FastL2L3Residual")
process.corrPfMetShiftXY.parameter = process.pfMEtSysShiftCorrParameters_2012runABCDvsNvtx_data 

To run,

cmsRun ./WorkBookMet/corrMet_cfg.py inputFiles=file:/afs/cern.ch/cms/Tutorials/TWIKI_DATA/MET/TTJets_AODSIM_532_numEvent100.root

This will produce a file corrMet.root, which contains various MET collections, each with different combinations of the MET corrections as summarized in the table.

module name descriptions
pfMetT0rt pfMet + Type-0RT
pfMetT0rtT1 pfMet + Type-0RT + Type-I
pfMetT0pc pfMet + Type-0PC
pfMetT0pcT1 pfMet + Type-0PC + Type-I
pfMetT0rtTxy pfMet + Type-0RT + xy-Shift
pfMetT0rtT1Txy pfMet + Type-0RT + Type-I + xy-Shift
pfMetT0pcTxy pfMet + Type-0PC + xy-Shift
pfMetT0pcT1Txy pfMet + Type-0PC + Type-I + xy-Shift
pfMetT1 pfMet + Type-I
pfMetT1Txy pfMet + Type-I + xy-Shift

The python script printMet_corrMet.py shows an exmple how to access to the corrected METs in corrMet.root.

./WorkBookMet/printMet_corrMet.py --inputPath=./corrMet.root

This will simply print the contents as follows.

   run       lumi     event             module     met.pt     met.px     met.py    met.phi
     1      34734  10417901              pfMet     36.837     18.857    -31.645     -59.21
     1      34734  10417901          pfMetT0rt     32.819      9.912    -31.286     -72.42
     1      34734  10417901        pfMetT0rtT1     37.309     -0.433    -37.307     -90.67
     1      34734  10417901          pfMetT0pc     32.296      9.728    -30.796     -72.47
     1      34734  10417901        pfMetT0pcT1     36.822     -0.618    -36.816     -90.96
     1      34734  10417901            pfMetT1     38.615      8.511    -37.665     -77.27
     1      34734  10417901       pfMetT0rtTxy     29.873     10.417    -27.998     -69.59
     1      34734  10417901     pfMetT0rtT1Txy     34.018      0.072    -34.018     -89.88
     1      34734  10417901       pfMetT0pcTxy     29.349     10.233    -27.508     -69.59
     1      34734  10417901     pfMetT0pcT1Txy     33.528     -0.113    -33.528     -90.19
     1      34734  10417901         pfMetT1Txy     35.539      9.016    -34.377     -75.30

Note: Not all combinations of the MET corrections are sensible to use in physics analyses.

Note: The globaltag "START53_V15A::All" was used in this example.

How to store corrected MET in PAT

The above example stores the corrected METs in reco::MET or its subclass. If you would like to store the corrected MET in pat::MET, you can do this by using PATMETProducer.

For exmplale, to store pfMetT0pcT1Txy in pat::MET, you can add the following lines in your python configuration.

from PhysicsTools.PatAlgos.producersLayer1.metProducer_cfi import patMETs
patPfMetT0pcT1Txy = patMETs.clone(
    metSource = cms.InputTag('pfMetT0pcT1Txy'),
    addMuonCorrections = cms.bool(False),
    addGenMET    = cms.bool(False)
This will produce patPfMetT0pcT1Txy, which has the same content as pfMetT0pcT1Txy but stored in pat::MET.

MET Smearing Correction (for MC only)

Jets in MC can be smeared so as to achieve better agreement with data. Such smeared jets are available as by-product of MET Systematics Tools in PAT.

Visit SWGuidePATTools#MET_Systematics_Tools and "doSmearJets" (access limited to CMS members)

7.7.7   MET Uncertainties

coming soon.. for the moment, visit MissingETUncertaintyPrescription or SWGuidePATTools#MET_Systematics_Tools for the PAT tool (access limited to CMS members)

7.7.8   MET Significance

The SWGuide for the MET Significance is

How the MET Significance is defined from the reconstructed MET and the resolutions of measured particles is explained on these lecture slides:

7.7.9   Other Topics

These are the topics that are important but not currently covered by this topic.

  • NoPU MET
  • MET Performance Measurement
  • MET Software Development

7.7.10   MET Training Sessions NEW

  • 26 Mar 2014 Hands-on Tutorial Sessions (HATS) on MET at Fermilab LPC (Indico), (TWiki)

  • 8 - 11 Jan 2014 CMS Data Analysis School (CMSDAS) at Fermilab LPC, (Indico)

  • 13 - 18 Jan 2014 CMS Data Analysis School (CMSDAS) at CERN (Indico)
    • Short Exercise Jets and MET, (Twiki)

  • 25-29, Jan 2011 CMS Data Analysis School (CMSDAS) at Fermilab LPC, (Indico)
    • Short Exercise MET, (Twiki)
    • highlight: exercise on MET - tails


Responsible: TaiSakuma

Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng 20140806_01_jet_pileup.png r1 manage 112.8 K 2014-09-11 - 11:22 TaiSakuma  
GIFgif c110712_c111208_f001_010_anim.gif r1 manage 50.3 K 2015-04-24 - 10:19 TaiSakuma MET significance GIF animation
PNGpng met_schematic_800.png r1 manage 31.4 K 2014-06-08 - 22:34 TaiSakuma CMS Document 12312-v1
PNGpng tai_20120616_met_schematic.001.png r1 manage 52.6 K 2012-06-17 - 04:04 TaiSakuma  
PDFpdf tai_20150119_met_significance.pdf r2 r1 manage 6936.2 K 2015-03-19 - 16:15 TaiSakuma Lecture slides: MET Significance
Cascading Style Sheet filecss tutorial.css r4 r3 r2 r1 manage 0.4 K 2014-06-08 - 02:29 TaiSakuma  
Edit | Attach | Watch | Print version | History: r200 < r199 < r198 < r197 < r196 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r200 - 2019-06-28 - JakeRosenzweig



    • 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