The number of events in the simulated datasets do not match the number of events we expect to observe for each process, so we need to normalize the simulation to correspond to some cross section. Cross sections evaluated at next-to-leading order (NLO) or next-to-next-to-leading order (NNLO) in perturbative QCD are preferred, because they are more accurate. However, leading-order simulation remains the default for many SM processes, so higher-order cross sections cannot be extracted from the simulation itself. This page documents cross sections commonly used in CMS for Run 1 and Run 2 datasets.
Selected SM cross section values for Run 1 datasets can be found in the following tables. More details about these cross sections are available here.
Higher-order top quark cross sections are available from the LHC Physics Working Group for all LHC energies:
Process |
Generator/Source |
Phase space cuts |
Order |
Final state |
Cross section (pb) |
Uncertainty (pb): Scale unc. (PDF unc.) |
|
---|---|---|---|---|---|---|---|
W+ | FEWZ | -- | NNLO | W->lv, l=e,m,t | 18456 | ±233 (±850) | |
W- | FEWZ | -- | NNLO | W->lv, l=e,m,t | 12858 | ±174 (±654) | |
Total W | FEWZ | -- | NNLO | W->lv, l=e,m,t | 31314 | ±407 (±1504) | |
Z/a* (20) | FEWZ | m(ll)>20GeV | NNLO | Z -> ll | 4998 | ±34 (±270) | |
Z/a* (50) | FEWZ | m(ll)>50GeV | NNLO | Z -> ll | 3048 | ±34 (±128) | |
Z/a* (60-120) | FEWZ | 60 < m(ll) < 120 GeV | NNLO | Z -> ll | 2916 | ±34 (±122) | |
W+cbar | MCFM | -- | NLO | Inclusive | 1718 | ±157 | |
W-c | MCFM | -- | NLO | Inclusive | 1910 | ±164 | |
Total Wc | MCFM | -- | NLO | Inclusive | 3628 | ±227 | |
W+b bbar | MCFM | -- | LO | Inclusive | 22.1 | ±4.4 | |
W-b bbar | MCFM | -- | LO | Inclusive | 13.2 | ±2.5 | |
Total Wb bbar | MCFM | -- | LO | Inclusive | 35.3 | ±5.1 | |
Z/a*b bbar | MCFM | m(ll) > 20 GeV | LO | Inclusive | 67.3 | ±18.8 | |
W+W- | MCFM | -- | NLO | Inclusive | 43 | ±1.5 | |
W+Z/a* | MCFM | m(ll) > 40 GeV | NLO | Inclusive | 11.8 | ±0.6 | |
W-Z/a* | MCFM | m(ll) > 40 GeV | NLO | Inclusive | 6.4 | ±0.4 | |
Total WZ/a* | MCFM | m(ll) > 40 GeV | NLO | Inclusive | 18.2 | ±0.7 | |
Z/a* Z/a* | MCFM | m(ll) > 40 GeV | NLO | Inclusive | 5.9 | ±0.15 | |
ttbarW | -- | -- | NLO | Inclusive | 0.1473 | ±0.0155 | |
ttbarZ | -- | -- | NLO | Inclusive | 0.1369 | ±0.029 |
Process |
Generator/Source |
Phase space cuts |
Order |
Final state |
Cross section (pb) |
Uncertainty (pb): Scale unc. (PDF unc.) |
---|---|---|---|---|---|---|
W+ | FEWZ 3.1 | -- | NNLO | W->μν | 7213.4 | +45.3 -21.3 (±241.3) |
W- | FEWZ 3.1 | -- | NNLO | W->μν | 5074.7 | +33.8 -18.3 (±188.3) |
Total W | FEWZ 3.1 | -- | NNLO | W->μν | 12234.4 | +79.0 -39.7 (±414.7) |
Z/a*(20) | FEWZ 3.1 | m(ll)>20 GeV | NNLO | Z -> μμ | 1966.7 | +19.8 -13.7 (±87.7) |
Z/a* (50) | FEWZ 3.1 | m(ll)>50 GeV | NNLO | Z -> μμ | 1177.3 | +5.9 -3.6 (±38.8) |
Z/a* (60-120) | FEWZ 3.1 | 60 < m(ll) < 120 GeV | NNLO | Z -> μμ | 1129.2 | +5.5 -2.6 (±37.5) |
W+cbar | MCFM | -- | NLO | Inclusive | 2423.5 | |
W+cbar | MCFM | -- | NLO | Inclusive | 2624.6 | |
Total Wc | MCFM | -- | NLO | Inclusive | 5048.1 | |
Total Wb bbar | aMC@NLO | -- | NLO | Inclusive | 377.4 | +19.5% -16.8% |
Z/a*b bbar | MCFM | m(ll) > 50 GeV | LO | Inclusive | 76.75 | |
Total WZ/a* | MCFM | m(ll) > 12 GeV | NLO | Inclusive | 33.21 (CTEQ) 33.85 (MSTW) 33.72 (NNPDF) | |
ttbarW | MCFM | -- | NLO | Inclusive | 0.232 | ±0.067 (±0.03) |
ttbarZ | NLO | -- | NLO | Inclusive | 0.2057 | +0.019 -0.024 |
tqZ; q!=b | aMC@NLO | m(ll) > 50 GeV | NLO | Z->leptons | 0.02450 | +3.3% -2.6% |
tbZ | aMC@NLO | m(ll) > 50 GeV | NLO | Z->leptons | 0.0114 | +3.3% -2.6% |
WWW | aMC@NLO | -- | NLO | Inclusive | 8.058e-02 | +4.7% -3.9% |
WWZ | aMC@NLO | -- | NLO | Inclusive | 5.795e-02 | +5.6% -4.6% |
WZZ | aMC@NLO | -- | NLO | Inclusive | 1.968e-02 | +6.0% -4.9% |
ZZZ | aMC@NLO | -- | NLO | Inclusive | 5.527e-03 | +2.7% -2.4% |
tttt | aMC@NLO | -- | NLO | Inclusive | 9.144e-04 | +36.3%, -27.0% |
W+ W- | MCFM 6.6 | 0 | NLO | W->eν W->eν | 0.6472 | ±0.0231 (±0.0266) |
W+ Z/a* | MCFM 6.6 | m(l+l-) > 12 GeV | NLO | W->μν Z->ee | 0.0748 | ±0.0025 (±0.0029) |
W+ Z/a* | MCFM 6.6 | m(l+l-) > 40 GeV | NLO | W->μν Z->ee | 0.0535 | ±0.0018 (±0.0028) |
W- Z/a* | MCFM 6.6 | m(l+l-) > 12 GeV | NLO | W->μν Z->ee | 0.0446 | ±0.0021 (±0.0018) |
W- Z/a* | MCFM 6.6 | m(l+l-) > 40 GeV | NLO | W->μν Z->ee | 0.0305 | ±0.0014 (±0.0014) |
Z/a* Z/a* | MCFM 6.6 | both dileptonic m(l+l-) > 12 GeV | NLO | Z->μμ Z->ee | 0.0385 | ±0.0011 (±0.0011) |
Z/a* Z/a* | MCFM 6.6 | both dileptonic m(l+l-) > 40 GeV | NLO | Z->μμ Z->ee | 0.0185 | ±0.0007 (±0.0007) |
Z/a* Z | MCFM 6.6 | m(l+l- from Z/a*) > 12 GeV | NLO | Z->ee Z->νν | 0.1318 | ±0.0040 (±0.0067) |
Z Z | MCFM 6.6 | both dileptonic m(l+l-) > 1 GeV | NLO | Z->ee Z->μμ | 0.0173 | ±0.0067 (±0.0007) |
For Run2, the GenXSecAnalyzer tool is available to compute cross section from an existing MC sample in MiniAOD format. It retrieves information from collections called GenLumiInfoProduct and GenFilterInfo to compute averaged cross sections over all the input luminosity blocks.
Many SM simulations corresponding to Run 2 data have the output of this analyzer available on the record page.
The following instructions show how to compute a cross section from a MiniAOD sample. This example is given for a 2015 MiniAOD dataset using CMSSW_7_6_7, but the commands can be adapted for later MiniAOD samples by using the corresponding CMSSW release and updating the input file or dataset names.
Setup the CMS environment by following the instructions for MiniAOD.
Inside the CMSSW_7_6_7/src
directory, fetch a configuration file for the GenXSecAnalyzer
:
curl https://raw.githubusercontent.com/cms-sw/genproductions/master/Utilities/calculateXSectionAndFilterEfficiency/genXsec_cfg.py -o genXSecAnalyzer_cfg.py
Examine the configuration file with your preferred editor. Within the configuration file, the maxEvents
setting
controls the maximum number of events passed to the GenXSecAnalyzer. Set it to -1
if you would like to use all the events:
process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(options.maxEvents)
)
The source
setting specifies the names of the root files to be used:
process.source = cms.Source ("PoolSource",
fileNames = cms.untracked.vstring(options.inputFiles),
secondaryFileNames = secFiles
)
You may specify inputFiles
and maxEvents
and run the script in command line:
cmsRun genXSecAnalyzer_cfg.py inputFiles="file:root://eospublic.cern.ch//eos/opendata/cms/mc/RunIIFall15MiniAODv2/QCDJets_flat_pythia_shifted15mmvertex/MINIAODSIM/PU25nsData2015v1_Shifted15mmCollision2015_76X_mcRun2_asymptotic_v12-v1/60000/00D4D020-59B8-E511-8D6D-A0000420FE80.root" maxEvents=10
Here we use a root file from 2015 QCD MC sample and set the maximum number of events to 10. The printout should look like this:
------------------------------------
GenXsecAnalyzer:
------------------------------------
Before Filtrer: total cross section = 1.887e+09 +- 7.281e+07 pb
Filter efficiency (taking into account weights)= (3.38384) / (3.38384) = 1.000e+00 +- 0.000e+00
Filter efficiency (event-level)= (200) / (200) = 1.000e+00 +- 0.000e+00
After filter: final cross section = 1.887e+09 +- 7.281e+07 pb
=============================================
Depending on the type of simulation, the analyzer will present different information. The most common values are: * Before matching: the cross section before jet matching and any filter. * After matching: the cross section after jet matching BUT before any filter. * Filter efficiency: the efficiency of any filter. * After filter: the cross section after jet matching and additional filters are applied. This is your final cross section.
To compute the cross section of QCDuubar_Pt-15to3000_TuneZ2star_Flat_13TeV_pythia6 for 2015 data using all the files in this sample, find the link to the filelist on this dataset's record.
In CMSSW_7_6_7/src
(or CMSSW_10_6_30/src
for 2016 datasets), download the filelist using its URL:
curl https://opendata.cern.ch/record/18392/files/CMS_mc_RunIIFall15MiniAODv2_QCDuubar_Pt-15to3000_TuneZ2star_Flat_13TeV_pythia6_MINIAODSIM_PU25nsData2015v1_76X_mcRun2_asymptotic_v12-v1_60000_file_index.txt -o filelist.txt
Create a python script compute_xsec.py
with the following code that will read the file list and provide all the files
as an argument to the analyzer:
import os
# parameters to EDIT
inputFilelist = "filelist.txt"
maxEvents = "10" # You may increase maxEvents for a better estimation (e.g. set to -1)
outfileName = "xsec_QCDuubar_Pt-15to3000.log"
# get inputFiles
filelist = open(inputFilelist, 'r').readlines()
inputFiles = ""
for rootfile in filelist:
if('root' in rootfile):
inputFiles += ' inputFiles='+rootfile + ' '
# compute cross section
command = 'cmsRun genXSecAnalyzer_cfg.py {} maxEvents={} 2>&1 | tee {}'.format(inputFiles, maxEvents, outfileName)
os.system(command)
In the CMS environment (make sure you have executed cmsenv
if using a VM), run:
python compute_xsec.py
Higher order top quark cross sections are available from the LHC Physics Working Group for all LHC energies:
A table of further higher-order cross sections for other processes will be added when available.