Professor is hosted by Hepforge, IPPP Durham


Professor is a tuning tool for Monte Carlo event generators, based on the ideas described in "Tuning and Test of Fragmentation Models Based on Identified Particles and Precision Event Shape Data" (Z. Phys., C73 (1996) 11-60).

Fundamentally, the idea of Professor is to reduce the exponentially expensive process of brute-force tuning to a scaling closer to a power law in the number of parameters, while allowing for massive parallelisation and systematically improving the scan results by use of a deterministic parameterisation of the generator's response to changes in the steering parameters.

The approach is not limited to MC tuning: any situation which can benefit from fast parameterisation of histogram values can use Professor!

2017-02-02: Professor release 2.2.1

We are very pleased to release Professor 2.2.1.

This release comes with a more forgiving and therefore more stable usage of prof2-ipol. Instead of a hard exit when encountering nan coefficients (symptom of very low statistics in input histograms) those histograms are simply ignored. Further, the matplotlib backend now defaults to Agg allowing for plot output in the absence of X11.

Download source code

docker pull iamholger/professor:2.2.1

2016-12-20: Professor release 2.2.0

We are very pleased to release Professor 2.2.0.

Download source code

The parametrisation building has been improved significantly allowing the calculation of polynomials in high dimensional parameter spaces, e.g. 20 dimensions in seconds rather than hours.

We added a few more scripts to contrib, such as prof2-sobol (requires pygsl) which is an alternative to prof2-sample that uses the SOBOL algorithm for pseudo random number generation. The support vector machine parameters habe been tuned to give better resolutions when using the machine learning scipts prof2-ml-* (requires scipy and scikit-learn).

We have dockerised this version of professor with all depdendcies included.

docker pull iamholger/professor:2.2

docker pull iamholger/professorml:2.2 (with scikit-learn for machine learning bits)

Using professor2 with docker

The source code package also contains a few jupyter notebooks that demonstrate the usage of some of the machinery.

You can also try them out on Binder. Check Binder status here

Get Professor 2.1.4!
Released 2016-07-14. See ChangeLog

Professor 2 bootstrap script

Fully configured docker container with all dependencies:
docker pull iamholger/professor

or Professor 1.4.0, released 2014-12-12

Professor has been successfully used to produce most of the established "tunings" of the general purpose MC event generators heavily used in high-energy physics. This approach to numerically automated tuning began with the first Professor paper which created new optimal tunings of the Pythia 6 event generator to a wide range of data from LEP, JADE, and the Tevatron.

Since then, Professor has become the standard method for MC generator developers and HEP experimentalists to tune MC models. These tunes help to challenge theoretical models of QCD as implemented in generators, and to understand QCD backgrounds to new experiments, particularly at the LHC.

Professor is written in C++ and Python as a set of command line programs and underlying C++ and Python libraries. The core numerical machinery is provided in fast C++, using the Eigen3 linear algebra package, and high-level functionality is built on top of this in Python, via the Cython, numpy, scipy, and iminuit toolkits. The Rivet and YODA data analysis packages are required for most built-in functionality.

An overview is given in "Tools for event generator tuning and validation", as well as the Pythia 6 tuning paper linked above.


The Professor collaboration is:

  • Andy Buckley
  • Holger Schulz
Former members:
  • Hendrik Hoeth
  • Heiko Lacker
  • Jan Eike von Seggern
  • Daniel Weyh
  • Simone Amoroso
with grateful thanks also to the many generator authors and experts who have contributed (and continue to contribute) to generator tunes using the Professor system.

Professor 1.x

The current version of Professor is the 2.x series. However, this is a ground-up rewrite and does not yet have all the functionality of Professor 1.x. Both programmes can be installed at the same time and users may find some 1.x features useful.

For more information see the Wiki and documentation. We encourage you to contact us at we're keen to help you use the system, but a little hands-on advice goes a long way towards not getting junk results ;-)