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)

  • Leave the Anaphe site 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.
  • Leave the Anaphe site HepODBMS is a special Leave the Anaphe site ODMG standard-compliant interface to any OO database, specifically designed by the Leave the Anaphe site 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.
  • Leave the Anaphe site Qt is a powerful and intuitive 2D graphics ("widget") library for building GUIs. It is provided by a commercial company (Leave the Anaphe site Trolltech) but distributed by under the Leave the Anaphe site 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 Leave the Anaphe site NAG company. It may eventually be replaced by the GNU Scientific Library or other open-source products, after verification and acceptance by the LCG.
  • Leave the Anaphe site 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.
  • Leave the Anaphe site 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.