Logo ROOT   6.10/09
Reference Guide
TEveTrack.h
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TEveTrack
13 #define ROOT_TEveTrack
14 
15 #include <vector>
16 
17 #include "TEveVector.h"
18 #include "TEvePathMark.h"
19 #include "TEveVSDStructs.h"
20 #include "TEveElement.h"
21 #include "TEveLine.h"
22 
23 #include "TPolyMarker3D.h"
24 #include "TMarker.h"
25 
27 class TEveTrackList;
28 
29 class TEveMCTrack;
30 class TParticle;
31 
32 class TEveTrack : public TEveLine
33 {
34  friend class TEveTrackPropagator;
35  friend class TEveTrackList;
36  friend class TEveTrackGL;
37 
38 private:
39  TEveTrack& operator=(const TEveTrack&); // Not implemented
40 
41 public:
42  typedef std::vector<TEvePathMarkD> vPathMark_t;
43  typedef vPathMark_t::iterator vPathMark_i;
44  typedef vPathMark_t::const_iterator vPathMark_ci;
45 
46  // Deprecated -- to be removed.
48 
49 protected:
50  TEveVectorD fV; // Starting vertex
51  TEveVectorD fP; // Starting momentum
52  TEveVectorD fPEnd; // Momentum at the last point of extrapolation
53  Double_t fBeta; // Relativistic beta factor
54  Double_t fDpDs; // Momentum loss over distance
55  Int_t fPdg; // PDG code
56  Int_t fCharge; // Charge in units of e0
57  Int_t fLabel; // Simulation label
58  Int_t fIndex; // Reconstruction index
59  Int_t fStatus; // Status-word, user-defined.
60  Bool_t fLockPoints; // Lock points that are currently in - do nothing in MakeTrack().
61  vPathMark_t fPathMarks; // TEveVector of known points along the track
62  Int_t fLastPMIdx; //!Last path-mark index tried in track-propagation.
63 
64  TEveTrackPropagator *fPropagator; // Pointer to shared render-style
65 
66 public:
67  TEveTrack();
68  TEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop=0);
72  TEveTrack(const TEveTrack& t);
73  virtual ~TEveTrack();
74 
75  virtual void ComputeBBox();
76 
77  virtual void SetStdTitle();
78 
79  virtual void SetTrackParams(const TEveTrack& t);
80  virtual void SetPathMarks (const TEveTrack& t);
81 
82  virtual void MakeTrack(Bool_t recurse=kTRUE);
83 
85  Int_t GetLastPMIdx() const { return fLastPMIdx; }
88 
89  const TEveVectorD& GetVertex() const { return fV; }
90  const TEveVectorD& GetMomentum() const { return fP; }
91  const TEveVectorD& GetEndMomentum() const { return fPEnd; }
92 
93  Double_t GetDpDs() const { return fDpDs; }
94  void SetDpDs(Double_t dpds) { fDpDs = dpds; }
95 
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; }
106 
107  void AddPathMark(const TEvePathMarkD& pm) { fPathMarks.push_back(pm); }
108  void AddPathMark(const TEvePathMark& pm) { fPathMarks.push_back(pm); }
109 
110  void SortPathMarksByTime();
111  vPathMark_t& RefPathMarks() { return fPathMarks; }
112  const vPathMark_t& RefPathMarks() const { return fPathMarks; }
113 
114  void PrintPathMarks(); // *MENU*
115 
116  void SetLockPoints(Bool_t l) { fLockPoints = l; }
117  Bool_t GetLockPoints() const { return fLockPoints; }
118 
119  //-------------------------------------------------------------------
120 
121  virtual void SecSelected(TEveTrack*); // *SIGNAL*
122 
123  virtual const TGPicture* GetListTreeIcon(Bool_t open=kFALSE);
124 
125  virtual void CopyVizParams(const TEveElement* el);
126  virtual void WriteVizParams(std::ostream& out, const TString& var);
127 
128  virtual TClass* ProjectedClass(const TEveProjection* p) const;
129 
130  ClassDef(TEveTrack, 0); // Track with given vertex, momentum and optional referece-points (path-marks) along its path.
131 };
132 
133 /******************************************************************************/
134 // TEveTrackList
135 /******************************************************************************/
136 
138  public TAttMarker,
139  public TAttLine
140 {
141  friend class TEveTrackListEditor;
142 
143 private:
144  TEveTrackList(const TEveTrackList&); // Not implemented
145  TEveTrackList& operator=(const TEveTrackList&); // Not implemented
146 
147 protected:
148  TEveTrackPropagator* fPropagator; // Basic track rendering parameters, not enforced to elements.
149 
150  Bool_t fRecurse; // Recurse when propagating marker/line/etc attributes to tracks.
151 
152  Bool_t fRnrLine; // Render track as line.
153  Bool_t fRnrPoints; // Render track as points.
154 
155  Double_t fMinPt; // Minimum track pTfor display selection.
156  Double_t fMaxPt; // Maximum track pTfor display selection.
157  Double_t fLimPt; // Highest track pT in the container.
158  Double_t fMinP; // Minimum track pfor display selection.
159  Double_t fMaxP; // Maximum track pfor display selection.
160  Double_t fLimP; // Highest track p in the container.
161 
162  void FindMomentumLimits(TEveElement* el, Bool_t recurse=kTRUE);
163  Double_t RoundMomentumLimit(Double_t x);
164  void SanitizeMinMaxCuts();
165 
166 public:
168  TEveTrackList(const char* name, TEveTrackPropagator* prop=0);
169  virtual ~TEveTrackList();
170 
171  void MakeTracks(Bool_t recurse=kTRUE);
172  void FindMomentumLimits(Bool_t recurse=kTRUE);
173 
176 
177  Bool_t GetRecurse() const { return fRecurse; }
178  void SetRecurse(Bool_t x) { fRecurse = x; }
179 
180  //--------------------------------
181 
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);
189 
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);
196 
197  void SetRnrLine(Bool_t rnr);
198  void SetRnrLine(Bool_t rnr, TEveElement* el);
199  Bool_t GetRnrLine() const { return fRnrLine; }
200 
201  void SetRnrPoints(Bool_t r);
202  void SetRnrPoints(Bool_t r, TEveElement* el);
203  Bool_t GetRnrPoints() const { return fRnrPoints; }
204 
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);
209 
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; }
216 
217  //-------------------------------------------------------------------
218 
219  TEveTrack* FindTrackByLabel(Int_t label); // *MENU*
220  TEveTrack* FindTrackByIndex(Int_t index); // *MENU*
221 
222  virtual void CopyVizParams(const TEveElement* el);
223  virtual void WriteVizParams(std::ostream& out, const TString& var);
224 
225  virtual TClass* ProjectedClass(const TEveProjection* p) const;
226 
227  ClassDef(TEveTrackList, 0); // A list of tracks supporting change of common attributes and selection based on track parameters.
228 };
229 
230 #endif
Double_t fLimP
Definition: TEveTrack.h:160
void SetStatus(Int_t idx)
Definition: TEveTrack.h:105
Int_t GetLabel() const
Definition: TEveTrack.h:100
void AddPathMark(const TEvePathMark &pm)
Definition: TEveTrack.h:108
const TEveVectorD & GetVertex() const
Definition: TEveTrack.h:89
Int_t fLastPMIdx
Definition: TEveTrack.h:62
Double_t GetLimP() const
Definition: TEveTrack.h:215
void SetLabel(Int_t lbl)
Definition: TEveTrack.h:101
virtual void SetTrackParams(const TEveTrack &t)
Copy track parameters from t.
Definition: TEveTrack.cxx:284
Bool_t GetLockPoints() const
Definition: TEveTrack.h:117
Int_t GetCharge() const
Definition: TEveTrack.h:98
Bool_t GetRnrLine() const
Definition: TEveTrack.h:199
short Style_t
Definition: RtypesCore.h:76
virtual void SetLineColor(Color_t c)
Set the line color.
Definition: TEveTrack.h:183
float Size_t
Definition: RtypesCore.h:83
void SetRnrPoints(Bool_t r)
Set rendering of points. Propagate to projected lines.
Definition: TEveLine.cxx:144
TEveVectorD fP
Definition: TEveTrack.h:51
void SetIndex(Int_t idx)
Definition: TEveTrack.h:103
An arbitrary polyline with fixed line and marker attributes.
Definition: TEveLine.h:24
EBreakProjectedTracks_e
Definition: TEveTrack.h:47
Description of the dynamic properties of a particle.
Definition: TParticle.h:26
Int_t GetLastPMIdx() const
Definition: TEveTrack.h:85
const TEveVectorD & GetMomentum() const
Definition: TEveTrack.h:90
Int_t fLabel
Definition: TEveTrack.h:57
Basic string class.
Definition: TString.h:129
vPathMark_t & RefPathMarks()
Definition: TEveTrack.h:111
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual void SetMarkerStyle(Style_t mstyle=1)
Set marker style, propagate to projecteds.
TEveTrackPropagator * fPropagator
Last path-mark index tried in track-propagation.
Definition: TEveTrack.h:64
virtual void SetLineStyle(Style_t lstyle)
Set line-style of the line.
Definition: TEveLine.cxx:86
Int_t GetPdg() const
Definition: TEveTrack.h:96
TEveTrack & operator=(const TEveTrack &)
A list of TEveElements.
Definition: TEveElement.h:459
Double_t fMaxP
Definition: TEveTrack.h:159
Marker Attributes class.
Definition: TAttMarker.h:19
void SetCharge(Int_t chg)
Definition: TEveTrack.h:99
Double_t fLimPt
Definition: TEveTrack.h:157
Double_t x[n]
Definition: legend1.C:17
Double_t fBeta
Definition: TEveTrack.h:53
#define ClassDef(name, id)
Definition: Rtypes.h:297
Int_t fIndex
Definition: TEveTrack.h:58
Double_t GetMinP() const
Definition: TEveTrack.h:213
Bool_t fLockPoints
Definition: TEveTrack.h:60
virtual void MakeTrack(Bool_t recurse=kTRUE)
Calculate track representation based on track data and current settings of the propagator.
Definition: TEveTrack.cxx:340
void SetRecurse(Bool_t x)
Definition: TEveTrack.h:178
A list of tracks supporting change of common attributes and selection based on track parameters...
Definition: TEveTrack.h:137
Editor for TEveTrackList class.
void SetPropagator(TEveTrackPropagator *prop)
Set track&#39;s render style.
Definition: TEveTrack.cxx:311
Base-class for non-linear projections.
Bool_t GetRnrPoints() const
Definition: TEveTrack.h:203
Double_t fMinPt
Definition: TEveTrack.h:155
virtual void SetMarkerSize(Size_t msize=1)
Set marker size, propagate to projecteds.
virtual TClass * ProjectedClass(const TEveProjection *p) const
Virtual from TEveProjectable, return TEveTrackProjected class.
Definition: TEveTrack.cxx:501
Double_t fMaxPt
Definition: TEveTrack.h:156
short Color_t
Definition: RtypesCore.h:79
Int_t fStatus
Definition: TEveTrack.h:59
virtual void SetLineColor(Color_t col)
Set the line color.
Definition: TEveLine.h:48
Special-point on track:
Definition: TEvePathMark.h:22
TRandom2 r(17)
Bool_t fRnrLine
Definition: TEveLine.h:35
void SetDpDs(Double_t dpds)
Definition: TEveTrack.h:94
virtual void SetLineWidth(Width_t lwidth)
Set line-style of the line.
Definition: TEveLine.cxx:106
void SetPdg(Int_t pdg)
Definition: TEveTrack.h:97
std::vector< TEvePathMarkD > vPathMark_t
Definition: TEveTrack.h:42
TEveVectorD fPEnd
Definition: TEveTrack.h:52
Bool_t fRnrLine
Definition: TEveTrack.h:152
Int_t fPdg
Definition: TEveTrack.h:55
vPathMark_t::const_iterator vPathMark_ci
Definition: TEveTrack.h:44
Int_t GetStatus() const
Definition: TEveTrack.h:104
Bool_t fRnrPoints
Definition: TEveLine.h:36
TLine * l
Definition: textangle.C:4
Double_t GetLimPt() const
Definition: TEveTrack.h:212
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:71
virtual void SecSelected(TEveTrack *)
Emits "SecSelected(TEveTrack*)" signal.
Definition: TEveTrack.cxx:550
GL-renderer for TEveTrack class.
Definition: TEveTrackGL.h:22
TEveTrackPropagator * GetPropagator()
Definition: TEveTrack.h:175
Holding structure for a number of track rendering parameters.
void AddPathMark(const TEvePathMarkD &pm)
Definition: TEveTrack.h:107
Bool_t fRnrPoints
Definition: TEveTrack.h:153
Visual representation of a track.
Definition: TEveTrack.h:32
virtual void ComputeBBox()
Compute the bounding box of the track.
Definition: TEveTrack.cxx:243
virtual void SetMainColor(Color_t color)
Set main color of the element.
TEveTrackPropagator * GetPropagator() const
Definition: TEveTrack.h:84
virtual void SetMarkerColor(Color_t col)
Set marker color. Propagate to projected lines.
Definition: TEveLine.cxx:66
short Width_t
Definition: RtypesCore.h:78
const Bool_t kFALSE
Definition: RtypesCore.h:92
Int_t fCharge
Definition: TEveTrack.h:56
void SetRnrLine(Bool_t r)
Set rendering of line. Propagate to projected lines.
Definition: TEveLine.cxx:125
Double_t fMinP
Definition: TEveTrack.h:158
Double_t GetMaxPt() const
Definition: TEveTrack.h:211
double Double_t
Definition: RtypesCore.h:55
Bool_t GetRecurse() const
Definition: TEveTrack.h:177
virtual void SetPathMarks(const TEveTrack &t)
Copy path-marks from t.
Definition: TEveTrack.cxx:301
virtual const TGPicture * GetListTreeIcon(Bool_t open=kFALSE)
Returns list-tree icon for TEveTrack.
Definition: TEveTrack.cxx:235
TEveTrackPropagator * fPropagator
Definition: TEveTrack.h:148
Double_t GetDpDs() const
Definition: TEveTrack.h:93
Double_t fDpDs
Definition: TEveTrack.h:54
vPathMark_t fPathMarks
Definition: TEveTrack.h:61
const TEveVectorD & GetEndMomentum() const
Definition: TEveTrack.h:91
TEveTrack()
Default constructor.
Definition: TEveTrack.cxx:49
Double_t GetMaxP() const
Definition: TEveTrack.h:214
Int_t GetIndex() const
Definition: TEveTrack.h:102
virtual void CopyVizParams(const TEveElement *el)
Copy visualization parameters from element el.
Definition: TEveTrack.cxx:477
virtual void SetStdTitle()
Set standard track title based on most data-member values.
Definition: TEveTrack.cxx:268
virtual ~TEveTrack()
Destructor.
Definition: TEveTrack.cxx:226
void SortPathMarksByTime()
Sort registered pat-marks by time.
Definition: TEveTrack.cxx:518
void SetAttLineAttMarker(TEveTrackList *tl)
Set line and marker attributes from TEveTrackList.
Definition: TEveTrack.cxx:322
friend class TEveTrackList
Definition: TEveTrack.h:35
void SetLockPoints(Bool_t l)
Definition: TEveTrack.h:116
void PrintPathMarks()
Print registered path-marks.
Definition: TEveTrack.cxx:526
Double_t GetMinPt() const
Definition: TEveTrack.h:210
TEveVectorD fV
Definition: TEveTrack.h:50
const Bool_t kTRUE
Definition: RtypesCore.h:91
const vPathMark_t & RefPathMarks() const
Definition: TEveTrack.h:112
Base class for TEveUtil visualization elements, providing hierarchy management, rendering control and...
Definition: TEveElement.h:33
Line Attributes class.
Definition: TAttLine.h:18
vPathMark_t::iterator vPathMark_i
Definition: TEveTrack.h:43
virtual void WriteVizParams(std::ostream &out, const TString &var)
Write visualization parameters.
Definition: TEveTrack.cxx:491
Bool_t fRecurse
Definition: TEveTrack.h:150