This lesson is being piloted (Beta version)

Luminosity

Introduction

Overview

Teaching: 10 min
Exercises: 0 min
Questions
  • What is luminosity?

  • What is the difference between instantaneous and integrated luminosity?

  • Why is knowing the luminosity important?

  • How is the luminosity measured?

Objectives
  • Know what luminosity is and why it is important

  • Know how luminosity is measured

Luminosity and its importance

The luminosity of a collider is the number of collisions per area (i.e. cross section) per time. The typical unit is \(\mathrm{cm^{-2} s^{-1}}\). This luminosity is sometimes referred to as the “instantaneous” luminosity \(\mathcal{L}_{inst}\). The “integrated” luminosity is the integral of the instantaneous luminosity over time:

[\mathcal{L}{int} = \int \mathcal{L}{inst} dt]

The integrated luminosity is a measurement of data size and is usually expressed in units of inverse cross section such as \(\mathrm{fb^{-1}}\).

The importance of knowing the integrated luminosity cannot be overstated. It is an esssential component for measuring cross sections and for setting upper limits on new physics processes beyond the Standard Model. You can’t determine well how much you see (or don’t see) coming out of the collisions if you don’t know accurately and precisely what came in.

Measuring luminosity

CMS has several systems for measuring luminosity including making use of the hadronic forward calorimeter and the pixel detector. There have also been several dedicated luminometers installed over the course of operation of CMS.

The readout rate of quantities like hits in a detector (like a luminometer) is given by \(R\) and is given by the product of the instantaneous luminosity \(\mathcal{L}_{inst}\) and the visible cross section \(\sigma_{vis}\):

[R = \mathcal{L}{inst} \sigma{vis}]

The determination of \(\sigma_{vis}\) is carried out in so-called van der Meer (VdM) scans. In these scans the two colliding beams are separated and then moved across each other. The rate \(R\) is then determined as a function of beam separation to measure the beam overlap width.

The instantaneous luminosity \(\mathcal{L}^{i}_{inst}\) for a single colliding bunch \(i\) can be determined from the beam overlap width and known beam parameters such as the number of protons in each colliding bunch for each beam and the LHC orbit frequency. Then a value for \(\sigma_{vis}\) can be obtained.

A VdM scan is a special beam condition but this value of \(\sigma_{vis}\) still holds for regular colliding beam conditions (since the detector acceptance has in-principle not changed). Therefore this value along with \(R\) can be used to subsequently determine \(\mathcal{L}_{inst}\).

In practice the performance of the luminometers can degrade over time due to effects such as radiation damage. CMS is capable of conducting fast luminosity scans with small beam separation, so-called “emmittance scans”. These scans, performed similarly to VdM scans, can take just a few minutes and are typically performed at the beginning and at the end of a fill.

Key Points

  • Luminosity is a measure of how many collisions are delivered to and recorded by the detector.

  • Instantaneous luminosity is usually expressed as the number of collisions per square centimeter per second.

  • Integrated luminosity is the integral of instantaneous luminosity over time and is a measurement of data size. It is usually expressed in units of inverse cross section.

  • Knowing the luminosity is important to determining and measuring accelerator and detector performance and operation. It is also an essential component for measuring cross sections and for setting limits on beyond-SM processes.

  • Measurement of luminosity is done with several systems in the detector.


Installing brilcalc

Overview

Teaching: 10 min
Exercises: 0 min
Questions
  • What do I use to calculate luminosity myself?

  • How do I install the tools needed to calculate luminosity?

Objectives
  • Know what tool to use to calculate luminosity

  • Know how to install this tool in the CMS Open Data environment

The CMS Beam Radiation Instrumentation and Luminosity (BRIL) group provides a command-line tool called brilcalc. With brilcalc one can calculate luminosity.

Installation

If you are using the VM, or if are using the docker container and have the cvmfs file system installed locally, do the following to install brilcalc.

Set your PATH:

export PATH=$HOME/.local/bin:/cvmfs/cms-bril.cern.ch/brilconda/bin:$PATH

Install BRIL software using pip:

pip install --user brilws

At the end of a successful installation you should see the messages:

Successfully built brilws
Installing collected packages: brilws
Successfully installed brilws

Check the installation by running the command:

brilcalc --version

which should output a version number.

Key Points

  • brilcalc is a command-line tool provided by the CMS BRIL group for calculating luminosity


Calculating luminosity

Overview

Teaching: 15 min
Exercises: 10 min
Questions
  • How do I calculate luminosity?

  • How do I calculate luminosity for only ‘good’ data?

Objectives
  • Know how to calculate luminosity and understand how to do this for only ‘good’ data

Important note

It is important that you use the -c web option when running brilcalc. This specifies that you use indirect access to BRIL servers via web cache. For users of CMS open data outside CERN and CMS this is the only option that will work.

Important note

There is a useful help option for brilcalc and its commands:

brilcalc --help
usage:
   brilcalc (-h|--help|--version)
   brilcalc [--debug|--warn] <command> [<args>...]

commands:
  lumi Luminosity
  beam Beam
  trg Trigger configurations
See 'brilcalc <command> --help' for more information on a specific command.

Of particular use will be the brilcalc lumi command.

Calculating luminosity for a particular run

Let’s calculate the integrated luminosity for a particular run found in the CMS Open Data.

brilcalc lumi -c web -r 160431
#Data tag : 19v3 , Norm tag: onlineresult
+-------------+-------------------+-----+------+----------------+----------------+
| run:fill    | time              | nls | ncms | delivered(/ub) | recorded(/ub)  |
+-------------+-------------------+-----+------+----------------+----------------+
| 160431:1615 | 03/14/11 03:08:07 | 243 | 218  | 8781.334977241 | 7879.289611261 |
+-------------+-------------------+-----+------+----------------+----------------+
#Summary:
+-------+------+-----+------+-------------------+------------------+
| nfill | nrun | nls | ncms | totdelivered(/ub) | totrecorded(/ub) |
+-------+------+-----+------+-------------------+------------------+
| 1     | 1    | 243 | 218  | 8781.334977241    | 7879.289611261   |
+-------+------+-----+------+-------------------+------------------+

Luminosity and validated data

During data taking only those runs in which all the subdetectors, triggers, luminosity, and physics objects are found to be performing as expected are certified as “good for physics”. For the physics analyst the list of certified luminosity sections in these runs is provided in the form of a JSON (JavaScript Object Notation) file. To ensure that we are calculating the luminosity for certified data one must fetch these files and pass them to brilcalc on the command line. First let’s fetch the JSON file for 2011 data:

wget http://opendata.cern.ch/record/1001/files/Cert_160404-180252_7TeV_ReRecoNov08_Collisions11_JSON.txt

Then pass this file to brilcalc on the command line and pipe it to a text file 2011lumi.txt:

brilcalc lumi -c web -i Cert_160404-180252_7TeV_ReRecoNov08_Collisions11_JSON.txt > 2011lumi.txt

The beginning of the output in the file should look like this:

#Data tag : v1 , Norm tag: onlineresult
+-------------+-------------------+------+------+----------------+---------------+
| run:fill    | time              | nls  | ncms | delivered(/ub) | recorded(/ub) |
+-------------+-------------------+------+------+----------------+---------------+
| 160431:1615 | 03/14/11 03:14:43 | 200  | 200  | 7366.884       | 7366.875      |
| 160577:1622 | 03/16/11 01:44:38 | 53   | 53   | 1719.888       | 1631.386      |
| 160578:1622 | 03/16/11 02:20:03 | 175  | 175  | 5201.105       | 4952.155      |
| 160871:1636 | 03/19/11 02:43:57 | 141  | 141  | 109739.586     | 106354.581    |
| 160872:1636 | 03/19/11 03:50:05 | 38   | 38   | 28346.738      | 23977.109     |
| 160873:1636 | 03/19/11 04:20:20 | 147  | 147  | 104914.534     | 103031.004    |

With a summary at the end of the file:

#Summary:
+-------+------+--------+--------+-------------------+------------------+
| nfill | nrun | nls    | ncms   | totdelivered(/ub) | totrecorded(/ub) |
+-------+------+--------+--------+-------------------+------------------+
| 194   | 470  | 159872 | 159872 | 5253793895.474    | 5100199528.945   |
+-------+------+--------+--------+-------------------+------------------+

You may notice at the end of the output after the summary a list of runs and lumi sections. These are runs and lumi sections that are listed in the JSON quality file but do not have any luminosity values corresponding to them. These correspond to sections that are left-overs at the end of a run, which where still tagged as STABLE RUN, but actually did not provide any luminosity. These are safe to ignore as they do not contain any events.

Note

Information on the validated runs for CMS Open Data can be found on the CERN Open Data Portal using this search.

Validated data JSON files

The files used here are the same JSON files used in the python configuration files as in the CMSSW lesson. They are included in the python like so:

import FWCore.PythonUtilities.LumiList as LumiList
goodJSON = 'Cert_160404-180252_7TeV_ReRecoNov08_Collisions11_JSON.txt'
myLumis = LumiList.LumiList(filename = goodJSON).getCMSSWString().split(',')

# your process.source defined

process.source.lumisToProcess = cms.untracked.VLuminosityBlockRange()
process.source.lumisToProcess.extend(myLumis)

What’s in the file? Example content looks like this:

{"160431": [[19, 218]], "160577": [[254, 306]], "160578": [[6, 53], [274, 400]]

Which says, for example, that luminosity sections 19-218 in run 160431 are certified as valid and “good for physics”.

Luminosity over a range of runs

Using the brilcalc lumi --help and the information found from this page on the CERN Open Data Portal, how does one calculate the integrated luminosity for certified lumi sections for RunA of the 2011 data release?

Solution

RunA of 2011 proton-proton data comprises runs 160431 to 173692 (inclusive) so to calculate the integrated luminosity for this era run the command (where we pipe the output to a text file):

> brilcalc lumi -c web --begin 160431 --end 173692 -i Cert_160404-180252_7TeV_ReRecoNov08_Collisions11_JSON.txt > RunA2011lumi.txt

The range of runs for a primary dataset can be found from the primary dataset record page, for example here for the DoubleMu primary dataset from RunB of 2011.

Luminosity separated by luminosity sections

Calculate the luminosity for validated runs and luminosity sections, separated by luminosity sections, outputting your results to a csv (comma-separated-variable) file.

Hint: check out the options in brilcalc lumi --help

Solution

> brilcalc lumi --byls --output-style csv -c web -i Cert_160404-180252_7TeV_ReRecoNov08_Collisions11_JSON.txt > my2011lumibyls.csv

The contents of your csv file will appear as below:

 #Data tag : v1 , Norm tag: None
#run:fill,ls,time,beamstatus,E(GeV),delivered(/ub),recorded(/ub),avgpu,source
160431:1615,19:19,03/14/11 03:14:43,STABLE BEAMS,3500,39.312,39.312,3.4,hfoc
160431:1615,20:20,03/14/11 03:15:07,STABLE BEAMS,3500,39.368,39.368,3.4,hfoc
160431:1615,21:21,03/14/11 03:15:30,STABLE BEAMS,3500,39.305,39.305,3.4,hfoc
160431:1615,22:22,03/14/11 03:15:53,STABLE BEAMS,3500,35.843,35.843,3.1,hfoc
160431:1615,23:23,03/14/11 03:16:17,STABLE BEAMS,3500,37.093,37.093,3.2,hfoc
160431:1615,24:24,03/14/11 03:16:40,STABLE BEAMS,3500,39.620,39.620,3.4,hfoc
160431:1615,25:25,03/14/11 03:17:03,STABLE BEAMS,3500,34.396,34.396,3.0,hfoc
160431:1615,26:26,03/14/11 03:17:27,STABLE BEAMS,3500,39.874,39.874,3.4,hfoc

You may notice the hfoc in the source field. This indicates that the Hadron Forward Zero Counting value for luminosity was used. When available, more precise values can be obtained with the Pixel Luminosity Telescope, given by pxl. These values are preferred. You can select them using the brilcalc lumi --type option. For example: brilcalc lumi -c web -r 208686 --type pxl.

Further Information

More information can be found in the Reference section.

Key Points

  • One can calculate luminosity offline using the brilcalc tool

  • By using the lists of validated runs one can calculate luminosity for data which is certified as ‘good for physics’