3 #include "NLTTrackGL.h"
4 #include <Reve/NLTTrack.h>
5 #include <Reve/NLTProjector.h>
6 #include <Reve/GLUtilNS.h>
9 #include <TGLIncludes.h>
13 //______________________________________________________________________
19 NLTTrackGL::NLTTrackGL() : TrackGL(), fM(0)
21 // fDLCache = kFALSE; // Disable display list.
24 NLTTrackGL::~NLTTrackGL()
27 /**************************************************************************/
29 Bool_t NLTTrackGL::SetModel(TObject* obj, const Option_t* /*opt*/)
31 if(TrackGL::SetModel(obj) == kFALSE) return kFALSE;
32 if(SetModelCheckClass(obj, NLTTrack::Class())) {
33 fM = dynamic_cast<NLTTrack*>(obj);
39 /**************************************************************************/
41 void NLTTrackGL::DirectDraw(TGLRnrCtx & rnrCtx) const
43 // printf("NLTTrackGL::DirectDraw Style %d, LOD %d\n", flags.Style(), flags.LOD());
44 if (rnrCtx.DrawPass() == TGLRnrCtx::kPassOutlineLine || fM->Size() == 0)
49 Float_t* p = fM->GetP();
50 for (std::vector<Int_t>::iterator bpi = fM->fBreakPoints.begin();
51 bpi != fM->fBreakPoints.end(); ++bpi)
53 Int_t size = *bpi - start;
54 if (fM->fRnrLine) GLUtilNS::RenderLine(*fM, p, size);
55 if (fM->fRnrPoints) GLUtilNS::RenderPolyMarkers(*fM, p, size);
61 std::vector<PathMark*>& pm = fM->fPathMarks;
62 TrackRnrStyle& RS = *fM->GetRnrStyle();
65 Float_t* pnts = new Float_t[3*pm.size()]; // maximum
68 for(std::vector<PathMark*>::iterator i=pm.begin(); i!=pm.end(); ++i)
73 case(PathMark::Daughter):
74 if(RS.fRnrDaughters) accept = kTRUE;
76 case(PathMark::Reference):
77 if(RS.fRnrReferences) accept = kTRUE;
79 case(PathMark::Decay):
80 if(RS.fRnrDecay) accept = kTRUE;
85 if((TMath::Abs((*i)->V.z) < RS.fMaxZ) && ((*i)->V.Perp() < RS.fMaxR))
87 pnts[3*N ] =(*i)->V.x;
88 pnts[3*N+1] =(*i)->V.y;
89 pnts[3*N+2] =(*i)->V.z;
90 fM->fProjection->ProjectPoint(pnts[3*N ], pnts[3*N+1], pnts[3*N+2]);
95 GLUtilNS::RenderPolyMarkers(RS.fPMAtt, pnts, N);
100 if(RS.fRnrFV && fTrack->GetLastPoint())
101 GLUtilNS::RenderPolyMarkers(RS.fFVAtt, fTrack->GetP(), 1);