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);
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.
virtual void DLCacheClear()
Clear DL cache and reset internal point array.
virtual void CalculatePoints() const
Calculate points for drawing.
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Render with OpenGL.
std::vector< TEveVector > fP
TEveJetConeGL()
Constructor.
virtual void SetBBox()
Set bounding box.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the cone.
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr)
Set model object.
OpenGL renderer class for TEveJetConeProjected.
void RenderOutline() const
Draw jet outline.
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Render with OpenGL.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the cone.
void RenderPolygon() const
Draw jet surface.
TEveJetConeProjected * fM
virtual void SetBBox()
Set bounding box.
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr)
Set model object.
virtual void CalculatePoints() const
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()