Notes on PYTHIA8 tuning using PROFESSOR in ATLAS


  • Documentation: (
  • To run in any other directory than /example: export PYTHIA8DATA=/home/dkar/atlas/tuning/pythia_with_old_hepmc/pythia8145/xmldoc
  • export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/../local/lib
  • To compile: make main32 HEPMCLOCATION=$PWD/../local
  • To run: ./main32.exe main32.cmnd test.out (or my.hepmc to pipe output through Rivet)


Pythia8 most writes output in the HepMC GenEvent output format, which can be read into Atlas using ReadEventFromFile in GenAnalysisTools:

 from AthenaCommon.AlgSequence import AlgSequence
 topSequence = AlgSequence()

 from ReadEventFromFile.ReadEventFromFileConf import ReadHepMc
 read = ReadHepMc()
 read.File = "filename.hepmc2g"
 topSequence += read

 theApp.EvtMax = 500




  • Documentation (
  • Latest version 2.06.03 did not work with PYTHIA 8.145, switched to 2.05.01
  • Download and install: (./configure --prefix=$PWD/../local/ --with-momentum=GEV --with-length=MM; make; make install; use HEPMCLOCATION=$PWD/../local OR mkdir build install, work in build, ../HepMC-2.05.01/configure -prefix=$PWD/../hepmc/install -with-momentum=GEV -with-length=MM and then make; make install; reconfigure PYTHIA with ./configure --with-hepmc=$PWD/hepmc/hepmc/install --with-hepmcversion=2.05.01; (re)make. )


  • Documentation (
  • Download and Install (./configure --prefix=$PWD/../local/; make; make install; Use bin/lhapdf-getdata to put PDFsets in share/lhapdf/PDFsets/)
  • Link: ideally with --with-lhapdf=$PWD/../local/lib/

Tuning Workflow

  1. Setup the directory structure. Create mc/XXX directories.

Change according to number required.

> for (( i=1000; i<=1050; i++ ))
> do
> mkdir $PWD/../mc/${i:1}
> done

  1. Decide which parameters to tune.
    • Start off by MPI tune.
    • By prof-scanparams -> prepares used_params files.
    • They should reside in mc/XXX/

  1. Decide which analysis/datasets to tune to.
    • For MPI tune (and to avoid jet slices, for now), use ATLAS 900 and 7000 MB and UE (track and cluster), CDF 1.8 and 1.96 MB. (8 in total).
    • Only needs to generate soft QCD.
    • For each mc/XXX, there will be 4 different directories, ATLAS_900, ATLAS_7000, CDF_1800, CDF_1960.
    • Copy from /afs/, store them in "ref" directory.

  1. Weights file with weights assigned to different analysis.
    • Copy the MPI weights file from MC11 Pythia6 tuning area.
    • :X:Y denotes X-axis range where to tune to. For different weights on different ranges, multiple lines corresponding to the same histogram.

  1. Run the generator using used_param as input and with appropriate processes turned on. Pipe the output through relevant Rivet analysis.
    • The scripts to run will be, where cmE will determine which run_params_cmE file and Rivet analysis is included.
    • There should be a master script which will loop over XXX.
    • Need to export PYTHIA8DATA=/home/dkar/atlas/tuning/pythia8145/xmldoc
    • Should result in mc/XXX/cmE/Rivet.aida for each cmE.
    • Then to make one out.aida under mc/XXX, do (each) aida2flat Rivet.aida > (>> from second one onwards) out.dat. Finally, flat2aida out.dat > out.aida.

  1. Create a runcombs-file which contains combination of MC runs to be used. By prof--runcombs.

  1. Parameterise the generator response. By prof-interpolate, results in folder ipols that contains a generator parameterisation file.

  1. Finally tune. Using prof-tune, stored in results/.
    • Show the sensitivity of observables to the parameters varied: --datadir . --oudir splots --observables weights1
    • Show how well the generator runs "enclose" data: prof-envelopes --mcdir mc --refdir ref -o envelopes --weights weights
    • Show scatter plot for each tuning parameter.

Tuning Settings

  • MPI Tune parameters: (/afs/ tune_11_mpi/parameter.ranges)

MultipleInteractions:pT0Ref (0.5 -10, 2.15)
MultipleInteractions:ecmPow (0-5, 0.24)
MultipleInteractions:pTmin (0.1 -10, 0.2)

For :bProfile = 2
MultipleInteractions::coreRadius (0.1-1-, 0.4)
MultipleInteractions:coreFraction (0 -1, 0.5)

For bProfile=3
MultipleInteractions:expPow (0.1 -10, 1)

  • PYTHIA8 Run settings:

The main32 example is very useful for running Rivet. It reads a runcard and writes HepMC events.

PDF:pSet = 8
MultipleInteractions:bProfile = 3 _(double gaussian=2)_
MultipleInteractions:alphaSvalue = SigmaProcess:alphaSvalue
SpaceShower:rapidityOrder = on

! 1) Settings that will be used in a main program.
Main:numberOfEvents = 3000000 ! number of events to generate
Main:timesToShow = 1000 ! show how far along run is this many times
Main:timesAllowErrors = 30 ! abort run after this many flawed events
Main:showChangedSettings = on ! print changed flags/modes/parameters
#Main:showAllSettings = on ! print all flags/modes/parameters
Main:showChangedParticleData = on ! print changed particle and decay data
#Main:showAllParticleData = on ! print all particle and decay data

! 2) Beam parameter settings. Values below agree with default ones.
Beams:idA = 2212 ! first beam, p = 2212, pbar = -2212
Beams:idB = 2212 ! second beam, p = 2212, pbar = -2212
Beams:eCM = 200 ! CM energy of collision

! 3) Pick processes and kinematics cuts
SoftQCD:minBias on

Tune Parameters:


> source
> source /afs/
> source /afs/


> prof-runcombs -c 0:1 --mcdir /afs/ -o runcombs_0_1.dat

>prof-interpolate --mcdir /afs/ --runs runcombs_0_1.dat -o test --ipol cubic --weights /afs/

>prof-tune --runs runcombs_0_1.dat --ipoldir test/ipol --ipol cubic --weights /afs/ -o test --refdir /afs/


Use v1.2.1. how to pass parameters?

> source /afs/

-- DeepakKar - 25-Feb-2011

This topic: Main > TWikiUsers > DeepakKar > PythiaProf
Topic revision: r11 - 2011-03-17 - DeepakKar
This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback