/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/DstEvent/DstEvent-00-02-51/DstEvent/DstExtTrack.h

Go to the documentation of this file.
00001 //
00002 //File: DstExtTrack.h
00003 //Author: L.L.Wang 
00004 
00005 #ifndef DSTEXTTRACK_H
00006 #define DSTEXTTRACK_H
00007 
00008 #include <vector>
00009 
00010 #include "GaudiKernel/ContainedObject.h"
00011 #include "GaudiKernel/ObjectVector.h"
00012 #include "EventModel/EventModel.h"
00013 
00014 #include "CLHEP/Matrix/Vector.h"
00015 #include "CLHEP/Matrix/SymMatrix.h"
00016 #include "CLHEP/Vector/ThreeVector.h"
00017 //#include "ExtEvent/ExtMucHit.h"
00018 
00019 using namespace std;
00020 using namespace EventModel;
00021 
00022 using CLHEP::Hep3Vector;
00023 using CLHEP::HepSymMatrix;
00024 extern const CLID& CLID_DstExtTrack;
00025 
00026 class DstExtTrack : virtual public ContainedObject
00027 {
00028         public:
00029                 const CLID& clID() const 
00030                 {
00031                         return DstExtTrack::classID();
00032                 }
00033 
00034                 static const CLID& classID()
00035                 {
00036                         return CLID_DstExtTrack;
00037                 }                     
00038 
00039                 DstExtTrack();
00040                 ~DstExtTrack();
00041 
00042                 const int  GetTrackId() const {return m_trackId ;}
00043                 const int  trackId() const {return m_trackId ;}
00044 
00045                 //Get track extrapolation data @ Tof layer1.
00046                 //const Hep3Vector GetTof1Position() const;
00047                 //const Hep3Vector GetTof1Momentum() const;
00048                 //const string GetTof1VolumeName() const;
00049                 //const int GetTof1VolumeNumber() const;
00050                 //const double GetTof1() const;
00051                 //const double GetTof1Path() const;
00052                 //const double GetTof1PosSigmaAlongZ() const;
00053                 //const double GetTof1PosSigmaAlongT() const;
00054                 //const double GetTof1PosSigmaAlongX() const;
00055                 //const double GetTof1PosSigmaAlongY() const;
00056                 //const HepSymMatrix GetTof1ErrorMatrix() const;
00057 
00058                 const Hep3Vector tof1Position() const {return myTof1Position[myParticleType];}; 
00059                 const Hep3Vector tof1Position(int parID) const {return myTof1Position[parID];}; 
00060                 const Hep3Vector tof1Momentum() const {return myTof1Momentum[myParticleType];};
00061                 const Hep3Vector tof1Momentum(int parID) const {return myTof1Momentum[parID];};
00062                 const string tof1VolumeName() const {return myTof1VolumeName[myParticleType];};
00063                 const string tof1VolumeName(int parID) const {return myTof1VolumeName[parID];};
00064                 const int tof1VolumeNumber() const {return myTof1VolumeNumber[myParticleType];};
00065                 const int tof1VolumeNumber(int parID) const {return myTof1VolumeNumber[parID];};
00066                 const double tof1() const {return myTof1[myParticleType];};
00067                 const double tof1(int parID) const {return myTof1[parID];};
00068                 const double tof1Path() const {return myTof1Path[myParticleType];};
00069                 const double tof1Path(int parID) const {return myTof1Path[parID];};
00070                 const double tof1PosSigmaAlongZ() const {return myTof1PosSigmaAlongZ[myParticleType];};
00071                 const double tof1PosSigmaAlongZ(int parID) const {return myTof1PosSigmaAlongZ[parID];};
00072                 const double tof1PosSigmaAlongT() const {return myTof1PosSigmaAlongT[myParticleType];};
00073                 const double tof1PosSigmaAlongT(int parID) const {return myTof1PosSigmaAlongT[parID];};
00074                 const double tof1PosSigmaAlongX() const {return myTof1PosSigmaAlongX[myParticleType];};
00075                 const double tof1PosSigmaAlongX(int parID) const {return myTof1PosSigmaAlongX[parID];};
00076                 const double tof1PosSigmaAlongY() const {return myTof1PosSigmaAlongY[myParticleType];};
00077                 const double tof1PosSigmaAlongY(int parID) const {return myTof1PosSigmaAlongY[parID];};
00078                 const HepSymMatrix tof1ErrorMatrix() const {return myTof1ErrorMatrix[myParticleType];};
00079                 const HepSymMatrix tof1ErrorMatrix(int parID) const {return myTof1ErrorMatrix[parID];};
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                 const Hep3Vector tof2Position() const {return myTof2Position[myParticleType];};
00095                 const Hep3Vector tof2Position(int parID) const {return myTof2Position[parID];};
00096                 const Hep3Vector tof2Momentum() const {return myTof2Momentum[myParticleType];};
00097                 const Hep3Vector tof2Momentum(int parID) const {return myTof2Momentum[parID];};
00098                 const string tof2VolumeName() const {return myTof2VolumeName[myParticleType];};
00099                 const string tof2VolumeName(int parID) const {return myTof2VolumeName[parID];};
00100                 const int tof2VolumeNumber() const {return myTof2VolumeNumber[myParticleType];};
00101                 const int tof2VolumeNumber(int parID) const {return myTof2VolumeNumber[parID];};
00102                 const double tof2() const {return myTof2[myParticleType];};
00103                 const double tof2(int parID) const {return myTof2[parID];};
00104                 const double tof2Path() const {return myTof2Path[myParticleType];};
00105                 const double tof2Path(int parID) const {return myTof2Path[parID];};
00106                 const double tof2PosSigmaAlongZ() const {return myTof2PosSigmaAlongZ[myParticleType];};
00107                 const double tof2PosSigmaAlongZ(int parID) const {return myTof2PosSigmaAlongZ[parID];};
00108                 const double tof2PosSigmaAlongT() const {return myTof2PosSigmaAlongT[myParticleType];};
00109                 const double tof2PosSigmaAlongT(int parID) const {return myTof2PosSigmaAlongT[parID];};
00110                 const double tof2PosSigmaAlongX() const {return myTof2PosSigmaAlongX[myParticleType];};
00111                 const double tof2PosSigmaAlongX(int parID) const {return myTof2PosSigmaAlongX[parID];};
00112                 const double tof2PosSigmaAlongY() const {return myTof2PosSigmaAlongY[myParticleType];};
00113                 const double tof2PosSigmaAlongY(int parID) const {return myTof2PosSigmaAlongY[parID];};
00114                 const HepSymMatrix tof2ErrorMatrix() const {return myTof2ErrorMatrix[myParticleType];};
00115                 const HepSymMatrix tof2ErrorMatrix(int parID) const {return myTof2ErrorMatrix[parID];};
00116 
00117                 //Get track extrapolation data @ EMC.
00118                 //const Hep3Vector GetEmcPosition() const;
00119                 //const Hep3Vector GetEmcMomentum() const;
00120                 //const string GetEmcVolumeName() const;
00121                 //const int GetEmcVolumeNumber() const;
00122                 //const double GetEmcPosSigmaAlongTheta() const;
00123                 //const double GetEmcPosSigmaAlongPhi() const;
00124                 //const HepSymMatrix GetEmcErrorMatrix() const;
00125 
00126                 const Hep3Vector emcPosition() const {return myEmcPosition[myParticleType];};
00127                 const Hep3Vector emcPosition(int parID) const {return myEmcPosition[parID];};
00128                 const Hep3Vector emcMomentum() const {return myEmcMomentum[myParticleType];};
00129                 const Hep3Vector emcMomentum(int parID) const {return myEmcMomentum[parID];};
00130                 const string emcVolumeName() const {return myEmcVolumeName[myParticleType];};
00131                 const string emcVolumeName(int parID) const {return myEmcVolumeName[parID];};
00132                 const int emcVolumeNumber() const {return myEmcVolumeNumber[myParticleType];};
00133                 const int emcVolumeNumber(int parID) const {return myEmcVolumeNumber[parID];};
00134                 const double emcPosSigmaAlongTheta() const {return myEmcPosSigmaAlongTheta[myParticleType];};
00135                 const double emcPosSigmaAlongTheta(int parID) const {return myEmcPosSigmaAlongTheta[parID];};
00136                 const double emcPosSigmaAlongPhi() const {return myEmcPosSigmaAlongPhi[myParticleType];};
00137                 const double emcPosSigmaAlongPhi(int parID) const {return myEmcPosSigmaAlongPhi[parID];};
00138                 const HepSymMatrix emcErrorMatrix() const {return myEmcErrorMatrix[myParticleType];};
00139                 const HepSymMatrix emcErrorMatrix(int parID) const {return myEmcErrorMatrix[parID];};
00140                 const double emcPath() const {return myEmcPath[myParticleType];};
00141                 const double emcPath(int parID) const {return myEmcPath[parID];};
00142 
00143                 //Get track extrapolation data @ MUC.
00144                 //const Hep3Vector GetMucPosition() const;
00145                 //const Hep3Vector GetMucMomentum() const;
00146                 //const string GetMucVolumeName() const;
00147                 //const int GetMucVolumeNumber() const;
00148                 //const double GetMucPosSigmaAlongZ() const;
00149                 //const double GetMucPosSigmaAlongT() const;
00150                 //const double GetMucPosSigmaAlongX() const;
00151                 //const double GetMucPosSigmaAlongY() const;
00152                 //const HepSymMatrix GetMucErrorMatrix() const;
00153 
00154                 const Hep3Vector mucPosition() const {return myMucPosition[myParticleType];};
00155                 const Hep3Vector mucPosition(int parID) const {return myMucPosition[parID];};
00156                 const Hep3Vector mucMomentum() const {return myMucMomentum[myParticleType];};
00157                 const Hep3Vector mucMomentum(int parID) const {return myMucMomentum[parID];};
00158                 const string mucVolumeName() const {return myMucVolumeName[myParticleType];};
00159                 const string mucVolumeName(int parID) const {return myMucVolumeName[parID];};
00160                 const int mucVolumeNumber() const {return myMucVolumeNumber[myParticleType];};
00161                 const int mucVolumeNumber(int parID) const {return myMucVolumeNumber[parID];};
00162                 const double mucPosSigmaAlongZ() const { return myMucPosSigmaAlongZ[myParticleType];};
00163                 const double mucPosSigmaAlongZ(int parID) const {return myMucPosSigmaAlongZ[parID];};
00164                 const double mucPosSigmaAlongT() const {return myMucPosSigmaAlongT[myParticleType];};
00165                 const double mucPosSigmaAlongT(int parID) const {return myMucPosSigmaAlongT[parID];};
00166                 const double mucPosSigmaAlongX() const {return myMucPosSigmaAlongX[myParticleType];};
00167                 const double mucPosSigmaAlongX(int parID) const {return myMucPosSigmaAlongX[parID];};
00168                 const double mucPosSigmaAlongY() const {return myMucPosSigmaAlongY[myParticleType];};
00169                 const double mucPosSigmaAlongY(int parID) const {return myMucPosSigmaAlongY[parID];};
00170                 const HepSymMatrix mucErrorMatrix() const {return myMucErrorMatrix[myParticleType];};
00171                 const HepSymMatrix mucErrorMatrix(int parID) const {return myMucErrorMatrix[parID];};
00172                 
00173                 //**** added by LI Chunhua
00174                 const double MucKalchi2() const { return  myMucKalchi2[1];}; 
00175                 const double MucKalchi2(int parID) const { return  myMucKalchi2[1];}
00176                 const int    MucKaldof() const { return  myMucKaldof[1];};
00177                 const int    MucKaldof(int parID) const { return  myMucKaldof[1];};
00178                 const double MucKaldepth() const { return  myMucKaldepth[1];};
00179                 const double MucKaldepth(int parID) const { return  myMucKaldepth[1];};
00180                 const int    MucKalbrLastLayer() const { return  myMucKalbrLastLayer[1];};
00181                 const int    MucKalbrLastLayer(int parID) const { return  myMucKalbrLastLayer[1];};
00182                 const int    MucKalecLastLayer() const { return  myMucKalecLastLayer[1];};                          
00183                 const int    MucKalecLastLayer(int parID) const { return  myMucKalecLastLayer[1];};
00184                 const int    MucKalnumHits() const { return  myMucKalnumHits[1];};
00185                 const int    MucKalnumHits(int parID) const { return  myMucKalnumHits[1];};
00186                 //***********************************************************
00187 
00188                 //Get ExtMucHitCol
00189                 //const ExtMucHitVec GetExtMucHitVec() const {return myExtMucHitVec;};
00190                 //const ExtMucHitVec extMucHitVec() const {return myExtMucHitVec;};
00191 
00192                 // set functions
00193                 void SetTrackId(int trackId){m_trackId = trackId;}
00194                 void SetParType(int aParType=2) 
00195                 {
00196                         if(aParType>=0&&aParType<=4) myParticleType=aParType;
00197                         else {
00198                                 cout<<"DstExtTrack::warning: Invalid particle number: "<<aParType<<endl;
00199                                 myParticleType=2;
00200                         }
00201                 }
00202 
00203                 void SetTof1Data(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName,
00204                                 int aVolumeNumber,double aTof,double aPath,HepSymMatrix aErrorMatrix,
00205                                 double aZSigma=0.,double aTSigma=0.,double aXSigma=0.,double aYSigma=0.);
00206 
00207                 void SetTof2Data(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName,
00208                                 int aVolumeNumber,double aTof,double aPath,HepSymMatrix aErrorMatrix,
00209                                 double aZSigma=0.,double aTSigma=0.,double aXSigma=0.,double aYSigma=0.);
00210 
00211                 void SetEmcData(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName,
00212                                 int aVolumeNumber,double aThetaSigma,double aPhiSigma,HepSymMatrix aErrorMatrix);
00213 
00214                 void SetEmcPath(double path) {myEmcPath[myParticleType] = path;};
00215 
00216                 void SetMucData(Hep3Vector aPosition,Hep3Vector aMomentum,string aVolumeName,
00217                                 int aVolumeNumber,HepSymMatrix aErrorMatrix,double aZSigma=0.,
00218                                 double aTSigma=0.,double aXSigma=0.,double aYSigma=0.);
00219 
00220                 //**** added by LI Chunhua
00221                 void SetMucKalData(double chi2,int dof, double depth, int brLastLay, int ecLastLay, int nhits);
00222                 
00223                 
00224                 //void AddExtMucHit(ExtMucHit aExtMucHit) {myExtMucHitVec.push_back(aExtMucHit);}
00225 
00226         protected:
00227                 int myParticleType;// default particle type
00228 
00229                 
00230         private:
00231                 int m_trackId;    // Track ID wensp Add 2005-10-19
00232                 //Tof TrkExt data.
00233                 //
00234                 //Tof layer1:
00235                 vector<Hep3Vector> myTof1Position;//Position when the particle enters the TOF layer1.
00236                 vector<Hep3Vector> myTof1Momentum;//Momentum when the particle enters the TOF layer1.
00237                 vector<string> myTof1VolumeName;//Scintillator volume name
00238                 int myTof1VolumeNumber[5];//Scintillator volume number
00239                 double myTof1[5];//Time of flight
00240                 double myTof1Path[5];//Path of flight
00241                 double myTof1PosSigmaAlongZ[5];//Sigma Z
00242                 double myTof1PosSigmaAlongT[5];//Sigma along Z x R
00243                 double myTof1PosSigmaAlongX[5];//Sigma X
00244                 double myTof1PosSigmaAlongY[5];//Sigma Y
00245                 vector<HepSymMatrix> myTof1ErrorMatrix;//Error matrix 6x6 (x,p)
00246 
00247                 //Tof layer2:
00248                 vector<Hep3Vector> myTof2Position;//Position when the particle enters the TOF layer2.
00249                 vector<Hep3Vector> myTof2Momentum;//Momentum when the particle enters the TOF layer2.
00250                 vector<string> myTof2VolumeName;//Scintillator volume name
00251                 int myTof2VolumeNumber[5];//Scintillator volume number
00252                 double myTof2[5];//Time of flight
00253                 double myTof2Path[5];//Path of flight
00254                 double myTof2PosSigmaAlongZ[5];//Sigma Z
00255                 double myTof2PosSigmaAlongT[5];//Sigma along Z x R
00256                 double myTof2PosSigmaAlongX[5];//Sigma X
00257                 double myTof2PosSigmaAlongY[5];//Sigma Y
00258                 vector<HepSymMatrix> myTof2ErrorMatrix;//Error matrix 6x6 (x,p)
00259 
00260                 //Emc TrkExt data
00261                 vector<Hep3Vector> myEmcPosition;
00262                 vector<Hep3Vector> myEmcMomentum;
00263                 vector<string> myEmcVolumeName;
00264                 int myEmcVolumeNumber[5];
00265                 double myEmcPosSigmaAlongTheta[5];
00266                 double myEmcPosSigmaAlongPhi[5];
00267                 vector<HepSymMatrix> myEmcErrorMatrix;
00268                 double myEmcPath[5];
00269 
00270                 //Muc TrkExt data
00271                 vector<Hep3Vector> myMucPosition;
00272                 vector<Hep3Vector> myMucMomentum;
00273                 vector<string> myMucVolumeName;
00274                 int myMucVolumeNumber[5];
00275                 double myMucPosSigmaAlongZ[5];
00276                 double myMucPosSigmaAlongT[5];
00277                 double myMucPosSigmaAlongX[5];
00278                 double myMucPosSigmaAlongY[5];
00279                 vector<HepSymMatrix> myMucErrorMatrix;
00280                 
00281                  //**** added by LI Chunhua
00282                  double myMucKalchi2[5];
00283                  int    myMucKaldof[5];
00284                  double myMucKaldepth[5];
00285                  int    myMucKalbrLastLayer[5];
00286                  int    myMucKalecLastLayer[5];
00287                  int    myMucKalnumHits[5];
00288                  //**********************
00289 
00290 
00291                 //MUC Hits collection
00292                 //ExtMucHitVec myExtMucHitVec;
00293 };
00294 
00295 typedef ObjectVector<DstExtTrack> DstExtTrackCol;
00296 
00297 #endif
00298 

Generated on Tue Nov 29 22:58:23 2016 for BOSS_7.0.2 by  doxygen 1.4.7