00001 // 00002 //File: ExtMdcTrack.h 00003 //Author: L.L.Wang 00004 // 00005 //Deccription: A class to get MDC reconstuction track, 00006 // and supply information to track extrapolation. 00007 // It is only a interface. 00008 // 00009 //History: 2005.7.4 created by L.L.Wang 00010 // 00011 00012 #ifndef EXTMDCTRACK_H 00013 #define EXTMDCTRACK_H 00014 #include "CLHEP/Vector/ThreeVector.h" 00015 #include "CLHEP/Matrix/SymMatrix.h" 00016 #include "CLHEP/Geometry/Point3D.h" 00017 00018 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00019 typedef HepGeom::Point3D<double> HepPoint3D; 00020 #endif 00021 #ifndef ENABLE_BACKWARDS_COMPATIBILITY 00022 typedef HepGeom::Vector3D<double> HepVector3D; 00023 #endif 00024 00025 00026 00027 #include "MdcRecEvent/RecMdcTrack.h" 00028 #include "MdcRecEvent/RecMdcKalTrack.h" 00029 00030 using namespace std; 00031 00032 using namespace CLHEP; 00033 00034 static const int NdimMdcErr(5); 00035 static const int NdimExtErr(6); 00036 static const int NumHelixPar(5); 00037 00038 class ExtMdcTrack 00039 { 00040 public: 00041 ExtMdcTrack(void);//Construction. 00042 ~ExtMdcTrack(void);//Destruction. 00043 00044 void SetMsgFlag(bool aFlag) {myMsgFlag=aFlag;}; 00045 bool SetMdcRecTrkCol(RecMdcTrackCol * aPointer);//Get RecMdcTrackCol from TDS. 00046 bool SetMdcKalTrkCol(RecMdcKalTrackCol * aPointer);//Get RecMdcTrackCol from TDS. 00047 bool SetParId(int pid) { myParID=pid; return true;}; 00048 bool GetOneGoodTrk();//Get a good MdcRecTrk. 00049 bool ReadTrk(int pid); 00050 int GetTrackID() {return myTrackID;}//Get RecMdcTrackl ID. 00051 RecMdcTrack *GetMdcRecTrkPtr() const;//Get RecMdcTrackl pointer. 00052 const Hep3Vector GetPosition() const;//Get coordinate of the track at the Mdc->Tof point. 00053 const Hep3Vector GetMomentum() const;//Get the momentum of the track at the Mdc_>Tof point. 00054 const HepSymMatrix GetErrorMatrix() const;//Get 6x6 (x,p)Err matrix at the Mdc_>Tof point. 00055 double GetTrackLength() const;//Get the track length of the track at the Mdc->Tof point. 00056 inline double GetTrkTof() const {return myTrkTof;}; 00057 // double GetTOF() const;//Get the Tof of the track at the Mdc->Tof point. 00058 double GetPt() const;//Get the pt of the track at the Mdc->Tof point. 00059 double GetParticleCharge() const;//Get the charge of the track(+1,-1). 00060 00061 private: 00062 void Convert();//Convert data due to unit problem. 00063 bool myMsgFlag; 00064 int myTrackID; 00065 RecMdcTrackCol *myMdcTrackCol; 00066 RecMdcTrackCol::iterator myMdcRecTrkIter;//Iterater of MdcRecTrk. 00067 RecMdcKalTrackCol *myMdcKalTrackCol; 00068 RecMdcKalTrackCol::iterator myMdcKalTrkIter;//Iterater of MdcRecTrk. 00069 string myInputTrk; 00070 int myParID; 00071 00072 HepVector myHelixPar;//Mdc reconstucted track's helix 5 parameters. 00073 HepPoint3D myPivot;//Pivot point of the MdcRecTrk' helix. 00074 HepSymMatrix myMdcErr;//Error matrix(5x5) of the MdcRecTrk's helix. 00075 double myPhiTerm;//Phi angle of the MdcRecTrk's helix at the Mdc. 00076 double myTrkLength; 00077 double myTrkTof; 00078 HepPoint3D myLPosition; 00079 // double myTrackLength[5];//Track length from Kalman fit. 00080 // string myParticleName;//Particle name used by GetTOF(). 00081 }; 00082 00083 00084 #endif