ROOT logo
// EMCAL event display
// Visualization of an EMCAL super module.
//
//  Author: Magali Estienne (magali.estienne@cern.ch)
//  June 30 2008

#include <iostream>
#include <vector>

#include <TString.h>
#include <TEveFrameBox.h>
#include <TEveQuadSet.h>
#include <TEvePointSet.h>
#include <TEveRGBAPalette.h>

#include "AliEveEMCALSModule.h"

class Riostream;
class TEveTrans;
class TEveElement;
class TClonesArray;
class TStyle;
class TBuffer3DTypes;
class TBuffer3D;
class TVirtualPad;
class TVirtualViewer3D;
class AliEveEMCALData;
class AliEMCALHit;
class AliEMCALDigit;
class AliEveEMCALSModuleData;

ClassImp(AliEveEMCALSModule)

Bool_t           AliEveEMCALSModule::fgStaticInit = kFALSE;
Float_t          AliEveEMCALSModule::fgSMBigBBox[3];
Float_t          AliEveEMCALSModule::fgSMSmallBBox[3];
TEveFrameBox*    AliEveEMCALSModule::fgFrameBigBox = 0;
TEveFrameBox*    AliEveEMCALSModule::fgFrameSmallBox = 0;
TEveRGBAPalette* AliEveEMCALSModule::fgFrameDigPalette = 0;
TEveRGBAPalette* AliEveEMCALSModule::fgFrameCluPalette = 0;

AliEveEMCALSModule::AliEveEMCALSModule(Int_t smid, const Text_t* n, const Text_t* t) :
  TEveElement(fFrameColor),
  TNamed(n,t),
  TAtt3D(),
  fEMCALData(0),
  fEMCALSModuleData(0),
  fFrameColor((Color_t)10),
  fSModuleID(smid),
  fQuadSet(new TEveQuadSet(n,t)),
  fQuadSet2(new TEveQuadSet(n,t)),
  fPointSet(new TEvePointSet(n)),
  fClusterSize(5),
  fHitSize(5),
  fDebug(0)
{
  // Constructor.
  Char_t name[256];
  if (smid < 10) {
    snprintf(name,256,"Full Super Module %02d",smid);
  } else {
    snprintf(name,256,"Half Super Module %02d",smid);
  }
  SetName(name);

  // Hits
  fPointSet->IncDenyDestroy();
  AddElement(fPointSet);
  // Digits
  fQuadSet->IncDenyDestroy();
  AddElement(fQuadSet);
  // Clusters
  fQuadSet2->IncDenyDestroy();
  AddElement(fQuadSet2);

}

AliEveEMCALSModule::AliEveEMCALSModule(const AliEveEMCALSModule &esm) :
  TEveElement(fFrameColor),
  TNamed(),
  TAtt3D(),
  fEMCALData(esm.fEMCALData),
  fEMCALSModuleData(esm.fEMCALSModuleData),
  fFrameColor(esm.fFrameColor),
  fSModuleID(esm.fSModuleID),
  fQuadSet(esm.fQuadSet),
  fQuadSet2(esm.fQuadSet2),
  fPointSet(esm.fPointSet),
  fClusterSize(esm.fClusterSize),
  fHitSize(esm.fHitSize),
  fDebug(esm.fDebug)
{
  // Copy constructor.
  Char_t name[256];
  if (fSModuleID < 10) {
    snprintf(name,256,"Full Super Module %02d",fSModuleID);
  } else {
    snprintf(name,256,"Half Super Module %02d",fSModuleID);
  }
  SetName(name);

  // Hits
  fPointSet->IncDenyDestroy();
  AddElement(fPointSet);
  // Digits
  fQuadSet->IncDenyDestroy();
  AddElement(fQuadSet);
  // Clusters
  fQuadSet2->IncDenyDestroy();
  AddElement(fQuadSet2);

}

AliEveEMCALSModule::~AliEveEMCALSModule()
{
  //
  // Destructor.
  //

  fPointSet->DecDenyDestroy();
  fQuadSet->DecDenyDestroy();
  fQuadSet2->DecDenyDestroy();

  if(fEMCALData) fEMCALData->DecRefCount();
}

//______________________________________________________________________________
void AliEveEMCALSModule::DropData() const
{
  //
  // release the sm data
  //

//   fNDigits   = 0;
//   fNClusters = 0;
//   fNHits     = 0;

  return;

}

//______________________________________________________________________________
void AliEveEMCALSModule::InitStatics(AliEveEMCALSModuleData* md)
{
  //
  // Bounding box, Framebox and Palette
  //

  if (fgStaticInit) return;
  fgStaticInit = kTRUE;

  md->GetSModuleBigBox(fgSMBigBBox[0],fgSMBigBBox[1], fgSMBigBBox[2]);
  md->GetSModuleSmallBox(fgSMSmallBBox[0],fgSMSmallBBox[1], fgSMSmallBBox[2]);

  fgFrameBigBox = new TEveFrameBox();
  fgFrameBigBox->SetAABoxCenterHalfSize(0, 0, 0, fgSMBigBBox[0], fgSMBigBBox[1], fgSMBigBBox[2]);
  fgFrameBigBox->SetFrameColor((Color_t)10);
  fgFrameBigBox->IncRefCount();
  fgFrameDigPalette = new TEveRGBAPalette(0,512);
  fgFrameDigPalette->SetLimits(0, 1024);
  fgFrameDigPalette->IncRefCount();

  fgFrameSmallBox = new TEveFrameBox();
  fgFrameSmallBox->SetAABoxCenterHalfSize(0, 0, 0, fgSMSmallBBox[0], fgSMSmallBBox[1], fgSMSmallBBox[2]);
  fgFrameSmallBox->SetFrameColor((Color_t)10);
  fgFrameSmallBox->IncRefCount();
  fgFrameCluPalette  = new TEveRGBAPalette(0,512);
  fgFrameCluPalette->SetLimits(0, 1024);
  fgFrameCluPalette->IncRefCount();
}

//______________________________________________________________________________
void AliEveEMCALSModule::SetClusterSize(Int_t size)
{
  //
  // Cluster point size
  //

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

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

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

//______________________________________________________________________________
void AliEveEMCALSModule::SetDataSource(AliEveEMCALData* const data)
{
  //
  // Set source of data.
  //

  if (data == fEMCALData) return;
  if(fEMCALData) fEMCALData->DecRefCount();
  fEMCALData = data;
  if(fEMCALData) fEMCALData->IncRefCount();

  // Get pointer on SM data
  fEMCALSModuleData = GetSModuleData();
}

//______________________________________________________________________________
AliEveEMCALSModuleData* AliEveEMCALSModule::GetSModuleData() const
{
  //
  // Return source of data.
  //

  return fEMCALData ? fEMCALData->GetSModuleData(fSModuleID) : 0;
}

//______________________________________________________________________________
void AliEveEMCALSModule::UpdateQuads()
{
  //
  // Update hit/digit/cluster representation.
  //

  std::vector< std::vector<Double_t> > bufferDigit;
  std::vector< std::vector<Double_t> > bufferCluster;
  std::vector< std::vector<Float_t> > bufferHit;
  Int_t nDigits, nClusters, nHits, oldSize;
  Float_t hitX, hitY, hitZ;
  Int_t smId = fEMCALSModuleData->GetSmId();

  //--------------------------
  // Hits from runloader
  //--------------------------
  fPointSet->Reset();

  /*
  TEvePointSet* points = fEMCALData->GetPointSetData();
  char form[1000];
  if(points){
    sprintf(form,"N=%d", points->Size());
    points->SetTitle(form);
    points->SetMarkerSize(.5);
    points->SetMarkerColor((Color_t)2);
    fPointSet->AddElement(points);
  }
  else {printf("There is no hits in Runloader \n"); }
  
  */


  if (!fgStaticInit)
    InitStatics(fEMCALSModuleData);

  // digits ------------------------

   // Define TEveQuadSet for digits
   fQuadSet->SetOwnIds(kTRUE);
  fQuadSet->Reset(TEveQuadSet::kQT_RectangleYZFixedDimX, kFALSE, 32);
    fQuadSet->SetDefWidth (fEMCALSModuleData->GetPhiTileSize());
    fQuadSet->SetDefHeight(fEMCALSModuleData->GetEtaTileSize());
    fQuadSet->RefMainTrans().SetFrom(*fEMCALSModuleData->GetSModuleMatrix());
    fQuadSet->SetPalette(fgFrameDigPalette);
    if(smId<fEMCALSModuleData->GetNsmf()) 
      fQuadSet->SetFrame(fgFrameBigBox);
    else fQuadSet->SetFrame(fgFrameSmallBox);

    // Get the digit information from the buffer
    bufferDigit = fEMCALSModuleData->GetDigitBuffer();
    if(!bufferDigit.empty())
      {
	nDigits = fEMCALSModuleData->GetNDigits();
    if(fDebug>1) Info("AliEveEMCALSModule::UpdateQuads", "nDigits: %d", nDigits );
	// loop over digits
	for (Int_t id = 0; id < nDigits; id++) {
	  //	  Int_t iid = (Int_t)bufferDigit[id][0];
	  //	  Int_t isupMod = (Int_t)bufferDigit[id][1];
	  Double_t iamp = bufferDigit[id][2];
	  Int_t amp = (Int_t)(iamp+0.5);
	  //	  Double_t ix = bufferDigit[id][3];
	  Double_t iy = bufferDigit[id][4];
	  Double_t iz = bufferDigit[id][5];
	  
	  // Add digit information to the TEveQuadSet
	  fQuadSet->AddQuad(iy, iz);
	  fQuadSet->QuadValue(amp);
	} // end digits loop
      }
    else { if (fDebug) Info("AliEveEMCALSModule::UpdateQuads", "There is no digits in SM %d \n", smId); }

    // hits --------------------------
    bufferHit = fEMCALSModuleData->GetHitBuffer();
    if(!bufferHit.empty())
      {
	char form[1000];
	nHits = fEMCALSModuleData->GetNHits();
    if(fDebug>1) Info("AliEveEMCALSModule::UpdateQuads", "nHits: %d", nHits);
	oldSize = fPointSet->GrowFor(nHits);
	// Loop over hits
	for (Int_t ih = 0; ih < nHits; ih++) {
	  hitX = bufferHit[ih][3];
	  hitY = bufferHit[ih][4];
	  hitZ = bufferHit[ih][5];
	  fPointSet->SetPoint(ih,hitX,hitY,hitZ);
	  snprintf(form,1000,"N=%d", fPointSet->Size());
	  fPointSet->SetTitle(form);
	  fPointSet->SetMarkerSize(.5);
	  fPointSet->SetMarkerColor((Color_t)2);
	}
      }
    else { if (fDebug) printf("There is no hits in SM %d \n", smId); }

    // clusters ------------------------

    // Define TEveQuadSet for clusters
    fQuadSet2->SetOwnIds(kTRUE);
    fQuadSet2->Reset(TEveQuadSet::kQT_RectangleYZFixedDimX, kFALSE, 32);
    fQuadSet2->SetDefWidth (fEMCALSModuleData->GetPhiTileSize());
    fQuadSet2->SetDefHeight(fEMCALSModuleData->GetEtaTileSize());
    fQuadSet2->RefMainTrans().SetFrom(*fEMCALSModuleData->GetSModuleMatrix());
    fQuadSet2->SetPalette(fgFrameCluPalette);
    if(smId<fEMCALSModuleData->GetNsmf()) 
      fQuadSet2->SetFrame(fgFrameBigBox);
    else fQuadSet2->SetFrame(fgFrameSmallBox);

    // Get the cluster information from the buffer
    bufferCluster = fEMCALSModuleData->GetClusterBuffer();
    if(!bufferCluster.empty())
      {
	nClusters = fEMCALSModuleData->GetNClusters();
    if(fDebug>1) Info("AliEveEMCALSModule::UpdateQuads", "nClusters: %d", nClusters );
	// loop over clusters
	for (Int_t id = 0; id < nClusters; id++) {
	  if(fDebug>1) {
        Info("AliEveEMCALSModule::UpdateQuads", "bufferCluster[%d][0]: %f", id, bufferCluster[id][0] );
        Info("AliEveEMCALSModule::UpdateQuads", "bufferCluster[%d][1]: %f", id, bufferCluster[id][1] );
        Info("AliEveEMCALSModule::UpdateQuads", "bufferCluster[%d][2]: %f", id, bufferCluster[id][2] );
        Info("AliEveEMCALSModule::UpdateQuads", "bufferCluster[%d][3]: %f", id, bufferCluster[id][3] );
        Info("AliEveEMCALSModule::UpdateQuads", "bufferCluster[%d][4]: %f", id, bufferCluster[id][4] );
	  }
	  //	  Int_t isupMod = (Int_t)bufferCluster[id][0];
	  Double_t iamp = bufferCluster[id][1];
	  Int_t amp = (Int_t)(iamp+0.5);
	  //	  Double_t ix = bufferCluster[id][2];
	  Double_t iy = bufferCluster[id][3];
	  Double_t iz = bufferCluster[id][4];
	  
	  // Add cluster information to the TEveQuadSet
	  fQuadSet2->AddQuad(iy, iz);
	  fQuadSet2->QuadValue(amp);
	  //      fQuadSet2->QuadId(iid);

	} // end clusters loop
      }
    else { if (fDebug) Info("AliEveEMCALSModule::UpdateQuads", "There is no clusters in SM %d \n", smId); }

}

//______________________________________________________________________________
void AliEveEMCALSModule::SetSModuleID(Int_t id)
{
  //
  // Set id of the SM to display.
  //

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

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