LHC Olympics using ROOT

The LHC olympics "black box" data files are available on the UW site along with a lot of information about how they were made and how to interpret them. We wish to use ROOT, the C++ analysis framework to examine this data.

For the last LHC Olympics round, Gordon Watts of UW made some basic code to read and process the sample data. I have adapted this code to linux, and made some necessary changes to read the data produced for the second round of the LHC olympics.

First, install ROOT. If you have your root files somewhere other than /usr/lib/root and /usr/include/root, you should edit the Makefile to reflect where root is installed. You should also make sure the ROOTSYS and LD_LIBRARY_PATH reflect where root is installed:

            export ROOTSYS=/usr/local/root
            export LD_LIBRARY_PATH=/usr/local/root/lib
You can add these to your .login or .bashrc scripts.

Second, download my code. This is intended to run under linux. Once you have downloaded it, untar it and compile it:

            tar xvzf root_lhc_olympics.tar.gz
            make

make above will create two executables, ConvertBlackBoxFile and SampleAnalysis. After you have downloaded some data from the official site (for instance, diboson_1005.dat.0.gz) decompress it and convert it to a root file:

            gzip -d diboson_1005.dat.0.gz
            ConvertBlackBoxFile diboson_1005.dat.0 diboson_1005.root
This diboson_1005.root file now contains the events as described in the OlympicEvent.h file. You can examine it directly in root by running root diboson_1005.root and creating a TBrowser object.
            [mcelrath@lifshitz lhc_olympmics]$ root diboson_1005.root
              *******************************************
              *                                         *
              *        W E L C O M E  to  R O O T       *
              *                                         *
              *   Version   5.04/00 20 September 2005   *
              *                                         *
              *  You are welcome to visit our Web site  *
              *          http://root.cern.ch            *
              *                                         *
              *******************************************

            FreeType Engine v2.1.9 used to render TrueType fonts.
            Compiled on 22 September 2005 for linux with thread support.

            CINT/ROOT C/C++ Interpreter version 5.16.2, July 14 2005
            Type ? for help. Commands must be C++ statements.
            Enclose multiple statements between { }.

            root [0] TBrowser b;
(you should type TBrowser b; and hit enter). This will open a new window. Click on "ROOT Files" and you should see diboson_1005. This is nice, but rather useless if we want to figure out what is in the file.

The goal here is to plot various quantities, combining the information in the event to isolate physically interesting quantities. (But remember -- there is no background in these files) A sample analysis is in the file SampleAnalysis.C which plots the quantities that you see if you examine the data file directly. Run the SampleAnalysis program that is generated when you type make, then run root plots.root and again create a TBrowser object by typing TBrowser b;. Again click on "ROOT Files" and "plots.root" and you will see these histograms.

Most of these histograms are boring and it's almost impossible to learn anything from them. I have added two histograms containing some physics content: dijet_mas and dilep_mas which are the invariant masses of all jet pairs and lepton pairs, respectively. In these you can clearly see the W and Z peaks.

In order to construct more sophisticated variables from this data you will find the ROOT documentation helpful, in particular that for TLorentzVector and TH1F (the 1-dimensional histogram of Float values).

Questions

  1. See Physics 252b Handout for questions.
If you discover any problems or have questions, please email me (Bob McElrath). My email address is my last name at physics.ucdavis.edu. Also please share any improvements you make!

There exists another body of code to do these kinds of things using Mathematica. However I feel strongly that Mathematica is the wrong tool for this job, for the following reasons.

  1. ROOT is the tool that is and will be used by the experimentalists analyzing LHC data. Experimentalists will have to learn it anyway. It is in theorists' best interest to learn it as well, to facilitate communication and code-passing between theory and experiment.
  2. Mathematica is a theorists tool, and while conveninent for theorists, is difficult to come by and learn for experimentalists.
  3. Mathematica is not suited to reading or writing large amounts of data. Of course it does have the capability to write data, but so do BASIC and bash. Depending on what you want to look at, Monte Carlo can become quite large.
  4. Mathematica is extremely expensive, limiting the number of people that can be simultaneously using it and the amount of CPU time one can devote to one's studies. ROOT is free. It would be extremely expensive, for instance, to give a class assignment to your graduate students to look at some LHC Olympics data.
On the same page is also the software that was used to generate some of the blackbox data. It contains PYTHIA and PGS, a package maintain by Prof. John Conway, so could be used to simulate backgrounds using PYTHIA in the same format, then analyzed with the ROOT code above.