{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analysis of an open dataset with RDataFrame\n", "
\n", "This ROOTbook produces a plot of the dimuon invariant mass spectrum starting from a subset of the CMS collision events of Run2010B. \n", "Every entry in the dataset represents a muon pair. The columns available and their types are:\n", "\n", "| Column Name | Type | Quantity |\n", "| :-----------: |:--------:| :--------------------------------------------:|\n", "| *E1* | double | Energy of the first muon |\n", "| *eta1* | double | Pseudorapidity of the first muon |\n", "| *phi1* | double | Phi of the first muon |\n", "| *px1* | double | X component of the momentum of the first muon |\n", "| *py1* | double | Y component of the momentum of the first muon |\n", "| *pz1* | double | Z component of the momentum of the first muon |\n", "| *pt1* | double | Transverse momentum of the first muon |\n", "| *C1* | Long64_t | Charge of the momentum of the first muon |\n", "| *E2* | double | Energy of the second muon |\n", "| *eta2* | double | Pseudorapidity of the second muon |\n", "| *phi2* | double | Phi of the second muon |\n", "| *px2* | double | X component of the momentum of the second muon |\n", "| *py2* | double | Y component of the momentum of the second muon |\n", "| *pz2* | double | Z component of the momentum of the second muon |\n", "| *pt2* | double | Transverse momentum of the second muon |\n", "| *C2* | Long64_t | Charge of the momentum of the second muon |\n", "\n", "\n", "\n", "Dataset Reference:
\n", "McCauley, T. (2014). Dimuon event information derived from the Run2010B public Mu dataset. CERN Open Data Portal. DOI: [10.7483/OPENDATA.CMS.CB8H.MFFA](http://opendata.cern.ch/record/700).\n", "\n", "## Objective of this exercise\n", "The objective is to illustrate how to use RDataFrame to produce the plot of the dimuon invariant mass spectrum, apply some cuts and inspect their efficiency and create some control plots.\n", "In some sense, this is a minimal form of what could be conceptually called an \"analysis\".\n", "\n", "### RDataFrame creation\n", "Let's create a *RDataFrame*, which is located in the *ROOT* namespace. The filename(s) can be specified as a string (with a path or a glob) or a list of strings.\n", "The file path is **https://root.cern/files/teaching/CMS_Open_Dataset.root** and it contains a tree called **data**." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using RDataFrame = ROOT::Experimental::TDataFrame;\n", "auto fileName = \"https://root.cern/files/teaching/CMS_Open_Dataset.root\";\n", "auto df = RDataFrame(\"data\", fileName);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Definition of the \"analisys\" cuts\n", "We need to apply some quality cuts to our muons:\n", "- Central muons, with a pseudorapidity smaller than 2.3\n", "- Muons of opposite charge :)\n", "- Muons with transverse momentum greater than 2 GeV\n", "\n", "In addition, we will define the charge cut as a C++ lambda and the other two as strings. Remember that the strings need to be valid **C++**!\n", "\n", "The dataframe needs to be saved in a variable: we'll need that later. The filters have a name: this will be used at the end of the \"analysis\" to study the efficiency of the selections." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "auto chargeCut = [](Long64_t c1, Long64_t c2){ return c1 != c2;};\n", "auto etaCutStr = \"fabs(eta1) < 2.3 && fabs(eta2) < 2.3\";\n", "auto ptCutStr = \"pt1 > 2 && pt2 > 2\";\n", "auto df_f = df.Filter(chargeCut, {\"C1\", \"C2\"}, \"Opposite Charge\")\n", " .Filter(etaCutStr, \"Central Muons\")\n", " .Filter(ptCutStr, \"Sane Pt\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Creation of a column holding the invariant mass of the dimuon system\n", "Here we create a new column, which does not exist in the original dataset. \n", "We can create it with the usual invariant mass formula, packed in a string.\n", "\\begin{align}\n", "m = \\sqrt{(E1+E2)^2 - (px1+px2)^2 - (py1+py2)^2 - (pz1+pz2)^2 }\n", "\\end{align}\n", "Remember that the string needs to be valid **C++**!" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "auto invMassFormula = \"sqrt(pow(E1+E2, 2) - (pow(px1+px2, 2) + pow(py1+py2, 2) + pow(pz1+pz2, 2)))\";\n", "auto df_fd = df_f.Define(\"invMass\", invMassFormula);" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Creation of the histograms and cutflow efficiency reports\n", "We now create our histograms. We'll prepare some control plots and the invariant mass plot.\n", "The control plots needed are:\n", "- A histogram of the transverse momenta of the muons (1 histogram for each of the leptons) before all cuts\n", "- A 2D histogram with the phi of the first muon on the x axis and the phi of the second muon on the y axis\n", "\n", "The main plot with the invariant mass of the dimuon system has 512 bins from 5 to 110 GeV.\n", "\n", "This is perhaps an opportunity to try out the automatic colouring.\n", "\n", "In addition, after drawing, you will invoke the **Report()** method on the top level node to inspect the efficiency of the cuts.\n", "\n", "**BE CAREFUL!!** When using notebooks, it's good practice to create **TCanvas** instances explicitly - to display the images you *need* to **Draw** the canvases too (there is no asynchronicity in a notebook: drawing must be explicit)." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "auto pt1_h = df.Histo1D(\"pt1\");\n", "auto pt2_h = df.Histo1D(\"pt2\");\n", "\n", "auto invMass_h = df_fd.Histo1D({\"invMass\",\"CMS Opendata;#mu#mu mass [GeV];Events\",512,5,110},\"invMass\");\n", "auto pi = TMath::Pi();\n", "auto phis_h = df_fd.Histo2D({\"invMass\",\"CMS Opendata;#mu#mu mass [GeV];Events\", 64, -pi, pi, 64, -pi, pi}, \"phi1\", \"phi2\");\n", "\n", "TCanvas muonsPts;\n", "pt1_h->Draw(\"PL PLC PMC\");\n", "pt2_h->Draw(\"Same PL PLC PMC\");\n", "muonsPts.SetLogy();\n", "muonsPts.SetLogx();\n", "muonsPts.Draw();\n", "\n", "TCanvas phis;\n", "phis_h->Draw(\"col\");\n", "phis.Draw();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we print the efficiency of the cuts" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Opposite Charge: pass=57688 all=90000 -- 64.098 %\n", "Central Muons: pass=53303 all=57688 -- 92.399 %\n", "Sane Pt : pass=42431 all=53303 -- 79.603 %\n" ] } ], "source": [ "df.Report();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The final plot with a little extra: interactive ROOT JavaScript visualisation. Feel free to zoom and modify the plot using your mouse and keyboard." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%jsroot on\n", "TCanvas invMass;\n", "invMass_h->Draw();\n", "invMass.SetLogy();\n", "invMass.SetLogx();\n", "invMass.SetGrid();\n", "invMass.Draw();" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "What resonances do you recognise?" ] } ], "metadata": { "kernelspec": { "display_name": "ROOT C++", "language": "c++", "name": "root" }, "language_info": { "codemirror_mode": "text/x-c++src", "file_extension": ".C", "mimetype": " text/x-c++src", "name": "c++" } }, "nbformat": 4, "nbformat_minor": 2 }