Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TEveCalo3DGL.cxx
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Author: Matevz Tadel 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 "TEveCalo3DGL.h"
13#include "TEveCalo.h"
14
15#include "TMath.h"
16#include "TAxis.h"
17
18#include "TGLRnrCtx.h"
19#include "TGLSelectRecord.h"
20#include "TGLPhysicalShape.h"
21#include "TGLIncludes.h"
22#include "TGLUtil.h"
23#include "TEveRGBAPalette.h"
24#include "TEveUtil.h"
25
26/** \class TEveCalo3DGL
27\ingroup TEve
28OpenGL renderer class for TEveCalo3D.
29*/
30
31
32////////////////////////////////////////////////////////////////////////////////
33/// Constructor.
34
36 TGLObject(), fM(nullptr)
37{
39}
40
41////////////////////////////////////////////////////////////////////////////////
42/// Set model object.
43
45{
47 return kTRUE;
48}
49
50////////////////////////////////////////////////////////////////////////////////
51/// Set bounding box.
52
54{
55 // !! This ok if master sub-classed from TAttBBox
57}
58
59////////////////////////////////////////////////////////////////////////////////
60/// Override from TGLObject.
61/// To account for large point-sizes we modify the projection matrix
62/// during selection and thus we need a direct draw.
63
65{
66 if (rnrCtx.Highlight() || rnrCtx.Selection()) return kFALSE;
68}
69
70////////////////////////////////////////////////////////////////////////////////
71/// Calculate cross-product.
72
73inline void TEveCalo3DGL::CrossProduct(const Float_t a[3], const Float_t b[3],
74 const Float_t c[3], Float_t out[3]) const
75{
76 const Float_t v1[3] = { a[0] - c[0], a[1] - c[1], a[2] - c[2] };
77 const Float_t v2[3] = { b[0] - c[0], b[1] - c[1], b[2] - c[2] };
78
79 out[0] = v1[1] * v2[2] - v1[2] * v2[1];
80 out[1] = v1[2] * v2[0] - v1[0] * v2[2];
81 out[2] = v1[0] * v2[1] - v1[1] * v2[0];
82}
83
84////////////////////////////////////////////////////////////////////////////////
85/// Render end cap grid.
86
88{
89 using namespace TMath;
90
94
96 Float_t etaMax = fM->GetEtaMax();
101
102 TAxis *ax = fM->GetData()->GetEtaBins();
103 Int_t nx = ax->GetNbins();
104 TAxis *ay = fM->GetData()->GetPhiBins();
105 Int_t ny = ay->GetNbins();
106
107
108 Float_t r, z, theta, phiU, phiL, eta;
109
110 // eta slices
111 for (Int_t i=0; i<=nx; ++i)
112 {
113 eta = ax->GetBinUpEdge(i);
114 if (eta >= transF && (eta > etaMin && eta < etaMax))
115 {
116 theta = TEveCaloData::EtaToTheta(eta);
117 r = Abs(zEF*Tan(theta));
118 z = Sign(zEF, ax->GetBinLowEdge(i));
119 for (Int_t j=1; j<=ny; ++j)
120 {
121 phiL = ay->GetBinLowEdge(j);
122 phiU = ay->GetBinUpEdge(j);
124 {
125 glVertex3f(r*Cos(phiL), r*Sin(phiL), z);
126 glVertex3f(r*Cos(phiU), r*Sin(phiU), z);
127 }
128 }
129 } else if (eta <= transB && (eta > etaMin && eta < etaMax)) {
130 theta = TEveCaloData::EtaToTheta(eta);
131 r = Abs(zEB*Tan(theta));
132 z = Sign(zEB, ax->GetBinLowEdge(i));
133 for (Int_t j=1; j<=ny; ++j)
134 {
135 phiL = ay->GetBinLowEdge(j);
136 phiU = ay->GetBinUpEdge(j);
138 {
139 glVertex3f(r*Cos(phiL), r*Sin(phiL), z);
140 glVertex3f(r*Cos(phiU), r*Sin(phiU), z);
141 }
142 }
143 }
144 }
145
146 Float_t r1, r2;
147 // phi slices front
148 if (etaMax > transF)
149 {
150 r1 = zEF*Tan(TEveCaloData::EtaToTheta(etaMax));
151 if (etaMin < transF)
152 r2 = rB;
153 else
155
156 for (Int_t j=1; j<=ny; ++j)
157 {
158 phiL = ay->GetBinLowEdge(j);
159 phiU = ay->GetBinUpEdge(j);
161 {
162 glVertex3f( r1*Cos(phiU), r1*Sin(phiU), zEF);
163 glVertex3f( r2*Cos(phiU), r2*Sin(phiU), zEF);
164 glVertex3f( r1*Cos(phiL), r1*Sin(phiL), zEF);
165 glVertex3f( r2*Cos(phiL), r2*Sin(phiL), zEF);
166 }
167 }
168 }
169
170 // phi slices back
171 if (etaMin < transB)
172 {
174 if (etaMax > transB)
175 r2 = rB;
176 else
177 r2 = zEB*Tan(TEveCaloData::EtaToTheta(etaMax));
178
179 r1 = Abs(r1);
180 r2 = Abs(r2);
181 for (Int_t j=1; j<=ny; ++j)
182 {
183 phiL = ay->GetBinLowEdge(j);
184 phiU = ay->GetBinUpEdge(j);
186 {
187 glVertex3f(r1*Cos(phiU), r1*Sin(phiU), zEB);
188 glVertex3f(r2*Cos(phiU), r2*Sin(phiU), zEB);
189 glVertex3f(r1*Cos(phiL), r1*Sin(phiL), zEB);
190 glVertex3f(r2*Cos(phiL), r2*Sin(phiL), zEB);
191 }
192 }
193 }
194}
195
196////////////////////////////////////////////////////////////////////////////////
197/// Render barrel grid.
198
200{
201 using namespace TMath;
202
204 Float_t etaMax = fM->GetEtaMax();
209
211 TAxis *ax = fM->GetData()->GetEtaBins();
212 Int_t nx = ax->GetNbins();
213 TAxis *ay = fM->GetData()->GetPhiBins();
214 Int_t ny = ay->GetNbins();
215
216 Float_t z, theta, phiL, phiU, eta, x, y;
217
218 // eta slices
219 for(Int_t i=0; i<=nx; i++)
220 {
221 eta = ax->GetBinUpEdge(i);
222 if (eta<=transF && eta>=transB && (etaMin < eta && eta < etaMax))
223 {
224 theta = TEveCaloData::EtaToTheta(eta);
225 z = rB/Tan(theta);
226 for (Int_t j=1; j<=ny; j++)
227 {
228 phiU = ay->GetBinUpEdge(j);
229 phiL = ay->GetBinLowEdge(j);
231 {
232 glVertex3f(rB*Cos(phiL), rB*Sin(phiL), z);
233 glVertex3f(rB*Cos(phiU), rB*Sin(phiU), z);
234 }
235 }
236 }
237 }
238
239 // phi slices
240 Float_t zF, zB;
241
242 if (etaMin > transB)
244 else
246
247
248 if (etaMax < transF)
249 zF = rB/Tan(TEveCaloData::EtaToTheta(etaMax));
250 else
252
253 for (Int_t j=1; j<=ny; j++)
254 {
255 phiU = ay->GetBinUpEdge(j);
256 phiL = ay->GetBinLowEdge(j);
258 {
259 x = rB * Cos(phiL);
260 y = rB * Sin(phiL);
261 glVertex3f(x, y, zB);
262 glVertex3f(x, y, zF);
263 x = rB * Cos(phiU);
264 y = rB * Sin(phiU);
265 glVertex3f(x, y, zB);
266 glVertex3f(x, y, zF);
267 }
268 }
269}
270
271////////////////////////////////////////////////////////////////////////////////
272/// Draw frame reading eta, phi axis.
273
275{
276 if (rnrCtx.Highlight() || rnrCtx.Selection() || rnrCtx.IsDrawPassOutlineLine()) return;
277
279
280 if (transparent_p)
281 {
283
287
289 }
290
292
294 glBegin(GL_LINES);
295
297 Float_t etaMax = fM->GetEtaMax();
298
302 {
304 }
305
306 if (fM->GetRnrEndCapFrame() && (etaMax > transF || etaMin < transB))
307 {
309 }
310
311 glEnd();
312
313 if (transparent_p)
314 {
315 glPopAttrib();
316 }
317}
318
319////////////////////////////////////////////////////////////////////////////////
320/// Render box with given points.
321/// ~~~ {.cpp}
322/// z
323/// |
324/// |
325/// |________y
326/// / 6-------7
327/// / /| /|
328/// x 5-------4 |
329/// | 2-----|-3
330/// |/ |/
331/// 1-------0
332/// ~~~
333
335{
336 const Float_t *p = pnts;
337 Float_t cross[3];
338
339 // bottom: 0123
341 CrossProduct(p+3, p+9, p, cross);
342 glNormal3fv(cross);
343 glVertex3fv(p);
344 glVertex3fv(p+3);
345 glVertex3fv(p+6);
346 glVertex3fv(p+9);
347 glEnd();
348 // top: 7654
350 CrossProduct(p+21, p+15, p+12, cross);
351 glNormal3fv(cross);
352 glVertex3fv(p+21);
353 glVertex3fv(p+18);
354 glVertex3fv(p+15);
355 glVertex3fv(p+12);
356 glEnd();
357 // back: 0451
359 CrossProduct(p+12, p+3, p, cross);
360 glNormal3fv(cross);
361 glVertex3fv(p);
362 glVertex3fv(p+12);
363 glVertex3fv(p+15);
364 glVertex3fv(p+3);
365 glEnd();
366 //front : 3267
368 CrossProduct(p+6, p+21, p+9, cross);
369 glNormal3fv(cross);
370 glVertex3fv(p+9);
371 glVertex3fv(p+6);
372 glVertex3fv(p+18);
373 glVertex3fv(p+21);
374 glEnd();
375 // left: 0374
377 CrossProduct(p+21, p, p+9, cross);
378 glNormal3fv(cross);
379 glVertex3fv(p);
380 glVertex3fv(p+9);
381 glVertex3fv(p+21);
382 glVertex3fv(p+12);
383 glEnd();
384 // right: 1562
386 CrossProduct(p+15, p+6, p+3, cross);
387 glNormal3fv(cross);
388 glVertex3fv(p+3);
389 glVertex3fv(p+15);
390 glVertex3fv(p+18);
391 glVertex3fv(p+6);
392 glEnd();
393}
394
395////////////////////////////////////////////////////////////////////////////////
396/// Render barrel cell.
397
399{
400 using namespace TMath;
401
403 Float_t r2 = r1 + towerH*Sin(cellData.ThetaMin());
405
406 z1In = r1/Tan(cellData.ThetaMax());
407 z1Out = r2/Tan(cellData.ThetaMax());
408 z2In = r1/Tan(cellData.ThetaMin());
409 z2Out = r2/Tan(cellData.ThetaMin());
410
411 Float_t cos1 = Cos(cellData.PhiMin());
412 Float_t sin1 = Sin(cellData.PhiMin());
413 Float_t cos2 = Cos(cellData.PhiMax());
414 Float_t sin2 = Sin(cellData.PhiMax());
415
416 Float_t box[24];
417 Float_t* pnts = box;
418 // 0
419 pnts[0] = r1*cos2;
420 pnts[1] = r1*sin2;
421 pnts[2] = z1In;
422 pnts += 3;
423 // 1
424 pnts[0] = r1*cos1;
425 pnts[1] = r1*sin1;
426 pnts[2] = z1In;
427 pnts += 3;
428 // 2
429 pnts[0] = r1*cos1;
430 pnts[1] = r1*sin1;
431 pnts[2] = z2In;
432 pnts += 3;
433 // 3
434 pnts[0] = r1*cos2;
435 pnts[1] = r1*sin2;
436 pnts[2] = z2In;
437 pnts += 3;
438 //---------------------------------------------------
439 // 4
440 pnts[0] = r2*cos2;
441 pnts[1] = r2*sin2;
442 pnts[2] = z1Out;
443 pnts += 3;
444 // 5
445 pnts[0] = r2*cos1;
446 pnts[1] = r2*sin1;
447 pnts[2] = z1Out;
448 pnts += 3;
449 // 6
450 pnts[0] = r2*cos1;
451 pnts[1] = r2*sin1;
452 pnts[2] = z2Out;
453 pnts += 3;
454 // 7
455 pnts[0] = r2*cos2;
456 pnts[1] = r2*sin2;
457 pnts[2] = z2Out;
458
459 RenderBox(box);
460
461 offset += towerH*Sin(cellData.ThetaMin());
462
463}// end RenderBarrelCell
464
465////////////////////////////////////////////////////////////////////////////////
466/// Render an endcap cell.
467
469{
470 using namespace TMath;
472
473 z1 = (cellData.EtaMin()<0) ? fM->fEndCapPosB - offset : fM->fEndCapPosF + offset;
474 z2 = z1 + TMath::Sign(towerH, cellData.EtaMin());
475
476 r1In = z1*Tan(cellData.ThetaMin());
477 r2In = z2*Tan(cellData.ThetaMin());
478 r1Out = z1*Tan(cellData.ThetaMax());
479 r2Out = z2*Tan(cellData.ThetaMax());
480
481 Float_t cos2 = Cos(cellData.PhiMin());
482 Float_t sin2 = Sin(cellData.PhiMin());
483 Float_t cos1 = Cos(cellData.PhiMax());
484 Float_t sin1 = Sin(cellData.PhiMax());
485
486 Float_t box[24];
487 Float_t* pnts = box;
488 // 0
489 pnts[0] = r1In*cos1;
490 pnts[1] = r1In*sin1;
491 pnts[2] = z1;
492 pnts += 3;
493 // 1
494 pnts[0] = r1In*cos2;
495 pnts[1] = r1In*sin2;
496 pnts[2] = z1;
497 pnts += 3;
498 // 2
499 pnts[0] = r2In*cos2;
500 pnts[1] = r2In*sin2;
501 pnts[2] = z2;
502 pnts += 3;
503 // 3
504 pnts[0] = r2In*cos1;
505 pnts[1] = r2In*sin1;
506 pnts[2] = z2;
507 pnts += 3;
508 //---------------------------------------------------
509 // 4
510 pnts[0] = r1Out*cos1;
511 pnts[1] = r1Out*sin1;
512 pnts[2] = z1;
513 pnts += 3;
514 // 5
515 pnts[0] = r1Out*cos2;
516 pnts[1] = r1Out*sin2;
517 pnts[2] = z1;
518 pnts += 3;
519 // 6
520 pnts[0] = r2Out*cos2;
521 pnts[1] = r2Out*sin2;
522 pnts[2] = z2;
523 pnts += 3;
524 // 7
525 pnts[0] = r2Out*cos1;
526 pnts[1] = r2Out*sin1;
527 pnts[2] = z2;
528
529 RenderBox(box);
530
531 offset += towerH;
532
533} // end RenderEndCapCell
534
535////////////////////////////////////////////////////////////////////////////////
536/// GL rendering.
537
539{
541
542 // check if eta phi range has changed
543 if (fM->fCellIdCacheOK == kFALSE)
545
551
553 Float_t towerH = 0;
554 Int_t tower = 0;
555 Int_t prevTower = -1;
556 Float_t offset = 0;
557 Int_t cellID = 0;
558
559 if (rnrCtx.SecSelection()) glPushName(0);
560
561 fOffset.assign(fM->fCellList.size(), 0);
562 for (TEveCaloData::vCellId_i i = fM->fCellList.begin(); i != fM->fCellList.end(); ++i)
563 {
564 fM->fData->GetCellData((*i), cellData);
565 tower = i->fTower;
566 if (tower != prevTower)
567 {
568 offset = 0;
570 }
572 fM->SetupColorHeight(cellData.Value(fM->fPlotEt), (*i).fSlice, towerH);
573
574 if (rnrCtx.SecSelection()) glLoadName(cellID);
575
576 if ((cellData.Eta() > 0 && cellData.Eta() < fM->GetTransitionEtaForward()) ||
577 (cellData.Eta() < 0 && cellData.Eta() > fM->GetTransitionEtaBackward()))
578 {
580 }
581 else
582 {
584 }
585 ++cellID;
586 }
587
588 if (rnrCtx.SecSelection()) glPopName();
589
591
592 glPopAttrib();
593}
594
595////////////////////////////////////////////////////////////////////////////////
596/// Draw polygons in highlight mode.
597
599{
600 if (fM->fData->GetCellsSelected().empty() && fM->fData->GetCellsHighlighted().empty())
601 {
602 return;
603 }
604
609
612
613 if (!fM->fData->GetCellsHighlighted().empty())
614 {
615 glColor4ubv(rnrCtx.ColorSet().Selection(3).CArr());
617 }
618 if (!fM->fData->GetCellsSelected().empty())
619 {
620 Float_t dr[2];
622 glColor4ubv(rnrCtx.ColorSet().Selection(1).CArr());
623 glDepthRange(dr[0], 0.8*dr[1]);
625 glDepthRange(dr[0], dr[1]);
626 }
627
629 glPopAttrib();
630}
631
632////////////////////////////////////////////////////////////////////////////////
633
635{
637 Float_t towerH = 0;
638
639 for (TEveCaloData::vCellId_i i = cells.begin(); i != cells.end(); i++)
640 {
642 fM->SetupColorHeight(cellData.Value(fM->fPlotEt), (*i).fSlice, towerH);
643
644 // find tower with offsets
645 Float_t offset = 0;
646 for (Int_t j = 0; j < (Int_t) fM->fCellList.size(); ++j)
647 {
648 if (fM->fCellList[j].fTower == i->fTower && fM->fCellList[j].fSlice == i->fSlice )
649 {
650 offset = fOffset[j];
651 break;
652 }
653 }
654
656 {
659 else
661 }
662 }
663}
664
665////////////////////////////////////////////////////////////////////////////////
666/// Processes tower selection.
667/// Virtual function from TGLogicalShape. Called from TGLViewer.
668
670{
672 if (rec.GetN() > 1)
673 {
674 sel.push_back(fM->fCellList[rec.GetItem(1)]);
675 }
677}
#define b(i)
Definition RSha256.hxx:100
#define c(i)
Definition RSha256.hxx:101
#define a(i)
Definition RSha256.hxx:99
int Int_t
Signed integer 4 bytes (int)
Definition RtypesCore.h:59
float Float_t
Float 4 bytes (float)
Definition RtypesCore.h:71
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
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.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t r
const_iterator begin() const
const_iterator end() const
Class to manage histogram axis.
Definition TAxis.h:32
void SetBBox() override
Set bounding box.
std::vector< Float_t > fOffset
void RenderBarrelCell(const TEveCaloData::CellGeom_t &cell, Float_t towerH, Float_t &offset) const
Render barrel cell.
TEveCalo3D * fM
void RenderBox(const Float_t pnts[8]) const
Render box with given points.
void DirectDraw(TGLRnrCtx &rnrCtx) const override
GL rendering.
TEveCalo3DGL()
Constructor.
void RenderGrid(TGLRnrCtx &rnrCtx) const
Draw frame reading eta, phi axis.
void RenderGridEndCap() const
Render end cap grid.
void ProcessSelection(TGLRnrCtx &rnrCtx, TGLSelectRecord &rec) override
Processes tower selection.
void DrawHighlight(TGLRnrCtx &rnrCtx, const TGLPhysicalShape *ps, Int_t lvl=-1) const override
Draw polygons in highlight mode.
void DrawSelectedCells(TEveCaloData::vCellId_t cells) const
void CrossProduct(const Float_t a[3], const Float_t b[3], const Float_t c[3], Float_t out[3]) const
Calculate cross-product.
Bool_t ShouldDLCache(const TGLRnrCtx &rnrCtx) const override
Override from TGLObject.
void RenderGridBarrel() const
Render barrel grid.
Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr) override
Set model object.
void RenderEndCapCell(const TEveCaloData::CellGeom_t &cell, Float_t towerH, Float_t &offset) const
Render an endcap cell.
Visualization of a calorimeter event data in 3D.
Definition TEveCalo.h:158
TEveCaloData::vCellId_t fCellList
Definition TEveCalo.h:165
Bool_t GetRnrBarrelFrame() const
Definition TEveCalo.h:189
Float_t GetFrameWidth() const
Definition TEveCalo.h:182
Color_t fFrameColor
Definition TEveCalo.h:171
void BuildCellIdCache() override
Build list of drawn cell IDs. See TEveCalo3DGL::DirectDraw().
Definition TEveCalo.cxx:457
Char_t fFrameTransparency
Definition TEveCalo.h:172
Bool_t GetRnrEndCapFrame() const
Definition TEveCalo.h:188
std::vector< CellId_t > vCellId_t
static Float_t EtaToTheta(Float_t eta)
void ProcessSelection(vCellId_t &sel_cells, TGLSelectRecord &rec)
Process newly selected cells with given select-record.
virtual void GetCellData(const CellId_t &id, CellData_t &data) const =0
virtual TAxis * GetEtaBins() const
vCellId_t & GetCellsHighlighted()
virtual TAxis * GetPhiBins() const
vCellId_t & GetCellsSelected()
std::vector< CellId_t >::iterator vCellId_i
Float_t fEndCapPosF
Definition TEveCalo.h:52
Float_t GetEtaMin() const
Definition TEveCalo.h:137
Float_t fPlotEt
Definition TEveCalo.h:55
Float_t GetTransitionEtaBackward() const
Get transition eta between barrel and backward end-cap cells.
Definition TEveCalo.cxx:226
Float_t GetBarrelRadius() const
Definition TEveCalo.h:100
Float_t GetBackwardEndCapPos() const
Definition TEveCalo.h:104
Float_t GetForwardEndCapPos() const
Definition TEveCalo.h:103
TEveCaloData * GetData() const
Definition TEveCalo.h:87
TEveRGBAPalette * AssertPalette()
Make sure the TEveRGBAPalette pointer is not null.
Definition TEveCalo.cxx:377
Bool_t fCellIdCacheOK
Definition TEveCalo.h:41
Float_t GetEtaMax() const
Definition TEveCalo.h:138
TEveCaloData * fData
Definition TEveCalo.h:40
Float_t fEndCapPosB
Definition TEveCalo.h:53
Float_t GetTransitionEtaForward() const
Get transition eta between barrel and forward end-cap cells.
Definition TEveCalo.cxx:208
Float_t GetPhiMax() const
Definition TEveCalo.h:146
Bool_t CellInEtaPhiRng(TEveCaloData::CellData_t &) const
Returns true if given cell is in the ceta phi range.
Definition TEveCalo.cxx:306
Bool_t GetValueIsColor() const
Definition TEveCalo.h:129
Float_t GetPhiMin() const
Definition TEveCalo.h:145
void SetupColorHeight(Float_t value, Int_t slice, Float_t &height) const
Set color and height for a given value and slice using slice color or TEveRGBAPalette.
Definition TEveCalo.cxx:414
static Bool_t IsU1IntervalContainedByMinMax(Float_t minM, Float_t maxM, Float_t minQ, Float_t maxQ)
Return true if interval Q is contained within interval M for U1 variables.
Definition TEveUtil.cxx:341
TObject * fExternalObj
first replica
Base-class for direct OpenGL renderers.
Definition TGLObject.h:22
Bool_t fMultiColor
Definition TGLObject.h:28
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.
Definition TGLObject.cxx:85
Bool_t ShouldDLCache(const TGLRnrCtx &rnrCtx) const override
Decide if display-list should be used for this pass rendering, as determined by rnrCtx.
Definition TGLObject.cxx:40
Concrete physical shape - a GL drawable.
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 UInt_t LockColor()
Prevent further color changes.
Definition TGLUtil.cxx:1660
static void ColorTransparency(Color_t color_index, Char_t transparency=0)
Set color from color_index and ROOT-style transparency (default 0).
Definition TGLUtil.cxx:1732
static UInt_t UnlockColor()
Allow color changes.
Definition TGLUtil.cxx:1668
static Float_t LineWidth()
Get the line-width, taking the global scaling into account.
Definition TGLUtil.cxx:1934
Mother of all ROOT objects.
Definition TObject.h:41
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
Definition fillpatterns.C:1
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
TMath.
Definition TMathBase.h:35
T1 Sign(T1 a, T2 b)
Returns a value with the magnitude of a and the sign of b.
Definition TMathBase.h:176
Cell data inner structure.
Cell geometry inner structure.