/** PndTrkTrack ** ** @author Lia Lavezzi **/ #ifndef PNDTRKTRACK_H #define PNDTRKTRACK_H 1 #include "TVector3.h" #include "TVector2.h" #include "PndTrkCluster.h" #include "PndTrackCand.h" #include "PndTrack.h" #include "PndTrkHit.h" #include "PndTrkTools.h" class PndTrkTrack : public TObject { public: PndTrkTrack(); PndTrkTrack(PndTrkCluster *cluster); PndTrkTrack(PndTrkCluster *cluster, double x, double y, double radius); PndTrkTrack(PndTrkHit *hit, PndTrkCluster *cluster, double x, double y, double radius); PndTrkTrack(double x, double y, double radius); ~PndTrkTrack(); Bool_t operator==(const PndTrkTrack track) const; // CHECK this needs to be changed void SetRadius(double radius) { fRadius = radius; } void SetCenter(double x, double y) { fCenterX = x; fCenterY = y; } void SetCenter(TVector3 center) { fCenterX = center.X(); fCenterY = center.Y(); } void SetTanL(double tanl) { fTanL = tanl; } void SetZ0(double z0) { fZ0 = z0;} void SetCluster(PndTrkCluster *cluster) { fCluster = cluster; } void SetRefHit(PndTrkHit *hit) { fRefHit = hit; } Double_t GetRadius() { return fRadius; } TVector2 GetCenter() { return TVector2(fCenterX, fCenterY); } Double_t GetTanL() { return fTanL; } Double_t GetZ0() { return fZ0; } PndTrkCluster *GetCluster() { return fCluster; } Double_t ComputePhi(TVector3 hit); TVector3 ComputeMomentumAtPosition(TVector3 position, TVector3 &newposition); void ComputeCharge(); PndTrackCand *ConvertToPndTrackCand(); PndTrack *ConvertToPndTrack(); Int_t GetCharge() { return fCharge; } void Draw(Color_t color = kBlack); void LightUp(); protected: double fRadius, fCenterX, fCenterY, fTanL, fZ0; int fCharge; PndTrkCluster *fCluster; PndTrkHit *fRefHit; // parameters: // pT = p cos(lam) // pL = p sin(lam) // ==> pL = pT * tan(lam) // z = z0 + s sin(lam) = z0 + tan(lam) [s cos(lam)] // with s cos(lam) = proj track length = -q phi_rad* R // ==> z = z0 - q tanl phi_rad R // If I have z = z0 + k phi_deg ==> k 180/pi = -q tanl R ==> tanl = -q k (180/pi) /R ClassDef(PndTrkTrack,1); }; #endif