00001 //-------------------------------------------------------------------------- 00002 // File and Version Information: 00003 // $Id: TrkParams.h,v 1.1.1.1 2005/04/21 06:01:42 zhangy Exp $ 00004 // 00005 // Description: 00006 // Class to the parameters of a track. This class should be thought 00007 // of as a structure, storing the data objects which together form the 00008 // parameter set of a track. The 00009 // direct use of this class will be to describe 'simple' trajectories 00010 // (5-parameter helix, parabolic tracks, 6 parameter helix, 00011 // even 9 parameter helix). 00012 // 00013 // Environment: 00014 // Software developed for the BaBar Detector at the SLAC B-Factory. 00015 // 00016 //-------------------------------------------------------------------------- 00017 #ifndef TRKPARAMS_H 00018 #define TRKPARAMS_H 00019 00020 #include "MdcRecoUtil/DifIndepPar.h" 00021 00022 #include <iosfwd> 00023 00024 class TrkParams : public DifIndepPar { 00025 public: 00026 //************************** 00027 // Constructors and such 00028 //************************** 00029 TrkParams(int nParam); 00030 // Construct from a vector and error matrix 00031 TrkParams(const HepVector&,const HepSymMatrix&); 00032 // Copy constructor 00033 TrkParams(const TrkParams&); 00034 TrkParams& operator = (const TrkParams&); 00035 virtual TrkParams* clone() const; 00036 virtual ~TrkParams(); 00037 00038 //************************** 00039 // access 00040 //************************** 00041 void printAll(std::ostream& os) const; 00042 00043 // overloaded to invalidate caching. dangerous because non-virtual 00044 inline HepSymMatrix& covariance() ; 00045 inline const HepSymMatrix& covariance() const { return DifIndepPar::covariance(); } 00046 00047 const HepSymMatrix& weightMatrix() const ; 00048 00049 private: 00050 mutable bool _weightInverted; //is the weight matrix cached? 00051 mutable HepSymMatrix _weightMatrix; //the inverse of the weight matrix 00052 }; 00053 00054 inline HepSymMatrix& TrkParams::covariance() 00055 { 00056 _weightInverted=false ; 00057 return DifIndepPar::covariance(); 00058 } 00059 00060 #endif 00061