00001 /* 00002 * 00003 * this class models "Track" used in Mdc Reconstruction 00004 * 00005 * ********************************************************/ 00006 00007 #ifndef RECMDCTRACK_H 00008 #define RECMDCTRACK_H 00009 #include "GaudiKernel/ContainedObject.h" 00010 #include "GaudiKernel/SmartRef.h" 00011 #include "GaudiKernel/SmartRefVector.h" 00012 #include "GaudiKernel/ObjectVector.h" 00013 #include "EventModel/EventModel.h" 00014 #include "DstEvent/DstMdcTrack.h" 00015 #include "CLHEP/Matrix/Vector.h" 00016 #include "CLHEP/Matrix/SymMatrix.h" 00017 #include "CLHEP/Vector/ThreeVector.h" 00018 #include "CLHEP/Geometry/Point3D.h" 00019 #include "RecMdcHit.h" 00020 00021 extern const CLID& CLID_RecMdcTrack; 00022 typedef SmartRefVector<RecMdcHit> HitRefVec; 00023 class RecMdcTrack : public DstMdcTrack { 00024 public: 00025 virtual const CLID& clID() const; 00026 static const CLID& classID(); 00027 00028 //ctor and dector 00029 RecMdcTrack(); 00030 RecMdcTrack(const RecMdcTrack&); 00031 RecMdcTrack(const DstMdcTrack&); 00032 RecMdcTrack& operator=(const RecMdcTrack&); 00033 RecMdcTrack& operator=(const DstMdcTrack&); 00034 ~RecMdcTrack(); 00035 00036 //extractors 00037 //const int getTrkId() const { return m_trackId; } 00038 //const double getDr() const { return m_helix[0]; } 00039 //const double getFi0() const { return m_helix[1]; } 00040 //const double getCpa() const { return m_helix[2]; } 00041 //const double getDz() const { return m_helix[3]; } 00042 //const double getTanl() const { return m_helix[4]; } 00043 const double getVX0() const { return m_pivot[0]; } 00044 const double getVY0() const { return m_pivot[1]; } 00045 const double getVZ0() const { return m_pivot[2]; } 00046 //const double getX0() const { return m_poca[0]; } 00047 //const double getY0() const { return m_poca[1]; } 00048 //const double getZ0() const { return m_poca[2]; } 00049 const int getNhits() const { return m_nhits; } 00050 //const double getChisq() const { return m_chi2; } 00051 //const int getNdf() const { return m_ndof; } 00052 const double getFiTerm() const { return m_fiTerm; } 00053 //const int getNster() const { return m_nster; } 00054 //const int getStat() const { return m_stat; } 00055 //const int getCharge() const { return m_charge; } 00056 const HepPoint3D& getPivot() const { return m_pivot; } 00057 //const HepPoint3D& getPoca() const { return m_poca3D; } 00058 //const HepVector& getHelix() const { return m_a; } 00059 //const HepSymMatrix& getError() const { return m_Ea; } 00060 const HitRefVec getVecHits(void) const { return m_vechits; } 00061 00062 //modifiers 00063 void setVX0(double x0) { m_pivot[0] = x0; } 00064 void setVY0(double y0) { m_pivot[1] = y0; } 00065 void setVZ0(double z0) { m_pivot[2] = z0; } 00066 void setFiTerm(double fiterm) { m_fiTerm = fiterm; } 00067 void setNhits(int nhits) { m_nhits = nhits; } 00068 void setPivot(const HepPoint3D& pivot) { m_pivot = pivot; } 00069 void setVecHits(HitRefVec vechits) { m_vechits = vechits; } 00070 00071 private: 00072 HepPoint3D m_pivot; // pivot of the track 00073 double m_fiTerm; // phi angle value at track terminated point 00074 int m_nhits; // number of total hits contained 00075 HitRefVec m_vechits; // hit list of the track 00076 //vector<int> m_vecHits; // hit list of the track wensp 00077 }; 00078 00079 typedef ObjectVector<RecMdcTrack> RecMdcTrackCol; 00080 00081 #endif 00082