00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkKalTrk.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // class TrkKalTrk. Transient interface base class for persistent 00007 // form of Kalman track (mini-track). 00008 // 00009 // Environment: 00010 // Software developed for the BaBar Detector at the SLAC B-Factory. 00011 // 00012 // Copyright Information: 00013 // Copyright (C) 2000 Lawrence Berkeley Laboratory 00014 // 00015 // Author List: 00016 // Dave Brown 10/31/00 00017 //------------------------------------------------------------------------ 00018 #ifndef TRKKALTRK_HH 00019 #define TRKKALTRK_HH 00020 00021 class TrkHitOnTrk; 00022 class TrkHotList; 00023 class TrkSimpTraj; 00024 class TrkErrCode; 00025 #include <iosfwd> 00026 00027 #include "MdcRecoUtil/PdtPid.h" 00028 #include "TrkBase/TrkEnums.h" 00029 00030 class TrkKalTrk { 00031 public: 00032 // only default constructor, as there can be NO DATA MEMBERS in this class 00033 TrkKalTrk(); 00034 // pure virtual destructor, as this is a pure interface class 00035 virtual ~TrkKalTrk() = 0; 00036 // a TrkKalTrk knows what its default PID Is 00037 virtual PdtPid::PidType defaultHypo() const = 0; 00038 // it can tell you which fit a given hypo points to 00039 virtual PdtPid::PidType fitHypo(PdtPid::PidType hypo) const = 0; 00040 // it knows what its (persistent) trk id is 00041 virtual unsigned long trackId() const = 0; 00042 // it can return a seed trajectory. This function _RETURNS OWNERSHIP_ 00043 virtual TrkSimpTraj* seedTrajectory() const = 0; 00044 // it can return the T0 used when the track was fit 00045 virtual double usedT0() const = 0; 00046 // it can report the fit status of a paritcular hypo 00047 virtual bool isValid(PdtPid::PidType hypo) const = 0; 00048 virtual bool isCurrent(PdtPid::PidType hypo) const = 0; 00049 virtual TrkErrCode fitStatus(PdtPid::PidType hypo) const = 0; 00050 // A KalTrk should know how many svt, mdc hots and fits it has 00051 virtual unsigned nSvt() const = 0; 00052 virtual unsigned nMdc() const = 0; 00053 virtual unsigned nFit() const = 0; 00054 // one implemented function; printout. 00055 void print(std::ostream& os) const; 00056 private: 00057 }; 00058 00059 std::ostream& operator<<(std::ostream& os, const TrkKalTrk&); 00060 00061 #endif