00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkDifTraj.h,v 1.2 2005/07/18 02:56:07 zhangy Exp $ 00004 // 00005 // Description: Abstract base class for Trajectory objects designed to 00006 // live inside TrkReps as descriptions of tracks. Adds to the base 00007 // class functions that provide derivatives related to the underlying 00008 // independent parameters. The interface for getting the parameters 00009 // is deferred to more derived classes. 00010 // 00011 // Environment: 00012 // Software developed for the BaBar Detector at the SLAC B-Factory. 00013 // 00014 // Author(s): Steve Schaffner, Dave Brown 00015 // 00016 //------------------------------------------------------------------------ 00017 00018 #ifndef TRKDIFTRAJ_H 00019 #define TRKDIFTRAJ_H 00020 #include "MdcGeom/Trajectory.h" 00021 00022 class Trajectory; 00023 class DifPoint; 00024 class DifVector; 00025 class TrkSimpTraj; 00026 00027 // Class interface // 00028 class TrkDifTraj : public Trajectory { 00029 public: 00030 //************** 00031 // Constructors, etc. 00032 //************** 00033 // By default, the valid flight distance range is really big 00034 TrkDifTraj(const double lowlim = -99999.,const double hilim = 99999.); 00035 virtual ~TrkDifTraj(); 00036 00037 //************** 00038 // Access 00039 //************** 00040 // DifNumber version of position, direction, 2nd deriv information 00041 virtual void getDFInfo(double fltLen, DifPoint& pos, DifVector& direction, 00042 DifVector& delDirect) const = 0; 00043 virtual void getDFInfo2(double fltLen, DifPoint& pos, DifVector& direction) const; 00044 // Return locally-valid simple trajectory (complete with parameters) and the 00045 // equivalent flight length along it. Trivial except for piece-wise trajs 00046 virtual const TrkSimpTraj* localTrajectory(double fltLen, double& localFlt) 00047 const = 0; 00048 00049 private: 00050 // Preempt 00051 TrkDifTraj& operator= (const TrkDifTraj&); 00052 TrkDifTraj(const TrkDifTraj &); 00053 }; 00054 00055 #endif