ROOT logo
// @(#)root/eve:$Id$
// Author: Alja Mrak-Tadel 2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TEveCaloLegoOverlay.h"
#include "TEveCaloLegoGL.h"

#include "TAxis.h"
#include "TColor.h"
#include "TROOT.h"
#include "THLimitsFinder.h"

#include "TGLRnrCtx.h"
#include "TGLIncludes.h"
#include "TGLSelectRecord.h"
#include "TGLUtil.h"
#include "TGLViewerBase.h"
#include "TGLCamera.h"
#include "TGLAxisPainter.h"
#include "TGLFontManager.h"

#include "TEveCalo.h"
#include "TEveCaloData.h"
#include "TEveRGBAPalette.h"

#include <KeySymbols.h>


//______________________________________________________________________________
//
//
// GL-overaly control GUI for TEveCaloLego.
//
//

ClassImp(TEveCaloLegoOverlay);

//______________________________________________________________________________
TEveCaloLegoOverlay::TEveCaloLegoOverlay() :
   TGLCameraOverlay(),

   fCalo(0),

   fShowScales(kTRUE),
   fScaleColor(-1), fScaleTransparency(0),
   fScaleCoordX(0.85), fScaleCoordY(0.65),
   fScaleW(0), fScaleH(0),
   fCellX(-1), fCellY(-1),

   fFrameColor(-1), fFrameLineTransp(70), fFrameBgTransp(90),

   fMouseX(0),  fMouseY(0),
   fInDrag(kFALSE),

   fHeaderSelected(kFALSE),

   fPlaneAxis(0), fAxisPlaneColor(kGray),
   fShowPlane(kFALSE),

   fMenuW(0.08),
   fButtonW(0.5),
   fShowSlider(kFALSE),
   fSliderH(0.6),
   fSliderPosY(0.15),
   fSliderVal(0),

   fActiveID(-1), fActiveCol(kRed-4)
{
   // Constructor.

   fPlaneAxis = new TAxis();
}

/******************************************************************************/
// Virtual event handlers from TGLOverlayElement
/******************************************************************************/

Bool_t TEveCaloLegoOverlay::SetSliderVal(Event_t* event, TGLRnrCtx &rnrCtx)
{
   // Set height of horizontal plane in the calorimeter.

   TGLRect& wprt = rnrCtx.RefCamera().RefViewport();
   fSliderVal = (1 -event->fY*1./wprt.Height() -fSliderPosY)/fSliderH;

   if (fSliderVal < 0 )
      fSliderVal = 0;
   else if (fSliderVal > 1)
      fSliderVal = 1;

   fCalo->SetHPlaneVal(fSliderVal);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TEveCaloLegoOverlay::Handle(TGLRnrCtx          & rnrCtx,
                                   TGLOvlSelectRecord & selRec,
                                   Event_t            * event)
{
   // Handle overlay event.
   // Return TRUE if event was handled.

   if (selRec.GetN() < 2) return kFALSE;


   if (rnrCtx.RefCamera().IsOrthographic())
   {
      switch (event->fType)
      {      case kButtonPress:
         {
            fMouseX = event->fX;
            fMouseY = event->fY;
            fInDrag = kTRUE;
            return kTRUE;
         }
         case kButtonRelease:
         {
            fInDrag = kFALSE;
            return kTRUE;
         }
         case kMotionNotify:
         {
            if (fInDrag)
            {
               const TGLRect& vp = rnrCtx.RefCamera().RefViewport();
               fScaleCoordX += (Float_t)(event->fX - fMouseX) / vp.Width();
               fScaleCoordY -= (Float_t)(event->fY - fMouseY) / vp.Height();
               fMouseX = event->fX;
               fMouseY = event->fY;
               // Make sure we don't go offscreen (use fDraw variables set in draw)
               if (fScaleCoordX < 0)
                  fScaleCoordX = 0;
               else if (fScaleCoordX + fScaleW > 1.0f)
                  fScaleCoordX = 1.0f - fScaleW;
               if (fScaleCoordY < 0)
                  fScaleCoordY = 0;
               else if (fScaleCoordY + fScaleH > 1.0f)
                  fScaleCoordY = 1.0f - fScaleH;
            }
            return kTRUE;
         }
         default:
            break;
      }
   }

   else
   {
      switch (event->fType)
      {
         case kMotionNotify:
         {
            Int_t item = selRec.GetN() < 2 ? -1 : (Int_t)selRec.GetItem(1);
            if (fActiveID != item) {
               fActiveID = item;
               return kTRUE;
            } else {
               if (fActiveID == 2 && event->fState == 256)
                  return SetSliderVal(event, rnrCtx);

               return kFALSE;
            }
            break;
         }
         case kButtonPress:
         {
            if (event->fCode != kButton1) {
               return kFALSE;
            }
            switch (selRec.GetItem(1))
            {
               case 1:
                  fShowSlider = !fShowSlider;
                  fCalo->SetDrawHPlane(fShowSlider);
                  break;
               case 2:
                  return SetSliderVal(event, rnrCtx);
               case 3:
                  fHeaderSelected = !fHeaderSelected;
               default:
                  break;
            }
         }
         default:
            break;
      }
   }

   return kFALSE;
}

//______________________________________________________________________________
Bool_t TEveCaloLegoOverlay::MouseEnter(TGLOvlSelectRecord& /*rec*/)
{
   // Mouse has entered overlay area.

   return kTRUE;
}

//______________________________________________________________________________
void TEveCaloLegoOverlay::MouseLeave()
{
   // Mouse has left overlay area.

   fActiveID = -1;
}

//______________________________________________________________________________
void TEveCaloLegoOverlay::SetScaleColorTransparency(Color_t colIdx, Char_t transp)
{
   // Set color and transparency of scales.

   fScaleColor = colIdx;
   fScaleTransparency = transp;
}

//______________________________________________________________________________
void TEveCaloLegoOverlay::SetScalePosition(Double_t x, Double_t y)
{
   // Set scale coordinates in range [0,1].

   fScaleCoordX = x;
   fScaleCoordY = y;
}

//______________________________________________________________________________
void TEveCaloLegoOverlay:: SetFrameAttribs(Color_t frameColor, Char_t lineTransp, Char_t bgTransp)
{
   // Set frame attribs.

   fFrameColor = frameColor;
   fFrameLineTransp = lineTransp;
   fFrameBgTransp = bgTransp;
}

//==============================================================================
void TEveCaloLegoOverlay::RenderHeader(TGLRnrCtx& rnrCtx)
{
   // Render text on top right corner of the screen.

   TGLRect &vp = rnrCtx.GetCamera()->RefViewport();

   TGLFont font;
   Int_t fs = TMath::Max(TMath::Nint(vp.Height()*0.035), 12);
   rnrCtx.RegisterFontNoScale(fs, "arial", TGLFont::kPixmap, font);
   font.PreRender();
   Float_t off = fs*0.2;
   Float_t bb[6];
   font.BBox(fHeaderTxt.Data(), bb[0], bb[1], bb[2], bb[3], bb[4], bb[5]);
   Float_t x = vp.Width()  -bb[3] -off;
   Float_t y = vp.Height() -bb[4] -off;
   if (rnrCtx.Selection())
   {
      glPushName(0);
      glLoadName(3);
      glBegin(GL_QUADS);
      glVertex2f(x/vp.Width(), y/ vp.Height());
      glVertex2f(1,  y/ vp.Height());
      glVertex2f(1, 1);
      glVertex2f(x/vp.Width(), 1);
      glEnd();
      glPopName();
   }
   else
   {
      TGLUtil::Color(fHeaderSelected ? fActiveCol : fCalo->GetFontColor());
      glRasterPos2i(0, 0);
      glBitmap(0, 0, 0, 0, x, y, 0);
      font.Render(fHeaderTxt.Data());
   }
   font.PostRender();
}

//______________________________________________________________________________
void TEveCaloLegoOverlay::RenderPlaneInterface(TGLRnrCtx &rnrCtx)
{
   // Render menu for plane-value and the plane if marked.

   glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT | GL_LINE_BIT | GL_POINT_BIT);
   glEnable(GL_POINT_SMOOTH);
   glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
   glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
   glEnable(GL_POLYGON_OFFSET_FILL);
   glPolygonOffset(0.1, 1);
   glDisable(GL_CULL_FACE);
   glEnable(GL_BLEND);
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

   // move to the center of menu
   Double_t maxVal = fCalo->GetMaxVal();

   // button
   glPushMatrix();
   glTranslatef(1 -fMenuW, (1-fButtonW )*fMenuW*0.8, 0);

   glPushName(0);
   glLoadName(1);
   Float_t a=0.6;
   (fActiveID == 1) ? TGLUtil::Color(fActiveCol):TGLUtil::Color4f(0, 1, 0, a);
   Float_t bw = fButtonW*fMenuW*0.5;
   Float_t bwt = bw*0.8;
   Float_t bh = fButtonW*fMenuW;
   glBegin(GL_QUADS);
   glVertex2f(-bw, 0);
   glVertex2f( bw, 0);
   glVertex2f( bwt, bh);
   glVertex2f(-bwt, bh);
   glEnd();


   TGLUtil::LineWidth(1);
   glBegin(GL_LINES);
   TGLUtil::Color(4);
   glVertex2f(0, 0); glVertex2f(0, bh);
   glVertex2f((bw+bwt)*0.5, bh*0.5); glVertex2f(-(bw+bwt)*0.5, bh*0.5);
   glEnd();

   TGLUtil::LineWidth(2);
   glBegin(GL_LINE_LOOP);
   glVertex2f(-bw, 0);
   glVertex2f( bw, 0);
   glVertex2f( bwt, bh);
   glVertex2f(-bwt, bh);
   glEnd();
   TGLUtil::LineWidth(1);

   glTranslatef(0, fSliderPosY, 0.5);

   if (fShowSlider)
   {
      // event handler
      if (rnrCtx.Selection())
      {
         glLoadName(2);
         Float_t w = fButtonW*fMenuW*0.5f;
         glBegin(GL_QUADS);
         glVertex2f(-w, 0);
         glVertex2f( w, 0);
         glVertex2f( w, fSliderH);
         glVertex2f(-w, fSliderH);
         glEnd();
      }

      // slider axis
      fAxisPainter->SetLabelPixelFontSize(TMath::CeilNint(rnrCtx.GetCamera()->RefViewport().Height()*GetAttAxis()->GetLabelSize()));
      fAxisPainter->RefDir().Set(0, 1, 0);
      fAxisPainter->RefTMOff(0).Set(1, 0, 0);
      fAxisPainter->SetLabelAlign(TGLFont::kLeft, TGLFont::kCenterV);
      fPlaneAxis->SetRangeUser(0, maxVal);
      fPlaneAxis->SetLimits(0, maxVal);
      fPlaneAxis->SetNdivisions(710);
      fPlaneAxis->SetTickLength(0.02*maxVal);
      fPlaneAxis->SetLabelOffset(0.02*maxVal);
      fPlaneAxis->SetLabelSize(0.05);

      glPushMatrix();
      glScalef(fSliderH/(maxVal), fSliderH/maxVal, 1.);
      fAxisPainter->PaintAxis(rnrCtx, fPlaneAxis);
      glPopMatrix();

      // marker
      TGLUtil::Color((fActiveID == 2) ? fActiveCol : 3);
      TGLUtil::PointSize(8);
      glBegin(GL_POINTS);
      glVertex3f(0, fSliderVal*fSliderH, -0.1);
      glEnd();
   }

   glPopName();
   glPopMatrix();
   glPopAttrib();
}

/******************************************************************************/
void TEveCaloLegoOverlay::RenderLogaritmicScales(TGLRnrCtx& rnrCtx)
{
   // Draw slider of calo 2D in mode TEveCalo:fValSize.

   TGLRect &vp = rnrCtx.GetCamera()->RefViewport();

   Double_t maxVal = fCalo->GetMaxVal();
   Int_t    maxe   = TMath::CeilNint(TMath::Log10(maxVal+1)); // max round exponent
   Double_t sqv    = TMath::Power(10, maxe)+1; // starting max square value
   Double_t fc     = TMath::Log10(sqv)/TMath::Log10(fCalo->GetMaxVal()+1);
   Double_t cellX = fCellX*fc;
   Double_t cellY = fCellY*fc;

   Double_t scaleStepY = 0.1; // step is 10% of screen
   Double_t scaleStepX = scaleStepY*vp.Height()/vp.Width(); // step is 10% of screen

   Double_t frameOff = 0.01;

   // define max starting exponent not to take more than scalStepY height
   while(cellY > scaleStepY)
   {
      fc = TMath::Log10(TMath::Power(10, maxe-1)+1)/TMath::Log10(TMath::Power(10, maxe)+1);
      maxe --;
      cellX *= fc;
      cellY *= fc;
   }

   sqv =  TMath::Power(10, maxe)+1;
   glPushMatrix();
   glTranslatef(fScaleCoordX + 0.5*scaleStepX + frameOff, fScaleCoordY + 0.5*scaleStepY + frameOff, 0); // translate to lower left corner

   glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT | GL_LINE_BIT | GL_POINT_BIT);
   glEnable(GL_BLEND);
   glDisable(GL_CULL_FACE);
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glEnable(GL_POLYGON_OFFSET_FILL);
   glPolygonOffset(0.1, 1);

   glPushName(0);
   glLoadName(1);

   // draw cells
   Color_t color = fScaleColor > -1 ? fScaleColor : rnrCtx.ColorSet().Markup().GetColorIndex();
   TGLUtil::ColorTransparency(color, fScaleTransparency);

   Float_t pos, dx, dy;
   glBegin(GL_QUADS);
   Int_t ne = 3; // max number of columns
   for (Int_t i=0; i < ne; ++i)
   {
      Float_t valFac = TMath::Log10(TMath::Power(10, maxe-i)+1)/TMath::Log10(sqv);
      dx = 0.5* cellX * valFac;
      dy = 0.5* cellY * valFac;
      pos = i* scaleStepY;
      glVertex2f( - dx, pos - dy);
      glVertex2f( - dx, pos + dy);
      glVertex2f( + dx, pos + dy);
      glVertex2f( + dx, pos - dy);
   }
   glEnd();

   // draw points in case suare is below pixels
   glBegin(GL_POINTS);
   for (Int_t i=0; i < ne; ++i)
      glVertex2f(0, i* scaleStepY);
   glEnd();

   // draw numbers
   TGLFont fontB;
   Int_t fsb = TMath::Max(TMath::Nint(vp.Height()*0.03), 12);
   rnrCtx.RegisterFontNoScale(fsb, "arial", TGLFont::kPixmap, fontB);
   TGLFont fontE;
   Int_t fsE = TMath::Max(TMath::Nint(vp.Height()*0.01), 8);
   rnrCtx.RegisterFontNoScale(fsE, "arial", TGLFont::kPixmap, fontE);

   Float_t llx, lly, llz, urx, ury, urz;
   fontB.BBox("10", llx, lly, llz, urx, ury, urz);
   Float_t expX = urx/vp.Width();
   Float_t expY = (ury-lly)*0.5/vp.Height();
   Float_t expOff = 1;
   fontB.PreRender();
   fontE.PreRender();
   glPushMatrix();
   glTranslatef(0.5*scaleStepX, 0, 0.1);
   for (Int_t i = 0; i < ne; ++i)
   {
      if (i == maxe)
      {
         fontB.Render("1", 0, i*scaleStepY, 0, TGLFont::kLeft, TGLFont::kCenterV);
      }
      else if ( i == (maxe -1))
      {
         fontB.Render("10", 0, i*scaleStepY, 0, TGLFont::kLeft, TGLFont::kCenterV);
      }
      else
      {
         fontB.Render("10", 0, i*scaleStepY, 0, TGLFont::kLeft, TGLFont::kCenterV);
         fontB.BBox(Form("%d",  maxe-i), llx, lly, llz, urx, ury, urz);
         if (expOff >  urx/vp.Width()) expOff = urx/vp.Width();
         fontE.Render(Form("%d",  maxe-i), expX , i*scaleStepY+expY, 0, TGLFont::kLeft, TGLFont::kCenterV);
      }
   }
   glPopMatrix();
   fontB.PostRender();
   fontE.PostRender();
   if (expOff < 1)  expX += expOff;
   glPopMatrix();

   // draw frame
   {
      fScaleW = scaleStepX + expX+ frameOff*2;
      fScaleH = scaleStepY * ne + frameOff*2;
      Double_t x0 = fScaleCoordX;
      Double_t x1 = x0 + fScaleW;
      Double_t y0 = fScaleCoordY;
      Double_t y1 = y0 + fScaleH;
      Double_t zf = +0.2;

      color = fFrameColor > -1 ?  fFrameColor : rnrCtx.ColorSet().Markup().GetColorIndex();
      TGLUtil::ColorTransparency(color, fFrameLineTransp);

      glBegin(GL_LINE_LOOP);
      glVertex3f(x0, y0, zf); glVertex3f(x1, y0, zf);
      glVertex3f(x1, y1, zf); glVertex3f(x0, y1, zf);
      glEnd();

      TGLUtil::ColorTransparency(color, fFrameBgTransp);
      glBegin(GL_QUADS);
      glVertex2f(x0, y0); glVertex2f(x1, y0);
      glVertex2f(x1, y1); glVertex2f(x0, y1);
      glEnd();
   }
   glPopName();

   glPopAttrib();
} // end draw scales


/******************************************************************************/
void TEveCaloLegoOverlay::RenderPaletteScales(TGLRnrCtx& rnrCtx)
{
   // Draw slider of calo 2D in mode TEveCalo:fValColor.

   glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT | GL_LINE_BIT);
   glEnable(GL_BLEND);
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glEnable(GL_POLYGON_OFFSET_FILL);
   glPolygonOffset(0.1, 1);

   TGLRect& vp = rnrCtx.RefCamera().RefViewport();
   Double_t maxVal = fCalo->GetMaxVal();
   Int_t    bn = 0;
   Double_t bw = 0;         // bin with first second order
   Double_t bl = 0, bh = 0; // bin low, high first
   THLimitsFinder::Optimize(0, maxVal, 10, bl, bh, bn, bw);
   bn = TMath::CeilNint(maxVal/bw) + 1;

   fScaleH = 0.25; // relative height of the scale
   fScaleW = fScaleH*1.5/(bn*vp.Aspect());
   Float_t h = 0.5 * bw  ;
   Float_t w = h * 1.5/ vp.Aspect();

   glPushMatrix();
   glTranslatef(fScaleCoordX + fScaleW*0.5, fScaleCoordY + fScaleH/bn*0.5, 0); // translate to lower left corner
   glScalef(fScaleH/(bn*bw), fScaleH/(bn*bw), 1.);

   glPushName(0);
   glLoadName(1);   
   TGLAxisPainter::LabVec_t &labVec = fAxisPainter->RefLabVec();
   labVec.clear();
   Float_t val = 0;
   for (Int_t l= 0; l<bn; l++) {
      labVec.push_back( TGLAxisPainter::Lab_t(val, val));
      val += bw;
   }

   TGLUtil::Color(rnrCtx.ColorSet().Markup().GetColorIndex());
   fAxisPainter->RefDir().Set(0, 1, 0);
   Int_t fs = TMath::CeilNint(rnrCtx.GetCamera()->RefViewport().Height()*0.02);
   fAxisPainter->SetLabelFont(rnrCtx, "arial", fs);
   fAxisPainter->SetTextFormat(0, maxVal, bw);
   fAxisPainter->SetLabelAlign(TGLFont::kCenterH, TGLFont::kCenterV);
   TAttAxis att;
   fAxisPainter->SetAttAxis(&att);
   fAxisPainter->RnrLabels();

   UChar_t c[4];
   Float_t y;
   Double_t zf = +0.2;
   glBegin(GL_QUADS);
   for (TGLAxisPainter::LabVec_t::iterator it = labVec.begin(); it != labVec.end(); ++it)
   {
      fCalo->GetPalette()->ColorFromValue((Int_t)((*it).first), c);
      glColor4ub( c[0], c[1], c[2], c[3]);

      y = (*it).second;
      glVertex3f( -w, y - h, zf); glVertex3f( +w, y - h, zf);
      glVertex3f( +w, y + h, zf); glVertex3f( -w, y + h, zf);
   }
   glEnd();

   TGLUtil::Color(rnrCtx.ColorSet().Markup().GetColorIndex());
   glBegin(GL_LINE_LOOP);
   for (TGLAxisPainter::LabVec_t::iterator it = labVec.begin(); it != labVec.end(); ++it)
   {
      y = (*it).second;
      glVertex3f( -w, y - h, zf); glVertex3f( +w, y - h, zf);
      glVertex3f( +w, y + h, zf); glVertex3f( -w, y + h, zf);
   }
   glEnd();

   glPopName();
   glPopMatrix();
   glPopAttrib();
}

/******************************************************************************/

void TEveCaloLegoOverlay::Render(TGLRnrCtx& rnrCtx)
{
   // Draw calorimeter scale info and plane interface.

   if ( fCalo == 0 || fCalo->GetData()->Empty()) return;

   Float_t old_depth_range[2];
   glGetFloatv(GL_DEPTH_RANGE, old_depth_range);
   glDepthRange(0, 0.001);

   glMatrixMode(GL_PROJECTION);
   glPushMatrix();
   glLoadIdentity();
   if (rnrCtx.Selection())
   {
      TGLRect rect(*rnrCtx.GetPickRectangle());
      rnrCtx.GetCamera()->WindowToViewport(rect);
      gluPickMatrix(rect.X(), rect.Y(), rect.Width(), rect.Height(),
                    (Int_t*) rnrCtx.GetCamera()->RefViewport().CArr());
   }
   glMatrixMode(GL_MODELVIEW);
   glPushMatrix();
   glLoadIdentity();

   glTranslatef(-1, -1, 0);
   glScalef(2, 2, 1);


   TGLCapabilitySwitch lights_off(GL_LIGHTING, kFALSE);
   TGLCamera& cam = rnrCtx.RefCamera();
   Bool_t drawOverlayAxis = kTRUE;

   if (cam.IsOrthographic())
   {
      // in 2D need pixel cell dimension
      // project lego eta-phi boundraries
      TGLVector3 rng(fCalo->GetEtaRng(), fCalo->GetPhiRng(), 0);
      TGLVertex3 p;
      TGLVector3 res = cam.WorldDeltaToViewport(p, rng);

      TEveCaloLegoGL* lgl = dynamic_cast<TEveCaloLegoGL*>(rnrCtx.RefViewer().FindLogicalInScenes(fCalo));
      if (fShowScales && lgl)
      {

         // get smallest bin
         Double_t sq = 1e4;
         if (lgl->fBinStep == 1)
         {
            TEveCaloData::CellData_t cellData;
            for ( TEveCaloData::vCellId_t::iterator i = fCalo->fCellList.begin(); i != fCalo->fCellList.end(); ++i)
            {
               fCalo->fData->GetCellData(*i, cellData);
               if (sq > cellData.EtaDelta()) sq = cellData.EtaDelta();
               if (sq > cellData.PhiDelta()) sq = cellData.PhiDelta();
            }
         }
         else
         {
            TAxis* a;
            Int_t nb;
            a = fCalo->GetData()->GetEtaBins();
            nb = a->GetNbins();
            for (Int_t i=1 ; i<=nb; i++)
            {
               if (sq > a->GetBinWidth(i)) sq = a->GetBinWidth(i);
            }

            a = fCalo->GetData()->GetPhiBins();
            nb = a->GetNbins();
            for (Int_t i=1 ; i<=nb; i++)
            {
               if (sq > a->GetBinWidth(i)) sq = a->GetBinWidth(i);
            }

            sq *= lgl->fBinStep;
         }
         fCellX = (res.X()*sq)/(fCalo->GetEtaRng()*1.*cam.RefViewport().Width());
         fCellY = (res.Y()*sq)/(fCalo->GetPhiRng()*1.*cam.RefViewport().Height());
         // printf("bin width %f cells size %f %f\n", sq, fCellX, fCellY);
         if (fCalo->Get2DMode() == TEveCaloLego::kValSize)
            RenderLogaritmicScales(rnrCtx);
         else if (fCalo->GetPalette())
            RenderPaletteScales(rnrCtx);
      }

      // draw camera overlay if projected lego bbox to large
      SetFrustum(cam);
      if (   fCalo->GetEtaMin() > fFrustum[0] && fCalo->GetEtaMax() < fFrustum[2]
          && fCalo->GetPhiMin() > fFrustum[1] && fCalo->GetPhiMax() < fFrustum[3])
            drawOverlayAxis = kFALSE;
   }

   if (cam.IsPerspective() && fShowPlane)
   {
      RenderPlaneInterface(rnrCtx);
   }

   // draw info text on yop right corner
   if (fHeaderTxt.Length())
   {
      RenderHeader(rnrCtx);
   }

   glPopMatrix();
   glMatrixMode(GL_PROJECTION);
   glPopMatrix();
   glMatrixMode(GL_MODELVIEW);

   glDepthRange(old_depth_range[0], old_depth_range[1]);

   if (drawOverlayAxis) TGLCameraOverlay::Render(rnrCtx);
}
 TEveCaloLegoOverlay.cxx:1
 TEveCaloLegoOverlay.cxx:2
 TEveCaloLegoOverlay.cxx:3
 TEveCaloLegoOverlay.cxx:4
 TEveCaloLegoOverlay.cxx:5
 TEveCaloLegoOverlay.cxx:6
 TEveCaloLegoOverlay.cxx:7
 TEveCaloLegoOverlay.cxx:8
 TEveCaloLegoOverlay.cxx:9
 TEveCaloLegoOverlay.cxx:10
 TEveCaloLegoOverlay.cxx:11
 TEveCaloLegoOverlay.cxx:12
 TEveCaloLegoOverlay.cxx:13
 TEveCaloLegoOverlay.cxx:14
 TEveCaloLegoOverlay.cxx:15
 TEveCaloLegoOverlay.cxx:16
 TEveCaloLegoOverlay.cxx:17
 TEveCaloLegoOverlay.cxx:18
 TEveCaloLegoOverlay.cxx:19
 TEveCaloLegoOverlay.cxx:20
 TEveCaloLegoOverlay.cxx:21
 TEveCaloLegoOverlay.cxx:22
 TEveCaloLegoOverlay.cxx:23
 TEveCaloLegoOverlay.cxx:24
 TEveCaloLegoOverlay.cxx:25
 TEveCaloLegoOverlay.cxx:26
 TEveCaloLegoOverlay.cxx:27
 TEveCaloLegoOverlay.cxx:28
 TEveCaloLegoOverlay.cxx:29
 TEveCaloLegoOverlay.cxx:30
 TEveCaloLegoOverlay.cxx:31
 TEveCaloLegoOverlay.cxx:32
 TEveCaloLegoOverlay.cxx:33
 TEveCaloLegoOverlay.cxx:34
 TEveCaloLegoOverlay.cxx:35
 TEveCaloLegoOverlay.cxx:36
 TEveCaloLegoOverlay.cxx:37
 TEveCaloLegoOverlay.cxx:38
 TEveCaloLegoOverlay.cxx:39
 TEveCaloLegoOverlay.cxx:40
 TEveCaloLegoOverlay.cxx:41
 TEveCaloLegoOverlay.cxx:42
 TEveCaloLegoOverlay.cxx:43
 TEveCaloLegoOverlay.cxx:44
 TEveCaloLegoOverlay.cxx:45
 TEveCaloLegoOverlay.cxx:46
 TEveCaloLegoOverlay.cxx:47
 TEveCaloLegoOverlay.cxx:48
 TEveCaloLegoOverlay.cxx:49
 TEveCaloLegoOverlay.cxx:50
 TEveCaloLegoOverlay.cxx:51
 TEveCaloLegoOverlay.cxx:52
 TEveCaloLegoOverlay.cxx:53
 TEveCaloLegoOverlay.cxx:54
 TEveCaloLegoOverlay.cxx:55
 TEveCaloLegoOverlay.cxx:56
 TEveCaloLegoOverlay.cxx:57
 TEveCaloLegoOverlay.cxx:58
 TEveCaloLegoOverlay.cxx:59
 TEveCaloLegoOverlay.cxx:60
 TEveCaloLegoOverlay.cxx:61
 TEveCaloLegoOverlay.cxx:62
 TEveCaloLegoOverlay.cxx:63
 TEveCaloLegoOverlay.cxx:64
 TEveCaloLegoOverlay.cxx:65
 TEveCaloLegoOverlay.cxx:66
 TEveCaloLegoOverlay.cxx:67
 TEveCaloLegoOverlay.cxx:68
 TEveCaloLegoOverlay.cxx:69
 TEveCaloLegoOverlay.cxx:70
 TEveCaloLegoOverlay.cxx:71
 TEveCaloLegoOverlay.cxx:72
 TEveCaloLegoOverlay.cxx:73
 TEveCaloLegoOverlay.cxx:74
 TEveCaloLegoOverlay.cxx:75
 TEveCaloLegoOverlay.cxx:76
 TEveCaloLegoOverlay.cxx:77
 TEveCaloLegoOverlay.cxx:78
 TEveCaloLegoOverlay.cxx:79
 TEveCaloLegoOverlay.cxx:80
 TEveCaloLegoOverlay.cxx:81
 TEveCaloLegoOverlay.cxx:82
 TEveCaloLegoOverlay.cxx:83
 TEveCaloLegoOverlay.cxx:84
 TEveCaloLegoOverlay.cxx:85
 TEveCaloLegoOverlay.cxx:86
 TEveCaloLegoOverlay.cxx:87
 TEveCaloLegoOverlay.cxx:88
 TEveCaloLegoOverlay.cxx:89
 TEveCaloLegoOverlay.cxx:90
 TEveCaloLegoOverlay.cxx:91
 TEveCaloLegoOverlay.cxx:92
 TEveCaloLegoOverlay.cxx:93
 TEveCaloLegoOverlay.cxx:94
 TEveCaloLegoOverlay.cxx:95
 TEveCaloLegoOverlay.cxx:96
 TEveCaloLegoOverlay.cxx:97
 TEveCaloLegoOverlay.cxx:98
 TEveCaloLegoOverlay.cxx:99
 TEveCaloLegoOverlay.cxx:100
 TEveCaloLegoOverlay.cxx:101
 TEveCaloLegoOverlay.cxx:102
 TEveCaloLegoOverlay.cxx:103
 TEveCaloLegoOverlay.cxx:104
 TEveCaloLegoOverlay.cxx:105
 TEveCaloLegoOverlay.cxx:106
 TEveCaloLegoOverlay.cxx:107
 TEveCaloLegoOverlay.cxx:108
 TEveCaloLegoOverlay.cxx:109
 TEveCaloLegoOverlay.cxx:110
 TEveCaloLegoOverlay.cxx:111
 TEveCaloLegoOverlay.cxx:112
 TEveCaloLegoOverlay.cxx:113
 TEveCaloLegoOverlay.cxx:114
 TEveCaloLegoOverlay.cxx:115
 TEveCaloLegoOverlay.cxx:116
 TEveCaloLegoOverlay.cxx:117
 TEveCaloLegoOverlay.cxx:118
 TEveCaloLegoOverlay.cxx:119
 TEveCaloLegoOverlay.cxx:120
 TEveCaloLegoOverlay.cxx:121
 TEveCaloLegoOverlay.cxx:122
 TEveCaloLegoOverlay.cxx:123
 TEveCaloLegoOverlay.cxx:124
 TEveCaloLegoOverlay.cxx:125
 TEveCaloLegoOverlay.cxx:126
 TEveCaloLegoOverlay.cxx:127
 TEveCaloLegoOverlay.cxx:128
 TEveCaloLegoOverlay.cxx:129
 TEveCaloLegoOverlay.cxx:130
 TEveCaloLegoOverlay.cxx:131
 TEveCaloLegoOverlay.cxx:132
 TEveCaloLegoOverlay.cxx:133
 TEveCaloLegoOverlay.cxx:134
 TEveCaloLegoOverlay.cxx:135
 TEveCaloLegoOverlay.cxx:136
 TEveCaloLegoOverlay.cxx:137
 TEveCaloLegoOverlay.cxx:138
 TEveCaloLegoOverlay.cxx:139
 TEveCaloLegoOverlay.cxx:140
 TEveCaloLegoOverlay.cxx:141
 TEveCaloLegoOverlay.cxx:142
 TEveCaloLegoOverlay.cxx:143
 TEveCaloLegoOverlay.cxx:144
 TEveCaloLegoOverlay.cxx:145
 TEveCaloLegoOverlay.cxx:146
 TEveCaloLegoOverlay.cxx:147
 TEveCaloLegoOverlay.cxx:148
 TEveCaloLegoOverlay.cxx:149
 TEveCaloLegoOverlay.cxx:150
 TEveCaloLegoOverlay.cxx:151
 TEveCaloLegoOverlay.cxx:152
 TEveCaloLegoOverlay.cxx:153
 TEveCaloLegoOverlay.cxx:154
 TEveCaloLegoOverlay.cxx:155
 TEveCaloLegoOverlay.cxx:156
 TEveCaloLegoOverlay.cxx:157
 TEveCaloLegoOverlay.cxx:158
 TEveCaloLegoOverlay.cxx:159
 TEveCaloLegoOverlay.cxx:160
 TEveCaloLegoOverlay.cxx:161
 TEveCaloLegoOverlay.cxx:162
 TEveCaloLegoOverlay.cxx:163
 TEveCaloLegoOverlay.cxx:164
 TEveCaloLegoOverlay.cxx:165
 TEveCaloLegoOverlay.cxx:166
 TEveCaloLegoOverlay.cxx:167
 TEveCaloLegoOverlay.cxx:168
 TEveCaloLegoOverlay.cxx:169
 TEveCaloLegoOverlay.cxx:170
 TEveCaloLegoOverlay.cxx:171
 TEveCaloLegoOverlay.cxx:172
 TEveCaloLegoOverlay.cxx:173
 TEveCaloLegoOverlay.cxx:174
 TEveCaloLegoOverlay.cxx:175
 TEveCaloLegoOverlay.cxx:176
 TEveCaloLegoOverlay.cxx:177
 TEveCaloLegoOverlay.cxx:178
 TEveCaloLegoOverlay.cxx:179
 TEveCaloLegoOverlay.cxx:180
 TEveCaloLegoOverlay.cxx:181
 TEveCaloLegoOverlay.cxx:182
 TEveCaloLegoOverlay.cxx:183
 TEveCaloLegoOverlay.cxx:184
 TEveCaloLegoOverlay.cxx:185
 TEveCaloLegoOverlay.cxx:186
 TEveCaloLegoOverlay.cxx:187
 TEveCaloLegoOverlay.cxx:188
 TEveCaloLegoOverlay.cxx:189
 TEveCaloLegoOverlay.cxx:190
 TEveCaloLegoOverlay.cxx:191
 TEveCaloLegoOverlay.cxx:192
 TEveCaloLegoOverlay.cxx:193
 TEveCaloLegoOverlay.cxx:194
 TEveCaloLegoOverlay.cxx:195
 TEveCaloLegoOverlay.cxx:196
 TEveCaloLegoOverlay.cxx:197
 TEveCaloLegoOverlay.cxx:198
 TEveCaloLegoOverlay.cxx:199
 TEveCaloLegoOverlay.cxx:200
 TEveCaloLegoOverlay.cxx:201
 TEveCaloLegoOverlay.cxx:202
 TEveCaloLegoOverlay.cxx:203
 TEveCaloLegoOverlay.cxx:204
 TEveCaloLegoOverlay.cxx:205
 TEveCaloLegoOverlay.cxx:206
 TEveCaloLegoOverlay.cxx:207
 TEveCaloLegoOverlay.cxx:208
 TEveCaloLegoOverlay.cxx:209
 TEveCaloLegoOverlay.cxx:210
 TEveCaloLegoOverlay.cxx:211
 TEveCaloLegoOverlay.cxx:212
 TEveCaloLegoOverlay.cxx:213
 TEveCaloLegoOverlay.cxx:214
 TEveCaloLegoOverlay.cxx:215
 TEveCaloLegoOverlay.cxx:216
 TEveCaloLegoOverlay.cxx:217
 TEveCaloLegoOverlay.cxx:218
 TEveCaloLegoOverlay.cxx:219
 TEveCaloLegoOverlay.cxx:220
 TEveCaloLegoOverlay.cxx:221
 TEveCaloLegoOverlay.cxx:222
 TEveCaloLegoOverlay.cxx:223
 TEveCaloLegoOverlay.cxx:224
 TEveCaloLegoOverlay.cxx:225
 TEveCaloLegoOverlay.cxx:226
 TEveCaloLegoOverlay.cxx:227
 TEveCaloLegoOverlay.cxx:228
 TEveCaloLegoOverlay.cxx:229
 TEveCaloLegoOverlay.cxx:230
 TEveCaloLegoOverlay.cxx:231
 TEveCaloLegoOverlay.cxx:232
 TEveCaloLegoOverlay.cxx:233
 TEveCaloLegoOverlay.cxx:234
 TEveCaloLegoOverlay.cxx:235
 TEveCaloLegoOverlay.cxx:236
 TEveCaloLegoOverlay.cxx:237
 TEveCaloLegoOverlay.cxx:238
 TEveCaloLegoOverlay.cxx:239
 TEveCaloLegoOverlay.cxx:240
 TEveCaloLegoOverlay.cxx:241
 TEveCaloLegoOverlay.cxx:242
 TEveCaloLegoOverlay.cxx:243
 TEveCaloLegoOverlay.cxx:244
 TEveCaloLegoOverlay.cxx:245
 TEveCaloLegoOverlay.cxx:246
 TEveCaloLegoOverlay.cxx:247
 TEveCaloLegoOverlay.cxx:248
 TEveCaloLegoOverlay.cxx:249
 TEveCaloLegoOverlay.cxx:250
 TEveCaloLegoOverlay.cxx:251
 TEveCaloLegoOverlay.cxx:252
 TEveCaloLegoOverlay.cxx:253
 TEveCaloLegoOverlay.cxx:254
 TEveCaloLegoOverlay.cxx:255
 TEveCaloLegoOverlay.cxx:256
 TEveCaloLegoOverlay.cxx:257
 TEveCaloLegoOverlay.cxx:258
 TEveCaloLegoOverlay.cxx:259
 TEveCaloLegoOverlay.cxx:260
 TEveCaloLegoOverlay.cxx:261
 TEveCaloLegoOverlay.cxx:262
 TEveCaloLegoOverlay.cxx:263
 TEveCaloLegoOverlay.cxx:264
 TEveCaloLegoOverlay.cxx:265
 TEveCaloLegoOverlay.cxx:266
 TEveCaloLegoOverlay.cxx:267
 TEveCaloLegoOverlay.cxx:268
 TEveCaloLegoOverlay.cxx:269
 TEveCaloLegoOverlay.cxx:270
 TEveCaloLegoOverlay.cxx:271
 TEveCaloLegoOverlay.cxx:272
 TEveCaloLegoOverlay.cxx:273
 TEveCaloLegoOverlay.cxx:274
 TEveCaloLegoOverlay.cxx:275
 TEveCaloLegoOverlay.cxx:276
 TEveCaloLegoOverlay.cxx:277
 TEveCaloLegoOverlay.cxx:278
 TEveCaloLegoOverlay.cxx:279
 TEveCaloLegoOverlay.cxx:280
 TEveCaloLegoOverlay.cxx:281
 TEveCaloLegoOverlay.cxx:282
 TEveCaloLegoOverlay.cxx:283
 TEveCaloLegoOverlay.cxx:284
 TEveCaloLegoOverlay.cxx:285
 TEveCaloLegoOverlay.cxx:286
 TEveCaloLegoOverlay.cxx:287
 TEveCaloLegoOverlay.cxx:288
 TEveCaloLegoOverlay.cxx:289
 TEveCaloLegoOverlay.cxx:290
 TEveCaloLegoOverlay.cxx:291
 TEveCaloLegoOverlay.cxx:292
 TEveCaloLegoOverlay.cxx:293
 TEveCaloLegoOverlay.cxx:294
 TEveCaloLegoOverlay.cxx:295
 TEveCaloLegoOverlay.cxx:296
 TEveCaloLegoOverlay.cxx:297
 TEveCaloLegoOverlay.cxx:298
 TEveCaloLegoOverlay.cxx:299
 TEveCaloLegoOverlay.cxx:300
 TEveCaloLegoOverlay.cxx:301
 TEveCaloLegoOverlay.cxx:302
 TEveCaloLegoOverlay.cxx:303
 TEveCaloLegoOverlay.cxx:304
 TEveCaloLegoOverlay.cxx:305
 TEveCaloLegoOverlay.cxx:306
 TEveCaloLegoOverlay.cxx:307
 TEveCaloLegoOverlay.cxx:308
 TEveCaloLegoOverlay.cxx:309
 TEveCaloLegoOverlay.cxx:310
 TEveCaloLegoOverlay.cxx:311
 TEveCaloLegoOverlay.cxx:312
 TEveCaloLegoOverlay.cxx:313
 TEveCaloLegoOverlay.cxx:314
 TEveCaloLegoOverlay.cxx:315
 TEveCaloLegoOverlay.cxx:316
 TEveCaloLegoOverlay.cxx:317
 TEveCaloLegoOverlay.cxx:318
 TEveCaloLegoOverlay.cxx:319
 TEveCaloLegoOverlay.cxx:320
 TEveCaloLegoOverlay.cxx:321
 TEveCaloLegoOverlay.cxx:322
 TEveCaloLegoOverlay.cxx:323
 TEveCaloLegoOverlay.cxx:324
 TEveCaloLegoOverlay.cxx:325
 TEveCaloLegoOverlay.cxx:326
 TEveCaloLegoOverlay.cxx:327
 TEveCaloLegoOverlay.cxx:328
 TEveCaloLegoOverlay.cxx:329
 TEveCaloLegoOverlay.cxx:330
 TEveCaloLegoOverlay.cxx:331
 TEveCaloLegoOverlay.cxx:332
 TEveCaloLegoOverlay.cxx:333
 TEveCaloLegoOverlay.cxx:334
 TEveCaloLegoOverlay.cxx:335
 TEveCaloLegoOverlay.cxx:336
 TEveCaloLegoOverlay.cxx:337
 TEveCaloLegoOverlay.cxx:338
 TEveCaloLegoOverlay.cxx:339
 TEveCaloLegoOverlay.cxx:340
 TEveCaloLegoOverlay.cxx:341
 TEveCaloLegoOverlay.cxx:342
 TEveCaloLegoOverlay.cxx:343
 TEveCaloLegoOverlay.cxx:344
 TEveCaloLegoOverlay.cxx:345
 TEveCaloLegoOverlay.cxx:346
 TEveCaloLegoOverlay.cxx:347
 TEveCaloLegoOverlay.cxx:348
 TEveCaloLegoOverlay.cxx:349
 TEveCaloLegoOverlay.cxx:350
 TEveCaloLegoOverlay.cxx:351
 TEveCaloLegoOverlay.cxx:352
 TEveCaloLegoOverlay.cxx:353
 TEveCaloLegoOverlay.cxx:354
 TEveCaloLegoOverlay.cxx:355
 TEveCaloLegoOverlay.cxx:356
 TEveCaloLegoOverlay.cxx:357
 TEveCaloLegoOverlay.cxx:358
 TEveCaloLegoOverlay.cxx:359
 TEveCaloLegoOverlay.cxx:360
 TEveCaloLegoOverlay.cxx:361
 TEveCaloLegoOverlay.cxx:362
 TEveCaloLegoOverlay.cxx:363
 TEveCaloLegoOverlay.cxx:364
 TEveCaloLegoOverlay.cxx:365
 TEveCaloLegoOverlay.cxx:366
 TEveCaloLegoOverlay.cxx:367
 TEveCaloLegoOverlay.cxx:368
 TEveCaloLegoOverlay.cxx:369
 TEveCaloLegoOverlay.cxx:370
 TEveCaloLegoOverlay.cxx:371
 TEveCaloLegoOverlay.cxx:372
 TEveCaloLegoOverlay.cxx:373
 TEveCaloLegoOverlay.cxx:374
 TEveCaloLegoOverlay.cxx:375
 TEveCaloLegoOverlay.cxx:376
 TEveCaloLegoOverlay.cxx:377
 TEveCaloLegoOverlay.cxx:378
 TEveCaloLegoOverlay.cxx:379
 TEveCaloLegoOverlay.cxx:380
 TEveCaloLegoOverlay.cxx:381
 TEveCaloLegoOverlay.cxx:382
 TEveCaloLegoOverlay.cxx:383
 TEveCaloLegoOverlay.cxx:384
 TEveCaloLegoOverlay.cxx:385
 TEveCaloLegoOverlay.cxx:386
 TEveCaloLegoOverlay.cxx:387
 TEveCaloLegoOverlay.cxx:388
 TEveCaloLegoOverlay.cxx:389
 TEveCaloLegoOverlay.cxx:390
 TEveCaloLegoOverlay.cxx:391
 TEveCaloLegoOverlay.cxx:392
 TEveCaloLegoOverlay.cxx:393
 TEveCaloLegoOverlay.cxx:394
 TEveCaloLegoOverlay.cxx:395
 TEveCaloLegoOverlay.cxx:396
 TEveCaloLegoOverlay.cxx:397
 TEveCaloLegoOverlay.cxx:398
 TEveCaloLegoOverlay.cxx:399
 TEveCaloLegoOverlay.cxx:400
 TEveCaloLegoOverlay.cxx:401
 TEveCaloLegoOverlay.cxx:402
 TEveCaloLegoOverlay.cxx:403
 TEveCaloLegoOverlay.cxx:404
 TEveCaloLegoOverlay.cxx:405
 TEveCaloLegoOverlay.cxx:406
 TEveCaloLegoOverlay.cxx:407
 TEveCaloLegoOverlay.cxx:408
 TEveCaloLegoOverlay.cxx:409
 TEveCaloLegoOverlay.cxx:410
 TEveCaloLegoOverlay.cxx:411
 TEveCaloLegoOverlay.cxx:412
 TEveCaloLegoOverlay.cxx:413
 TEveCaloLegoOverlay.cxx:414
 TEveCaloLegoOverlay.cxx:415
 TEveCaloLegoOverlay.cxx:416
 TEveCaloLegoOverlay.cxx:417
 TEveCaloLegoOverlay.cxx:418
 TEveCaloLegoOverlay.cxx:419
 TEveCaloLegoOverlay.cxx:420
 TEveCaloLegoOverlay.cxx:421
 TEveCaloLegoOverlay.cxx:422
 TEveCaloLegoOverlay.cxx:423
 TEveCaloLegoOverlay.cxx:424
 TEveCaloLegoOverlay.cxx:425
 TEveCaloLegoOverlay.cxx:426
 TEveCaloLegoOverlay.cxx:427
 TEveCaloLegoOverlay.cxx:428
 TEveCaloLegoOverlay.cxx:429
 TEveCaloLegoOverlay.cxx:430
 TEveCaloLegoOverlay.cxx:431
 TEveCaloLegoOverlay.cxx:432
 TEveCaloLegoOverlay.cxx:433
 TEveCaloLegoOverlay.cxx:434
 TEveCaloLegoOverlay.cxx:435
 TEveCaloLegoOverlay.cxx:436
 TEveCaloLegoOverlay.cxx:437
 TEveCaloLegoOverlay.cxx:438
 TEveCaloLegoOverlay.cxx:439
 TEveCaloLegoOverlay.cxx:440
 TEveCaloLegoOverlay.cxx:441
 TEveCaloLegoOverlay.cxx:442
 TEveCaloLegoOverlay.cxx:443
 TEveCaloLegoOverlay.cxx:444
 TEveCaloLegoOverlay.cxx:445
 TEveCaloLegoOverlay.cxx:446
 TEveCaloLegoOverlay.cxx:447
 TEveCaloLegoOverlay.cxx:448
 TEveCaloLegoOverlay.cxx:449
 TEveCaloLegoOverlay.cxx:450
 TEveCaloLegoOverlay.cxx:451
 TEveCaloLegoOverlay.cxx:452
 TEveCaloLegoOverlay.cxx:453
 TEveCaloLegoOverlay.cxx:454
 TEveCaloLegoOverlay.cxx:455
 TEveCaloLegoOverlay.cxx:456
 TEveCaloLegoOverlay.cxx:457
 TEveCaloLegoOverlay.cxx:458
 TEveCaloLegoOverlay.cxx:459
 TEveCaloLegoOverlay.cxx:460
 TEveCaloLegoOverlay.cxx:461
 TEveCaloLegoOverlay.cxx:462
 TEveCaloLegoOverlay.cxx:463
 TEveCaloLegoOverlay.cxx:464
 TEveCaloLegoOverlay.cxx:465
 TEveCaloLegoOverlay.cxx:466
 TEveCaloLegoOverlay.cxx:467
 TEveCaloLegoOverlay.cxx:468
 TEveCaloLegoOverlay.cxx:469
 TEveCaloLegoOverlay.cxx:470
 TEveCaloLegoOverlay.cxx:471
 TEveCaloLegoOverlay.cxx:472
 TEveCaloLegoOverlay.cxx:473
 TEveCaloLegoOverlay.cxx:474
 TEveCaloLegoOverlay.cxx:475
 TEveCaloLegoOverlay.cxx:476
 TEveCaloLegoOverlay.cxx:477
 TEveCaloLegoOverlay.cxx:478
 TEveCaloLegoOverlay.cxx:479
 TEveCaloLegoOverlay.cxx:480
 TEveCaloLegoOverlay.cxx:481
 TEveCaloLegoOverlay.cxx:482
 TEveCaloLegoOverlay.cxx:483
 TEveCaloLegoOverlay.cxx:484
 TEveCaloLegoOverlay.cxx:485
 TEveCaloLegoOverlay.cxx:486
 TEveCaloLegoOverlay.cxx:487
 TEveCaloLegoOverlay.cxx:488
 TEveCaloLegoOverlay.cxx:489
 TEveCaloLegoOverlay.cxx:490
 TEveCaloLegoOverlay.cxx:491
 TEveCaloLegoOverlay.cxx:492
 TEveCaloLegoOverlay.cxx:493
 TEveCaloLegoOverlay.cxx:494
 TEveCaloLegoOverlay.cxx:495
 TEveCaloLegoOverlay.cxx:496
 TEveCaloLegoOverlay.cxx:497
 TEveCaloLegoOverlay.cxx:498
 TEveCaloLegoOverlay.cxx:499
 TEveCaloLegoOverlay.cxx:500
 TEveCaloLegoOverlay.cxx:501
 TEveCaloLegoOverlay.cxx:502
 TEveCaloLegoOverlay.cxx:503
 TEveCaloLegoOverlay.cxx:504
 TEveCaloLegoOverlay.cxx:505
 TEveCaloLegoOverlay.cxx:506
 TEveCaloLegoOverlay.cxx:507
 TEveCaloLegoOverlay.cxx:508
 TEveCaloLegoOverlay.cxx:509
 TEveCaloLegoOverlay.cxx:510
 TEveCaloLegoOverlay.cxx:511
 TEveCaloLegoOverlay.cxx:512
 TEveCaloLegoOverlay.cxx:513
 TEveCaloLegoOverlay.cxx:514
 TEveCaloLegoOverlay.cxx:515
 TEveCaloLegoOverlay.cxx:516
 TEveCaloLegoOverlay.cxx:517
 TEveCaloLegoOverlay.cxx:518
 TEveCaloLegoOverlay.cxx:519
 TEveCaloLegoOverlay.cxx:520
 TEveCaloLegoOverlay.cxx:521
 TEveCaloLegoOverlay.cxx:522
 TEveCaloLegoOverlay.cxx:523
 TEveCaloLegoOverlay.cxx:524
 TEveCaloLegoOverlay.cxx:525
 TEveCaloLegoOverlay.cxx:526
 TEveCaloLegoOverlay.cxx:527
 TEveCaloLegoOverlay.cxx:528
 TEveCaloLegoOverlay.cxx:529
 TEveCaloLegoOverlay.cxx:530
 TEveCaloLegoOverlay.cxx:531
 TEveCaloLegoOverlay.cxx:532
 TEveCaloLegoOverlay.cxx:533
 TEveCaloLegoOverlay.cxx:534
 TEveCaloLegoOverlay.cxx:535
 TEveCaloLegoOverlay.cxx:536
 TEveCaloLegoOverlay.cxx:537
 TEveCaloLegoOverlay.cxx:538
 TEveCaloLegoOverlay.cxx:539
 TEveCaloLegoOverlay.cxx:540
 TEveCaloLegoOverlay.cxx:541
 TEveCaloLegoOverlay.cxx:542
 TEveCaloLegoOverlay.cxx:543
 TEveCaloLegoOverlay.cxx:544
 TEveCaloLegoOverlay.cxx:545
 TEveCaloLegoOverlay.cxx:546
 TEveCaloLegoOverlay.cxx:547
 TEveCaloLegoOverlay.cxx:548
 TEveCaloLegoOverlay.cxx:549
 TEveCaloLegoOverlay.cxx:550
 TEveCaloLegoOverlay.cxx:551
 TEveCaloLegoOverlay.cxx:552
 TEveCaloLegoOverlay.cxx:553
 TEveCaloLegoOverlay.cxx:554
 TEveCaloLegoOverlay.cxx:555
 TEveCaloLegoOverlay.cxx:556
 TEveCaloLegoOverlay.cxx:557
 TEveCaloLegoOverlay.cxx:558
 TEveCaloLegoOverlay.cxx:559
 TEveCaloLegoOverlay.cxx:560
 TEveCaloLegoOverlay.cxx:561
 TEveCaloLegoOverlay.cxx:562
 TEveCaloLegoOverlay.cxx:563
 TEveCaloLegoOverlay.cxx:564
 TEveCaloLegoOverlay.cxx:565
 TEveCaloLegoOverlay.cxx:566
 TEveCaloLegoOverlay.cxx:567
 TEveCaloLegoOverlay.cxx:568
 TEveCaloLegoOverlay.cxx:569
 TEveCaloLegoOverlay.cxx:570
 TEveCaloLegoOverlay.cxx:571
 TEveCaloLegoOverlay.cxx:572
 TEveCaloLegoOverlay.cxx:573
 TEveCaloLegoOverlay.cxx:574
 TEveCaloLegoOverlay.cxx:575
 TEveCaloLegoOverlay.cxx:576
 TEveCaloLegoOverlay.cxx:577
 TEveCaloLegoOverlay.cxx:578
 TEveCaloLegoOverlay.cxx:579
 TEveCaloLegoOverlay.cxx:580
 TEveCaloLegoOverlay.cxx:581
 TEveCaloLegoOverlay.cxx:582
 TEveCaloLegoOverlay.cxx:583
 TEveCaloLegoOverlay.cxx:584
 TEveCaloLegoOverlay.cxx:585
 TEveCaloLegoOverlay.cxx:586
 TEveCaloLegoOverlay.cxx:587
 TEveCaloLegoOverlay.cxx:588
 TEveCaloLegoOverlay.cxx:589
 TEveCaloLegoOverlay.cxx:590
 TEveCaloLegoOverlay.cxx:591
 TEveCaloLegoOverlay.cxx:592
 TEveCaloLegoOverlay.cxx:593
 TEveCaloLegoOverlay.cxx:594
 TEveCaloLegoOverlay.cxx:595
 TEveCaloLegoOverlay.cxx:596
 TEveCaloLegoOverlay.cxx:597
 TEveCaloLegoOverlay.cxx:598
 TEveCaloLegoOverlay.cxx:599
 TEveCaloLegoOverlay.cxx:600
 TEveCaloLegoOverlay.cxx:601
 TEveCaloLegoOverlay.cxx:602
 TEveCaloLegoOverlay.cxx:603
 TEveCaloLegoOverlay.cxx:604
 TEveCaloLegoOverlay.cxx:605
 TEveCaloLegoOverlay.cxx:606
 TEveCaloLegoOverlay.cxx:607
 TEveCaloLegoOverlay.cxx:608
 TEveCaloLegoOverlay.cxx:609
 TEveCaloLegoOverlay.cxx:610
 TEveCaloLegoOverlay.cxx:611
 TEveCaloLegoOverlay.cxx:612
 TEveCaloLegoOverlay.cxx:613
 TEveCaloLegoOverlay.cxx:614
 TEveCaloLegoOverlay.cxx:615
 TEveCaloLegoOverlay.cxx:616
 TEveCaloLegoOverlay.cxx:617
 TEveCaloLegoOverlay.cxx:618
 TEveCaloLegoOverlay.cxx:619
 TEveCaloLegoOverlay.cxx:620
 TEveCaloLegoOverlay.cxx:621
 TEveCaloLegoOverlay.cxx:622
 TEveCaloLegoOverlay.cxx:623
 TEveCaloLegoOverlay.cxx:624
 TEveCaloLegoOverlay.cxx:625
 TEveCaloLegoOverlay.cxx:626
 TEveCaloLegoOverlay.cxx:627
 TEveCaloLegoOverlay.cxx:628
 TEveCaloLegoOverlay.cxx:629
 TEveCaloLegoOverlay.cxx:630
 TEveCaloLegoOverlay.cxx:631
 TEveCaloLegoOverlay.cxx:632
 TEveCaloLegoOverlay.cxx:633
 TEveCaloLegoOverlay.cxx:634
 TEveCaloLegoOverlay.cxx:635
 TEveCaloLegoOverlay.cxx:636
 TEveCaloLegoOverlay.cxx:637
 TEveCaloLegoOverlay.cxx:638
 TEveCaloLegoOverlay.cxx:639
 TEveCaloLegoOverlay.cxx:640
 TEveCaloLegoOverlay.cxx:641
 TEveCaloLegoOverlay.cxx:642
 TEveCaloLegoOverlay.cxx:643
 TEveCaloLegoOverlay.cxx:644
 TEveCaloLegoOverlay.cxx:645
 TEveCaloLegoOverlay.cxx:646
 TEveCaloLegoOverlay.cxx:647
 TEveCaloLegoOverlay.cxx:648
 TEveCaloLegoOverlay.cxx:649
 TEveCaloLegoOverlay.cxx:650
 TEveCaloLegoOverlay.cxx:651
 TEveCaloLegoOverlay.cxx:652
 TEveCaloLegoOverlay.cxx:653
 TEveCaloLegoOverlay.cxx:654
 TEveCaloLegoOverlay.cxx:655
 TEveCaloLegoOverlay.cxx:656
 TEveCaloLegoOverlay.cxx:657
 TEveCaloLegoOverlay.cxx:658
 TEveCaloLegoOverlay.cxx:659
 TEveCaloLegoOverlay.cxx:660
 TEveCaloLegoOverlay.cxx:661
 TEveCaloLegoOverlay.cxx:662
 TEveCaloLegoOverlay.cxx:663
 TEveCaloLegoOverlay.cxx:664
 TEveCaloLegoOverlay.cxx:665
 TEveCaloLegoOverlay.cxx:666
 TEveCaloLegoOverlay.cxx:667
 TEveCaloLegoOverlay.cxx:668
 TEveCaloLegoOverlay.cxx:669
 TEveCaloLegoOverlay.cxx:670
 TEveCaloLegoOverlay.cxx:671
 TEveCaloLegoOverlay.cxx:672
 TEveCaloLegoOverlay.cxx:673
 TEveCaloLegoOverlay.cxx:674
 TEveCaloLegoOverlay.cxx:675
 TEveCaloLegoOverlay.cxx:676
 TEveCaloLegoOverlay.cxx:677
 TEveCaloLegoOverlay.cxx:678
 TEveCaloLegoOverlay.cxx:679
 TEveCaloLegoOverlay.cxx:680
 TEveCaloLegoOverlay.cxx:681
 TEveCaloLegoOverlay.cxx:682
 TEveCaloLegoOverlay.cxx:683
 TEveCaloLegoOverlay.cxx:684
 TEveCaloLegoOverlay.cxx:685
 TEveCaloLegoOverlay.cxx:686
 TEveCaloLegoOverlay.cxx:687
 TEveCaloLegoOverlay.cxx:688
 TEveCaloLegoOverlay.cxx:689
 TEveCaloLegoOverlay.cxx:690
 TEveCaloLegoOverlay.cxx:691
 TEveCaloLegoOverlay.cxx:692
 TEveCaloLegoOverlay.cxx:693
 TEveCaloLegoOverlay.cxx:694
 TEveCaloLegoOverlay.cxx:695
 TEveCaloLegoOverlay.cxx:696
 TEveCaloLegoOverlay.cxx:697
 TEveCaloLegoOverlay.cxx:698
 TEveCaloLegoOverlay.cxx:699
 TEveCaloLegoOverlay.cxx:700
 TEveCaloLegoOverlay.cxx:701
 TEveCaloLegoOverlay.cxx:702
 TEveCaloLegoOverlay.cxx:703
 TEveCaloLegoOverlay.cxx:704
 TEveCaloLegoOverlay.cxx:705
 TEveCaloLegoOverlay.cxx:706
 TEveCaloLegoOverlay.cxx:707
 TEveCaloLegoOverlay.cxx:708
 TEveCaloLegoOverlay.cxx:709
 TEveCaloLegoOverlay.cxx:710
 TEveCaloLegoOverlay.cxx:711