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! To underlines this, here are a few recent papers utilising Professor for various problems:
This is our paper from 2009, please cite when using the system in your work: Professor paper
2019-09-06: Professor release 2.3.2
2019-06-13: Professor release 2.3.1
2018-10-10: Professor release 2.3.0
Bug fixes plus new interface elements for C++/Python programmability.
2017-11-10: Professor release 2.2.2
We are very pleased to release Professor 2.2.2.
This release brings a number of useful and partially experimental features. Amongst them are the ability to use more than one set parameterisations. Think of large parameter spaces where the polynomial approximation may not neccesssarily be justified. Partitioning the parameterspace into smaller patches of valid polynomials helps greatly especially in cases where you are interested in a good approximation of the total parameter space and not just the minimum of a chi2. One application is multinest --- this release comes with prof2-tune-nest which uses Johannes Buchner's excellent pymultinest (http://johannesbuchner.github.io/PyMultiNest/, https://doi.org/10.1051/0004-6361/201322971) wrapper of MultiNest (Copyright Farhan Feroz and Mike Hobson). Superplot (https://arxiv.org/abs/1603.00555) conveniently plots profile likelihoods and posterior PDFs of the tuning problem at hand, e.g.:
We overhauled the parameter sampling to allow for more sophisticated sampling methods i.e. sobol and latin hypercube sampling.
prof2-tune now allows to optionally produce profiles and contours through MIGRAD and MINOS:
Eigentunes have made their way back into the package due to renewed interest. The procedure is based on a principal axis transformation of the covariance matrix. At the moment the one calculated by minuit is used but other methods are of course easy to implement. The deltaChi2 needs to be provided manually. We are still working on a statistically sound method of obtaining the latter through bootstrapping.
Another extension is the usage of emcee, an MCMC sampler that allows to produce profile plots of the likelihood (-0.5*Chi2):
This is a docker image build on top of rivet 2.5.4:
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.
2016-12-20: Professor release 2.2.0
We are very pleased to release Professor 2.2.0.
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/professorml:2.2 (with scikit-learn for machine learning bits)
The source code package also contains a few jupyter notebooks that demonstrate the usage of some of the machinery.
Get Professor 2.1.4!
Released 2016-07-14. See ChangeLog
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:
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 firstname.lastname@example.org: we're keen to help you use the system, but a little hands-on advice goes a long way towards not getting junk results ;-)