ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: $ */

// Objects of this class contain basis for absolute calibrations
//

#include <fstream>
#include <TString.h>
#include <TFile.h>
#include <TTree.h>

#include "AliEMCALCalibAbs.h"

using namespace std;

ClassImp(AliEMCALCalibAbs)

//____________________________________________________________________________
AliEMCALCalibAbs::AliEMCALCalibAbs(const int nSM) : 
  fNSuperModule(nSM),
  fSuperModuleData()
{
  //Default constructor.
  for (int i=0; i<fNSuperModule; i++) {
    fSuperModuleData.Add(new AliEMCALSuperModuleCalibAbs(i));
  }
  fSuperModuleData.Compress(); // compress the TObjArray
  fSuperModuleData.SetOwner(kTRUE); 
}

//____________________________________________________________________________
void AliEMCALCalibAbs::ReadTextCalibAbsInfo(Int_t nSM, const TString &txtFileName,
					    Bool_t swapSides)
{
  //Read data from txt file. ; coordinates given on SuperModule basis

  std::ifstream inputFile(txtFileName.Data());
  if (!inputFile) {
    printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Cannot open the APD info file %s\n", txtFileName.Data());
    return;
  }

  fNSuperModule = nSM;

  Int_t iSM = 0; // SuperModule index
  Int_t iCol = 0;
  Int_t iRow = 0;

  // list of values to be read
  // first: overall values for the whole SuperModule
  Int_t iCalibMethod = 0; 
  Int_t iCalibPass = 0; 
  Float_t absoluteCalib = 0; 
  // third: info for each tower
  Float_t relativeCalib = 0; // (ADC>GeV relative gain/conversion), value around 1
  // end - all values

  Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;

  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];
    if (!inputFile) {
      printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Error while reading input file; likely EOF..\n");
      return;
    }
    inputFile >> iSM;
    t->SetSuperModuleNum(iSM);

    // first: overall values for the whole SuperModule
    inputFile >> iCalibMethod >> iCalibPass >> absoluteCalib;
    t->SetCalibMethod(iCalibMethod);
    t->SetCalibPass(iCalibPass);
    t->SetAbsoluteCalib(absoluteCalib);

    // third: info for each tower
    for (Int_t j=0; j<nAPDPerSM; j++) {
      inputFile >> iCol >> iRow >> relativeCalib;

      // check that input values are not out bounds
      if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
	  iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) ) {
	printf("AliEMCALCalibAbs::ReadCalibAbsInfo - Error while reading input file; j %d iCol %d iRow %d\n", j, iCol, iRow);
      return;
      }

      // assume that this info is already swapped and done for this basis?
      if (swapSides) {
	// C side, oriented differently than A side: swap is requested
	iCol = AliEMCALGeoParams::fgkEMCALCols-1 - iCol;
	iRow = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
      }

      t->SetRelativeCalib(iCol, iRow, relativeCalib);
    }

  } // i, SuperModule

  inputFile.close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibAbs::WriteTextCalibAbsInfo(const TString &txtFileName,
					     Bool_t swapSides)
{
  // write data to txt file. ; coordinates given on SuperModule basis

  std::ofstream outputFile(txtFileName.Data());
  if (!outputFile) {
    printf("AliEMCALCalibAbs::WriteCalibAbsInfo - Cannot open the APD output file %s\n", txtFileName.Data());
    return;
  }

  Int_t iCol = 0;
  Int_t iRow = 0;

  Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
  Float_t relativeCalib = 0;
  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];

    // first: overall values for the whole SuperModule
    outputFile << t->GetSuperModuleNum() << endl;
    outputFile << t->GetCalibMethod() << " " 
	       << t->GetCalibPass() << " " 
	       << t->GetAbsoluteCalib() << endl;

    // third: info for each tower
    for (Int_t j=0; j<nAPDPerSM; j++) {
      iCol = j / AliEMCALGeoParams::fgkEMCALRows;
      iRow = j % AliEMCALGeoParams::fgkEMCALRows;

      relativeCalib = t->GetRelativeCalib(iCol, iRow);

      if (swapSides) {
	// C side, oriented differently than A side: swap is requested
	iCol = AliEMCALGeoParams::fgkEMCALCols-1 - iCol;
	iRow = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
      }

      outputFile << iCol << " " << iRow 
		 << " " << relativeCalib << endl;
    }

  } // i, SuperModule

  outputFile.close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibAbs::ReadRootCalibAbsInfo(const TString &rootFileName,
					    Bool_t swapSides)
{
  //Read data from root file. ; coordinates given on SuperModule basis
  TFile inputFile(rootFileName, "read");  

  TTree *tree = (TTree*) inputFile.Get("tree");

  ReadTreeCalibAbsInfo(tree, swapSides);

  inputFile.Close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibAbs::ReadTreeCalibAbsInfo(TTree *tree,
					    Bool_t swapSides)
{
  // how many SuperModule's worth of info do we have?
  Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
  fNSuperModule = tree->GetEntries();

  Int_t iSM = 0; // SuperModule index
  // list of values to be read
  // first: overall values for the whole SuperModule
  Int_t iCalibMethod = 0; 
  Int_t iCalibPass = 0; 
  Float_t absoluteCalib = 0; 
  // third: info for each tower
  Float_t relativeCalib[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  // end - all values

  // just to make the initializations of the arrays are done correctly, let's use memset
  memset(relativeCalib, 0, sizeof(relativeCalib)); 

  // declare the branches
  tree->SetBranchAddress("iSM", &iSM);
  tree->SetBranchAddress("CalibMethod", &iCalibMethod);
  tree->SetBranchAddress("CalibPass", &iCalibPass);
  tree->SetBranchAddress("AbsoluteCalib", &absoluteCalib);
  //
  tree->SetBranchAddress("RelativeCalib", relativeCalib);

  // indices for looping over the towers
  Int_t iCol = 0;
  Int_t iRow = 0;

  for (int ient=0; ient<tree->GetEntries(); ient++) {
    tree->GetEntry(ient);

    // assume the index SuperModules come in order: i=iSM
    AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[iSM];

    t->SetSuperModuleNum(iSM);
    // first, overall values
    t->SetCalibMethod(iCalibMethod);
    t->SetCalibPass(iCalibPass);
    t->SetAbsoluteCalib(absoluteCalib);

    // third: info for each tower
    for (Int_t j=0; j<nAPDPerSM; j++) {
      iCol = j / AliEMCALGeoParams::fgkEMCALRows;
      iRow = j % AliEMCALGeoParams::fgkEMCALRows;

      // help variables: possibly modified or swapped indices
      int iColMod = iCol;
      int iRowMod = iRow;
      // assume that this info is already swapped and done for this basis?
      if (swapSides) {
	// C side, oriented differently than A side: swap is requested
	iColMod = AliEMCALGeoParams::fgkEMCALCols-1 - iCol;
	iRowMod = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
      }

      t->SetRelativeCalib(iColMod, iRowMod, relativeCalib[iCol][iRow]);
    }

  } // loop over entries

  return;
}

//____________________________________________________________________________
void AliEMCALCalibAbs::WriteRootCalibAbsInfo(const TString &rootFileName,
					     Bool_t swapSides)
{
  // write data to root file. ; coordinates given on SuperModule basis
  TFile destFile(rootFileName, "recreate");  
  if (destFile.IsZombie()) {
    return;
  }  
  destFile.cd();

  TTree *tree = new TTree("tree","");

  // variables for filling the TTree
  Int_t iSM = 0; // SuperModule index
  // list of values to be written
  // first: overall values for the whole SuperModule
  Int_t iCalibMethod = 0; 
  Int_t iCalibPass = 0; 
  Float_t absoluteCalib = 0; 
  // third: info for each tower
  Float_t relativeCalib[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  // end - all values

  // just to make the initializations of the arrays are done correctly, let's use memset
  memset(relativeCalib, 0, sizeof(relativeCalib)); 

  Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
  // for looping over towers
  Int_t iCol = 0;
  Int_t iRow = 0;

  // declare the branches
  // first
  tree->Branch("iSM", &iSM, "iSM/I");
  tree->Branch("CalibMethod", &iCalibMethod, "CalibMethod/I");
  tree->Branch("CalibPass", &iCalibPass, "CalibPass/I");
  tree->Branch("AbsoluteCalib", &absoluteCalib, "AbsoluteCalib/F");
  // third: info for each tower; see if a 2D array works OK or if we'll have to use 1D arrays instead 
  tree->Branch( "RelativeCalib", &relativeCalib, Form("RelativeCalib[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );

  for (iSM = 0; iSM < fNSuperModule; iSM++) {
    AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[iSM];

    iSM = t->GetSuperModuleNum();
    // first, overall values
    iCalibMethod = t->GetCalibMethod();
    iCalibPass = t->GetCalibPass();
    absoluteCalib = t->GetAbsoluteCalib();

    // third: info for each tower
    for (Int_t j=0; j<nAPDPerSM; j++) {
      iCol = j / AliEMCALGeoParams::fgkEMCALRows;
      iRow = j % AliEMCALGeoParams::fgkEMCALRows;

      // help variables: possibly modified or swapped indices
      int iColMod = iCol;
      int iRowMod = iRow;
      // assume that this info is already swapped and done for this basis?
      if (swapSides) {
	// C side, oriented differently than A side: swap is requested
	iColMod = AliEMCALGeoParams::fgkEMCALCols-1 - iCol;
	iRowMod = AliEMCALGeoParams::fgkEMCALRows-1 - iRow;
      }

      relativeCalib[iColMod][iRowMod] = t->GetRelativeCalib(iCol, iRow);
    }

    tree->Fill();
  } // i, SuperModule

  tree->Write();
  destFile.Close();

  return;
}

//____________________________________________________________________________
AliEMCALCalibAbs::~AliEMCALCalibAbs()
{
  fSuperModuleData.Delete();
}

//____________________________________________________________________________
AliEMCALSuperModuleCalibAbs * AliEMCALCalibAbs::GetSuperModuleCalibAbsNum(Int_t supModIndex)const
{ // getter via index
  for (int i=0; i<fNSuperModule; i++) {
    AliEMCALSuperModuleCalibAbs * t = (AliEMCALSuperModuleCalibAbs*) fSuperModuleData[i];
    if (t->GetSuperModuleNum() == supModIndex) {
      return t;
    }
  }

  // if we arrived here, then nothing was found.. just return a NULL pointer 
  return NULL;
}

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