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.                                                 *
 **************************************************************************/

#ifndef AliEveTPCSector3DGL_H
#define AliEveTPCSector3DGL_H

#include <TGLObject.h>

#include <EveDet/AliEveTPCSectorData.h>

class TEveBoxSetGL;

class AliEveTPCSector3D;

//------------------------------------------------------------------------------
// AliEveTPCSector3DGL
//
// GL renderer for AliEveTPCSector3D.
//

class AliEveTPCSector3DGL : public TGLObject
{
public:
  AliEveTPCSector3DGL();
  virtual ~AliEveTPCSector3DGL();

  virtual ELODAxes SupportedLODAxes()              const { return kLODAxesAll; }
  virtual Short_t  QuantizeShapeLOD(Short_t shapeLOD, Short_t combiLOD) const;

  virtual Bool_t SetModel(TObject* obj, const Option_t* opt=0);
  virtual void   SetBBox();

  void DrawSegmentFrame(const AliEveTPCSectorData::SegmentInfo& s,
                        Int_t botExtraPads=0, Int_t topExtraPads=0) const;

  virtual Bool_t SupportsSecondarySelect() const { return kTRUE; }
  virtual void   ProcessSelection(TGLRnrCtx & rnrCtx, TGLSelectRecord & rec);

protected:
  AliEveTPCSector3D  *fSector; // Model object.
  TEveBoxSetGL       *fBoxRnr; // Box-set GL renderer.

  mutable UInt_t      fRTS;    // Rendering time-stamp.

  virtual void DirectDraw(TGLRnrCtx & rnrCtx) const;

private:
  AliEveTPCSector3DGL(const AliEveTPCSector3DGL&);            // Not implemented
  AliEveTPCSector3DGL& operator=(const AliEveTPCSector3DGL&); // Not implemented

  ClassDef(AliEveTPCSector3DGL, 0); // GL renderer for AliEveTPCSector3D.
};

#endif
 AliEveTPCSector3DGL.h:1
 AliEveTPCSector3DGL.h:2
 AliEveTPCSector3DGL.h:3
 AliEveTPCSector3DGL.h:4
 AliEveTPCSector3DGL.h:5
 AliEveTPCSector3DGL.h:6
 AliEveTPCSector3DGL.h:7
 AliEveTPCSector3DGL.h:8
 AliEveTPCSector3DGL.h:9
 AliEveTPCSector3DGL.h:10
 AliEveTPCSector3DGL.h:11
 AliEveTPCSector3DGL.h:12
 AliEveTPCSector3DGL.h:13
 AliEveTPCSector3DGL.h:14
 AliEveTPCSector3DGL.h:15
 AliEveTPCSector3DGL.h:16
 AliEveTPCSector3DGL.h:17
 AliEveTPCSector3DGL.h:18
 AliEveTPCSector3DGL.h:19
 AliEveTPCSector3DGL.h:20
 AliEveTPCSector3DGL.h:21
 AliEveTPCSector3DGL.h:22
 AliEveTPCSector3DGL.h:23
 AliEveTPCSector3DGL.h:24
 AliEveTPCSector3DGL.h:25
 AliEveTPCSector3DGL.h:26
 AliEveTPCSector3DGL.h:27
 AliEveTPCSector3DGL.h:28
 AliEveTPCSector3DGL.h:29
 AliEveTPCSector3DGL.h:30
 AliEveTPCSector3DGL.h:31
 AliEveTPCSector3DGL.h:32
 AliEveTPCSector3DGL.h:33
 AliEveTPCSector3DGL.h:34
 AliEveTPCSector3DGL.h:35
 AliEveTPCSector3DGL.h:36
 AliEveTPCSector3DGL.h:37
 AliEveTPCSector3DGL.h:38
 AliEveTPCSector3DGL.h:39
 AliEveTPCSector3DGL.h:40
 AliEveTPCSector3DGL.h:41
 AliEveTPCSector3DGL.h:42
 AliEveTPCSector3DGL.h:43
 AliEveTPCSector3DGL.h:44
 AliEveTPCSector3DGL.h:45
 AliEveTPCSector3DGL.h:46
 AliEveTPCSector3DGL.h:47
 AliEveTPCSector3DGL.h:48
 AliEveTPCSector3DGL.h:49
 AliEveTPCSector3DGL.h:50
 AliEveTPCSector3DGL.h:51
 AliEveTPCSector3DGL.h:52
 AliEveTPCSector3DGL.h:53
 AliEveTPCSector3DGL.h:54
 AliEveTPCSector3DGL.h:55
 AliEveTPCSector3DGL.h:56
 AliEveTPCSector3DGL.h:57
 AliEveTPCSector3DGL.h:58
 AliEveTPCSector3DGL.h:59
 AliEveTPCSector3DGL.h:60