{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Find the Z boson yourself!\n", "This notebook uses ATLAS Open Data http://opendata.atlas.cern to show you the steps to find the Z boson.\n", "\n", "The whole notebook takes less than an hour to follow through.\n", "\n", "Notebooks are web applications that allow you to create and share documents that can contain:\n", "1. live code\n", "2. visualisations\n", "3. narrative text\n", "\n", "Notebooks are a perfect platform to develop in Python, since you'll need exactly those 3 things: code, visualisations and narrative text!\n", "\n", "By the end of this notebook you will be able to:\n", "1. find the Z boson yourself\n", "2. know some things you can change to improve your measurement" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Contents: \n", "\n", "[Running a Jupyter notebook](#running)
\n", "[To setup everytime](#setupeverytime)
\n", "[Where's my data](#fraction)
\n", "[Calculate that invariant mass!](#good_leptons)
\n", "[Can we process the data yet?!](#load_data)
\n", "[Plot Data](#plot_data)
\n", "[Your tasks](#tasks)
\n", "[Going further](#going_further)
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running a Jupyter notebook\n", "\n", "To run the whole Jupyter notebook, in the top menu click Cell -> Run All.\n", "\n", "To propagate a change you've made to a piece of code, click Cell -> Run All Below.\n", "\n", "You can also run a single code cell, by using the keyboard shortcut Shift+Enter." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Back to contents](#contents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## To setup everytime\n", "We're going to be using a number of tools to help us:\n", "* urllib: let us download files\n", "* uproot: lets us read .root files typically used in particle physics into data formats used in Python\n", "* pandas: lets us store data as dataframes, a format widely used in Python\n", "* numpy: provides numerical calculations such as histogramming\n", "* matplotlib: common tool for making plots, figures, images, visualisations" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "import urllib.request # for downloading files\n", "import pandas as pd # to store data as dataframes\n", "import numpy as np # for numerical calculations such as histogramming\n", "import uproot3 # to read .root files as dataframes\n", "import matplotlib.pyplot as plt # for plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Where's my data?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "filename = 'data_A.exactly2lep.root'\n", "url = 'https://atlas-opendata.web.cern.ch/atlas-opendata/samples/2020/exactly2lep/Data/'+filename\n", "urllib.request.urlretrieve(url, filename)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Back to contents](#contents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Calculate that invariant mass!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Fill in the missing lines to calculate invariant mass.\n", "\n", "1. If the energy of the 2 leptons are *lep_E[0]* and *lep_E[1]*, write the sum of energy, *sumE*\n", "2. Write the sum of x-momentum, *sumpx*\n", "3. Do the same for y and z momenta (*sumpy* and *sumpz*)\n", "4. Now you have the x,y,z components sumpx,sumpy,sumpz. The vector **sump** = (sumpx,sumpy,sumpz). Write the magnitude of total momentum, *sump*.\n", "\n", "The invariant mass, *M*, of a parent particle decaying to two daughter particles is related to properties of the daughter particles by the formula:\n", "\n", "$$M^2=E^2-p^2,$$\n", "\n", "where *E* is the total energy of the daughter particles, and *p* is the magnitude of the vector sum of the momenta of the daughter particles. This is written in natural units with *c*=1.\n", "\n", "5. Write *Mll* using this formula for invariant mass" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# calculate dilepton invariant mass\n", "def calc_mll(lep_pt,lep_eta,lep_phi,lep_E): # lepton pt,eta,phi,energy\n", " \n", " # 0th lepton is [0], next lepton is [1] etc\n", " # get the energy of 0th lepton by lep_E[0]\n", "\n", " # sumE = sum of energy\n", " sumE = \n", " \n", " px_0 = lep_pt[0]*np.cos(lep_phi[0]) # x-momentum of 0th lepton\n", " px_1 = lep_pt[1]*np.cos(lep_phi[1]) # x-momentum of 1st lepton\n", " py_0 = lep_pt[0]*np.sin(lep_phi[0]) # y-momentum of 0th lepton\n", " py_1 = lep_pt[1]*np.sin(lep_phi[1]) # y-momentum of 1st lepton\n", " pz_0 = lep_pt[0]*np.sinh(lep_eta[0]) # z-momentum of 0th lepton\n", " pz_1 = lep_pt[1]*np.sinh(lep_eta[1]) # z-momentum of 1st lepton\n", " \n", " # sumpx = sum of x-momenta\n", " sumpx = \n", " \n", " # sumpy = sum of y-momenta\n", " sumpy = \n", " \n", " # sumpz = sum of z-momenta\n", " sumpz = \n", " \n", " # sump = magnitude of total momentum vector. Remember it's a vector!\n", " sump = \n", " \n", " # Mll = invariant mass from M^2 = E^2 - p^2\n", " Mll = \n", " \n", " return Mll/1000 # divide by 1000 to go from MeV to GeV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Can we process the data yet?!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data_all = pd.DataFrame() # define empty pandas DataFrame to hold all data for this sample\n", "tree = uproot3.open(filename)[\"mini\"] # open the tree called mini\n", "numevents = uproot3.numentries(filename, \"mini\") # number of events\n", "\n", "for data in tree.iterate(['lep_pt','lep_eta','lep_phi','lep_E'], \n", " outputtype=pd.DataFrame, # choose output type as pandas DataFrame\n", " entrystop=numevents*0.001): # stop after fraction of events we want to process\n", "\n", " # calculation of 2-lepton invariant mass \n", " data['mll'] = np.vectorize(calc_mll)(data.lep_pt, data.lep_eta, data.lep_phi, data.lep_E)\n", "\n", " data_all = data_all.append(data) # append dataframe from this batch to the dataframe for the whole sample\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Back to contents](#contents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Function to plot Data" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "bin_edges = np.arange(start=35, # The interval includes this value\n", " stop=110, # The interval doesn't include this value\n", " step=5 ) # Spacing between values\n", "bin_centres = (bin_edges[:-1] + bin_edges[1:]) / 2 # central values of each bin\n", "\n", "# histogram the data\n", "data_x,_ = np.histogram(data_all['mll'], bins=bin_edges ) \n", "\n", "# statistical error on the data\n", "data_x_errors = np.sqrt(data_x)\n", "\n", "# plot the data points\n", "plt.errorbar(x=bin_centres, \n", " y=data_x, \n", " yerr=data_x_errors,\n", " fmt='ko' ) # 'k' means black and 'o' is for circles\n", "\n", "# x-axis label\n", "plt.xlabel('Mll [GeV]')\n", "\n", "# y-axis label\n", "plt.ylabel('Events')\n", "\n", "# make the y-axis log scale\n", "plt.yscale('log')" ] }, { "attachments": { "Z%20boson.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": {}, "source": [ "Compare this with \"Total Cross Section\" as a function of \"Center of Mass Energy\".\n", "\n", "![Z%20boson.png](attachment:Z%20boson.png)\n", "\n", "\n", "\n", "## Your tasks\n", "\n", "1. Write the invariant mass formula, $M^2=E^2-p^2$, with *c* included.\n", "2. Calculate the invariant mass for the first event, in GeV. \n", " * lep_px[0] = 32387 MeV, \n", " * lep_px[1] = -18772 MeV, \n", " * lep_py[0] = 7047 MeV, \n", " * lep_py[1] = -9563 MeV, \n", " * lep_pz[0] = 144152 MeV, \n", " * lep_pz[1] = -2942 MeV, \n", " * lep_E[0] = 147913 MeV, \n", " * lep_E[1] = 21272 MeV \n", " * (can you check these values yourself?)\n", " * (can you check your calculated value?)\n", "3. If lep[0] in the first event is an electron, what's its Lorentz factor, $\\gamma$? Use an electron mass of 0.5 MeV in the formula $E = \\gamma m$\n", "4. Calculate lep_p[0], the magnitude of the total momentum of lep[0].\n", "5. Using lep_p[0], calculate the speed of this electron. Use the formula $p = \\gamma mv/c$\n", "6. Write the possible Z decays into charged leptons. Give an argument as to whether or not each decay happens at the same rate.\n", "7. Besides charged leptons, what are the other possible decays of the Z?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Back to contents](#contents)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finding the Z boson in ATLAS data is a case of calculating invariant mass and plotting a range up to about 100 GeV. The Z boson then shows up in your graph!\n", "\n", "Hopefully you've enjoyed finding the Z boson yourself!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Going further\n", "\n", "If you want to go further, there are a number of things you could try: \n", "* **Estimate the mass of the Z boson** from your graph.\n", "* **Estimate the width of the Z boson** from your graph.\n", "* **Increase the fraction** of events processed. In the line `entrystop=numevents*` in '[Can we process the data yet?!](#load_data)', increase the number from 0.001. \n", "* **Use larger data files**. `data_A` used so far corresponds to an integrated luminosity of 0.5 fb$^{-1}$. Other files include: `data_B` 1.9 fb$^{-1}$, `data_C` 2.9 fb$^{-1}$, `data_D` 4.7 fb$^{-1}$. Try one of these larger files.\n", "* **Use all data files together**. `data_A` + `B` + `C` + `D` corresponds to about 1/14th of the data collected by ATLAS at a centre-of-mass energy of 13 TeV - the highest energy particle collisions achieved on earth.\n", "* **Write the name of the type of peak shown in your graph**.\n", "* **Make a fit to your graph**.\n", "* **Extract the Z boson mass from your fit**.\n", "* **Extract the Z boson width from your fit**.\n", "\n", "With each change, keep an eye on your graph." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[Back to contents](#contents)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }