00001 #ifndef RootEventData_TRecExtTrack_H
00002 #define RootEventData_TRecExtTrack_H 1
00003
00004 #include "TObject.h"
00005 #include "TString.h"
00006 using namespace std;
00007
00008 class TRecExtTrack : public TObject {
00009
00010 public:
00011
00012 TRecExtTrack();
00013
00014 ~TRecExtTrack ();
00015
00016
00017 void SetTrackId(const Int_t trackId){ m_trackId = trackId; }
00018
00019 void SetTof1PositionX(const Double_t Tof1PositionX, const Int_t i=2) { myTof1PositionX[i] = Tof1PositionX; }
00020 void SetTof1PositionY(const Double_t Tof1PositionY, const Int_t i=2) { myTof1PositionY[i] = Tof1PositionY; }
00021 void SetTof1PositionZ(const Double_t Tof1PositionZ, const Int_t i=2) { myTof1PositionZ[i] = Tof1PositionZ; }
00022 void SetTof1MomentumX(const Double_t Tof1MomentumX, const Int_t i=2) { myTof1MomentumX[i] = Tof1MomentumX; }
00023 void SetTof1MomentumY(const Double_t Tof1MomentumY, const Int_t i=2) { myTof1MomentumY[i] = Tof1MomentumY; }
00024 void SetTof1MomentumZ(const Double_t Tof1MomentumZ, const Int_t i=2) { myTof1MomentumZ[i] = Tof1MomentumZ; }
00025
00026 void SetTof1VolumeName(const TString Tof1VolumeName, const Int_t i=2) { myTof1VolumeName[i] = Tof1VolumeName; }
00027 void SetTof1VolumeNumber(const Int_t Tof1VolumeNumber, const Int_t i=2) { myTof1VolumeNumber[i] = Tof1VolumeNumber; }
00028 void SetTof1(const Double_t Tof1, const Int_t i=2) { myTof1[i] = Tof1; }
00029 void SetTof1Path(const Double_t Tof1Path, const Int_t i=2) { myTof1Path[i] = Tof1Path; }
00030 void SetTof1PosSigmaAlongZ(const Double_t Tof1PosSigmaAlongZ, const Int_t i=2) { myTof1PosSigmaAlongZ[i] = Tof1PosSigmaAlongZ; }
00031 void SetTof1PosSigmaAlongT(const Double_t Tof1PosSigmaAlongT, const Int_t i=2) { myTof1PosSigmaAlongT[i] = Tof1PosSigmaAlongT; }
00032 void SetTof1PosSigmaAlongX(const Double_t Tof1PosSigmaAlongX, const Int_t i=2) { myTof1PosSigmaAlongX[i] = Tof1PosSigmaAlongX; }
00033 void SetTof1PosSigmaAlongY(const Double_t Tof1PosSigmaAlongY, const Int_t i=2) { myTof1PosSigmaAlongY[i] = Tof1PosSigmaAlongY; }
00034 void SetTof1ErrorMatrix(const Double_t Tof1ErrorMatrix[6][6], const Int_t k=2) {
00035 for (Int_t i = 0 ;i<6 ;i++ )
00036 for (Int_t j = 0 ;j<6 ;j++ )
00037 myTof1ErrorMatrix[k][i][j] = Tof1ErrorMatrix[i][j] ; }
00038
00039
00040 void SetTof2PositionX(const Double_t Tof2PositionX, const Int_t i=2) { myTof2PositionX[i] = Tof2PositionX; }
00041 void SetTof2PositionY(const Double_t Tof2PositionY, const Int_t i=2) { myTof2PositionY[i] = Tof2PositionY; }
00042 void SetTof2PositionZ(const Double_t Tof2PositionZ, const Int_t i=2) { myTof2PositionZ[i] = Tof2PositionZ; }
00043 void SetTof2MomentumX(const Double_t Tof2MomentumX, const Int_t i=2) { myTof2MomentumX[i] = Tof2MomentumX; }
00044 void SetTof2MomentumY(const Double_t Tof2MomentumY, const Int_t i=2) { myTof2MomentumY[i] = Tof2MomentumY; }
00045 void SetTof2MomentumZ(const Double_t Tof2MomentumZ, const Int_t i=2) { myTof2MomentumZ[i] = Tof2MomentumZ; }
00046
00047 void SetTof2VolumeName(const TString Tof2VolumeName, const Int_t i=2) { myTof2VolumeName[i] = Tof2VolumeName; }
00048 void SetTof2VolumeNumber(const Int_t Tof2VolumeNumber, const Int_t i=2) { myTof2VolumeNumber[i] = Tof2VolumeNumber; }
00049 void SetTof2(const Double_t Tof2, const Int_t i=2) { myTof2[i] = Tof2; }
00050 void SetTof2Path(const Double_t Tof2Path, const Int_t i=2) { myTof2Path[i] = Tof2Path; }
00051 void SetTof2PosSigmaAlongZ(const Double_t Tof2PosSigmaAlongZ, const Int_t i=2) { myTof2PosSigmaAlongZ[i] = Tof2PosSigmaAlongZ; }
00052 void SetTof2PosSigmaAlongT(const Double_t Tof2PosSigmaAlongT, const Int_t i=2) { myTof2PosSigmaAlongT[i] = Tof2PosSigmaAlongT; }
00053 void SetTof2PosSigmaAlongX(const Double_t Tof2PosSigmaAlongX, const Int_t i=2) { myTof2PosSigmaAlongX[i] = Tof2PosSigmaAlongX; }
00054 void SetTof2PosSigmaAlongY(const Double_t Tof2PosSigmaAlongY, const Int_t i=2) { myTof2PosSigmaAlongY[i] = Tof2PosSigmaAlongY; }
00055 void SetTof2ErrorMatrix(const Double_t Tof2ErrorMatrix[6][6], const Int_t k=2) {
00056 for (Int_t i = 0 ;i<6 ;i++ )
00057 for (Int_t j = 0 ;j<6 ;j++ )
00058 myTof2ErrorMatrix[k][i][j] = Tof2ErrorMatrix[i][j] ; }
00059
00060
00061 void SetEmcPositionX(const Double_t EmcPositionX, const Int_t i=2) { myEmcPositionX[i] = EmcPositionX; }
00062 void SetEmcPositionY(const Double_t EmcPositionY, const Int_t i=2) { myEmcPositionY[i] = EmcPositionY; }
00063 void SetEmcPositionZ(const Double_t EmcPositionZ, const Int_t i=2) { myEmcPositionZ[i] = EmcPositionZ; }
00064 void SetEmcMomentumX(const Double_t EmcMomentumX, const Int_t i=2) { myEmcMomentumX[i] = EmcMomentumX; }
00065 void SetEmcMomentumY(const Double_t EmcMomentumY, const Int_t i=2) { myEmcMomentumY[i] = EmcMomentumY; }
00066 void SetEmcMomentumZ(const Double_t EmcMomentumZ, const Int_t i=2) { myEmcMomentumZ[i] = EmcMomentumZ; }
00067
00068 void SetEmcVolumeName(const TString EmcVolumeName, const Int_t i=2) { myEmcVolumeName[i] = EmcVolumeName; }
00069 void SetEmcVolumeNumber(const Int_t EmcVolumeNumber, const Int_t i=2) { myEmcVolumeNumber[i] = EmcVolumeNumber; }
00070
00071 void SetEmcPosSigmaAlongTheta(const Double_t EmcPosSigmaAlongTheta, const Int_t i=2) { myEmcPosSigmaAlongTheta[i] = EmcPosSigmaAlongTheta; }
00072 void SetEmcPosSigmaAlongPhi(const Double_t EmcPosSigmaAlongPhi, const Int_t i=2) { myEmcPosSigmaAlongPhi[i] = EmcPosSigmaAlongPhi; }
00073
00074 void SetEmcErrorMatrix(const Double_t EmcErrorMatrix[6][6], const Int_t k=2) {
00075 for (Int_t i = 0 ;i<6 ;i++ )
00076 for (Int_t j = 0 ;j<6 ;j++ )
00077 myEmcErrorMatrix[k][i][j] = EmcErrorMatrix[i][j] ; }
00078
00079 void SetEmcPath(Double_t path, const Int_t i=2) {myEmcPath[i] = path;}
00080
00081
00082 void SetMucPositionX(const Double_t MucPositionX, const Int_t i=2) { myMucPositionX[i] = MucPositionX; }
00083 void SetMucPositionY(const Double_t MucPositionY, const Int_t i=2) { myMucPositionY[i] = MucPositionY; }
00084 void SetMucPositionZ(const Double_t MucPositionZ, const Int_t i=2) { myMucPositionZ[i] = MucPositionZ; }
00085 void SetMucMomentumX(const Double_t MucMomentumX, const Int_t i=2) { myMucMomentumX[i] = MucMomentumX; }
00086 void SetMucMomentumY(const Double_t MucMomentumY, const Int_t i=2) { myMucMomentumY[i] = MucMomentumY; }
00087 void SetMucMomentumZ(const Double_t MucMomentumZ, const Int_t i=2) { myMucMomentumZ[i] = MucMomentumZ; }
00088
00089 void SetMucVolumeName(const TString MucVolumeName, const Int_t i=2) { myMucVolumeName[i] = MucVolumeName; }
00090 void SetMucVolumeNumber(const Int_t MucVolumeNumber, const Int_t i=2) { myMucVolumeNumber[i] = MucVolumeNumber; }
00091
00092 void SetMucPosSigmaAlongZ(const Double_t MucPosSigmaAlongZ, const Int_t i=2) { myMucPosSigmaAlongZ[i] = MucPosSigmaAlongZ; }
00093 void SetMucPosSigmaAlongT(const Double_t MucPosSigmaAlongT, const Int_t i=2) { myMucPosSigmaAlongT[i] = MucPosSigmaAlongT; }
00094 void SetMucPosSigmaAlongX(const Double_t MucPosSigmaAlongX, const Int_t i=2) { myMucPosSigmaAlongX[i] = MucPosSigmaAlongX; }
00095 void SetMucPosSigmaAlongY(const Double_t MucPosSigmaAlongY, const Int_t i=2) { myMucPosSigmaAlongY[i] = MucPosSigmaAlongY; }
00096
00097 void SetMucErrorMatrix(const Double_t MucErrorMatrix[6][6], const Int_t k=2) {
00098 for (Int_t i = 0 ;i<6 ;i++ )
00099 for (Int_t j = 0 ;j<6 ;j++ )
00100 myMucErrorMatrix[k][i][j] = MucErrorMatrix[i][j] ; }
00101
00102 void SetSize(Int_t size, const Int_t i=2){ mySize[i] = size;}
00103 void SetExtMucHit(Double_t PositionX,Double_t PositionY,Double_t PositionZ,Double_t MomentumX,Double_t MomentumY , Double_t MomentumZ, TString VolumeName,Int_t VolumeNumber,Double_t PosSigmaAlongZ,Double_t PosSigmaAlongT,Double_t PosSigmaAlongX,Double_t PosSigmaAlongY,Double_t ErrorMatrix[6][6], const Int_t k=2){
00104 myPositionX[k].push_back(PositionX);
00105 myPositionY[k].push_back(PositionY);
00106 myPositionZ[k].push_back(PositionZ);
00107 myMomentumX[k].push_back(MomentumX);
00108 myMomentumY[k].push_back(MomentumY);
00109 myMomentumZ[k].push_back(MomentumZ);
00110 myVolumeName[k].push_back(VolumeName);
00111 myVolumeNumber[k].push_back(VolumeNumber);
00112 myPosSigmaAlongZ[k].push_back(PosSigmaAlongZ);
00113 myPosSigmaAlongT[k].push_back(PosSigmaAlongT);
00114 myPosSigmaAlongX[k].push_back(PosSigmaAlongX);
00115 myPosSigmaAlongY[k].push_back(PosSigmaAlongY);
00116 vector<Double_t> vecError;
00117 for(int i=0;i<6 ;i++)
00118 for(int j=0;j<6;j++){
00119 vecError.push_back(ErrorMatrix[i][j]);
00120 }
00121 myErrorMatrix[k].push_back(vecError);
00122 }
00123
00124
00125 Int_t GetTrackId() const { return m_trackId; }
00126
00127 Double_t GetTof1PositionX(const Int_t i=2) const { return myTof1PositionX[i] ; }
00128 Double_t GetTof1PositionY(const Int_t i=2) const { return myTof1PositionY[i] ; }
00129 Double_t GetTof1PositionZ(const Int_t i=2) const { return myTof1PositionZ[i] ; }
00130 Double_t GetTof1MomentumX(const Int_t i=2) const { return myTof1MomentumX[i] ; }
00131 Double_t GetTof1MomentumY(const Int_t i=2) const { return myTof1MomentumY[i] ; }
00132 Double_t GetTof1MomentumZ(const Int_t i=2) const { return myTof1MomentumZ[i] ; }
00133
00134 TString GetTof1VolumeName(const Int_t i=2) const { return myTof1VolumeName[i]; }
00135 Int_t GetTof1VolumeNumber(const Int_t i=2) const {return myTof1VolumeNumber[i]; }
00136 Double_t GetTof1(const Int_t i=2) const {return myTof1[i]; }
00137 Double_t GetTof1Path(const Int_t i=2) const {return myTof1Path[i]; }
00138 Double_t GetTof1PosSigmaAlongZ(const Int_t i=2) const {return myTof1PosSigmaAlongZ[i];}
00139 Double_t GetTof1PosSigmaAlongT(const Int_t i=2) const {return myTof1PosSigmaAlongT[i];}
00140 Double_t GetTof1PosSigmaAlongX(const Int_t i=2) const {return myTof1PosSigmaAlongX[i];}
00141 Double_t GetTof1PosSigmaAlongY(const Int_t i=2) const {return myTof1PosSigmaAlongY[i];}
00142 Double_t GetTof1ErrorMatrix(Int_t i , Int_t j, const Int_t k=2) const {return myTof1ErrorMatrix[k][i][j]; }
00143
00144
00145 Double_t GetTof2PositionX(const Int_t i=2) const { return myTof2PositionX[i] ; }
00146 Double_t GetTof2PositionY(const Int_t i=2) const { return myTof2PositionY[i] ; }
00147 Double_t GetTof2PositionZ(const Int_t i=2) const { return myTof2PositionZ[i] ; }
00148 Double_t GetTof2MomentumX(const Int_t i=2) const { return myTof2MomentumX[i] ; }
00149 Double_t GetTof2MomentumY(const Int_t i=2) const { return myTof2MomentumY[i] ; }
00150 Double_t GetTof2MomentumZ(const Int_t i=2) const { return myTof2MomentumZ[i] ; }
00151
00152 TString GetTof2VolumeName(const Int_t i=2) const { return myTof2VolumeName[i]; }
00153 Int_t GetTof2VolumeNumber(const Int_t i=2) const {return myTof2VolumeNumber[i]; }
00154 Double_t GetTof2(const Int_t i=2) const {return myTof2[i]; }
00155 Double_t GetTof2Path(const Int_t i=2) const {return myTof2Path[i]; }
00156 Double_t GetTof2PosSigmaAlongZ(const Int_t i=2) const {return myTof2PosSigmaAlongZ[i];}
00157 Double_t GetTof2PosSigmaAlongT(const Int_t i=2) const {return myTof2PosSigmaAlongT[i];}
00158 Double_t GetTof2PosSigmaAlongX(const Int_t i=2) const {return myTof2PosSigmaAlongX[i];}
00159 Double_t GetTof2PosSigmaAlongY(const Int_t i=2) const {return myTof2PosSigmaAlongY[i];}
00160 Double_t GetTof2ErrorMatrix(Int_t i , Int_t j, const Int_t k=2) const {return myTof2ErrorMatrix[k][i][j]; }
00161
00162
00163 Double_t GetEmcPositionX(const Int_t i=2) const { return myEmcPositionX[i] ; }
00164 Double_t GetEmcPositionY(const Int_t i=2) const { return myEmcPositionY[i] ; }
00165 Double_t GetEmcPositionZ(const Int_t i=2) const { return myEmcPositionZ[i] ; }
00166 Double_t GetEmcMomentumX(const Int_t i=2) const { return myEmcMomentumX[i] ; }
00167 Double_t GetEmcMomentumY(const Int_t i=2) const { return myEmcMomentumY[i] ; }
00168 Double_t GetEmcMomentumZ(const Int_t i=2) const { return myEmcMomentumZ[i] ; }
00169
00170 TString GetEmcVolumeName(const Int_t i=2) const { return myEmcVolumeName[i]; }
00171 Int_t GetEmcVolumeNumber(const Int_t i=2) const {return myEmcVolumeNumber[i]; }
00172 Double_t GetEmcPosSigmaAlongTheta(const Int_t i=2) const {return myEmcPosSigmaAlongTheta[i];}
00173 Double_t GetEmcPosSigmaAlongPhi(const Int_t i=2) const {return myEmcPosSigmaAlongPhi[i];}
00174 Double_t GetEmcErrorMatrix(Int_t i , Int_t j, const Int_t k=2) const {return myEmcErrorMatrix[k][i][j]; }
00175 Double_t emcPath(const Int_t i=2) const {return myEmcPath[i];}
00176
00177
00178 Double_t GetMucPositionX(const Int_t i=2) const { return myMucPositionX[i] ; }
00179 Double_t GetMucPositionY(const Int_t i=2) const { return myMucPositionY[i] ; }
00180 Double_t GetMucPositionZ(const Int_t i=2) const { return myMucPositionZ[i] ; }
00181 Double_t GetMucMomentumX(const Int_t i=2) const { return myMucMomentumX[i] ; }
00182 Double_t GetMucMomentumY(const Int_t i=2) const { return myMucMomentumY[i] ; }
00183 Double_t GetMucMomentumZ(const Int_t i=2) const { return myMucMomentumZ[i] ; }
00184
00185 TString GetMucVolumeName(const Int_t i=2) const { return myMucVolumeName[i]; }
00186 Int_t GetMucVolumeNumber(const Int_t i=2) const {return myMucVolumeNumber[i]; }
00187 Double_t GetMucPosSigmaAlongZ(const Int_t i=2) const {return myMucPosSigmaAlongZ[i];}
00188 Double_t GetMucPosSigmaAlongT(const Int_t i=2) const {return myMucPosSigmaAlongT[i];}
00189 Double_t GetMucPosSigmaAlongX(const Int_t i=2) const {return myMucPosSigmaAlongX[i];}
00190 Double_t GetMucPosSigmaAlongY(const Int_t i=2) const {return myMucPosSigmaAlongY[i];}
00191 Double_t GetMucErrorMatrix(Int_t i , Int_t j, const Int_t k=2) const {return myMucErrorMatrix[k][i][j]; }
00192
00193
00194 Int_t GetSize(const Int_t i=2) const {return mySize[i];};
00195 Double_t GetPositionX(Int_t i, const Int_t k=2) const {return myPositionX[k][i]; }
00196 Double_t GetPositionY(Int_t i, const Int_t k=2) const {return myPositionY[k][i]; }
00197 Double_t GetPositionZ(Int_t i, const Int_t k=2) const {return myPositionZ[k][i]; }
00198 Double_t GetMomentumX(Int_t i, const Int_t k=2) const {return myMomentumX[k][i];}
00199 Double_t GetMomentumY(Int_t i, const Int_t k=2) const {return myMomentumY[k][i];}
00200 Double_t GetMomentumZ(Int_t i, const Int_t k=2) const {return myMomentumZ[k][i];}
00201 TString GetVolumeName(Int_t i, const Int_t k=2) const {return myVolumeName[k][i];}
00202 Int_t GetVolumeNumber(Int_t i, const Int_t k=2) const {return myVolumeNumber[k][i];}
00203 Double_t GetPosSigmaAlongZ(Int_t i, const Int_t k=2) const {return myPosSigmaAlongZ[k][i];}
00204 Double_t GetPosSigmaAlongT(Int_t i, const Int_t k=2) const {return myPosSigmaAlongT[k][i];}
00205 Double_t GetPosSigmaAlongX(Int_t i, const Int_t k=2) const {return myPosSigmaAlongX[k][i];}
00206 Double_t GetPosSigmaAlongY(Int_t i, const Int_t k=2) const {return myPosSigmaAlongY[k][i];}
00207 vector<Double_t> GetErrorMatrix(Int_t i, const Int_t k=2) const {return myErrorMatrix[k][i];}
00208
00209
00210
00211 private:
00212
00213
00214 Int_t m_trackId;
00215
00216
00217 Double_t myTof1PositionX[5];
00218 Double_t myTof1PositionY[5];
00219 Double_t myTof1PositionZ[5];
00220 Double_t myTof1MomentumX[5];
00221 Double_t myTof1MomentumY[5];
00222 Double_t myTof1MomentumZ[5];
00223
00224 TString myTof1VolumeName[5];
00225 Int_t myTof1VolumeNumber[5];
00226 Double_t myTof1[5];
00227 Double_t myTof1Path[5];
00228 Double_t myTof1PosSigmaAlongZ[5];
00229 Double_t myTof1PosSigmaAlongT[5];
00230 Double_t myTof1PosSigmaAlongX[5];
00231 Double_t myTof1PosSigmaAlongY[5];
00232 Double_t myTof1ErrorMatrix[5][6][6];
00233
00234
00235 Double_t myTof2PositionX[5];
00236 Double_t myTof2PositionY[5];
00237 Double_t myTof2PositionZ[5];
00238 Double_t myTof2MomentumX[5];
00239 Double_t myTof2MomentumY[5];
00240 Double_t myTof2MomentumZ[5];
00241
00242 TString myTof2VolumeName[5];
00243 Int_t myTof2VolumeNumber[5];
00244 Double_t myTof2[5];
00245 Double_t myTof2Path[5];
00246 Double_t myTof2PosSigmaAlongZ[5];
00247 Double_t myTof2PosSigmaAlongT[5];
00248 Double_t myTof2PosSigmaAlongX[5];
00249 Double_t myTof2PosSigmaAlongY[5];
00250 Double_t myTof2ErrorMatrix[5][6][6];
00251
00252
00253 Double_t myEmcPositionX[5];
00254 Double_t myEmcPositionY[5];
00255 Double_t myEmcPositionZ[5];
00256 Double_t myEmcMomentumX[5];
00257 Double_t myEmcMomentumY[5];
00258 Double_t myEmcMomentumZ[5];
00259
00260 TString myEmcVolumeName[5];
00261 Int_t myEmcVolumeNumber[5];
00262 Double_t myEmcPosSigmaAlongTheta[5];
00263 Double_t myEmcPosSigmaAlongPhi[5];
00264 Double_t myEmcErrorMatrix[5][6][6];
00265
00266 Double_t myEmcPath[5];
00267
00268
00269 Double_t myMucPositionX[5];
00270 Double_t myMucPositionY[5];
00271 Double_t myMucPositionZ[5];
00272 Double_t myMucMomentumX[5];
00273 Double_t myMucMomentumY[5];
00274 Double_t myMucMomentumZ[5];
00275
00276 TString myMucVolumeName[5];
00277 Int_t myMucVolumeNumber[5];
00278
00279 Double_t myMucPosSigmaAlongZ[5];
00280 Double_t myMucPosSigmaAlongT[5];
00281 Double_t myMucPosSigmaAlongX[5];
00282 Double_t myMucPosSigmaAlongY[5];
00283 Double_t myMucErrorMatrix[5][6][6];
00284
00285
00286 Int_t mySize[5];
00287 vector<Double_t> myPositionX[5];
00288 vector<Double_t> myPositionY[5];
00289 vector<Double_t> myPositionZ[5];
00290 vector<Double_t> myMomentumX[5];
00291 vector<Double_t> myMomentumY[5];
00292 vector<Double_t> myMomentumZ[5];
00293 vector<TString> myVolumeName[5];
00294 vector<Int_t> myVolumeNumber[5];
00295 vector<Double_t> myPosSigmaAlongZ[5];
00296 vector<Double_t> myPosSigmaAlongT[5];
00297 vector<Double_t> myPosSigmaAlongX[5];
00298 vector<Double_t> myPosSigmaAlongY[5];
00299 vector< vector<Double_t> > myErrorMatrix[5];
00300
00301
00302 ClassDef(TRecExtTrack,3)
00303 };
00304
00305 #endif