ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel & Bogdan Vulpescu: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
#include "AliEveMUONChamber.h"

#include <EveDet/AliEveMUONData.h>
#include <EveDet/AliEveMUONChamberData.h>

#include <TBuffer3D.h>
#include <TBuffer3DTypes.h>
#include <TVirtualPad.h>
#include <TVirtualViewer3D.h>
#include <TStyle.h>
#include <TMath.h>


//______________________________________________________________________________
// AliEveMUONChamber
//

ClassImp(AliEveMUONChamber)

//______________________________________________________________________________
AliEveMUONChamber::AliEveMUONChamber(Int_t id, const Text_t* n, const Text_t* t) :
  TEveElement(fFrameColor),
  TNamed(n,t),
  fMUONData(0),
  fFrameColor(2),
  fRTS(1),
  fChamberID(0),
  fQuadSet1(n,t),
  fQuadSet2(n,t),
  fPointSet1(n),
  fPointSet2(n),
  fThreshold(0),
  fMaxVal(4096),
  fClusterSize(5),
  fHitSize(5),
  fColorArray(0)
{
  //
  // constructor
  //

  Char_t name[256];
  if (id < 10) {
    snprintf(name,256,"Chamber %02d (trac)",id);
  } else {
    snprintf(name,256,"Chamber %02d (trig)",id);
  }
  SetName(name);

  ComputeBBox();

}

//______________________________________________________________________________
AliEveMUONChamber::~AliEveMUONChamber()
{
  //
  // destructor
  //

  if(fMUONData) fMUONData->DecRefCount();

}

//______________________________________________________________________________
void AliEveMUONChamber::ComputeBBox()
{
  //
  // bounding box
  //

#if ROOT_VERSION_CODE <= ROOT_VERSION(5,11,2)
  bbox_init();
#else
  BBoxInit();
#endif

  fBBox[0] = - 400.0;
  fBBox[1] = + 400.0;
  fBBox[2] = - 400.0;
  fBBox[3] = + 400.0;
  fBBox[4] = -1800.0;
  fBBox[5] = + 500.0;

  Float_t* b1 = fQuadSet1.AssertBBox();
  for(Int_t i=0; i<6; ++i) { b1[i] = fBBox[i]; }
  Float_t* b2 = fQuadSet2.AssertBBox();
  for(Int_t i=0; i<6; ++i) { b2[i] = fBBox[i]; }
  Float_t* b3 = fPointSet1.AssertBBox();
  for(Int_t i=0; i<6; ++i) { b3[i] = fBBox[i]; }
  Float_t* b4 = fPointSet2.AssertBBox();
  for(Int_t i=0; i<6; ++i) { b4[i] = fBBox[i]; }

}

//______________________________________________________________________________
void AliEveMUONChamber::Paint(Option_t*)
{
  //
  // draw...
  //

  if(fRnrSelf == kFALSE)
    return;

  TBuffer3D buffer(TBuffer3DTypes::kGeneric);

  buffer.fID           = this;
  buffer.fColor        = 2;
  buffer.fTransparency = 0;
  buffer.fLocalFrame   = 0;

  buffer.SetSectionsValid(TBuffer3D::kCore);
  Int_t reqSections = gPad->GetViewer3D()->AddObject(buffer);
  if (reqSections == TBuffer3D::kNone) {
    //printf("AliEveMUONChamber::Paint viewer was happy with Core buff3d.\n");
    return;
  }

  printf("AliEveMUONChamber::Paint only GL supported.\n");
  return;

}

//______________________________________________________________________________
void AliEveMUONChamber::SetThreshold(Short_t t)
{
  //
  // digits amplitude threshold
  //

  fThreshold = TMath::Min(t, (Short_t)(fMaxVal - 1));
  ClearColorArray();
  IncRTS();

}

//______________________________________________________________________________
void AliEveMUONChamber::SetMaxVal(Int_t mv)
{
  //
  // digits amplitude maximum value
  //

  fMaxVal = TMath::Max(mv, (Int_t)(fThreshold + 1));
  ClearColorArray();
  IncRTS();

}

//______________________________________________________________________________
void AliEveMUONChamber::SetClusterSize(Int_t size)
{
  //
  // cluster point size
  //

  fClusterSize = TMath::Max(1, size);
  IncRTS();

}

//______________________________________________________________________________
void AliEveMUONChamber::SetHitSize(Int_t size)
{
  //
  // hit point size
  //

  fHitSize = TMath::Max(1, size);
  IncRTS();

}

//______________________________________________________________________________
void AliEveMUONChamber::SetupColor(Int_t val, UChar_t* pixel) const
{
  //
  // RGBA color for amplitude "val"
  //

  Float_t div  = TMath::Max(1, fMaxVal - fThreshold);
  Int_t   nCol = gStyle->GetNumberOfColors();
  Int_t   cBin = (Int_t) TMath::Nint(nCol*(val - fThreshold)/div);

  TEveUtil::TEveUtil::ColorFromIdx(gStyle->GetColorPalette(TMath::Min(nCol - 1, cBin)), pixel);

}

//______________________________________________________________________________
Int_t AliEveMUONChamber::ColorIndex(Int_t val) const
{
  //
  // index color
  //

  if(val < fThreshold) val = fThreshold;
  if(val > fMaxVal)    val = fMaxVal;

  Float_t div  = TMath::Max(1, fMaxVal - fThreshold);
  Int_t   nCol = gStyle->GetNumberOfColors();
  Int_t   cBin = (Int_t) TMath::Nint(nCol*(val - fThreshold)/div);

  return gStyle->GetColorPalette(TMath::Min(nCol - 1, cBin));

}

//______________________________________________________________________________
void AliEveMUONChamber::SetupColorArray() const
{
  //
  // build array of colors
  //

  if(fColorArray)
    return;

  fColorArray = new UChar_t [4 * (fMaxVal - fThreshold + 1)];
  UChar_t* p = fColorArray;
  for(Int_t v=fThreshold; v<=fMaxVal; ++v, p+=4)
    SetupColor(v, p);

}

//______________________________________________________________________________
void AliEveMUONChamber::ClearColorArray()
{
  //
  // delete array of colors
  //

  if(fColorArray) {
    delete [] fColorArray;
    fColorArray = 0;
  }
}

//______________________________________________________________________________
void AliEveMUONChamber::SetDataSource(AliEveMUONData* data)
{
  // Set source of data.

  if (data == fMUONData) return;
  if(fMUONData) fMUONData->DecRefCount();
  fMUONData = data;
  if(fMUONData) fMUONData->IncRefCount();
  IncRTS();
}

//______________________________________________________________________________
AliEveMUONChamberData* AliEveMUONChamber::GetChamberData() const
{
  // Return source of data.

  return fMUONData ? fMUONData->GetChamberData(fChamberID) : 0;
}

//______________________________________________________________________________
void AliEveMUONChamber::UpdateQuads()
{
  // Update digit representation.

  fQuadSet1.Reset(TEveQuadSet::kQT_RectangleXY, kTRUE, 32);
  fQuadSet2.Reset(TEveQuadSet::kQT_RectangleXY, kTRUE, 32);
  fPointSet1.Reset();
  fPointSet2.Reset();

  AliEveMUONChamberData* data = GetChamberData();

  Float_t *buffer;
  Float_t x0, y0, z, w, h, clsq;
  Int_t charge, cathode, nDigits, nClusters, nHits, oldSize, ic1, ic2;
  Double_t clsX, clsY, clsZ;
  Float_t hitX, hitY, hitZ;

  if (data != 0) {

    SetupColorArray();

    // digits

    nDigits = data->GetNDigits();

    for (Int_t id = 0; id < nDigits; id++) {

      buffer = data->GetDigitBuffer(id);

      x0 = buffer[0]-buffer[2];
      y0 = buffer[1]-buffer[3];
      w  = 2*buffer[2];
      h  = 2*buffer[3];
      z  = buffer[4];
      charge = (Int_t)buffer[5];
      cathode = (Int_t)buffer[6];

      if (charge <= fThreshold) continue;

      if (cathode == 0) {

	fQuadSet1.AddQuad(x0, y0, z, w, h);
	fQuadSet1.QuadColor(ColorIndex(charge));

      }

      if (cathode == 1) {

	fQuadSet2.AddQuad(x0, y0, z, w, h);
	fQuadSet2.QuadColor(ColorIndex(charge));

      }

    } // end digits loop

    // clusters

    nClusters = data->GetNClusters()/2;  // only one cathode plane
    oldSize = fPointSet1.GrowFor(nClusters);
    ic1 = ic2 = 0;
    for (Int_t ic = 0; ic < (nClusters*2); ic++) {

      buffer = data->GetClusterBuffer(ic);

      clsX    = (Double_t)buffer[0];
      clsY    = (Double_t)buffer[1];
      clsZ    = (Double_t)buffer[2];
      clsq    = buffer[3];
      cathode = (Int_t)buffer[4];

      if (cathode == 0) {
	fPointSet1.SetPoint(ic1,clsX,clsY,clsZ);
	ic1++;
      }

    } // end clusters loop

    // hits

    nHits = data->GetNHits();
    oldSize = fPointSet2.GrowFor(nHits);
    for (Int_t ih = 0; ih < nHits; ih++) {
      buffer = data->GetHitBuffer(ih);
      hitX = buffer[0];
      hitY = buffer[1];
      hitZ = buffer[2];
      fPointSet2.SetPoint(ih,hitX,hitY,hitZ);
    }

  } // end data

}

//______________________________________________________________________________
void AliEveMUONChamber::SetChamberID(Int_t id)
{
  // Set id of chamber to display.

  if (id <  0) id = 0;
  if (id > 13) id = 13;

  fChamberID = id;
  IncRTS();
}

 AliEveMUONChamber.cxx:1
 AliEveMUONChamber.cxx:2
 AliEveMUONChamber.cxx:3
 AliEveMUONChamber.cxx:4
 AliEveMUONChamber.cxx:5
 AliEveMUONChamber.cxx:6
 AliEveMUONChamber.cxx:7
 AliEveMUONChamber.cxx:8
 AliEveMUONChamber.cxx:9
 AliEveMUONChamber.cxx:10
 AliEveMUONChamber.cxx:11
 AliEveMUONChamber.cxx:12
 AliEveMUONChamber.cxx:13
 AliEveMUONChamber.cxx:14
 AliEveMUONChamber.cxx:15
 AliEveMUONChamber.cxx:16
 AliEveMUONChamber.cxx:17
 AliEveMUONChamber.cxx:18
 AliEveMUONChamber.cxx:19
 AliEveMUONChamber.cxx:20
 AliEveMUONChamber.cxx:21
 AliEveMUONChamber.cxx:22
 AliEveMUONChamber.cxx:23
 AliEveMUONChamber.cxx:24
 AliEveMUONChamber.cxx:25
 AliEveMUONChamber.cxx:26
 AliEveMUONChamber.cxx:27
 AliEveMUONChamber.cxx:28
 AliEveMUONChamber.cxx:29
 AliEveMUONChamber.cxx:30
 AliEveMUONChamber.cxx:31
 AliEveMUONChamber.cxx:32
 AliEveMUONChamber.cxx:33
 AliEveMUONChamber.cxx:34
 AliEveMUONChamber.cxx:35
 AliEveMUONChamber.cxx:36
 AliEveMUONChamber.cxx:37
 AliEveMUONChamber.cxx:38
 AliEveMUONChamber.cxx:39
 AliEveMUONChamber.cxx:40
 AliEveMUONChamber.cxx:41
 AliEveMUONChamber.cxx:42
 AliEveMUONChamber.cxx:43
 AliEveMUONChamber.cxx:44
 AliEveMUONChamber.cxx:45
 AliEveMUONChamber.cxx:46
 AliEveMUONChamber.cxx:47
 AliEveMUONChamber.cxx:48
 AliEveMUONChamber.cxx:49
 AliEveMUONChamber.cxx:50
 AliEveMUONChamber.cxx:51
 AliEveMUONChamber.cxx:52
 AliEveMUONChamber.cxx:53
 AliEveMUONChamber.cxx:54
 AliEveMUONChamber.cxx:55
 AliEveMUONChamber.cxx:56
 AliEveMUONChamber.cxx:57
 AliEveMUONChamber.cxx:58
 AliEveMUONChamber.cxx:59
 AliEveMUONChamber.cxx:60
 AliEveMUONChamber.cxx:61
 AliEveMUONChamber.cxx:62
 AliEveMUONChamber.cxx:63
 AliEveMUONChamber.cxx:64
 AliEveMUONChamber.cxx:65
 AliEveMUONChamber.cxx:66
 AliEveMUONChamber.cxx:67
 AliEveMUONChamber.cxx:68
 AliEveMUONChamber.cxx:69
 AliEveMUONChamber.cxx:70
 AliEveMUONChamber.cxx:71
 AliEveMUONChamber.cxx:72
 AliEveMUONChamber.cxx:73
 AliEveMUONChamber.cxx:74
 AliEveMUONChamber.cxx:75
 AliEveMUONChamber.cxx:76
 AliEveMUONChamber.cxx:77
 AliEveMUONChamber.cxx:78
 AliEveMUONChamber.cxx:79
 AliEveMUONChamber.cxx:80
 AliEveMUONChamber.cxx:81
 AliEveMUONChamber.cxx:82
 AliEveMUONChamber.cxx:83
 AliEveMUONChamber.cxx:84
 AliEveMUONChamber.cxx:85
 AliEveMUONChamber.cxx:86
 AliEveMUONChamber.cxx:87
 AliEveMUONChamber.cxx:88
 AliEveMUONChamber.cxx:89
 AliEveMUONChamber.cxx:90
 AliEveMUONChamber.cxx:91
 AliEveMUONChamber.cxx:92
 AliEveMUONChamber.cxx:93
 AliEveMUONChamber.cxx:94
 AliEveMUONChamber.cxx:95
 AliEveMUONChamber.cxx:96
 AliEveMUONChamber.cxx:97
 AliEveMUONChamber.cxx:98
 AliEveMUONChamber.cxx:99
 AliEveMUONChamber.cxx:100
 AliEveMUONChamber.cxx:101
 AliEveMUONChamber.cxx:102
 AliEveMUONChamber.cxx:103
 AliEveMUONChamber.cxx:104
 AliEveMUONChamber.cxx:105
 AliEveMUONChamber.cxx:106
 AliEveMUONChamber.cxx:107
 AliEveMUONChamber.cxx:108
 AliEveMUONChamber.cxx:109
 AliEveMUONChamber.cxx:110
 AliEveMUONChamber.cxx:111
 AliEveMUONChamber.cxx:112
 AliEveMUONChamber.cxx:113
 AliEveMUONChamber.cxx:114
 AliEveMUONChamber.cxx:115
 AliEveMUONChamber.cxx:116
 AliEveMUONChamber.cxx:117
 AliEveMUONChamber.cxx:118
 AliEveMUONChamber.cxx:119
 AliEveMUONChamber.cxx:120
 AliEveMUONChamber.cxx:121
 AliEveMUONChamber.cxx:122
 AliEveMUONChamber.cxx:123
 AliEveMUONChamber.cxx:124
 AliEveMUONChamber.cxx:125
 AliEveMUONChamber.cxx:126
 AliEveMUONChamber.cxx:127
 AliEveMUONChamber.cxx:128
 AliEveMUONChamber.cxx:129
 AliEveMUONChamber.cxx:130
 AliEveMUONChamber.cxx:131
 AliEveMUONChamber.cxx:132
 AliEveMUONChamber.cxx:133
 AliEveMUONChamber.cxx:134
 AliEveMUONChamber.cxx:135
 AliEveMUONChamber.cxx:136
 AliEveMUONChamber.cxx:137
 AliEveMUONChamber.cxx:138
 AliEveMUONChamber.cxx:139
 AliEveMUONChamber.cxx:140
 AliEveMUONChamber.cxx:141
 AliEveMUONChamber.cxx:142
 AliEveMUONChamber.cxx:143
 AliEveMUONChamber.cxx:144
 AliEveMUONChamber.cxx:145
 AliEveMUONChamber.cxx:146
 AliEveMUONChamber.cxx:147
 AliEveMUONChamber.cxx:148
 AliEveMUONChamber.cxx:149
 AliEveMUONChamber.cxx:150
 AliEveMUONChamber.cxx:151
 AliEveMUONChamber.cxx:152
 AliEveMUONChamber.cxx:153
 AliEveMUONChamber.cxx:154
 AliEveMUONChamber.cxx:155
 AliEveMUONChamber.cxx:156
 AliEveMUONChamber.cxx:157
 AliEveMUONChamber.cxx:158
 AliEveMUONChamber.cxx:159
 AliEveMUONChamber.cxx:160
 AliEveMUONChamber.cxx:161
 AliEveMUONChamber.cxx:162
 AliEveMUONChamber.cxx:163
 AliEveMUONChamber.cxx:164
 AliEveMUONChamber.cxx:165
 AliEveMUONChamber.cxx:166
 AliEveMUONChamber.cxx:167
 AliEveMUONChamber.cxx:168
 AliEveMUONChamber.cxx:169
 AliEveMUONChamber.cxx:170
 AliEveMUONChamber.cxx:171
 AliEveMUONChamber.cxx:172
 AliEveMUONChamber.cxx:173
 AliEveMUONChamber.cxx:174
 AliEveMUONChamber.cxx:175
 AliEveMUONChamber.cxx:176
 AliEveMUONChamber.cxx:177
 AliEveMUONChamber.cxx:178
 AliEveMUONChamber.cxx:179
 AliEveMUONChamber.cxx:180
 AliEveMUONChamber.cxx:181
 AliEveMUONChamber.cxx:182
 AliEveMUONChamber.cxx:183
 AliEveMUONChamber.cxx:184
 AliEveMUONChamber.cxx:185
 AliEveMUONChamber.cxx:186
 AliEveMUONChamber.cxx:187
 AliEveMUONChamber.cxx:188
 AliEveMUONChamber.cxx:189
 AliEveMUONChamber.cxx:190
 AliEveMUONChamber.cxx:191
 AliEveMUONChamber.cxx:192
 AliEveMUONChamber.cxx:193
 AliEveMUONChamber.cxx:194
 AliEveMUONChamber.cxx:195
 AliEveMUONChamber.cxx:196
 AliEveMUONChamber.cxx:197
 AliEveMUONChamber.cxx:198
 AliEveMUONChamber.cxx:199
 AliEveMUONChamber.cxx:200
 AliEveMUONChamber.cxx:201
 AliEveMUONChamber.cxx:202
 AliEveMUONChamber.cxx:203
 AliEveMUONChamber.cxx:204
 AliEveMUONChamber.cxx:205
 AliEveMUONChamber.cxx:206
 AliEveMUONChamber.cxx:207
 AliEveMUONChamber.cxx:208
 AliEveMUONChamber.cxx:209
 AliEveMUONChamber.cxx:210
 AliEveMUONChamber.cxx:211
 AliEveMUONChamber.cxx:212
 AliEveMUONChamber.cxx:213
 AliEveMUONChamber.cxx:214
 AliEveMUONChamber.cxx:215
 AliEveMUONChamber.cxx:216
 AliEveMUONChamber.cxx:217
 AliEveMUONChamber.cxx:218
 AliEveMUONChamber.cxx:219
 AliEveMUONChamber.cxx:220
 AliEveMUONChamber.cxx:221
 AliEveMUONChamber.cxx:222
 AliEveMUONChamber.cxx:223
 AliEveMUONChamber.cxx:224
 AliEveMUONChamber.cxx:225
 AliEveMUONChamber.cxx:226
 AliEveMUONChamber.cxx:227
 AliEveMUONChamber.cxx:228
 AliEveMUONChamber.cxx:229
 AliEveMUONChamber.cxx:230
 AliEveMUONChamber.cxx:231
 AliEveMUONChamber.cxx:232
 AliEveMUONChamber.cxx:233
 AliEveMUONChamber.cxx:234
 AliEveMUONChamber.cxx:235
 AliEveMUONChamber.cxx:236
 AliEveMUONChamber.cxx:237
 AliEveMUONChamber.cxx:238
 AliEveMUONChamber.cxx:239
 AliEveMUONChamber.cxx:240
 AliEveMUONChamber.cxx:241
 AliEveMUONChamber.cxx:242
 AliEveMUONChamber.cxx:243
 AliEveMUONChamber.cxx:244
 AliEveMUONChamber.cxx:245
 AliEveMUONChamber.cxx:246
 AliEveMUONChamber.cxx:247
 AliEveMUONChamber.cxx:248
 AliEveMUONChamber.cxx:249
 AliEveMUONChamber.cxx:250
 AliEveMUONChamber.cxx:251
 AliEveMUONChamber.cxx:252
 AliEveMUONChamber.cxx:253
 AliEveMUONChamber.cxx:254
 AliEveMUONChamber.cxx:255
 AliEveMUONChamber.cxx:256
 AliEveMUONChamber.cxx:257
 AliEveMUONChamber.cxx:258
 AliEveMUONChamber.cxx:259
 AliEveMUONChamber.cxx:260
 AliEveMUONChamber.cxx:261
 AliEveMUONChamber.cxx:262
 AliEveMUONChamber.cxx:263
 AliEveMUONChamber.cxx:264
 AliEveMUONChamber.cxx:265
 AliEveMUONChamber.cxx:266
 AliEveMUONChamber.cxx:267
 AliEveMUONChamber.cxx:268
 AliEveMUONChamber.cxx:269
 AliEveMUONChamber.cxx:270
 AliEveMUONChamber.cxx:271
 AliEveMUONChamber.cxx:272
 AliEveMUONChamber.cxx:273
 AliEveMUONChamber.cxx:274
 AliEveMUONChamber.cxx:275
 AliEveMUONChamber.cxx:276
 AliEveMUONChamber.cxx:277
 AliEveMUONChamber.cxx:278
 AliEveMUONChamber.cxx:279
 AliEveMUONChamber.cxx:280
 AliEveMUONChamber.cxx:281
 AliEveMUONChamber.cxx:282
 AliEveMUONChamber.cxx:283
 AliEveMUONChamber.cxx:284
 AliEveMUONChamber.cxx:285
 AliEveMUONChamber.cxx:286
 AliEveMUONChamber.cxx:287
 AliEveMUONChamber.cxx:288
 AliEveMUONChamber.cxx:289
 AliEveMUONChamber.cxx:290
 AliEveMUONChamber.cxx:291
 AliEveMUONChamber.cxx:292
 AliEveMUONChamber.cxx:293
 AliEveMUONChamber.cxx:294
 AliEveMUONChamber.cxx:295
 AliEveMUONChamber.cxx:296
 AliEveMUONChamber.cxx:297
 AliEveMUONChamber.cxx:298
 AliEveMUONChamber.cxx:299
 AliEveMUONChamber.cxx:300
 AliEveMUONChamber.cxx:301
 AliEveMUONChamber.cxx:302
 AliEveMUONChamber.cxx:303
 AliEveMUONChamber.cxx:304
 AliEveMUONChamber.cxx:305
 AliEveMUONChamber.cxx:306
 AliEveMUONChamber.cxx:307
 AliEveMUONChamber.cxx:308
 AliEveMUONChamber.cxx:309
 AliEveMUONChamber.cxx:310
 AliEveMUONChamber.cxx:311
 AliEveMUONChamber.cxx:312
 AliEveMUONChamber.cxx:313
 AliEveMUONChamber.cxx:314
 AliEveMUONChamber.cxx:315
 AliEveMUONChamber.cxx:316
 AliEveMUONChamber.cxx:317
 AliEveMUONChamber.cxx:318
 AliEveMUONChamber.cxx:319
 AliEveMUONChamber.cxx:320
 AliEveMUONChamber.cxx:321
 AliEveMUONChamber.cxx:322
 AliEveMUONChamber.cxx:323
 AliEveMUONChamber.cxx:324
 AliEveMUONChamber.cxx:325
 AliEveMUONChamber.cxx:326
 AliEveMUONChamber.cxx:327
 AliEveMUONChamber.cxx:328
 AliEveMUONChamber.cxx:329
 AliEveMUONChamber.cxx:330
 AliEveMUONChamber.cxx:331
 AliEveMUONChamber.cxx:332
 AliEveMUONChamber.cxx:333
 AliEveMUONChamber.cxx:334
 AliEveMUONChamber.cxx:335
 AliEveMUONChamber.cxx:336
 AliEveMUONChamber.cxx:337
 AliEveMUONChamber.cxx:338
 AliEveMUONChamber.cxx:339
 AliEveMUONChamber.cxx:340
 AliEveMUONChamber.cxx:341
 AliEveMUONChamber.cxx:342
 AliEveMUONChamber.cxx:343
 AliEveMUONChamber.cxx:344
 AliEveMUONChamber.cxx:345
 AliEveMUONChamber.cxx:346
 AliEveMUONChamber.cxx:347
 AliEveMUONChamber.cxx:348
 AliEveMUONChamber.cxx:349
 AliEveMUONChamber.cxx:350
 AliEveMUONChamber.cxx:351
 AliEveMUONChamber.cxx:352
 AliEveMUONChamber.cxx:353
 AliEveMUONChamber.cxx:354
 AliEveMUONChamber.cxx:355
 AliEveMUONChamber.cxx:356
 AliEveMUONChamber.cxx:357
 AliEveMUONChamber.cxx:358
 AliEveMUONChamber.cxx:359
 AliEveMUONChamber.cxx:360
 AliEveMUONChamber.cxx:361
 AliEveMUONChamber.cxx:362
 AliEveMUONChamber.cxx:363
 AliEveMUONChamber.cxx:364
 AliEveMUONChamber.cxx:365
 AliEveMUONChamber.cxx:366
 AliEveMUONChamber.cxx:367
 AliEveMUONChamber.cxx:368
 AliEveMUONChamber.cxx:369
 AliEveMUONChamber.cxx:370
 AliEveMUONChamber.cxx:371