00001
00002
00003
00004 #ifndef FROOT_TFndEvdTrack
00005 #define FROOT_TFndEvdTrack
00006
00007 #include <TThread.h>
00008
00009 #include <TGeoHelix.h>
00010 #include <TPolyLine3D.h>
00011 #include <TPointSet3D.h>
00012
00013 #include "FIN_PHYS.h"
00014
00015 using namespace FIN_PHYS;
00016
00017 class TFndEvdTrack : public TObject {
00018
00019 public:
00020 enum E_FndTrackMode{
00021 E_FndTrack_None = 0,
00022 E_FndTrack_Line = 1,
00023 E_FndTrack_Helix = 2
00024 };
00025
00026 protected:
00027 enum E_FndTrackDefCol{
00028 E_FndTrCol_Default = kGray + 3,
00029 E_FndTrCol_Elec = kGreen,
00030 E_FndTrCol_Posit = kGreen + 2,
00031 E_FndTrCol_KaonMin = kOrange + 10,
00032 E_FndTrCol_KaonPlu = kOrange - 3,
00033 E_FndTrCol_MuonMin = kOrange + 10,
00034 E_FndTrCol_MuonPlu = kOrange - 3,
00035 E_FndTrCol_PiMin = kRed,
00036 E_FndTrCol_PiPlu = kRed - 4,
00037 E_FndTrCol_Prot = kBlue + 2,
00038 E_FndTrCol_Neut = kBlack,
00039 E_FndTrCol_Phot = kCyan - 10
00040 };
00041
00042
00043 TPolyLine3D *fLine;
00044
00045 TGeoHelix *fHelix;
00046 TPointSet3D *fHelixPoints;
00047
00048 Double_t fB[3];
00049 Int_t fPID;
00050 Int_t fMode;
00051
00052
00053
00054 virtual void InitHelix(const Int_t &charge,const Double_t &rad, const Double_t &lam_d);
00055 virtual void SetHelix(const Double_t &x,const Double_t &y,const Double_t &z,const Double_t &phi_d,const Double_t &z_sig);
00056 virtual void LoadHelixPoints(const Double_t &MaxLength,const Double_t step=0.03,const Int_t N_max_points = 30000);
00057
00058 public:
00059
00060 TFndEvdTrack();
00061 TFndEvdTrack(Double_t Bx,Double_t By,Double_t Bz);
00062 ~TFndEvdTrack();
00063
00064 Int_t GetTrackMode() { return fMode; }
00065
00066 virtual TObject *GetDrawable();
00067 virtual void DrawTrack(Option_t *option="");
00068 virtual void Draw(Option_t *option="") { DrawTrack(option); }
00069
00070 virtual void SetPID(const Int_t &pid);
00071 virtual void SetColor(const Int_t &col);
00072 virtual void SetWidth(const Double_t &w);
00073
00074 virtual void BuildLine(const Double_t &x,const Double_t &y,const Double_t &z,const Double_t &phi_d, const Double_t &lam_d,const Double_t &length);
00075 virtual void BuildLine(const Double_t &x,const Double_t &y,const Double_t &z,const Double_t &cx,const Double_t &cy,const Double_t &cz,const Double_t &length);
00076
00077 virtual void BuildHelix(const Double_t &x,const Double_t &y,const Double_t &z,const Int_t &charge,const Double_t &rad, const Double_t &phi_d, const Double_t &lam_d, const Double_t &Length);
00078 virtual void BuildHelix(const Double_t &x,const Double_t &y,const Double_t &z,const Int_t &charge,const Double_t &rad, const Double_t &cx,const Double_t &cy,const Double_t &cz, const Double_t &Length);
00079
00080 ClassDef(TFndEvdTrack,0)
00081 };
00082
00083
00084
00085
00086
00087 #endif // FROOT_TFndEvdTrack