GAUDI User Guide

Chapter 1
Introduction

1.1  Purpose of the document

This document is intended as a combination of user guide and tutorial for the use of the Gaudi application framework software. It is complemented principally by two other "documents": the Architecture Design Document (ADD) [1] , and the online auto-generated reference documentation [2] . A third document [3] lists the User Requirements and Scenarios that were used as input and validation of the architecture design. All these documents and other information about Gaudi, including an online version of this user guide, are available from the Gaudi home page: http://lhcb.cern.ch/computing/Components/html/GaudiMain.html

The ADD contains a discussion of the architecture of the framework, the major design choices taken in arriving at this architecture and some of the reasons for these choices. It should be of interest to anyone who wishes to write anything other than private analysis code.

As discussed in the ADD the application framework should be usable for implementing the full range of offline computing tasks: the generation of events, simulation of the detector, event reconstruction, testbeam data analysis, detector alignment, visualisation, etc. etc..

In this document we present the main components of the framework which are available in the current release of the software. It is intended to increment the functionality of the software at each release, so this document will also develop as the framework increases in functionality. Having said that, physicist users and developers actually see only a small fraction of the framework code in the form of a number of key interfaces. These interfaces should change very little if at all and the user of the framework cares very little about what goes on in the background.

The document is arranged as follows: Chapter 2 is a short resume of the framework architecture, presented from an "Algorithm-centric" point of view, and re-iterating only a part of what is presented in the ADD.

Chapter 3 contains a summary of the functionality which is present (and not present) in the current release, and details of how to obtain and install the software.

Chapter 4 discusses in some detail an example which comes with the framework library. It covers the main program, some of the basic aspects of implementing algorithms, the specification of job options and takes a look at how the code is actually executed. The subject of coding algorithms is treated in more depth in chapter 5 .

Chapter 6 discusses the use of the framework data stores. Chapters D , 8 , 9 , 10 discuss the different types of data accessible via these stores: event data, detector description data (material and geometry), histogram data and n-tuples.

Chapter 11 deals with services available in the framework: job options, messages, particle properties, and also has a section on developing new services. A rather more technical subject, that of the use and implementation of converter classes is discussed in Chapter 12 .

The use of certain SicB facilities from within Gaudi, and the use of FORTRAN code is discussed in Chapter 13 . Chapter 14 gives pointers to the documentation for class libraries which we are recommending to be used within Gaudi.

Chapter 15 is a new chapter describing a prototype implementation of visualisation facilities inside Gaudi. Finally, Chapter 16 is a small guide to designing classes that are to be used in conjunction with the application framework.

Appendix A contains a list of references. Appendix B lists the options which may be specified for the standard components available in the current release. Appendix C gives the details of the syntax and possible error messages of the job options compiler.

1.2  Conventions

1.2.1  Units

We have decided to adopt the same system of units as CLHEP, as used also by GEANT4. This system is fully documented in the CLHEP web pages, at the URL: http://wwwinfo.cern.ch/asd/lhc++/clhep/manual/UserGuide/Units/units.html .

Here we reproduce the list of basic units:

Note that this differs from the convention used in SICB, where the basic units of length, time and energy are, respectively, centimetre, GeV, second.

1.2.2  Coding Conventions

The Gaudi software follows (or should follow!) the LHCb C++ coding conventions described in reference [4] . One consequence is that the specification of the C++ classes is done in two parts: the header or ".h" file and the implementation or ".cpp" file.

1.2.3  Conventions of this document

Angle brackets
are used in two contexts. To avoid confusion we outline the difference with an example.

The definition of a templated class uses angle brackets. These are required by C++ syntax, so in the instantiation of a templated class the angle brackets are retained:

 
AlgFactory<UserDefinedAlgorithm> s_factory;

This is to be contrasted with the use of angle brackets to denote "replacement" such as in the specification of the string:

 
"<concreteAlgorithmType>/<algorithmName>"

which implies that the string should look like:

 
"EmptyAlgorithm/Empty"

Hopefully what is intended will be clear from the context.

1.3  Editor's note

This document is a snapshot of the Gaudi software at the time of the release of version 3. We have made every effort to ensure that the information it contains is correct, but in the event of any discrepancies between this document and information published on the Web, the latter should be regarded as correct, since it is maintained between releases and, in the case of code documentation, it is automatically generated from the code.

We encourage our readers to provide feedback about the structure, contents and correctness of this document and of other Gaudi documentation. Please send your comments to the editor, Marco.Cattaneo@cern.ch