Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TEveCalo3DGL.h
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 #ifndef ROOT_TEveCalo3DGL
13 #define ROOT_TEveCalo3DGL
14 
15 #include "TGLObject.h"
16 #include "TEveCaloData.h"
17 
18 class TEveCalo3D;
19 
20 class TEveCalo3DGL : public TGLObject
21 {
22 private:
23  TEveCalo3DGL(const TEveCalo3DGL&); // Not implemented
24  TEveCalo3DGL& operator=(const TEveCalo3DGL&); // Not implemented
25 
26  void CrossProduct(const Float_t a[3], const Float_t b[3], const Float_t c[3], Float_t out[3]) const;
27 
28  void RenderBox(const Float_t pnts[8]) const;
29  void RenderGridEndCap() const;
30  void RenderGridBarrel() const;
31  void RenderGrid(TGLRnrCtx & rnrCtx) const;
32  void RenderBarrelCell(const TEveCaloData::CellGeom_t &cell, Float_t towerH, Float_t& offset) const;
33  void RenderEndCapCell(const TEveCaloData::CellGeom_t &cell, Float_t towerH, Float_t& offset) const;
34 
35  void DrawSelectedCells(TEveCaloData::vCellId_t cells) const;
36 
37 protected:
38  TEveCalo3D *fM; // Model object.
39 
40  mutable std::vector<Float_t> fOffset;
41 
42 public:
43  TEveCalo3DGL();
44  virtual ~TEveCalo3DGL() {}
45 
46  virtual Bool_t SetModel(TObject* obj, const Option_t* opt=0);
47  virtual void SetBBox();
48 
49  virtual void DirectDraw(TGLRnrCtx & rnrCtx) const;
50  virtual void DrawHighlight(TGLRnrCtx & rnrCtx, const TGLPhysicalShape* ps, Int_t lvl=-1) const;
51 
52  virtual Bool_t ShouldDLCache(const TGLRnrCtx& rnrCtx) const;
53  virtual Bool_t SupportsSecondarySelect() const { return kTRUE; }
54  virtual Bool_t AlwaysSecondarySelect() const { return kTRUE; }
55  virtual void ProcessSelection(TGLRnrCtx & rnrCtx, TGLSelectRecord & rec);
56 
57  ClassDef(TEveCalo3DGL, 0); // GL renderer class for TEveCalo.
58 };
59 
60 #endif