An introduction to TRF++ may be found at http://www-d0.fnal.gov/~dladams/trf.
The description below includes links to the code contained in this package. This version of the code may not be the most recent.
TRF++ package trfutil defines some utilities for use in other TRF++ packages. These classes and functions are not specific to track manipulation or finding. Some or all of these might be replaced with components from packages outside TRF++.
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 contained in these components are described below. Except where otherwise indicated, each class is contained in the component of the same name. The descriptions here are very brief. See the header files for more details.
There is also a template function is_equal which provides for the comparison of two floating point values allowing for some numerical roundoff.
The next four components define a series of classes for vector and matrix manipulation. These include the base class array which describes a fixed-length array and subclasses nvector, smatrix and matrix which describe vectors, symmetric matrices and non-symmetric matrices, respectively. It is expected that these classes will be replaced and discarded and direct use is discouraged. The current implementation of TRF++ introduces wrappers to hide these classes. See components TrackVector and HitVector in package trfbase.
Function RandomSeed simply returns a new random number seed. Presently this seed is simply generated with the default random number generator.
The class RandomGenerator encapsulates a random number generator. It is contained in the component of the same name. The seed defining the state of the generator may be fetched or reset. Random numbers can be generated according to a flat or Gaussian distribution. Each instance is independent, i.e. uses its own random number engine.
Class RandomRegistry manages a collection of random generators. Generators may be added to the registry at any time. The state of all known generators may be recorded at one time and then recovered at another.
Class RandomSimulator provides the abstract interface for a class which will make use of one or more random generators. It defines a method to return the generators and implements a method to register them.
Concrete quality classes inherit from the base class Quality and define the objects and algorithm used to evaluate the quality. There is a method to indicate whether the quality is acceptable and a method that is used to compare one quality with another.
There are two concrete quality subclasses: InvalidQuality and SimpleQuality. Objects of the former type are always invalid and objects of the latter type are always valid and use a double (smaller is better) as their measure of quality. The Match method _quality may implemented in terms of these any time the quality of a match can be expressed in terms of a single discriminant.
The class StatusValue is a template for storing a status flag (integer) and a value of any type. Typedefs are provided for type int (StatusInt) and double (StatusDouble). The latter is probably most useful and is the return type for both of the RootFinder methods. It allows a double to be returned along with an index indicating if the called routine failed in some way. By convention, zero means success.
The Tuple header file defines the typedef Tuple which describes an ntuple. At present, this corresponds to the CLHEP ntuple class HepTuple.
Questions or comments to dladams@fnal.gov.