Jpp is a java-inspired collection of C++ classes and applications for PDF creation, multidimensional interpolation, function minimisation and plotting. Based on a much broader KM3NeT software framework, developed by Maarten de Jong, it is released here in a more generic, experiment-independent format. The package uses a flexible, templated class structure, which avoids the use of global variables, such as in Minuit.
The following subpackages are included:
- JLang: Language-specific auxillary classes and methods
- JIO: Binary I/O, used to store PDF objects
- JGizmo: A collection of applications for plotting ROOT objects, used in the example scripts to automatically generate output plots.
- JGeometry2/3D: A collection of tools and classes for geometry in 2/3 dimensions, from which fitted objects (such as showers, tracks and bright points) should inherit.
- JMath: Parent classes for objects with arithmetic capabilities, which are required for Neadler-Mead and Levenberg Marquardt minimisation.
- JTools: Classes and methods for multidimensional interpolation and numerical integration. It also includes the JConstants.hh header file, which includes some frequently-used physical constants. The underlying structure of the PDFs is of a functional operation where a set of abscissa values is mapped to a single ordinate value. The abscissae are always structured using STL containers, so fast iteration is possible. Spline and polynomial interpolation (orders 0-3) are possible to find the PDF value between abscissae. There is also a multidimensional histogram class, which can be filled from Monte Carlo, much like a ROOT histogram, and then converted into a PDF.
- JFit: Classes and methods for Nealder-Mead and Levenberg-Marquardt minimisation. It includes geometrical objects which inherit from JMath and JGeometry2/3D classes, which are fitted to the data. By default, these include spherical bright points, cylindrical tracks and cascades (i.e. objects with a position, direction, time and energy).
A two-dimensional projection of a PDF created using a toy Monte Carlo, which creates spherical, bright-point like events in a KM3NeT-style detector.
The performance of the Nealder-Mead, followed by Levenberg Marquardt reconstruction of the interaction vertex of these toy MC events.
Liam Quinn - CPPM
Source Code and Documentation