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 trffind provides classes for track finding.
A separate document describes the creation and usage of cut records in PTrack propagation.
The physical components include:
Their dependencies are illustrated in the physical dependency diagram.
The class diagram will show some of the classes and their relationships.
Another class diagram shows the associations for those classes most important for track finding.
This package depends on the following external packages:
ClusterFilterWithPTracks is an abtract subclass which adds the capability to maintain a list of PTracks for use with filtering.
A checker tests a single track and returns true if the the track is acceptable. The abstract base class is Checker. Two concrete subclasses are provided:
A filter tests a list of tracks and returns a matching array of boolean flags indicating which tracks should be accepted. The abstract base class is Filter. Three concrete implementations are provided:
Class CandidateLayer is simply an aggregation of a layer, a propagator and an add fitter.
Paths are arranged in a tree structure providing a map for finding tracks. Each path consists of a candidate layer to be searched for hits (or assigned misses), checkers used to verify new tracks and an optional path stop. The path stop includes a list of filters which are to be applied collectively to all tracks that reach the stop. Only tracks accepted by these filters continue beyond the stop.
PathTree is a list containing a path and all its descendants. It can be used to print or write out the tree.
Class PTrack represents a track in the midst of path-based track finding. It includes an MTrack object (track with hits and misses), a path and the status from the last propagation. It provides a method to propagate its track to the next surface in the path layer and construct and return a list of new tracks. One new track is obtained by adding a miss for that surface and the rest by adding (and fitting) each of the nearby hits.
Class TrackExtender has the responsibility of extending a list of tracks (PTrack objects). It maintains a list of path stops. Tracks are propagated until all reach stops and then the next stop is processed. These actions are repeated until the list of stops is exhausted. The TrackExtender event trace shows the internal workings of the method extend.
Class TrackFinder is constructed from a starting track and head path. It uses these to construct a track list with one starting track and then uses a track extender to extend this list. It then returns the list of found tracks. The TrackFinder event trace demonstrates the use of that class and of the TrackExtender class.
Questions or comments to dladams@fnal.gov.