12 #ifndef ROOT7_REveTrack
13 #define ROOT7_REveTrack
29 namespace Experimental {
31 class REveTrackPropagator;
39 class REveTrack :
public REveLine
41 friend class REveTrackPropagator;
42 friend class REveTrackList;
45 REveTrack &operator=(
const REveTrack &);
48 typedef std::vector<REvePathMarkD> vPathMark_t;
51 enum EBreakProjectedTracks_e { kBPTDefault, kBPTAlways, kBPTNever };
65 vPathMark_t fPathMarks;
68 REveTrackPropagator *fPropagator{
nullptr};
72 REveTrack(TParticle *t, Int_t label, REveTrackPropagator *prop =
nullptr);
74 REveTrack(REveMCTrack* t, REveTrackPropagator* prop=0);
75 REveTrack(REveRecTrack* t, REveTrackPropagator* prop=0);
76 REveTrack(REveRecTrackD* t, REveTrackPropagator* prop=0);
77 REveTrack(
const REveTrack &t);
80 void ComputeBBox()
override;
82 virtual void SetStdTitle();
84 virtual void SetTrackParams(
const REveTrack &t);
85 virtual void SetPathMarks(
const REveTrack &t);
87 virtual void MakeTrack(Bool_t recurse = kTRUE);
89 REveTrackPropagator *GetPropagator()
const {
return fPropagator; }
90 Int_t GetLastPMIdx()
const {
return fLastPMIdx; }
91 void SetPropagator(REveTrackPropagator *prop);
92 void SetAttLineAttMarker(REveTrackList *tl);
94 const REveVectorD &GetVertex()
const {
return fV; }
95 const REveVectorD &GetMomentum()
const {
return fP; }
96 const REveVectorD &GetEndMomentum()
const {
return fPEnd; }
98 Double_t GetDpDs()
const {
return fDpDs; }
99 void SetDpDs(Double_t dpds) { fDpDs = dpds; }
101 Int_t GetPdg()
const {
return fPdg; }
102 void SetPdg(Int_t pdg) { fPdg = pdg; }
103 Int_t GetCharge()
const {
return fCharge; }
104 void SetCharge(Int_t chg) { fCharge = chg; }
105 Int_t GetLabel()
const {
return fLabel; }
106 void SetLabel(Int_t lbl) { fLabel = lbl; }
107 Int_t GetIndex()
const {
return fIndex; }
108 void SetIndex(Int_t idx) { fIndex = idx; }
109 Int_t GetStatus()
const {
return fStatus; }
110 void SetStatus(Int_t idx) { fStatus = idx; }
112 void AddPathMark(
const REvePathMarkD &pm) { fPathMarks.push_back(pm); }
113 void AddPathMark(
const REvePathMark &pm) { fPathMarks.push_back(pm); }
115 void SortPathMarksByTime();
116 vPathMark_t &RefPathMarks() {
return fPathMarks; }
117 const vPathMark_t &RefPathMarks()
const {
return fPathMarks; }
119 void PrintPathMarks();
121 void SetLockPoints(Bool_t l) { fLockPoints = l; }
122 Bool_t GetLockPoints()
const {
return fLockPoints; }
126 virtual void SecSelected(REveTrack *);
128 void CopyVizParams(
const REveElement *el)
override;
129 void WriteVizParams(std::ostream &out,
const TString &var)
override;
131 TClass *ProjectedClass(
const REveProjection *p)
const override;
133 Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset)
override;
134 void BuildRenderData()
override;
142 class REveTrackList :
public REveElement,
143 public REveProjectable,
148 REveTrackList(
const REveTrackList &);
149 REveTrackList &operator=(
const REveTrackList &);
152 REveTrackPropagator *fPropagator{
nullptr};
166 void FindMomentumLimits(REveElement *el, Bool_t recurse = kTRUE);
167 Double_t RoundMomentumLimit(Double_t x);
168 void SanitizeMinMaxCuts();
171 REveTrackList(REveTrackPropagator *prop =
nullptr);
172 REveTrackList(
const std::string &name, REveTrackPropagator *prop =
nullptr);
173 virtual ~REveTrackList();
175 void MakeTracks(Bool_t recurse = kTRUE);
176 void FindMomentumLimits(Bool_t recurse = kTRUE);
178 void SetPropagator(REveTrackPropagator *prop);
179 REveTrackPropagator *GetPropagator() {
return fPropagator; }
181 Bool_t GetRecurse()
const {
return fRecurse; }
182 void SetRecurse(Bool_t x) { fRecurse = x; }
186 void SetMainColor(Color_t c)
override;
187 void SetLineColor(Color_t c)
override { SetMainColor(c); }
188 virtual void SetLineColor(Color_t c, REveElement *el);
189 void SetLineWidth(Width_t w)
override;
190 virtual void SetLineWidth(Width_t w, REveElement *el);
191 void SetLineStyle(Style_t s)
override;
192 virtual void SetLineStyle(Style_t s, REveElement *el);
194 void SetMarkerColor(Color_t c)
override;
195 virtual void SetMarkerColor(Color_t c, REveElement *el);
196 void SetMarkerSize(Size_t s)
override;
197 virtual void SetMarkerSize(Size_t s, REveElement *el);
198 void SetMarkerStyle(Style_t s)
override;
199 virtual void SetMarkerStyle(Style_t s, REveElement *el);
201 void SetRnrLine(Bool_t rnr);
202 void SetRnrLine(Bool_t rnr, REveElement *el);
203 Bool_t GetRnrLine()
const {
return fRnrLine; }
205 void SetRnrPoints(Bool_t r);
206 void SetRnrPoints(Bool_t r, REveElement *el);
207 Bool_t GetRnrPoints()
const {
return fRnrPoints; }
209 void SelectByPt(Double_t min_pt, Double_t max_pt);
210 void SelectByPt(Double_t min_pt, Double_t max_pt, REveElement *el);
211 void SelectByP(Double_t min_p, Double_t max_p);
212 void SelectByP(Double_t min_p, Double_t max_p, REveElement *el);
214 Double_t GetMinPt()
const {
return fMinPt; }
215 Double_t GetMaxPt()
const {
return fMaxPt; }
216 Double_t GetLimPt()
const {
return fLimPt; }
217 Double_t GetMinP()
const {
return fMinP; }
218 Double_t GetMaxP()
const {
return fMaxP; }
219 Double_t GetLimP()
const {
return fLimP; }
223 REveTrack *FindTrackByLabel(Int_t label);
224 REveTrack *FindTrackByIndex(Int_t index);
226 void CopyVizParams(
const REveElement *el)
override;
227 void WriteVizParams(std::ostream &out,
const TString &var)
override;
229 TClass *ProjectedClass(
const REveProjection *p)
const override;