12 #ifndef ROOT_TEveTrack
13 #define ROOT_TEveTrack
26 class TEveTrackPropagator;
32 class TEveTrack :
public TEveLine
34 friend class TEveTrackPropagator;
35 friend class TEveTrackList;
36 friend class TEveTrackGL;
39 TEveTrack& operator=(
const TEveTrack&);
42 typedef std::vector<TEvePathMarkD> vPathMark_t;
43 typedef vPathMark_t::iterator vPathMark_i;
44 typedef vPathMark_t::const_iterator vPathMark_ci;
47 enum EBreakProjectedTracks_e { kBPTDefault, kBPTAlways, kBPTNever };
61 vPathMark_t fPathMarks;
64 TEveTrackPropagator *fPropagator;
68 TEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop=0);
69 TEveTrack(TEveMCTrack* t, TEveTrackPropagator* prop=0);
70 TEveTrack(TEveRecTrack* t, TEveTrackPropagator* prop=0);
71 TEveTrack(TEveRecTrackD* t, TEveTrackPropagator* prop=0);
72 TEveTrack(
const TEveTrack& t);
75 virtual void ComputeBBox();
77 virtual void SetStdTitle();
79 virtual void SetTrackParams(
const TEveTrack& t);
80 virtual void SetPathMarks (
const TEveTrack& t);
82 virtual void MakeTrack(Bool_t recurse=kTRUE);
84 TEveTrackPropagator* GetPropagator()
const {
return fPropagator; }
85 Int_t GetLastPMIdx()
const {
return fLastPMIdx; }
86 void SetPropagator(TEveTrackPropagator* prop);
87 void SetAttLineAttMarker(TEveTrackList* tl);
89 const TEveVectorD& GetVertex()
const {
return fV; }
90 const TEveVectorD& GetMomentum()
const {
return fP; }
91 const TEveVectorD& GetEndMomentum()
const {
return fPEnd; }
93 Double_t GetDpDs()
const {
return fDpDs; }
94 void SetDpDs(Double_t dpds) { fDpDs = dpds; }
96 Int_t GetPdg()
const {
return fPdg; }
97 void SetPdg(Int_t pdg) { fPdg = pdg; }
98 Int_t GetCharge()
const {
return fCharge; }
99 void SetCharge(Int_t chg) { fCharge = chg; }
100 Int_t GetLabel()
const {
return fLabel; }
101 void SetLabel(Int_t lbl) { fLabel = lbl; }
102 Int_t GetIndex()
const {
return fIndex; }
103 void SetIndex(Int_t idx) { fIndex = idx; }
104 Int_t GetStatus()
const {
return fStatus; }
105 void SetStatus(Int_t idx) { fStatus = idx; }
107 void AddPathMark(
const TEvePathMarkD& pm) { fPathMarks.push_back(pm); }
108 void AddPathMark(
const TEvePathMark& pm) { fPathMarks.push_back(pm); }
110 void SortPathMarksByTime();
111 vPathMark_t& RefPathMarks() {
return fPathMarks; }
112 const vPathMark_t& RefPathMarks()
const {
return fPathMarks; }
114 void PrintPathMarks();
116 void SetLockPoints(Bool_t l) { fLockPoints = l; }
117 Bool_t GetLockPoints()
const {
return fLockPoints; }
121 virtual void SecSelected(TEveTrack*);
123 virtual const TGPicture* GetListTreeIcon(Bool_t open=kFALSE);
125 virtual void CopyVizParams(
const TEveElement* el);
126 virtual void WriteVizParams(std::ostream& out,
const TString& var);
128 virtual TClass* ProjectedClass(
const TEveProjection* p)
const;
130 ClassDef(TEveTrack, 0);
137 class TEveTrackList :
public TEveElementList,
141 friend class TEveTrackListEditor;
144 TEveTrackList(
const TEveTrackList&);
145 TEveTrackList& operator=(
const TEveTrackList&);
148 TEveTrackPropagator* fPropagator;
162 void FindMomentumLimits(TEveElement* el, Bool_t recurse=kTRUE);
163 Double_t RoundMomentumLimit(Double_t x);
164 void SanitizeMinMaxCuts();
167 TEveTrackList(TEveTrackPropagator* prop=0);
168 TEveTrackList(
const char* name, TEveTrackPropagator* prop=0);
169 virtual ~TEveTrackList();
171 void MakeTracks(Bool_t recurse=kTRUE);
172 void FindMomentumLimits(Bool_t recurse=kTRUE);
174 void SetPropagator(TEveTrackPropagator* prop);
175 TEveTrackPropagator* GetPropagator() {
return fPropagator; }
177 Bool_t GetRecurse()
const {
return fRecurse; }
178 void SetRecurse(Bool_t x) { fRecurse = x; }
182 virtual void SetMainColor(Color_t c);
183 virtual void SetLineColor(Color_t c) { SetMainColor(c); }
184 virtual void SetLineColor(Color_t c, TEveElement* el);
185 virtual void SetLineWidth(Width_t w);
186 virtual void SetLineWidth(Width_t w, TEveElement* el);
187 virtual void SetLineStyle(Style_t s);
188 virtual void SetLineStyle(Style_t s, TEveElement* el);
190 virtual void SetMarkerColor(Color_t c);
191 virtual void SetMarkerColor(Color_t c, TEveElement* el);
192 virtual void SetMarkerSize(Size_t s);
193 virtual void SetMarkerSize(Size_t s, TEveElement* el);
194 virtual void SetMarkerStyle(Style_t s);
195 virtual void SetMarkerStyle(Style_t s, TEveElement* el);
197 void SetRnrLine(Bool_t rnr);
198 void SetRnrLine(Bool_t rnr, TEveElement* el);
199 Bool_t GetRnrLine()
const {
return fRnrLine; }
201 void SetRnrPoints(Bool_t r);
202 void SetRnrPoints(Bool_t r, TEveElement* el);
203 Bool_t GetRnrPoints()
const {
return fRnrPoints; }
205 void SelectByPt(Double_t min_pt, Double_t max_pt);
206 void SelectByPt(Double_t min_pt, Double_t max_pt, TEveElement* el);
207 void SelectByP (Double_t min_p, Double_t max_p);
208 void SelectByP (Double_t min_p, Double_t max_p, TEveElement* el);
210 Double_t GetMinPt()
const {
return fMinPt; }
211 Double_t GetMaxPt()
const {
return fMaxPt; }
212 Double_t GetLimPt()
const {
return fLimPt; }
213 Double_t GetMinP()
const {
return fMinP; }
214 Double_t GetMaxP()
const {
return fMaxP; }
215 Double_t GetLimP()
const {
return fLimP; }
219 TEveTrack* FindTrackByLabel(Int_t label);
220 TEveTrack* FindTrackByIndex(Int_t index);
222 virtual void CopyVizParams(
const TEveElement* el);
223 virtual void WriteVizParams(std::ostream& out,
const TString& var);
225 virtual TClass* ProjectedClass(
const TEveProjection* p)
const;
227 ClassDef(TEveTrackList, 0);