Added preprocessor conditionals to support ROOT > 5.11.2.
[u/mrichter/AliRoot.git] / EVE / Alieve / TPCSector2D.cxx
1 // $Header$
2
3 #include "TPCSector2D.h"
4
5 #include <Alieve/TPCData.h>
6 #include <Alieve/TPCSectorData.h>
7
8 #include <AliTPCParam.h>
9
10 #include <TBuffer3D.h>
11 #include <TBuffer3DTypes.h>
12 #include <TVirtualPad.h>
13 #include <TVirtualViewer3D.h>
14
15 using namespace Reve;
16 using namespace Alieve;
17 using namespace std;
18
19 //______________________________________________________________________
20 // TPCSector2D
21 //
22 // Displays TPC raw-data in 2D.
23 //
24 // fShowMax: true  - display maximum value for given time interval
25 //           false - display integral
26 // fAverage: only available when fShowMax = false; divide by time window width
27 //
28 // fUseTexture: use OpenGL textures to display data (fast rendering,
29 //   updates take the same time)
30 //
31
32 ClassImp(TPCSector2D)
33
34 /**************************************************************************/
35
36 TPCSector2D::TPCSector2D(const Text_t* n, const Text_t* t) :
37   TPCSectorViz(n,t),
38
39   fShowMax (kTRUE),
40   fAverage (kFALSE),
41
42   fUseTexture (kTRUE)
43 {}
44
45 TPCSector2D::~TPCSector2D()
46 {}
47
48 /**************************************************************************/
49
50 void TPCSector2D::ComputeBBox()
51 {
52   const TPCSectorData::SegmentInfo&  iSeg = TPCSectorData::GetInnSeg();
53   const TPCSectorData::SegmentInfo& o2Seg = TPCSectorData::GetOut2Seg();
54
55 #if ROOT_VERSION_CODE <= ROOT_VERSION(5,11,2)
56   bbox_init();
57 #else
58   BBoxInit();
59 #endif
60   Float_t w = o2Seg.GetNMaxPads()*o2Seg.GetPadWidth()/2;
61   fBBox[0] = -w;
62   fBBox[1] =  w;
63   fBBox[2] =  iSeg.GetRLow();
64   fBBox[3] =  o2Seg.GetRLow() + o2Seg.GetNRows()*o2Seg.GetPadHeight();
65   fBBox[4] = -0.5; // Fake z-width to 1 cm.
66   fBBox[5] =  0.5;
67 }
68
69 /**************************************************************************/
70
71 void TPCSector2D::Paint(Option_t* )
72 {
73   if(fRnrElement == kFALSE)
74     return;
75
76   TBuffer3D buffer(TBuffer3DTypes::kGeneric);
77
78   // Section kCore
79   buffer.fID           = this;
80   buffer.fColor        = 1;
81   buffer.fTransparency = 0;
82   buffer.fLocalFrame   = fTrans; 
83   if (fTrans)
84     memcpy(buffer.fLocalMaster, fMatrix, 16*sizeof(Double_t));
85   buffer.SetSectionsValid(TBuffer3D::kCore);
86    
87   Int_t reqSections = gPad->GetViewer3D()->AddObject(buffer);
88   if (reqSections == TBuffer3D::kNone) {
89     // printf("TPCSector2D::Paint viewer was happy with Core buff3d.\n");
90     return;
91   }
92
93   printf("TPCSector2D::Paint only GL supported.\n");
94   return;
95
96   /*
97     if (reqSections & TBuffer3D::kRawSizes) {
98     Int_t nbPnts = fQuads.size()*4;
99     Int_t nbSegs = nbPnts;
100     if (!buffer.SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, fQuads.size(), fQuads.size()*6)) {
101     return;
102     }
103     buffer.SetSectionsValid(TBuffer3D::kRawSizes); 
104     }
105
106     if ((reqSections & TBuffer3D::kRaw) && buffer.SectionsValid(TBuffer3D::kRawSizes)) {
107     // Points
108     Int_t pidx = 0;
109     for (std::vector<Quad>::iterator i=fQuads.begin(); i!=fQuads.end(); ++i) {
110     for (Int_t k = 0; k < 12; k++ ){
111     buffer.fPnts[pidx] = (*i).vertices[k]; 
112     pidx++;
113     }
114     }
115
116     // Segments
117     Int_t sidx = 0;
118     for (Int_t q = 0; q < fQuads.size(); ++q) {
119     for (Int_t s = 0; s < 4; ++s ) {
120     buffer.fSegs[3*sidx ] = 4; 
121     buffer.fSegs[3*sidx+1] = sidx;
122     if (s == 3)
123     buffer.fSegs[3*sidx+2] = q*4;
124     else
125     buffer.fSegs[3*sidx+2] = sidx + 1;
126     sidx ++;
127     }
128     }
129
130     // Polygons
131     for (Int_t q = 0; q < fQuads.size(); ++q) {
132     buffer.fPols[6*q] = fQuads[q].color;   
133     buffer.fPols[6*q +1] = 4;
134     buffer.fPols[6*q +2] = 4*q +0;
135     buffer.fPols[6*q +3] = 4*q +1;
136     buffer.fPols[6*q +4] = 4*q +2;
137     buffer.fPols[6*q +5] = 4*q +3;
138     }
139
140     buffer.SetSectionsValid(TBuffer3D::kRaw);
141     buffer.fColor = 5;
142     }
143    
144   */
145   // gPad->GetViewer3D()->AddObject(buffer);
146 }