README TRACKING Sept. 22, 2008 David Lawrence NOTE: This is a 2nd version of this README which completely discards the 1st version. The 1st version is available in svn in revison 1921. The charged particle tracking reconstruction is broken up into 3 main stages: 1.) Track finding with helical fit (DTrackCandidate class) 2.) Track fitting to wire position (DTrack class) 3.) Track fitting to drift times (DParticle class) The DTrackCandidate objects are created separately for the FDC and CDC in their respective tagged factories. The default DTrackCandidate factory combines the two lists into a single list. Candidates from the 2 systems that appear to be the same physical track are combined so that the track isn't fit twice. The DTrack and DParticle objects are fits based on wire-position only and fits based on drift times respectively. Both will use the same DTrackFitter based object to do the heavy lifting in fitting the track. The hit selection for the wire-based fits is done in the DTrack_factory class. The hits used in the fit (DCDCTrackHit and DFDCPseudo objects) are added as associated objects to the DTrack object. The DParticle_factory class currently uses the hit list from the DTrack associated objects. This means the time-based fits are done using the exact same list of hits used for the wire-based fits. DParticle objects also have the hit objects added as associated objects so the hits used in the fit can always be recovered. The fitting itself is done in a couple of ways: Helical fitters: ---------------- The DQuickFit and DRiemannFit classes do (essentially) helical fits using 2 different techniques. Both are used in the current track finders. A 3rd method is in the DHoughFind class which also does an effective helical fit, but is considerably slower. The DHough class is not currently used. Non-helical fitters: -------------------- The DTrackFitter class is meant as a base class for the "full" (i.e. respecting the inhomgenous field) track fitters. Currently, only one fitter is implemented in this framework (DTrackFitterALT1), but others are expected soon. This allows the algorithm to be easily swapped out for both wire-based and time-based tracks. The DKalmanFilter class implements another algorithm currently being developed. The ALT1 fitter is a global fitter using a non-standard parameterization of the momentum parameters. Most spcifically, it uses total momentum and polar angle theta as 2 of the parameters. The ALT2 fitter is identical to ALT1 except that it uses a more standard parameterization that includes 1/p and dip angle. The ALT3 fitter implements the DKalmanFilter class to fit via the Kalman filter technique. The DReferenceTrajectory and DMagneticFieldStepper classes are utility classes used to swim tracks through the inhomogeneous magnetic field. They do not currently account for energy loss.