#ifndef ROOT_TEveTrack
#define ROOT_TEveTrack
#include <vector>
#include "TEveVSDStructs.h"
#include "TEveElement.h"
#include "TEveLine.h"
#include "TPolyMarker3D.h"
#include "TMarker.h"
class TEveTrackPropagator;
class TEveTrackList;
class TEveTrack : public TEveLine
{
   friend class TEveTrackPropagator;
   friend class TEveTrackList;
   friend class TEveTrackCounter;
   friend class TEveTrackGL;
public:
   typedef std::vector<TEvePathMark*>           vpPathMark_t;
   typedef std::vector<TEvePathMark*>::iterator vpPathMark_i;
protected:
   TEveVector         fV;          
   TEveVector         fP;          
   Double_t           fBeta;       
   Int_t              fPdg;        
   Int_t              fCharge;     
   Int_t              fLabel;      
   Int_t              fIndex;      
   vpPathMark_t       fPathMarks;  
   TEveTrackPropagator *fPropagator;   
public:
   TEveTrack();
   TEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* rs);
   TEveTrack(TEveMCTrack*  t, TEveTrackPropagator* rs);
   TEveTrack(TEveRecTrack* t, TEveTrackPropagator* rs);
   TEveTrack(const TEveTrack& t);
   virtual ~TEveTrack();
   virtual void SetStdTitle();
   virtual void SetTrackParams(const TEveTrack& t);
   virtual void SetPathMarks  (const TEveTrack& t);
   virtual void MakeTrack(Bool_t recurse=kTRUE);
   TEveTrackPropagator* GetPropagator() const  { return fPropagator; }
   void SetPropagator(TEveTrackPropagator* rs);
   void SetAttLineAttMarker(TEveTrackList* tl);
   Int_t GetPdg()    const   { return fPdg;   }
   void SetPdg(Int_t pdg)    { fPdg = pdg;    }
   Int_t GetCharge() const   { return fCharge; }
   void SetCharge(Int_t chg) { fCharge = chg; }
   Int_t GetLabel()  const   { return fLabel; }
   void  SetLabel(Int_t lbl) { fLabel = lbl;  }
   Int_t GetIndex()  const   { return fIndex; }
   void  SetIndex(Int_t idx) { fIndex = idx;  }
   void          AddPathMark(TEvePathMark* pm) { fPathMarks.push_back(pm); }
   vpPathMark_t& GetPathMarksRef()               { return fPathMarks; }
   const vpPathMark_t& GetPathMarksRef() const   { return fPathMarks; }
   void          SortPathMarksByTime();
   
   void ImportHits();              
   void ImportClusters();          
   void ImportClustersFromIndex(); 
   void ImportKine();              
   void ImportKineWithArgs(Bool_t importMother=kTRUE, Bool_t impDaugters=kTRUE,
                           Bool_t colorPdg    =kTRUE, Bool_t recurse    =kTRUE); 
   void PrintKineStack();          
   void PrintPathMarks();          
   
   virtual void CtrlClicked(TEveTrack*); 
   virtual void SetLineStyle(Style_t lstyle);
   virtual const TGPicture* GetListTreeIcon();
   virtual TClass* ProjectedClass() const;
   ClassDef(TEveTrack, 1); 
};
class TEveTrackList : public TEveElementList,
		      public TEveProjectable,
		      public TAttMarker,
		      public TAttLine
{
   friend class TEveTrackListEditor;
private:
   TEveTrackList(const TEveTrackList&);            
   TEveTrackList& operator=(const TEveTrackList&); 
   Bool_t               fRecurse;    
protected:
   TEveTrackPropagator* fPropagator;   
   Bool_t               fRnrLine;    
   Bool_t               fRnrPoints;  
   Float_t              fMinPt;      
   Float_t              fMaxPt;      
   Float_t              fLimPt;      
   Float_t              fMinP;       
   Float_t              fMaxP;       
   Float_t              fLimP;       
   Float_t RoundMomentumLimit(Float_t x);
public:
   TEveTrackList(TEveTrackPropagator* rs=0);
   TEveTrackList(const Text_t* name, TEveTrackPropagator* rs=0);
   virtual ~TEveTrackList();
   void  MakeTracks(Bool_t recurse=kTRUE);
   void  FindMomentumLimits(TEveElement* el, Bool_t recurse);
   void  SetPropagator(TEveTrackPropagator* rs);
   TEveTrackPropagator*  GetPropagator(){return fPropagator;}
   
   virtual void   SetMainColor(Color_t c);
   virtual void   SetLineColor(Color_t c){SetMainColor(c);}
   virtual void   SetLineColor(Color_t c, TEveElement* el);
   virtual void   SetLineWidth(Width_t w);
   virtual void   SetLineWidth(Width_t w, TEveElement* el);
   virtual void   SetLineStyle(Style_t s);
   virtual void   SetLineStyle(Style_t s, TEveElement* el);
   virtual void   SetMarkerColor(Color_t c);
   virtual void   SetMarkerColor(Color_t c, TEveElement* el);
   virtual void   SetMarkerSize(Size_t s);
   virtual void   SetMarkerSize(Size_t s, TEveElement* el);
   virtual void   SetMarkerStyle(Style_t s);
   virtual void   SetMarkerStyle(Style_t s, TEveElement* el);
   void SetRnrLine(Bool_t rnr);
   void SetRnrLine(Bool_t rnr, TEveElement* el);
   Bool_t GetRnrLine(){return fRnrLine;}
   void SetRnrPoints(Bool_t r);
   void SetRnrPoints(Bool_t r, TEveElement* el);
   Bool_t GetRnrPoints(){return fRnrPoints;}
   void SelectByPt(Float_t min_pt, Float_t max_pt);
   void SelectByPt(Float_t min_pt, Float_t max_pt, TEveElement* el);
   void SelectByP (Float_t min_p,  Float_t max_p);
   void SelectByP (Float_t min_p,  Float_t max_p,  TEveElement* el);
   
   TEveTrack* FindTrackByLabel(Int_t label); 
   TEveTrack* FindTrackByIndex(Int_t index); 
   void ImportHits();     
   void ImportClusters(); 
   virtual TClass* ProjectedClass() const;
   ClassDef(TEveTrackList, 1); 
};
class TEveTrackCounter : public TEveElement, public TNamed
{
   friend class TEveTrackCounterEditor;
public:
   enum EClickAction_e { kCA_PrintTrackInfo, kCA_ToggleTrack };
private:
   TEveTrackCounter(const TEveTrackCounter&);            
   TEveTrackCounter& operator=(const TEveTrackCounter&); 
protected:
   Int_t fBadLineStyle;  
   Int_t fClickAction;   
   Int_t fEventId;       
   Int_t fAllTracks;     
   Int_t fGoodTracks;    
   TList fTrackLists;    
public:
   TEveTrackCounter(const Text_t* name="TEveTrackCounter", const Text_t* title="");
   virtual ~TEveTrackCounter();
   Int_t GetEventId() const { return fEventId; }
   void  SetEventId(Int_t id) { fEventId = id; }
   void Reset();
   void RegisterTracks(TEveTrackList* tlist, Bool_t goodTracks);
   void DoTrackAction(TEveTrack* track);
   Int_t GetClickAction() const  { return fClickAction; }
   void  SetClickAction(Int_t a) { fClickAction = a; }
   void OutputEventTracks(FILE* out=0);
   static TEveTrackCounter* fgInstance;
   ClassDef(TEveTrackCounter, 1); 
};
#endif
Last update: Thu Jan 17 08:49:24 2008
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.