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:
- SurfCylinder (
header,
source,
test )
- SurfCylinderParameters (
header )
- BSurfCylinder (
header,
source,
test )
- PropCyl (
header,
source,
test )
- PropJoinCyl (
header,
source,
test )
- HitCylPhi (
header,
source,
test )
- HitCylPhiZ (
header,
source,
test )
- ClusterFindCyl (
header,
source,
test )
- LayerCylinder (
header,
source,
test )
- HitCylPhiGenerator (
header,
source,
test )
- HitCylPhiZGenerator (
header,
source,
test )
- AddFitCyl_Phi (
header,
source,
test )
- AddFitCyl_Phi_Phi (
header,
source,
test )
- AddFitCyl_Phi_Phi_Phi (
header,
source,
test )
- AddFitCyl_PhiZ (
header,
source,
test )
- AddFitCyl_PhiZ_PhiZ (
header,
source,
test )
- CylTrackNtuple (
header,
source,
test )
- ThinCylMS (
header,
source,
test )
- ThinCylMsSim (
header,
source,
test )
- ThinCylMs (
header,
source,
test )
- CheckCylDca (
header,
source,
test )
- register_trffind_types (
header,
source,
test )
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.