ATLAS muon software
David Adams
11apr02 1600 EDT
Introduction
ATLAS has decided to move away from the "RD event" and old identifier
scheme and the muon group is using this as an opportunity to restructure
its software. This document is a proposal for how the software might be
structured. This is the third pass and comments are strongly encouraged.
Component structure
The following diagram shows the component structure of the system.
It shows classes that would be shared by different fitting and
algorithms. It is worthwhile to not that many of these could be common
with any tracking detector, specifically the ATLAS inner detectors.
(sdr,
pdf,
jpg)
Each box represents one or more packages and the arrows show the physical
dependencies. Each of the boxes is discussed below.
Package structure
The next figure shows how the above (and other) components could be
organized into packages. Again the directed lines indicate physical
dependencies.
(sdr,
pdf,
jpg)
Description of components
Generic Identifier
This package contains the generic Identifier class which is used to identify
elements of the ATLAS detector as described in ATLAS note
ATL-SOFT-2001-004.
Detector Description
The detector description specifies exactly which elements are present in the
ATLAS detector and how they are related. For example, it might specify the
number and types of MDT chambers, the number of planes in each chamber and
the number of tubes in each plane. The detector description uses generic
identifiers to label the different elements.
The detector description also includes detector geometry which
allows users to determine the size, position and orientation of
the detector elements. These could be either ideal or aligned values. It also
provides a description of the material associated with detector elements.
It is an important requirement that we be able to use generic identifiers
to retrieve these physical properties.
XIdentifier
These muon-specific identifiers provide a
convenient interface to the description of the muon system. Each muon identifier
corresponds to a particular generic identifier object. For details, see the
documentation
for the MuonIdentifiers package.
XDigit
A digit (or digitization) is the readout from a low-level detector element such
as a wire or tube. A digit hold some readout data, e.g. a TDC count, and the
identifier for element which was read out.
For a description of muon digit container, see the
documentation
for the MuonDigitContainer package.
RecoHit
RecoHit defines a common interface for hits that provide the measurements used
to fit tracks. Ideally this definition would be common to the central
tracker and muon groups so that tracks could be fitted with hits from both
systems.
(The dependency with XRecoHit could be inverted by providing an interpreter
for each type of hit instead of forcing each hit to satisfy the AbsHit
interface.)
XRecoHit
The muon system will likely define different hits for each detector type. Each
hit is associated with a single digit and uses the detector location to
construct a measurement from the digit. These might be combined to make more
complex hits representing segments or space points.
Surface
This is the abstract interface for a 5D surface in 6D track parameter
space.
XSurface
We will need to implement concrete surfaces at least for a plane and for
the DCA (distance of closest approach).
TrackFit
This is the description of a track at one point along its trajectory. It might
be a surface, five parameters and the associated error matrix.
Propagator
This is an abstract interface.
A propagator propagates a track fit to a new surface.
XPropagator
This is the concrete realization of a Propagator.
It may depend on detector geometry so that it can account for material.
There might be multiple versions with different trade-offs between
speed and precision.
TrackState
A track state describes a point along a track trajectory. It includes
the signed path distance, a track fit, the chi-square for that fit, and a
flag indicating the nature of the fit.
TrackSegment
This is describes a track over some finite range of its trajectory. It is able
to return a TrackFit for any surface intersected by the segment. It is made
up a collection of TrackStates.
Fitter
This is an abstract interface.
A Fitter is used to build track segments from hits.
XFitter
Concrete realization of Fitter.
There will likely be multiple versions using different fitting algorithms or
trade-offs between speed and precision.
Finder
These assign hits to track segments. They will generally need a track fitter to
distinguish real and fake tracks.
XFinder
Concrete realization of Finder.
Again there will be multiple version to trade off speed and performance and
so one can be compared against the other.