TRF++ Cylinder Extensions (package trfcyl)

27nov00 1120
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 trfcyl provides extensions to trfbase for a cylindrical geometry. It is a simple example of how to extend the trfbase classes.

The physical components include:

Their dependencies are illustrated in the physical dependency diagram.

The class diagram shows the classes and their relationships.

This package depends on the following external packages:

A brief description of the classes described in the above components follows. See the header files for more details. Each component contains one class of the same name unless otherwise indicated. The descriptions are brief. See the header files for details.


Surfaces

The components SurfCylinder and BSurfCylinder each define a surface class. SurfCylinder is an unbounded cylinder with axis along the z-axis. It inherits directly from the trfbase class Surface and is a pure surface. Inspection of its header shows that it provides the required interface. Comments in the header document the the associated track parameters.

BSurfCylinder inherits from SurfCylinder and adds z-limits to the cylinder. Again, inspection of its header shows that it provides the interface required for a bounded surface.

SurfCylinderParameters defines a global enum so that surface indices can be accessed without qualification, e.g. IPHI instead of SurfCylinder::IPHI.

Propagators

Component PropCyl defiens a propagator. It inherits from PropDirected and provides the required methods to propagate VTrack and ETrack objects. It only handles propagation from between SurfCylinder surfaces. The surface types are required by assert statements and then checked again in case the assertions are disabled.

PropJoinCyl is propagator constructed from two other propagators. It uses the first to propagate a track to a cylinder at the same position and then uses the second to propagate from that cylinder to the final surface.

Hits

Two kind of hits are introduced: a pure phi measurement and linear combination of phi and z. Both are defined on the surface of a cylinder. In both cases, implementation is very simple. Each cluster generates exactly one hit whose measurement and error are independent of the input track.

The pure phi measurement is defined in component HitCylPhi which contains a hit class of the same name and the associated cluster class ClusterCylPhi. Similarly, the phi-z combination cluster class ClusterCylPhiZ is defined in component HitCylPhiZ which also defines a hit class with the same name.

Cluster finder

CluserFindCyl is a cluster finder manager suitble for use with clusters of type ClusCylPhi and ClusCylPhiZ. The nearness of a track to a cluster is measured with a chi-square difference.

Layer

Component LayerCylinder defines a very simple layer class. The layer consist of one surface which is of type BSurfCylinder. It derives from HitLayer and maintains a simple list of hits.

Generators

The classes HitCylPhiGenerator and HitCylPhiZGenerator provide concrete implementations of the trfbase abstract class HitGenerator. They randomly generate ClusCylPhi and ClusCylPhiZ objects, respectively.

Fitters

There are five components containing add fitters for use when starting tracks in a cylindrical detector.
  • AddFitCyl_Phi works for the first hit on a track providing it is of type HitCylPhi.
  • AddFitCyl_Phi_Phi works for the second hit on a track providing both are of the aforementioned type. Hits below an adjustable pT threshold are rejected.
  • AddFitCyl_Phi_Phi_Phi works for the third hit on a track providing all are of the aforementioned type. Hits with a chi-square difference above a specified limit are rejected.
  • AddFitCyl_PhiZ adds the first hit of type HitCylPhiZ to a track with any number of HitCylPhi hits.
  • AddFitCyl_PhiZ_PhiZ adds the second hit of type HitCylPhiZ to a track which also has any number hits of type HitCylPhi.

    Checkers

    To improve the tracking performance, we check on track parameters during the finding stage.
  • CheckCylDca extrapolates the track parameters to the beam axis and calculates the distance of closest approach (dca) to the beam in the x-y plane. If this value is above the cut threshold, the track is terminated.

    Tuple

    The class CylTrackNtuple constructs and fills an ntuple made up of Monte Carlo and reconstructed tracks matched at a cylindrical surface.

    Thin Cylinder multiple scattering.

    ThinCylMS modifies an ETrack's error matrix to account for multtiple scattering at a thin cylinder.

    ThinCylMsSim smears a VTrack vector to simulate multiple scattering at the same surface.


    Global track ntuple

    The contents of the global track ntuple are listed in the header for the ntuple filler. Some PAW macros to aid in analysis of the ntuple may be found in trfcyl/kumac.

    Register types

    The component register_trffit_types registers all types for this package with ObjTable.


    Questions or comments to dladams@fnal.gov.