{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "\n", "# Electron Positron Annihilation\n", "\n", "### Examples - Particle and Nuclear Physics\n", " \n", "Last edited: April 15th 2018 \n", "___\n", "\n", "In this notebook we will discuss electron positron scattering at the $Z$-resonance. In particular, we will use an event generator to run Monte Carlo simulations for the $e^++e^-\\to Z\\to ?$ annihilation process and then visualize the results as energy spectra. The event generator will take care of the cascading and hadronization. Physical experiments have been performed on the subject. Electron-positron scattering at the Z-resonance was studied by the ALEPH collaboration at the Large Electron-Positron collider (LEP) at CERN [1]. \n", "\n", "The event generator Pythia 8.2 [2, 3, 4] will be used. It is a standard tool for the generation of high-energy collisions, and is considered accurate for $>10\\;\\mathrm{GeV}$. The program works for hadron-hadron and lepton-lepton collitions. Pythia 8 is written in C++, but there exists a wrapper to Python.\n", "\n", "In the following we always refer to the Standard Model. We start by importing necesarry packages. The installation of the Python wrapper for Pythia is described at the end of this notebook. The Pythia installation contains several examples you can play around with." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import Pythia\n", "import sys\n", "cfg = open(\"Makefile.inc\")\n", "lib = \"\"\n", "for line in cfg:\n", " if line.startswith(\"PREFIX_LIB=\"): lib = line[11:-1]; break\n", "sys.path.insert(0, lib)\n", "import pythia8\n", "\n", "# Import other packages\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import progressbar\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Set common figure parameters\n", "fontSize = 14\n", "newparams = {'figure.figsize': (15, 6),\n", " 'font.size': fontSize, 'mathtext.fontset': 'stix',\n", " 'font.family': 'STIXGeneral',\n", " 'lines.linewidth': 2.0}\n", "plt.rcParams.update(newparams)\n", "\n", "# Set constants\n", "me = 0.000511 # GeV. Electron mass\n", "mp = 0.93827 # GeV. Proton mass\n", "mZ = 91.1876 # GeV. Z mass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setting up the process, $e^+ + e^- \\rightarrow Z \\rightarrow ?$\n", "\n", "#### Settings\n", "\n", "We will be simulating the scattering of a positron and an electron. That is, we will collide a positron and an electron at some center of mass energy $E_\\mathrm{CM}$ and see what kind of particles is produced after hadronization and cascades.\n", "\n", "We need to define a `Pythia`-object, which will handle the simulation of the process." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Initialise a pythia object\n", "pythia = pythia8.Pythia()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The settings for the event generator can be stored in a file and loaded using `pythia.readFile()`. However, here we will use `pythia.readString()` to read single settings.\n", "\n", "The setting for the center of mass energy is called `Beams:eCM` and is given in units of $\\mathrm{GeV}$. We choose that the particles collide at the $Z$-resonance, $E_\\mathrm{CM}=91.1876\\;\\mathrm{GeV}$.\n", "\n", "The inital particles are defined using the settings `Beams:idA` and `Beams:idB`, and is given by the [Monte Carlo Particle Numbering Scheme](http://pdg.lbl.gov/2017/reviews/rpp2017-rev-monte-carlo-numbering.pdf) [5]. In this numbering scheme, each particle is given an integer. Particles are given positive numbers and anti-particles are given negative numbers. For example, electrons is $11$ and positrons are $-11$. Some values are shown in the table below (see [5] for a complete list and the details of the scheme).\n", "\n", "