TRF++ base layer classes (package trflayer)

27nov00 1115
Code version 0.63

An introduction to TRF++ may be found at http://www-d0.fnal.gov/~dladams/trf.


Links to code

The description below includes links to the code contained in this package. This version of the code may not be the most recent.

Description

TRF++ package trfbase defines the base layer and associated classes.

The physical components include:

Their dependencies are illustrated in the physical dependency diagram.

The (not up-to-date) class diagram shows some of the classes and their relationships.

This package depends on the following external packages:

The classes defined in the above components are described below. Unless otherwise indicated, each class is described in the component of the same name. The descriptions here are brief. See the heaser files for details.


Cluster containers

Cluster containers hold pointers to clusters. There interface defines a method to return the clusters as a ClusterList. ClusterContainerStandard is a concrete iomplementation that maintains the list in this form. It is expected that other implementations will orgainze clusters in forms optimal for filtering and provide correponding access methods.

Cluster finders

Cluster finders are used to fetch the clusters associated with a surface. There is a method to fetch all clusters and another to fetch those near a track. The interface is describe in abstract base class ClusterFinder. Abstract class ClusterFindManager extends this interface to add methods to manage an internal list of clusters. ClusterFindAll is a simple concrete subclass of the latter for which all tracks are considered to be near any track. Cluster finders are intended for use by layers.

Layers

Abstract base class Layer is used to describe the geometry of the detector. A layer is made up of surfaces and may hold these surfaces either directly or indirectly, e.g. through other layers. A layer has two major reponsibilities. The first is to maintain a list of hits associated with each surface. The second is to provide the method propagate which propagates a track to the first of its surfaces which can be reached. The layer is passed a propagator to help carry this out.

The propagation returns a list of LTrack objects corresponding to each possible propagation (next surface). LTrack contains a kinematic track (ETrack) and an object describing the status (LayerStat). There is a second method for propagation which takes an LTrack in place of the ETrack. The preceeding status can be used as hint so the layer can quickly determine the current position of the track.

LayerPtr is a pointer to Layer which does not provide automatic conversion to or from bare pointers.

LayerStat contains a pointer to the layer, a flag indicating the internal state for the track and a flag indicating whether the track can reach any more surfaces in the layer. It may also contain a miss and a cluster finder.

LayerStatChain is a linked list of LayerStat objects. Objects of this type are created an modified by LTrack objects.

LayerSimulator provides the interface for a class which generates simulated hits and assigns them to a layer. There is a method which provides a VTrack as input for this generation. There is another method for dropping all the hits.

LayerSimGeneric is a generic concrete implementation of LayerSimulator. It is constructed from a hit generator and propagator which are used in the generation.

Detectors

Class Detector describes a collection of layers organized into a hierarchy of detectors. The hierarchy is viewed through the top-level detector which provides access by name to all layers.

DetectorPtr is a pointer to Detector which does not provide automatic conversion to or from bare pointers.

Class DetectorSimulator maintains a collection of layer simulators. It ensures they are consistent with a detector and provides methods to add and drop clusters collectively.


Questions or comments to dladams@fnal.gov.