Anisotropy in the Quark Gluon Plasma#

https://raw.githubusercontent.com/illinois-mlp/MachineLearningForPhysics/main/img/Project_AnisotropyQGP-Figure.png

%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
import pandas as pd
import os.path
import subprocess
import h5py

Overview#

The Quark Gluon Plasma is a deconfined state of matter created in heavy ion collisions in the Large Hadron Collider. In this project you will learn how to characterize the shapes of the quark gluon plasma produced in these collisions, and leverage the shapes to characterize how particles lose energy while traversing through the medium.

Data Sources#

The data for this project can be found at:

Jet Energy information:

TRENTO heavy ion initial states:

Questions#

Question 01#

One of the most important signals of the quark gluon plasma in heavy ion collisions is the presence of “azimuthal anisotropy.” Azimuthal anisotropy in heavy ion collisions is quantified by \(v_n\), the coefficients in a fourier series fit to momentum deposits in particle detectors. Using equations (1) and (2) in https://arxiv.org/pdf/0809.2949.pdf, write a method to evaluate \(v_n\) for an array of particles and angles. Assume the \(\delta_n\) in equation 2 is 0 – the term comes from correlated particle decays which we will not consider in this project.

def vn(n,particles):
    
    # particles is a nx2 array, particles[i][0] is the energy of the i-th particle and particles[i][1] is the angle of the i-th particle
    


    return v

Question 02#

Azimuthal anisotropy in heavy ion collisions arises because of asymmetry in the initial states of heavy ion collisions. These initial states can be modeled by software like TRENTO.

http://qcd.phy.duke.edu/trento/index.html

https://arxiv.org/pdf/1412.4708.pdf

Using the “Examples” in the documentation, read and produce images of some TRENTO PbPb events. They should be found in the TRENTO data file. In a couple sentences, write about the dimensions of this data: how do we quantify the QGP initial state? What units are used for position within the event, and what’s the “z” axis on all of these plots?

Question 03#

This paper: https://arxiv.org/pdf/1512.07443.pdf addresses how high energy sprays of particles (called jets) lose energy as they traverse the QGP medium.

As you can see in Eqs. (1) and (2), the authors describe jet energy loss in the QGP as a function of \(E(\tau)\), the energy of the jet, \(e(\tau)\), the energy density of the medium, and \(|\tau|\), the path length that the jet has travelled. We will tweak this model slightly, and add some hyperparameters:

\[ \Large \frac{dE}{d\tau} = cE(\tau)^{\alpha}e(\tau)^{\beta}|\tau|^\gamma \]

For this question, we will place a jet into a TRENTO event, and allow it to propagate through the medium, losing energy along the way.

def eloss(seed,event,E,c,a,b,g):

    # Event is the event number of the TRENTO event used in this exercise
    # E is the initial energy of the jet
    # c,a,b,g are the parameters from the model

    # Initialize by importing the correct TRENTO event, selecting a random location within the event, and picking a random angle for the jet to propagate
    # using a timestep (dtau = 1 will suffice), allow the jet to pass through the event, and lose energy
    # return the final energy held by the jet

    return E,theta

Question 04#

Now we will start putting the pieces together. Let’s see how well our model replicates real \(v_n\) data taken at the LHC!

First, sample initial jet energies (in GeV) from the data in the jet energy data file.

Then, using the TRENTO events, generate an array of final jet energies and angles. Using your code from problem 1, evaluate \(v_2\). Make sure to explain any uncertainty or “errorbars” in your answer. An easy way to evaluate these errorbars is by subsampling your data (calculate \(v_2\) many times on a smaller sample size, and evaluate the uncertainty of the distribution of your \(v_2\) values)

Compare your answer to results in this paper: https://arxiv.org/pdf/2111.06606.pdf. Specifically, fig. 8. in the 5-10% centrality bin.

NOTE:

1.) “Centrality” is a term used to denote how large the overlap region between the two colliding nuclei is, and it takes values from 0% to 100% (head-on collisions take values closer to 0-10%, while more glancing collisions end up in the 90-100% range). For simplicity, the TRENTO events for this project are all within the 5-10% centrality range.

2.) \(p_T\) is used to denote “transverse momentum,” or the amount of momentum that a jet carries perpendicular to the collider beamline. Jets at the LHC have so much energy that we can consider them to be approximately massless, meaning that for our modeling purposes \(p_T\) is essentially interchangeable with energy.

Question 05#

Using an optimization method discussed in class, find “optimized” values for your coefficents \(c,\alpha,\beta,\gamma\).

Your loss function should use 5-10% centrality data from figure 7 of https://arxiv.org/pdf/2111.06606.pdf as datapoints for this regression. For simplicity, I have included them here using https://plotdigitizer.com/app

What are your final values? Plot your model’s predicted \(v_2\) values alongside the experimentally determined ones.

v2_values = np.array([
 0.0248856,
 0.0221773,
 0.0195450,
 0.0180492,
 0.0178510,
 0.0086814,
 0.0120297,
 0.0036979,
 0.0138812,
])
v2_errors = np.array([
 0.0050671,
 0.0049263,
 0.0042100,
 0.0038375,
 0.0038205,
 0.0041046,
 0.0048910,
 0.0053504,
 0.0092933,
])

pt_bin_edges = np.array([79,89,100,126,158,200,251,316,398])

Question 06#

Eccentricity, \(\varepsilon_n\), is a similarly defined quantity to \(v_n\), designed to measure azimuthal anisotropy for heavy ion initial state models. While \(v_n\) is defined in terms of the distribution of particle angles in a detector, \(\varepsilon_n\) is defined using the energy density of an heavy ion initial state, a quantity which is only accessible by theoretical models. You can find more information about eccentricity in https://arxiv.org/pdf/1412.4708.pdf, and the eccentricities \(\varepsilon_n\) for each TRENTO event are included in the files you used earlier for problem 2.

Using your optimized code, compute \(v_2\) for the TRENTO events. Then, plot the correlation between each event’s \(\varepsilon_2\) and \(v_2\).

Question 07#

Using the TRENTO events, train a Neural Network to produce new heavy ion initial state energy density grids (100x100 pixels) simply by knowing the 2,3,4th, and 5th \(\varepsilon_n\) coefficients. A successful model should be able to produce events with output eccentricity values that correspond to the inputs.

Then, calculate \(v_2\) from these generated events, and plot the correlation between \(\varepsilon_2\) and \(v_2\). Was your answer similar to the plot you made for question 6?

References#

[1] Voloshin, Sergei A. Poskanzer, Arthur M. and Snellings, Raimond “Collective phenomena in non-central nuclear collisions”, e-Print 0809.2949 [nucl-ex]

[2] Moreland, J. Scott and Bernhard, Jonah E. and Bass, Steffen A. “Alternative ansatz to wounded nucleon and binary collision scaling in high-energy nuclear collisions” _Phys.Rev.C 97 (2015) 1, e-Print 1412.4708 [nucl-th]

[3] B. Betz, F. Senzel, C. Greiner and M. Gyulassy, ``The impact of the medium and the jet-medium coupling on jet measurements at RHIC and LHC,’’ 1512.07443 [hep-ph].

[4] G. Aad et al. [ATLAS], ``Measurements of azimuthal anisotropies of jet production in Pb+Pb collisions at \(\sqrt{s_{NN}} =\) 5.02 TeV with the ATLAS detector,’’ Phys. Rev. C 105, no.6, 064903 (2022) doi:10.1103/PhysRevC.105.064903 [arXiv:2111.06606 [nucl-ex]].

Acknowledgements#

  • Initial version: Abraham Holterman with some guidence from Mark Neubauer

© Copyright 2024