Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
REveTrackProjected.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2019, 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 ROOT7_REveTrackProjected
13 #define ROOT7_REveTrackProjected
14 
15 #include <ROOT/REveTrack.hxx>
17 
18 namespace ROOT {
19 namespace Experimental {
20 
21 ////////////////////////////////////////////////////////////////////////////////
22 /// REveTrackProjected
23 /// Projected copy of a REveTrack.
24 ////////////////////////////////////////////////////////////////////////////////
25 
26 class REveTrackProjected : public REveTrack,
27  public REveProjected
28 {
29 private:
30  REveTrackProjected(const REveTrackProjected &); // Not implemented
31  REveTrackProjected &operator=(const REveTrackProjected &); // Not implemented
32 
33  Int_t GetBreakPointIdx(Int_t start);
34 
35  REveVector *fOrigPnts{nullptr}; // original track points
36 
37 protected:
38  std::vector<Int_t> fBreakPoints; // indices of track break-points
39 
40  void SetDepthLocal(Float_t d) override;
41 
42 public:
43  REveTrackProjected() = default;
44  virtual ~REveTrackProjected();
45 
46  void SetProjection(REveProjectionManager *mng, REveProjectable *model) override;
47 
48  void UpdateProjection() override;
49  REveElement *GetProjectedAsElement() override { return this; }
50  void MakeTrack(Bool_t recurse = kTRUE) override;
51 
52  void PrintLineSegments();
53 
54  void SecSelected(REveTrack *) override; // marked as signal in REveTrack
55 
56  Int_t WriteCoreJson(nlohmann::json &cj, Int_t rnr_offset) override;
57  void BuildRenderData() override;
58 };
59 
60 ////////////////////////////////////////////////////////////////////////////////
61 /// REveTrackListProjected
62 /// Specialization of REveTrackList for holding REveTrackProjected objects.
63 ////////////////////////////////////////////////////////////////////////////////
64 
65 class REveTrackListProjected : public REveTrackList, public REveProjected {
66 private:
67  REveTrackListProjected(const REveTrackListProjected &); // Not implemented
68  REveTrackListProjected &operator=(const REveTrackListProjected &); // Not implemented
69 
70 protected:
71  void SetDepthLocal(Float_t d) override;
72 
73 public:
74  REveTrackListProjected();
75  virtual ~REveTrackListProjected() {}
76 
77  void SetProjection(REveProjectionManager *proj, REveProjectable *model) override;
78  void UpdateProjection() override {}
79  REveElement *GetProjectedAsElement() override { return this; }
80 
81  void SetDepth(Float_t d) override;
82  virtual void SetDepth(Float_t d, REveElement *el);
83 };
84 
85 } // namespace Experimental
86 } // namespace ROOT
87 
88 #endif