7 #include <Reve/RenderElement.h>
9 #include <TPolyMarker3D.h>
10 #include <TPolyLine3D.h>
17 class Track : public RenderElement,
20 friend class TrackList;
22 Track(const Track&); // Not implemented
23 Track& operator=(const Track&); // Not implemented
26 typedef std::vector<Reve::PathMark*> vpPathMark_t;
27 typedef std::vector<Reve::PathMark*>::iterator vpPathMark_i;
34 vpPathMark_t fPathMarks;
36 TrackRnrStyle* fRnrStyle;
43 Track(Reve::MCTrack* t, TrackRnrStyle* rs);
44 Track(Reve::RecTrack* t, TrackRnrStyle* rs);
47 void Reset(Int_t n_points=0);
49 virtual void SetLineColor(Color_t col)
50 { SetMainColor(col); }
52 virtual void Paint(Option_t* option="")
53 { if(fRnrElement) TPolyLine3D::Paint(option); }
57 TrackRnrStyle* GetRnrStyle() const { return fRnrStyle; }
58 void SetRnrStyle(TrackRnrStyle* rs) { fRnrStyle = rs; }
60 virtual const Text_t* GetName() const { return fName; }
61 virtual void SetName(const Text_t* name) { fName = name; }
63 virtual const Text_t* GetTitle() const { return fTitle; }
64 virtual void SetTitle(const Text_t* title) { fTitle = title; }
66 Int_t GetLabel() const { return fLabel; }
67 void AddPathMark(Reve::PathMark* pm) { fPathMarks.push_back(pm); }
69 //--------------------------------
71 void ImportHits(); // *MENU*
72 void ImportClusters(); // *MENU*
78 /**************************************************************************/
80 /**************************************************************************/
82 // This is decoupled from Track/TrackList to allow sharing of the
83 // RnrStyle among several instances. The interface is half cooked and
84 // there is no good way to set RnrStyle after the object has been
85 // created (shouldn't be too hard to fix).
87 // TrackList has Get/Set methods for RnrStlye and
88 // TrackListEditor provides editor access to them.
90 class TrackRnrStyle : public TObject
99 Float_t fMaxOrbs; // Maximal angular path of tracks' orbits (1 ~ 2Pi).
100 Float_t fMinAng; // Minimal angular step between two helix points.
101 Float_t fDelta; // Maximal error at the mid-point of the line connecting to helix points.
103 Bool_t fFitDaughters;
108 void SetColor(Color_t c) { fColor = c; }
109 Color_t GetColor() const { return fColor; }
111 Float_t GetMagField() const { return fMagField; }
112 void SetMagField(Float_t mf) { fMagField = mf; }
114 static Float_t fgDefMagField;
115 static const Float_t fgkB2C;
116 static TrackRnrStyle fgDefStyle;
118 ClassDef(TrackRnrStyle, 1);
119 }; // endclass TrackRnrStyle
122 /**************************************************************************/
124 /**************************************************************************/
126 class TrackList : public RenderElementListBase,
129 TrackList(const TrackList&); // Not implemented
130 TrackList& operator=(const TrackList&); // Not implemented
138 TrackRnrStyle* mRnrStyle;
144 TrackList(Int_t n_tracks=0);
145 TrackList(const Text_t* name, Int_t n_tracks=0);
147 void Reset(Int_t n_tracks=0);
149 virtual const Text_t* GetTile() const { return fTitle; }
150 virtual void SetTitle(const Text_t* t) { fTitle = t; }
152 virtual Bool_t CanEditMainColor() { return kTRUE; }
154 virtual void Paint(Option_t* option="");
156 virtual void AddElement(RenderElement* el);
158 void SetRnrStyle(TrackRnrStyle* rst) { mRnrStyle= rst; }
159 TrackRnrStyle* GetRnrStyle() { return mRnrStyle; }
161 Bool_t GetRnrTracks() const { return fRnrTracks; }
162 void SetRnrTracks(Bool_t);
164 Bool_t GetRnrMarkers() const { return fRnrMarkers; }
165 void SetRnrMarkers(Bool_t);
170 Float_t GetMaxR() const { return mRnrStyle->fMaxZ; }
171 Float_t GetMaxZ() const { return mRnrStyle->fMaxR; }
172 Float_t GetMaxOrbs() const { return mRnrStyle->fMaxOrbs; }
173 Float_t GetMinAng() const { return mRnrStyle->fMinAng; }
174 Float_t GetDelta() const { return mRnrStyle->fDelta; }
175 Bool_t GetFitDaughters() const { return mRnrStyle->fFitDaughters; }
176 Bool_t GetFitDecay() const { return mRnrStyle->fFitDecay; }
178 void SetMaxR(Float_t x);
179 void SetMaxZ(Float_t x);
180 void SetMaxOrbs(Float_t x);
181 void SetMinAng(Float_t x);
182 void SetDelta(Float_t x);
183 void SetFitDaughters(Bool_t x);
184 void SetFitDecay(Bool_t x);
187 // void UpdateBounds();
188 Int_t GetNTracks() { return fN; }
190 void SelectByPt(Float_t min_pt=0.2, Float_t max_pt=10); // *MENU*
192 //--------------------------------
194 void ImportHits(); // *MENU*
195 void ImportClusters(); // *MENU*
197 ClassDef(TrackList, 1);