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