]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/Alieve/TPCSector2D.cxx
Remove for merge.
[u/mrichter/AliRoot.git] / EVE / Alieve / TPCSector2D.cxx
CommitLineData
b56d8877 1// $Header$
2
915dabe1 3#include "TPCSector2D.h"
5a5a1232 4
915dabe1 5#include <Alieve/TPCData.h>
6#include <Alieve/TPCSectorData.h>
7
8#include <AliTPCParam.h>
5a5a1232 9
10using namespace Reve;
11using namespace Alieve;
12using namespace std;
13
2aef44c1 14ClassImp(TPCSector2D)
5a5a1232 15
16/**************************************************************************/
17
915dabe1 18void TPCSector2D::Init()
5a5a1232 19{
915dabe1 20 fTPCData = 0;
5a5a1232 21
915dabe1 22 fSectorID = 0;
b56d8877 23 fShowMax = kTRUE;
24 fAverage = kFALSE;
5a5a1232 25 fMinTime = 0;
b56d8877 26 fMaxTime = 450;
27 fThreshold = 5;
5a5a1232 28 fMaxVal = 80;
915dabe1 29
b56d8877 30 fRnrInn = kTRUE;
31 fRnrOut1 = kTRUE;
32 fRnrOut2 = kTRUE;
33
34 fRnrFrame = kTRUE;
35 fUseTexture = kTRUE;
915dabe1 36
b56d8877 37 fTrans = kFALSE;
5a5a1232 38}
39
915dabe1 40TPCSector2D::~TPCSector2D()
5a5a1232 41{
915dabe1 42 if(fTPCData) fTPCData->DecRefCount();
5a5a1232 43}
44
45/**************************************************************************/
46
915dabe1 47void TPCSector2D::SetDataSource(TPCData* data)
5a5a1232 48{
915dabe1 49 if(data == fTPCData) return;
50 if(fTPCData) fTPCData->DecRefCount();
51 fTPCData = data;
52 if(fTPCData) fTPCData->IncRefCount();
53 ++fRTS;
5a5a1232 54}
55
915dabe1 56void TPCSector2D::SetSectorID(Int_t segment)
5a5a1232 57{
58 if(segment < 0 ) segment = 0;
915dabe1 59 if(segment > 35) segment = 35;
60 fSectorID = segment;
61 SetName(Form("TPCSector2D %d", fSectorID));
5a5a1232 62 ++fRTS;
63}
64
65/**************************************************************************/
66
915dabe1 67void TPCSector2D::ComputeBBox()
5a5a1232 68{
915dabe1 69 const TPCSectorData::SegmentInfo& iSeg = TPCSectorData::GetInnSeg();
70 const TPCSectorData::SegmentInfo& o2Seg = TPCSectorData::GetOut2Seg();
5a5a1232 71
72 bbox_init();
915dabe1 73 Float_t w = o2Seg.GetNMaxPads()*o2Seg.GetPadWidth()/2;
74 fBBox[0] = -w;
75 fBBox[1] = w;
76 fBBox[2] = iSeg.GetRLow();
77 fBBox[3] = o2Seg.GetRLow() + o2Seg.GetNRows()*o2Seg.GetPadHeight();
78 fBBox[4] = -0.5; // Fake z-width to 1 cm.
79 fBBox[5] = 0.5;
5a5a1232 80}
81
82/**************************************************************************/
83
915dabe1 84void TPCSector2D::SetTrans(Bool_t trans)
5a5a1232 85{
86 fTrans = trans;
87 if(fTrans) {
88 for (Int_t k = 0; k< 16; k++)
89 fMatrix[k] = 0.;
90
915dabe1 91 Float_t c = TMath::Cos((fSectorID + 0.5)*20*TMath::Pi()/180 - TMath::Pi()/2);
92 Float_t s = TMath::Sin((fSectorID + 0.5)*20*TMath::Pi()/180 - TMath::Pi()/2);
93 Float_t z = TPCSectorData::GetParam().GetZLength();
94 if(fSectorID >= 18) z = -z;
5a5a1232 95
915dabe1 96 // column major
97 fMatrix[0] = -c;
98 fMatrix[1] = -s;
99 fMatrix[4] = -s;
100 fMatrix[5] = c;
5a5a1232 101 fMatrix[10] = -1;
915dabe1 102 fMatrix[14] = z;
103 fMatrix[15] = 1;
5a5a1232 104 }
105}
106
107/**************************************************************************/
915dabe1 108
109void TPCSector2D::Paint(Option_t* )
5a5a1232 110{
111 TBuffer3D buffer(TBuffer3DTypes::kGeneric);
112
113 // Section kCore
114 buffer.fID = this;
115 buffer.fColor = 1;
116 buffer.fTransparency = 0;
117 buffer.fLocalFrame = fTrans;
5a5a1232 118 if (fTrans)
119 memcpy(buffer.fLocalMaster, fMatrix, 16*sizeof(Double_t));
120 buffer.SetSectionsValid(TBuffer3D::kCore);
121
5a5a1232 122 Int_t reqSections = gPad->GetViewer3D()->AddObject(buffer);
123 if (reqSections == TBuffer3D::kNone) {
915dabe1 124 // printf("TPCSector2D::Paint viewer was happy with Core buff3d.\n");
5a5a1232 125 return;
126 }
915dabe1 127
128 printf("TPCSector2D::Paint only GL supported.\n");
5a5a1232 129 return;
915dabe1 130
5a5a1232 131 /*
132 if (reqSections & TBuffer3D::kRawSizes) {
133 Int_t nbPnts = fQuads.size()*4;
134 Int_t nbSegs = nbPnts;
135 if (!buffer.SetRawSizes(nbPnts, 3*nbPnts, nbSegs, 3*nbSegs, fQuads.size(), fQuads.size()*6)) {
136 return;
137 }
138 buffer.SetSectionsValid(TBuffer3D::kRawSizes);
139 }
140
141 if ((reqSections & TBuffer3D::kRaw) && buffer.SectionsValid(TBuffer3D::kRawSizes)) {
142 // Points
143 Int_t pidx = 0;
144 for (std::vector<Quad>::iterator i=fQuads.begin(); i!=fQuads.end(); ++i) {
145 for (Int_t k = 0; k < 12; k++ ){
146 buffer.fPnts[pidx] = (*i).vertices[k];
147 pidx++;
148 }
149 }
150
151 // Segments
152 Int_t sidx = 0;
153 for (Int_t q = 0; q < fQuads.size(); ++q) {
154 for (Int_t s = 0; s < 4; ++s ) {
155 buffer.fSegs[3*sidx ] = 4;
156 buffer.fSegs[3*sidx+1] = sidx;
157 if (s == 3)
158 buffer.fSegs[3*sidx+2] = q*4;
159 else
160 buffer.fSegs[3*sidx+2] = sidx + 1;
161 sidx ++;
162 }
163 }
164
165 // Polygons
166 for (Int_t q = 0; q < fQuads.size(); ++q) {
167 buffer.fPols[6*q] = fQuads[q].color;
168 buffer.fPols[6*q +1] = 4;
169 buffer.fPols[6*q +2] = 4*q +0;
170 buffer.fPols[6*q +3] = 4*q +1;
171 buffer.fPols[6*q +4] = 4*q +2;
172 buffer.fPols[6*q +5] = 4*q +3;
173 }
174
175 buffer.SetSectionsValid(TBuffer3D::kRaw);
176 buffer.fColor = 5;
177 }
178
179 */
180 // gPad->GetViewer3D()->AddObject(buffer);
181}