Anaphe In Depth
History
Anaphe grew from the LHC++ project, but much of the software is new.
The interface wrappers and the Lizard project were started in September 1999, and
a Lizard prototype was ready by CHEP 2000. Work on the production version began in
April 2000 and the first `fully functional' release was in June 2001. The first
version based completely on open source software was released in September 2001.
Components
Core C++ Packages (developed in-house)
- FML is a powerful high-level library for
developing fitting and minimisation programs. It is based on Gemini (see below).
- Gemini is a thin wrapper
layer which provides a uniform API for minimisation. Two flavours exist, based on Minuit
and NAG-C. Other minimiser engines could be added in future.
Release 5:
- The series of AIDA_*_native packages are direct (native) implementations of
the AIDA interfaces (well, through another layer of abstract interfaces for better
decoupling of the packages), while the AIDA_XXX_YYYpackages are implementations
of the XXX component of AIDA as a wrapper to the existing YYY package (e.g., AIDA_Fitter_FML
is an implementation of the AIDA Fitter interfaces using the FML package.
Older releases:
- HTL
is a fast, efficient histogramming library. It has
both transient and persistent flavours; persistent HTL is based on
HepODMBS/Objectivity.
- Qplotter is a 2D and
pseudo-3D graphical plotter based on Qt.
- NtupleTag is a package for ntuple analysis. It is
designed to work with OO databases and a version based on HepODBMS/Objectivity has been
written. However, a version based on HBOOK has also been developed, with (obviously)
restricted functionality.
Lizard and the C++ Wrappers (developed in-house)
- The Wrappers are
implementations of the AIDA interfaces in terms of other Anaphe components. The
original wrappers for the AIDA1.x/Anaphe interfaces were all named along the lines
of AIDA_xxx. The wrappers for the AIDA 2.x interfaces are named
AIDA2_xxx.
- Lizard is a facade. It draws together
functionality from all the C++ components (via the wrappers) and makes them available
inside an interactive Python session with a coherent look-and-feel along the lines of
PAW. In addition it provides `shortcuts' (short commands for frequent tasks),
interactive help, and the Analyzer, a simple way of compiling and running
arbitrary C++ code on-the-fly with transparent two-way access to histograms, ntuples
etc.
External C++ Packages (open source)
-
CLHEP is a
collaborative effort to produce various utility libraries for use in HEP. It includes
vectors and matrices, random numbers, geometry, units and constants, the StdHEPC++
classes for defining particles and events, and a library of function objects
("functors") representing various mathematical functions.
-
HepODBMS is a special
ODMG standard-compliant interface to any OO database,
specifically designed by the
DB group for use in HEP data storage and
retrieval. An implementation based on Objectivity has also been written by them, and
provides the base for most Objectivity use at CERN.
-
Qt is a powerful and
intuitive 2D graphics ("widget") library for building GUIs. It is provided by a
commercial company
(
Trolltech) but distributed by under the
Lesser GNU Public License.
External C++ Packages (commercially licensed)
- NAG-C
is a large library of high-quality mathematical functions written in C by the
NAG company. It may eventually be
replaced by the GNU Scientific Library or other open-source products, after verification
and acceptance by the LCG.
-
Objectivity/DB is a powerful OO
database which can handle extremely large data volumes. The LHC community has decided
to gradually phase out its use in favour of a home-grown solution (POOL), which
will be developed as part of the LCG.
-
OpenInventor is a sophisticated 3D
graphics library based on OpenGL. It is not used by any other Anaphe components but
is distributed with Anaphe because of user demand.
|