Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TEveTrackGL.cxx
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#include "TEveTrackGL.h"
13#include "TEveTrack.h"
14#include "TEveTrackPropagator.h"
15
16#include "TGLIncludes.h"
17#include "TGLRnrCtx.h"
18#include "TGLSelectRecord.h"
19
20/** \class TEveTrackGL
21\ingroup TEve
22GL-renderer for TEveTrack class.
23*/
24
25
26////////////////////////////////////////////////////////////////////////////////
27/// Default constructor.
28
30{
31 // fDLCache = false; // Disable display list.
32}
33
34////////////////////////////////////////////////////////////////////////////////
35/// Set model object.
36
38{
41 return kTRUE;
42}
43
44////////////////////////////////////////////////////////////////////////////////
45/// Processes secondary selection from TGLViewer.
46/// Just calls SecSelected(track) in model object which emits a signal.
47/// This is used in user code for alternate selection of good / bad tracks.
48
50{
51 if (gDebug > 0)
52 {
53 printf("TEveTrackGL::ProcessSelection %d names on the stack (z1=%g, z2=%g).\n",
54 rec.GetN(), rec.GetMinZ(), rec.GetMaxZ());
55 printf(" Names: ");
56 for (Int_t j=0; j<rec.GetN(); ++j) printf ("%d ", rec.GetItem(j));
57 printf("\n");
58 }
59
61}
62
63////////////////////////////////////////////////////////////////////////////////
64/// GL rendering code.
65/// Virtual from TGLLogicalShape.
66
73
74////////////////////////////////////////////////////////////////////////////////
75/// Render path-marks and the first vertex, if required.
76
78{
81 if ( ! pms.empty())
82 {
83 Float_t *pnts = new Float_t[3*pms.size()]; // maximum
84 Int_t cnt = 0;
85 Int_t n = 0;
86 for (Int_t i = 0; i < fTrack->fLastPMIdx; ++i)
87 {
88 const TEvePathMarkD &pm = pms[i];
89 if ((pm.fType == TEvePathMarkD::kDaughter && rTP.GetRnrDaughters()) ||
90 (pm.fType == TEvePathMarkD::kReference && rTP.GetRnrReferences()) ||
91 (pm.fType == TEvePathMarkD::kDecay && rTP.GetRnrDecay()) ||
92 (pm.fType == TEvePathMarkD::kCluster2D && rTP.GetRnrCluster2Ds()))
93 {
94 pnts[n ] = pm.fV.fX;
95 pnts[n+1] = pm.fV.fY;
96 pnts[n+2] = pm.fV.fZ;
97 n += 3;
98 ++cnt;
99 }
100 }
101 TGLUtil::RenderPolyMarkers(rTP.RefPMAtt(), 0, pnts, cnt,
102 rnrCtx.GetPickRadius(),
103 rnrCtx.Selection());
104 delete [] pnts;
105 }
106
107 // fist vertex
108 if (rTP.GetRnrFV() && fTrack->GetLastPoint())
109 TGLUtil::RenderPolyMarkers(rTP.RefFVAtt(), 0, fTrack->GetP(), 1,
110 rnrCtx.GetPickRadius(),
111 rnrCtx.Selection());
112}
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:71
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
const char Option_t
Option string (const char)
Definition RtypesCore.h:80
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Int_t gDebug
Global variable setting the debug level. Set to 0 to disable, increase it in steps of 1 to increase t...
Definition TROOT.cxx:627
GL-renderer for TEveLine class.
Definition TEveLineGL.h:24
void DirectDraw(TGLRnrCtx &rnrCtx) const override
Direct GL rendering for TEveLine.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
TEveTrackGL()
Default constructor.
void RenderPathMarksAndFirstVertex(TGLRnrCtx &rnrCtx) const
Render path-marks and the first vertex, if required.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
void ProcessSelection(TGLRnrCtx &rnrCtx, TGLSelectRecord &rec) override
Processes secondary selection from TGLViewer.
TEveTrack * fTrack
Definition TEveTrackGL.h:29
void DirectDraw(TGLRnrCtx &rnrCtx) const override
GL rendering code.
Holding structure for a number of track rendering parameters.
std::vector< TEvePathMarkD > vPathMark_t
Definition TEveTrack.h:42
virtual void SecSelected(TEveTrack *)
Emits "SecSelected(TEveTrack*)" signal.
vPathMark_t & RefPathMarks()
Definition TEveTrack.h:111
TEveTrackPropagator * GetPropagator() const
Definition TEveTrack.h:84
Int_t fLastPMIdx
Definition TEveTrack.h:62
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Definition TGLRnrCtx.h:41
Standard selection record including information about containing scene and details ob out selected ob...
static void RenderPolyMarkers(const TAttMarker &marker, Char_t transp, Float_t *p, Int_t n, Int_t pick_radius=0, Bool_t selection=kFALSE, Bool_t sec_selection=kFALSE)
Render polymarkers at points specified by p-array.
Definition TGLUtil.cxx:1971
Mother of all ROOT objects.
Definition TObject.h:41
virtual Int_t GetLastPoint() const
virtual Float_t * GetP() const
const Int_t n
Definition legend1.C:16