An introduction to TRF++ may be found at http://www.bonner.rice.edu/adams/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 trfzp provides classes for describing and managing planar surfaces perpendicular to Z axis.
The physical components include:
Their dependencies are illustrated in the physical dependency diagram.
The class diagram [this diagram does not yet exist]. shows the classes and their relationships.
This package depends on the following external packages:
The classes defined in the above components are described below. Each class is defined in a component of the same name unless otherwise indicated. These descriptions are brief. See the header files for details.
Both plane classes are unbounded surfaces, i.e. they inherit from class Surface.
Class SurfZPlane describes a plane perpendicular to the z-axis. It is characterized by its z-position. The track parameters are (x, y, dx/dz, dy/dz, q/p) where distances are measured in cm, q is the charge such that q=-1 for an electron and p is the momentum in GeV/c.
Classes BSurfZPlane add rectangular boundaries to the pure surface classes. CrossStat is defined in the following way: if a track is above the plane ( along plane normal) CrossStat::IN is set, if a track is under the plane ( along plane normal) CrossStat::OUT is set.
Class SurfPolygon is a Polygon in XY plane and is given by coordinates of its vertices . The Polygon is assumed to be closed , t.i. the first vertex is automaticly the last. The vertices has to be given in the righ order ( clockwise or counterclockwise ), there is a check that this is so. And Polygon is always a concave surface ( there is a check that start complaining if it is not so).
Component PropZZ contain a propagator. It inherits from PropDirected and provide the required methods to propagate VTrack and ETrack objects. It only handles propagation between two correspondent surfaces. PropZZ : between two ZPlanes. The surface types are required by assert statements and then checked again in case the assertions are disabled.
Propagator assumes forward propagation as propagation forward in time and backward - as propagation backward in time. Track is required to have defined direction. No propagation if original track momentum is parallel to a destination plane.
Two kinds of hits are introduced for Surface ZPlane: linear combination of x and y and 2-dimentional hits x,y . Each cluster generates exactly one hit whose measurement and error are independent of the input track.
The wx*x+wy*y combination cluster class ClusterZPlane1 is defined in component HitZPlane1 which also defines a hit class with the same name. The 2D measurement x,y is defined in component HitZPlane2 which contains a hit class of the same name and the associated cluster class ClusterZPlane1
The class HitZPlane1Generator and HitZPlane2Generator provide concrete implementations of the trfbase abstract class HitGenerator. I randomly generates ClusZPlane1 and ClusZPlane2 objects, respectively. In 1D case clusters are generated in accordance to given standard deviation. In 2D case clusters are generated in accordance to given error matrix.
There is one type of cluster finder defined for each type of cluster: ClusFindZPlane1, ClusFindZPlane2.
The nearness of a track to a cluster is measured with a chi-square difference.
Component LayerZPlane defines a very simple layer class. The layer consists of one surface which is of type SurfZPlane.Method propagate in LayerZPlane propagates track in such a possible way ( BACKWARD or FORWARD) that track can cross ZPlane and checks surface bounds for a propagated track.
There are two components containing add fitters for use when starting tracks in a planar detector.
2 hit fitters set direction of the track (along the surface direction) assuming backward in time propagation. Tracks are rejected if momentum is too small (radius is smaller than have a distance between two hits) judging by magnetic field.
Questions or comments to dladams@fnal.gov or skulik@fnal.gov.