00001
00002
00003
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
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
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
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
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
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
00118
00119
00120
00121
00122
00123
00124
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
00144
00145
00146
00147
00148
00149
00150
00151
00152
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
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
00189
00190
00191
00192
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
00221 void SetMucKalData(double chi2,int dof, double depth, int brLastLay, int ecLastLay, int nhits);
00222
00223
00224
00225
00226 protected:
00227 int myParticleType;
00228
00229
00230 private:
00231 int m_trackId;
00232
00233
00234
00235 vector<Hep3Vector> myTof1Position;
00236 vector<Hep3Vector> myTof1Momentum;
00237 vector<string> myTof1VolumeName;
00238 int myTof1VolumeNumber[5];
00239 double myTof1[5];
00240 double myTof1Path[5];
00241 double myTof1PosSigmaAlongZ[5];
00242 double myTof1PosSigmaAlongT[5];
00243 double myTof1PosSigmaAlongX[5];
00244 double myTof1PosSigmaAlongY[5];
00245 vector<HepSymMatrix> myTof1ErrorMatrix;
00246
00247
00248 vector<Hep3Vector> myTof2Position;
00249 vector<Hep3Vector> myTof2Momentum;
00250 vector<string> myTof2VolumeName;
00251 int myTof2VolumeNumber[5];
00252 double myTof2[5];
00253 double myTof2Path[5];
00254 double myTof2PosSigmaAlongZ[5];
00255 double myTof2PosSigmaAlongT[5];
00256 double myTof2PosSigmaAlongX[5];
00257 double myTof2PosSigmaAlongY[5];
00258 vector<HepSymMatrix> myTof2ErrorMatrix;
00259
00260
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
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
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
00292
00293 };
00294
00295 typedef ObjectVector<DstExtTrack> DstExtTrackCol;
00296
00297 #endif
00298