Athena Developer Guide
Athena Developer Guide
Athena Developer Guide
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>Athena</strong><br />
Chapter 18 Framework packages, interfaces and libraries Version/Issue: 2.0.0<br />
Chapter 18<br />
Framework packages, interfaces and<br />
libraries<br />
18.1 Overview<br />
It is clearly important to decompose large software systems into hierarchies of smaller and more<br />
manageable entities. This decomposition can have important consequences for implementation related<br />
issues, such as compile-time and link dependencies, configuration management, etc. A package is the<br />
grouping of related components into a cohesive physical entity. A package is also the minimal unit of<br />
software release.<br />
In this chapter we describe the Gaudi package structure, and how these packages are implemented in<br />
libraries.<br />
18.2 Gaudi Package Structure<br />
The Gaudi software is decomposed into the packages shown in Figure 18.1..<br />
At the lower level we find GaudiKernel, which is the framework itself, and whose only dependency<br />
is on the GaudiPolicy package, which contains the various flags defining the CMT [6]<br />
configuration management environment needed to build the Gaudi software. At the next level are the<br />
packages containing standard framework components (GaudiSvc, GaudiDb, GaudiTools,<br />
GaudiAlg, GaudiAud), which depend on the framework and on widely available foundation<br />
libraries such as CLHEP and HTL. These external libraries are accessed via CMT interface packages<br />
which use environment variables defined in the ExternalLibs package, which should be tailored to<br />
page 157