]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveDet/AliEveMUONChamberGL.cxx
fix warnings
[u/mrichter/AliRoot.git] / EVE / EveDet / AliEveMUONChamberGL.cxx
CommitLineData
d810d0de 1// $Id$
fafff680 2// Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007
d810d0de 3
4/**************************************************************************
5 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
51346b82 7 * full copyright notice. *
d810d0de 8 **************************************************************************/
37b09b91 9
d810d0de 10#include "AliEveMUONChamberGL.h"
3626c858 11
cb4245bb 12#include <EveDet/AliEveMUONChamber.h>
13#include <EveDet/AliEveMUONChamberData.h>
3626c858 14
19208112 15#include <TGLRnrCtx.h>
16#include <TGLIncludes.h>
d05591ca 17#include <TMath.h>
d810d0de 18
3626c858 19
57ffa5fb 20//______________________________________________________________________________
d810d0de 21// AliEveMUONChamberGL
3626c858 22//
23
d810d0de 24ClassImp(AliEveMUONChamberGL)
3626c858 25
57ffa5fb 26//______________________________________________________________________________
d810d0de 27AliEveMUONChamberGL::AliEveMUONChamberGL() :
3626c858 28 TGLObject(),
29 fChamber(0),
c76ea574 30 fQS1(), fQS2(),
3626c858 31 fRTS(0)
32{
33 //
34 // constructor
35 //
36
37}
38
57ffa5fb 39//______________________________________________________________________________
d810d0de 40AliEveMUONChamberGL::~AliEveMUONChamberGL()
3626c858 41{
42 //
43 // destructor
44 //
45
46}
47
57ffa5fb 48//______________________________________________________________________________
d810d0de 49Bool_t AliEveMUONChamberGL::SetModel(TObject* obj, const Option_t* /*opt*/)
3626c858 50{
51 //
52 // ...
53 //
54
d810d0de 55 if(SetModelCheckClass(obj, AliEveMUONChamber::Class())) {
51346b82 56
d810d0de 57 fChamber = (AliEveMUONChamber*) fExternalObj;
84aff7a4 58 fQS1.SetModel(&fChamber->fQuadSet1);
59 fQS2.SetModel(&fChamber->fQuadSet2);
3626c858 60 return kTRUE;
61
62 }
63
64 return kFALSE;
65
66}
67
57ffa5fb 68//______________________________________________________________________________
d810d0de 69void AliEveMUONChamberGL::SetBBox()
3626c858 70{
71 //
72 // ...
73 //
74
d810d0de 75 SetAxisAlignedBBox(((AliEveMUONChamber*)fExternalObj)->AssertBBox());
3626c858 76
77}
78
57ffa5fb 79//______________________________________________________________________________
d810d0de 80void AliEveMUONChamberGL::DirectDraw(TGLRnrCtx& rnrCtx) const
3626c858 81{
82 //
83 // Actual GL drawing.
84 //
85
86 glDisable(GL_LIGHTING);
87
88 //Double_t width = 10;
89 //glOrtho(-width,+width,-width,+width,-width,+width);
90
91 if(fRTS < fChamber->fRTS) {
92 fChamber->UpdateQuads();
93 fRTS = fChamber->fRTS;
94 }
51346b82 95
3626c858 96 Bool_t hasData = (fChamber->GetChamberData() != 0);
51346b82 97
3626c858 98 if(hasData) {
99
84aff7a4 100 DrawQuads(rnrCtx);
eadce74d 101 DrawPoints();
51346b82 102
3626c858 103 }
104
105 DrawChamberFrame();
106
107}
108
57ffa5fb 109//______________________________________________________________________________
d810d0de 110void AliEveMUONChamberGL::DrawQuads(TGLRnrCtx& rnrCtx) const
3626c858 111{
112 //
113 // draw the digits as GL_QUADS
114 //
115
116 glPushAttrib(GL_ENABLE_BIT | GL_POLYGON_BIT);
117
118 glDisable(GL_LIGHTING);
3626c858 119 glDisable(GL_CULL_FACE);
120
121 //Float_t c[4]; glGetFloatv(GL_CURRENT_COLOR, c);
122
123 glPolygonMode(GL_FRONT, GL_FILL);
124 glPolygonMode(GL_BACK, GL_LINE);
125
84aff7a4 126 fQS1.DirectDraw(rnrCtx);
3626c858 127
128 glPolygonMode(GL_FRONT, GL_LINE);
129 glPolygonMode(GL_BACK, GL_FILL);
130
84aff7a4 131 fQS2.DirectDraw(rnrCtx);
3626c858 132
133 glPopAttrib();
134
135}
136
57ffa5fb 137//______________________________________________________________________________
d810d0de 138void AliEveMUONChamberGL::DrawPoints() const
eadce74d 139{
140 //
141 // draw the clusters as GL_QUADS
142 //
143
144 Float_t x, y, z;
145
146 glDisable(GL_LIGHTING);
147 glLineWidth(1.0);
148
a15e6d7d 149 TGLUtil::Color3f(1.0,1.0,1.0);
51346b82 150
eadce74d 151 glBegin(GL_LINES);
51346b82 152
eadce74d 153 // clusters
154
155 Int_t clsSize = fChamber->fClusterSize;
156
157 if (clsSize > 1) {
158
159 for (Int_t i = 0; i < fChamber->fPointSet1.GetN(); i++) {
51346b82 160
eadce74d 161 fChamber->fPointSet1.GetPoint(i,x,y,z);
162
163 glVertex3f(x-clsSize,y+clsSize,z);
164 glVertex3f(x+clsSize,y-clsSize,z);
51346b82 165
eadce74d 166 glVertex3f(x-clsSize,y-clsSize,z);
167 glVertex3f(x+clsSize,y+clsSize,z);
51346b82 168
eadce74d 169 }
51346b82 170
eadce74d 171 }
172
173 // hits
174
175 Int_t hitSize = fChamber->fHitSize;
176
177 if (hitSize > 1) {
178
179 for (Int_t i = 0; i < fChamber->fPointSet2.GetN(); i++) {
51346b82 180
eadce74d 181 fChamber->fPointSet2.GetPoint(i,x,y,z);
51346b82 182
eadce74d 183 glVertex3f(x-hitSize,y,z);
184 glVertex3f(x+hitSize,y,z);
51346b82 185
eadce74d 186 glVertex3f(x,y-hitSize,z);
187 glVertex3f(x,y+hitSize,z);
51346b82 188
eadce74d 189 }
51346b82 190
eadce74d 191 }
192
193 glEnd();
51346b82 194
eadce74d 195}
196
57ffa5fb 197//______________________________________________________________________________
d810d0de 198void AliEveMUONChamberGL::DrawChamberFrame() const
3626c858 199{
200 //
201 // draw the chamber frame as GL_LINE_LOOP
51346b82 202 //
3626c858 203
d810d0de 204 AliEveMUONChamberData* chamberData = fChamber->GetChamberData();
3626c858 205 Int_t nDetElem = chamberData->GetNDetElem();
206 Float_t *frameCoord;
207 Float_t xOrig, yOrig, xRad, yRad, x, y, z;
208
a15e6d7d 209 TGLUtil::Color4ub(255, 0, 0, 255);
51346b82 210
3626c858 211 for (Int_t id = 0; id < nDetElem; id++) {
212
213 frameCoord = chamberData->GetFrameCoord(id);
214
215 if (fChamber->GetID() < 4) {
216
217 xOrig = frameCoord[0];
218 yOrig = frameCoord[1];
219 xRad = frameCoord[2];
220 yRad = frameCoord[3];
221 z = frameCoord[4];
51346b82 222
fafff680 223 if (fChamber->GetID() < 2) {
224 xRad += TMath::Sign(15.0,(Double_t)xRad);
225 yRad += TMath::Sign(15.0,(Double_t)yRad);
226 } else {
227 xRad += TMath::Sign( 5.0,(Double_t)xRad);
228 yRad += TMath::Sign( 5.0,(Double_t)yRad);
229 }
3626c858 230
231 glBegin(GL_LINE_LOOP);
232
233 glVertex3f(xOrig,yOrig,z);
51346b82 234
3626c858 235 Int_t nstep = 100;
236 Float_t dstep = TMath::Pi()/2.0 / (Float_t)nstep;
237 Float_t d;
238 for (Int_t istep = 0; istep < nstep; istep++) {
239
240 d = istep * dstep;
241 x = xOrig + xRad * TMath::Cos(d);
242 y = yOrig + yRad * TMath::Sin(d);
243
244 glVertex3f(x,y,z);
245
246 }
51346b82 247
3626c858 248 glVertex3f(xOrig,yOrig,z);
249
250 glEnd();
251
252 } else {
253
254 glBegin(GL_LINE_LOOP);
255 glVertex3f(frameCoord[0],frameCoord[1],frameCoord[4]);
256 glVertex3f(frameCoord[0],frameCoord[3],frameCoord[4]);
257 glVertex3f(frameCoord[2],frameCoord[3],frameCoord[4]);
258 glVertex3f(frameCoord[2],frameCoord[1],frameCoord[4]);
259 glVertex3f(frameCoord[0],frameCoord[1],frameCoord[4]);
260 glEnd();
261
262 }
263
264 }
265
266}