16#include "TGLIncludes.h" 
   57   fCurrentPixelsPerBin(0),
 
   87   fM = SetModelDynCast<TEveCaloLego>(obj);
 
  160      glNormal3f(0, 0, -1);
 
  161      glVertex3f(
x2, 
y2, z1);
 
  162      glVertex3f(
x2, 
y1, z1);
 
  163      glVertex3f(
x1, 
y1, z1);
 
  164      glVertex3f(
x1, 
y2, z1);
 
  167      glVertex3f(
x2, 
y2, z2);
 
  168      glVertex3f(
x1, 
y2, z2);
 
  169      glVertex3f(
x1, 
y1, z2);
 
  170      glVertex3f(
x2, 
y1, z2);
 
  174      glVertex3f(
x2, 
y2, z1);
 
  175      glVertex3f(
x2, 
y2, z2);
 
  176      glVertex3f(
x2, 
y1, z2);
 
  177      glVertex3f(
x2, 
y1, z1);
 
  179      glNormal3f(-1, 0, 0);
 
  180      glVertex3f(
x1, 
y2, z1);
 
  181      glVertex3f(
x1, 
y1, z1);
 
  182      glVertex3f(
x1, 
y1, z2);
 
  183      glVertex3f(
x1, 
y2, z2);
 
  187      glVertex3f(
x2, 
y2, z1);
 
  188      glVertex3f(
x1, 
y2, z1);
 
  189      glVertex3f(
x1, 
y2, z2);
 
  190      glVertex3f(
x2, 
y2, z2);
 
  192      glNormal3f(0, -1, 0);
 
  193      glVertex3f(
x2, 
y1, z1);
 
  194      glVertex3f(
x2, 
y1, z2);
 
  195      glVertex3f(
x1, 
y1, z2);
 
  196      glVertex3f(
x1, 
y1, z1);
 
  213   for (
Int_t s = 0; s < nSlices; ++s)
 
  215      if (dlMap.empty() || dlMap[s] == 0)
 
  216         dlMap[s] = glGenLists(1);
 
  218      glNewList(dlMap[s], GL_COMPILE);
 
  220      for (
UInt_t i = 0; i < cellList.size(); ++i)
 
  222         if (cellList[i].fSlice > s) 
continue;
 
  223         if (cellList[i].fTower != prevTower) {
 
  225            prevTower = cellList[i].fTower;
 
  229         if (s == cellList[i].fSlice)
 
  231            if (selection) glLoadName(i);
 
  254   for (
Int_t s = 0; s < nSlices; ++s)
 
  256      if (dlMap.empty() || dlMap[s] == 0)
 
  257         dlMap[s] = glGenLists(1);
 
  259      glNewList(dlMap[s], GL_COMPILE);
 
  271               for (
Int_t t = 0; t < s; ++t)
 
  278               if (selection) glLoadName(bin);
 
  297   glGetDoublev(GL_MODELVIEW_MATRIX,  mm);
 
  298   glGetIntegerv(GL_VIEWPORT, vp);
 
  299   GLdouble projX[4], projY[4], projZ[4];
 
  303   cornerX[0] = x0; cornerY[0] = y0;
 
  304   cornerX[1] = 
x1; cornerY[1] = y0;
 
  305   cornerX[2] = 
x1; cornerY[2] = 
y1;
 
  306   cornerX[3] = x0; cornerY[3] = 
y1;
 
  308   gluProject(cornerX[0], cornerY[0], 0, mm, pm, vp, &projX[0], &projY[0], &projZ[0]);
 
  309   gluProject(cornerX[1], cornerY[1], 0, mm, pm, vp, &projX[1], &projY[1], &projZ[1]);
 
  310   gluProject(cornerX[2], cornerY[2], 0, mm, pm, vp, &projX[2], &projY[2], &projZ[2]);
 
  311   gluProject(cornerX[3], cornerY[3], 0, mm, pm, vp, &projX[3], &projY[3], &projZ[3]);
 
  318   for (
Int_t i = 1; i < 4; ++i) {
 
  332   for (
Int_t i = 0; i < 4; ++i) {
 
  337      if (projZ[i] > zMin) zMin = projZ[i];
 
  341   Int_t xyIdx = idxFront;
 
  342   if (zMin - zt < 1
e-2) xyIdx = 0; 
 
  387      for (
Int_t i = 0; i < 4; ++i)
 
  389         if (projZ[i] < zm && projZ[i] >= zt && i != idxFront )
 
  395      if (idxFront == idxLeft)  idxFront =idxDepthT;
 
  429   glGetDoublev(GL_MODELVIEW_MATRIX, mm.
Arr());
 
  430   glGetDoublev(GL_PROJECTION_MATRIX, pm);
 
  437                              + (up[1] - dn[1]) * (up[1] - dn[1])
 
  438                              + (up[2] - dn[2]) * (up[2] - dn[2]));
 
  488         glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT);
 
  515         glEnable(GL_LINE_STIPPLE);
 
  516         glLineStipple(1, 0x5555);
 
  519         for (
Int_t i = 1; i <= ondiv; ++i, hz += bw1) {
 
  586   Double_t unit = ((eM - em) < (pM - pm)) ? (eM - em) : (pM - pm);
 
  627   glGetDoublev(GL_MODELVIEW_MATRIX, mm.
Arr());
 
  628   glGetDoublev(GL_PROJECTION_MATRIX, pm);
 
  629   glGetIntegerv(GL_VIEWPORT, vp);
 
  636                              + (up[1] - dn[1]) * (up[1] - dn[1])
 
  637                              + (up[2] - dn[2]) * (up[2] - dn[2]));
 
  691   GLint   vp[4]; glGetIntegerv(GL_VIEWPORT, vp);
 
  692   Float_t viewportD = 
TMath::Sqrt((vp[1] - vp[0]) * (vp[1] - vp[0]) + (vp[3] - vp[1]) * (vp[3] - vp[1]));
 
  693   Float_t deltaToViewport = viewportD/frustD;
 
  705   Float_t ppb = deltaToViewport*averageBinWidth;
 
  714         if (ngroup  > maxGroup) ngroup = maxGroup;
 
  730   if (bc > center) --idx0;
 
  734   std::vector<Double_t> bins(nbR + 1);
 
  735   for (
Int_t i = 0; i <= nbR; ++i)
 
  739   curr->
Set(nbR, &bins[0]);
 
  757   glVertex2f(eta0, phi0);
 
  758   glVertex2f(eta0, phi1);
 
  759   glVertex2f(eta1, phi0);
 
  760   glVertex2f(eta1, phi1);
 
  762   glVertex2f(eta0, phi0);
 
  763   glVertex2f(eta1, phi0);
 
  764   glVertex2f(eta0, phi1);
 
  765   glVertex2f(eta1, phi1);
 
  770   for (
Int_t i = 0; i<= neb; i++)
 
  773      if (val > eta0 && val < eta1 )
 
  775         glVertex2f(val, phi0);
 
  776         glVertex2f(val, phi1);
 
  782   for (
Int_t i = 1; i <= npb; i++) {
 
  784      if (val > phi0 && val < phi1)
 
  786         glVertex2f(eta0, val);
 
  787         glVertex2f(eta1, val);
 
  795   glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT | GL_POLYGON_BIT);
 
  818         glLoadName(i->first);
 
  820         glCallList(i->second);
 
  827         glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
  828         glDisable(GL_POLYGON_OFFSET_FILL);
 
  831            glCallList(i->second);
 
  841   Int_t   max_energy_slice, cellID=0;
 
  844   TEveCaloData::vCellId_t::iterator currentCell = cellList.begin();
 
  845   TEveCaloData::vCellId_t::iterator nextCell    = currentCell;
 
  855      max_energy_slice = currentCell->fSlice;
 
  856      while (nextCell != cellList.end() && currentCell->fTower == nextCell->fTower)
 
  861         if (energy > max_energy)
 
  864            max_energy_slice = nextCell->fSlice;
 
  871      cells2D.push_back(
Cell2D_t(cellID, 
sum, max_energy_slice));
 
  872      cells2D.back().SetGeom(currentCellData.
fEtaMin, currentCellData.
fEtaMax,
 
  875      if (nextCell == cellList.end())
 
  878      currentCell = nextCell;
 
  891   std::vector<Float_t> 
vec;
 
  892   vec.assign((nEta + 2)*(nPhi + 2), 0.f);
 
  893   std::vector<Float_t> max_e;
 
  894   std::vector<Int_t>   max_e_slice;
 
  895   max_e.assign((nEta + 2) * (nPhi + 2), 0.f);
 
  896   max_e_slice.assign((nEta + 2) * (nPhi + 2), -1);
 
  900      if (rebinData.
fBinData[bin] != -1) {
 
  904            if (val[s] > max_e[bin]) {
 
  906               max_e_slice[bin] = s;
 
  923         const Int_t bin = j * (nEta + 2) + i;
 
  924         if (
vec[bin] > threshold && rebinData.
fBinData[bin] != -1) {
 
  925            cells2D.push_back(
Cell2D_t(bin, 
vec[bin], max_e_slice[bin]));
 
  948      for (
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i)
 
  956         glVertex3f(i->fX0, i->fY0, z);
 
  957         glVertex3f(i->fX1, i->fY0, z);
 
  958         glVertex3f(i->fX1, i->fY1, z);
 
  959         glVertex3f(i->fX0, i->fY1, z);
 
  969         if (i->MinSize() < bws)   bws  = i->MinSize();
 
  970         if (i->fSumVal   > maxv)  maxv = i->fSumVal;
 
  980         for (
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i)
 
  982            glLoadName(i->fMaxSlice);
 
  987            glVertex3f(i->fX0, i->fY0, z);
 
  988            glVertex3f(i->fX1, i->fY0, z);
 
  989            glVertex3f(i->fX1, i->fY1, z);
 
  990            glVertex3f(i->fX0, i->fY1, z);
 
 1003            for (
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i)
 
 1007               glVertex3f(i->X(), i->Y() , z);
 
 1013         for (
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i)
 
 1020            glVertex3f(
x - bw, 
y - bw, z);
 
 1021            glVertex3f(
x + bw, 
y - bw, z);
 
 1022            glVertex3f(
x + bw, 
y + bw, z);
 
 1023            glVertex3f(
x - bw, 
y + bw, z);
 
 1029            glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
 
 1033            for ( 
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i) {
 
 1038               glVertex3f(i->fX0, i->fY0, z);
 
 1039               glVertex3f(i->fX1, i->fY0, z);
 
 1040               glVertex3f(i->fX1, i->fY1, z);
 
 1041               glVertex3f(i->fX0, i->fY1, z);
 
 1045            glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
 1047            for ( 
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i) {
 
 1051               glVertex3f(i->fX0, i->fY0, z);
 
 1052               glVertex3f(i->fX1, i->fY0, z);
 
 1053               glVertex3f(i->fX1, i->fY1, z);
 
 1054               glVertex3f(i->fX0, i->fY1, z);
 
 1070      for (
vCell2D_i i = cells2D.begin(); i != cells2D.end(); ++i) {
 
 1076            txt = 
Form(
"%.1f", val);
 
 1077         else if (val > 0.01 )
 
 1101   glScalef(sx, sy, sz);
 
 1106      glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT | GL_POLYGON_BIT);
 
 1107      glDisable(GL_LIGHTING);
 
 1108      glDisable(GL_CULL_FACE);
 
 1109      glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
 
 1147         cellsSelected.push_back(*i);
 
 1157         for (std::vector<Float_t>::iterator it = rebinDataSelected.
fSliceData.begin();
 
 1158              it != rebinDataSelected.
fSliceData.end(); ++it)
 
 1172               Int_t   orig_slice = j->fSlice;
 
 1173               for (
Int_t s = 0; s < orig_slice; ++s)
 
 1179               j->fSlice = orig_slice;
 
 1198               if (rebinDataSelected.
fBinData[bin] !=-1)
 
 1203                  for (
Int_t s = 0; s < nSlices; ++s)
 
 1228         std::set<Int_t> towers;
 
 1231            towers.insert(j->fTower);
 
 1238            if (towers.find(cell.
fTower) != towers.end())
 
 1240               cells2DSelected.push_back(*i);
 
 1316   glScalef(sx, sy, sz);
 
 1329                                       c1->GetGreen()*
f1  + 
c2->GetGreen()*f2,
 
 1330                                       c1->GetBlue() *
f1  + 
c2->GetBlue() *f2);
 
 1335                                       c1->GetGreen()*
f1  + 
c2->GetGreen()*f2,
 
 1336                                       c1->GetBlue() *
f1  + 
c2->GetBlue() *f2);
 
 1340   glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT | GL_POLYGON_BIT);
 
 1343   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 
 1357         glEnable(GL_NORMALIZE);
 
 1358         glEnable(GL_POLYGON_OFFSET_FILL);
 
 1359         glPolygonOffset(0.8, 1);
 
 1365         glDisable(GL_LIGHTING);
 
 1382      glPushAttrib(GL_ENABLE_BIT | GL_LINE_BIT | GL_POLYGON_BIT);
 
 1383      glDisable(GL_LIGHTING);
 
 1386         glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
 
 1387         glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 
 1388         glDisable(GL_CULL_FACE);
 
 1418         while (cell > 0 && tower == 
fM->
fCellList[cell].fTower)
 
 1431            Int_t etaBin = cell - phiBin*(nEta+2);
 
 1440                  if ((*it).fSlice == slice ) 
sel.push_back(*it);
 
 1442                  if ((*it).fSlice <= slice ) 
sel.push_back(*it);
 
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
 
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 Atom_t Atom_t Time_t UChar_t len
 
Option_t Option_t TPoint TPoint const char x2
 
Option_t Option_t TPoint TPoint const char x1
 
Option_t Option_t TPoint TPoint const char y2
 
Option_t Option_t TPoint TPoint const char y1
 
char * Form(const char *fmt,...)
Formats a string in a circular formatting buffer.
 
virtual Int_t GetNdivisions() const
 
virtual Style_t GetTitleFont() const
 
virtual Float_t GetLabelOffset() const
 
virtual void SetAxisColor(Color_t color=1, Float_t alpha=1.)
Set color of the line axis and tick marks.
 
virtual void SetTitleFont(Style_t font=62)
Set the title font.
 
virtual void SetLabelOffset(Float_t offset=0.005)
Set distance between the axis and the labels.
 
virtual void SetTitleSize(Float_t size=0.04)
Set size of axis title.
 
virtual void SetTitleColor(Color_t color=1)
Set color of axis title.
 
virtual Float_t GetTitleSize() const
 
virtual Float_t GetLabelSize() const
 
virtual Float_t GetTickLength() const
 
virtual void SetTickLength(Float_t length=0.03)
Set tick mark length.
 
virtual void SetNdivisions(Int_t n=510, Bool_t optim=kTRUE)
Set the number of divisions for this axis.
 
virtual void SetLabelColor(Color_t color=1, Float_t alpha=1.)
Set color of labels.
 
Class to manage histogram axis.
 
const char * GetTitle() const override
Returns title of object.
 
virtual Double_t GetBinCenter(Int_t bin) const
Return center of bin.
 
virtual Int_t FindBin(Double_t x)
Find bin number corresponding to abscissa x.
 
virtual Double_t GetBinLowEdge(Int_t bin) const
Return low edge of bin.
 
virtual void Set(Int_t nbins, Double_t xmin, Double_t xmax)
Initialize axis with fix bins.
 
virtual void SetLimits(Double_t xmin, Double_t xmax)
 
virtual Double_t GetBinWidth(Int_t bin) const
Return bin width.
 
virtual Double_t GetBinUpEdge(Int_t bin) const
Return up edge of bin.
 
The color creation and management class.
 
static Int_t GetColor(const char *hexcolor)
Static method returning color number for color specified by hex color string of form: "#rrggbb",...
 
virtual void GetEtaLimits(Double_t &min, Double_t &max) const =0
 
std::vector< CellId_t > vCellId_t
 
virtual void GetCellList(Float_t etaMin, Float_t etaMax, Float_t phi, Float_t phiRng, vCellId_t &out) const =0
 
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
 
Char_t GetSliceTransparency(Int_t slice) const
Get transparency for given slice.
 
virtual TAxis * GetEtaBins() const
 
Color_t GetSliceColor(Int_t slice) const
Get color for given slice.
 
vCellId_t & GetCellsHighlighted()
 
virtual void GetPhiLimits(Double_t &min, Double_t &max) const =0
 
virtual TAxis * GetPhiBins() const
 
vCellId_t & GetCellsSelected()
 
virtual void Rebin(TAxis *ax, TAxis *ay, vCellId_t &in, Bool_t et, RebinData_t &out) const =0
 
std::vector< CellId_t >::iterator vCellId_i
 
OpenGL renderer class for TEveCaloLego.
 
std::vector< Cell2D_t > vCell2D_t
 
void MakeQuad(Float_t x, Float_t y, Float_t z, Float_t xw, Float_t yw, Float_t zh) const
Draw an axis-aligned box using quads.
 
TEveVector fBackPlaneYConst[2]
 
virtual void DirectDraw(TGLRnrCtx &rnrCtx) const
Draw the object.
 
TEveVector fZAxisTitlePos
 
void WrapTwoPi(Float_t &min, Float_t &max) const
 
void PrepareCell2DData(TEveCaloData::vCellId_t &cellList, vCell2D_t &cells2D) const
Prepare cells 2D data non-rebinned for drawing.
 
Int_t fCurrentPixelsPerBin
 
void DrawSelectedCells(TGLRnrCtx &rnrCtx, TEveCaloData::vCellId_t cells) const
Draw selected cells in highlight mode.
 
void DrawCells3D(TGLRnrCtx &rnrCtx) const
Render the calo lego-plot with OpenGL.
 
virtual Bool_t SetModel(TObject *obj, const Option_t *opt=nullptr)
Set model object.
 
void DrawHistBase(TGLRnrCtx &rnrCtx) const
Draw basic histogram components: x-y grid.
 
TEveVector fXAxisTitlePos
 
void DrawCells2D(TGLRnrCtx &rnrCtx, vCell2D_t &cells2D) const
Draw cells in top view.
 
void DrawAxis3D(TGLRnrCtx &rnrCtx) const
Draw z-axis and z-box at the appropriate grid corner-point including tick-marks and labels.
 
virtual void DrawHighlight(TGLRnrCtx &rnrCtx, const TGLPhysicalShape *ps, Int_t lvl=-1) const
Draw highligted cells.
 
void RebinAxis(TAxis *orig, TAxis *curr) const
Rebin eta, phi axis.
 
Int_t GetGridStep(TGLRnrCtx &rnrCtx) const
Calculate view-dependent grid density.
 
std::vector< Cell2D_t >::iterator vCell2D_i
 
void GetScaleForMatrix(Float_t &sx, Float_t &sy, Float_t &sz) const
Get scale for matrix.
 
virtual void ProcessSelection(TGLRnrCtx &rnrCtx, TGLSelectRecord &rec)
Processes tower selection from TGLViewer.
 
TEveVector fBackPlaneXConst[2]
 
void Make3DDisplayListRebin(TEveCaloData::RebinData_t &rebinData, SliceDLMap_t &map, Bool_t select) const
Create display-list that draws histogram bars for rebinned data.
 
virtual void SetBBox()
Set bounding box.
 
void SetAxis3DTitlePos(TGLRnrCtx &rnrCtx, Float_t x0, Float_t x1, Float_t y0, Float_t y1) const
Set the axis 3D title position.
 
TEveCaloLegoGL()
Constructor.
 
virtual void DLCacheDrop()
Drop all display-list definitions.
 
void DrawAxis2D(TGLRnrCtx &rnrCtx) const
Draw XY axis.
 
virtual void DLCachePurge()
Unregister all display-lists.
 
void Make3DDisplayList(TEveCaloData::vCellId_t &cellList, SliceDLMap_t &map, Bool_t select) const
Create display-list that draws histogram bars for non-rebinned data.
 
TGLAxisPainter fAxisPainter
 
std::map< Int_t, UInt_t > SliceDLMap_t
 
TEveVector fYAxisTitlePos
 
std::map< Int_t, UInt_t >::iterator SliceDLMap_i
 
virtual ~TEveCaloLegoGL()
Destructor.
 
void PrepareCell2DDataRebin(TEveCaloData::RebinData_t &rebinData, vCell2D_t &cells2D) const
Prepare cells 2D rebinned data for drawing.
 
TEveCaloData::RebinData_t fRebinData
 
Visualization of calorimeter data as eta/phi histogram.
 
EProjection_e fProjection
 
Char_t fPlaneTransparency
 
Int_t fDrawNumberCellPixels
 
float GetFixedHeightValIn2DMode() const
 
TEveCaloData::vCellId_t fCellList
 
bool GetHasFixedHeightIn2DMode() const
 
Color_t GetDataSliceColor(Int_t slice) const
Get slice color from data.
 
Float_t GetEtaMin() const
 
Bool_t AssertCellIdCache() const
Assert cell id cache is ok.
 
Float_t GetDataSliceThreshold(Int_t slice) const
Get threshold for given slice.
 
Float_t GetMaxTowerH() const
 
Float_t GetPhiRng() const
 
TEveRGBAPalette * fPalette
 
Float_t GetMaxVal() const
 
TEveCaloData * GetData() const
 
TEveRGBAPalette * AssertPalette()
Make sure the TEveRGBAPalette pointer is not null.
 
Float_t GetEtaMax() const
 
Float_t GetPhiMax() const
 
Float_t GetEtaRng() const
 
Bool_t CellInEtaPhiRng(TEveCaloData::CellData_t &) const
Returns true if given cell is in the ceta phi range.
 
Float_t GetPhiMin() const
 
const UChar_t * ColorFromValue(Int_t val) const
 
void Set(const Float_t *v)
 
void SetLabelAlign(TGLFont::ETextAlignH_e, TGLFont::ETextAlignV_e)
Set label align.
 
TGLVector3 & RefTitlePos()
 
void SetAttAxis(TAttAxis *a)
 
void SetLabelPixelFontSize(Int_t fs)
 
TGLVector3 & RefTMOff(Int_t i)
 
void SetFontMode(TGLFont::EMode m)
 
Int_t GetLabelPixelFontSize() const
 
void PaintAxis(TGLRnrCtx &ctx, TAxis *ax)
GL render TAxis.
 
void SetTitlePixelFontSize(Int_t fs)
 
Abstract base camera class - concrete classes for orthographic and perspective cameras derive from it...
 
TGLMatrix & RefLastNoPickProjM() const
 
const TGLMatrix & GetCamBase() const
 
TGLVector3 ViewportDeltaToWorld(const TGLVertex3 &worldRef, Double_t viewportXDelta, Double_t viewportYDelta, TGLMatrix *modviewMat=nullptr) const
Apply a 2D viewport delta (shift) to the projection of worldRef onto viewport, returning the resultan...
 
virtual Bool_t IsOrthographic() const
 
const TGLPlane & FrustumPlane(EFrustumPlane plane) const
 
TGLColor & Selection(Int_t i)
 
const UChar_t * CArr() const
 
Color_t GetColorIndex() const
Returns color-index representing the color.
 
A wrapper class for FTFont.
 
void Render(const char *txt, Double_t x, Double_t y, Double_t angle, Double_t mgn) const
 
virtual void DLCachePurge()
Purge all entries for all LODs for this drawable from the display list cache, returning the reserved ...
 
TObject * fExternalObj
first replica
 
virtual void DLCacheDrop()
Drop all entries for all LODs for this drawable from the display list cache, WITHOUT returning the re...
 
void PurgeDLRange(UInt_t base, Int_t size) const
External object is a fake.
 
Bool_t fDLCache
display-list validity bit-field
 
16 component (4x4) transform matrix - column MAJOR as per GL.
 
TGLVector3 GetBaseVec(Int_t b) const
 
const Double_t * CArr() const
 
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.
 
Concrete physical shape - a GL drawable.
 
const Int_t * CArr() const
 
Int_t Diagonal() const
Return the diagonal of the rectangle.
 
The TGLRnrCtx class aggregates data for a given redering context as needed by various parts of the RO...
 
Short_t SceneStyle() const
 
Bool_t SecSelection() const
 
void RegisterFontNoScale(Int_t size, Int_t file, Int_t mode, TGLFont &out)
Get font in the GL rendering context.
 
Bool_t IsDrawPassFilled() const
Returns true if current render-pass uses filled polygon style.
 
TGLColorSet & ColorSet()
Return reference to current color-set (top of the stack).
 
UInt_t GetItem(Int_t i) const
 
Standard selection record including information about containing scene and details ob out selected ob...
 
static void Color4ubv(const UChar_t *rgba)
Wrapper for glColor4ubv.
 
static UInt_t LockColor()
Prevent further color changes.
 
static void ColorTransparency(Color_t color_index, Char_t transparency=0)
Set color from color_index and ROOT-style transparency (default 0).
 
static UInt_t UnlockColor()
Allow color changes.
 
static void Color(const TGLColor &color)
Set color from TGLColor.
 
static Float_t LineWidth()
Get the line-width, taking the global scaling into account.
 
3 component (x/y/z) vector class.
 
3 component (x/y/z) vertex class.
 
void Set(Double_t x, Double_t y, Double_t z)
 
static void Optimize(Double_t A1, Double_t A2, Int_t nold, Double_t &BinLow, Double_t &BinHigh, Int_t &nbins, Double_t &BWID, Option_t *option="")
Static function to compute reasonable axis limits.
 
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
 
Mother of all ROOT objects.
 
Int_t Nint(T x)
Round to nearest integer. Rounds half integers to the nearest even integer.
 
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
 
constexpr Double_t Sqrt2()
 
Int_t FloorNint(Double_t x)
Returns the nearest integer of TMath::Floor(x).
 
Double_t Sqrt(Double_t x)
Returns the square root of x.
 
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
 
Double_t Hypot(Double_t x, Double_t y)
Returns sqrt(x*x + y*y)
 
Double_t Log10(Double_t x)
Returns the common (base-10) logarithm of x.
 
Cell data inner structure.
 
Float_t Value(Bool_t) const
Return energy value associated with the cell, usually Et.
 
std::vector< Float_t > fSliceData
 
std::vector< Int_t > fBinData
 
Float_t * GetSliceVals(Int_t bin)
 
static uint64_t sum(uint64_t i)