Physics at the Terascale Helmholtz Gemeinschaft

Millepede II


Millepede II is the successor of Millepede, a package for linear least squares fits with a large number of parameters. Both have been developed as experiment independent programs by Prof. V. Blobel. Documentation and source code of Millepede and of the first version of Millepede II are available on his web page .Meanwhile, the Statistics Tools group of the Analysis Centre took over the maintenance of Millepede II.

The first Analysis Centre release, version V02-00-01, contains V. Blobel's 2009 development and small changes/fixes coming from CMS experience by G. Flucke. Further development, mainly by C. Kleinwort for usage in CMS, adds

  • auto-detection of bordered band matrices in the local fit to speed up processing if e.g. fed with tracks fitted using the broken lines technique (cf. NIM A566:14-17,2006 by V. Blobel and GeneralBrokenLines),
  • the possibility to ignore or compress rare off-diagonal elements of the global matrix (to reduce space requirements),
  • shared-memory parallelisation of most parts of the code (track fits, MINRES, inversion) using OpenMP™,
  • the possibility to read gzipped C/C++ binaries,
  • further fixes/improvements not only from CMS experience.

Using these features allows CMS silicon tracker alignment to determine 200 000 parameters in one go fitting more than 20 million tracks, including 3.6 million cosmic ray tracks and about 375 thousand muon pairs from Z decays reparametrised as one fit object with a vertex constraint and adding a virtual Z mass measurement (cf. CMS-CR-2011-323). The computing requirements on an Intel™ Xeon™ L5520 with 2.27 GHz using eight threads are 44.5 h CPU (but only 10 h wall clock time) and less than 32 GB of RAM.


The source code of Millepede II is provided by DESY under the terms of the LGPLv2 license and is maintained in a publicly accessible subversion repository at DESY that can be browsed via viewvc or WebSVN.

The recommended version is publicly available via the subversion command line:

svn checkout MillepedeII

For development, please check out the trunk:

svn checkout MillepedeII

You could replace /desy/ by /svn/ or /basic/ for other authenticiation methods, see subversion server access info. To be allowed to commit, please contact the mailing list, mentioned below.

  1. The software can be freely used for research and education. We expect that all publications describing work using this software quote at least one reference (see here).
  2. Disclaimer: This software is provided without any expressed or implied warranty. In particular there is no warranty of any kind concerning the fitness of this software for any particular purpose.


Since V04-00-00 (fortran90)

The delivered Makefile foresees the compilation of a single pede executable with dynamic allocation of memory. Simple 'cd MillepedeII; make', compiles the executable. This requires gcc version 4.4 or higher. For larger problems (>8GB of memory) a 64bit system is necessary.

Before V04-00-00 (Fortran77)

The delivered Makefile foresees the compilation of pede executables with different amount of memory. Simple 'cd MillepedeII; make', compiles three executables: pede (400 MB memory), pede_1GB and pede_2GB (memory as the name indicates). If your problem requires more space due to a high number of parameters or a dense matrix, you need a 64-bit system and probably a special compiler flag, see the comments in the Makefile. The maximum memory possible is with 32 bit integers for internal (FORTRAN) memory management 2147483647 = (231 - 1) words, i.e. about 8.5 GB. With version V03-01-00 64 bit integers are available (FORTRAN95, gfortran) to overcome this limit.

The Makefile of the recent version is written for gcc 4.1.2 (the reference compiler is: gcc version 4.1.2 20080704 (Red Hat 4.1.2-50) ), but it works for later gcc relases until 4.4.X. See comments in the Makefile to make it work for gcc version 3.X.Y (64 bit integers not recommended) or gcc 4.5.X and 4.6.X. Please contact the mailing list about necessary fixes you know about to use other compilers.

The gcc 4.4.0 compiler is not recommended. When starting from perfect alignment, we noticed that it can happen that pede stops without finding a non-trivial minimum ("Function not decreasing..."). This is not understood, but since gcc 4.1.2 and gcc 4.3.4 behave like expected, i.e. finding small corrections, we guess that it is a gcc 4.4.0 problem. Update: Same seen also with gcc 4.5.1! Needs to be investigated...

Starting with gcc 4.4 the MINRES pre-conditioner for bandwidth zero (PRECON) is not compiled correctly. This problem is avoided with version V03-04-01 by rearranging some lines in the source code.