KalTest: A ROOT-based Kalman Filter Package
Welcome to KalTest home page. KalTest is a Kalman Filter Package written in C++. It is based on ROOT and provides basic libraries for track fitting with Kalman filter technique. The package is distributed with some sample test programs to illustrate their usage.
ACFA Sim-J Group
Since the tracking system of a collider detector usually consists of various
components such as a vertex detector (VD), an intermediate tracker (IT), a central
tracker (CT), etc., which have different shapes and coordinate systems, the
software package for Kalman-filter-based track fitting should be able to accommodate
a measurement layer with any shape and/or coordinate system. Considering possible
extrapolation of a track to an outer tracking device such as a muon detector,
it is also desirable that the package can handle site-to-site change of the
magnetic field. In order to satisfy these requirements with minimum user-implemented
code, we use C++ and exploit its object-oriented features as
much as possible. For persistency of data, we rely on ROOT's
automatic schema evolution.
Notice that the Kalman filter defines a generic procedure and has a much wider scope than track fitting. This implies necessity for a library of generic abstract base classes (KalLib) that implement the generic algorithm of the Kalman Filter. By inheriting from the generic base classes in KalLib and implementing their pure virtual methods for track fitting purpose, we then realize a Kalman-filter-based track fitter library (KalTrackLib). However, KalTrackLib should not depend on any particular track model or shape or coordinate system of a measurement layer according to the above guideline. We hence separate out geometry classes that provide track model (helix, straight line, ...) and surfaces (cylinder, hyperboloid, flat plane, etc.) as a geometry library (GeomLib). Each of these three class libraries, KalLib, KalTrackLib, and GeomLib are distributed as a subpackage of LEDA (Library Extension for Data Analysis) or KalTest (Kalman filter Test bench).
In this way we can minimize the number of user-implemented classes to the following three:
Notice also that track model can change site to site, which allows magnetic field variation along a particle trajectory.
The lasest version is available from the JLCCVS server as a module named KalTest in CDC Modules (CVSROOTemail@example.com:/home/cvs/cdc). The following is a snap shot.
KalTest is based on ROOT. Install ROOT if you haven't and set ROOTSYS environmental variable accordingly. You then need to set KalTest-related environmental variables by sourcing "setup" in the top directory of the KalTest source tree and make the libraries in it as follows:
The KalTest package contains the following test programs under examples/kaltest:
First build them as follows:
This produces a binary exectutable called EXKalTest in the "prod" subsubdirectory of each of the test program subdirectory. In order to run one of them, say "hybrid/prod/EXKalTest", do
where "-b" makes the test program to run batch mode without event
display. The other test programs, "cdc", "ct", and "simple"
have no event display facility and hence no "-b" option.
The package contains some reference materials in "doc":
KalTest package has been built and tested on MacOSX 10.5 and Scientific Linux 4.2 with ROOT5.26.00 and the gcc3.x or gcc4.x compiler.