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 info on time-dependent corrections
//

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

#include "AliEMCALCalibTimeDepCorrection.h"

using namespace std;

ClassImp(AliEMCALCalibTimeDepCorrection)

//____________________________________________________________________________
AliEMCALCalibTimeDepCorrection::AliEMCALCalibTimeDepCorrection(const int nSM) : 
  fNSuperModule(nSM),
  fSuperModuleData(),
  fStartTime(0),
  fNTimeBins(0),
  fTimeBinSize(0)
{
  //Default constructor.
  for (int i=0; i<fNSuperModule; i++) {
    fSuperModuleData.Add(new AliEMCALSuperModuleCalibTimeDepCorrection(i));
  }
  fSuperModuleData.Compress(); // compress the TObjArray
}

//____________________________________________________________________________
void AliEMCALCalibTimeDepCorrection::InitCorrection(Int_t nSM, Int_t nBins, Float_t val)
{
  // This methods assumes that you are using SuperModules 0..nSM-1
  fNSuperModule = nSM;

  Int_t iSM = 0; // SuperModule index
  Int_t iCol = 0;
  Int_t iRow = 0;
  Int_t nCorr = nBins;
  Float_t correction = val;

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

  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibTimeDepCorrection * t = (AliEMCALSuperModuleCalibTimeDepCorrection*) fSuperModuleData[i];
    iSM = i;
    t->SetSuperModuleNum(iSM); // assume SMs are coming in order

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

      // set size of TArray
      t->GetCorrection(iCol,iRow)->Set(nCorr);
      for (Int_t k=0; k<nCorr; k++) {
	// add to TArray
	t->GetCorrection(iCol,iRow)->AddAt(correction, k); // AddAt = SetAt..
      }
    }

  } // i, SuperModule

  return;
}

//____________________________________________________________________________
void AliEMCALCalibTimeDepCorrection::SetCorrection(Int_t supModIndex, Int_t iCol, Int_t iRow, Int_t iBin, Float_t val)
{ // if you call for non-existing data, there may be a crash..
  ((AliEMCALSuperModuleCalibTimeDepCorrection*)fSuperModuleData[supModIndex])->GetCorrection(iCol,iRow)->AddAt(val, iBin); // AddAt = SetAt..
 return; 
}

//____________________________________________________________________________
Float_t AliEMCALCalibTimeDepCorrection::GetCorrection(Int_t supModIndex, Int_t iCol, Int_t iRow, Int_t iBin) const
{ // if you call for non-existing data, there may be a crash..
  return ((AliEMCALSuperModuleCalibTimeDepCorrection*)fSuperModuleData[supModIndex])->GetCorrection(iCol,iRow)->At(iBin);
}

//____________________________________________________________________________
void AliEMCALCalibTimeDepCorrection::ReadTextInfo(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("AliEMCALCalibTimeDepCorrection::ReadTextInfo - 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;
  Int_t nCorr = 0;
  Float_t correction = 0;

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

  // read header info 
  inputFile >> fStartTime >> fNTimeBins >> fTimeBinSize;

  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibTimeDepCorrection * t = (AliEMCALSuperModuleCalibTimeDepCorrection*) fSuperModuleData[i];

    if (!inputFile) {
      printf("AliEMCALCalibTimeDepCorrection::ReadTextInfo - Error while reading input file; likely EOF..\n");
      return;
    }
    inputFile >> iSM;
    t->SetSuperModuleNum(iSM);

    for (Int_t j=0; j<nAPDPerSM; j++) {
      inputFile >> iCol >> iRow >> nCorr;

      // check that input values are not out bounds
      if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
	  iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) || 
	  nCorr<0 ) {
	printf("AliEMCALCalibTimeDepCorrection::ReadTextInfo - Error while reading input file; j %d iCol %d iRow %d nCorr %d\n", j, iCol, iRow, nCorr);
      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;
      }

      // set size of TArray
      t->GetCorrection(iCol,iRow)->Set(nCorr);
      for (Int_t k=0; k<nCorr; k++) {
	inputFile >> correction;
	// add to TArray
	t->GetCorrection(iCol,iRow)->AddAt(correction, k);
      }
    }

  } // i, SuperModule

  inputFile.close();

  return;
}

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

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

  Int_t iCol = 0;
  Int_t iRow = 0;
  Int_t nCorr = 0;

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

  // write header info 
  outputFile << fStartTime << " " << fNTimeBins << " " << fTimeBinSize << endl;

  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibTimeDepCorrection * t = (AliEMCALSuperModuleCalibTimeDepCorrection*) fSuperModuleData[i];
    outputFile << t->GetSuperModuleNum() << endl;

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

      nCorr = t->GetCorrection(iCol,iRow)->GetSize();

      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 << " " << nCorr << endl;
      for (Int_t k=0; k<nCorr; k++) {
	outputFile << t->GetCorrection(iCol,iRow)->At(k) << " ";
      }
      outputFile << endl;

    }

  } // i, SuperModule

  outputFile.close();

  return;
}

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

  TTree *treeGlob = (TTree*) inputFile.Get("treeGlob");
  TTree *treeCorr = (TTree*) inputFile.Get("treeCorr");

  ReadTreeInfo(treeGlob, treeCorr, swapSides);

  inputFile.Close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibTimeDepCorrection::ReadTreeInfo(TTree *treeGlob, TTree *treeCorr,
						  Bool_t swapSides)
{
 // how many SuperModule's worth of entries / APDs do we have?
  Int_t nAPDPerSM = AliEMCALGeoParams::fgkEMCALCols * AliEMCALGeoParams::fgkEMCALRows;
  fNSuperModule = treeCorr->GetEntries() / nAPDPerSM;

  // global variables : only one entry
  treeGlob->SetBranchAddress("fStartTime", &fStartTime);
  treeGlob->SetBranchAddress("fNTimeBins", &fNTimeBins);
  treeGlob->SetBranchAddress("fTimeBinSize", &fTimeBinSize);
  treeGlob->GetEntry(0); 

  Int_t iSM = 0; // SuperModule index
  Int_t iCol = 0;
  Int_t iRow = 0;
  // list of values to be read
  Int_t nCorr = 0;
  Float_t correction[fgkMaxTimeBins] = {0};
  // make sure it's really initialized correctly
  memset(correction, 0, sizeof(correction)); // better safe than sorry
  // end - all values

  // declare the branches
  treeCorr->SetBranchAddress("iSM", &iSM);
  treeCorr->SetBranchAddress("iCol", &iCol);
  treeCorr->SetBranchAddress("iRow", &iRow);
  treeCorr->SetBranchAddress("nCorr", &nCorr);
  treeCorr->SetBranchAddress("correction", correction);

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

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

    // 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;
    }


    // set size of TArray
    t->GetCorrection(iCol,iRow)->Set(nCorr);
    for (Int_t k=0; k<nCorr; k++) {
      // add to TArray
      t->GetCorrection(iCol,iRow)->AddAt(correction[k], k);
    }

  } // entry

  return;
}

//____________________________________________________________________________
void AliEMCALCalibTimeDepCorrection::WriteRootInfo(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 *treeGlob = new TTree("treeGlob","");
  TTree *treeCorr = new TTree("treeCorr","");

  // global part only has one entry
  treeGlob->Branch("fStartTime", &fStartTime, "fStartTime/i"); // unsigned int..
  treeGlob->Branch("fNTimeBins", &fNTimeBins, "fNTimeBins/I");
  treeGlob->Branch("fTimeBinSize", &fTimeBinSize, "fTimeBinSize/I");
  treeGlob->Fill();

  // variables for filling the TTree
  Int_t iSM = 0; // SuperModule index
  Int_t iCol = 0;
  Int_t iRow = 0;
  Int_t nCorr = 0;
  Float_t correction[fgkMaxTimeBins] = {0};
  // make sure it's really initialized correctly
  memset(correction, 0, sizeof(correction)); // better safe than sorry

  // declare the branches
  treeCorr->Branch("iSM", &iSM, "iSM/I");
  treeCorr->Branch("iCol", &iCol, "iCol/I");
  treeCorr->Branch("iRow", &iRow, "iRow/I");
  treeCorr->Branch("nCorr", &nCorr, "nCorr/I");
  treeCorr->Branch("correction", &correction, "correction[nCorr]/F");

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

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

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

      nCorr = t->GetCorrection(iCol,iRow)->GetSize();
      if (nCorr > fgkMaxTimeBins) {
	printf("AliEMCALCalibTimeDepCorrection::WriteRootInfo - too many correction/timebins %d kept\n", nCorr);
	return;
      }

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

      for (Int_t k=0; k<nCorr; k++) {
	correction[k] = t->GetCorrection(iCol,iRow)->At(k);
      }

      treeCorr->Fill();
    }

  } // i, SuperModule

  treeGlob->Write();
  treeCorr->Write();
  destFile.Close();

  return;
}

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

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

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

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