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);
101 glBegin(GL_LINE_LOOP);
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;
147 glBegin(GL_TRIANGLES);
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.";
284 glBegin(GL_LINE_LOOP);
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.0
f, 1.0
f);
354 glEnable(GL_LINE_SMOOTH);
TEveProjectable * GetProjectable() const
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
TEveJetConeProjectedGL()
Constructor.
static void Color(const TGLColor &color)
Set color from TGLColor.
void RenderPolygon() const
Draw jet surface.
constexpr Double_t TwoPi()
TEveVector CalcBaseVec(Float_t eta, Float_t phi) const
Returns point on the base of the cone with given eta and phi.
Draws a jet cone with leading particle is specified in (eta,phi) and cone radius is given...
virtual void CalculatePoints() const
Calculate points for drawing.
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.
Bool_t IsDrawPassOutlineLine() const
virtual void CalculatePoints() const
Calculate points for drawing.
TRObject operator()(const T1 &t1) const
OpenGL renderer class for TEveJetConeProjected.
virtual void DLCacheClear()
Clear DL cache and reset internal point array.
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=0)
Set model object.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the cone.
Projection of TEveJetCone.
Base-class for direct OpenGL renderers.
TEveProjectionManager * GetManager() const
void ProjectVector(TEveVector &v, Float_t d)
Project TEveVector.
Base-class for non-linear projections.
TObject * fExternalObj
first replica
virtual void SetBBox()
Set bounding box.
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Render with OpenGL.
virtual void SetBBox()
Set bounding box.
void RenderOutline() const
Draw jet outline.
std::vector< TEveVector > fP
T * Cross(const T v1[3], const T v2[3], T out[3])
TEveJetConeProjected * fM
TEveJetConeGL()
Constructor.
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=0)
Set model object.
TEveProjection * GetProjection()
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the cone.
Mother of all ROOT objects.
virtual void Draw(TGLRnrCtx &rnrCtx) const
Draw the GL drawable, using draw flags.
OpenGL renderer class for TEveJetCone.
TT Eta() const
Calculate eta of the point, pretending it's a momentum vector.
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Render with OpenGL.
Exception class thrown by TEve classes and macros.
static Float_t LineWidth()
Get the line-width, taking the global scaling into account.
constexpr Double_t PiOver2()
virtual void DLCacheClear()
Clear all entries for all LODs for this drawable from the display list cache but keeping the reserved...