Basics
This course features work done individually by the students, measuring quantities from real life examples.
Background material for the course can be found in the following slides and notes:
- Course description in Hungarian: [pdf]
- An old set of (Hungarian) slides: [pdf]
- Another old set of (partly Hungarian) slides: [pptx]
- A set of slides about the flow analysis by Srikanta Tripathy: [pdf1], [pdf2]
- An overview talk I gave recently on the phases of QCD: [pptx]
- An overview talk I gave recently on hard probes: [pptx]
- A few slides on Bose-Einstein correlations: [pptx], [pdf]
- A textbook by László Csernai: [pdf]
- Measurement of the elliptic flow with the reaction plane method: [pdf]
- Measurement of the elliptic flow with the cumulants method: [pdf]
Prerequisites
In order to complete this course, you need to be familiar with c++ and ROOT. Below are some materials that may be helpful.
- A c++ tutorial: http://www.cplusplus.com/doc/tutorial/
- A short c++ course: https://www.phenix.bnl.gov/~purschke/CppCourse_BNL/
- ROOT webpage: https://root.cern.ch/
- ROOT guide: https://root.cern.ch/root/htmldoc/guides/primer/ROOTPrimer.html
- A ROOT course: [pdf]
- A few useful ROOT tutorials:
- Histograms: https://root.cern.ch/histogramming
- Histogram examples: https://root.cern.ch/doc/master/group__tutorial__hist.html
- Fitting examples: https://root.cern.ch/doc/master/group__tutorial__fit.html
- Trees: https://root.cern.ch/meet-ttree
- Minuit2: https://root.cern.ch/root/htmldoc/guides/minuit2/Minuit2.html
- Other HowTo pages: https://root.cern.ch/howtos
Pythia 8.2
- Download code: pythia8215.tgz
- Additional information: http://home.thep.lu.se/~torbjorn/Pythia.html, http://home.thep.lu.se/~torbjorn/pythia82html/Welcome.html
- Installation
- Download the file pythia8215.tgz to a suitable location.
- Unzip and expand it with tar xvfz pythia8215.tgz.
- Do a make in the thus created pythia8215 directory (it will take a couple of minutes to compile)
- Examine the examples subdirectory and read the README file there for instructions how to do some test runs. You can do so by simple issue a make mainNN followed by ./mainNN > outNN, where NN is a two-digit number in the range 01 - 30.)
- Run
- You need to write a C++ code with the Pythia libraries (#include "Pythia.h") to generate events with Pythia
- First, you declare a pythia object via Pythia pythia;
- Then, you set the processes you are interested in. For general soft QCD interests, one should just set pythia.readString("SoftQCD:all = on");, and for jet analysis, pythia.readString("HardQCD:all = on"); could also be used.
- The collision system and energy can then be set via pythia.readString("Beams:eCM = 7000"); and pythia.readString("Beams:idA = 2212"); (and similarly for idB) where 2212 is the code for protons and the third parameter is the collision energy.
- The command pythia.next(); generates an event
- From within the code, you can access the created particle via the array pythia.event. For example, the i-th particle's id is pythia.event[i].id(), while its four-momentum coordinates are accessible via pythia.event[i].E(), pythia.event[i].px(), pythia.event[i].py() and pythia.event[i].pz().
- You can compile your code via g++ mycode.cc lib/libpythia8.a -o mycode.exe -I./include -O2 -ansi -pedantic -W -Wall -Wshadow -fPIC -Wl,-rpath lib -ldl
HIJING
- Download code: hijing1411.tgz
- Additional information: http://ntc0.lbl.gov/~xnwang/hijing/, http://ntc0.lbl.gov/~xnwang/hijing/doc.html
- Installation
- Download hijing.tgz to a suitable location
- Unzip and expand with tar xzvf hijing.tgz
- Compile simulation package via make hijing1.211.o and make hipyset1.35.o
- Run
- Edit test.f to perform the desired simulation. The last part does the event printing, after CALL HIJING.
- Compile main program via make test.exe
- Edit test.in to achieve desired settings. Here the first number on each line is just a placeholder. The subsequent strings after the first comma are important, and they set the following: random seed; coordinate system, collision energy; colliding particle or nucleus; nucleus A,Z parameters; number of events; print warnings; print info of decayed particles;
- Run via ./test.exe < test.in > test.out
- Analyze
- A test.out text file has been created. It contains a string BEGINNINGOFEVENT at the beginning of each event. After that, the number of event, number of particles and total energy of particles is printed. After that, particles are listed with their number, id, parent particle number (if decays are remembered), status, four-momentum coordinates.
THERMINATOR2
- Download code: therminator2_2.0.3.tar.gz
- Additional information: http://therminator2.ifj.edu.pl/, http://therminator2.ifj.edu.pl/install.html
- Installation
- Download therminator2-latest.tar.gz
- Unzip and expand it with tar xzf therminator2-latest.tar.gz
- Compile with make
- Depending on your gcc/g++ version, you may need to alter the Makefile, to put the libraries (in $(LFLAGS)) after the source (represented by $^)
- Depending on your system and on your ROOT, you may need to add -m32 switches to LFLAGS and/or CXXFLAGS
- Run
- Edit events.ini to achieve desired settings
- Simulate a number of events via runevents.sh
- Generate two-particle correlation functions with runhbt.sh
- Analyze
- Directory named "events" will contain the generated events, in subdirectories depending on the given particle freeze-out model.
- event*.root will contain all the event data in a ROOT tiree format, while femto*.root will contain quantumstatistical correlation functions (the particles of the events don't have quantumstatistical features, these are separately generated)
- The output is stored in ASCII and ROOT files as well. The plain text version is easy to read, it contains lines for each particle with particle number, parent particle number (if decay product), particle ID, particle ID of parent particle, particle ID of original primordial particle, decay flag, four-momentum, and four-coordinates of the creation point. However, this text version is not effective in terms of disk space and data access.
- The structure of both files is described in Section 4 of Chojnacki et al., Comp.Phys.Commun. 183 (2012) 746
- ROOT trees (TTree objects) have to be read as described in the ROOT documentation, for example at https://root.cern.ch/meet-ttree
- First, you open your ROOT file via TFile *rootfile = new TFile("myfile.root","READ");
- Then you obtain your TTree via TTree *t = (TTree*)rootfile->Get("particles");
- Then you need to set the branch address for each set of objects in the tree via t->SetBranchAddress("particle",&particle); where particle is a ParticleCoor object.
- The TTree has t->GetEntries() entries, and you can loop over them via a simple for loop, getting each entry via t->GetEntry(i);. The variable particle set in the previous point will then contain the ParticleCoor object of the given entry
- This class contains the following information (among others): eventid,eid,pid,decayed,e,px,py,pz and can be accessed via conventional C++ operations.
- This is a simplified description, just to give you an idea how things work with TTree objects. You can also use a full-blown Event analyzer, such as in https://root.cern.ch/doc/master/classTTreeReader.html or https://root.cern.ch/using-macro-read-ttree
Working with real data
- You will just have to download this data from the location provided at the beginning of the course
- Analyze
- Download analysis code [tgz]
- Read the README file there
- Put the data tree at the same location, name it measure_createtree.root, or rewrite the analysis code to use the web-based file.
- Create the exe, exe/object, exe/object/dependencies directories
- Compile the code via make all, and run it as exe/analyzetree.exe <data.root> <output.root> <number of events to analyze>, with keeping the number of events to analyze low, i.e. 50000 or so (for experimenting)
- Plot the results via root.exe -b -q Plot_analyzetree.C\(\"<output.root>,<figures directory>\"\), substituting the output file produced in the previous step. You will also need a (preferably web based) directory for the plotted figures.
- Check if you can get back to zvertex, centrality and reaction plane distributions given at my BNL public web area
- You can access the particle properties through p.GetEntry(ientry), and then p.E[itrack] and similarly for others.