00001
00002
00003
00004 #ifndef MDCTRACK_H
00005 #define MDCTRACK_H
00006
00007 #include "MdcRecEvent/RecMdcTrack.h"
00008 #include "MdcRecEvent/RecMdcHit.h"
00009 class MdcSeg;
00010 class MdcSegListO;
00011 class MdcLayer;
00012 class BesAngle;
00013 class TrkRep;
00014 class TrkRecoTrk;
00015 class TrkExchangePar;
00016 class TrkContext;
00017
00018
00019 class MdcTrack {
00020 public:
00021 MdcTrack(TrkRecoTrk* aTrack);
00022 MdcTrack(int nsupers, const TrkExchangePar& par, double chisq,
00023 TrkContext&, double trackT0);
00024 ~MdcTrack();
00025 bool operator==(const MdcTrack& tk) const;
00026
00027 TrkRecoTrk& track() {return *_theTrack;}
00028 const TrkRecoTrk& track() const {return *_theTrack;}
00029 void setTrack(TrkRecoTrk* trk) {_theTrack = trk;}
00030 int hasCurled() const {return _haveCurled;}
00031 const MdcLayer *firstLayer() const {return _firstLayer;}
00032 const MdcLayer *lastLayer() const {return _lastLayer;}
00033
00034 void setHasCurled(bool c = true) {_haveCurled = c;}
00035 void setFirstLayer(const MdcLayer *l) {_firstLayer = l;}
00036 void setLastLayer(const MdcLayer *l) {_lastLayer = l;}
00037
00038
00039 int projectToR(double radius, BesAngle &phiIntersect, int lCurl = 0) const ;
00040 int projectToR(double radius, BesAngle &phiIntersect, double &arcLength,
00041 int lCurl = 0) const;
00042
00043 void storeTrack(int trackId, RecMdcTrackCol* trackList, RecMdcHitCol* hitList,int tkStat);
00044
00045 private:
00046 TrkRecoTrk* _theTrack;
00047 const MdcLayer *_firstLayer;
00048 const MdcLayer *_lastLayer;
00049 int _haveCurled;
00050
00051 MdcTrack& operator= (const MdcTrack&);
00052 MdcTrack(const MdcTrack&);
00053 };
00054
00055 #endif
00056
00057
00058
00059
00060
00061
00062