#include "AliEveTPCSector2DGL.h"
#include <EveDet/AliEveTPCSector2D.h>
#include <TGLRnrCtx.h>
#include <TGLSelectRecord.h>
#include <TGLIncludes.h>
ClassImp(AliEveTPCSector2DGL)
const Int_t AliEveTPCSector2DGL::fgkTextureWidth = 256;
const Int_t AliEveTPCSector2DGL::fgkTextureHeight = 128;
const Int_t AliEveTPCSector2DGL::fgkTextureByteSize = 4*256*128;
AliEveTPCSector2DGL::AliEveTPCSector2DGL() :
TGLObject(),
fSector (0),
fSectorData (0),
fImage (0),
fTexture (0),
fRTS (0)
{
}
AliEveTPCSector2DGL::~AliEveTPCSector2DGL()
{
if (fImage) delete [] fImage;
if (fTexture) glDeleteTextures(1, &fTexture);
}
Bool_t AliEveTPCSector2DGL::SetModel(TObject* obj, const Option_t* )
{
if (SetModelCheckClass(obj, AliEveTPCSector2D::Class())) {
fSector = (AliEveTPCSector2D*) fExternalObj;
return kTRUE;
}
return kFALSE;
}
void AliEveTPCSector2DGL::SetBBox()
{
SetAxisAlignedBBox(((AliEveTPCSector2D*)fExternalObj)->AssertBBox());
}
void AliEveTPCSector2DGL::ProcessSelection(TGLRnrCtx & ,
TGLSelectRecord & rec)
{
if (rec.GetN() != 3) return;
Int_t row = rec.GetItem(1);
Int_t pad = rec.GetItem(2);
if (row < 0 || row >= AliEveTPCSectorData::GetNAllRows()) return;
if (pad < 0 || pad >= AliEveTPCSectorData::GetNPadsInRow(row)) return;
fSector->PadSelected(row, pad);
}
void AliEveTPCSector2DGL::DirectDraw(TGLRnrCtx& rnrCtx) const
{
fSectorData = fSector->GetSectorData();
if (fRTS < fSector->fRTS && fSectorData != 0) {
CreateTexture();
fRTS = fSector->fRTS;
}
glPushAttrib(GL_CURRENT_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT | GL_ENABLE_BIT);
glDisable(GL_LIGHTING);
glDisable(GL_CULL_FACE);
if (fSectorData != 0)
{
const AliEveTPCSectorData::SegmentInfo& iSeg = AliEveTPCSectorData::GetInnSeg();
const AliEveTPCSectorData::SegmentInfo& o1Seg = AliEveTPCSectorData::GetOut1Seg();
const AliEveTPCSectorData::SegmentInfo& o2Seg = AliEveTPCSectorData::GetOut2Seg();
if (rnrCtx.SecSelection())
{
if(fSector->fRnrInn) DisplayNamedQuads(iSeg, 0, 0);
if(fSector->fRnrOut1) DisplayNamedQuads(o1Seg, iSeg.GetNMaxPads(), 0);
if(fSector->fRnrOut2) DisplayNamedQuads(o2Seg, 0, o1Seg.GetNRows());
}
else
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
if (fSector->fUseTexture)
{
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glAlphaFunc(GL_GREATER, 0.2);
glEnable(GL_ALPHA_TEST);
glBindTexture(GL_TEXTURE_2D, fTexture);
glEnable(GL_TEXTURE_2D);
if(fSector->fRnrInn) DisplayTexture(iSeg, 0, 0);
if(fSector->fRnrOut1) DisplayTexture(o1Seg, iSeg.GetNMaxPads(), 0);
if(fSector->fRnrOut2) DisplayTexture(o2Seg, 0, o1Seg.GetNRows());
glDisable(GL_TEXTURE_2D);
}
else
{
if(fSector->fRnrInn) DisplayQuads(iSeg, 0, 0);
if(fSector->fRnrOut1) DisplayQuads(o1Seg, iSeg.GetNMaxPads(), 0);
if(fSector->fRnrOut2) DisplayQuads(o2Seg, 0, o1Seg.GetNRows());
}
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
DisplayFrame();
}
}
glPopAttrib();
}
void AliEveTPCSector2DGL::LoadPadrow(AliEveTPCSectorData::RowIterator& iter,
Int_t row, Int_t colOff) const
{
Int_t padVal;
Int_t time, val;
Int_t minTime = fSector->fMinTime;
Int_t maxTime = fSector->fMaxTime;
Bool_t halfBorderTime = ((maxTime - minTime) % 2 == 0);
UChar_t* imgPos = GetRowCol(row, colOff);
while (iter.NextPad()) {
padVal = 0;
while (iter.Next()) {
time = iter.Time();
val = iter.Signal();
if(time < minTime || time > maxTime)
continue;
if(fSector->fShowMax) {
if(val > padVal) {
padVal = val;
}
} else {
if(halfBorderTime && (time == minTime || time == maxTime))
padVal += val/2;
else
padVal += val;
}
}
if (fSector->fShowMax == kFALSE && fSector->fAverage) {
padVal = (Int_t)((Float_t)padVal / (maxTime - minTime));
}
padVal = TMath::Min(padVal, fSector->fMaxVal);
if (padVal > fSector->fThreshold) {
fSector->ColorFromArray(padVal, imgPos);
}
imgPos += 4;
}
}
void AliEveTPCSector2DGL::CreateTexture() const
{
if (fImage == 0)
{
fImage = new UChar_t[fgkTextureByteSize];
glGenTextures(1, &fTexture);
}
memset(fImage, 0, fgkTextureByteSize);
Int_t rowOff[3], colOff[3];
Bool_t isOn[3];
rowOff[0] = 0;
rowOff[1] = rowOff[2] = -AliEveTPCSectorData::GetSeg(1).GetFirstRow();
colOff[0] = colOff[2] = 0;
colOff[1] = AliEveTPCSectorData::GetSeg(0).GetNMaxPads();
isOn[0] = fSector->fRnrInn;
isOn[1] = fSector->fRnrOut1;
isOn[2] = fSector->fRnrOut2;
fSector->SetupColorArray();
for (Int_t sId = 0; sId <= 2; ++sId)
{
if (isOn[sId] == kFALSE)
continue;
const AliEveTPCSectorData::SegmentInfo& sInfo = AliEveTPCSectorData::GetSeg(sId);
for (Int_t row = sInfo.GetFirstRow(); row <= sInfo.GetLastRow(); ++row)
{
AliEveTPCSectorData::RowIterator i = fSectorData->MakeRowIterator(row);
Int_t offset = (sInfo.GetNMaxPads() - AliEveTPCSectorData::GetNPadsInRow(row))/2;
LoadPadrow(i, row + rowOff[sId], offset + colOff[sId]);
}
}
glBindTexture (GL_TEXTURE_2D, fTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvf (GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA, fgkTextureWidth, fgkTextureHeight,
0, GL_RGBA, GL_UNSIGNED_BYTE, fImage);
}
void AliEveTPCSector2DGL::DisplayTexture(const AliEveTPCSectorData::SegmentInfo& seg,
Int_t startCol, Int_t startRow) const
{
Float_t w = seg.GetNMaxPads()*seg.GetPadWidth()/2;
Float_t y1 = seg.GetRLow();
Float_t y2 = y1 + seg.GetNRows()*seg.GetPadHeight();
Float_t u1 = (Float_t) startCol / fgkTextureWidth;
Float_t v1 = (Float_t) startRow / fgkTextureHeight;
Float_t u2 = u1 + (Float_t) seg.GetNMaxPads() / fgkTextureWidth;
Float_t v2 = v1 + (Float_t) seg.GetNRows() / fgkTextureHeight;
glBegin(GL_QUADS);
glTexCoord2f(u1, v1); glVertex2f(-w, y1);
glTexCoord2f(u1, v2); glVertex2f(-w, y2);
glTexCoord2f(u2, v2); glVertex2f( w, y2);
glTexCoord2f(u2, v1); glVertex2f( w, y1);
glEnd();
}
void AliEveTPCSector2DGL::DisplayQuads(const AliEveTPCSectorData::SegmentInfo& seg,
Int_t startCol, Int_t startRow) const
{
Float_t yD, yU;
Float_t xOff, x;
Float_t padW = seg.GetPadWidth();
Float_t padH = seg.GetPadHeight();
glBegin(GL_QUADS);
for (Int_t row = 0; row < seg.GetNRows(); row++)
{
yD = seg.GetRLow() + row*padH;
yU = yD + padH;
xOff = -seg.GetNMaxPads()*padW/2;
Int_t tpcRow = row + seg.GetFirstRow();
Int_t deltaPad = (seg.GetNMaxPads() - AliEveTPCSectorData::GetNPadsInRow(tpcRow))/2;
Int_t maxPad = seg.GetNMaxPads() - deltaPad;
UChar_t *pix = GetRowCol(row + startRow, startCol + deltaPad);
for (Int_t pad = deltaPad; pad < maxPad; pad++, pix+=4)
{
x = xOff + pad*padW;
if (pix[3] != 0)
{
TGLUtil::Color4ubv(pix);
glVertex2f(x+padW, yD);
glVertex2f(x, yD);
glVertex2f(x, yU);
glVertex2f(x+padW, yU);
}
}
}
glEnd();
}
void AliEveTPCSector2DGL::DisplayNamedQuads(const AliEveTPCSectorData::SegmentInfo& seg,
Int_t startCol, Int_t startRow) const
{
Float_t yD, yU;
Float_t xOff, x;
Float_t padW = seg.GetPadWidth();
Float_t padH = seg.GetPadHeight();
glPushName(0);
for (Int_t row = 0; row < seg.GetNRows(); row++)
{
yD = seg.GetRLow() + row*padH;
yU = yD + padH;
xOff = -seg.GetNMaxPads()*padW/2;
Int_t tpcRow = row + seg.GetFirstRow();
glLoadName(tpcRow);
Int_t deltaPad = (seg.GetNMaxPads() - AliEveTPCSectorData::GetNPadsInRow(tpcRow))/2;
Int_t maxPad = seg.GetNMaxPads() - deltaPad;
UChar_t *pix = GetRowCol(row + startRow, startCol + deltaPad);
glPushName(0);
for (Int_t pad = deltaPad; pad < maxPad; pad++, pix+=4)
{
x = xOff + pad*padW;
if (pix[3] != 0 || fSector->fPickEmpty)
{
glLoadName(pad - deltaPad);
glBegin(GL_QUADS);
glVertex2f(x+padW, yD);
glVertex2f(x, yD);
glVertex2f(x, yU);
glVertex2f(x+padW, yU);
glEnd();
}
}
glPopName();
}
glPopName();
}
void AliEveTPCSector2DGL::TraceStepsUp(const AliEveTPCSectorData::SegmentInfo& s)
{
Float_t x = -(s.GetNMaxPads()*1.0/2 - s.GetNYSteps())*s.GetPadWidth();
Float_t y = s.GetRLow();
glVertex2f(x, y);
for (Int_t i = 0; i < s.GetNYSteps(); ++i)
{
y = s.GetYStep(i);
glVertex2f(x, y);
x -= s.GetPadWidth();
glVertex2f(x, y);
}
y = s.GetRLow() + s.GetNRows()*s.GetPadHeight();
glVertex2f(-s.GetNMaxPads()*s.GetPadWidth()/2, y);
}
void AliEveTPCSector2DGL::TraceStepsDown(const AliEveTPCSectorData::SegmentInfo& s)
{
Float_t x = s.GetNMaxPads()*s.GetPadWidth()/2;
Float_t y = s.GetRLow() + s.GetNRows()*s.GetPadHeight();
glVertex2f(x, y);
for (Int_t i = s.GetNYSteps() - 1; i >= 0; --i)
{
y = s.GetYStep(i);
glVertex2f(x, y);
x -= s.GetPadWidth();
glVertex2f(x, y);
}
y = s.GetRLow();
glVertex2f((0.5*s.GetNMaxPads() - s.GetNYSteps())*s.GetPadWidth(), y);
}
void AliEveTPCSector2DGL::DisplayFrame() const
{
TGLUtil::Color(fSector->fFrameColor);
if(fSector->fRnrInn)
{
glBegin(GL_POLYGON);
TraceStepsUp (AliEveTPCSectorData::GetInnSeg());
TraceStepsDown(AliEveTPCSectorData::GetInnSeg());
glEnd();
}
if(fSector->fRnrOut1)
{
glBegin(GL_POLYGON);
TraceStepsUp (AliEveTPCSectorData::GetOut1Seg());
TraceStepsDown(AliEveTPCSectorData::GetOut1Seg());
glEnd();
}
if(fSector->fRnrOut2)
{
glBegin(GL_POLYGON);
TraceStepsUp (AliEveTPCSectorData::GetOut2Seg());
TraceStepsDown(AliEveTPCSectorData::GetOut2Seg());
glEnd();
}
}
AliEveTPCSector2DGL.cxx:1 AliEveTPCSector2DGL.cxx:2 AliEveTPCSector2DGL.cxx:3 AliEveTPCSector2DGL.cxx:4 AliEveTPCSector2DGL.cxx:5 AliEveTPCSector2DGL.cxx:6 AliEveTPCSector2DGL.cxx:7 AliEveTPCSector2DGL.cxx:8 AliEveTPCSector2DGL.cxx:9 AliEveTPCSector2DGL.cxx:10 AliEveTPCSector2DGL.cxx:11 AliEveTPCSector2DGL.cxx:12 AliEveTPCSector2DGL.cxx:13 AliEveTPCSector2DGL.cxx:14 AliEveTPCSector2DGL.cxx:15 AliEveTPCSector2DGL.cxx:16 AliEveTPCSector2DGL.cxx:17 AliEveTPCSector2DGL.cxx:18 AliEveTPCSector2DGL.cxx:19 AliEveTPCSector2DGL.cxx:20 AliEveTPCSector2DGL.cxx:21 AliEveTPCSector2DGL.cxx:22 AliEveTPCSector2DGL.cxx:23 AliEveTPCSector2DGL.cxx:24 AliEveTPCSector2DGL.cxx:25 AliEveTPCSector2DGL.cxx:26 AliEveTPCSector2DGL.cxx:27 AliEveTPCSector2DGL.cxx:28 AliEveTPCSector2DGL.cxx:29 AliEveTPCSector2DGL.cxx:30 AliEveTPCSector2DGL.cxx:31 AliEveTPCSector2DGL.cxx:32 AliEveTPCSector2DGL.cxx:33 AliEveTPCSector2DGL.cxx:34 AliEveTPCSector2DGL.cxx:35 AliEveTPCSector2DGL.cxx:36 AliEveTPCSector2DGL.cxx:37 AliEveTPCSector2DGL.cxx:38 AliEveTPCSector2DGL.cxx:39 AliEveTPCSector2DGL.cxx:40 AliEveTPCSector2DGL.cxx:41 AliEveTPCSector2DGL.cxx:42 AliEveTPCSector2DGL.cxx:43 AliEveTPCSector2DGL.cxx:44 AliEveTPCSector2DGL.cxx:45 AliEveTPCSector2DGL.cxx:46 AliEveTPCSector2DGL.cxx:47 AliEveTPCSector2DGL.cxx:48 AliEveTPCSector2DGL.cxx:49 AliEveTPCSector2DGL.cxx:50 AliEveTPCSector2DGL.cxx:51 AliEveTPCSector2DGL.cxx:52 AliEveTPCSector2DGL.cxx:53 AliEveTPCSector2DGL.cxx:54 AliEveTPCSector2DGL.cxx:55 AliEveTPCSector2DGL.cxx:56 AliEveTPCSector2DGL.cxx:57 AliEveTPCSector2DGL.cxx:58 AliEveTPCSector2DGL.cxx:59 AliEveTPCSector2DGL.cxx:60 AliEveTPCSector2DGL.cxx:61 AliEveTPCSector2DGL.cxx:62 AliEveTPCSector2DGL.cxx:63 AliEveTPCSector2DGL.cxx:64 AliEveTPCSector2DGL.cxx:65 AliEveTPCSector2DGL.cxx:66 AliEveTPCSector2DGL.cxx:67 AliEveTPCSector2DGL.cxx:68 AliEveTPCSector2DGL.cxx:69 AliEveTPCSector2DGL.cxx:70 AliEveTPCSector2DGL.cxx:71 AliEveTPCSector2DGL.cxx:72 AliEveTPCSector2DGL.cxx:73 AliEveTPCSector2DGL.cxx:74 AliEveTPCSector2DGL.cxx:75 AliEveTPCSector2DGL.cxx:76 AliEveTPCSector2DGL.cxx:77 AliEveTPCSector2DGL.cxx:78 AliEveTPCSector2DGL.cxx:79 AliEveTPCSector2DGL.cxx:80 AliEveTPCSector2DGL.cxx:81 AliEveTPCSector2DGL.cxx:82 AliEveTPCSector2DGL.cxx:83 AliEveTPCSector2DGL.cxx:84 AliEveTPCSector2DGL.cxx:85 AliEveTPCSector2DGL.cxx:86 AliEveTPCSector2DGL.cxx:87 AliEveTPCSector2DGL.cxx:88 AliEveTPCSector2DGL.cxx:89 AliEveTPCSector2DGL.cxx:90 AliEveTPCSector2DGL.cxx:91 AliEveTPCSector2DGL.cxx:92 AliEveTPCSector2DGL.cxx:93 AliEveTPCSector2DGL.cxx:94 AliEveTPCSector2DGL.cxx:95 AliEveTPCSector2DGL.cxx:96 AliEveTPCSector2DGL.cxx:97 AliEveTPCSector2DGL.cxx:98 AliEveTPCSector2DGL.cxx:99 AliEveTPCSector2DGL.cxx:100 AliEveTPCSector2DGL.cxx:101 AliEveTPCSector2DGL.cxx:102 AliEveTPCSector2DGL.cxx:103 AliEveTPCSector2DGL.cxx:104 AliEveTPCSector2DGL.cxx:105 AliEveTPCSector2DGL.cxx:106 AliEveTPCSector2DGL.cxx:107 AliEveTPCSector2DGL.cxx:108 AliEveTPCSector2DGL.cxx:109 AliEveTPCSector2DGL.cxx:110 AliEveTPCSector2DGL.cxx:111 AliEveTPCSector2DGL.cxx:112 AliEveTPCSector2DGL.cxx:113 AliEveTPCSector2DGL.cxx:114 AliEveTPCSector2DGL.cxx:115 AliEveTPCSector2DGL.cxx:116 AliEveTPCSector2DGL.cxx:117 AliEveTPCSector2DGL.cxx:118 AliEveTPCSector2DGL.cxx:119 AliEveTPCSector2DGL.cxx:120 AliEveTPCSector2DGL.cxx:121 AliEveTPCSector2DGL.cxx:122 AliEveTPCSector2DGL.cxx:123 AliEveTPCSector2DGL.cxx:124 AliEveTPCSector2DGL.cxx:125 AliEveTPCSector2DGL.cxx:126 AliEveTPCSector2DGL.cxx:127 AliEveTPCSector2DGL.cxx:128 AliEveTPCSector2DGL.cxx:129 AliEveTPCSector2DGL.cxx:130 AliEveTPCSector2DGL.cxx:131 AliEveTPCSector2DGL.cxx:132 AliEveTPCSector2DGL.cxx:133 AliEveTPCSector2DGL.cxx:134 AliEveTPCSector2DGL.cxx:135 AliEveTPCSector2DGL.cxx:136 AliEveTPCSector2DGL.cxx:137 AliEveTPCSector2DGL.cxx:138 AliEveTPCSector2DGL.cxx:139 AliEveTPCSector2DGL.cxx:140 AliEveTPCSector2DGL.cxx:141 AliEveTPCSector2DGL.cxx:142 AliEveTPCSector2DGL.cxx:143 AliEveTPCSector2DGL.cxx:144 AliEveTPCSector2DGL.cxx:145 AliEveTPCSector2DGL.cxx:146 AliEveTPCSector2DGL.cxx:147 AliEveTPCSector2DGL.cxx:148 AliEveTPCSector2DGL.cxx:149 AliEveTPCSector2DGL.cxx:150 AliEveTPCSector2DGL.cxx:151 AliEveTPCSector2DGL.cxx:152 AliEveTPCSector2DGL.cxx:153 AliEveTPCSector2DGL.cxx:154 AliEveTPCSector2DGL.cxx:155 AliEveTPCSector2DGL.cxx:156 AliEveTPCSector2DGL.cxx:157 AliEveTPCSector2DGL.cxx:158 AliEveTPCSector2DGL.cxx:159 AliEveTPCSector2DGL.cxx:160 AliEveTPCSector2DGL.cxx:161 AliEveTPCSector2DGL.cxx:162 AliEveTPCSector2DGL.cxx:163 AliEveTPCSector2DGL.cxx:164 AliEveTPCSector2DGL.cxx:165 AliEveTPCSector2DGL.cxx:166 AliEveTPCSector2DGL.cxx:167 AliEveTPCSector2DGL.cxx:168 AliEveTPCSector2DGL.cxx:169 AliEveTPCSector2DGL.cxx:170 AliEveTPCSector2DGL.cxx:171 AliEveTPCSector2DGL.cxx:172 AliEveTPCSector2DGL.cxx:173 AliEveTPCSector2DGL.cxx:174 AliEveTPCSector2DGL.cxx:175 AliEveTPCSector2DGL.cxx:176 AliEveTPCSector2DGL.cxx:177 AliEveTPCSector2DGL.cxx:178 AliEveTPCSector2DGL.cxx:179 AliEveTPCSector2DGL.cxx:180 AliEveTPCSector2DGL.cxx:181 AliEveTPCSector2DGL.cxx:182 AliEveTPCSector2DGL.cxx:183 AliEveTPCSector2DGL.cxx:184 AliEveTPCSector2DGL.cxx:185 AliEveTPCSector2DGL.cxx:186 AliEveTPCSector2DGL.cxx:187 AliEveTPCSector2DGL.cxx:188 AliEveTPCSector2DGL.cxx:189 AliEveTPCSector2DGL.cxx:190 AliEveTPCSector2DGL.cxx:191 AliEveTPCSector2DGL.cxx:192 AliEveTPCSector2DGL.cxx:193 AliEveTPCSector2DGL.cxx:194 AliEveTPCSector2DGL.cxx:195 AliEveTPCSector2DGL.cxx:196 AliEveTPCSector2DGL.cxx:197 AliEveTPCSector2DGL.cxx:198 AliEveTPCSector2DGL.cxx:199 AliEveTPCSector2DGL.cxx:200 AliEveTPCSector2DGL.cxx:201 AliEveTPCSector2DGL.cxx:202 AliEveTPCSector2DGL.cxx:203 AliEveTPCSector2DGL.cxx:204 AliEveTPCSector2DGL.cxx:205 AliEveTPCSector2DGL.cxx:206 AliEveTPCSector2DGL.cxx:207 AliEveTPCSector2DGL.cxx:208 AliEveTPCSector2DGL.cxx:209 AliEveTPCSector2DGL.cxx:210 AliEveTPCSector2DGL.cxx:211 AliEveTPCSector2DGL.cxx:212 AliEveTPCSector2DGL.cxx:213 AliEveTPCSector2DGL.cxx:214 AliEveTPCSector2DGL.cxx:215 AliEveTPCSector2DGL.cxx:216 AliEveTPCSector2DGL.cxx:217 AliEveTPCSector2DGL.cxx:218 AliEveTPCSector2DGL.cxx:219 AliEveTPCSector2DGL.cxx:220 AliEveTPCSector2DGL.cxx:221 AliEveTPCSector2DGL.cxx:222 AliEveTPCSector2DGL.cxx:223 AliEveTPCSector2DGL.cxx:224 AliEveTPCSector2DGL.cxx:225 AliEveTPCSector2DGL.cxx:226 AliEveTPCSector2DGL.cxx:227 AliEveTPCSector2DGL.cxx:228 AliEveTPCSector2DGL.cxx:229 AliEveTPCSector2DGL.cxx:230 AliEveTPCSector2DGL.cxx:231 AliEveTPCSector2DGL.cxx:232 AliEveTPCSector2DGL.cxx:233 AliEveTPCSector2DGL.cxx:234 AliEveTPCSector2DGL.cxx:235 AliEveTPCSector2DGL.cxx:236 AliEveTPCSector2DGL.cxx:237 AliEveTPCSector2DGL.cxx:238 AliEveTPCSector2DGL.cxx:239 AliEveTPCSector2DGL.cxx:240 AliEveTPCSector2DGL.cxx:241 AliEveTPCSector2DGL.cxx:242 AliEveTPCSector2DGL.cxx:243 AliEveTPCSector2DGL.cxx:244 AliEveTPCSector2DGL.cxx:245 AliEveTPCSector2DGL.cxx:246 AliEveTPCSector2DGL.cxx:247 AliEveTPCSector2DGL.cxx:248 AliEveTPCSector2DGL.cxx:249 AliEveTPCSector2DGL.cxx:250 AliEveTPCSector2DGL.cxx:251 AliEveTPCSector2DGL.cxx:252 AliEveTPCSector2DGL.cxx:253 AliEveTPCSector2DGL.cxx:254 AliEveTPCSector2DGL.cxx:255 AliEveTPCSector2DGL.cxx:256 AliEveTPCSector2DGL.cxx:257 AliEveTPCSector2DGL.cxx:258 AliEveTPCSector2DGL.cxx:259 AliEveTPCSector2DGL.cxx:260 AliEveTPCSector2DGL.cxx:261 AliEveTPCSector2DGL.cxx:262 AliEveTPCSector2DGL.cxx:263 AliEveTPCSector2DGL.cxx:264 AliEveTPCSector2DGL.cxx:265 AliEveTPCSector2DGL.cxx:266 AliEveTPCSector2DGL.cxx:267 AliEveTPCSector2DGL.cxx:268 AliEveTPCSector2DGL.cxx:269 AliEveTPCSector2DGL.cxx:270 AliEveTPCSector2DGL.cxx:271 AliEveTPCSector2DGL.cxx:272 AliEveTPCSector2DGL.cxx:273 AliEveTPCSector2DGL.cxx:274 AliEveTPCSector2DGL.cxx:275 AliEveTPCSector2DGL.cxx:276 AliEveTPCSector2DGL.cxx:277 AliEveTPCSector2DGL.cxx:278 AliEveTPCSector2DGL.cxx:279 AliEveTPCSector2DGL.cxx:280 AliEveTPCSector2DGL.cxx:281 AliEveTPCSector2DGL.cxx:282 AliEveTPCSector2DGL.cxx:283 AliEveTPCSector2DGL.cxx:284 AliEveTPCSector2DGL.cxx:285 AliEveTPCSector2DGL.cxx:286 AliEveTPCSector2DGL.cxx:287 AliEveTPCSector2DGL.cxx:288 AliEveTPCSector2DGL.cxx:289 AliEveTPCSector2DGL.cxx:290 AliEveTPCSector2DGL.cxx:291 AliEveTPCSector2DGL.cxx:292 AliEveTPCSector2DGL.cxx:293 AliEveTPCSector2DGL.cxx:294 AliEveTPCSector2DGL.cxx:295 AliEveTPCSector2DGL.cxx:296 AliEveTPCSector2DGL.cxx:297 AliEveTPCSector2DGL.cxx:298 AliEveTPCSector2DGL.cxx:299 AliEveTPCSector2DGL.cxx:300 AliEveTPCSector2DGL.cxx:301 AliEveTPCSector2DGL.cxx:302 AliEveTPCSector2DGL.cxx:303 AliEveTPCSector2DGL.cxx:304 AliEveTPCSector2DGL.cxx:305 AliEveTPCSector2DGL.cxx:306 AliEveTPCSector2DGL.cxx:307 AliEveTPCSector2DGL.cxx:308 AliEveTPCSector2DGL.cxx:309 AliEveTPCSector2DGL.cxx:310 AliEveTPCSector2DGL.cxx:311 AliEveTPCSector2DGL.cxx:312 AliEveTPCSector2DGL.cxx:313 AliEveTPCSector2DGL.cxx:314 AliEveTPCSector2DGL.cxx:315 AliEveTPCSector2DGL.cxx:316 AliEveTPCSector2DGL.cxx:317 AliEveTPCSector2DGL.cxx:318 AliEveTPCSector2DGL.cxx:319 AliEveTPCSector2DGL.cxx:320 AliEveTPCSector2DGL.cxx:321 AliEveTPCSector2DGL.cxx:322 AliEveTPCSector2DGL.cxx:323 AliEveTPCSector2DGL.cxx:324 AliEveTPCSector2DGL.cxx:325 AliEveTPCSector2DGL.cxx:326 AliEveTPCSector2DGL.cxx:327 AliEveTPCSector2DGL.cxx:328 AliEveTPCSector2DGL.cxx:329 AliEveTPCSector2DGL.cxx:330 AliEveTPCSector2DGL.cxx:331 AliEveTPCSector2DGL.cxx:332 AliEveTPCSector2DGL.cxx:333 AliEveTPCSector2DGL.cxx:334 AliEveTPCSector2DGL.cxx:335 AliEveTPCSector2DGL.cxx:336 AliEveTPCSector2DGL.cxx:337 AliEveTPCSector2DGL.cxx:338 AliEveTPCSector2DGL.cxx:339 AliEveTPCSector2DGL.cxx:340 AliEveTPCSector2DGL.cxx:341 AliEveTPCSector2DGL.cxx:342 AliEveTPCSector2DGL.cxx:343 AliEveTPCSector2DGL.cxx:344 AliEveTPCSector2DGL.cxx:345 AliEveTPCSector2DGL.cxx:346 AliEveTPCSector2DGL.cxx:347 AliEveTPCSector2DGL.cxx:348 AliEveTPCSector2DGL.cxx:349 AliEveTPCSector2DGL.cxx:350 AliEveTPCSector2DGL.cxx:351 AliEveTPCSector2DGL.cxx:352 AliEveTPCSector2DGL.cxx:353 AliEveTPCSector2DGL.cxx:354 AliEveTPCSector2DGL.cxx:355 AliEveTPCSector2DGL.cxx:356 AliEveTPCSector2DGL.cxx:357 AliEveTPCSector2DGL.cxx:358 AliEveTPCSector2DGL.cxx:359 AliEveTPCSector2DGL.cxx:360 AliEveTPCSector2DGL.cxx:361 AliEveTPCSector2DGL.cxx:362 AliEveTPCSector2DGL.cxx:363 AliEveTPCSector2DGL.cxx:364 AliEveTPCSector2DGL.cxx:365 AliEveTPCSector2DGL.cxx:366 AliEveTPCSector2DGL.cxx:367 AliEveTPCSector2DGL.cxx:368 AliEveTPCSector2DGL.cxx:369 AliEveTPCSector2DGL.cxx:370 AliEveTPCSector2DGL.cxx:371 AliEveTPCSector2DGL.cxx:372 AliEveTPCSector2DGL.cxx:373 AliEveTPCSector2DGL.cxx:374 AliEveTPCSector2DGL.cxx:375 AliEveTPCSector2DGL.cxx:376 AliEveTPCSector2DGL.cxx:377 AliEveTPCSector2DGL.cxx:378 AliEveTPCSector2DGL.cxx:379 AliEveTPCSector2DGL.cxx:380 AliEveTPCSector2DGL.cxx:381 AliEveTPCSector2DGL.cxx:382 AliEveTPCSector2DGL.cxx:383 AliEveTPCSector2DGL.cxx:384 AliEveTPCSector2DGL.cxx:385 AliEveTPCSector2DGL.cxx:386 AliEveTPCSector2DGL.cxx:387 AliEveTPCSector2DGL.cxx:388 AliEveTPCSector2DGL.cxx:389 AliEveTPCSector2DGL.cxx:390 AliEveTPCSector2DGL.cxx:391 AliEveTPCSector2DGL.cxx:392 AliEveTPCSector2DGL.cxx:393 AliEveTPCSector2DGL.cxx:394 AliEveTPCSector2DGL.cxx:395 AliEveTPCSector2DGL.cxx:396 AliEveTPCSector2DGL.cxx:397 AliEveTPCSector2DGL.cxx:398 AliEveTPCSector2DGL.cxx:399 AliEveTPCSector2DGL.cxx:400 AliEveTPCSector2DGL.cxx:401 AliEveTPCSector2DGL.cxx:402 AliEveTPCSector2DGL.cxx:403 AliEveTPCSector2DGL.cxx:404 AliEveTPCSector2DGL.cxx:405 AliEveTPCSector2DGL.cxx:406 AliEveTPCSector2DGL.cxx:407 AliEveTPCSector2DGL.cxx:408 AliEveTPCSector2DGL.cxx:409 AliEveTPCSector2DGL.cxx:410 AliEveTPCSector2DGL.cxx:411 AliEveTPCSector2DGL.cxx:412 AliEveTPCSector2DGL.cxx:413 AliEveTPCSector2DGL.cxx:414 AliEveTPCSector2DGL.cxx:415 AliEveTPCSector2DGL.cxx:416 AliEveTPCSector2DGL.cxx:417 AliEveTPCSector2DGL.cxx:418 AliEveTPCSector2DGL.cxx:419 AliEveTPCSector2DGL.cxx:420 AliEveTPCSector2DGL.cxx:421 AliEveTPCSector2DGL.cxx:422 AliEveTPCSector2DGL.cxx:423 AliEveTPCSector2DGL.cxx:424 AliEveTPCSector2DGL.cxx:425 AliEveTPCSector2DGL.cxx:426 AliEveTPCSector2DGL.cxx:427 AliEveTPCSector2DGL.cxx:428 AliEveTPCSector2DGL.cxx:429 AliEveTPCSector2DGL.cxx:430 AliEveTPCSector2DGL.cxx:431 AliEveTPCSector2DGL.cxx:432