00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00084
00085
00086
00088
00089 #ifndef STAR_StFtpcPoint
00090 #define STAR_StFtpcPoint
00091
00092 #include "TObject.h"
00093 #include "TObjArray.h"
00094 #include "TVector3.h"
00095 #include "TMath.h"
00096
00097 #include "StDetectorId.h"
00098 #include "StFtpcTrack.hh"
00099
00100 class StFtpcHitCollection;
00101 class StFtpcHit;
00102 class StFtpcTrack;
00103
00104 class StFtpcPoint : public TObject {
00105
00106 private:
00107
00108 StFtpcHit *mStEventHit;
00109
00110 TVector3 mCoord;
00111 TVector3 mError;
00112
00113 Bool_t mGlobalCoord;
00114 Bool_t mUsed;
00115 Int_t mHitNumber;
00116 Int_t mNextHitNumber;
00117 Int_t mTrackNumber;
00118
00119
00120
00121 Float_t mPadPos;
00122 Float_t mTimePos;
00123 Float_t mPadPosSigma;
00124 Float_t mTimePosSigma;
00125 Long_t mPadRow;
00126 Long_t mSector;
00127 Long_t mNumberPads;
00128 Long_t mNumberBins;
00129 Long_t mMaxADC;
00130 Long_t mCharge;
00131 Long_t mFlags;
00132
00133
00134
00135 Double_t mSigmaPhi;
00136 Double_t mSigmaR;
00137
00138
00139
00140 Double_t mXPrimResidual;
00141 Double_t mYPrimResidual;
00142 Double_t mRPrimResidual;
00143 Double_t mPhiPrimResidual;
00144 Double_t mXGlobResidual;
00145 Double_t mYGlobResidual;
00146 Double_t mRGlobResidual;
00147 Double_t mPhiGlobResidual;
00148
00149 public:
00150
00151 StFtpcPoint();
00152 StFtpcPoint(Long_t row,
00153 Long_t sector,
00154 Long_t n_pads,
00155 Long_t n_bins,
00156 Long_t max_adc,
00157 Long_t charge,
00158 Float_t padpos,
00159 Float_t timepos,
00160 Float_t padpossigma,
00161 Float_t timepossigma,
00162 Double_t x,
00163 Double_t y,
00164 Double_t z,
00165 Double_t x_err,
00166 Double_t y_err,
00167 Double_t z_err,
00168 Double_t s_phi,
00169 Double_t s_r,
00170 Long_t flags);
00171 StFtpcPoint(const StFtpcPoint &point);
00172 StFtpcPoint(Double_t *x, Int_t row);
00173 virtual ~StFtpcPoint();
00174
00175
00176 void TransformFtpc2Global();
00177 void TransformGlobal2Ftpc();
00178 void SetStFtpcHitCoord();
00179
00180 virtual Int_t ToStEvent(StFtpcHitCollection *ftpcHitColl);
00181
00182
00183 StFtpcHit* GetStFtpcHit() { return mStEventHit; }
00184
00185 TVector3 GetCoord() { return mCoord; }
00186 TVector3 GetError() { return mError; }
00187
00188 Double_t GetX() const { return mCoord.X(); }
00189 Double_t GetY() const { return mCoord.Y(); }
00190 Double_t GetZ() const { return mCoord.Z(); }
00191 Double_t GetRadius() const { return TMath::Sqrt(mCoord.X()*mCoord.X() + mCoord.Y()*mCoord.Y()); }
00192 Double_t GetXerr() const { return mError.X(); }
00193 Double_t GetYerr() const { return mError.Y(); }
00194 Double_t GetZerr() const { return mError.Z(); }
00195 Double_t GetSigmaPhi() const { return mSigmaPhi; }
00196 Double_t GetSigmaR() const { return mSigmaR; }
00197
00198 StFtpcTrack *GetTrack(TObjArray *tracks) const;
00199 void SetTrackedFlag(Bool_t tracked);
00200 Bool_t GetTrackedFlag();
00201 void SetGlobalFlag(Bool_t global);
00202 Bool_t GetGlobalFlag();
00203 void SetUnusableForTrackingFlag(Bool_t global);
00204 Bool_t GetUnusableForTrackingFlag();
00205
00206 Bool_t IsUsable();
00207 Bool_t IsUnusable();
00208 Bool_t IsInGlobalCoord() { return GetGlobalFlag(); }
00209 Bool_t GetUsage() { return GetTrackedFlag(); }
00210 Int_t GetHitNumber() const { return mHitNumber; }
00211 Int_t GetNextHitNumber() const { return mNextHitNumber; }
00212 Int_t GetTrackNumber() const { return mTrackNumber; }
00213 Float_t GetPadPos() const { return mPadPos; }
00214 Float_t GetTimePos() const { return mTimePos; }
00215 Float_t GetPadPosSigma() const { return mPadPosSigma; }
00216 Float_t GetTimePosSigma() const { return mTimePosSigma; }
00217 Long_t GetPadRow() const { return mPadRow; }
00218 Long_t GetSector() const { return mSector; }
00219 Long_t GetNumberPads() const { return mNumberPads; }
00220 Long_t GetNumberBins() const { return mNumberBins; }
00221 Long_t GetMaxADC() const { return mMaxADC; }
00222 Long_t GetCharge() const { return mCharge; }
00223 Long_t GetFlags() const { return mFlags; }
00224 Int_t GetDetectorId() const;
00225 Long_t GetHardwarePosition() const;
00226
00227 Double_t GetXPrimResidual() const { return mXPrimResidual; }
00228 Double_t GetYPrimResidual() const { return mYPrimResidual; }
00229 Double_t GetRPrimResidual() const { return mRPrimResidual; }
00230 Double_t GetPhiPrimResidual() const { return mPhiPrimResidual; }
00231 Double_t GetXGlobResidual() const { return mXGlobResidual; }
00232 Double_t GetYGlobResidual() const { return mYGlobResidual; }
00233 Double_t GetRGlobResidual() const { return mRGlobResidual; }
00234 Double_t GetPhiGlobResidual() const { return mPhiGlobResidual; }
00235
00236
00237 void SetStFtpcHit(StFtpcHit* f) { mStEventHit = f; }
00238
00239 void SetX(Double_t f) { mCoord.SetX(f); }
00240 void SetY(Double_t f) { mCoord.SetY(f); }
00241 void SetZ(Double_t f) { mCoord.SetZ(f); }
00242 void SetXerr(Double_t f) { mError.SetX(f); }
00243 void SetYerr(Double_t f) { mError.SetY(f); }
00244 void SetZerr(Double_t f) { mError.SetZ(f); }
00245
00246 void SetGlobalCoord(Bool_t f) { SetGlobalFlag(f); }
00247 void SetUsage(Bool_t f) { SetTrackedFlag(f); }
00248 void SetHitNumber(Int_t f) { mHitNumber = f; }
00249 void SetNextHitNumber(Int_t f) { mNextHitNumber = f; }
00250 void SetTrackNumber(Int_t f) { mTrackNumber = f; }
00251 void SetPadPos(Float_t f) { mPadPos = f; }
00252 void SetTimePos(Float_t f) { mTimePos = f; }
00253 void SetPadPosSigma(Float_t f) { mPadPosSigma = f; }
00254 void SetTimePosSigma(Float_t f){ mTimePosSigma = f; }
00255 void SetPadRow(Long_t f) { mPadRow = f; }
00256 void SetSector(Long_t f) { mSector = f; }
00257 void SetNumberPads(Long_t f) { mNumberPads = f; }
00258 void SetNumberBins(Long_t f) { mNumberBins = f; }
00259 void SetMaxADC(Long_t f) { mMaxADC = f; }
00260 void SetCharge(Long_t f) { mCharge = f; }
00261 void SetFlags(Long_t f) { mFlags = f; }
00262 void SetSigmaPhi(Double_t f) { mSigmaPhi = f; }
00263 void SetSigmaR(Double_t f) { mSigmaR = f; }
00264
00265 void SetResidualsToZero();
00266 void SetXPrimResidual(Double_t f) { mXPrimResidual = f; }
00267 void SetYPrimResidual(Double_t f) { mYPrimResidual = f; }
00268 void SetRPrimResidual(Double_t f) { mRPrimResidual = f; }
00269 void SetPhiPrimResidual(Double_t f){ mPhiPrimResidual = f; }
00270 void SetXGlobResidual(Double_t f) { mXGlobResidual = f; }
00271 void SetYGlobResidual(Double_t f) { mYGlobResidual = f; }
00272 void SetRGlobResidual(Double_t f) { mRGlobResidual = f; }
00273 void SetPhiGlobResidual(Double_t f){ mPhiGlobResidual = f; }
00274
00275 ClassDef(StFtpcPoint, 1)
00276 };
00277
00278
00279
00280 #endif