/JETSCAPE

JETSCAPE, a modular, task-based framework for simulating all aspects of heavy-ion collisions.

Primary LanguageC++OtherNOASSERTION

JETSCAPE 2.0

The Jet Energy-loss Tomography with a Statistically and Computationally Advanced Program Envelope (JETSCAPE) collaboration

New with release 2.0

• TRENTO initial condition from (2+1)D to (3+1)D.

• Liquifier module to create causal jet source terms for jet energy deposition and medium evolution.

• Handling photons generated in hard scattering and in energy-loss modules.

• Handling heavy-quarks in energy-loss modules.

• Hybrid hadronization of partons.

With cmake:

    mkdir build
    cd build
    cmake ..

the test binaries will be generated in the build folder To run the tests, you need to stay at the framework directory and type :

    ./build/brickTest

This "simulates" our brick test. The temperature from the brick is available in the jet energy loss modules. The jet energyloss module consists of two "test" modules, Matter performing a random in time democratic split and Martini is doing nothing. Furthermore in "Matter" I added random "new graph roots" for testing (simulating scattering with medium partons). The switching criteria is arbitrarily set to 5GeV in pt for testing. An ascii output file is created which you can read in with the provided reader:

    ./build/readerTest

which reads in the generated showers does some DFS search and shows the output. You can generate an output graph format which can be easily visualized using graphViz or other tools like Gephi (GUI for free for Mac) or more adanvanced, graph-tools (Python) and many more. Furthermore, as a "closure" test, I used the FastJet core packackage (compiled in our JetScape library) to perform a simple jetfinding (on the "final" partons, in graph language, incoming partons in a vertex with no outgoing partons/childs), and since the "shower" is perfectly collinear the jet pT is identical to the hard process parton pT (modulo some random new partons/roots in the final state, see above).

    ./build/hydroFromFileTest

This "simulates" a test by reading in hydrodynamic evolution from an external file. The temperature and flow velocity at any given space-time poisition is available in the jet energy loss modules. The jet energyloss module is the same as the one in the brickTest. The hydro file reader is from a 3rd-party program. Part of the code requires the HDF5 library.

    ./build/MUSICTest

This "simulates" a test with MUSIC (a viscous hydrodynamic code). The temperature and flow velocity at any given space-time position is available in the jet energy loss modules. The jet energyloss module is the same as the one in the brickTest. MUSIC is treated as a 3rd party program outside the JETSCAPE framework. It requires MPI and GSL libraries installed in the computer.

If cmake found other libraries HepMC, ROOT or Pythia8, you might have to add the library path's in the setup.csh script. For sure works on Mac Os X 10.11.6.

To make a class documentation using doxygen:

doxygen JetScapeDoxy.conf

Getting started on a Mac:

  • Install Xcode and command-line tools

For further packages needed (like CMake, Pythia, ROOT, GraphViz) I recommend homebrew for Mac:

  • Install homebrew (after you install Xcode)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Install CMake via homebrew type:
brew install cmake
  • Install doxygen:
brew install doxygen
  • Install graphViz:
brew install graphviz --with-app --with-bindings
  • Install root6
brew install root6
  • Install graph-tool (python). If done you can create a colored and "fancy" graph with the provided python script.
brew install graph-tool
  • Install hdf5

    brew install hdf5 --with-mpi
  • Install OpenMPI

    brew install open-mpi
  • Install GSL

    brew install gsl
  • Tap some repos for further sceintific packages:

brew tap davidchall/hep
  • Install Pythia8 for example:
brew install pythia

(and most of other packackes we need)

Remark: So far on brew HepMC is only available in version 2, version 3 is required for the current code, nicer wirter interfaces to root for example. So one has to install it from: http://hepmc.web.cern.ch/hepmc/

MUSIC support

MUSIC is a (3+1)D viscous hydrodynamical code developed at McGill university. (Official website: http://www.physics.mcgill.ca/MUSIC) MUSIC can be integrated into the JETSCAPE framework. To download the lastest version of MUSIC, one can run the shell script under the external_packages folder,

    ./get_music.sh

This shell script will clone the latest version of MUSIC to external_packages folder. It also setup the enviroment variables for MUSIC to run. Specifically, MUSIC needs the folder path for the EOS tables. Please make sure the enviroment variable HYDROPROGRAMPATH to be set to the path for MUSIC code package.

When compiling MUSIC with JETSCAPE, please turn on the MUSIC support option when generating the cmake configuration file,

    mkdir build
    cd build
    cmake -Dmusic=ON ..
    make

If you are using GNU C compiler, please make sure the version of the compiler is 7 or above.

To run JETSCAPE with MUSIC,

    ./MUSIC_evo

MUSIC implements parallelization using OpenMP. You can use multiple threads by setting the following enviroment variable,

    export NUM_OMP_THREADS=4

This enables the MUSIC code to use 4 threads for computation.

Using 2-stage hydro

In ./TwoStageHydro, MUSIC is run first, a space-time profile for jet propagation is generated. A user defined number of hard-scattering events is run on this profile. For each hard-scattering event, a set of source terms based on the deposited energy is generated. MUSIC with the same initial condition is rerun with this set of source terms, to produce jets with hydrodynamic response. To compile ./TwoStageHydro, in the build directory,

    cmake -Dmusic=ON -DiSS=ON ..
    make 

SMASH hadronic afterburner

SMASH is a hadronic transport developed at Frankfurt Institute for Advanced Studies by the group of Prof. H. Petersen (Elfner). In JetScape SMASH can serve as an afterburner, useful to compute soft observables.

Installing SMASH

SMASH is published on github at https://github.com/smash-transport/smash. See SMASH Readme for libraries required by SMASH and how to install them.

Prerequisites

SMASH is known to compile and work with one of these compilers (which have the required C++11 features):

  • gcc >= 4.8
  • clang >= 3.2

It requires the following tools & libraries:

  • cmake >= 2.8.11
  • the GNU Scientific Library >= 1.15
  • the Eigen3 library for linear algebra (see http://eigen.tuxfamily.org)
  • boost filesystem >= 1.49
  • Pythia = 8.235

See more details in SMASH README.

Installing Eigen

export EIGEN_DOWNLOAD_DIR=$HOME/Software
export EIGEN_INSTALL_DIR=$HOME/eigen_install

mkdir ${EIGEN_DOWNLOAD_DIR}
cd ${EIGEN_DOWNLOAD_DIR}
wget http://bitbucket.org/eigen/eigen/get/3.2.10.tar.gz
tar -xf 3.2.10.tar.gz

mkdir ${EIGEN_INSTALL_DIR}
cd ${EIGEN_INSTALL_DIR}
cmake ${EIGEN_DOWNLOAD_DIR} -DCMAKE_INSTALL_PREFIX=${EIGEN_INSTALL_DIR}
make install

export EIGEN3_ROOT=${EIGEN_INSTALL_DIR}/include/eigen3/

Add the last export to your .bashrc file.

Using a custom GSL build

This is only necessary if GSL is not installed already or something does not work with the installed version.

Download and unpack GSL:

    wget ftp://ftp.gnu.org/gnu/gsl/gsl-latest.tar.gz
    tar -zxvf gsl-latest.tar.gz

This creates a folder named gsl-[version_number] called $GSL here.

    cd $GSL
    ./configure --prefix $GSL
    make -jN
    make install

Add this export to your .bashrc file:

    export GSL_ROOT_DIR=/opt/apps/intel18/gsl/2.3

Using boost library

Assuming that boost is already installed in $HOME:

  export BOOST_ROOT=$HOME/boost_1_64_0/

Compiling SMASH library

  export JETSCAPE_DIR=${HOME}/JETSCAPE-COMP
  export SMASH_DIR=${JETSCAPE_DIR}/external_packages/smash/smash_code
  export PYTHIA8DIR=${PYTHIAINSTALLDIR}/pythia8235
  export PYTHIA8_ROOT_DIR=${PYTHIAINSTALLDIR}/pythia8235

  cd ${JETSCAPE_DIR}/external_packages
  ./get_smash.sh

Compiling JetScape with SMASH

The usage of SMASH in JetScape as an afterburner requires hydro, sampler and SMASH itself. Therefore, to use it in JetScape,

    mkdir ${JETSCAPE_DIR}/build
    cd ${JETSCAPE_DIR}/build
    cmake -Dmusic=ON -DiSS=ON -Dfreestream=ON -Dsmash=ON ..

To run JetScape test with SMASH:

    cd build
    ./SMASHTest

Currently the iSS sampler performs resonance decays after sampling. For reasonable physics with SMASH these decays should be switched off.