19#include "TGLIncludes.h"
42 fC = SetModelDynCast<TEveJetCone>(obj);
75 for (
Int_t i = 0; i < NP; ++i,
angle += angle_step)
91 glPushAttrib(GL_ENABLE_BIT);
92 glDisable(GL_LIGHTING);
102 for (
Int_t i = 0; i < NP; ++i)
129 glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT | GL_LIGHTING_BIT);
131 glDisable(GL_CULL_FACE);
132 glEnable(GL_NORMALIZE);
134 glLightModeliv(GL_LIGHT_MODEL_TWO_SIDE, &lmts);
145 prev = i; i = next; ++next;
152 glNormal3fv(prev_normal);
153 glVertex3fv(
fP[prev]);
155 glNormal3fv(prev_normal + curr_normal);
158 glNormal3fv(curr_normal);
161 prev_normal = curr_normal;
165 ++next;
if (next >= NP) next = 0;
193 fM = SetModelDynCast<TEveJetConeProjected>(obj);
195 return fC !=
nullptr;
208 struct less_eve_vec_phi_t
211 {
return a.Phi() <
b.Phi(); }
220 static const TEveException kEH(
"TEveJetConeProjectedGL::CalculatePoints ");
234 for (
Int_t i = 0; i < 3; ++i)
249 if (tM >
fC->
fThetaC && tm < fC->fThetaC)
251 fP.reserve(
fP.size() + 1);
258 fP.reserve(
fP.size() + 1);
264 for (
Int_t i = 0; i < NP; ++i)
267 std::sort(
fP.begin() + 1,
fP.end(), less_eve_vec_phi_t());
273 throw kEH +
"Unsupported projection type.";
285 for (
Int_t i = 0; i < NP; ++i)
287 glVertex3fv(
fP[i].Arr());
299 for (
Int_t i = 0; i < NP; ++i)
301 glVertex3fv(
fP[i].Arr());
341 glPushAttrib(GL_ENABLE_BIT);
342 glDisable(GL_LIGHTING);
346 glEnable(GL_POLYGON_OFFSET_FILL);
347 glPolygonOffset(1.0f, 1.0f);
354 glEnable(GL_LINE_SMOOTH);
Option_t Option_t TPoint TPoint angle
TRObject operator()(const T1 &t1) const
Exception class thrown by TEve classes and macros.
OpenGL renderer class for TEveJetCone.
void SetBBox() override
Set bounding box.
virtual void CalculatePoints() const
Calculate points for drawing.
std::vector< TEveVector > fP
void DLCacheClear() override
Clear DL cache and reset internal point array.
TEveJetConeGL()
Constructor.
void DirectDraw(TGLRnrCtx &rnrCtx) const override
Render with OpenGL.
void Draw(TGLRnrCtx &rnrCtx) const override
Draw the cone.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
OpenGL renderer class for TEveJetConeProjected.
void RenderOutline() const
Draw jet outline.
void RenderPolygon() const
Draw jet surface.
TEveJetConeProjected * fM
void DirectDraw(TGLRnrCtx &rnrCtx) const override
Render with OpenGL.
void Draw(TGLRnrCtx &rnrCtx) const override
Draw the cone.
void SetBBox() override
Set bounding box.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
void CalculatePoints() const override
Calculate points for drawing.
TEveJetConeProjectedGL()
Constructor.
Projection of TEveJetCone.
Draws a jet cone with leading particle is specified in (eta,phi) and cone radius is given.
TEveVector CalcBaseVec(Float_t eta, Float_t phi) const
Returns point on the base of the cone with given eta and phi.
TEveProjectionManager * GetManager() const
TEveProjectable * GetProjectable() const
TEveProjection * GetProjection()
Base-class for non-linear projections.
void ProjectVector(TEveVector &v, Float_t d)
Project TEveVector.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the GL drawable, using draw flags.
TObject * fExternalObj
first replica
virtual void DLCacheClear()
Clear all entries for all LODs for this drawable from the display list cache but keeping the reserved...
Base-class for direct OpenGL renderers.
void SetAxisAlignedBBox(Float_t xmin, Float_t xmax, Float_t ymin, Float_t ymax, Float_t zmin, Float_t zmax)
Set axis-aligned bounding-box.
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
Bool_t IsDrawPassOutlineLine() const
static void Color(const TGLColor &color)
Set color from TGLColor.
static Float_t LineWidth()
Get the line-width, taking the global scaling into account.
Mother of all ROOT objects.
constexpr Double_t PiOver2()
T * Cross(const T v1[3], const T v2[3], T out[3])
Calculates the Cross Product of two vectors: out = [v1 x v2].
constexpr Double_t TwoPi()