#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 TEveTrackGL;
private:
TEveTrack& operator=(const TEveTrack&);
public:
typedef std::vector<TEvePathMark> vPathMark_t;
typedef vPathMark_t::iterator vPathMark_i;
typedef vPathMark_t::const_iterator vPathMark_ci;
enum EBreakProjectedTracks_e { kBPTDefault, kBPTAlways, kBPTNever };
protected:
TEveVector fV;
TEveVector fP;
TEveVector fPEnd;
Double_t fBeta;
Int_t fPdg;
Int_t fCharge;
Int_t fLabel;
Int_t fIndex;
vPathMark_t fPathMarks;
TEveTrackPropagator *fPropagator;
UChar_t fBreakProjectedTracks;
static Bool_t fgDefaultBreakProjectedTracks;
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);
const TEveVector& GetVertex() const { return fV; }
const TEveVector& GetMomentum() const { return fP; }
const TEveVector& GetEndMomentum() const { return fPEnd; }
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(const TEvePathMark& pm) { fPathMarks.push_back(pm); }
void SortPathMarksByTime();
vPathMark_t& RefPathMarks() { return fPathMarks; }
const vPathMark_t& RefPathMarks() const { return fPathMarks; }
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 SecSelected(TEveTrack*);
virtual void SetLineStyle(Style_t lstyle);
virtual const TGPicture* GetListTreeIcon(Bool_t open=kFALSE);
virtual void CopyVizParams(const TEveElement* el);
virtual void WriteVizParams(ostream& out, const TString& var);
virtual TClass* ProjectedClass() const;
Bool_t ShouldBreakTrack() const;
UChar_t GetBreakProjectedTracks() const { return fBreakProjectedTracks; }
void SetBreakProjectedTracks(UChar_t bt) { fBreakProjectedTracks = bt; }
static Bool_t GetDefaultBreakProjectedTracks() { return fgDefaultBreakProjectedTracks; }
static void SetDefaultBreakProjectedTracks(Bool_t bt) { fgDefaultBreakProjectedTracks = bt; }
ClassDef(TEveTrack, 1);
};
class TEveTrackList : public TEveElementList,
public TEveProjectable,
public TAttMarker,
public TAttLine
{
friend class TEveTrackListEditor;
private:
TEveTrackList(const TEveTrackList&);
TEveTrackList& operator=(const TEveTrackList&);
protected:
TEveTrackPropagator* fPropagator;
Bool_t fRecurse;
Bool_t fRnrLine;
Bool_t fRnrPoints;
Float_t fMinPt;
Float_t fMaxPt;
Float_t fLimPt;
Float_t fMinP;
Float_t fMaxP;
Float_t fLimP;
void FindMomentumLimits(TEveElement* el, Bool_t recurse=kTRUE);
Float_t RoundMomentumLimit(Float_t x);
void SanitizeMinMaxCuts();
public:
TEveTrackList(TEveTrackPropagator* rs=0);
TEveTrackList(const Text_t* name, TEveTrackPropagator* rs=0);
virtual ~TEveTrackList();
void MakeTracks(Bool_t recurse=kTRUE);
void FindMomentumLimits(Bool_t recurse=kTRUE);
void SetPropagator(TEveTrackPropagator* rs);
TEveTrackPropagator* GetPropagator() { return fPropagator; }
Bool_t GetRecurse() const { return fRecurse; }
void SetRecurse(Bool_t x) { fRecurse = x; }
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() const { return fRnrLine; }
void SetRnrPoints(Bool_t r);
void SetRnrPoints(Bool_t r, TEveElement* el);
Bool_t GetRnrPoints() const { 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);
Float_t GetMinPt() const { return fMinPt; }
Float_t GetMaxPt() const { return fMaxPt; }
Float_t GetLimPt() const { return fLimPt; }
Float_t GetMinP() const { return fMinP; }
Float_t GetMaxP() const { return fMaxP; }
Float_t GetLimP() const { return fLimP; }
TEveTrack* FindTrackByLabel(Int_t label);
TEveTrack* FindTrackByIndex(Int_t index);
void ImportHits();
void ImportClusters();
virtual void CopyVizParams(const TEveElement* el);
virtual void WriteVizParams(ostream& out, const TString& var);
virtual TClass* ProjectedClass() const;
ClassDef(TEveTrackList, 1);
};
#endif
Last change: Wed Dec 10 08:21:26 2008
Last generated: 2008-12-10 08:21
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.