00001
00002
00003
00004 #ifndef FROOT_TFndTrack
00005 #define FROOT_TFndTrack
00006
00008
00010
00011
00012
00013
00015
00016 #include "FROOT.h"
00017 #include "FIN_PHYS.h"
00018
00019 #include <Riostream.h>
00020 #include <TObject.h>
00021 #include <TString.h>
00022 #include "TDatime.h"
00023 #include "TTree.h"
00024 #include "TFile.h"
00025
00026 class TFndVertex: public TObject{
00027
00028
00029 protected:
00030 Int_t fPID;
00031 Float_t fPosition[3];
00032 Float_t fDistFromPrimary;
00033 Float_t fZtollerance;
00034
00035 public:
00036 TFndVertex();
00037 ~TFndVertex();
00038
00039 void Reset();
00040
00041 friend class TFndPrean;
00042 friend class TFndPreanHistos;
00043 friend class TFndEvd;
00044 ClassDef(TFndVertex,1)
00045
00046 };
00047
00051
00052 class TFndTrack: public TObject{
00053
00054 public:
00055 enum Trk_Charge_e {
00056 E_Trk_Neut = 0,
00057 E_Trk_Neg = -1,
00058 E_Trk_Pos = 1,
00059 };
00060
00061 enum Trk_Vect_e {
00062 E_Trk_X = 0,
00063 E_Trk_Y = 1,
00064 E_Trk_Z = 2,
00065 E_Trk_T = 3,
00066 E_Trk_cosX = 4,
00067 E_Trk_cosY = 5,
00068 E_Trk_cosZ = 6,
00069 E_Trk_Vect_End = 7,
00070 };
00071
00072 enum Trk_Helix_Geo_e {
00073 E_Hel_Xc = 0,
00074 E_Hel_Yc = 1,
00075 E_Hel_R = 2,
00076 E_Hel_Geo_End = 3,
00077 };
00078
00079 enum Trk_Helix_Mom_e {
00080 E_Hel_Mom = 0,
00081 E_Hel_Lam = 1,
00082 E_Hel_Phi = 2,
00083 E_Hel_Mom_End = 3,
00084 };
00085
00086 enum Trk_FitError_e {
00087 E_Trk_Fit_Success = 0,
00088 E_Trk_Fit_FewPoints = -2,
00089 E_Trk_Fit_BadMom = 1,
00090 E_Trk_Fit_UndefCharge = 10,
00091 E_Trk_Fit_UndefMom = 11,
00092
00093 };
00094
00095 enum Trk_ChiSquared_e {
00096 E_Trk_ChiSq_DEV = 0,
00097 E_Trk_ChiSq_RES = 1,
00098 E_Trk_ChiSq_LOSTstb = 2,
00099 E_Trk_ChiSq_STEREOstb = 3,
00100 E_Trk_ChiSq_End = 4,
00101 };
00102
00103 enum Trk_BackTrack_e {
00104 E_Trk_Bcktrk_NormAng = 0,
00105 E_Trk_Bcktrk_SurfApproach = 1,
00106 E_Trk_Bcktrk_MaxApproach = 2,
00107 E_Trk_Bcktrk_SurfPlanePath = 3,
00108 E_Trk_Bcktrk_ExtrDist = 4,
00109 E_Trk_Bcktrk_dPtgt_spline = 5,
00110 E_Trk_Bcktrk_dPtgt_spline_cor = 6,
00111 E_Trk_Bcktrk_pid = 7,
00112 E_Trk_Bcktrk_End = 8,
00113 };
00114
00115
00116 protected:
00117
00118 Int_t fVertexID;
00119
00120
00121 Float_t fCharge;
00122 Bool_t fChargeAmbig;
00123
00124 Bool_t fFwd;
00125
00126 Float_t fStart[E_Trk_Vect_End];
00127 Float_t fStop[E_Trk_Vect_End];
00128
00129 Float_t fTOF;
00130 Float_t fEnergy;
00131
00132
00133
00134 Short_t fNumOfHits;
00135 UInt_t fPath;
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 Float_t fPR_Helix[E_Hel_Geo_End];
00147 Float_t fPR_MomVert[E_Hel_Mom_End];
00148
00149
00150
00151
00152 Int_t fFitErr;
00153 Float_t fLength;
00154 Float_t fChiSq[E_Trk_ChiSq_End];
00155
00156 Float_t fFit_MomVert[E_Hel_Mom_End];
00157 Float_t fFit_MomVertErr[E_Hel_Mom_End];
00158
00159 Float_t fDeDx[2];
00160 Float_t fCorr_DeDx[4];
00161
00162 Bool_t fExtrapolated;
00163 Float_t fBackTrack[E_Trk_Bcktrk_End];
00164
00166 Int_t fType;
00167 Float_t fDistVert;
00168
00169
00170 Float_t fIsimCos;
00171 Float_t fOsimCos;
00172 Float_t fLmd1Cos;
00173 Float_t fLmd2Cos;
00174
00175 Float_t fSpecMom;
00176
00177 void EvalTrack();
00178
00179 public:
00180 TFndTrack();
00181 ~TFndTrack();
00182
00183 void Reset();
00184 void SetPath(UInt_t tofi,UInt_t isim,UInt_t osim,UInt_t lmd_inn,UInt_t lmd_out,UInt_t tofo);
00185 UInt_t GetPath(UInt_t &tofi,UInt_t &isim,UInt_t &osim,UInt_t &lmd_inn,UInt_t &lmd_out,UInt_t &tofo);
00186
00187
00188
00189
00190 UInt_t GetPath_Tofino();
00191 UInt_t GetPath_Isim();
00192 UInt_t GetPath_Osim();
00193 UInt_t GetPath_Lmd_Inn();
00194 UInt_t GetPath_Lmd_Out();
00195 UInt_t GetPath_Tofone();
00196
00197 void PrintData(Int_t depth = 1);
00198
00199 friend class TFndPrean;
00200 friend class TFndPreanHistos;
00201 friend class TFndEvd;
00202 ClassDef(TFndTrack,4)
00203
00204
00205
00206
00207
00208
00209 };
00210
00211 #endif // FROOT_TFndTrack