00001 // 00002 //File: ExtTrack.h 00003 //Author: L.L.Wang 00004 // 00005 //Description: Output of track extrapolation results. 00006 // 00007 //History: 2005.7.5 created by L.L.Wang 00008 // 00009 00010 #ifndef RECEXTTRACK_H 00011 #define RECEXTTRACK_H 00012 /* 00013 #include "GaudiKernel/ContainedObject.h" 00014 #include "GaudiKernel/ObjectVector.h" 00015 #include "EventModel/EventModel.h" 00016 00017 #include "CLHEP/Matrix/Vector.h" 00018 #include "CLHEP/Matrix/SymMatrix.h" 00019 #include "CLHEP/Vector/ThreeVector.h" 00020 */ 00021 #include "ExtMucHit.h" 00022 00023 #include "DstEvent/DstExtTrack.h" 00024 using namespace std; 00025 00026 extern const CLID& CLID_RecExtTrack; 00027 00028 class RecExtTrack : public DstExtTrack 00029 { 00030 public: 00031 const CLID& clID() const 00032 { 00033 return RecExtTrack::classID(); 00034 } 00035 00036 static const CLID& classID() 00037 { 00038 return CLID_RecExtTrack; 00039 } 00040 00041 RecExtTrack(); 00042 RecExtTrack(const DstExtTrack& aDstExtTrack); 00043 RecExtTrack& operator = (const DstExtTrack& aDstExtTrack); 00044 ~RecExtTrack(); 00045 00046 //Get ExtMucHitCol 00047 const ExtMucHitVec getExtMucHitVec() const {return myExtMucHitVec[myParticleType];}; 00048 const ExtMucHitVec getExtMucHitVec(int parId) const {return myExtMucHitVec[parId];}; 00049 00050 const ExtMucHitVec GetExtMucHitVec() const {return myExtMucHitVec[myParticleType];}; 00051 const ExtMucHitVec GetExtMucHitVec(int parId) const {return myExtMucHitVec[parId];}; 00052 00053 void AddExtMucHit(ExtMucHit aExtMucHit) {myExtMucHitVec[myParticleType].push_back(aExtMucHit);}; 00054 00055 const vector<double> pathInTof1() const {return myPathInTof1[myParticleType];}; 00056 const vector<double> pathInTof1(int parId) const {return myPathInTof1[parId];}; 00057 00058 const vector<double> pathInTof2() const {return myPathInTof2[myParticleType];}; 00059 const vector<double> pathInTof2(int parId) const {return myPathInTof2[parId];}; 00060 00061 void setPathInTof1(vector<double> x) {myPathInTof1[myParticleType] = x;}; 00062 void setPathInTof2(vector<double> x) {myPathInTof2[myParticleType] = x;}; 00063 00064 /* 00065 //get Track ID number; 00066 const int GetTrackID() const; 00067 00068 //Get track extrapolation data @ Tof layer1. 00069 const Hep3Vector GetTof1Position() const; 00070 const Hep3Vector GetTof1Momentum() const; 00071 const string GetTof1VolumeName() const; 00072 const int GetTof1VolumeNumber() const; 00073 const double GetTof1() const; 00074 const double GetTof1Path() const; 00075 const double GetTof1PosSigmaAlongZ() const; 00076 const double GetTof1PosSigmaAlongT() const; 00077 const double GetTof1PosSigmaAlongX() const; 00078 const double GetTof1PosSigmaAlongY() const; 00079 const HepSymMatrix GetTof1ErrorMatrix() const; 00080 00081 //Get track extrapolation data @ Tof layer2. 00082 const Hep3Vector GetTof2Position() const; 00083 const Hep3Vector GetTof2Momentum() const; 00084 const string GetTof2VolumeName() const; 00085 const int GetTof2VolumeNumber() const; 00086 const double GetTof2() const; 00087 const double GetTof2Path() const; 00088 const double GetTof2PosSigmaAlongZ() const; 00089 const double GetTof2PosSigmaAlongT() const; 00090 const double GetTof2PosSigmaAlongX() const; 00091 const double GetTof2PosSigmaAlongY() const; 00092 const HepSymMatrix GetTof2ErrorMatrix() const; 00093 00094 //Get track extrapolation data @ EMC. 00095 const Hep3Vector GetEmcPosition() const; 00096 const Hep3Vector GetEmcMomentum() const; 00097 const string GetEmcVolumeName() const; 00098 const int GetEmcVolumeNumber() const; 00099 const double GetEmcPosSigmaAlongTheta() const; 00100 const double GetEmcPosSigmaAlongPhi() const; 00101 const HepSymMatrix GetEmcErrorMatrix() const; 00102 const double GetEmcPath() const {return myEmcPath;}; 00103 00104 //Get track extrapolation data @ MUC. 00105 const Hep3Vector GetMucPosition() const; 00106 const Hep3Vector GetMucMomentum() const; 00107 const string GetMucVolumeName() const; 00108 const int GetMucVolumeNumber() const; 00109 const double GetMucPosSigmaAlongZ() const; 00110 const double GetMucPosSigmaAlongT() const; 00111 const double GetMucPosSigmaAlongX() const; 00112 const double GetMucPosSigmaAlongY() const; 00113 const HepSymMatrix GetMucErrorMatrix() const; 00114 00115 //Get ExtMucHitCol 00116 const ExtMucHitVec GetExtMucHitVec() const {return myExtMucHitVec;}; 00117 00118 //Set data 00119 00120 void SetTrackID(int aTrackID); 00121 00122 void SetTof1Data(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName, 00123 int aVolumeNumber,double aTof,double aPath,HepSymMatrix aErrorMatrix, 00124 double aZSigma=0.,double aTSigma=0.,double aXSigma=0.,double aYSigma=0.); 00125 00126 void SetTof2Data(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName, 00127 int aVolumeNumber,double aTof,double aPath,HepSymMatrix aErrorMatrix, 00128 double aZSigma=0.,double aTSigma=0.,double aXSigma=0.,double aYSigma=0.); 00129 00130 void SetEmcData(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName, 00131 int aVolumeNumber,double aThetaSigma,double aPhiSigma, 00132 HepSymMatrix aErrorMatrix); 00133 00134 void SetEmcPath(double path) {myEmcPath = path;}; 00135 00136 void SetMucData(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName, 00137 int aVolumeNumber,HepSymMatrix aErrorMatrix,double aZSigma=0., 00138 double aTSigma=0.,double aXSigma=0.,double aYSigma=0.); 00139 00140 void AddExtMucHit(ExtMucHit aExtMucHit) {myExtMucHitVec.push_back(aExtMucHit);}; 00141 */ 00142 00143 00144 private: 00145 //MUC Hits collection 00146 vector<ExtMucHitVec> myExtMucHitVec; 00147 00148 vector< vector<double> > myPathInTof1;// path in TOF1 00149 vector< vector<double> > myPathInTof2;// path in TOF2 00150 00151 /* 00152 int myTrackID; 00153 00154 //Tof TrkExt data. 00155 // 00156 //Tof layer1: 00157 Hep3Vector myTof1Position;//Position when the particle enters the TOF layer1. 00158 Hep3Vector myTof1Momentum;//Momentum when the particle enters the TOF layer1. 00159 string myTof1VolumeName;//Scintillator volume name 00160 int myTof1VolumeNumber;//Scintillator volume number 00161 double myTof1;//Time of flight 00162 double myTof1Path;//Path of flight 00163 double myTof1PosSigmaAlongZ;//Sigma Z 00164 double myTof1PosSigmaAlongT;//Sigma along Z x R 00165 double myTof1PosSigmaAlongX;//Sigma X 00166 double myTof1PosSigmaAlongY;//Sigma Y 00167 HepSymMatrix myTof1ErrorMatrix;//Error matrix 6x6 (x,p) 00168 00169 //Tof layer2: 00170 Hep3Vector myTof2Position;//Position when the particle enters the TOF layer2. 00171 Hep3Vector myTof2Momentum;//Momentum when the particle enters the TOF layer2. 00172 string myTof2VolumeName;//Scintillator volume name 00173 int myTof2VolumeNumber;//Scintillator volume number 00174 double myTof2;//Time of flight 00175 double myTof2Path;//Path of flight 00176 double myTof2PosSigmaAlongZ;//Sigma Z 00177 double myTof2PosSigmaAlongT;//Sigma along Z x R 00178 double myTof2PosSigmaAlongX;//Sigma X 00179 double myTof2PosSigmaAlongY;//Sigma Y 00180 HepSymMatrix myTof2ErrorMatrix;//Error matrix 6x6 (x,p) 00181 00182 //Emc TrkExt data,which is similar to TOF data. 00183 Hep3Vector myEmcPosition; 00184 Hep3Vector myEmcMomentum; 00185 string myEmcVolumeName; 00186 int myEmcVolumeNumber; 00187 double myEmcPosSigmaAlongTheta; 00188 double myEmcPosSigmaAlongPhi; 00189 HepSymMatrix myEmcErrorMatrix; 00190 00191 double myEmcPath; 00192 00193 //Muc TrkExt data,which is similar to TOF data. 00194 Hep3Vector myMucPosition; 00195 Hep3Vector myMucMomentum; 00196 string myMucVolumeName; 00197 int myMucVolumeNumber; 00198 double myMucPosSigmaAlongZ; 00199 double myMucPosSigmaAlongT; 00200 double myMucPosSigmaAlongX; 00201 double myMucPosSigmaAlongY; 00202 HepSymMatrix myMucErrorMatrix; 00203 00204 //MUC Hits collection 00205 ExtMucHitVec myExtMucHitVec; 00206 */ 00207 }; 00208 00209 typedef ObjectVector<RecExtTrack> RecExtTrackCol; 00210 00211 #endif