ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveJetPlaneGL.h"
#include "AliEveJetPlane.h"

#include <TGLRnrCtx.h>
#include <TGLSelectRecord.h>
#include <TGLIncludes.h>

#include "TGLUtil.h"
#include "TGLAxis.h"

#include <TColor.h>
#include <TStyle.h>
#include <TROOT.h>

//==============================================================================
//==============================================================================
// AliEveJetPlaneGL
//==============================================================================

//______________________________________________________________________________
//
// GL renderer for AliEveJetPlane.

ClassImp(AliEveJetPlaneGL)

AliEveJetPlaneGL::AliEveJetPlaneGL() : TGLObject(), fM(0)
{
  // Constructor.

  fDLCache = kFALSE; // Disable display list -- axis pain.
}

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

Bool_t AliEveJetPlaneGL::SetModel(TObject* obj, const Option_t* /*opt*/)
{
  // Set model object.

  if (SetModelCheckClass(obj, AliEveJetPlane::Class())) {
    fM = dynamic_cast<AliEveJetPlane*>(obj);
    return kTRUE;
  }
  return kFALSE;
}

void AliEveJetPlaneGL::SetBBox()
{
  // Set bounding box.

  SetAxisAlignedBBox(((AliEveJetPlane*)fExternalObj)->AssertBBox());
}

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

void AliEveJetPlaneGL::DirectDraw(TGLRnrCtx& rnrCtx) const
{
  // Render the object.

  Float_t minEta = (fM->fMinEta)*(fM->fEtaScale);
  Float_t maxEta = (fM->fMaxEta)*(fM->fEtaScale);
  Float_t minPhi = (fM->fMinPhi)*(fM->fPhiScale) - 350;
  Float_t maxPhi = (fM->fMaxPhi)*(fM->fPhiScale) - 350;
  Float_t phiCoord, etaCoord, dPhi, dEta;

  // Show frame for Eta-Phi coordinates

  glBegin(GL_LINE_LOOP);
  glVertex3f(minEta, minPhi, 0);
  glVertex3f(maxEta, minPhi, 0);
  glVertex3f(maxEta, maxPhi, 0);
  glVertex3f(minEta, maxPhi, 0);
  glEnd();

  if (rnrCtx.Selection() == kFALSE && rnrCtx.Highlight() == kFALSE)
  {

    // Show grid in Eta-Phi coordinates

    dPhi = (maxPhi-minPhi)/(fM->fNPhiDiv - 1);
    dEta = (maxEta-minEta)/(fM->fNEtaDiv - 1);

    for (Int_t count = 1; count < fM->fNPhiDiv-1; ++count)
    {
      phiCoord = minPhi + count*dPhi;
      glBegin(GL_LINES);
      glVertex3f( minEta, phiCoord, 0);
      glVertex3f( maxEta, phiCoord, 0);
      glEnd();
    }

    for (Int_t count = 1; count < fM->fNEtaDiv-1; ++count)
    {
      etaCoord = minEta + count*dEta;
      glBegin(GL_LINES);
      glVertex3f(etaCoord, minPhi, 0);
      glVertex3f(etaCoord, maxPhi, 0);
      glEnd();
    }

    // Show axis tick marks and labels

    {
      TGLCapabilitySwitch lightsOff(GL_LIGHTING, false);

      TGLAxis ap;
      ap.SetLineColor(fM->fGridColor);
      ap.SetTextColor(fM->fGridColor);
      TGLVector3 start, end;

      start.Set(minEta, minPhi, 0);
      end.Set(maxEta, minPhi, 0);
      ap.PaintGLAxis(start.CArr(), end.CArr(), fM->fMinEta, fM->fMaxEta, 205);

      start.Set(maxEta, minPhi, 0);
      end.Set(maxEta, maxPhi, 0);
      ap.PaintGLAxis(start.CArr(), end.CArr(), fM->fMinPhi, fM->fMaxPhi, 205);
    }

  }
}
 AliEveJetPlaneGL.cxx:1
 AliEveJetPlaneGL.cxx:2
 AliEveJetPlaneGL.cxx:3
 AliEveJetPlaneGL.cxx:4
 AliEveJetPlaneGL.cxx:5
 AliEveJetPlaneGL.cxx:6
 AliEveJetPlaneGL.cxx:7
 AliEveJetPlaneGL.cxx:8
 AliEveJetPlaneGL.cxx:9
 AliEveJetPlaneGL.cxx:10
 AliEveJetPlaneGL.cxx:11
 AliEveJetPlaneGL.cxx:12
 AliEveJetPlaneGL.cxx:13
 AliEveJetPlaneGL.cxx:14
 AliEveJetPlaneGL.cxx:15
 AliEveJetPlaneGL.cxx:16
 AliEveJetPlaneGL.cxx:17
 AliEveJetPlaneGL.cxx:18
 AliEveJetPlaneGL.cxx:19
 AliEveJetPlaneGL.cxx:20
 AliEveJetPlaneGL.cxx:21
 AliEveJetPlaneGL.cxx:22
 AliEveJetPlaneGL.cxx:23
 AliEveJetPlaneGL.cxx:24
 AliEveJetPlaneGL.cxx:25
 AliEveJetPlaneGL.cxx:26
 AliEveJetPlaneGL.cxx:27
 AliEveJetPlaneGL.cxx:28
 AliEveJetPlaneGL.cxx:29
 AliEveJetPlaneGL.cxx:30
 AliEveJetPlaneGL.cxx:31
 AliEveJetPlaneGL.cxx:32
 AliEveJetPlaneGL.cxx:33
 AliEveJetPlaneGL.cxx:34
 AliEveJetPlaneGL.cxx:35
 AliEveJetPlaneGL.cxx:36
 AliEveJetPlaneGL.cxx:37
 AliEveJetPlaneGL.cxx:38
 AliEveJetPlaneGL.cxx:39
 AliEveJetPlaneGL.cxx:40
 AliEveJetPlaneGL.cxx:41
 AliEveJetPlaneGL.cxx:42
 AliEveJetPlaneGL.cxx:43
 AliEveJetPlaneGL.cxx:44
 AliEveJetPlaneGL.cxx:45
 AliEveJetPlaneGL.cxx:46
 AliEveJetPlaneGL.cxx:47
 AliEveJetPlaneGL.cxx:48
 AliEveJetPlaneGL.cxx:49
 AliEveJetPlaneGL.cxx:50
 AliEveJetPlaneGL.cxx:51
 AliEveJetPlaneGL.cxx:52
 AliEveJetPlaneGL.cxx:53
 AliEveJetPlaneGL.cxx:54
 AliEveJetPlaneGL.cxx:55
 AliEveJetPlaneGL.cxx:56
 AliEveJetPlaneGL.cxx:57
 AliEveJetPlaneGL.cxx:58
 AliEveJetPlaneGL.cxx:59
 AliEveJetPlaneGL.cxx:60
 AliEveJetPlaneGL.cxx:61
 AliEveJetPlaneGL.cxx:62
 AliEveJetPlaneGL.cxx:63
 AliEveJetPlaneGL.cxx:64
 AliEveJetPlaneGL.cxx:65
 AliEveJetPlaneGL.cxx:66
 AliEveJetPlaneGL.cxx:67
 AliEveJetPlaneGL.cxx:68
 AliEveJetPlaneGL.cxx:69
 AliEveJetPlaneGL.cxx:70
 AliEveJetPlaneGL.cxx:71
 AliEveJetPlaneGL.cxx:72
 AliEveJetPlaneGL.cxx:73
 AliEveJetPlaneGL.cxx:74
 AliEveJetPlaneGL.cxx:75
 AliEveJetPlaneGL.cxx:76
 AliEveJetPlaneGL.cxx:77
 AliEveJetPlaneGL.cxx:78
 AliEveJetPlaneGL.cxx:79
 AliEveJetPlaneGL.cxx:80
 AliEveJetPlaneGL.cxx:81
 AliEveJetPlaneGL.cxx:82
 AliEveJetPlaneGL.cxx:83
 AliEveJetPlaneGL.cxx:84
 AliEveJetPlaneGL.cxx:85
 AliEveJetPlaneGL.cxx:86
 AliEveJetPlaneGL.cxx:87
 AliEveJetPlaneGL.cxx:88
 AliEveJetPlaneGL.cxx:89
 AliEveJetPlaneGL.cxx:90
 AliEveJetPlaneGL.cxx:91
 AliEveJetPlaneGL.cxx:92
 AliEveJetPlaneGL.cxx:93
 AliEveJetPlaneGL.cxx:94
 AliEveJetPlaneGL.cxx:95
 AliEveJetPlaneGL.cxx:96
 AliEveJetPlaneGL.cxx:97
 AliEveJetPlaneGL.cxx:98
 AliEveJetPlaneGL.cxx:99
 AliEveJetPlaneGL.cxx:100
 AliEveJetPlaneGL.cxx:101
 AliEveJetPlaneGL.cxx:102
 AliEveJetPlaneGL.cxx:103
 AliEveJetPlaneGL.cxx:104
 AliEveJetPlaneGL.cxx:105
 AliEveJetPlaneGL.cxx:106
 AliEveJetPlaneGL.cxx:107
 AliEveJetPlaneGL.cxx:108
 AliEveJetPlaneGL.cxx:109
 AliEveJetPlaneGL.cxx:110
 AliEveJetPlaneGL.cxx:111
 AliEveJetPlaneGL.cxx:112
 AliEveJetPlaneGL.cxx:113
 AliEveJetPlaneGL.cxx:114
 AliEveJetPlaneGL.cxx:115
 AliEveJetPlaneGL.cxx:116
 AliEveJetPlaneGL.cxx:117
 AliEveJetPlaneGL.cxx:118
 AliEveJetPlaneGL.cxx:119
 AliEveJetPlaneGL.cxx:120
 AliEveJetPlaneGL.cxx:121
 AliEveJetPlaneGL.cxx:122
 AliEveJetPlaneGL.cxx:123
 AliEveJetPlaneGL.cxx:124
 AliEveJetPlaneGL.cxx:125
 AliEveJetPlaneGL.cxx:126
 AliEveJetPlaneGL.cxx:127
 AliEveJetPlaneGL.cxx:128
 AliEveJetPlaneGL.cxx:129