{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Apache Spark and High Energy Physics Data Analysis\n", "## An example using LHCb open data\n", "\n", "This notebook is an example of how to use Spark to perform a simple analysis using high energy physics data from a LHC experiment. \n", "The exercises, figures and data are from original work developed and published by the **LHCb collaboration** as part of the **opendata** and outreach efforts (see credits below). \n", "**Prerequisites** - This work is intended to be accessible to an audience with some familiarity with data analysis in Python and an interest in particle Physics at undergraduate level. \n", "**Technology** - The focus of this notebook is as much on tools and techniques as it is on physics: **Apache Spark** is used for reading and analyzing high energy physics (HEP) data using Python with Pandas and Jupyter notebooks.\n", "\n", "**Credits:**\n", " * The original text of this notebook, including all exercises, analysis, explanations and data have been developed by the LHCb collaboration and are authored and shared by the LHCb collaboration in their opendata project at: \n", " * https://github.com/lhcb/opendata-project\n", " * http://www.hep.manchester.ac.uk/u/parkes/LHCbAntimatterProjectWeb/LHCb_Matter_Antimatter_Asymmetries/Homepage.html \n", " * https://cds.cern.ch/record/1994172?ln=en \n", " \n", " * The library for reading physics data stored using the popular [ROOT format](https://en.wikipedia.org/wiki/ROOT) has been developed by [DIANA-HEP](http://diana-hep.org/) and [CMS Big Data project](https://cms-big-data.github.io/). See also the code repository at: \n", " * https://github.com/diana-hep/spark-root\n", "\n", " * The Spark code in this notebook has been developed in the context of the CERN Hadoop and Spark service. \n", "Contact email: Luca.Canali@cern.ch" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Introduction and setup of the lab environemnt\n", "\n", "There are a few different ways that you can to run Python and Spark in a notebook environment.\n", "The following are instructions to set up a lab environemnt on a low-end system (small VM or laptop).\n", "If you have already set up Spark on a local machine or a cluster, you can just start the Jupyter notebook. \n", "**Note for CERN users**: if you are using [CERN SWAN service](https://swan.web.cern.ch/) (hosted Jupyter notebooks) to run this, you can move on to the next cell.\n", "\n", "### Instructions to get started with Jupyter notebooks and PySpark on a standalone system:\n", "\n", "* Setup the Python environment, for example download and install Anaconda https://www.continuum.io/downloads\n", " * version used/tested for this notebook: Anaconda 4.4.0 for Python 2.7\n", "\n", "* Set up Spark\n", " * simply run `pip install pyspark` \n", " * as an alternative download Spark from http://spark.apache.org/downloads.html\n", " * note: Spark version used for testing this notebook: Spark 2.2.0 and 2.1.1\n", "\n", "* Start the Jupyter notebook\n", "```python\n", "jupyter-notebook --ip=`hostname` --no-browser\n", "```\n", "\n", "* Point your browser to the URL as prompted \n", "* Open this notebook " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# This starts the Spark Session\n", "# Note: Shift-Enter can be used to run Jupyter cells\n", "# These instructions rely on internet access to download the spark-root package from Maven Central\n", "\n", "from pyspark.sql import SparkSession\n", "\n", "spark = SparkSession.builder \\\n", " .appName(\"LHCb Open Data with Spark\") \\\n", " .config(\"spark.jars.packages\", \"org.diana-hep:spark-root_2.11:0.1.11\") \\\n", " .getOrCreate()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------+\n", "|Hello World!|\n", "+------------+\n", "|Hello World!|\n", "+------------+\n", "\n" ] } ], "source": [ "# Test that Spark SQL works\n", "\n", "sql = spark.sql\n", "sql(\"select 'Hello World!'\").show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Get the data: download from CERN open data portal\n", "\n", "Download the data for the exercises from the CERN opendata portal:\n", "More info on the CERN opedata initiative at http://opendata.cern.ch/about \n", "**Note for CERN users** using CERN SWAN (hosted notbooks): you don't need to download data (see next cell)\n", "\n", "Simulation data (~2 MB) - you need this file only for the first part of the notebook: working on simulation data \n", "http://opendata.cern.ch/eos/opendata/lhcb/AntimatterMatters2017/data/PhaseSpaceSimulation.root \n", "\n", "Measurement data (~1 GB) - you will need these files for the second part of the notebook: working on real data \n", "http://opendata.cern.ch/eos/opendata/lhcb/AntimatterMatters2017/data/B2HHH_MagnetDown.root \n", "http://opendata.cern.ch/eos/opendata/lhcb/AntimatterMatters2017/data/B2HHH_MagnetUp.root \n", "\n", "**Notes:** \n", "On Linux you can use [wget](https://www.gnu.org/software/wget/) to download the files \n", "If you run Spark on a standalone system or VM, simply put the data in the local filesystem. \n", "If you are using Spark on a cluster, you should put the data in a cluster filesystem, for example HDFS. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Edit this with the path to the data, with a trainling \"/\" \n", "# see above at \"get the data\" for details on how to download\n", "\n", "# CERN SWAN users can find data already in EOS\n", "data_directory = \"/eos/opendata/lhcb/AntimatterMatters2017/data/\"\n", "\n", "# Uncomment and edit the path for locally downloaded data\n", "# data_directory = \"/home/luca/misc/opendata-project/data/\"\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "heading_collapsed": true }, "source": [ "# Measuring Matter Antimatter Asymmetries at the Large Hadron Collider" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "![](http://lhcb-public.web.cern.ch/lhcb-public/en/LHCb-outreach/multimedia/LHCbDetectorpnglight1.png)" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Getting Started\n", "\n", "Note: the original text of this exercise in the form relased by LHCb can be found at https://github.com/lhcb/opendata-project\n", "____" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ " Welcome to the first guided LHCb Open Data Portal project! \n", "\n", "
Here you will be able to analyse data taken by the Large Hadron Collider (LHC) at CERN. The aim of this study is for you to be able to search for differences in the behaviour of matter and [antimatter](https://en.wikipedia.org/wiki/Antimatter). This project will enable you to carry out your own data analysis at a level similar to that of CERN research. This project does not require a detailed knowledge of particle physics. It is most suitable for people with a scientific and mathematical background equivalent to that required for applying for university entrance in a science, technology engineering or mathematics discipline. Some previous familiarity with computer programming would also be advantageous. Additional theoretical information or programming knowledge you might need is provided as the project progresses.
\n", "\n", "Before you start, you might find it helpful to find out more about matter antimatter asymmetries, what we hope to learn by studying them, and how we can detect them with experiments such as the LHCb experiment at CERN.\n", "\n", "Here are some details that relate directly to this project:\n", " - What is the [particle physics focus](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/ProjectIntro.ipynb) of this experiment? and what will I study in this project?\n", " - How does the LHCb [detector](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/DetectorSoftwareDataSample.ipynb) record the data?\n" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "## Reading simulation data" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "In order to get started and check the first code that you will be writing works correctly it is best to start by analysing simulated data rather than real data from the LHC. The real data contains not only the type of events that you wish to analyse, known as the 'signal', but also events that can fake these, known as 'background'. The real data measurements are also limited by the resolution of the detector. The simplified simulation data provided here contains only the signal events and provides the results that would be obtained for a perfect detector.\n", "\n", "IMPORTANT: For every code box with code already in it, like the one below you must click in and press shift+enter to run the code.\n", "\n", "If the `In [x]:` to the left of a codebox changes to `In [*]:` that means the code in that box is currently running" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "# Boilerplate\n", "from __future__ import print_function\n", "from __future__ import division\n", "\n", "%pylab inline\n", "pylab.rcParams['figure.figsize'] = (12.0, 8.0)" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "If you want help with coding there is in addition to the [example code](https://github.com/lhcb/opendata-project/tree/master/Example-Analysis.ipynb), some hints within each section and a [function reference list](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/FunctionReferences.pdf) \n", "\n", "This is a [reference to Spark DataFrames and SQL](https://spark.apache.org/docs/latest/sql-programming-guide.html)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hidden": true }, "outputs": [ { "data": { "text/plain": [ "50000" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Let us now load the simulated data\n", "# as detailed above you should have downloaded locally the simulation data from \n", "# http://opendata.cern.ch/eos/opendata/lhcb/upload/AntimatterMatters2017/data/PhaseSpaceSimulation.root\n", "\n", "# This reads the data into a Spark DataFrame using the spark-root connector\n", "sim_data_df = spark.read.format(\"org.dianahep.sparkroot\").load(data_directory + \"PhaseSpaceSimulation.root\")\n", "\n", "# This registers the Spark DataFrame as a temporary view and will allow the use of SQL, used later in the notebook\n", "sim_data_df.createOrReplaceTempView(\"sim_data\") \n", "\n", "sim_data_df.cache() # it is a small dataset (~2 MB) so we can afford to cache it\n", "sim_data_df.count()" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "
Now that you can access the data, you can use a number of functions which can help you analyse it. You can find these functions in the libraries at the top of the page. Try to make a table of some of the information within your data file so that you can get a feel of the typical values for data in the set. Understanding the range of values for different variables will help with plotting graphs.
\n", "\n", "The data contains information about 'events' that were observed in the detector. An event refers to the particles produced when an interaction took place when two proton are collided at the LHC. The data you have includes information about particles observed in the detector after each collision. If you think of the data as a table, each row of the table is the results from a different collision. The columns of the table are different quantities measured about the particles produced in the collision. \n", "\n", "We are interested in analysing the decays of particles called B+ or B- mesons decaying into three other mesons called kaons (K+ or K-). The events you have been given are those in which this process may have occurred. The detector has been used to reconstruct tracks that may have come from the kaons. You are given the measured momenta, charge, and likelihood of the tracks being kaons. You are given information for three tracks in each event, the ones that could be the three kaons that a B+ or B- meson has decayed into. The following information is available about each event: [information list](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/EventData.ipynb)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_FlightDistanceB_VertexChi2H1_PXH1_PYH1_PZH1_ProbKH1_ProbPiH1_ChargeH1_IPChi2H1_isMuon...H2_IPChi2H2_isMuonH3_PXH3_PYH3_PZH3_ProbKH3_ProbPiH3_ChargeH3_IPChi2H3_isMuon
00.01.03551.841636.9623904.141.00.0-11.00...1.0036100.4016546.83295600.611.00.0-11.00
10.01.0-2525.98-5284.0535822.001.00.011.00...1.00-8648.32-16617.5698535.131.00.0-11.00
20.01.0-700.671299.738127.761.00.0-11.00...1.00-13483.3410860.7779787.591.00.011.00
30.01.03364.631397.30222815.291.00.011.00...1.001925.16-551.1240420.961.00.011.00
40.01.0-581.66-1305.2422249.591.00.0-11.00...1.00-2820.04-8305.43250130.001.00.0-11.00
50.01.0112.84-13297.9851882.871.00.011.00...1.00-440.95-13699.4271163.141.00.0-11.00
60.01.05558.973913.5256981.081.00.0-11.00...1.003457.70780.1328716.941.00.011.00
70.01.0-15208.03-1783.93265210.551.00.011.00...1.00-4478.67-164.3971498.091.00.011.00
80.01.0-109.048239.25191486.941.00.0-11.00...1.00-2083.5911359.35192297.671.00.0-11.00
90.01.015175.2693142.09379269.301.00.011.00...1.003295.8424950.02105990.481.00.0-11.00
\n", "

10 rows × 26 columns

\n", "
" ], "text/plain": [ " B_FlightDistance B_VertexChi2 H1_PX H1_PY H1_PZ H1_ProbK \\\n", "0 0.0 1.0 3551.84 1636.96 23904.14 1.0 \n", "1 0.0 1.0 -2525.98 -5284.05 35822.00 1.0 \n", "2 0.0 1.0 -700.67 1299.73 8127.76 1.0 \n", "3 0.0 1.0 3364.63 1397.30 222815.29 1.0 \n", "4 0.0 1.0 -581.66 -1305.24 22249.59 1.0 \n", "5 0.0 1.0 112.84 -13297.98 51882.87 1.0 \n", "6 0.0 1.0 5558.97 3913.52 56981.08 1.0 \n", "7 0.0 1.0 -15208.03 -1783.93 265210.55 1.0 \n", "8 0.0 1.0 -109.04 8239.25 191486.94 1.0 \n", "9 0.0 1.0 15175.26 93142.09 379269.30 1.0 \n", "\n", " H1_ProbPi H1_Charge H1_IPChi2 H1_isMuon ... H2_IPChi2 \\\n", "0 0.0 -1 1.0 0 ... 1.0 \n", "1 0.0 1 1.0 0 ... 1.0 \n", "2 0.0 -1 1.0 0 ... 1.0 \n", "3 0.0 1 1.0 0 ... 1.0 \n", "4 0.0 -1 1.0 0 ... 1.0 \n", "5 0.0 1 1.0 0 ... 1.0 \n", "6 0.0 -1 1.0 0 ... 1.0 \n", "7 0.0 1 1.0 0 ... 1.0 \n", "8 0.0 -1 1.0 0 ... 1.0 \n", "9 0.0 1 1.0 0 ... 1.0 \n", "\n", " H2_isMuon H3_PX H3_PY H3_PZ H3_ProbK H3_ProbPi H3_Charge \\\n", "0 0 36100.40 16546.83 295600.61 1.0 0.0 -1 \n", "1 0 -8648.32 -16617.56 98535.13 1.0 0.0 -1 \n", "2 0 -13483.34 10860.77 79787.59 1.0 0.0 1 \n", "3 0 1925.16 -551.12 40420.96 1.0 0.0 1 \n", "4 0 -2820.04 -8305.43 250130.00 1.0 0.0 -1 \n", "5 0 -440.95 -13699.42 71163.14 1.0 0.0 -1 \n", "6 0 3457.70 780.13 28716.94 1.0 0.0 1 \n", "7 0 -4478.67 -164.39 71498.09 1.0 0.0 1 \n", "8 0 -2083.59 11359.35 192297.67 1.0 0.0 -1 \n", "9 0 3295.84 24950.02 105990.48 1.0 0.0 -1 \n", "\n", " H3_IPChi2 H3_isMuon \n", "0 1.0 0 \n", "1 1.0 0 \n", "2 1.0 0 \n", "3 1.0 0 \n", "4 1.0 0 \n", "5 1.0 0 \n", "6 1.0 0 \n", "7 1.0 0 \n", "8 1.0 0 \n", "9 1.0 0 \n", "\n", "[10 rows x 26 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Display the first 10 rows in the sim_data_df Spark DataFrame\n", "\n", "sim_data_df.limit(10).toPandas() # use pandas only for visualization" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root\n", " |-- B_FlightDistance: double (nullable = true)\n", " |-- B_VertexChi2: double (nullable = true)\n", " |-- H1_PX: double (nullable = true)\n", " |-- H1_PY: double (nullable = true)\n", " |-- H1_PZ: double (nullable = true)\n", " |-- H1_ProbK: double (nullable = true)\n", " |-- H1_ProbPi: double (nullable = true)\n", " |-- H1_Charge: integer (nullable = true)\n", " |-- H1_IPChi2: double (nullable = true)\n", " |-- H1_isMuon: integer (nullable = true)\n", " |-- H2_PX: double (nullable = true)\n", " |-- H2_PY: double (nullable = true)\n", " |-- H2_PZ: double (nullable = true)\n", " |-- H2_ProbK: double (nullable = true)\n", " |-- H2_ProbPi: double (nullable = true)\n", " |-- H2_Charge: integer (nullable = true)\n", " |-- H2_IPChi2: double (nullable = true)\n", " |-- H2_isMuon: integer (nullable = true)\n", " |-- H3_PX: double (nullable = true)\n", " |-- H3_PY: double (nullable = true)\n", " |-- H3_PZ: double (nullable = true)\n", " |-- H3_ProbK: double (nullable = true)\n", " |-- H3_ProbPi: double (nullable = true)\n", " |-- H3_Charge: integer (nullable = true)\n", " |-- H3_IPChi2: double (nullable = true)\n", " |-- H3_isMuon: integer (nullable = true)\n", "\n" ] } ], "source": [ "# Print the schema of the simulation data\n", "\n", "sim_data_df.printSchema() # the schema of the root file" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Invariant mass reconstruction\n", "\n", "## Aims:\n", "* Plot a histogram of the momentum of one of the kaon candidates\n", "* Calculate the energy of each of the kaon candidates\n", "* Plot the invariant masses of the B+ or B- mesons___" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting a feature:\n", "\n", "You can plot any feature of the data in a histogram. Choose any suitable binning that allows you to observed the distribution of the variable clearly. Try making a histogram for the first kaon candidate's momentum x-component (H1_PX):" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuQAAAHxCAYAAAAlV6nQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYZVV9L/zvT1poDCJjCDKkUdGAesXYIeg1akQFzIC8\nQS+OaAgmAX1jfJO8OESJBq/mNZp4FY2JXtREEYkDDmgQjZo3ijaIjBIahdDIZDMFBaRh3T/OLj1d\nVHVXdVfV6u76fJ7nPLXP2nuts/ZZ51R9a5+196nWWgAAgD7u17sDAACwmAnkAADQkUAOAAAdCeQA\nANCRQA4AAB0J5AAA0JFADotQVV1cVU/p3Y9NTVVdWVVPG5ZfXVX/MIdt315VDxmWT6mqv5zDtt9T\nVX8+V+3N4nH/sKquH/Zt54V+/IVUVXsP+7nVPLT94qr6t42of2ZVHT2XfZrmcTaqn8D0BHLYwoyH\nyrGytf6QttYe2Vr71/W0s6yqWlUtmaeubtJaa29qrf3e+rarqn+tqvVu11rbrrX2vY3t11ShqLX2\nB621N25s27Psx/2TvC3JM4Z9Wz1p/ZSvn8n/jFTVe6vqsqq6t6pePMPHPrGq7h4C8i1V9e9V9fhh\n3cur6qKq2nps+1dU1bc35rXcWvvPYT/v2dA25sKw7/84XtZaO6y19oFefZrKVP0EpieQA10slqC/\nBe/nbkmWJrl4I9v5TpLjkpw3y3ofba1tl2TXJP+W5ONVVUneleSWJK9JkuFTib9Ickxrbc1G9hVg\nXgjksAhNmppxYFWtqKrbhukHbxs2++rw85bhSOTjq+p+VfXaqrqqqm6oqg9W1YPG2n3RsG51Vf35\npMc5sapOr6p/rKrbkrx4eOyvD0c5r62qd046stmq6riquryq/quq3lhVDx2OiN5WVaeNb78Bz8ML\nx/r7mknrfnqEr6qWDv1ePfT1W1W1W1WdlOTXkrxzeI7eOdbv46vq8iSXj5U9bOwhdqmqs4b9+kpV\n/eKw3X2OLE8cha+q/ZK8J8njJ44OD+snH3U+tqpWVtVNVXVGVT140nP6B8NzektVvWsIslM9P9tU\n1d9U1Q+G298MZQ9Pctmw2S1V9aUNG4Gktfau1trZSe7cwPp3J/lAkl9IsnNr7d4kxyT546p6dJK/\nT3Jya21GgX+698PkcRnG5C+H1+LtVfXpqtq5qv5pqPutqlo2Vd2x+lN+slJVf1tVVw/tnFtVvzaU\nH5rk1Un+x/CY35nc1rreo2P9OLqq/rOqfjj5dT+pHzsPr5/bquqbSR66kf18SVVdOrzmv1dVvz+T\nMYHFQCAH/jbJ37bWts/oD+5pQ/mThp87DB/Vfz3Ji4fbryd5SJLtkkyE0P2TnJzk+Ul2T/KgJHtM\neqzDk5yeZIck/5TkniR/nGSXJI9PcnBGR0vHHZLkcUkOSvJnSd6b5AVJ9kryqCTP3ZCdHvr77iQv\nTPLgJDsn2XOazY8e9mevYbs/SHJHa+01Sb6W5GXDc/SysTrPSvKrSfafps3nJ3ljRvt+fkbPxzq1\n1i4dHvvrw+PtMMV+PTXJ/0zynIzG4aokp07a7DeT/EqS/zZsd8g0D/majJ73A5I8JsmBSV7bWvuP\nJI8cttmhtfbU9fV9vlTVNhm9Jq9urf0wSVprl2X0HHw5ozH9i1k0Od37YSpHZfT62WPY9utJ/neS\nnZJcmuT1s9mXMd/K6DnfKcmHk3ysqpa21j6f5E0ZPh1orT1mirovzjTv0TFPTPKIjN5vrxv+0ZvK\nuzL6R2n3JL873Damnzdk9NrbPslLkry9qn55Pc8FLAoCOWyZPjkc/bxlOIp68jq2vTvJw6pql9ba\n7a21b6xj2+cneVtr7XuttduTvCrJUcORvyOTfLq19m+ttZ8keV2SNqn+11trn2yt3dtau6O1dm5r\n7RuttTWttSuT/F2SJ0+q81ettdtaaxcnuSjJvwyPf2uSM5M8dmZPyX0cmeQzrbWvttbuSvLnSe6d\nZtu7MwriD2ut3TP0+7b1tP8/W2s3tdbumGb9Z8ce+zUZHfXea0N2ZJLnJ3l/a+28oe1XDW0vG9vm\nza21W1pr/5lRaD1gHW29obV2Q2vtxoyC7Qtn2Z8fTnotPm+W9afznKG9qzP6h+2ISeu/ltGYnd5a\nm83R99m8H/53a+2KsdfiFa21Lw5TYz6WDXxtttb+sbW2enhf/HWSbTIK0DOxrvfohL8Y3n/fyWjK\n0H2CfY1OXv2dJK9rrf2otXZRRp9EbHA/W2ufHZ6v1lr7SpJ/yegTJlj0BHLYMj2rtbbDxC33Peo8\n7pgkD0/y3eFj9t9cx7YPzuiI64SrkizJaD7xgzMKR0mS1tqPk6x1ot/4+iSpqodX1Weq6roaTWN5\nU0ZHjMddP7Z8xxT3t5uqozW6ksztw22qP/qT+/ujKfo74UNJvpDk1GHqxl/V6KTGdbl6puuH4HTT\n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\n0JFADgAAHQnkAADQkUAOAAAdCeQAANCRQA4AAB0J5AAA0NGS3h0A2NQsO+GzvbvAPJjrcb3yzb8x\np+0Bi5fOkDxtAAAKjElEQVQj5AAA0JFADgAAHQnkAADQkUAOAAAdCeQAANCRQA4AAB0J5AAA0JFA\nDgAAHfliIADYAHP5RUO+ZAgWN4Ec2CL4dk0ANlemrAAAQEcCOQAAdCSQAwBARwI5AAB05KROoAsn\nYQLAiEAOAJ3N9T+oLqMImxdTVgAAoCOBHAAAOjJlBZgRc75h82EKDGxeHCEHAICOHCGHLZij2sBc\nmMvfJY62w31t9kfIq+rQqrqsqlZW1Qm9+wMAALOxWR8hr6qtkrwrydOTrEryrao6o7V2Sd+ewYZx\nRBvY0pnfDve1WQfyJAcmWdla+16SVNWpSQ5PIpCzIARogL5Mp2FLsLkH8j2SXD12f1WSX+3UFwZC\nKgCbI3+/Nh2L7Z+jzT2Qz0hVvTTJS4e7t1fVZZ26skuSH3Z6bKZmTDY9xmTTZFw2PcZk02Rc5kC9\nZU6b6zkmvziTjTb3QH5Nkr3G7u85lK2ltfbeJO9dqE5Np6pWtNaW9+4HP2NMNj3GZNNkXDY9xmTT\nZFw2PZvDmGzuV1n5VpJ9q2qfqto6yVFJzujcJwAAmLHN+gh5a21NVb0syReSbJXk/a21izt3CwAA\nZmyzDuRJ0lr7XJLP9e7HDHWfNsN9GJNNjzHZNBmXTY8x2TQZl03PJj8m1Vrr3QcAAFi0Nvc55AAA\nsFkTyGehqp5dVRdX1b1VtXysfFlV3VFV5w+394yte1xVXVhVK6vqHVVVQ/k2VfXRofycqlo2Vufo\nqrp8uB09Vr7PsO3Koe7WC7Pnm7bpxmVY96rh+bqsqg4ZKzcuC6SqTqyqa8beH88cWzfv48PGqapD\nh/FZWVUn9O7Plqiqrhxe7+dX1YqhbKeqOmt4PZ9VVTuObT9n7xt+pqreX1U3VNVFY2ULMg5+f01t\nmjHZMv+mtNbcZnhLsl+SRyT51yTLx8qXJblomjrfTHJQkkpyZpLDhvLjkrxnWD4qyUeH5Z2SfG/4\nueOwvOOw7rQkRw3L70nyh72fk03hto5x2T/Jd5Jsk2SfJFck2cq4LPj4nJjkT6YoX5Dxcduosdtq\nGJeHJNl6GK/9e/drS7sluTLJLpPK/irJCcPyCUneMizP2fvG7T7j8KQkv5yxv+cLMQ5+f816TLbI\nvymOkM9Ca+3S1tqMv1SoqnZPsn1r7RttNMIfTPKsYfXhST4wLJ+e5ODhP7ZDkpzVWruptXZzkrOS\nHDqse+qwbYa6E20tausYl8OTnNpau6u19v0kK5McaFw2GfM+Pgu5M1uoA5OsbK19r7X2kySnZjQG\nzL/x1/r475W5fN8wprX21SQ3TSpeiHHw+2sa04zJdDbrMRHI584+w0cnX6mqXxvK9kiyamybVUPZ\nxLqrk9HlG5PcmmTn8fJJdXZOcsuw7eS2mNp0z6VxWXgvr6oLho8fJz7yXYjxYeN4XhdGS/LFqjq3\nRt8snSS7tdauHZavS7LbsDyX7xvWbyHGwfts9ra4vymb/WUP51pVfTHJL0yx6jWttU9NU+3aJHu3\n1lZX1eOSfLKqHjlvnVyENnBcWCDrGp8k707yxoxCxxuT/HWS31243sEm74mttWuq6ueTnFVV3x1f\n2VprVeWSaJ0Zh03GFvk3RSCfpLX2tA2oc1eSu4blc6vqiiQPT3JNkj3HNt1zKMvwc68kq6pqSZIH\nJVk9lD9lUp1/HdbtUFVLhv/ixtva4m3IuORnz/GEiefMuMyxmY5PVf19ks8MdxdifNg4040Rc6i1\nds3w84aq+kRGU4Wur6rdW2vXDh+53zBsPpfvG9ZvIcbB769ZaK1dP7G8Jf1NMWVlDlTVrlW11bD8\nkCT7Jvne8DHXbVV10DAn6UVJJo7mnpFk4qzdI5N8aZjb9IUkz6iqHYePYZ6R5AvDui8P22ao68jw\nup2R5KjhLOp9MhqXbxqXhTX8EZtwRJKJs+XnfXzmdccWh28l2bdGVxLaOqOTns7o3KctSlX9XFU9\ncGI5o9fuRVn7tT7+e2Uu3zes30KMg99fs7DF/k2ZzzNGt7TbMPCrMjoafn1GgSxJfifJxUnOT3Je\nkt8aq7M8oxfLFUnemZ99GdPSJB/L6KSDbyZ5yFid3x3KVyZ5yVj5Q4ZtVw51t+n9nGwKt+nGZVj3\nmuG5vyzDWdXGZcHH50NJLkxyQUa//HZfyPFx2+jxe2aS/xjG4jW9+7Ol3YbfH98ZbhdPPMcZzWM9\nO8nlSb6YZKexOnP2vnFbayw+ktEU1LuHvynHLNQ4+P01qzHZIv+m+KZOAADoyJQVAADoSCAHAICO\nBHIAAOhIIAcAgI4EcgAA6EggBwCAjgRygE1QVd0+6f6Lq+qdw/KTquq8qlpTVUdO3cJP6y2rqjuq\n6vyquqSq3lNV96uq5VV18fCFP6mqh1bV96pq+yna2L2qPjMsP6WqWlX93tj6A4ayP1lHP55cVV+f\nVLakqq6vqgcP9w8avnlvujZOrap917W/AJsjgRxg8/OfSV6c5MMz3P6K1toBSf5bkv2TPKu1tiLJ\nV5JMhOh3ZfSlNLdNUf+VScaD8kVJnjN2/7kZfbHNunwtyZ5V9YtjZU9LcnFr7QfD/cOSfH4dbbw7\nyZ+t53EANjsCOcBmprV2ZWvtgiT3zrLemiT/nuRhQ9GrkxxbVX+WZElr7SPTVP2drB2Ur0qytKp2\nG76K+tAkZ06sHI62f76qzq2qr1XVL7XW7k1yWpKjxto5KqNv4ptwcJIvVtVWVfXWqrqoqi6oqpcP\n67+W5GlVtWQ2+w2wqfNLDWDTtG1VnT92f6eMviZ6g1XVAzIKva9LktbaLVX15iQnZ3TkfKo6+yS5\nubV216RVpyd5dpJvJzkvyfj69yb5g9ba5VX1q0P7T80ofP99krdU1TZJnpnR0fdU1S5J7m6t3VpV\nf5hkWZIDWmtrqmqnob/3VtXKJI9Jcu7GPBcAmxKBHGDTdMcwzSTJaA55kuUb2NZDh3DfknyqtXbm\n2LrDklyfUSC/bIq6uye5cYry05J8NMkvZRS0nzD0c7th+WOjg+dJkm2SpLW2oqq2q6pHJNkvyTmt\ntZuGbZ6R5F+G5aclec9wRD9j2yTJDUkeHIEc2III5ABbvivGw/2EqvrNJA9KckiST1TVF1prP560\n2R1Jlk6u21q7rqruTvL0JH+UIZBnNBXylqkeb/CRjKaq7Je1p6scluRtM9iXpUOfALYY5pADLEJV\ntW1GAfj41tqFST6V5DVTbPofGU0fmcrrkvy/rbV7JgqGk0K/X1XPHh6nquoxY3U+kuQFGU1h+dTE\nNhmdcDoxReesJL8/MVd8YsrK4OEZnVQKsMUQyAE2M1X1K1W1KqM53H9XVRdvQDN/nuQTrbVLhvsn\nJnnu5MsKttZ+lOSKqnrYpPpprf17a+2TU7T9/CTHVNV3klyc5PCxOpcm+VGSLw1tJ8njkny7tdaG\n+/+Q0ZVkLhjaeN6w37tlNJXnug3YX4BNVv3s9x8A3FdVHZHkca21185T+69NsrK1dup6tvvjJLe1\n1t43H/0A6MUccgDWqbX2iaraeR7b/8sZbnpLkg/NVz8AenGEHGALUFWPzn3D6l2ttV/t0R8AZk4g\nBwCAjpzUCQAAHQnkAADQkUAOAAAdCeQAANCRQA4AAB39HxhiYovoKM/rAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot a histogram of the distribution of the H1_PX variable, using Pandas\n", "\n", "# This is a basic solution that moves all the data from the Spark DataFrame \n", "# into a Python Pandas DataFrame. It's OK for small sata sets, but it has scalability issues\n", "\n", "h1px_data = sim_data_df.select(\"H1_PX\").toPandas() # select H1_PX data and moves it to Pandas\n", "h1px_data.plot.hist(bins=31, range=[-150000, 150000], title=\"Histogram - distribution of H1_PX, simulation data\")\n", "xlabel('H1_PX (MeV/c)')\n", "ylabel('Count');" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n7fT5AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# This example computes and plots a histogram of the H1_PX data, similarly to the previous cell\n", "# The notable difference is that Spark SQL is used to compute the aggregations and only the final result\n", "# is returned and transformed into a Pandas DataFrame, just for plotting. \n", "# This vesion can scale on a cluster for large datasets, while the previous version requires to fetch all data into Pandas\n", "\n", "histogram_h1px_df = sql(\"\"\"\n", " select round(H1_PX/10000,0) * 10000 as bin, count(1) as count\n", " from sim_data \n", " group by round(H1_PX/10000,0) order by 1\n", " \"\"\")\n", "histogram_h1px_pandas = histogram_h1px_df.toPandas()\n", "histogram_h1px_pandas.plot.bar(x='bin', y='count', title=\"Histogram - distribution of H1_PX, simulation data,\")\n", "xlabel('H1_PX (MeV/c)')\n", "ylabel('Count');" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+---------+-----+\n", "| bin|count|\n", "+---------+-----+\n", "|-180000.0| 1|\n", "|-170000.0| 5|\n", "|-160000.0| 1|\n", "|-150000.0| 9|\n", "|-140000.0| 11|\n", "|-130000.0| 19|\n", "|-120000.0| 26|\n", "|-110000.0| 44|\n", "|-100000.0| 60|\n", "| -90000.0| 107|\n", "| -80000.0| 159|\n", "| -70000.0| 222|\n", "| -60000.0| 395|\n", "| -50000.0| 590|\n", "| -40000.0| 893|\n", "| -30000.0| 1454|\n", "| -20000.0| 2658|\n", "| -10000.0| 6540|\n", "| 0.0|23684|\n", "| 10000.0| 6453|\n", "| 20000.0| 2693|\n", "| 30000.0| 1459|\n", "| 40000.0| 892|\n", "| 50000.0| 578|\n", "| 60000.0| 380|\n", "| 70000.0| 230|\n", "| 80000.0| 136|\n", "| 90000.0| 104|\n", "| 100000.0| 61|\n", "| 110000.0| 45|\n", "| 120000.0| 28|\n", "| 130000.0| 25|\n", "| 140000.0| 20|\n", "| 150000.0| 11|\n", "| 160000.0| 6|\n", "| 180000.0| 1|\n", "+---------+-----+\n", "\n" ] } ], "source": [ "# This is the same query used for the histogram displayed above. \n", "# It is here just to show the numeric values of each of the bins\n", "\n", "sql(\"\"\"\n", " select round(H1_PX/10000,0) * 10000 as bin, count(1) as count\n", " from sim_data \n", " group by round(H1_PX/10000,0) order by 1\n", " \"\"\").show(50)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Momentum is a **vector** quantity, it has x,y, and z components. Try calculating the **magnitude** of the momentum of the first kaon candidate and plotting a histogram of this, you'll need the `H1_PX`, `H1_PY` and `H1_PZ` variables." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+--------+--------+---------+---------+\n", "| H1_PX| H1_PY| H1_PZ| H1_PTOT|\n", "+--------+--------+---------+---------+\n", "| 3551.84| 1636.96| 23904.14| 24221.96|\n", "|-2525.98|-5284.05| 35822.0| 36297.62|\n", "| -700.67| 1299.73| 8127.76| 8260.79|\n", "| 3364.63| 1397.3|222815.29|222845.07|\n", "| -581.66|-1305.24| 22249.59| 22295.43|\n", "+--------+--------+---------+---------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "# Selects the vector components of the momentum of H1 and computes the magnitude of the vector\n", "# Only consider data where H1_PROBK = 1.0 (note,this could be relaxed to H1_PROBK >= )\n", "\n", "p_tot = sql(\"\"\"\n", " select H1_PX, H1_PY, H1_PZ, round(sqrt(H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ),2) H1_PTOT \n", " from sim_data \n", " where H1_PROBK = 1.0\"\"\")\n", "\n", "p_tot.show(5) # displays the first 5 rows of the result" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAAAMIHgDAMAAgjcAAAwgeAMAwAAeJwjAujLPxxN6NCEwT1a8AQBgACveAPAovNwHmCcr3gAAMIDg\nDQAAAwjeAAAwgOANAAADCN4AADCA4A0AAAN4nCAADOLlPnBgs+INAAADWPEGgCXk5T6wfKx4AwDA\nAII3AAAMIHgDAMAA9ngDAPaMwwBWvAEAYAAr3gDA3HlmOXw/K94AADCA4A0AAAMI3gAAMIA93gDA\nfs0TV1gvrHgDAMAAgjcAAAxgqwkAcECxdYW1YsUbAAAGELwBAGAAW00AAPaBt3SyWla8AQBgACve\nAAD7CV/8XN+seAMAwABWvAEA1ikr6PsXK94AADCA4A0AAAPYagIAwKp4dOK+EbwBABjuQNx/bqsJ\nAAAMIHgDAMAAgjcAAAywNMG7qs6qqjur6q6q2rbW4wEAgCdiKYJ3VR2U5N8meUWSE5P8TFWduLaj\nAgCA1VuK4J3ktCR3dfcXu/vbSa5Ocs4ajwkAAFZtWR4neFySr8yc70zy9/e8qaouSHLBdPqNqrpz\nwNj2dHSS/7wGP5d9Z+6Wk3lbXuZueZm75bVu565+a81+9N9b7Y3LErxXpbuvSHLFWo6hqrZ399a1\nHANPjrlbTuZteZm75WXulpe5W1vLstXkniTPmjnfNNUBAMBSWJbg/akkJ1TV8VX11CTnJblujccE\nAACrthRbTbr74ap6c5IPJzkoyR909+1rPKxHs6ZbXdgn5m45mbflZe6Wl7lbXuZuDVV3r/UYAABg\n3VuWrSYAALDUBG8AABhA8J4jr7VfG1X1B1V1X1V9dqbuqKq6oaq+MH0eOXPt4mmO7qyql8/Un1pV\nt03X3lZVNdUfUlV/ONV/sqo2z7Q5f/oZX6iq88f8xutDVT2rqj5WVZ+rqtur6henenO3n6uqQ6vq\n5qr6zDR3/3KqN3dLoKoOqqo/r6o/nc7N2xKoqh3T3/zWqto+1Zm7ZdPdjjkcWfnS591JfijJU5N8\nJsmJaz2uA+FI8uNJXpjkszN1/yrJtqm8LclvTeUTp7k5JMnx05wdNF27OcnpSSrJB5O8Yqq/MMnv\nTeXzkvzhVD4qyRenzyOn8pFr/fdYliPJsUleOJWfluQ/TfNj7vbzY/o7Hz6VD07yyenvb+6W4Ejy\ny0nek+RPp3PztgRHkh1Jjt6jztwt2WHFe3681n6NdPcnknx9j+pzklw1la9K8uqZ+qu7+6Hu/lKS\nu5KcVlXHJjmiu2/qlf/SvGuPNrv7en+SM6YVgpcnuaG7v97df5nkhiRnzf83XJ+6+97u/vRU/usk\nd2TlLbXmbj/XK74xnR48HR1zt9+rqk1Jzk7yjplq87a8zN2SEbznZ2+vtT9ujcZCckx33zuVv5rk\nmKn8aPN03FTes/572nT3w0n+S5JnPkZfPEHTP2m+ICsrp+ZuCUzbFW5Ncl9W/qds7pbD7yR5a5K/\nmakzb8uhk3ykqm6pqgumOnO3ZJbiOd6wL7q7q8pzM/dTVXV4kj9K8kvd/cC03TCJudufdfcjSbZU\n1TOSfKCqTt7jurnbz1TVK5Pc1923VNVP7O0e87Zf+7Huvqeq/k6SG6rq87MXzd1ysOI9P15rv3/5\n2vRPapk+75vqH22e7pnKe9Z/T5uq2pDk6Unuf4y+WKWqOjgrofvd3f3HU7W5WyLd/VdJPpaVf3o2\nd/u3lyR5VVXtyMp2yJdW1b+PeVsK3X3P9Hlfkg9kZYuruVsygvf8eK39/uW6JLu/eX1+kmtn6s+b\nvr19fJITktw8/VPdA1V1+rSn7XV7tNnd12uTfHTaG/fhJGdW1ZHTN8nPnOpYhenv/PtJ7ujufz1z\nydzt56pq47TSnao6LMlPJfl8zN1+rbsv7u5N3b05K/+P+mh3/+OYt/1eVf1gVT1tdzkrf7/Pxtwt\nn7X+dud6OpL8dFaezHB3kl9d6/EcKEeS9ya5N8l3srL37I1Z2Zd2Y5IvJPlIkqNm7v/VaY7uzPRt\n7ql+a1b+Q3Z3krfnu292PTTJ+7Ly5ZSbk/zQTJv/aaq/K8kb1vpvsUxHkh/Lyp7Fv0hy63T8tLnb\n/48kz0vy59PcfTbJ/zrVm7slOZL8RL77VBPztp8fWXli2mem4/ZMGcPcLd/hlfEAADCArSYAADCA\n4A0AAAMI3gAAMIDgDQAAAwjeAAAwgOANMEBVfWOP89dX1dun8o9X1aer6uGqeu3j9LO5qh6sqlur\n6nNV9XtV9fzp/Naq+npVfWkqf2Rqc1JVfbSq7qyqL1TVv6gVb5hp9+2qum0qX7qXn/uCqvr9mbF3\nVb1s5vqrp7pHHX9VnV9V792j7uiq2lVVh0zn51XVrz5GHx+ZniUMsHQEb4C19/8meX2S96zy/ru7\ne0tWnqd9YpLndPeWqe66JL8ynb9sesHNdUku7e7nJnl+khcnubC73znT7v9L8pPT+ba9/Mx/nuRt\nM+e3ZeUlLLv9TFaeMfxYPpDkp6rqB2bqXpvkT7r7oen8FUk+9Bh9/LskFz7OzwHYLwneAGusu3d0\n918k+ZtqjgoPAAAC9UlEQVQn2O7hJP9Pkh9+jNv+xyT/d3f/H1ObbyZ5c5K9heu9mt6Y97zung3W\n/2eS06rq4Ko6fBrDrTNtTq2qj1fVLVX14ao6trsfSPLxJP9gpp/zsvISrN1vM92S5NNVdXhVvXNa\nhf+LqnrNdP91WQn5AEtH8AYY47CZbR23Jvm1fe1wWjk+Iyurz4/mpCS3zFZ0991JDq+qI1b5o3a/\n6e57usnKm/JenuScrATi3eM6OMm/SfLa7j41yR8kuWS6/N5MK+VV9XeT/LdJPjpde0GSz/TKm93+\nRZL/0t2ndPfzdt/T3X+Z5JCqeuYqxw6w39iw1gMAOEA8OG3pSLKyTzorgfbJeM4U3jvJtd39wTmM\n77Ecm2TXXuqvTvKWJE9P8s+ysh0lSZ6b5OQkN6wsYuegJPdO165PctkU+s9N8kfd/ch07awku3+X\nl2VmK8sUuHe7L8nfTXL/Pv1WAIMJ3gDL5+7ZEP84Ppfkx2crquqHknxj2vqxGg8mOXTPyu6+uapO\nSfLN7v5PU8hOkkpye3f/6F7aPFhVH0ryD7MSrH955vKZSV6zZ5u9OHQaE8BSsdUEYH17d5If2/0E\nkunLlm9L8q+eQB935NH3kW/Ld1e6d7szycaq+tHpZx5cVSfNXH9vVgL3MUn+bLrn6Uk2dPfuVewb\nkly0u8HuJ5lM+8D/myQ7nsD4AfYLgjfAGquqF1XVziT/KMn/XlW3z6vv7n4wK3uw/5equjMr+8E/\nleTtT6CPzyd5+vQlyz2vfbC7P7ZH3bez8rSS36qqz2TlS5cvnrnlhqxsFfnDaT93kvxUVvaM7/Yb\nSY6sqs9OffzkVH9qkpumL5YCLJX67n/zAGDvqup/TvLX3f2OBfX/jiTv6O6bHue+301yXXffuIhx\nACySFW8AVuPyJA897l1PUnf/k8cL3ZPPCt3AsrLiDbAfmr60+O/2qH6ou//+WowHgH0neAMAwAC2\nmgAAwACCNwAADCB4AwDAAII3AAAMIHgDAMAA/z8t03OzjuxaJwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# calculate a variable for the magnitude of the momentum of the first kaon \n", "# plot a histogram of this variable\n", "\n", "h1ptot_data_plot = p_tot.select(\"H1_PTOT\").toPandas().plot.hist(bins=31, range=[0, 550000]) \n", "xlabel('H1_PTOT (MeV/c)')\n", "ylabel('Count');" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "### Hints" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Histogram plotting** - You can use the hist() function. The parameters bins(n) and range(x,y) allow youto plot n bins over the range x to y.\n", "\n", "**Vector Magnitude** The square magnitude of a magnitude of a vector is given by the sum of the square of its of its components in the x,y and z directions: $p^2 = p_x^2+p_y^2+p_z^2$, where $p$ is the magnitude of the momentum, and $p_x,p_y,p_z$ are the components of the momentum in the X,Y, and Z directions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Energy and mass\n", "\n", "Einstein's theory of special relativity relates Energy, mass and momentum. We have measured the momentum of the kaon candidates in the detector, and have just plotted one of the components of the momentum of the kaon, and the magnitude of the momentum. The invariant mass of the kaon is well known and you can look this up. We wish to determine the energy of the kaons. \n", "\n", "Here is a brief guide to the energy-momentum relation of [special relativity](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/SpecialRelativity.ipynb). Further information can be found on wikipedia pages on [Invariant Mass](https://en.wikipedia.org/wiki/Invariant_mass) and the [Energy-momentum relation](https://en.wikipedia.org/wiki/Energy%E2%80%93momentum_relation).\n", "\n", "Now, calculate the energy of the first kaon candidate using:\n", "\n", "
$E^2 = p^2 + m^2$
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+---------+\n", "|H1_Energy|\n", "+---------+\n", "| 24226.99|\n", "| 36300.98|\n", "| 8275.53|\n", "|222845.62|\n", "| 22300.9|\n", "+---------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "# Computes the Energy of the kaon candidates using the formula of special relativity\n", "# that is including the magnitude of the momentum and invariant mass\n", "\n", "kcharged_mass = 493.677\n", "\n", "Energy_H1 = spark.sql(\"\"\"\n", " select round(sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ),2) H1_Energy\n", " from sim_data \n", " where H1_PROBK = 1.0\n", " \"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "Energy_H1.show(5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHkCAYAAAAJnSgJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+0p1V9H/r3RwaYiYD8cDqLy2CHWNo4/FQGpMW6ghil\ngYpWOyW3BeIPyF2YBGmvXUPNzU1qyaKtq01IixYNAmkiGTVeEWK8gCYmrvJjUH7IIBHicJlZCFMS\nS/AHzuC+f5xn9MvhDByZ73ef+R5er7We9d3Pfp5nf/c5e63hzT77eZ5qrQUAAJisFy10BwAA4IVA\n8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6GDJQndgUl760pe2VatW\nLXQ3AABYxG6//fb/2VpbPp9zF23wXrVqVTZs2LDQ3QAAYBGrqgfne66lJgAA0IHgDQAAHQjeAADQ\nwaJd4w0A8EKxbdu2bN68Od/73vcWuiuL1tKlS7Ny5crsueeez7sNwRsAYMpt3rw5++67b1atWpWq\nWujuLDqttTz22GPZvHlzDjvssOfdjqUmAABT7nvf+14OOuggoXtCqioHHXTQLv9FQfAGAFgEhO7J\nGsfvV/AGAIAOrPEGAFhkVq27fqztbbrktLG290JlxhsAgF22zz77PG3/yiuvzC/+4i8mSb74xS/m\nVa96VZYsWZJPfOITz9rOpk2bsmzZshx77LE/3K6++uqJ9bsnM94AAEzUy172slx55ZX5wAc+MK/z\nX/7yl+eOO+4Yax+2b9+eJUsWNvqa8QYAYKJWrVqVo48+Oi960a5Fz3322Sfve9/7cswxx+TEE0/M\nI488kiTZunVr3vrWt+b444/P8ccfny996UtJkl/7tV/LWWedlZNOOilnnXVWvvOd72Tt2rVZvXp1\n3vKWt+TVr351NmzYkCuuuCLvec97fvg9H/7wh3PhhRfuUl/nIngDALDLvvvd7z5teciv/uqvPu+2\nHnjggae19Wd/9mdJkm9/+9s58cQTc+edd+a1r31tPvzhDydJLrjgglx44YW57bbb8slPfjLvete7\nftjWxo0bc+ONN+ZjH/tYLrvsshxwwAHZuHFj3v/+9+f2229Pkqxduzaf+cxnsm3btiTJRz/60bzj\nHe943v3fGUtNAADYZcuWLXva8pArr7wyGzZseF5t7WypyV577ZXTTz89SXLcccflhhtuSJLceOON\n2bhx4w/Pe/zxx/PEE08kSd70pjdl2bJlSZI///M/zwUXXJAkOfLII3P00UcnmZlJf93rXpfrrrsu\nr3jFK7Jt27YcddRRz6vvz0bwBgBgKuy5554/fJ72Hnvske3btydJfvCDH+Tmm2/O0qVLn3HNi1/8\n4nm1/a53vSu/8Ru/kZ/6qZ/K29/+9vF1eoTgDQCwyLzQHv/3hje8Ib/927+d9773vUmSO+64I8ce\ne+wzzjvppJOyfv36nHzyydm4cWPuvvvuHx579atfnYceeihf/vKXc9ddd02kn9Z4AwAwUbfddltW\nrlyZj3/84/mFX/iFHHHEEc96/uw13pdeeumznn/ppZdmw4YNOfroo7N69ep86EMfmvO8888/P1u3\nbs3q1avzK7/yKzniiCPykpe85IfH165dm5NOOikHHHDAj/9DzkO11ibS8EJbs2ZNe77rigAApsm9\n996bV7ziFQvdjd3eU089lW3btmXp0qV54IEH8vrXvz733Xdf9tprryTJ6aefngsvvDCnnHLKnNfP\n9Xuuqttba2vm8/2WmgAA8ILwne98JyeffHK2bduW1louu+yy7LXXXvnWt76VE044Icccc8xOQ/c4\nCN5j5hWtAADP7e67785ZZ531tLq99947t9xyy8S+c999953zSSv7779//uIv/mJi37uD4A0AsAi0\n1n74xI9pcNRRR4397ZSTNI7l2W6uBACYckuXLs1jjz02lnDIM7XW8thjj835uMIfhxlvAIApt3Ll\nymzevDlbt25d6K4sWkuXLs3KlSt3qQ3BGwBgyu2555457LDDFrobPAdLTQAAoAPBGwAAOhC8AQCg\nA8EbAAA6ELwBAKADwRsAADoQvAEAoAPBGwAAOhC8AQCgA8EbAAA6ELwBAKADwRsAADoQvAEAoAPB\nGwAAOhC8AQCgA8EbAAA6ELwBAKADwRsAADoQvAEAoAPBGwAAOhC8AQCgg4kG76rav6o+UVVfq6p7\nq+rvV9WBVXVDVX19+Dxg5PyLqur+qrqvqt44Un9cVd09HLu0qmqS/QYAgHGb9Iz3byX549baTyU5\nJsm9SdYluam1dniSm4b9VNXqJGcmOSLJqUkuq6o9hnY+mOTcJIcP26kT7jcAAIzVxIJ3Vb0kyWuT\n/E6StNa+31r7VpIzklw1nHZVkjcP5TOSXNNae7K19o0k9yc5oaoOTrJfa+3m1lpLcvXINQAAMBUm\n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\nu/+W5OgkXxnG7qtJfnWoN3ZTsiX56fzoqSbGbTffMvPEtDuH7Z4MGcPYTd/mlfEAANCBpSYAANCB\n4A0AAB2/tPWjAAAEQ0lEQVQI3gAA0IHgDQAAHQjeAADQgeANMGFV9cSs/Z+vqv8ylF9bVV+uqu1V\n9bbnaGdVVX23qu4Y2c6eZN/nq2Z8vqr2G/bb8HKWHceXVNXWqrruWdr4iap6bEcbI/X/T1X9s6o6\nvar+7eR+CoDJErwBFtb/l+Tnk/z+PM9/oLV27Mh29a52YHhL3a762SR3ttYeH/a/neTI4QU7ycxL\ndp71bXette9k5sUcbxnp20sy88z3zyS5Psk/rqqfGEN/AboTvAEWUGttU2vtriQ/2JV2quqJqrq4\nqu6sqpurasVQv7yqPllVtw3bSUP9r1XV71bVl5L87jDbvL6qNlbVp6rqlqpaU1XvqKrfHPmec6vq\nP8/RhX+eH70Bb4c/SnLaUP65zLzsakc7L66qK6rq1qr6SlWdMRz6WGbeqrjDW5J8rrX2nTbz4ok/\nSXL68/09ASwkwRtg8paNLg9JsivLJV4+a6nJPxzqX5zk5tbaMUm+mOTcof63kvzn1trxSd6a5CMj\nba1O8vrW2s8lOT/JX7fWVif5v5IcN5yzPjOzzHsO+29PcsUc/Topye2z6q7JzGurl2bmbZe3jBx7\nX2ZeSX1CkpOT/MfhVdifS/KqqjpoOO/MjAT2JBuS/MMATKFx/HkRgGf33dbasTt2qurnM/Pa5ufj\ngdG2Rnw/yY7107dnZmlHkrw+yeqq2nHeflW1z1C+trX23aH8msyE9LTWvlpVdw3lJ6rq80lOr6p7\nk+zZWrt7ju8/sLX2N6MVrbW7qmpVZma7/2jW+W9I8qaq+j+H/aVJXtZau7eqrk3ytqr6ZJJXZiaM\n7/Bokv9tju8H2O0J3gCLw7ZhKUaSPJUf/fv+oiQntta+N3ryEMS/Pc+2P5Lk3yT5WpKP7uSc7VX1\notba7CUz1yb5QJKfTnLQSH0leWtr7b452vpYZmbdK8mnW2vbRo4tTfLdOa4B2O1ZagKwuP2/SX5p\nx05VzTVbniRfSrJ2OGd1kqN2HGit3ZLk0CT/e56+7GPUfUl+co76K5L8+hyz5J9L8ks1/B9AVb1y\n5NifJDk8ybvn+L6/m+SrO+kDwG5N8AZYQFV1fFVtTvJPk/y3qrrnOS6Zvcb7l5/j/F9Osqaq7qqq\njUn+j52cd1mS5cM5/y7JPUn+18jx9Um+1Fr7651cf31mZrWfprW2ubV26Rznvz/JnknuGn7m949c\n84Mkn8jMDPmfzrru5OG7AKZO/egvkwC8UFXVHplZv/29qnp5khuT/L3W2veH49dl5ibNm3Zy/cFJ\nrm6t/cxcx8fUxxVJfr+1dsqkvgNgkqzxBiBJfiLJF4anl1SS81tr36+q/ZPcmplndM8ZupOktfZw\nVX24qvYbeZb3uL0syb+aUNsAE2fGG2A3U1VHJfndWdVPttZevRD9AWA8BG8AAOjAzZUAANCB4A0A\nAB0I3gAA0IHgDQAAHQjeAADQwf8PAbLMPwB2eO4AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plots a histogram of the energy of the first kaon candidate\n", "\n", "Energy_H1_data_plot = Energy_H1.toPandas().plot.hist(bins=31, range=[0, 550000]) \n", "xlabel('H1_Energy (MeV)')\n", "ylabel('Count');" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "### Hints" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Energy calculation** - Use the magnitude of momentum variable you calculated above and the known invariant mass of the kaon to work out the energy of the first hadron. Calculate the energy squared, and then the energy and plot this.\n", "\n", "**Kaon mass** - you can find the kaon mass on wikipedia or in physics textbooks. There is also a reference used by particle physicists: all our knowledge of the properties of the particles are collected together by the particle data group [here](http://pdg.lbl.gov/2014/reviews/rpp2014-rev-charged-kaon-mass.pdf)." ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "Calculate the momenta and energies of the second and third kaon candidates also.\n" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHkCAYAAAAJnSgJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X20ZlV9J/jvz+KlSgEFLGvRFN1FHKZjyWsosbqx7SBG\nMdCgY1JNpoO0ImQWJlHSo6toM5mkM2SR7l52gj3goCIQE7GicUSIOoCGJK4GvMibFBIhFotiIVST\n2ARfsMA9f9xT+nCpgqv1PPvWc/l81jrr2Wefc/az791rFV/23eecaq0FAACYrOctdAcAAOC5QPAG\nAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhgt4XuwKS8+MUvbqtWrVro\nbgAAsIjdfPPN/721tnw+5y7a4L1q1arMzMwsdDcAAFjEquq++Z5rqQkAAHQgeAMAQAeCNwAAdLBo\n13gDADxXbN26NZs3b873vve9he7KorV06dKsXLkyu++++0/chuANADDlNm/enL333jurVq1KVS10\ndxad1loeeeSRbN68OQcffPBP3I6lJgAAU+573/te9t9/f6F7Qqoq+++//07/RUHwBgBYBITuyRrH\n71fwBgCADqzxBgBYZFatv3qs7W06/8SxtvdcZcYbAICdttdeez1l/9JLL82v/uqvJkne9773ZfXq\n1Tn88MNz/PHH5777dvyyx02bNmXZsmU58sgjf7hdfvnlE+17L2a8AQCYqKOOOiozMzN5/vOfn4su\nuijvec978vGPf3yH57/0pS/NrbfeOtY+PPHEE9ltt4WNvma8AQCYqOOOOy7Pf/7zkyRr167N5s2b\nf6J29tprr7z3ve/NEUcckbVr1+ahhx5KkmzZsiVvfvOb84pXvCKveMUr8qUvfSlJ8tu//ds57bTT\ncuyxx+a0007Ld77znaxbty6rV6/Om970przyla/MzMxMLrnkkrzrXe/64fd88IMfzDnnnLOTP/XT\nCd4AAOy07373u09ZHvJbv/Vb2z3vwx/+cN7whjc8Y1v33nvvU9r6q7/6qyTJt7/97axduza33XZb\nXv3qV+eDH/xgkuSd73xnzjnnnHz5y1/OJz/5ybz97W//YVsbN27Mtddem4997GO58MILs++++2bj\nxo353d/93dx8881JknXr1uUzn/lMtm7dmiT5yEc+kre97W07/TuZy1ITAAB22rJly56yPOTSSy/N\nzMzMU8756Ec/mpmZmVx//fXP2NaOlprsscceOemkk5IkRx99dK655pokybXXXpuNGzf+8LxHH300\njz32WJLk5JNPzrJly5Ikf/3Xf513vvOdSZJDDz00hx9+eJLZmfTXvOY1ueqqq/Kyl70sW7duzWGH\nHfZj/fzzIXgDADBx1157bc4777xcf/312XPPPX+iNnbfffcfPk97yZIleeKJJ5IkP/jBD3LDDTdk\n6dKlT7vmBS94wbzafvvb357f+73fy0//9E/nrW9960/Uv2cjeAMALDK72uP/brnllvzKr/xKPve5\nz+UlL3nJ2Nt/3etel/e///1597vfnSS59dZbc+SRRz7tvGOPPTYbNmzIcccdl40bN+aOO+744bFX\nvvKVuf/++/OVr3wlt99++9j7mFjjDQDAhL373e/OY489ll/8xV/MkUcemZNPPvkZz5+7xvuCCy54\nxvMvuOCCzMzM5PDDD8/q1avzgQ98YLvnnX322dmyZUtWr16d3/zN38zLX/7yvPCFL/zh8XXr1uXY\nY4/Nvvvu++P/kPNQrbWJNLzQ1qxZ0+auKwIAWIzuuuuuvOxlL1vobuzynnzyyWzdujVLly7Nvffe\nm9e+9rW5++67s8ceeyRJTjrppJxzzjk5/vjjt3v99n7PVXVza23NfL7fUhMAAJ4TvvOd7+S4447L\n1q1b01rLhRdemD322CPf+ta3cswxx+SII47YYegeB8F7zLyiFQDg2d1xxx057bTTnlK355575sYb\nb5zYd+69995Pe9JKkrzoRS/K3/zN30zse7cRvAEAFoHW2g+f+DENDjvssLG/nXKSxrE8282VAABT\nbunSpXnkkUfGEg55utZaHnnkke0+rvDHYcYbAGDKrVy5Mps3b86WLVsWuiuL1tKlS7Ny5cqdakPw\nBgCYcrvvvnsOPvjghe4Gz8JSEwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6EDw\nBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYA\ngA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAO\nBG8AAOhA8AYAgA4mGryr6kVV9Ymq+lpV3VVV/6yq9quqa6rq68PnviPnn1tV91TV3VX1+pH6o6vq\n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\nn33mnk8AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHkCAYAAAAJnSgJAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X3QZVV9J/rvT2joDi/SYE8XQzO3ibfvaAOCoUFmcKwg\nRpnAiI4ZhjgDPb5AGTAizmg14725yU1IMS+VyaCChQaBTJTp0Ti2EHUAzYvWADbKizQSIDZFUwg9\nJA7BF6Rx3T+e3XhouuGRPmc9fR4+n6pdZ+21915nnbOqmi/rWWfvaq0FAACYrBfNdQcAAOCFQPAG\nAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhg97nuwKS85CUvacuXL5/r\nbgAAMI/dfPPN/6u1tmQ2587b4L18+fKsX79+rrsBAMA8VlX3zfZcS00AAKADwRsAADoQvAEAoIN5\nu8YbAOCF4oknnsimTZvyox/9aK67Mm8tXLgwy5Yty4IFC553G4I3AMCU27RpU/bZZ58sX748VTXX\n3Zl3Wmt55JFHsmnTphxyyCHPux1LTQAAptyPfvSjHHDAAUL3hFRVDjjggJ3+i4LgDQAwDwjdkzWO\n71fwBgCADqzxBgCYZ5avuWas7W288KSxtvdCZcYbAICdtvfeez9t//LLL8+73/3uJMlHP/rRHH74\n4TnyyCPz6le/Ohs2bNhhOxs3bsyiRYty5JFHPrVdeeWVE+17L2a8AQCYqLe+9a1517velSRZt25d\n3ve+9+WLX/ziDs9/6UtfmltuuWWsfdiyZUt2331uo68ZbwAAJmrfffd9qvz973//ef9Qce+9984H\nP/jBHHHEETn22GPz0EMPJUk2b96ct7zlLTn66KNz9NFH52tf+1qS5Dd/8zdz+umn57jjjsvpp5+e\nH/zgBzn11FOzcuXKvPnNb86rXvWqrF+/Ppdddlne+973PvU+H/vYx3LeeeftxCfePsEbAICd9sMf\n/vBpy0N+4zd+42nHP/KRj+SlL31pPvCBD+Siiy561rbuvffep7X1F3/xF0lmQvuxxx6bW2+9Na95\nzWvysY99LEly7rnn5rzzzsvXv/71fOYzn8k73/nOp9rasGFDrrvuunzqU5/KxRdfnMWLF2fDhg35\n7d/+7dx8881JklNPPTWf//zn88QTTyRJPvGJT+Ttb3/72L6brSw1AQBgpy1atOhpy0Muv/zyrF+/\n/qn9c845J+ecc04++clP5nd+53dyxRVX7LCtHS012WOPPXLyyScnSY466qhce+21SZLrrrvuaevG\nH3300Tz22GNJkje+8Y1ZtGhRkuSrX/1qzj333CTJYYcdlle84hVJZmbSX/va1+bqq6/Oy1/+8jzx\nxBM5/PDDn9f38GwEbwAAujnttNPya7/2a8/r2gULFjy1TGW33XbLli1bkiQ/+clPcsMNN2ThwoXP\nuGavvfaaVdvvfOc787u/+7t52ctelre97W3Pq3/PRfAGAJhndrXb/919991ZsWJFkuSaa655qjwu\nr3/96/OhD30o73//+5Mkt9xyS4488shnnHfcccdl7dq1Of7447Nhw4bcfvvtTx171atelfvvvz/f\n+MY3ctttt421f1sJ3gAATNSHP/zhXHfddVmwYEEWL178rMtMkp+u8d7q7W9/e97znvfs8PyLLroo\n55xzTl7xildky5Ytec1rXpOPfvSjzzjv7LPPzurVq7Ny5cq87GUvy6GHHpoXv/jFTx0/9dRTc8st\nt2Tx4sXP41M+t2qtTaThubZq1ao2uq4IAGC+uvPOO/Pyl798rruxy3vyySfzxBNPZOHChbn33nvz\nute9LnfddVf22GOPJMnJJ5+c8847LyeccMJ2r9/e91xVN7fWVs3m/c14AwDwgvCDH/wgxx9/fJ54\n4om01nLxxRdnjz32yPe+970cc8wxOeKII3YYusdB8B4zj2gFAHhut99+e04//fSn1e2555658cYb\nJ/ae++yzT7a3ImK//fbLX/7lX07sfbcSvAEA5oHW2vN+MM1cOPzww8f+dMpJGsfybA/QAQCYcgsX\nLswjjzwylnDIM7XW8sgjj2z3doU/CzPeAABTbtmyZdm0aVM2b948112ZtxYuXJhly5btVBuCNwDA\nlFuwYEEOOeSQue4Gz8FSEwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCA\nDgRvAADoQPAGAIAOBG8AAOhA8AYAgA4EbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4E\nbwAA6EDwBgCADgRvAADoQPAGAIAOBG8AAOhA8AYAgA4mGryrar+q+nRVfbuq7qyqf1BV+1fVtVV1\n9/C6eOT886vqnqq6q6reMFJ/VFXdPhy7qKpqkv0GAIBxm/SM939O8sXW2suSHJHkziRrklzfWluR\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# calculate variables for the energy of the other two kaons\n", "\n", "kcharged_mass = 493.677\n", "\n", "Energy_H2 = spark.sql(\"\"\"\n", " select sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) H2_Energy\n", " from sim_data \n", " where H2_PROBK = 1.0\n", " \"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "Energy_H3 = spark.sql(\"\"\"\n", " select sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) H3_Energy\n", " from sim_data \n", " where H3_PROBK = 1.0\n", " \"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "Energy_H2_data_plot = Energy_H2.toPandas().plot.hist(bins=31, range=[0, 550000]) \n", "xlabel('H2_Energy (MeV)')\n", "ylabel('Count')\n", "Energy_H3_data_plot = Energy_H3.toPandas().plot.hist(bins=31, range=[0, 550000]) \n", "xlabel('H3_Energy (MeV)')\n", "ylabel('Count');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Adding features of the $B$ meson\n", "\n", "In this analysis we are looking for B+ or B- mesons (see [B meson](https://en.wikipedia.org/wiki/B_meson)) that have decayed into the three charged [kaons](https://en.wikipedia.org/wiki/Kaon).\n", "\n", "Energy is a conserved quantities. This means that you can use the energy of the three 'daughter' kaons, which you have calculated above, to calculate the energy that the B meson that decayed into them must have.\n", "\n", "Momentum is also a conserved quantity. Hence you can also use the momenta of the 'daughter' kaons to calculate the momentum of the B meson. But be careful - momentum is a *vector* quantity. \n", "\n", "Using the Energy of the B meson and the magnitude of the momentum of the B meson you can use the energy-momentum relationship again. This time you are applying it to the B meson. This will allow you to calculate the invariant mass of the B meson.\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "run_control": { "frozen": false, "read_only": false }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+\n", "| Tot_Energy|\n", "+------------------+\n", "| 657116.5757740112|\n", "| 731372.0511105937|\n", "|106495.84886114487|\n", "| 425265.3012500729|\n", "| 338761.408158081|\n", "|175425.84880753706|\n", "| 196160.8705834044|\n", "| 794379.0808414945|\n", "| 661607.1394124703|\n", "| 725138.8031006289|\n", "+------------------+\n", "only showing top 10 rows\n", "\n" ] } ], "source": [ "# calculate the energy of the B meson from the sum of the energies of the kaons\n", "\n", "sum_kaons_energy = sql(\"\"\"\n", " select \n", " sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ) +\n", " sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) +\n", " sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) as Tot_Energy \n", " from sim_data\n", " where H1_ProbK = 1.0 and H2_ProbK = 1.0 and H3_ProbK = 1.0\"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "sum_kaons_energy.show(10)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+------------------+------------------+\n", "| PX_Tot| PY_Tot| PZ_Tot|\n", "+------------------+------------------+------------------+\n", "| 81159.39000000001|34164.380000000005| 651168.39|\n", "|-54357.21000000001| -118454.64| 719646.4400000001|\n", "| -15596.0|15711.460000000001| 104035.62|\n", "| 7482.21| 2216.05|425161.00000000006|\n", "| -2248.65| -11608.84| 338513.81|\n", "|305.62000000000006| -38778.21| 171004.43|\n", "| 20106.33| 6091.150000000001|194961.15000000002|\n", "| -43942.38| -9465.89| 793088.72|\n", "| -3945.83| 33592.15| 660722.88|\n", "| 28585.38|169779.41999999998| 704385.04|\n", "+------------------+------------------+------------------+\n", "only showing top 10 rows\n", "\n" ] } ], "source": [ "# Calculate the momentum components of the B meson \n", "# This is a vector sum (i.e. we sum each vector component of the kaons)\n", "\n", "sum_kaons_momentum = sql(\"\"\"\n", " select \n", " H1_PX + H2_PX + H3_PX as PX_Tot,\n", " H1_PY + H2_PY + H3_PY as PY_Tot,\n", " H1_PZ + H2_PZ + H3_PZ as PZ_Tot\n", " from sim_data\n", " where H1_ProbK = 1.0 and H2_ProbK = 1.0 and H3_ProbK = 1.0\"\"\")\n", "\n", "sum_kaons_momentum.show(10)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+\n", "| P_Tot|\n", "+------------------+\n", "| 657095.3687107745|\n", "| 731352.9972736745|\n", "|106364.91630286745|\n", "| 425232.6072458304|\n", "|338720.26977091905|\n", "|175346.39447109654|\n", "|196089.81774613875|\n", "| 794361.5383594519|\n", "| 661588.0336519893|\n", "| 725120.9967868|\n", "+------------------+\n", "only showing top 10 rows\n", "\n" ] } ], "source": [ "# Calculate the momentum components of the B meson \n", "# This computes the vector magnitude of the vector computed above\n", "# we use the spark sql declarative interface as opposed to writing an SQL statement for this\n", "# the two approaches are equivalent in Spark\n", "\n", "sum_kaons_momentum_magnitude = sum_kaons_momentum.selectExpr(\"sqrt(PX_Tot*PX_Tot + PY_Tot*PY_Tot + PZ_Tot*PZ_Tot) as P_Tot\")\n", "\n", "sum_kaons_momentum_magnitude.show(10)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "run_control": { "frozen": false, "read_only": false }, "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+------------------+------------------+------------------+\n", "| Tot_Energy| PX_Tot| PY_Tot| PZ_Tot|\n", "+------------------+------------------+------------------+------------------+\n", "| 657116.5757740112| 81159.39000000001|34164.380000000005| 651168.39|\n", "| 731372.0511105937|-54357.21000000001| -118454.64| 719646.4400000001|\n", "|106495.84886114487| -15596.0|15711.460000000001| 104035.62|\n", "| 425265.3012500729| 7482.21| 2216.05|425161.00000000006|\n", "| 338761.408158081| -2248.65| -11608.84| 338513.81|\n", "+------------------+------------------+------------------+------------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "# calculate the B meson invariant mass\n", "# plot the B meson invariant mass in a histogram\n", "\n", "b_meson_4momentum = sum_kaons_energy = sql(\"\"\"\n", " select \n", " sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ) +\n", " sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) +\n", " sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) as Tot_Energy,\n", " H1_PX + H2_PX + H3_PX as PX_Tot,\n", " H1_PY + H2_PY + H3_PY as PY_Tot,\n", " H1_PZ + H2_PZ + H3_PZ as PZ_Tot\n", " from sim_data\n", " where H1_ProbK = 1.0 and H2_ProbK = 1.0 and H3_ProbK = 1.0\"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "b_meson_4momentum.show(5)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+\n", "| invariant_mass|\n", "+------------------+\n", "| 5279.259021223659|\n", "|5279.2541641354055|\n", "| 5279.242799854169|\n", "| 5273.156761236732|\n", "| 5279.252178269909|\n", "+------------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "b_meson_invariant_mass = b_meson_4momentum.selectExpr(\"\"\"\n", " sqrt(Tot_Energy* Tot_Energy - (PX_Tot*PX_Tot + PY_Tot*PY_Tot + PZ_Tot*PZ_Tot) ) as invariant_mass\"\"\")\n", " \n", "b_meson_invariant_mass.show(5)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nnHjiicu9/syZM5kxY8YqF8gdsiJJkiQA1l57bQCuvPJKdtttN/bff3+22morDjroIDKTX/7ylxxw\nwAEvLn/llVeyzz77APDxj3+ciRMnss022/CFL3zhxWXGjRvHMcccw/bbb88FF1zAoYceyrRp0wA4\n8cQT2XHHHdl222058sgjyUwAdtttN4455hh22mkn3vCGN3D11Vfz5z//meOPP54pU6YwYcIEpkyZ\n0u0xnHDCCRxyyCG84x3vYLPNNuMnP/kJn/3sZxk/fjyTJk3i+eef73Xfp59+OltvvTVvfvObmTx5\nMgBXXXUVEyZMYMKECWy33XY89dRTg9nsBnJJkiS93E033cRpp53Grbfeyt13383vf/979txzT669\n9lr+9Kc/ATBlypQXQ+tJJ53EjBkzuPnmm7nqqqu4+eabX9zWBhtswI033vjisl0+8YlPcP3113PL\nLbfw7LPPctFFF704b/HixVx33XWcdtppfPGLX2SNNdbgxBNP5MADD2TmzJkceOCBPdb9rrvu4vLL\nL2f69OkcfPDB7L777syaNYvRo0dz8cUX97rvk08+mZtuuombb76Zb33rWwCceuqpfPOb32TmzJlc\nffXVjB49ehBa+CUGckmSJL3MTjvtxNixY1lttdWYMGEC9957LyNHjmTSpElceOGFLF68mIsvvph9\n990XgKlTp7L99tuz3XbbMXv2bG699dYXt9VTeL7iiit461vfyvjx47n88suZPXv2i/M+8IEPALDD\nDjtw77339qvue+21F6uvvjrjx49nyZIlTJo0CYDx48e/uK2e9v3mN7+Zgw46iHPPPZeRI5vR3bvu\nuiuf+cxnOP3003niiSdeLB8sBnJJkiS9zJprrvni9IgRI1i8eDEAkydPZurUqVx++eVMnDiRddZZ\nh3vuuYdTTz2Vyy67jJtvvpm99957qe/lXmuttV62/UWLFnHUUUcxbdo0Zs2axRFHHLHUOl37b913\nf+u+2mqrsfrqq7/4tYSrrbYaixcv7nXfF198MUcffTQ33ngjO+64I4sXL+bYY4/lO9/5Ds8++yy7\n7rort99+e7/qsywGckmSJPXZu971Lm688UbOOuusF4egLFy4kLXWWov11luPefPmcckllyxzO10B\neMMNN+Tpp59+cVx5b9ZZZ51BGb/d075feOEF7r//fnbffXdOOeUUnnzySZ5++mnuuusuxo8fzzHH\n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\nkAUvAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "b_meson_invariant_mass.toPandas().plot.hist(bins=101, range=[4000, 6000],\n", "title=\"Histogram - distribution of B meson invariant mass, simulation data\") \n", "xlabel('b_meson_invariant_mass (MeV)')\n", "ylabel('Count');\n", "\n", "# Note the mass of the charged B meson is expected to be 5279.29±0.15 and this is consistenet with the \n", "# the peak in found in the data plotted here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You should have a graph that sharply peaks at the mass of the B+ meson. The mass of the B+ and B- meson are the same. Check that the peak of your graph is at the [known mass](http://pdg.lbl.gov/2014/listings/rpp2014-list-B-plus-minus.pdf) of the B meson. **Congratulations!**\n", "\n", "Recall that you have made this plot for simulated data. How might you expect the plots for real data to look different ? In the next section you will start to work with the real LHC data." ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "### Hint" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**B Meson Energy** - From energy conservation, the energy of the B meson will be the sum of the energies of the three kaons: $E_B=E_{K1}+E_{K2}+E_{K3}$, where $E_B$ is the energy of the B meson, $E_{K1}, E_{K2}, E_{K3}$ are the energies of each of the kaons. \n", "\n", "**B meson momentum** - From momentum conservation, the X component of the momentum of the B meson will be the sum of the X momentum components of the three Kaons : $px_B=px_{K1}+px_{K2}+px_{K3}$, where $px$ is the X direction component of the momentum of the B meson, $px_{K1},px_{K2},px_{K3}$ are the X direction components of the momenta of the three kaons. You can then do the same with the Y and Z components. Having obtained the X,Y, and z components of the B momentum you can find the magnitude of the momentum of the B meson.\n", "\n", "** B meson invariant mass*** - Rearrange the equation $E^2=p^2+m^2$ to find $m^2$. Using the values of the magnitude of the momentum of the B meson and the B meson Energy, find the mass of the B meson.\n", "\n", "**Histogram plotting** - Take care that the range of your mass plot is set suitably that you can see the mass peak. Once you have found the peak you can set the range appropriately. You do not have to start your graph at a mass of 0.\n", "\n", "**Units** - The data you are provided has energies in 'MeV' (106 electron volts). The mass of the B meson is often quoted in 'GeV/c2' (109 electron volts)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Working with real data and applying cuts\n", "## Aims:\n", "* Filter out data that is not from the B+ → K+K+K channel, or the antiparticle equivalent B- → K+K-K\n", "\n", "* Plot a histogram of B-meson mass for the real data and observe how different cuts affect the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the section above you have analysed the simulation data to determine the invariant mass of the B meson. Now, you can start applying the methods you have used to the real LHCb data. This data was collected by the LHCb detector at CERN during 2011, the first major year of LHC operations.\n", "\n", "The data you are given has been filtered to select only events that are likely to have come from B+ or B- mesons decaying into three final state charged particles. You are interested in the case where these three final state paticles are charged kaons K+ or K-.\n", "\n", "An introduction has been provided on the [detector and data sample](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/DetectorSoftwareDataSample.ipynb). As background information we also provide further information on the [selection](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/DataSelection.ipynb) that has been applied to select this data sample.\n", "\n", "## Preselection\n", "You want to apply a preselection to the three final state tracks that\n", "* Ensures that they are not muons (i.e. `!H1_isMuon` where `!` means `not`, and similarly for `H2` and `H3`)\n", "* Requires that they each have a low probability of being pions (e.g. `H1_ProbPi < 0.5`)\n", "* Requires that they each have a high probability of being a kaon (e.g. `H1_ProbK > 0.5`)\n", "\n", "You need to find a balance between making cuts that are too loose and include too many background events and too tight and reject many of your signal events.\n", "\n", "In order to now find the most suitable further selection cuts, make yourself familiar with [how cuts can affect the significance of the final result](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/CutsInformation.ipynb). Feel free to come back to this stage later and adjust your cuts to see the impact. \n", "\n", "The pre selection you create will be applied for you if give it the name 'preselection'.\n", "\n", "We have provided an example preselection in the hints, so feel free to use that to get started if you wish. start with a loose preselection and then refine it after you have studied the plots.\n", "\n" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "# Create the DataFrames with ROOT data using the spark-root data format\n", "# Only metadata is read at this stage (reading into Spark DatFrames is lazily executed)\n", "\n", "B2HHH_MagnetDown_df = spark.read.format(\"org.dianahep.sparkroot\").load(data_directory + \"B2HHH_MagnetDown.root\")\n", "B2HHH_MagnetUp_df = spark.read.format(\"org.dianahep.sparkroot\").load(data_directory + \"B2HHH_MagnetUp.root\")\n" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Put all the data together\n", "B2HHH_AllData_df = B2HHH_MagnetDown_df.union(B2HHH_MagnetUp_df)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# This defines the cut criteria\n", "# You can experiment with different criteria\n", "\n", "preselection = \"\"\"H1_ProbPi < 0.5 and H2_ProbPi < 0.5 and H3_ProbPi < 0.5 \n", " and H1_ProbK > 0.5 and H2_ProbK > 0.5 and H3_ProbK > 0.5 \n", " and H1_isMuon = 0 and H2_isMuon = 0 and H3_isMuon = 0\"\"\"\n", "\n", "# Apply cuts to the data as a filter \n", "B2HHH_AllData_WithCuts_df = B2HHH_AllData_df.filter(preselection)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "23895" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# This *may take a few minutes* as data will be read at this stage\n", "\n", "B2HHH_AllData_WithCuts_df.cache() # flags the DataFrame for caching, this is useful for performance\n", "B2HHH_AllData_WithCuts_df.count() # triggers an action, data will be read at this stage" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true, "scrolled": true }, "outputs": [], "source": [ "# This registers the dataframe with cuts (filters) as a view for later use with SQL\n", "B2HHH_AllData_WithCuts_df.createOrReplaceTempView(\"B2HHH_AllData_WithCuts\")" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
B_FlightDistanceB_VertexChi2H1_PXH1_PYH1_PZH1_ProbKH1_ProbPiH1_ChargeH1_IPChi2H1_isMuon...H2_IPChi2H2_isMuonH3_PXH3_PYH3_PZH3_ProbKH3_ProbPiH3_ChargeH3_IPChi2H3_isMuon
06.8880378.4269471207.753798-84.29095810399.4737020.9022190.041574-1998.4244100...110.51906801973.085892-289.15003226771.3416080.9158430.0572611386.4937130
18.9571033.474719-811.617861-518.30095622338.8830140.9428850.0934011162.6770060...1994.1197340-4801.3979181993.34003176466.2298080.8064710.385119-1158.8230180
29.1007334.113123-2007.925735-2555.08038226601.4659580.9176610.077237-11355.6116150...8500.5182620-1260.859080-2824.66300222365.1785100.9476760.0972631352.2354610
311.0773742.3603571408.170513-1372.86455866357.0933080.7856180.119467-12.7990290...564.01981302171.855775-1964.41983592096.7425550.5602370.070540144.4982710
417.7430065.1163091457.6715741311.6840998551.6920700.7839450.029395118266.6428630...1098.894225010985.2304001271.85607762682.6826620.5765590.455894-1360.4440110
511.5540981.120899-77.919930598.04776818486.6048810.9371570.227115189.1286360...2387.9130900-3786.001956-3050.19009649924.6772880.9406560.096659-1827.2643260
68.2968937.380471970.351808-490.04592627929.2422650.9661350.0956131135.5439710...944.17408301618.033440-1593.58776845253.8411210.9599640.098093-1260.9102410
715.8758831.6567602336.1653884166.00218835728.5256790.9468780.060513-13321.9468180...1942.1290520-1708.1891852517.04877927592.7474810.9613870.12553517027.0691120
812.2657745.3943782606.155962-4657.66979799824.7220500.7551080.4031231153.7058950...4.9760510961.067631892.00874112739.1657210.6306260.030043-14351.7795610
97.9602609.528332-1740.1752381060.63489576542.2249690.8239500.096627-128.6785770...309.2801250-2026.920178887.97837447609.3096640.9723400.1610731193.3764460
\n", "

10 rows × 26 columns

\n", "
" ], "text/plain": [ " B_FlightDistance B_VertexChi2 H1_PX H1_PY H1_PZ \\\n", "0 6.888037 8.426947 1207.753798 -84.290958 10399.473702 \n", "1 8.957103 3.474719 -811.617861 -518.300956 22338.883014 \n", "2 9.100733 4.113123 -2007.925735 -2555.080382 26601.465958 \n", "3 11.077374 2.360357 1408.170513 -1372.864558 66357.093308 \n", "4 17.743006 5.116309 1457.671574 1311.684099 8551.692070 \n", "5 11.554098 1.120899 -77.919930 598.047768 18486.604881 \n", "6 8.296893 7.380471 970.351808 -490.045926 27929.242265 \n", "7 15.875883 1.656760 2336.165388 4166.002188 35728.525679 \n", "8 12.265774 5.394378 2606.155962 -4657.669797 99824.722050 \n", "9 7.960260 9.528332 -1740.175238 1060.634895 76542.224969 \n", "\n", " H1_ProbK H1_ProbPi H1_Charge H1_IPChi2 H1_isMuon ... \\\n", "0 0.902219 0.041574 -1 998.424410 0 ... \n", "1 0.942885 0.093401 1 162.677006 0 ... \n", "2 0.917661 0.077237 -1 1355.611615 0 ... \n", "3 0.785618 0.119467 -1 2.799029 0 ... \n", "4 0.783945 0.029395 1 18266.642863 0 ... \n", "5 0.937157 0.227115 1 89.128636 0 ... \n", "6 0.966135 0.095613 1 135.543971 0 ... \n", "7 0.946878 0.060513 -1 3321.946818 0 ... \n", "8 0.755108 0.403123 1 153.705895 0 ... \n", "9 0.823950 0.096627 -1 28.678577 0 ... \n", "\n", " H2_IPChi2 H2_isMuon H3_PX H3_PY H3_PZ H3_ProbK \\\n", "0 110.519068 0 1973.085892 -289.150032 26771.341608 0.915843 \n", "1 1994.119734 0 -4801.397918 1993.340031 76466.229808 0.806471 \n", "2 8500.518262 0 -1260.859080 -2824.663002 22365.178510 0.947676 \n", "3 564.019813 0 2171.855775 -1964.419835 92096.742555 0.560237 \n", "4 1098.894225 0 10985.230400 1271.856077 62682.682662 0.576559 \n", "5 2387.913090 0 -3786.001956 -3050.190096 49924.677288 0.940656 \n", "6 944.174083 0 1618.033440 -1593.587768 45253.841121 0.959964 \n", "7 1942.129052 0 -1708.189185 2517.048779 27592.747481 0.961387 \n", "8 4.976051 0 961.067631 892.008741 12739.165721 0.630626 \n", "9 309.280125 0 -2026.920178 887.978374 47609.309664 0.972340 \n", "\n", " H3_ProbPi H3_Charge H3_IPChi2 H3_isMuon \n", "0 0.057261 1 386.493713 0 \n", "1 0.385119 -1 158.823018 0 \n", "2 0.097263 1 352.235461 0 \n", "3 0.070540 1 44.498271 0 \n", "4 0.455894 -1 360.444011 0 \n", "5 0.096659 -1 827.264326 0 \n", "6 0.098093 -1 260.910241 0 \n", "7 0.125535 1 7027.069112 0 \n", "8 0.030043 -1 4351.779561 0 \n", "9 0.161073 1 193.376446 0 \n", "\n", "[10 rows x 26 columns]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Displays a sample of the data\n", "B2HHH_AllData_WithCuts_df.limit(10).toPandas()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make histograms of the probability of a final state particle being a kaon or a pion.\n", "These will help guide you on suitable probability values at which to cut.\n", "\n", "You can also consider more sophisticated options like 2-D plots of kaon and pion probabilities or different values of the cuts for the different final state particles." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHjCAYAAAAUmBixAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X20XWV9L/rvT0IhElEUyrCAJ6mH0sREA8agBCxWLi/F\nYvEGS3kRKr4i7TmnRyk9517rtXKHjgoHvYBerCURtF61Ara2WkVBOAU0QCRAikKJGJsqRY9Wgtrg\nc/9YM+lms5PsJHvP/fb5jLHGmuuZL+u31rN2xnc9edac1VoLAAAwvp4y0QUAAMBMIHgDAEAPBG8A\nAOiB4A0AAD0QvAEAoAeCNwAA9EDwBgCAHgjeAADQA8EbAAB6MGuiCxgv++67b5s7d+5ElwEAwDR2\n++23/0trbb/RbDttg/fcuXOzatWqiS4DAIBprKq+NdptTTUBAIAeCN4AANADwRsAAHowbed4j+Tf\n/u3fsn79+vzkJz+Z6FKmtD333DMHHnhgdt9994kuBQBgyphRwXv9+vV52tOelrlz56aqJrqcKam1\nlkceeSTr16/PvHnzJrocAIApY0ZNNfnJT36SZz3rWUL3LqiqPOtZz/K/BgAAO2hGBe8kQvcY8B4C\nAOy4GRe8AQBgIsyoOd7Dzb3gs2N6vHXvPnFMjwcAwPRhxLtnc+bMecLjFStW5LzzzkuSfOUrX8lh\nhx2WWbNm5VOf+tQ2j7Nu3brMnj07ixcvzoIFC/KmN70pP//5z0ddx7p167Jw4cIR1x199NFbrvr5\n4IMP5uCDD87nP//5UR8bAIAnE7wnkec85zlZsWJFTjvttFFt/9znPjerV6/OXXfdlXvvvTfXXnvt\nE9Zv2rRpl+pZv359jj/++Fx00UU57rjjdulYAAAzneA9icydOzfPf/7z85Sn7Fi3zJo1K0cccUTu\nv//+3HDDDTnqqKNy0kknZcGCBUmSiy++OAsXLszChQtzySWXbNlv06ZNOf300zN//vwsX748Gzdu\n3LJuw4YNOfbYY3PhhRfmpJNOGpsXCAAwgwnePXvssceyePHiLbe3v/3tu3zMjRs35vrrr8+iRYuS\nJHfccUfe97735Rvf+EZuv/32XHnllbntttty66235kMf+lDuvPPOJMl9992Xc889N2vXrs3ee++d\nyy+/fMsxzzrrrJx33nlZvnz5LtcHAIDg3bvZs2dn9erVW27vfOc7d/pYDzzwQBYvXpxly5blxBNP\nzAknnJAkWbp06ZaL29x88805+eSTs9dee2XOnDl51atelZtuuilJctBBB2XZsmVJkjPOOCM333zz\nlmMfc8wxufrqq58wCg4AwM6b0Wc1meo2z/Eebq+99hrV/sPPxz308fnnn5+rrroqp5xySq677rrM\nmuWjAgCwK2Z0mpoJp/876qijcvbZZ+eCCy5Iay3XXHNNrrrqqiTJQw89lFtuuSUveclL8rGPfSxH\nHnnkE/a95JJLctppp+Wcc87JihUrXDgHAGAXmGoyiXzta1/LgQcemE9+8pN54xvfmOc973m7fMzD\nDjssZ599dpYuXZrDDz88r3vd63LooYcmSQ455JBcdtllmT9/fn7wgx/kzW9+8xP2raqsXLkyGzZs\nyPnnn7/LtQAAzGTVWpvoGsbFkiVL2uZzUW+2du3azJ8/f4Iqml68lwAASVXd3lpbMpptjXgDAEAP\nZvQc76lgzZo1OfPMM5/Qtscee+S2226boIoAAHbcopWLRmxfc9aaniuZOIL3JLdo0aIRz1wCAMDU\nYqoJAAD0QPAGAIAeCN4AANCDmT3H+x1PH+Pj/XBsjwcAwLRhxLtnc+bMecLjFStW5LzzzkuSXHzx\nxVmwYEGe//zn5+Uvf3m+9a1vbfU469aty+zZs7N48eIsWLAgb3rTm/Lzn/981HWsW7cuCxcuHHHd\n0Ucfnc3nQH/wwQdz8MEH5/Of//yojw0AwJMJ3pPIoYcemlWrVuWuu+7K8uXLt3u1yOc+97lZvXp1\n7rrrrtx777259tprn7B+06ZNu1TP+vXrc/zxx+eiiy7Kcccdt0vHAgCY6QTvSeRlL3tZnvrUpyZJ\nXvziF2f9+vWj2m/WrFk54ogjcv/99+eGG27IUUcdlZNOOikLFixIMhhJX7hwYRYuXJhLLrlky36b\nNm3K6aefnvnz52f58uXZuHHjlnUbNmzIsccemwsvvDAnnXTSGL5KAICZSfDu2WOPPZbFixdvub39\n7W8fcbsPf/jDOeGEE0Z1zI0bN+b666/PokWDE9Pfcccded/73pdvfOMbuf3223PllVfmtttuy623\n3poPfehDufPOO5Mk9913X84999ysXbs2e++9dy6//PItxzzrrLNy3nnnZfny5bv4igEASATv3s2e\nPTurV6/ecnvnO9/5pG2uvvrqrFq1Km9729u2eawHHnggixcvzrJly3LiiSduCepLly7NvHnzkiQ3\n33xzTj755Oy1116ZM2dOXvWqV+Wmm25Kkhx00EFZtmxZkuSMM87IzTffvOXYxxxzTK6++uonjIID\nALDzZvZZTSahL37xi7nwwgtz4403Zo899tjmtpvneA+31157jeq5qmqrj88///xcddVVOeWUU3Ld\ndddl1iwfFQCAXTGz09QkO/3fnXfemTe+8Y353Oc+l1/8xV8ck2MeddRROfvss3PBBRektZZrrrkm\nV111VZLkoYceyi233JKXvOQl+djHPpYjjzzyCftecsklOe2003LOOedkxYoVTwrqAACMnqkmk8jb\n3va2/PjHP84pp5ySxYsXj8mPGg877LCcffbZWbp0aQ4//PC87nWvy6GHHpokOeSQQ3LZZZdl/vz5\n+cEPfpA3v/nNT9i3qrJy5cps2LBhu2dYAQBg26q1NtE1jIslS5a0zeei3mzt2rWZP3/+BFU0vXgv\nAYAdsWjlohHb15y1pudKxlZV3d5aWzKabY14AwBAD2b2HO8pYM2aNTnzzDOf0LbHHnvktttum6CK\nAADYGYL3JLdo0aIRz1wCAMDUYqoJAAD0QPAGAIAeCN4AANCDGT3He2untdlZozkdzpw5c/LjH/94\ny+MVK1Zk1apVufTSS/PBD34wl112WXbbbbfMmTMnV1xxRRYsWDDicdatW5f58+fnkEMOyc9+9rO8\n9KUvzeWXX56nPGV036XWrVuXV7ziFbn77ruftO7oo4/Oe9/73ixZsiQPPvhgjj322Fx66aU57rjj\nRnVsAACezIj3JHLaaadlzZo1Wb16dc4///z8wR/8wTa333zJ+Lvuuiv33ntvrr322ies37Rp0y7V\ns379+hx//PG56KKLhG4AgF0keE8ie++995blRx99dNSXaJ81a1aOOOKI3H///bnhhhty1FFH5aST\nTtoyWn7xxRdn4cKFWbhwYS655JIt+23atCmnn3565s+fn+XLl2fjxo1b1m3YsCHHHntsLrzwwjG5\ngiYAwEw3o6eaTITHHnssixcv3vL4+9///hOC7WWXXZaLL744P/vZz/KlL31pVMfcuHFjrr/++rzz\nne9Mktxxxx25++67M2/evNx+++258sorc9ttt6W1lsMPPzy/9mu/ln322Sf33XdfPvzhD2fZsmV5\n7Wtfm8svvzxvfetbkyRnnXVW3vWud2X58uVj+OoBAGYuI949mz17dlavXr3ltjksb/aWt7wlDzzw\n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\nNyT5QK9FsstG2c8PJvm11tqiJH+SKfDDDv7dKPt483bvSfJ3/VbIWBhNP1fVM5JcnuSk1trzkpzS\ne6HsklE0pw8fAAAKkElEQVT+Pb8lyb2ttRckOTrJRd3Z0pg6ViQ5fhvrJ3X+Erx3zpZL2LfWfpZk\n8yXsh3plko+0gVuTPKOqnt13oeyS7fZza+3vW2s/6B7emsE55pk6RvO3nCS/l+Qvk3yvz+IYM6Pp\n59OSfLq19lCStNb09dQzmn5uSZ5WVZVkTpLvJ9nUb5nsitbaVzLot62Z1PlL8N45I13C/oCd2IbJ\nbUf78JwkfzuuFTHWttvHVXVAkpMzyUZN2CGj+Vv+lST7VNUNVXV7Vb2mt+oYK6Pp50uTzE/yT0nW\nJPlPrbWf91MePZnU+WtKnMcbJruqelkGwfvIia6FMXdJkj9srf18MEjGNDUryQuTvDzJ7CS3VNWt\nrbVvTGxZjLHjkqxO8utJnpvkC1V1U2vtRxNbFjOF4L1zRnMJe5e5n/pG1YdV9fwkf5bkhNbaIz3V\nxtgYTR8vSfLxLnTvm+Q3qmpTa+3afkpkDIymn9cneaS19miSR6vqK0lekETwnjpG08+/m+TdbXAR\nk/ur6sEkv5rkq/2USA8mdf4y1WTnjOYS9p9J8pru17UvTvLD1tqGvgtll2y3n6vqOUk+neRMI2NT\n0nb7uLU2r7U2t7U2N8mnkpwrdE85o/k3+7okR1bVrKp6apLDk6ztuU52zWj6+aEM/lcjVbV/kkOS\n/GOvVTLeJnX+MuK9E7Z2CfuqelO3/oNJ/ibJbyS5P8nGDL5lM4WMsp/fnuRZSS7vRkQ3tdaWTFTN\n7JhR9jFT3Gj6ubW2tqo+l+SuJD9P8mettRFPV8bkNMq/5z9JsqKq1iSpDKaR/cuEFc0Oq6q/yOCM\nNPtW1fokf5xk92Rq5C+XjAcAgB6YagIAAD0QvAEAoAeCNwAA9EDwBgCAHgjeAADQA8EbGHdV9XhV\nra6qu6vqk915kndk/x/v4PYrqmr5CO1Lqur93fLZVXVpt/ymzZcI79p/aUeeb0d1lyXf5dNOVtXi\nqvqNIY/fUVVv3cFj/LfRrKuquVU1oafXG15rVf39drYf8XOwje23fA7GwmR4z4DJRfAG+vBYa21x\na21hkp8ledPQld2FDsb936PW2qrW2u+P0P7B1tpHuodnJxnX4D2GFmdwvtpdsdXgvZ11vRny+XhC\nPa21I8byeYZ9DgDGnOAN9O2mJP+xGw28r6o+kuTuJAdV1e9U1ZpuZPw9Q3eqqv9RVfdU1fVVtV/X\n9vqq+lpVfb2q/nLYSPoxVbWqqr5RVa/otj+6qv56eEGbR4q70dElST7ajdCfWFXXDtnuf6uqa4bt\ne3xVfXLI4y3PUVUf6Gq4p6r+r5HejKGj+VW1vKpWdMv7da/pa91t2bD9fiHJO5P8dlfrb3erFnQj\n6v9YVb8/ZPtrq+r2rpY3dG3vTjK72/+jw44/0rrdqupD3TH+rqpmd9s+t6o+1x3/pqr61a28x1dV\n1S1V9c2qen3XPqfr0zu6vn9l1z788/Hh4fUMe+/+sNv/613tw5//hVV1Y1fj56vq2Vup8a3d8u9X\n1b1VdVdVfXyEbed2r/WO7rbNLwFV9ctVdWdVvWhr+3ZfMP60+/yv2dyn3Wfqhqr6VFX9Q1V9tGpw\nxS5gimmtubm5uY3rLcmPu/tZGVya+81J5mZwhcAXd+t+KYPLOe/XbfelJL/VrWtJTu+W357k0m75\nWUOe411Jfq9bXpHkcxkMLhycZH2SPTO42tlfd9ucPeQ470jy1m75hiRLuuVK8g9J9usefyzJbw57\nbbO6uvfqHn8gyRnd8jO7+9264z5/hOf48ZBjLU+yYshzHdktPyfJ2hHe1y2vYcjr+PskeyTZN8kj\nSXYfVsvsDILss4Y//9b6rVuem2RTksXd408MeZ3XJzm4Wz48yZdGONY7kny9e/59k3y76/NZSfbu\nttk3g6vNVYZ9PkaqNf/+uTqhe91PHfZaV3Tv6e7d+s39+NsZXNVwpBo3fw7+Kcke3fIzRtj2qUn2\n7JYPTrJqhG3mdu/1IUnuTPKCbe2b5H9P8oXu87J/Bp+rZ2fwuf1hkgMz+Ezfsvmz4ebmNrVuLhkP\n9GF2Va3ulm/KYPTyl5J8q7V2a9f+oiQ3tNYeTpJuVPOlSa7NIID9f912Vyf5dLe8sKreleQZSeZk\ncKnozT7RWvt5km9W1T8medIo7Pa01lpVXZXkjKq6MslLkrxm2DabanCp8d+sqk8lOTHJ+d3qV3ej\ny7MyCFALMrgk+Wgck8Ho9ebHe1fVnNba9ua7f7a19tMkP62q72UQ4NYn+f2qOrnb5qAMAt8jo6xl\nswdba5v78fYkc6tqTpIjknxySK17bGX/61prjyV5rKq+nGRpks8m+b+r6qUZ9PMBXc3JEz8f23JM\nkitbaxuTpLX2/WHrD0myMMkXuhp3S7JhO8e8K4P/+bg2g8/gcLsnubSqFid5PMmvbOU4+2XwZfNV\nrbV7t7PvkUn+orX2eJLvVtWNGfxd/CjJV1tr65Ok+1uam+Tm7bwGYJIRvIE+PNZaWzy0oQtAj+7k\n8Vp3vyKDUfGvV9XZGYwMDt9ma49H68okf5XkJ0k+2VrbNMI2H09yXpLvZzB6+a9VNS/JW5O8qLX2\ng24KyZ4j7Du0rqHrn5LBaO9PdrDenw5ZfjzJrKo6OoNw+pLW2saqumErtezosWd3df6v4f27FSP1\nyekZhNMXttb+rarWDaltZz8fw1WSe1prL9mBfU7M4Ivfbyb571W1aFjf/5ck303yggzeg6310w8z\nGLk+Msnm4D3afYd6Ur+O7mUAk4k53sBk8dUkv1ZV+1bVbkl+J8mN3bqnZDBlIElOy7+P9D0tyYaq\n2j2DADfUKVX1lKp6bpJfTnLfKOv41+64SZLW2j9lMO3g/8gghI/kxiSHJXl9BiE8SfbOIDj+sKr2\nz2A6xEi+W1Xza/DjwZOHtP9dkt/b/KAbHd1mrdvw9CQ/6EL3ryZ58ZB1/9a9fyPZ1rokSWvtR0ke\nrKpTujqrql6wlc1fWVV7VtWzMviS9LWutu91oftlSf7DNp5ua/V8IcnvVjfHv6qeOWz9fUn2q6qX\ndOt3r6rnbe1Jur44qLX25SR/2NU4Z9hmT0+yoftflTMzGEUfyc8y6NfXVNVp29n3pgzm7O9Wg98x\nvDSDvwtgmhC8gUmhtbYhyQVJvpzBXODbW2vXdasfTbK0Bqdm+/UMflSYJP9nktuS/M8M5mIP9VAG\noeVvk7xpB0aOVyT5YPcjvtld20eTfLu1tnYrtT+e5K8zCNd/3bV9PYN5vf+QwXzt/7mV57ug2+fv\n88TpD7+fZEn34757M+xMMJ0vZzAdZeiPK0fyuQxGvtcmeXeSodM3rkhyVw37ceUo1g11epJzqurr\nSe5J8sqtbHdXV/OtSf6k+1Lz0Qxe55oMpvEM78ft1tNa+1ySzyRZ1U3DeOuw9T/L4Ivbe7oaV2cw\nPWZrdktydVfTnUne31r7X8O2uTzJWd3xfjXbGJ1vrT2a5BVJ/ktVnbSNfa/J4D36ega/cTi/tfbP\n26gTmGKqtZ3931eAmaEG5/u+s7X24YmuZaqqqndk8GPI9050LQATxRwxgG2oqtszGJH8rxNdCwBT\nmxFvAADogTneAADQA8EbAAB6IHgDAEAPBG8AAOiB4A0AAD34/wFgKk/hvqeIOwAAAABJRU5ErkJg\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the probability that a final state particle is a kaon\n", "\n", "B2HHH_AllData_WithCuts_df.select(\"H1_ProbK\", \"H2_ProbK\", \"H3_ProbK\").toPandas().plot.hist(bins=101, range=[0.0, 1.0])\n", "xlabel('Probability value that the particle is a kaon')\n", "ylabel('Count');" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHjCAYAAAAUmBixAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X20XWV9L/rvT0IhElFU6qC8nKQeDk1MZINpRAIUa89V\nSgviQIsChiq+gdpeKxZ7ej0cW87QOyxVr6AXQYM21otWUOpLqygKFtCAgUBiNNaIoVQp2lrFt8Bz\n/1gzcbPdCTvJXnNn73w+Y6yx53rmnM/8rTVXMr772c+as1prAQAAhusRU10AAADsDgRvAADogeAN\nAAA9ELwBAKAHgjcAAPRA8AYAgB4I3gAA0APBGwAAeiB4AwBAD2ZNdQHD8vjHP77NnTt3qssAAGAG\nu+WWW/6ttbb/RLadscF77ty5Wbly5VSXAQDADFZV35rotqaaAABADwRvAADogeANAAA9mLFzvAEA\ndlc///nPs3HjxvzkJz+Z6lJmjL333jsHHXRQ9txzzx3uQ/AGAJhhNm7cmEc96lGZO3duqmqqy5n2\nWmu57777snHjxsybN2+H+zHVBABghvnJT36Sxz3ucUL3JKmqPO5xj9vpvyAI3gAAM5DQPbkm4/0U\nvAEAoAfmeAMAzHBzz//4pPa34U0nTmp/uwsj3gAATLo5c+Y85Pny5cvzyle+MknyhS98IUceeWRm\nzZqVD3/4w9vsZ8OGDZk9e3ZGRkayYMGCvPzlL8+DDz444To2bNiQhQsXjrvu+OOPz2GHHZbDDz88\nS5cuzbp165IkZ599dtasWTPhY0yU4A0AQK8OOeSQLF++PC94wQsmtP0Tn/jErFq1KrfffnvWrFmT\nq6+++iHrN23atMO1rFixIrfddluWLVuW8847L0ly2WWXZcGCBTvc59YI3gAA9Gru3Ll58pOfnEc8\nYvui6KxZs3L00Udn/fr1ue6663LsscfmpJNO2hKSL7rooixcuDALFy7MW9/61i37bdq0Kaeffnrm\nz5+fU089Nffff/8v9X3cccdl/fr1SQYj4StXrtyJVzg+wRsAgEn34x//OCMjI1seb3jDG3a6z/vv\nvz/XXnttFi1alCS59dZb87a3vS1f+9rXcsstt+S9731vbr755tx0001597vfna985StJknXr1uWc\nc87J2rVrs+++++aSSy75pb6vueaaLf0Oi+ANAMCkmz17dlatWrXl8cY3vnGH+/rGN76RkZGRLF26\nNCeeeGJOOOGEJMmSJUu23NDmhhtuyCmnnJJ99tknc+bMyXOe85xcf/31SZKDDz44S5cuTZKcccYZ\nueGGG7b0ffrpp2dkZCRf/OIX85a3vGWHa5wIVzUBAGCXtnmO91j77LPPhPYfew3u0c9XrFiRxYsX\n71yBEyR4AwDMcLvD5f+OPfbYnHXWWTn//PPTWstVV12V97///UmSu+66KzfeeGOe9rSn5QMf+ECO\nOeaYKanRVBMAAHr15S9/OQcddFA+9KEP5WUve1me9KQn7XSfRx55ZM4666wsWbIkT33qU3P22Wfn\niCOOSJIcdthhufjiizN//vx8//vfzyte8YqdPt6OqNbalBx42BYvXtyG8W1UAIBd3dq1azN//vyp\nLmPGGe99rapbWmsTmqtixBsAAHpgjvd0c8Gjt9L+H/3WAQAwiVavXp0zzzzzIW177bVXbr755imq\naPIJ3gAATLlFixaNe+WSmcRUEwAA6IHgDQAAPRC8AQCgB+Z4AwDMdFu7OMMO9+eiDjvCiDcAAJNu\nzpw5D3m+fPnyvPKVr0ySXHTRRVmwYEGe/OQn5xnPeEa+9a1vbbWfDRs2ZPbs2RkZGcmCBQvy8pe/\nPA8++OCE69iwYUMWLlw47rrjjz8+hx12WA4//PAsXbo069atS5KcffbZWbNmzYSPMVGCNwAAvTri\niCOycuXK3H777Tn11FPzute9bpvbP/GJT8yqVaty++23Z82aNbn66qsfsn7Tpk07XMuKFSty2223\nZdmyZTnvvPOSJJdddlkWLFiww31ujeANAECvnv70p+eRj3xkkuSoo47Kxo0bJ7TfrFmzcvTRR2f9\n+vW57rrrcuyxx+akk07aEpIvuuiiLFy4MAsXLsxb3/rWLftt2rQpp59+eubPn59TTz01999//y/1\nfdxxx2X9+vVJBiPhw7gDuuANAMCk+/GPf5yRkZEtjze84Q3jbnf55ZfnhBNOmFCf999/f6699tos\nWrQoSXLrrbfmbW97W772ta/llltuyXvf+97cfPPNuemmm/Lud787X/nKV5Ik69atyznnnJO1a9dm\n3333zSWXXPJLfV9zzTVb+h0WwRsAgEk3e/bsrFq1asvjjW984y9t8zd/8zdZuXLllikeW/ONb3wj\nIyMjWbp0aU488cQtQX3JkiWZN29ekuSGG27IKaeckn322Sdz5szJc57znFx//fVJkoMPPjhLly5N\nkpxxxhm54YYbtvR9+umnZ2RkJF/84hfzlre8ZVJe+9a4qgkAAL37zGc+kwsvvDCf//zns9dee21z\n281zvMfaZ599JnSsqtrq8xUrVmTx4sUT6mdnCd4AADPdLnb5v6985St52ctelk996lP51V/91Unp\n89hjj81ZZ52V888/P621XHXVVXn/+9+fJLnrrrty44035mlPe1o+8IEP5JhjjpmUY24vU00AAOjV\neeedlx/+8Id57nOfm5GRkZx00kk73eeRRx6Zs846K0uWLMlTn/rUnH322TniiCOSJIcddlguvvji\nzJ8/P9///vfzile8YqePtyOqtTYlBx62xYsXt2F8G3XKbe0C+LvYb7IAwNRZu3Zt5s+fP9VlzDjj\nva9VdUtrbUJzVYx4AwBAD8zxBgBgyq1evTpnnnnmQ9r22muv3HzzzVNU0eQTvAEAmHKLFi0a98ol\nM4mpJgAA0IOhBe+q2ruqvlRVt1XVnVX1v7r2x1bVp6vq693P/Ubt8/qqWl9V66rqmaPan1JVq7t1\nb6+xF2MEAIBd3DBHvH+a5Ldba4cnGUnyrKo6Ksn5Sa5trR2a5NrueapqQZLTkjwpybOSXFJVe3R9\nvTPJS5Ic2j2eNcS6AQBg0g1tjncbXKfwh93TPbtHS3JykuO79iuSXJfkT7v2D7bWfprkm1W1PsmS\nqtqQZN/W2k1JUlXvS/LsJJ8cVu0AADPJoisWTWp/q5etftht5syZkx/+8Idbni9fvjwrV67MO97x\njrzrXe/KxRdfnD322CNz5szJpZdemgULFozbz4YNGzJ//vwcdthh+dnPfpbjjjsul1xySR7xiImN\nH2/YsCG/93u/lzvuuOOX1h1//PG55557svfee2fOnDl5z3vek8MOOyxnn312XvOa12y1ph011Dne\nVbVHVa1K8t0kn26t3ZzkCa21e7pN/jXJE7rlA5N8e9TuG7u2A7vlse0AAExDL3jBC7J69eqsWrUq\nr3vd6/Ka17xmm9tvvmX87bffnjVr1uTqq69+yPpNmzbtcC0rVqzIbbfdlmXLluW8885Lklx22WWT\nHrqTIQfv1toDrbWRJAdlMHq9cMz6lsEo+KSoqpdW1cqqWnnvvfdOVrcAAEyifffdd8vyj370o0z0\n63uzZs3K0UcfnfXr1+e6667Lsccem5NOOmlLSL7ooouycOHCLFy4MG9961u37Ldp06acfvrpmT9/\n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\nkjyqqirJnCTfS7Kp3zLZGa21L2Rw3rZml85fgveOGe8W9gfuwDbs2rb3HL44ySeHWhGT7WHPcVUd\nmOSU7GKjJmyXifxb/m9J9quq66rqlqp6YW/VMVkmcp7fkWR+kn9JsjrJH7XWHuynPHqyS+evaXEd\nb9jVVdXTMwjex0x1LUy6tyb509bag4NBMmaoWUmekuQZSWYnubGqbmqtfW1qy2KSPTPJqiS/neSJ\nST5dVde31n4wtWWxuxC8d8xEbmHvNvfT34TOYVU9OcllSU5ord3XU21Mjomc48VJPtiF7scn+d2q\n2tRau7qfEpkEEznPG5Pc11r7UZIfVdUXkhyeRPCePiZynv8wyZva4CYm66vqm0l+I8mX+imRHuzS\n+ctUkx0zkVvYfyzJC7tv1x6V5D9aa/f0XSg75WHPc1UdkuQjSc40MjYtPew5bq3Na63Nba3NTfLh\nJOcI3dPORP7P/miSY6pqVlU9MslTk6ztuU52zkTO810Z/FUjVfWEJIcl+edeq2TYdun8ZcR7B2zt\nFvZV9fJu/buSfCLJ7yZZn+T+DH7LZhqZ4Hl+Q5LHJbmkGxHd1FpbPFU1s30meI6Z5iZynltra6vq\nU0luT/Jgkstaa+Neroxd0wT/Pf9FkuVVtTpJZTCN7N+mrGi2W1X9bQZXpHl8VW1M8j+T7JlMj/zl\nlvEAANADU00AAKAHgjcAAPRA8AYAgB4I3gAA0APBGwAAeiB4A72oqgeqalVV3VFVH+qulbw9+/9w\nO7dfXlWnjtO+uKre3i2fVVXv6JZfvvk24V37r23P8bZXd2vynb70ZFWNVNXvjnp+QVW9djv7+LOJ\nrKuquVU1pZfYG1trVf3Tw2w/7udgG9tv+RwMW1VdVlUL+jgWsGsQvIG+/Li1NtJaW5jkZ0lePnpl\nd7ODof+f1Fpb2Vp79Tjt72qtva97elaSoQbvSTSSwTVrd8ZWg/fDrOvNqM/HQ+pprR09mccZ8zkY\nqtba2a21NX0cC9g1CN7AVLg+yX/tRlDXVdX7ktyR5OCqen5Vre5Gxt88eqeq+uuqurOqrq2q/bu2\nl1TVl6vqtqr6uzEj6b9TVSur6mtV9Xvd9sdX1d+PLWjzSHE3Oro4yYpuhP7Eqrp61Hb/vaquGrPv\ns6rqQ6OebzlGVb2zq+HOqvpf470Zo0fzq+rUqlreLe/fvaYvd4+lY/b7lSRvTPIHXa1/0K1a0I2o\n/3NVvXrU9ldX1S1dLS/t2t6UZHa3/4ox/Y+3bo+qenfXxz9W1exu2ydW1ae6/q+vqt/Yynv8/qq6\nsaq+XlUv6drndOf01u7cn9y1j/18XD62njHv3Z92+9/W1T72+E+pqs93Nf5DVR2wlRpf2y2/uqrW\nVNXtVfXBcbad273WW7vHL/0S0G3z1apaUVVrq+rDmz+jNeqvHlv73FfVD6vqwu413VSDuy0C01Vr\nzcPDw2PojyQ/7H7OyuD23K9IMjeDuwQe1a37tQxu6bx/t91nkzy7W9eSnN4tvyHJO7rlx406xl8m\neVW3vDzJpzIYYDg0ycYke2dwx7O/77Y5a1Q/FyR5bbd8XZLF3XIl+WqS/bvnH0jy+2Ne26yu7n26\n5+9Mcka3/Nju5x5dv08e5xg/HNXXqUmWjzrWMd3yIUnWjvO+bnkNo17HPyXZK8njk9yXZM8xtczO\nIMg+buzxt3beuuW5STYlGemeXznqdV6b5NBu+alJPjtOXxckua07/uOTfLs757OS7Ntt8/gM7jhX\nGfP5GK/W/OJzdUL3uh855rUu797TPbv1m8/jH2RwZ8Pxatz8OfiXJHt1y48ZZ9tHJtm7Wz40ycpx\ntpmbwWd3aff8PRnzOcvDf+5/v1v+v5P8+VT/W/bw8NjxhxFvoC+zq2pVkpUZhIzLu/ZvtdZu6pZ/\nM8l1rbV7W2ubkqxIcly37sEk/1+3/DdJjumWF3ajjquTnJ7kSaOOeWVr7cHW2teT/HOSXxqFfTit\ntZbk/UnOqKrHJHlakk+O2WZTBiH/96tqVpITM/jlIkmeV1W3JvlKV9v2zOn9nSTv6N63jyXZt6rm\nTGC/j7fWftoGt8L+bpLNo6SvrqrbktyU5OAMwuL2+mZrbVW3fEuSuV1NRyf5UFfr/5vkl0aTOx9t\nrf24q+1zSZZkELL/d1XdnuQzSQ4cVfPoz8e2/E6S97bW7k+S1tr3xqw/LMnCJJ/uavzzJAc9TJ+3\nZ/CXjzMy+IVjrD2TvLv77H0oWz+3326tfbFbHv3Z3Wxbn/ufJdn8F5pbMgjywDQ1a6oLAHYbP26t\njYxuqKok+dEO9te6n8szGB28rarOymBEe+w2W3s+Ue9Nck2SnyT5UBeOxvpgklcm+V4GI5//WVXz\nkrw2yW+21r7fTSHZe5x9R9c1ev0jMhjt/cl21vvTUcsPJJlVVcdnEE6f1lq7v6qu20ot29v37K7O\nfx97frdivHNyegajvU9prf28qjaMqm1HPx9jVZI7W2tP2459TswgAP9+kv9RVYvGnPv/M8l3khye\nwXuwtfO0M5/Dn3e//CXdudyOfYFdjBFvYFfypSS/VVWPr6o9kjw/yee7dY/IYMpAkrwgyQ3d8qOS\n3FNVe2YQ4EZ7blU9oqqemOTXk6ybYB3/2fWbJGmt/UsG0w7+PIMQPp7PJzkyyUsyCOFJsm8GwfE/\nurm5J2xl3+9U1fwafHnwlFHt/5jkVZufVNV4wfYhtW7Do5N8vwvdv5HkqFHrft69f+PZ1rokSWvt\nB0m+WVXP7eqsqjp8K5ufXFV7V9XjMvgl6ctdbd/tQvfTk/yXbRxua/V8Oskfjpo//dgx69cl2b+q\nntat37OqnpSt6M7Fwa21zyX5067GsX9teHSSe1prDyY5M4PpROM5ZPNx89DP7mbb+twDM4jgDewy\nWmv3JDk/gykItyW5pbW2ecrGj5IsqcHl7H47gy8VJsn/leTmJF/MYC72aHdlEGo+meTl2zFyvDzJ\nu7ov8c3u2lZkMGVg7VZqfyCDKQEndD/TWrstgykmX81gvvYXx9u3e81/n8Ec5HtGtb86yeLuy31r\nMuZKMJ3PZfBlytFfrhzPpzIY+V6b5E0ZTDfZ7NIkt9eYL1dOYN1opyd5cTeV5c4kJ29lu9u7mm9K\n8hfdLzUrMnidq5O8ML98Hh+2ntbapzKYjrOym0ry2jHrf5bBL25v7mpclcH0mK3ZI8nfdDV9Jcnb\nW2v/PmabS5Is6/r7jWx9dH5dknO7936/DL4DMLq2bX3ugRmkfvEXLAC2pgbX+/5Ka+3yh92YcVXV\nBRl8GfItU11LX6pqbgZf5l04xaUAuwBzxQAeRlXdksFo5p9MdS0ATF9GvAEAoAfmeAMAQA8EbwAA\n6IHgDQAAPRC8AQCgB4I3AAD04P8HobidaFjOxv8AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the probability that a final state particle is a pion\n", "B2HHH_AllData_WithCuts_df.select(\"H1_ProbPi\", \"H2_ProbPi\", \"H3_ProbPi\").toPandas().plot.hist(bins=101, range=[0.0, 1.0])\n", "xlabel('Probability value that the particle is a pion')\n", "ylabel('Count');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now calculate the invariant mass of the B meson for the real data and plot a histogram of this. \n", "Compare it with the one you drew for the simulation data. \n", "\n", "Can you explain the differences you observe?" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+-------------------+-------------------+------------------+\n", "| Tot_Energy| PX_Tot| PY_Tot| PZ_Tot|\n", "+------------------+-------------------+-------------------+------------------+\n", "| 86162.89710374283| 1916.065670301517| 77.15992169481359| 85981.36256238335|\n", "|116710.00497921911| -7144.666830516883| -15.24835325482104|116369.28397058396|\n", "| 64528.29362291747|-1575.5401941634025|-7543.4895996123105| 63848.13679774214|\n", "| 207873.7078340979| 1924.019093047381| -3781.162863847703|207762.59892769693|\n", "|117052.18424146794| 18764.329326458574| 2844.36565135338|115392.75963356277|\n", "+------------------+-------------------+-------------------+------------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "# calculate the B meson invariant mass\n", "# plot the B meson invariant mass in a histogram\n", "b_meson_4momentum_withcuts = sql(\"\"\"\n", " select \n", " sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ) +\n", " sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) +\n", " sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) as Tot_Energy,\n", " H1_PX + H2_PX + H3_PX as PX_Tot,\n", " H1_PY + H2_PY + H3_PY as PY_Tot,\n", " H1_PZ + H2_PZ + H3_PZ as PZ_Tot\n", " from B2HHH_AllData_WithCuts\"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "b_meson_4momentum_withcuts.createOrReplaceTempView(\"b_meson_4momentum_mycuts_read_data\")\n", "b_meson_4momentum_withcuts.show(5)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+\n", "| invariant_mass|\n", "+------------------+\n", "| 5250.987328087266|\n", "|5326.2100776796615|\n", "| 5284.840877393883|\n", "| 5308.658345711811|\n", "| 5053.156322435298|\n", "+------------------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "b_meson_invariant_mass_withcuts = b_meson_4momentum_withcuts.selectExpr(\"\"\"\n", " sqrt(Tot_Energy* Tot_Energy - (PX_Tot*PX_Tot + PY_Tot*PY_Tot + PZ_Tot*PZ_Tot) ) as invariant_mass\"\"\")\n", " \n", "b_meson_invariant_mass_withcuts.show(5)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHxCAYAAABahrshAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu4XFV9//H3lwRI5H5JIxI0VFEEogECongBsRqEFmoR\n4g8U0EIVamu1FWgrIhWL1rZIFaxaBYsCkXqJRFTkphUBD5ASwqVECCUBQohCAAFJ+P7+2OvAZDiX\nOeTMOjkn79fzzDN71r6tvWbPPp+zZs1MZCaSJEmSumu9ka6AJEmStC4weEuSJEkVGLwlSZKkCgze\nkiRJUgUGb0mSJKkCg7ckSZJUgcFbGmYRsSAi9hnpeqxtImJRRLylTP9tRHxlGLf9aET8fpk+JyI+\nOYzb/mJEfGy4tjeE/X4gIpaWY9uq9v5HWkRcEhFHjsB+X1zafFztfY91EXFKRJw3hOUzIl7WzTpJ\ntRm8pSFoDY8tZUdFxH/3Ps7MnTPzykG2M7X8URnfpaqu1TLzU5n5p4MtFxFXRsSgy2Xmxpl555rW\nq/25LNt+f2b+w5pue4j1WB/4F+Ct5diWt83vPX8eLbelEXFWWW9MyMz9M/PcEdjv/5U2X7Wm2xru\nfwLVt3X9eqrRxeAtjUHryh+gMXyck4EJwIJBlts8MzcGpgGvBY7vdsXGsjF8Pg0L20dacwZvaZi1\nDanYMyJ6ImJF6ZX8l7LYT8v9Q6XH8rURsV5E/H1E3B0RD0TE1yNis5btvqfMWx4RH2vbzykRcVFE\nnBcRK4Cjyr5/EREPRcR9EfH5iNigZXsZEcdFxB0R8UhE/ENEvDQiri71nd26/PNoh3e31Pfv2uY9\n85ZzREwo9V5e6vrLiJgcEacBbwA+X9ro8y31Pj4i7gDuaClrfUt664i4tBzXVRHxkrLcc3rGenvV\nI+KVwBeB15b9PVTmr9ZrGRHHRMTCiPh1RMyJiBe1ten7S5s+FBFfiIjop302jIgzIuLecjujlL0c\nuL0s9lBEXD5YW2fmA8ClwE79LTPU5zsiDoyIeeU4ro6IV7XMOyEilpTt3B4R+w10TGXePhGxOCI+\nUs7v+yLi6AHq+8y7HVHeiYiIz0bEbyLirojYv8w7LCJ62tb9q4iYU6YPiIgbyzHeExGntCzXez68\nLyL+D7i8/RyJiKMj4tZyrHdGxJ+1rN/vMUXEscDhwEfL+fT9NX1eImKLiLg4IpaVdrg4Iqa0bOuo\nUsdHShsdXspfVl4HD0fEgxFxYX/t3la3oyLi5xHxrxGxHDillL+3tMlvIuJHUV5fZd7nSjuviIjr\nI+INneyrrPs3pQ3vjYj3ts3r93mk7+vpSyPi8miuKw9GxDciYvNO6yJ1TWZ68+atwxuwCHhLW9lR\nwH/3tQzwC+DdZXpjYK8yPRVIYHzLeu8FFgK/X5b9NvCfZd5OwKPA64ENgM8CT7Xs55Ty+GCaf6gn\nArsDewHjy/5uBT7Usr8EvgdsCuwMPAlcVva/GXALcOTzbKfe+r4R2JBm2MTKtvqeV6b/DPg+8AJg\nXKn3pmXelcCftm07aULmlsDElrKXlelzgEda9v253uenn3Z/Zh/tz2XL9j5Zpt8MPAjsVrb9b8BP\n2+p2MbA58GJgGTCznzY6FbgG+D1gEnA18A/91bNt3dXmAy8C/gd47wDPScfPN7Ar8ADwmvKcHElz\nXm8IvAK4B3hRS11e2sEx7VPOgVOB9YG3A78Ftuinvu3Py1PAMaU+HwDuBYLmvHkE2KFl3V8Cs1r2\nO43mdfEqYClwcFs7fh3YiOZ10962BwAvLft6U6nzbp0cEy3nzjA9L1sBf1KOeRPgW8B3y7yNgBXA\nK8rjbYCdy/T5wN+VNpgAvL7D1/FR5fg+SHMdmQgcRHOdemUp+3vg6pZ1jij1HA98BLgfmND+uu9j\nXzPLc7NLOZZvsvrrupPnsfV1/TLgD2jO2Uk04fyM53M98+ZtOG/2eEtD993SC/hQNL2iZw2w7FPA\nyyJi68x8NDOvGWDZw4F/ycw7M/NR4CRgVul5OwT4fmb+d2b+DjiZ5g9Nq19k5ncz8+nMfDwzr8/M\nazJzZWYuAv6dJji0+kxmrsjMBcDNwI/L/h8GLqEJYM/HIcDFmfnTzHwS+BjwdD/LPkXzh/plmbmq\n1HvFINv/x8z8dWY+3s/8uS37/juaXuztns+BtDkc+Gpm3lC2fVLZ9tSWZU7PzIcy8/+AK4DpA2zr\n1Mx8IDOXAZ8A3j3E+jxYzsElwGPARYMs3+nzfSzw75l5bXlOzqUJhHsBq2jCzE4RsX5mLsrMX3V4\nTE+V+U9l5g9o/jl7RYfHendmfjmbsdfn0gTLyZn5W5rg+i6AiNgB2BGYA5CZV2bm/PK6uIkmhLa/\nDk7JzMf6Op8yc25m/iobVwE/pnknZjiOqVdHz0tmLs/M/8rM32bmI8BpbcfyNLBLREzMzPvK9nrr\n+BKaf5aeyMzVPscwiHsz89/KdeRx4P00r79bM3Ml8Clgem+vd2aeV+q5MjP/mWf/WRvMocDXMvPm\nzHyM0rveq8PnsXX5hZl5aWY+Wc7FfxloeakWg7c0dAdn5ua9N+C4AZZ9H/By4LZohlAcOMCyLwLu\nbnl8N02v0eQy757eGSVsrPaBu9b5ABHx8vJW9P3RDD/5FLB12zpLW6Yf7+Pxxn1VNJpvbun9YF9f\nbyW31/exPurb6z+BHwEXlLeYPxODf0jwnk7nl39ifl3qtKZWe47KtpcD27Ysc3/L9G/ppw3bt1Wm\nh1rHrcs5+ALg5zTtOJBOn++XAB9p+wdzO5rgthD4EE0weiAiLohnh9sMdkzLS1jrNVD7tHumXcv5\nT8u636QEb+D/0fQC/xYgIl4TEVeU4RkP0wTH9tdBv+dTROwfEddEM7ToIZpe7db11+SYenX0vETE\nCyLi36MZwrWCphd384gYV15jh5Xjuy8i5kbEjmUbH6Xpsb+uvHZXG8YxiPa2eQnwuZbz4tdl29uW\nOv51GYbycJm/Gc9t776sds1g9fOo0+exdfnJ5dxcUtrqvA7rIXWVwVvqosy8IzPfRfPW+6eBiyJi\nI57bWw3NW+cvaXn8Ypq3eZcC9wGtYzkn0vQSr7a7tsdnA7fRvAW/KfC3NH8g11g239yycbn9rI9F\n7qMJar31fUEf9e3d1lOZ+YnM3Al4HXAg8J7e2f1VYZAqtu57Y5phKffS9ApDE1R7vXAI213tOSrP\n5VY0Pc5D1dfzfe/z2A6lJ/IcYK+IGI5wcQ9wWus/mJn5gsw8v+zvm5n5epr6J825DcN4TEN0KTAp\nIqbTBPBvtsz7Jk3v93aZuRnNOP7210Gfz3s049P/i2Zo1+TyT84P+li/P4OdT0P1EZre49eU1/Qb\ne6sKkJk/ysw/oHk34Dbgy6X8/sw8JjNfRDO066zo/Gv62o/hHuDP2s6NiZl5dfkn/KM0vddblPZ6\nmM7aa7VrBs2502qg57Gvdv5UKZ9W2uqIDushdZXBW+qiiDgiIiZl5tPAQ6X4aZqxv0/TjOPsdT7w\nVxGxfQmLnwIuLL1pFwF/GBGvKx+0OoXB/4hsQjPm89HS8/WB4TquDlwEHBgRry/1PZV+rjcRsW9E\nTIvme5NX0Lwt3jssZSmrt1Gn3t6y738ArsnMe8pbzkuAIyJiXOn5e2nLekuBKdH/h0rPB46OiOkl\nlH0KuDaboTxDdT7w9xExqYTlk2l65Yas1OXdNL3C/b2zMBRfBt5fehkjIjYqH27bJCJeERFvLvt8\ngqZHtvf5GrZjGorMfIpmvPM/0fyTdWnL7E2AX2fmExGxJ02PeKc2oBkqsQxYGc0HOt86hPWf7/nb\nn01o2vuhiNgS+HjvjNLDe1D5Z/BJmiEvT5d574xnP4T5G5pA2jvvyrYPKg7mi8BJEbFzWX+ziHhn\nS/1W0rTX+Ig4mWbseidm03wofKfyj/rH2+YP9Dz2dT3dhKYNHo6IbYG/6fgIpS4yeEvdNRNYEBGP\n0nzIb1Y2469/SzM+8+flLdu9gK/SDLv4KXAXTaj5IEAZq/lB4AKanqFHaT789uQA+/5rmj9Oj9AE\nqY6+yWA4lPoeT9NLdR/NH/vF/Sz+QpqgvoLmA6BX0bQDNG12SDTfnnDmEKrwTZo/3L+m+bDmES3z\njqH5I7yc5sNsV7fMu5zmK/zuj4gH+ziun9CMV/+vclwvBWYNoV6tPgn0ADcB84EbStlQPFTOraU0\nXyf4R5m5xr2smdlD006fp3nuFtJ80A6aIHo6zYdM76d5N+ekMm84jun5+ibwFuBbbUM/jgNOjYhH\naP4RmN3pBss46r8o6/yG5vU0Zwh1+g+asfAPRcR3h7Bef86g+YDjgzQfYv1hy7z1gA/TvMPwa5rx\nzL3/bO8BXFvOlTnAX+az33u/Hc0wpY5k5ndo3uG4oAzhuBnYv8z+UanT/9IMFXmCwYeF9W73knJ8\nl9Ocb+3f5tPv89jP9fQTNB+CfhiYS/NhdWnExTBcoyVVVnrEH6IZRnLXSNdH0uhTesFnZ+brRrou\n0rrC4C2NEhHxhzRfMxbAP9N81dtuw9HDKUmSus+hJtLocRDN28j3AjvQDFsxdEuSNErY4y1JkiRV\nYI+3JEmSVIHBW5IkSapg/EhXoFu23nrrnDp16khXQ5IkSWPY9ddf/2BmTupk2TEbvKdOnUpPT89I\nV0OSJEljWETc3emyDjWRJEmSKjB4S5IkSRUYvCVJkqQKxuwYb0mSpLXNU089xeLFi3niiSdGuioa\nogkTJjBlyhTWX3/9570Ng7ckSVIlixcvZpNNNmHq1KlExEhXRx3KTJYvX87ixYvZfvvtn/d2HGoi\nSZJUyRNPPMFWW21l6B5lIoKtttpqjd+pMHhLkiRVZOgenYbjeTN4S5IkSRU4xluSJGmETD1x7rBu\nb9HpBwy6zOte9zquvvrqYd1vu5NPPpk3vvGNvOUtbxnyuvPmzePee+/l7W9/exdqNrIM3pIkSeuQ\nbofuVatWceqppz7v9efNm0dPT8+YDN4ONZEkSVqHbLzxxgBceeWV7LPPPhxyyCHsuOOOHH744WQm\nP/zhD3nnO9/5zPJXXnklBx54IAAf+MAHmDFjBjvvvDMf//jHn1lm6tSpnHDCCey2225861vf4qij\njuKiiy4C4NRTT2WPPfZgl1124dhjjyUzAdhnn3044YQT2HPPPXn5y1/Oz372M373u99x8sknc+GF\nFzJ9+nQuvPDCPo/hlFNO4cgjj+QNb3gDL3nJS/j2t7/NRz/6UaZNm8bMmTN56qmnBtz3mWeeyU47\n7cSrXvUqZs2aBcBVV13F9OnTmT59OrvuuiuPPPLIcDY7YPCWJElaZ914442cccYZ3HLLLdx55538\n/Oc/5y1veQvXXnstjz32GAAXXnjhM+H0tNNOo6enh5tuuomrrrqKm2666ZltbbXVVtxwww3PLNvr\nz//8z/nlL3/JzTffzOOPP87FF1/8zLyVK1dy3XXXccYZZ/CJT3yCDTbYgFNPPZXDDjuMefPmcdhh\nh/Vb91/96ldcfvnlzJkzhyOOOIJ9992X+fPnM3HiRObOnTvgvk8//XRuvPFGbrrpJr74xS8C8NnP\nfpYvfOELzJs3j5/97GdMnDhxGFp4dQZvSZKkddSee+7JlClTWG+99Zg+fTqLFi1i/PjxzJw5k+9/\n//usXLmSuXPnctBBBwEwe/ZsdtttN3bddVcWLFjALbfc8sy2+gvJV1xxBa95zWuYNm0al19+OQsW\nLHhm3jve8Q4Adt99dxYtWjSkuu+///6sv/76TJs2jVWrVjFz5kwApk2b9sy2+tv3q171Kg4//HDO\nO+88xo9vRl7vvffefPjDH+bMM8/koYceeqZ8OBm8JUmS1lEbbrjhM9Pjxo1j5cqVAMyaNYvZs2dz\n+eWXM2PGDDbZZBPuuusuPvvZz3LZZZdx0003ccABB6z2vdYbbbTRc7b/xBNPcNxxx3HRRRcxf/58\njjnmmNXW6d1/676HWvf11luP9ddf/5mv+1tvvfVYuXLlgPueO3cuxx9/PDfccAN77LEHK1eu5MQT\nT+QrX/kKjz/+OHvvvTe33XbbkOrTCYO3JEmSVvOmN72JG264gS9/+cvPDB1ZsWIFG220EZttthlL\nly7lkksuGXQ7vUF366235tFHH31m3PdANtlkk2EZX93fvp9++mnuuece9t13Xz796U/z8MMP8+ij\nj/KrX/2KadOmccIJJ7DHHnt0JXj7rSaSJEkjpJOv/xsJ48aN48ADD+Scc87h3HPPBeDVr341u+66\nKzvuuCPbbbcde++996Db2XzzzTnmmGPYZZddeOELX8gee+wx6Dr77rsvp59+OtOnT+ekk04acJz3\n89n3qlWrOOKII3j44YfJTP7iL/6CzTffnI997GNcccUVrLfeeuy8887sv//+z2u/A4neT3eONTNm\nzMienp6RroYkSdIzbr31Vl75yleOdDX0PPX1/EXE9Zk5o5P1HWoiSZIkVeBQE0mSJK2Vvva1r/G5\nz31utbK9996bL3zhCyNUozVj8JYkaRj19xPga+tYXmltdvTRR3P00UePdDWGjUNNJEmSKhqrn68b\n64bjeTN4S5IkVTJhwgSWL19u+B5lMpPly5czYcKENdqOQ00kSZIqmTJlCosXL2bZsmUjXRUN0YQJ\nE5gyZcoabcPgLUmSVMn666/P9ttvP9LV0AhxqIkkSZJUQVeDd0RsHhEXRcRtEXFrRLw2IraMiEsj\n4o5yv0XL8idFxMKIuD0i3tZSvntEzC/zzoyI6Ga9JUmSpOHW7R7vzwE/zMwdgVcDtwInApdl5g7A\nZeUxEbETMAvYGZgJnBUR48p2zgaOAXYot5ldrrckSZI0rLoWvCNiM+CNwH8AZObvMvMh4CDg3LLY\nucDBZfog4ILMfDIz7wIWAntGxDbAppl5TTYfAf56yzqSJEnSqNDNHu/tgWXA1yLixoj4SkRsBEzO\nzPvKMvcDk8v0tsA9LesvLmXblun2ckmSJGnU6GbwHg/sBpydmbsCj1GGlfQqPdjD9kWWEXFsRPRE\nRI9f0yNJkqS1STeD92JgcWZeWx5fRBPEl5bhI5T7B8r8JcB2LetPKWVLynR7+XNk5pcyc0Zmzpg0\nadKwHYgkSZK0proWvDPzfuCeiHhFKdoPuAWYAxxZyo4Evlem5wCzImLDiNie5kOU15VhKSsiYq/y\nbSbvaVlHkiRJGhW6/QM6HwS+EREbAHcCR9OE/dkR8T7gbuBQgMxcEBGzacL5SuD4zFxVtnMccA4w\nEbik3CRJkqRRo6vBOzPnATP6mLVfP8ufBpzWR3kPsMvw1k6SJEmqx1+ulCRJkioweEuSJEkVGLwl\nSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmS\npAoM3pIkSVIFBm9JkiSpAoO3JEmSVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQK\nDN6SJElSBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgze\nkiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIk\nSVIFBm9JkiSpgvEjXQFJktYFU0+c22f5otMPqFwTSSPFHm9JkiSpAoO3JEmSVIHBW5IkSarA4C1J\nkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIk\nVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg\n8JYkSZIq6GrwjohFETE/IuZFRE8p2zIiLo2IO8r9Fi3LnxQRCyPi9oh4W0v57mU7CyPizIiIbtZb\nkiRJGm41erz3zczpmTmjPD4RuCwzdwAuK4+JiJ2AWcDOwEzgrIgYV9Y5GzgG2KHcZlaotyRJkjRs\nRmKoyUHAuWX6XODglvILMvPJzLwLWAjsGRHbAJtm5jWZmcDXW9aRJEmSRoVuB+8EfhIR10fEsaVs\ncmbeV6bvByaX6W2Be1rWXVzKti3T7eXPERHHRkRPRPQsW7ZsuI5BkiRJWmPju7z912fmkoj4PeDS\niLitdWZmZkTkcO0sM78EfAlgxowZw7ZdSZIkaU11tcc7M5eU+weA7wB7AkvL8BHK/QNl8SXAdi2r\nTyllS8p0e7kkSZI0anQteEfERhGxSe808FbgZmAOcGRZ7Ejge2V6DjArIjaMiO1pPkR5XRmWsiIi\n9irfZvKelnUkSZKkUaGbQ00mA98p3/w3HvhmZv4wIn4JzI6I9wF3A4cCZOaCiJgN3AKsBI7PzFVl\nW8cB5wATgUvKTZIkSRo1uha8M/NO4NV9lC8H9utnndOA0/oo7wF2Ge46SpIkSbX4y5WSJElSBQZv\nSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mS\nJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9JkiSp\nAoO3JEmSVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKD\ntyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ck\nSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9JkiSpAoO3JEmS\nVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSB\nwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKmCrgfviBgXETdG\nxMXl8ZYRcWlE3FHut2hZ9qSIWBgRt0fE21rKd4+I+WXemRER3a63JEmSNJxq9Hj/JXBry+MTgcsy\ncwfgsvKYiNgJmAXsDMwEzoqIcWWds4FjgB3KbWaFekuSJEnDpqvBOyKmAAcAX2kpPgg4t0yfCxzc\nUn5BZj6ZmXcBC4E9I2IbYNPMvCYzE/h6yzqSJEnSqNDtHu8zgI8CT7eUTc7M+8r0/cDkMr0tcE/L\ncotL2bZlur1ckiRJGjW6Frwj4kDggcy8vr9lSg92DuM+j42InojoWbZs2XBtVpIkSVpj3ezx3hv4\no4hYBFwAvDkizgOWluEjlPsHyvJLgO1a1p9SypaU6fby58jML2XmjMycMWnSpOE8FkmSJGmNdC14\nZ+ZJmTklM6fSfGjy8sw8ApgDHFkWOxL4XpmeA8yKiA0jYnuaD1FeV4alrIiIvcq3mbynZR1JkiRp\nVBg/Avs8HZgdEe8D7gYOBcjMBRExG7gFWAkcn5mryjrHAecAE4FLyk2SJEkaNaoE78y8EriyTC8H\n9utnudOA0/oo7wF26V4NJUmSpO7ylyslSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDg\nLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9JkiSpAoO3JEmSVIHBW5IkSarA4C1J\nkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIk\nVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg\n8JYkSZIqMHhLkiRJFRi8JUmSpAo6Ct4RsXcnZZIkSZL61mmP9791WCZJkiSpD+MHmhkRrwVeB0yK\niA+3zNoUGNfNikmSJEljyYDBG9gA2Lgst0lL+QrgkG5VSpIkSRprBgzemXkVcFVEnJOZd1eqkyRJ\nkjTmDNbj3WvDiPgSMLV1ncx8czcqJUmSJI01nQbvbwFfBL4CrOpedSRJkqSxqdPgvTIzz+5qTSRJ\nkqQxrNOvE/x+RBwXEdtExJa9t67WTJIkSRpDOu3xPrLc/01LWQK/P7zVkSRJksamjoJ3Zm7f7YpI\nkiRJY1lHwTsi3tNXeWZ+fXirI0mSJI1NnQ412aNlegKwH3ADYPCWJEmSOtDpUJMPtj6OiM2BC7pS\nI0mSJGkM6vRbTdo9BjjuW5IkSepQp2O8v0/zLSYA44BXArO7VSlJkiRprOl0jPdnW6ZXAndn5uIu\n1EeSJEkakzoaapKZVwG3AZsAWwC/62alJEmSpLGmo+AdEYcC1wHvBA4Fro2IQ7pZMUmSJGks6XSo\nyd8Be2TmAwARMQn4CXBRtyomSZIkjSWdfqvJer2hu1g+hHUlSZKkdV6nPd4/jIgfAeeXx4cBP+hO\nlSRJkqSxZ8DgHREvAyZn5t9ExDuA15dZvwC+0e3KSZIkSWPFYD3eZwAnAWTmt4FvA0TEtDLvD7ta\nO0mSJGmMGGyc9uTMnN9eWMqmdqVGkiRJ0hg0WPDefIB5EwdaMSImRMR1EfE/EbEgIj5RyreMiEsj\n4o5yv0XLOidFxMKIuD0i3tZSvntEzC/zzoyI6OTgJEmSpLXFYMG7JyKOaS+MiD8Frh9k3SeBN2fm\nq4HpwMyI2As4EbgsM3cALiuPiYidgFnAzsBM4KyIGFe2dTZwDLBDuc3s4NgkSZKktcZgY7w/BHwn\nIg7n2aA9A9gA+OOBVszMBB4tD9cvtwQOAvYp5ecCVwInlPILMvNJ4K6IWAjsGRGLgE0z8xqAiPg6\ncDBwSUdHKEmSJK0FBgzembkUeF1E7AvsUornZublnWy89FhfD7wM+EJmXhsRkzPzvrLI/cDkMr0t\ncE3L6otL2VNlur1ckiRJGjU6+h7vzLwCuGKoG8/MVcD0iNicpud8l7b5GRE51O32JyKOBY4FePGL\nXzxcm5UkSZLWWJVfn8zMh2iC+0xgaURsA1Due38RcwmwXctqU0rZkjLdXt7Xfr6UmTMyc8akSZOG\n9yAkSZKDm33ZAAAUvElEQVSkNdC14B0Rk0pPNxExEfgD4DZgDnBkWexI4Htleg4wKyI2jIjtaT5E\neV0ZlrIiIvYq32bynpZ1JEmSpFGh05+Mfz62Ac4t47zXA2Zn5sUR8QtgdkS8D7gbOBQgMxdExGzg\nFmAlcHwZqgJwHHAOzVcYXoIfrJQkSdIo07XgnZk3Abv2Ub4c2K+fdU4DTuujvIdnP9wpSZIkjTpV\nxnhLkiRJ6zqDtyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUG\nb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9J\nkiSpAoO3JEmSVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIk\nqQKDtyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkC\ng7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFYwf6QpIkjQaTT1x7khXQdIoY4+3JEmS\nVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSB\nwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFb\nkiRJqsDgLUmSJFXQteAdEdtFxBURcUtELIiIvyzlW0bEpRFxR7nfomWdkyJiYUTcHhFvaynfPSLm\nl3lnRkR0q96SJElSN3Szx3sl8JHM3AnYCzg+InYCTgQuy8wdgMvKY8q8WcDOwEzgrIgYV7Z1NnAM\nsEO5zexivSVJkqRh17XgnZn3ZeYNZfoR4FZgW+Ag4Nyy2LnAwWX6IOCCzHwyM+8CFgJ7RsQ2wKaZ\neU1mJvD1lnUkSZKkUaHKGO+ImArsClwLTM7M+8qs+4HJZXpb4J6W1RaXsm3LdHu5JEmSNGp0PXhH\nxMbAfwEfyswVrfNKD3YO476OjYieiOhZtmzZcG1WkiRJWmNdDd4RsT5N6P5GZn67FC8tw0co9w+U\n8iXAdi2rTyllS8p0e/lzZOaXMnNGZs6YNGnS8B2IJEmStIa6+a0mAfwHcGtm/kvLrDnAkWX6SOB7\nLeWzImLDiNie5kOU15VhKSsiYq+yzfe0rCNJkiSNCuO7uO29gXcD8yNiXin7W+B0YHZEvA+4GzgU\nIDMXRMRs4Baab0Q5PjNXlfWOA84BJgKXlJskSZI0anQteGfmfwP9fd/2fv2scxpwWh/lPcAuw1c7\nSZIkqS5/uVKSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ck\nSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9JkiSpAoO3JEmS\nVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSB\nwVuSJEmqwOAtSZIkVWDwliRJkioYP9IVkCRpXTb1xLl9li86/YDKNZHUbfZ4S5IkSRUYvCVJkqQK\nDN6SJElSBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIkVWDwliRJkioweEuSJEkVGLwlSZKkCgze\nkiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIk\nSVIFBm9JkiSpAoO3JEmSVIHBW5IkSarA4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElS\nBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAtSZIkVdC14B0RX42IByLi5payLSPi0oi4o9xv0TLvpIhY\nGBG3R8TbWsp3j4j5Zd6ZERHdqrMkSZLULd3s8T4HmNlWdiJwWWbuAFxWHhMROwGzgJ3LOmdFxLiy\nztnAMcAO5da+TUmSJGmt17XgnZk/BX7dVnwQcG6ZPhc4uKX8gsx8MjPvAhYCe0bENsCmmXlNZibw\n9ZZ1JEmSpFGj9hjvyZl5X5m+H5hcprcF7mlZbnEp27ZMt5dLkiRJo8qIfbiy9GDncG4zIo6NiJ6I\n6Fm2bNlwblqSJElaI7WD99IyfIRy/0ApXwJs17LclFK2pEy3l/cpM7+UmTMyc8akSZOGteKSJEnS\nmqgdvOcAR5bpI4HvtZTPiogNI2J7mg9RXleGpayIiL3Kt5m8p2UdSZIkadQY360NR8T5wD7A1hGx\nGPg4cDowOyLeB9wNHAqQmQsiYjZwC7ASOD4zV5VNHUfzDSkTgUvKTZIkSRpVuha8M/Nd/czar5/l\nTwNO66O8B9hlGKsmSZIkVecvV0qSJEkVGLwlSZKkCgzekiRJUgUGb0mSJKkCg7ckSZJUgcFbkiRJ\nqsDgLUmSJFVg8JYkSZIqMHhLkiRJFRi8JUmSpAoM3pIkSVIFBm9JkiSpAoO3JEmSVIHBW5IkSarA\n4C1JkiRVYPCWJEmSKjB4S5IkSRUYvCVJkqQKDN6SJElSBQZvSZIkqQKDtyRJklSBwVuSJEmqwOAt\nSZIkVTB+pCsgSRobpp44t8/yRacfULkmw6u/45KkoTJ4S5K6aqwGckkaKoO3JGlEGMglrWsc4y1J\nkiRVYPCWJEmSKjB4S5IkSRU4xluStFZx7Lekscoeb0mSJKkCg7ckSZJUgcFbkiRJqsDgLUmSJFVg\n8JYkSZIq8FtNJEmjgt92Imm0s8dbkiRJqsDgLUmSJFVg8JYkSZIqcIy3JElrIce0S2OPPd6SJElS\nBQZvSZIkqQKDtyRJklSBY7wlSaOaY6EljRb2eEuSJEkV2OMtSRL995xL0nCxx1uSJEmqwOAtSZIk\nVWDwliRJkipwjLckaUzy204krW0M3pKkdYofopQ0UgzekiSNIvbkS6OXY7wlSZKkCgzekiRJUgUO\nNZEkaQwY6th1h6ZI9Rm8JUlaB42WD5l2+x+E4fqHpcbY+27vw88PdJ/BW5IkrbW6HYzXRkOta7ff\n7RhqIDfA9y8yc6Tr0BUzZszInp6eka6GJK0zRlOwkTT2jFSwj4jrM3NGJ8uOmg9XRsTMiLg9IhZG\nxIkjXR9JkiRpKEZF8I6IccAXgP2BnYB3RcROI1srSZIkqXOjIngDewILM/POzPwdcAFw0AjXSZIk\nSerYaAne2wL3tDxeXMokSZKkUWFMfatJRBwLHFsePhoRt49ANbYGHhyB/Y5WttfQ2F5DY3sNnW02\nNLbX0NheQ2N7DUF8esTa6yWdLjhagvcSYLuWx1NK2Woy80vAl2pVqi8R0dPpJ1tlew2V7TU0ttfQ\n2WZDY3sNje01NLbX0IyG9hotQ01+CewQEdtHxAbALGDOCNdJkiRJ6tio6PHOzJUR8efAj4BxwFcz\nc8EIV0uSJEnq2KgI3gCZ+QPgByNdjw6M6FCXUcj2Ghrba2hsr6GzzYbG9hoa22tobK+hWevba8z+\ncqUkSZK0NhktY7wlSZKkUc3g3aGIGBcRN0bExeXxlhFxaUTcUe63aFn2pPLT9rdHxNtaynePiPll\n3pkRESNxLDX00V7/FBG3RcRNEfGdiNi8lE+NiMcjYl65fbFlG+tye50SEUta2uXtLct6fj23vS5s\naatFETGvlHt+AaVN5pc26CllXsP60U97eQ3rRz/t5TWsH/20l9ewfkTE5hFxUXn93RoRrx3V16/M\n9NbBDfgw8E3g4vL4M8CJZfpE4NNleifgf4ANge2BXwHjyrzrgL2AAC4B9h/p46rYXm8FxpfpT7e0\n11Tg5n62sS631ynAX/exnOdXH+3VNu+fgZM9v1Y71kXA1m1lXsOG1l5ew4bWXl7DhtBebfO9hq1+\nnOcCf1qmNwA2H83XL3u8OxARU4ADgK+0FB9EczJQ7g9uKb8gM5/MzLuAhcCeEbENsGlmXpPNGfD1\nlnXGlL7aKzN/nJkry8NraL6LfaBtrNPtNQDPrwHaq/RgHAqcP8g21pn2GoDXsCHwGjZsPL8G4DVs\ndRGxGfBG4D8AMvN3mfkQo/j6ZfDuzBnAR4GnW8omZ+Z9Zfp+YHKZ7u/n7bct0+3lY1Ff7dXqvTT/\nbfbavryFdlVEvKGU2V7wwfK29ldb3kbz/Br4/HoDsDQz72gpW9fPL4AEfhIR10fzC7/gNWwgfbVX\nK69hq+uvvbyG9W2g88tr2Oq2B5YBX4tmeOFXImIjRvH1y+A9iIg4EHggM6/vb5ny35NfD8Pg7RUR\nfwesBL5Riu4DXpyZ0ynDByJi0yqVXQsM0F5nA78PTKdpo3+uXbe1UQevx3exek/ROn1+tXh9aYP9\ngeMj4o2tM72GPUe/7eU1rE99tZfXsP4N9Hr0Gra68cBuwNmZuSvwGM3QkmeMtuuXwXtwewN/FBGL\ngAuAN0fEecDS8tZF71s+D5Tl+/t5+yWs/tZknz97Pwb0115ExFHAgcDh5YVCeTtoeZm+nmY81stZ\nx9srM5dm5qrMfBr4MrBnWd7zq//zazzwDuDC3oU9vxqZuaTcPwB8h+Z88hrWj37ay2tYP/pqL69h\n/Rvg/PIa9lyLgcWZeW15fBFNEB+916+RGFg+Wm/APjz74bd/YvWB/Z8p0zuz+sD+O+l/YP/bR/qY\nKrbXTOAWYFLbMpNa2uf3aV4IW9pebNNS/lc0Y9Y8v/ppr5Zz7CrPr+e000bAJi3TV5e28ho2tPby\nGja09vIaNoT2Ko+9hvXdZj8DXlGmTynXrlF7/Ro1v1y5FjodmB0R7wPupvkwBJm5ICJm01ygVwLH\nZ+aqss5xwDnARJon/ZL2jY5hn6d5IVxavsHnmsx8P82HJk6NiKdoxuy+PzN/XdZZl9vrMxExnebt\ns0XAn4Hn1yBm8dwPJHl+NWMfv1Ned+OBb2bmDyPil3gN60t/7bUQr2F96a+9/tNrWJ/6bK8yz2tY\n3z4IfCMiNqAJ0kfTjNgYldcvf7lSkiRJqsAx3pIkSVIFBm9JkiSpAoO3JEmSVIHBW5IkSarA4C1J\nkiRVYPCWJEmSKjB4SxpzImJqRNw80vVYUxHxRxFx4uBLrvF+rl6DdY+KiBcNZ32GS0QcHBEnl+lT\nIiIj4mUt8z9UymYMsI2PR8Q/tpVNj4hby/RPImKLbh2DpLHF4C1Ja6nMnJOZp3dr++UnqsnM163B\nZo4C1srgDXwUOKvl8XyaHynp9U5gwSDbOB84rK2s9YdO/pPmhzkkaVAGb0lj1fiI+EZE3BoRF0XE\nC/pbMCIWRcQ/RsS8iOiJiN0i4kcR8auIeH/Lcn8TEb+MiJsi4hOlbKOImBsR/xMRN0fEYaV8v4i4\nMSLmR8RXI2LDln19IiJuKPN2HKBeR0XE58v0ORFxZkRcHRF3RsQhpfyCiDigZZ1zIuKQ0uv/s7Kf\nGyLidWX+PqV8Ds2vuxERj5b7jSPispa6HVTKp5Z2/HJELIiIH0fExFKHGTS/KjcvIiY+3/YdYN/9\nte/pEXFLeS4+28c+Xw48mZkPthR/F+jd7kuBh4EHW9Z5a0T8otThWxGxcWb+L/CbiHhNy3YO5dng\nPQd4V3/PoSS1MnhLGqteAZyVma8EVjB4r+T/ZeZ04Gc0Pyt8CLAX0Buw3wrsAOwJTAd2j4g3AjOB\nezPz1Zm5C/DDiJhQtnFYZk6j+WnoD7Ts68HM3A04G/jrIRzTNsDrgQOB3p7wCyk/l1x+Unk/YC7w\nAPAHZT+HAWe2bGc34C8z8+Vt238C+OOyzr7AP0f5bety7F/IzJ2Bh4A/ycyLgB7g8MycnpmPD1D3\nAdt3gH331b5bAX8M7JyZrwI+2cf+9gZuaCtbAdwTEbvQ9Fpf2DsjIrYG/h54S6lDD/DhMvv8sjwR\nsRfw68y8AyAzfwNsWOokSQMyeEsaq+7JzJ+X6fNoAutA5pT7+cC1mflIZi4DnoyIzYG3ltuNNIFu\nR5owOh/4g4j4dES8ITMfpgn9d5XeUoBzgTe27Ovb5f56YOoQjum7mfl0Zt4CTC5llwD7lh71/YGf\nlgC8PvDliJgPfAvYqWU712XmXX1sP4BPRcRNwE+AbVv2c1dmznue9YbB27e/fffVvg/TBPX/iIh3\nAL/tY3/bAMv6KL+AJkQfDHynpXwvmjb6eUTMA44EXlLmXQgcEhHrsfowk14PsPYOt5G0Fhk/0hWQ\npC7JQR63e7LcP90y3ft4PE0w/MfM/Pf2FSNiN+DtwCcj4jLgex3uaxVDuw631isAMvOJiLgSeBtN\nz/YFZf5fAUuBV9N0sjzRsu5j/Wz/cGASsHtmPhURi4AJfex7FdDnsJIO6t5f+/a578z83/b2zcxT\nI2JPmt79Q4A/B97ctr/Hgc36qMfFwD8BPZm54tkOfQK4NDOfM2wkM++JiLuANwF/Ary2bZEJZX+S\nNCB7vCWNVS+OiN6A9P+A/17D7f0IeG9EbAwQEdtGxO9F840ev83M82gC3W7A7cDUePYbNN4NXLWG\n+x/IhcDRwBuAH5ayzYD7MvPpsv9xHWxnM+CBEnz35dke34E8Amwy9Cp3tu++2rc8B5tl5g9o/sF4\ndR/buxV4WXthZv4WOAE4rW3WNcDevc9ZGVveOhTnfOBfgTszc3FvYRkO80Jg0dAPWdK6xh5vSWPV\n7cDxEfFVmg8Rnr0mG8vMH0fEK4FflF7SR4EjaMLdP0XE08BTwAdKL/TRwLei+eaQXwJfXJP9D+LH\nNN+u8b3M/F0pOwv4r4h4D00Y76+Xu9U3gO+X4Sk9wG0drHMO8MWIeBx47SDjvJ/PvqfR1r40Qf97\nZSx98OxY7FY/pYwTz8zV3u3IzAvaF87MZRFxFHB+GbYDzZjv3uFC36IZJ//BtlV3B67JzJVDOVhJ\n66Zoux5JkjQmRMTngO9n5k+6vI85mXlZt/YhaexwqIkkaaz6FNDv10gOk5sN3ZI6ZY+3pHVGRHwH\n2L6t+ITM/NFI1KdXGZbyl23FP8/M40eiPs/X2tq+krS2MHhLkiRJFTjURJIkSarA4C1JkiRVYPCW\nJEmSKjB4S5IkSRUYvCVJkqQK/j/uPKPpdH2b0wAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# draw a histogram for the B meson mass in the real data\n", "\n", "b_meson_invariant_mass_withcuts.toPandas().plot.hist(bins=101, range=[4000, 6000],\n", "title=\"Histogram - distribution of B meson invariant mass, real data\") \n", "xlabel('b_meson_invariant_mass (MeV)')\n", "ylabel('Count');\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Additional exercise: Experiment with the cuts and see the impact of harsher or more lenient cuts on the invariant mass plot.\n", "You should select a set of cuts which makes the signal most prominent with respect to the background.\n", "Once you have finalised the selection on particle identification also make cuts on the reconstructed particle mass to select the events in the B meson mass peak, removing the background events which lie at lower and higher invariant masses. " ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Searching for global matter anti-matter differences\n", "\n", "In this section you will start to study matter antimatter differences (CP Violation). Here 'global' means that you are looking for differences across all ranges of energy and momentum (the kinematics) of the kaons into which the charge B mesons have decayed. Later we look at 'local' differences in different regions of the kinematics. \n", "\n", "## Aims:\n", "* Calculate the global CP asymmetry \n", "* Work out the statistical uncertainty\n", "* Determine if there is evidence for CP violation in this decay" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "hidden": true }, "source": [ "In order to quantify the matter antimatter asymmetry in this process we wish to compare the B+ and the B- particles. The B- is the anti-particle of the B+.\n", "\n", "How can you distinguish between events that contain B+ and B- particles using `H1_Charge`, `H2_Charge` and `H3_Charge`?" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# make a variable for the charge of the B mesons\n", "\n", "B_charge_df = B2HHH_AllData_WithCuts_df.selectExpr(\"H1_charge + H2_charge + H3_charge as B_Charge\")" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "Now count the numbers of events of each of the two types (N+ and N-). Also calculate the difference between these two numbers." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+--------+-----+\n", "|B_Charge|count|\n", "+--------+-----+\n", "| -1|11505|\n", "| 1|12390|\n", "+--------+-----+\n", "\n" ] } ], "source": [ "# make variables for the numbers of positive and negative B mesons\n", "\n", "# I am using the declarative API of Spark SQl for this. If you want to use SQL you can do the following:\n", "# B_charge_df.createOrReplaceTempView(\"B_charge_table\")\n", "# sql(\"select B_Charge, count(*) from B_charge_table group by B_Charge\").show(5)\n", "\n", "B_charge_df.groupBy(\"B_Charge\").count().show()\n" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "In order to calculate the Asymmetry, you can make use of the formula:\n", "(note you may need to run this box in order to see the image)\n", "" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "-0.037037037037037035" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the value of the asymmetry, by using the formula above, and then print it\n", "\n", "N_plus = 12390.0\n", "N_minus = 11505.0\n", "A = (N_minus - N_plus) / (N_minus + N_plus)\n", "A" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "### Hint" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Differentiating between N+ and N-**\n", "\n", " - Charge is a conserved quantity. The charge of the $B$ meson is equal to the sum of the charges of the particles into which it decays.\n", " - You can use ` len(real_data.query('B_Charge == charge'))` to count the number of mesons, where `B_Charge` is the variable you created and `charge` is `1` or `-1`.\n", " - You can find an example of this at the end of the example notebook." ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "### Estimating the significance of the deviation\n", "\n", "You will now need to calculate the statistical uncertainty of the asymmetry. You can do so using the formula: \n", "\n", "The significance of the result, sigma, is found by dividing the value for asymmetry by its uncertainty. A value exceeding three sigma is considered \"evidence\" by particle physicists while a value of five sigma or more can be called an \"observation\" or \"discovery\"." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/plain": [ "0.0064647004792617382" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the statistical significance of your result and print it\n", "\n", "sqrt((1 - A*A)/(N_minus + N_plus))" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Congratulations!** You have performed your first search for a matter anti-matter difference.\n", "\n", "Here you have only considered the statistical uncertainty. Your measurement will also have other sources of uncertainty known as systematic uncertainties which you have not considered at this stage.\n" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Dalitz plots and two body resonances\n", "## Aims:\n", "* Produce Dalitz plots of the simulation and real data sample\n", "* Create ordered and binned dalitz plots.\n", "* Identify two body resonances in the Dalitz plots" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "In this stage we introduce you to an important technique for analysing decays of one particle (your charged B meson) into three bodies (the three kaons). This is known as a Dalitz plot. \n", "\n", "The decay of the B meson can proceed either directly to the three-body final state or via an intermediate particle. For example, B+ → K+K+K, could proceed through the decay B+ → K+R0, where R0 is a neutral particle resonance which can decay R0 → K+K-. Dalitz plots can be used to identify these resonances which are visible as bands on the Dalitz plot.\n", "\n", "More information about these plots and why these are used in particle physics research can be found in [Dalitz Plot Introduction](https://github.com/lhcb/opendata-project/tree/master/Background-Information-Notebooks/DalitzPlots.ipynb).\n", "\n", "The kinematics of a three-body decay can be fully described using only two variables. The energies and momenta of the three kaons are not independent of each other as they all come from the decay of a B meson and energy and momentum are conserved. The axes of the plots conventionally are the squared invariant masses of two pairs of the decay products. It is a 2D plot, the x and y axes are both squared masses and the density of points in the plot shows the structure.\n", "\n", "Consider our decay B+ → K+1K+2K3, where we have numbered the kaons 1,2,3 to distinguish them. We can calculate the invariant mass of three possible combinations that could correspond to intermediate resonances R++1 → K+1K+2, R02 → K+1K-3, and R03 → K+2K-3. \n", "\n", "The potential R++1 would be a doubly charged resonance. We would not expect to see any resonances corresponding to this as mesons are composed of one quark and one anti-quark and their charges cannot add up to two units.\n", "\n", "The potential R02 and R03 correspond to configurations in which we could see resonances. Hence you should compute the invariant mass combinations for these. The square of these masses should be used as the Dalitz variables. \n", "\n", "We suggest you make these plots first for the simulation data. In the simulation there are no intermediate resonances and your plot should be of uniform density inside the range physically allowed by energy and momentum conservation.\n", "\t" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Energy_K1_K2P_K1_K2Energy_K1_K3P_K1_K3Energy_K2_K3P_K2_K3H1_ChargeH2_ChargeH3_Charge
059312.84823759211.18150937331.39155137308.53401275681.55442075585.380172-111
140065.66504140022.23217199009.41920798975.41111994344.92571094244.7710771-1-1
241944.81706441751.67274449387.24326449369.61478037724.52691837581.719924-111
3115729.095355115680.388609158532.678053158529.404702141485.642261141426.952947-111
453399.56978253304.21541372440.13264372359.081204108264.666058108244.5529041-1-1
\n", "
" ], "text/plain": [ " Energy_K1_K2 P_K1_K2 Energy_K1_K3 P_K1_K3 Energy_K2_K3 \\\n", "0 59312.848237 59211.181509 37331.391551 37308.534012 75681.554420 \n", "1 40065.665041 40022.232171 99009.419207 98975.411119 94344.925710 \n", "2 41944.817064 41751.672744 49387.243264 49369.614780 37724.526918 \n", "3 115729.095355 115680.388609 158532.678053 158529.404702 141485.642261 \n", "4 53399.569782 53304.215413 72440.132643 72359.081204 108264.666058 \n", "\n", " P_K2_K3 H1_Charge H2_Charge H3_Charge \n", "0 75585.380172 -1 1 1 \n", "1 94244.771077 1 -1 -1 \n", "2 37581.719924 -1 1 1 \n", "3 141426.952947 -1 1 1 \n", "4 108244.552904 1 -1 -1 " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the invariant masses for each possible hadron pair combination\n", "\n", "two_body_resonances_df = sql(\"\"\"\n", " select \n", " sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ) +\n", " sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) as Energy_K1_K2,\n", " sqrt((H1_PX + H2_PX)*(H1_PX + H2_PX) + (H1_PY + H2_PY)*(H1_PY + H2_PY) \n", " + (H1_PZ + H2_PZ)*(H1_PZ + H2_PZ)) as P_K1_K2,\n", " sqrt({0} + H1_PX*H1_PX + H1_PY*H1_PY + H1_PZ*H1_PZ) +\n", " sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) as Energy_K1_K3,\n", " sqrt((H1_PX + H3_PX)*(H1_PX + H3_PX) + (H1_PY + H3_PY)*(H1_PY + H3_PY) \n", " + (H1_PZ + H3_PZ)*(H1_PZ + H3_PZ)) as P_K1_K3,\n", " sqrt({0} + H2_PX*H2_PX + H2_PY*H2_PY + H2_PZ*H2_PZ) +\n", " sqrt({0} + H3_PX*H3_PX + H3_PY*H3_PY + H3_PZ*H3_PZ) as Energy_K2_K3,\n", " sqrt((H2_PX + H3_PX)*(H2_PX + H3_PX) + (H2_PY + H3_PY)*(H2_PY + H3_PY) \n", " + (H2_PZ + H3_PZ)*(H2_PZ + H3_PZ)) as P_K2_K3,\n", " H1_Charge, H2_Charge, H3_Charge\n", " from B2HHH_AllData_WithCuts\"\"\".format(kcharged_mass*kcharged_mass))\n", "\n", "two_body_resonances_df.limit(5).toPandas()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+------------------+------------------+------------------+---------+---------+---------+\n", "| Mass_K1_K2| Mass_K1_K3| Mass_K2_K3|H1_Charge|H2_Charge|H3_Charge|\n", "+------------------+------------------+------------------+---------+---------+---------+\n", "| 3.471303828587013| 1.306171891413032| 3.814181901855551| -1| 1| 1|\n", "|1.8650595784143182| 2.594818979058174| 4.346047856093062| 1| -1| -1|\n", "| 4.020634479824776| 1.319444470787454|3.2793686448023838| -1| 1| 1|\n", "|3.3572612179719226| 1.018751964103818| 4.074793973001933| -1| 1| 1|\n", "|3.1897761838303795|3.4258115164737077|2.0867877492976117| 1| -1| -1|\n", "+------------------+------------------+------------------+---------+---------+---------+\n", "only showing top 5 rows\n", "\n" ] } ], "source": [ "# Computes 2-body resonance invariant mass from two_body_resonances_df\n", "\n", "two_body_resonances_invariant_mass_GeV_df = two_body_resonances_df.selectExpr( \n", " \"sqrt(Energy_K1_K2*Energy_K1_K2 - P_K1_K2*P_K1_K2) / 1000.0 as Mass_K1_K2\", \n", " \"sqrt(Energy_K1_K3*Energy_K1_K3 - P_K1_K3*P_K1_K3) / 1000.0 as Mass_K1_K3\",\n", " \"sqrt(Energy_K2_K3*Energy_K2_K3 - P_K2_K3*P_K2_K3) / 1000.0 as Mass_K2_K3\",\n", " \"H1_Charge\", \"H2_Charge\", \"H3_Charge\") \n", "\n", "two_body_resonances_invariant_mass_GeV_df.show(5)\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "+-----------------------+--------+\n", "|(H2_Charge * H3_Charge)|count(1)|\n", "+-----------------------+--------+\n", "| 1| 23895|\n", "+-----------------------+--------+\n", "\n" ] } ], "source": [ "# Two_body_resonances_invariant_mass_GeV_df.filter(\"H1_Charge * H2_Charge = -1\").show()\n", "\n", "two_body_resonances_invariant_mass_GeV_df.createOrReplaceTempView(\"t1\")\n", "sql(\"select H2_Charge * H3_Charge, count(*) from t1 group by H2_Charge * H3_Charge\").show()" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "hidden": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAt4AAAHxCAYAAABahrshAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYZGV9t/H7yyIDsohAEBiTwQSiLII6sokGlQCCETRo\ncMX9TdyNStC4RUUhaqKGiDFiQFCWoCyKG4KKcWVAAsOmREAGEMZRFhFQ4Pf+cU5j0XT39Mx0PT3d\nc3+uq6+ues72q3OqT3/rqadOpaqQJEmSNFyrTXcBkiRJ0qrA4C1JkiQ1YPCWJEmSGjB4S5IkSQ0Y\nvCVJkqQGDN6SJElSAwZvrdSSXJJkj+muY2WT5Ooke/a335bkU1O47t8keUR/+5gk75vCdX8iyTum\nan3LsN2/S3Jj/9g2ar19TZ3B52fj7T4/yddbb3cmSfLEJFcMad3vTnL8Cizf5H/Jitap2c/grWkz\nGB4H2l6c5H9G7lfVtlX1raWsZ16SSrLGkEpdqVXV+6vq5UubL8m3kix1vqpat6p+tqJ1jT6W/br/\ntqreu6LrXsY61gT+Bdirf2xLRk2/3/MnnX9LcnmSLZJsluSMJNf3882b5Hbvt7+T7JHk10kOSvJH\nSU7o13lLku8m2XnqHvXsNVXPz+XY7meraq+pWNdY577ZoKq+U1V/Pt11jNVhMJn/Ja1NdceGZgaD\nt7QUq0qgn8WPc1NgDnDJ0mZMshrwH8AewF9U1XXAvcBXgb9e3gKS7AWcBrykqk4E1gXOAx4HPBQ4\nFjgzybqTXN9sPVYrJfe3pKli8NZKbdSQip2SLEhyaz9s4F/62c7tf9/cvw29a5LVkrw9yTVJbkry\nmSQbDKz3Rf20JUneMWo7705ySpLjk9wKvLjf9veT3JzkhiRHJnnQwPoqyauS/DTJbUnem+RPk3yv\nr/fkwfmXYz+8cKDefxw17b63NpPM6ete0td6XpJNkxwGPBE4st9HRw7U/eokPwV+OtD2ZwOb2DjJ\nWf3j+naSP+nne8A7DSO9vEkeBXwC2LXf3s399Pv18CR5RZIrk/yq71XefNQ+/dt+n96c5N+TZJz9\ns1aSj/Q9yNf3t9dKsjUw8tb3zUnOmWA3rw78FzAf2KOqbgSoqhur6uN0QXmZJXk6cDLwvKo6rV/n\nz6rqX6rqhqq6p6o+CTwIGLO3cJzn5GpJDk3yf/3xPjnJQ/v5x3we9NM27/f1r/p9/4pR2zm5/3u5\n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\n4LF8je4Skz+hG1pwJ0sfsjXoA3TB7+ZM8koiSzHR+Wn9vu3Xfa1LgA/2014IXN0Pg/hbuqtskOTh\n/bouHmd7Yy63IqrqFrqhhp+ie0F/O+Of5z7TP5br6D64/oNR048Gtun372mjF2YKzxd0+31nuvPj\nu/ralqvOKXheagYY+bS3tMrqe8Rvpnub9qrprkeSplOSFwDbVtVbp7sWabYxeGuV1Pdknk03xOTD\ndD0Wjy3/ICRJ0pA41ESrqv3p3mq/HtiKbtiKoVvLZGCIyOifZRkyIklaRdjjLUmSJDVgj7ckSZLU\ngMFbkiRJamBZvkVrRtl4441r3rx5012GJEmSZrHzzz//l1U13hc+3c+sDd7z5s1jwYIF012GJEmS\nZrEk10x2XoeaSJIkSQ0YvCVJkqQGDN6SJElSA7N2jLckSdJs8vvf/55FixZx5513Tncpq6Q5c+Yw\nd+5c1lxzzeVeh8FbkiRpBli0aBHrrbce8+bNI8l0l7NKqSqWLFnCokWL2HLLLZd7PQ41kSRJmgHu\nvPNONtpoI0P3NEjCRhtttMLvNhi8JUmSZghD9/SZin1v8JYkSZIacIy3JEnSDDTv0DOndH1XH77f\nUudJwvOf/3yOP/54AO6++24222wzdt55Z770pS9NaT2D9thjDz70oQ8xf/58rrrqKvbaay+OPPJI\n5s+fz4EHHsh5553Hi1/8Yo488sgJ1zPyBYsbb7wx559/PgceeCBf+MIXuPTSSzniiCOoKtZbbz2O\nOuoodthhhyl/HAZvSZIkTcqDH/xgFi5cyB133MHaa6/NWWedxRZbbNFs+4sWLWKfffbhwx/+MHvv\nvTe33347733ve1m4cCELFy6c9HouuugiDjzwQE466SQe85jHcMcdd/Dtb3+bDTfckK985Su88pWv\n5Ic//OGU1+9QE0mSJE3avvvuy5lndr3tJ5xwAs997nPvm/ajH/2IXXfdlcc85jHstttuXHHFFQBc\ncskl7LTTTuy44448+tGP5qc//Sm33347++23HzvssAPbbbcdJ5100oTbveGGG9hrr7047LDDeMYz\nngF0LwR233135syZM+n6L7vsMg444ACOO+44dtppJwB22203NtxwQwB22WUXFi1aNPkdsgwM3pIk\nSZq0gw46iBNPPJE777yTiy66iJ133vm+aY985CP5zne+w49//GPe85738La3vQ2AT3ziE7z+9a/n\nwgsvZMGCBcydO5evfvWrbL755vzv//4vCxcuZJ999plwuwcffDCvec1rOPDAA1eo/v33358jjzyS\n3XfffczpRx99NE972tNWaBvjMXhLkiRp0h796Edz9dVXc8IJJ7Dvvvveb9ott9zCs5/9bLbbbjve\n+MY3cskllwCw66678v73v58jjjiCa665hrXXXpvtt9+es846i3/4h3/gO9/5DhtssMGE291zzz05\n/vjj+e1vf7tC9e+555586lOf4p577nnAtG9+85scffTRHHHEESu0jfEYvCVJkrRMnvGMZ/DmN7/5\nfsNMAN7xjnfw5Cc/mYULF/LFL37xvuteP+95z+OMM85g7bXXZt999+Wcc85h66235oILLmD77bfn\n7W9/O+95z3sm3OYhhxzC4x//eJ797Gdz9913L3ftIx/AfNWrXnW/9osuuoiXv/zlnH766Wy00UbL\nvf6JGLwlSZK0TF760pfyrne9i+233/5+7bfccst9H7Y85phj7mv/2c9+xiMe8Qhe97rXsf/++3PR\nRRdx/fXXs8466/CCF7yAt7zlLVxwwQVL3e5HPvIR1l9/fV72spdRVctV+2qrrcbnPvc5Lr/8ct75\nzncC8POf/5xnPetZHHfccWy99dbLtd7J8KomkiRJM9BkLv83LHPnzuV1r3vdA9oPOeQQDj74YN73\nvvex335/qO/kk0/muOOOY8011+RhD3sYb3vb2zjvvPN4y1vewmqrrcaaa67JUUcdtdTtJuHYY4/l\n6U9/Oocccggf/OAHmTdvHrfeeiu/+93vOO200/j617/ONttsM+F65syZwxlnnMFf/MVfsOmmm/Lj\nH/+YJUuW3NcLvsYaa7BgwYJl3CtLl+V9tbCymz9/fg1jh0mSJE2Hyy67jEc96lHTXcYqbaxjkOT8\nqpo/meUdaiJJkiQ14FATSZIkrRSe+cxnctVVV92v7YgjjmDvvfdepvXsvPPO3HXXXfdrO+644x4w\nJr01g7dWyHhfVzud484kSdLMdOqpp07JeobxrZNTwaEmkiRJM8Rs/WzeTDAV+97gLUmSNAPMmTOH\nJUuWGL6nQVWxZMmSZfpq+rE41ESSJGkGmDt3LosWLWLx4sXTXcoqac6cOcydO3eF1mHwliRJmgHW\nXHNNttxyy+kuQyvAoSaSJElSAwZvSZIkqQGDtyRJktSAwVuSJElqwOAtSZIkNWDwliRJkhoweEuS\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot the invariant mass for one of these combinations\n", "\n", "two_body_resonances_invariant_mass_GeV_df.filter(\"H1_Charge + H2_Charge = 0\").select(\"Mass_K1_K2\") \\\n", " .toPandas().plot.hist(bins=101, range=[0, 10],\n", "title=\"Histogram - distribution of K1_K2 resonance invariant mass, simulation data\") \n", "xlabel('b_meson_invariant_mass (GeV)')\n", "ylabel('Count');\n" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "23895" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "two_body_resonances_invariant_mass_GeV_df.filter(\"H1_Charge * H3_Charge = -1\").count()" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [ { "data": { "image/png": "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\nhHUcymoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Make a Dalitz plot with labelled axes for the simulation data\n", "\n", "# This is achieved by plotting a scatter graph from Mass_12 squared vs. Mass_13 squared\n", "# As in the text of the exercise, add a filter on data that the possible resonance has charge 0\n", "\n", "dalitz_plot_df = two_body_resonances_invariant_mass_GeV_df \\\n", " .filter(\"H1_Charge + H2_Charge = 0\").filter(\"H1_Charge + H3_Charge = 0\") \\\n", " .selectExpr(\"Mass_K1_K2*Mass_K1_K2 as M12_squared\", \"Mass_K1_K3*Mass_K1_K3 as M13_squared\")\n", "\n", "dalitz_plot_df.toPandas().plot.scatter(x='M12_squared', y='M13_squared',\n", "title=\"Dalitz plot, B+/- meson decay into thre kaons, simulation data\")\n", "xlabel('Mass_K1_K2 squared (GeV^2)')\n", "ylabel('Mass_K1_K3 squared (GeV^2)');\n" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "### Hints" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Calculating invariant mass** - Use the same technique as you did above for the B meson, but now applying it to two-body invariant masses rather than three.\n", "\n", "**Plotting the Dalitz plot** - You can use a `scatter` plot from `matplotlib` to plot a Dalitz plot, see the [example analysis](https://github.com/lhcb/opendata-project/tree/master/Example-Analysis.ipynb). Remember to use the square of each two-body mass." ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "## Adding Dalitz plot for real data\n", "Now draw a Dalitz plot for the real data. Check that the signs of the charge of the hadrons are correct to correspond to your potential neutral resonances R02 and R03." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# calculate the invariant masses for each possible hadron pair combination in the real data" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# make a Dalitz plot for the real data (with your preselection cuts applied)" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "
While drawing the Dalitz plot for the real data, label the axes accordingly. Compare the Dalitz plots of the real data with the one for the simulation. \n", "What are the most striking differences? \n", "
" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "### Ordering Dalitz variables\n", "You can make a further improvement to allow you to observe the resonances easier. Your resonances R02 and R03 are both composed of the same particle types, K+K-, and hence have the same distributions. It is useful to impose an ordering which distinguishes the resonances. We can call the resonances R0Low and R0High. In each event R0Low is the resonance with the lower mass and the other corresponds to the higher mass combination of kaons. You can now use the mass of these ordered resonances as your Dalitz plot variables, thus effectively \"folding\" your Dalitz plot so that one axis always has a higher value than the other.\n" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# make a new Dalitz plot with a mass ordering of the axes" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "### Hint" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Ordered Dalitz plot** - You can find the maximum of the mass of R0Low vs R0High elementwise on one axis, and the minimum of on the other. You can use `numpy.min(a,b)` and `numpy.max(a,b)` to perform elementwise comparisons between two arrays `a` and `b` and return one array filled by either the individual min/max element from the elementwise comparisons." ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "### Binned Dalitz plot\n", "You can improve the representation of your Dalitz plot by binning the data. The hist2d function can be used to make a 2D histogram. The number of bins specification in the hist2d function is the number of bins in one axis." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# plot a binned Dalitz Plot\n", "# use colorbar() to make a legend for your plot at the side" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "## Two body resonances" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "You can now use your Dalitz plot to identify the intermediate resonances that you see in your plots. The resonances will have shown up as bands of higher density of points on the plots. You can use the [particle data group](http://pdg.lbl.gov/2015/tables/contents_tables.html) tables of mesons to identify which particles these correspond to. The tables give the masses and widths of the particles and their decay modes. You are looking for mesons with the masses corresponding to where you see the bands and that decay into K+K-.\n", "\n", "**Congratulations!** You have succesfully made a Dalitz plot and used it to observe the presence of intermediate particles in the decay of your charged B meson into three charged kaons. " ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Searching for local matter anti-matter differences\n", "## Aims:\n", "* Observe matter antimatter differences (CP violation) in regions of the Dalitz plots of the B+ and B- mesons.\n", "* For the data in these regions produce plots to best display the CP violation." ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "In a section above you searched for global CP violation. You probably did not find a result with very high significance. \n", "\n", "CP violation may arise from interference between decays through different resonances, and hence the magnitude and sign of the CP violation may vary across the Dalitz plot. We can apply the same equation as in the global CP violation study \n", "\n", "but apply this only to events in particular regions of the Dalitz plot.\n" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "## Removing charm resonances" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "The analysis performed here is to study the CP violation in the charmless B meson decays to kaons. \"charmless\" means that the decay does not proceed through a charm quark. However, the most frequent decay of the B mesons occur through the *b* quark decaying into a *c* quark. The majority of these events can be removed by rejecting the events that are proceeding through a D0 meson (which contains the charm quark).\n", "\n", "In the section above you plotted a histogram of the invariant mass of the intermediate resonances and will have observed the D0 meson in this and in the Dalitz plot. You should now reject events that are around the mass range of the D0 meson to suppress this contribution. You can do this in your pre-selection on the data that you set-up earlier in the project.\n", "\n", "This was also a simplification that we did not consider when we were calculating the global asymmetry. After you have applied this pre-selection your code will now recompute the global asymmetry with the D0 meson contribution rejected. We have not yet observed CP violation in charm mesons and searching for this is another active area of current research." ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "## Comparing Dalitz plots" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "Make separate Dalitz plots for the B+ and the B- decays.\n", "Local CP Violation will show up as an asymmetry between the B+ and the B- plots. \n", "\n", "In order that the statistical error on the asymmetry in each bin is not over large the bins need to contain a reasonable number of entries. Hence you will probably need larger bins than when you were looking for resonances in the section above. A suitable initial bin size might be $2.5~\\text{GeV}^2/\\text{c}^4 \\times 2.5~\\text{GeV}^2/\\text{c}^4$.\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# make a Dalitz plot for the B+ events" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": true, "hidden": true, "run_control": { "frozen": false, "read_only": false } }, "outputs": [], "source": [ "# make a Dalitz plot for the B- events" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# Make a plot showing the asymmetry between these two Daltz plots\n", "# i.e. calculate the asymmetry between each bin of the B+ and B- Dalitz plots and show the result in another 2D plot" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "Observing a large asymmetry in some regions of the plot does not necessarily mean you have observed CP violation. If there are very few events in that region of the plot the uncertainty on that large asymmetry may be large. Hence, the value may still be compatible with zero.\n", "\n", "You can calculate the statistical uncertainty on the asymmetry, for each bin of the plot, using the same formulas as you used in the global asymmetry section. You can then make a plot showing the uncertainty on the asymmetry.\n", "\n", "Dividing the plot showing the asymmetry by the plot showing the statistical uncertainty you can then obtain the significance of the asymmetry in each bin. You can then plot the significance of the asymmetry to see if there is any evidence for CP violation." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# Make a plot showing the uncertainty on the asymmetry " ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# Make a plot showing the statistical significance of the asymmetry" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true, "hidden": true }, "source": [ "## Observing CP violation\n", "\n", "From your studies of the asymmetry plot, and the plot of its significance, you will be able to identify regions in the Dalitz plots that show indications of sizeable and significant CP Violation. You may find you have several consecutive bins with significant positive, or negative, asymmetries. You may wish to try alternative binnings of the Dalitz plots to best isolate the regions in which the significant asymmetries occur.\n", "\n", "You can select events that are in these regions of the Dalitz plots where you observe signs of CP Violation. You can then plot a simple 1D histogram of the invariant mass distribution of the B+ and the B- events, just as you did at the start of the project, but only for events that lie in the region of the Dalitz plot that you are interested in. Make the plots of the B+ and the B- events with the same scale, or superimpose the two plots, so that you can observe if the particle and anti-particle decay processes are occurring at the same rate." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# Make a plot showing the invariant mass of the B+ meson particles\n", "# using events from a region of the Dalitz plot showing sizeable CP asymmetries" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": true, "hidden": true }, "outputs": [], "source": [ "# Make a plot showing the invariant mass of the B- meson particles using events from the same region" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "**Congratulations!** You should now have succesfully observed significant evidence for CP Violation. You should have plots that clearly show that particle and anti-particle decay processes occur at different rates in local regions of the Dalitz plot. You may wish to comapre your results with those published by the LHCb collaboration in this [paper](http://lhcbproject.web.cern.ch/lhcbproject/Publications/LHCbProjectPublic/LHCb-PAPER-2013-027.html).\n", "\n", "**Well Done** you have succesfully completed your first particle physics analysis project. There are many more analyses that can be conducted witht the data set that you have been provided and the skills that you have gained. Ideas for some of these are explored in the section below. Maybe you can discover something new!\n", "\n", "Now you've finished the analysis please provide feedback to help us improve this project using [this brief survey](https://docs.google.com/forms/d/1dEh4A4agmk5zpmR0zrhF79k-lJKV4vX1ETIGJjDscnc/viewform?c=0&w=1)." ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "# Further analyses" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "The data set you have been provided is the full set of data recorded by LHCb preselected for decays of charged B mesons into three final state tracks. This data set has been used for two important publications, [here](http://lhcbproject.web.cern.ch/lhcbproject/Publications/LHCbProjectPublic/LHCb-PAPER-2013-027.html) and [here](http://lhcbproject.web.cern.ch/lhcbproject/Publications/LHCbProjectPublic/LHCb-PAPER-2013-051.html).\n", "\n", "We discuss here: \n", "
    \n", "
  • Additional elements that you could add to your analysis of B+ → K+K+K
  • \n", "
  • Further analyses that you could perform with this data set
  • \n", "
" ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "## Adding extra sophistication\n", "\n", "### Systematic Uncertainties\n", "In this analysis you considered the statistical uncertainty on the result. This occurs as a result of having only a limited number of events. In addition there are [systematic uncertainties](https://en.wikipedia.org/wiki/Observational_error#Systematic_versus_random_error), these arise from biases in your measurement. Here we discuss three sources of these for this analysis.\n", "
    \n", "
  • Production asymmetry. The LHC is a proton-proton collider and hence the initial state of the collision is not matter antimatter symmetric. Consequently B+ and B- mesons may not be produced at exactly the same rates. This small production asymmetry it is estimated could be approximately 1%. It can also be measured from the data, as discussed in the LHCb paper.
  • \n", "
  • Detection asymmetry. The LHCb detector could be more efficient for detecting either the B+ or the B- final states. This is because the positive and negative kaons will be bent by the magnet indifferent directions in the detector. If the efficiency of the detector is higher in one region than another this will lead to higher efficiencies for K+ or K- and hence for B+ or B-. For this reason the magnetic field of the LHCb detector is regularly reversed. You used data in this analysis in which the magnetic field was both up and down and hence the effect will (partially) cancel. By comparing results for the two magnet polarities separately you can check the size of this effect. When loading the data above both polarities were combined, you can instead load them independently to measure the difference between the two datasets.
  • \n", "
  • Analysis technique. The analysis technique you have used may bias the result. A major simplification we made in the analysis above was to neglect 'background' events. We imposed a selection to select a sample of predominantly signal events but have not accounted for the effect of the residual background events.
  • \n", "
\n", "\n", "### Using mass sidebands\n", "\n", "One source of 'background' events arises from random combinations of tracks in events that happen to fake the 'signal' characteristics. These events will not peak in the mass distribution at the mass of the B meson but rtaher will have a smoothly varying distribution. Looking at the number and distribution of of events away from the mass peak can allow you to estimate the number of background events under the mass peak.\n", "\n", "### Fitting distributions\n", "\n", "The next level of sophistication in the analysis requires fitting the distributions of events that are observed in the B mass distribution in order to estimate the yield of signal events and background events. You can see how this is done in the LHCb paper on the analysis. Fitting can be performed using the [CERN root framework](https://root.cern.ch/)." ] }, { "cell_type": "markdown", "metadata": { "hidden": true }, "source": [ "## Further analyses\n", "\n", "The LHCb papers using this data set that you are using analysed four decay channels of the charged B mesons. You can perform any of these analyses.\n", "
    \n", "
  • B+ → K+K+K (and anti-particle equivalent). This is the analysis you have performed here. It has the lowest background of the four channels and hence the approximation we made of neglecting the background events will give the least bias to this channel.
  • \n", "
  • B+ → π+π+π (and anti-particle equivalent). In this analysis the final state is three charged pions. The level of background events compared to the signal is significantly higher as pions are the most commonly produced particle at the LHC. Hence, a method of estimating the background level should be added to complete this analysis.
  • \n", "
  • B+ → K+π+π (and anti-particle equivalent). In this analysis the final state is a mixture of one kaon and two pions. This means that the analysis needs to determine in each event which track is the best candidate kaon and apply selection cuts appropriately to select out the events.
  • \n", "
  • B+ → π+K+K (and anti-particle equivalent). This channel has a higher level of background compared to the signal.
  • \n", "
" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" }, "toc": { "toc_cell": false, "toc_number_sections": true, "toc_threshold": 6, "toc_window_display": false }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 1 }