GUI/TFndEvdTrack.h

00001 // @(#)fROOT/GUI:$Name:  $:$Id: TFndEvdTrack.h,v 1.9 2007/09/24 07:32:41 Diego_Faso Exp $
00002 // Author: Diego Faso <mailto:faso@to.infn.it>, 2007/04/04
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> // needed for drawing purposes
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{ // if fitted and recognized, then dedicated color
00028     E_FndTrCol_Default = kGray + 3,     // default (not fitted)
00029     E_FndTrCol_Elec    = kGreen,        // electron
00030     E_FndTrCol_Posit   = kGreen + 2,    // positron
00031     E_FndTrCol_KaonMin = kOrange + 10,  // K-
00032     E_FndTrCol_KaonPlu = kOrange -  3,  // K+
00033     E_FndTrCol_MuonMin = kOrange + 10,  // mu-
00034     E_FndTrCol_MuonPlu = kOrange -  3,  // mu+
00035     E_FndTrCol_PiMin   = kRed,       // mu-
00036     E_FndTrCol_PiPlu   = kRed -  4,  // mu+
00037     E_FndTrCol_Prot    = kBlue + 2, // Proton
00038     E_FndTrCol_Neut    = kBlack,    // neutron
00039     E_FndTrCol_Phot    = kCyan - 10 // photon (Gamma)
00040   };
00041 
00042 
00043   TPolyLine3D *fLine; // neutral track or no magnetic field
00044 
00045   TGeoHelix   *fHelix; // charged track in magnetic field
00046   TPointSet3D *fHelixPoints;
00047 
00048   Double_t fB[3];           // normalized direction for magnetic field (as in TGeoHelix)
00049   Int_t fPID;  // PID code (GEANT convention)
00050   Int_t fMode; // see E_FndTrackMode
00051 
00052   
00053   // --- protected methods
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(); // can be used for direct drawing
00067   virtual void DrawTrack(Option_t *option="");
00068   virtual void Draw(Option_t *option="") { DrawTrack(option); } // overload of TObject::Draw()
00069 
00070   virtual void SetPID(const Int_t &pid);
00071   virtual void SetColor(const Int_t &col); // will update current drawable object
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

Generated on Tue Oct 16 15:40:46 2007 by  doxygen 1.5.2