GLAST uses a generic, if in some respects limited, geometry description format. Low-level code has no hard-coded assumptions; all geometry information is obtained from the description. Even in top-of-the-food-chain application code, such assumptions are few and far between. The same description is used by simulation, reconstruction, or as input to a small program which generates a HepRep file suitable for use with visualization programs like Fred.
The description uses an XML format descended from the Atlas Generic Detector Descsription language, AGDD (as it was a few years ago, described in this presentation from 1999 and this one from 2000), with some significant additions. The information which can be represented comes in several categories.
<prim name= "CsIWidth" value= "26.7"> (Transverse) width of a CsI crytal. Changed from 26.714mm on 18 June, 2003.</prim>Here is a derived constant:
<const name="CsIEnvX">
<notes>Long dimension of envelope containing a CsI crystal
and its diodes</notes>
<add>
<refer refTo="CsILength" />
<mul>
<const value="2" uType="count"/>
<refer refTo="diodeX" />
</mul>
</add>
</const>
<composite name="CsI" density = "4.51">
<addmaterial material="Cesium">
<natoms n="1" />
</addmaterial>
<addmaterial material ="Iodine">
<natoms n="1" />
</addmaterial>
</composite>
The format is more fully described in a tutorial. The files currently in use may be found in the package xmlGeoDbs. See particularly files in the directory xmlGeoDbs/xml/flight/
Note that the identifiers referred to above must exist for all volumes in the description since particles can interact with them, hence they are of interest to the MC propagator. However real data is only read out by active volumes. They are identified for read-out by a different scheme. This document describes the volume identifiers and how they relate to readout identifiers. See the package idents for utilities which convert one sort of identifier to the other.
The kinds of code involved can be divided into rough classes:
GlastSvc/GlastSvc/GlastDetSvc/IGeometry.h (visitor interface) andUnlike detModel, GlastSvc is a Gaudi package; that is, it makes use of Gaudi services, extends Gaudi classes, etc.
GlastSvc/GlastSvc/GlastDetSvc/GlastDetSvc.h (queries).
Most important ones are in the special diagnostic package detCheck which depends on detModel, xmlUtil and the rest of the XML machinery, but nothing else. In particular, these diagnostics do not use GlastSvc and are not themselves Gaudi applications. See detCheck's Doxygen mainpage for details.
The Release Manager runs a couple of these programs for each new tag of GlastRelase and puts links to the output on the GlastRelease Summary Page: xml Geometry Parameters (output from constsDoc.exe) and Materials Summary (output from summary.exe).
Joanne Bogart
Last modified: