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 APD calibration and map info
//

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

#include "AliEMCALCalibMapAPD.h"

using namespace std;

ClassImp(AliEMCALCalibMapAPD)

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

//____________________________________________________________________________
void AliEMCALCalibMapAPD::ReadTextCalibMapAPDInfo(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("AliEMCALCalibMapAPD::ReadCalibMapAPDInfo - 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
  Int_t iHW = 0;
  Int_t iAPDNum = 0;
  Float_t v30 = 0;     
  Float_t par[3] = {0};   
  Float_t parErr[3] = {0}; 
  Int_t iBreakDown = 0;
  Float_t darkCurrent = 0; 
  // end - all values

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

  for (Int_t i = 0; i < fNSuperModule; i++) {
    AliEMCALSuperModuleCalibMapAPD * t = (AliEMCALSuperModuleCalibMapAPD*) fSuperModuleData[i];
    if (!inputFile) {
      printf("AliEMCALCalibMapAPD::ReadCalibMapAPDInfo - 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 >> iHW 
		>> iAPDNum >> v30 
		>> par[0] >> par[1] >> par[2]
		>> parErr[0] >> parErr[1] >> parErr[2]
		>> iBreakDown >> darkCurrent;

      // check that input values are not out bounds
      if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
	  iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) ) {
	printf("AliEMCALCalibMapAPD::ReadCalibMapAPDInfo - 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;
      }

      AliEMCALCalibMapAPDVal * v = t->GetAPDVal(iCol, iRow);

      v->SetHardWareId(iHW);
      v->SetAPDNum(iAPDNum);
      v->SetV30(v30);
      v->SetPar(0, par[0]);
      v->SetPar(1, par[1]);
      v->SetPar(2, par[2]);
      v->SetParErr(0, parErr[0]);
      v->SetParErr(1, parErr[1]);
      v->SetParErr(2, parErr[2]);
      v->SetBreakDown(iBreakDown);
      v->SetDarkCurrent(darkCurrent);
    }

  } // i, SuperModule

  inputFile.close();

  return;
}

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

  std::ofstream outputFile(txtFileName.Data());
  if (!outputFile) {
    printf("AliEMCALCalibMapAPD::WriteCalibMapAPDInfo - 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;

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

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

      AliEMCALCalibMapAPDVal * v = t->GetAPDVal(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 << " " << v->GetHardWareId() 
		 << " " << v->GetAPDNum() << " " << v->GetV30() 
		 << " " << v->GetPar(0) << " " << v->GetPar(1) << " " << v->GetPar(2)
		 << " " << v->GetParErr(0) << " " << v->GetParErr(1) << " " << v->GetParErr(2)
		 << " " << v->GetBreakDown() << " " << v->GetDarkCurrent() << endl;
    }

  } // i, SuperModule

  outputFile.close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibMapAPD::ReadRootCalibMapAPDInfo(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");

  ReadTreeCalibMapAPDInfo(tree, swapSides);

  inputFile.Close();

  return;
}

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

  Int_t iSM = 0; // SuperModule index
  Int_t iCol = 0;
  Int_t iRow = 0;
  // list of values to be read
  Int_t iHW = 0;
  Int_t iAPDNum = 0;
  Float_t v30 = 0;     
  Float_t par[3] = {0};   
  Float_t parErr[3] = {0}; 
  Int_t iBreakDown = 0;
  Float_t darkCurrent = 0; 
  // end - all values

  // declare the branches
  tree->SetBranchAddress("iSM", &iSM);
  tree->SetBranchAddress("iCol", &iCol);
  tree->SetBranchAddress("iRow", &iRow);
  tree->SetBranchAddress("iHW", &iHW);
  tree->SetBranchAddress("APDNum", &iAPDNum);
  tree->SetBranchAddress("V30", &v30);
  tree->SetBranchAddress("Par", par);
  tree->SetBranchAddress("ParErr", parErr);
  tree->SetBranchAddress("BreakDown", &iBreakDown);
  tree->SetBranchAddress("DarkCurrent", &darkCurrent);

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

    // assume the index SuperModules come in order: i=iSM
    AliEMCALSuperModuleCalibMapAPD * t = (AliEMCALSuperModuleCalibMapAPD*) 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;
    }

    AliEMCALCalibMapAPDVal * v = t->GetAPDVal(iCol, iRow);

    v->SetHardWareId(iHW);
    v->SetAPDNum(iAPDNum);
    v->SetV30(v30);
    v->SetPar(0, par[0]);
    v->SetPar(1, par[1]);
    v->SetPar(2, par[2]);
    v->SetParErr(0, parErr[0]);
    v->SetParErr(1, parErr[1]);
    v->SetParErr(2, parErr[2]);
    v->SetBreakDown(iBreakDown);
    v->SetDarkCurrent(darkCurrent);
  } // 

  return;
}

//____________________________________________________________________________
void AliEMCALCalibMapAPD::WriteRootCalibMapAPDInfo(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
  Int_t iHW = 0;
  Int_t iAPDNum = 0;
  Float_t v30 = 0;     
  Float_t par[3] = {0};   
  Float_t parErr[3] = {0}; 
  Int_t iBreakDown = 0;
  Float_t darkCurrent = 0; 
  //
  Int_t iCol = 0;
  Int_t iRow = 0;
  // declare the branches
  tree->Branch("iSM", &iSM, "iSM/I");
  tree->Branch("iCol", &iCol, "iCol/I");
  tree->Branch("iRow", &iRow, "iRow/I");
  tree->Branch("iHW", &iHW, "iHW/I");
  tree->Branch("APDNum", &iAPDNum, "APDNum/I");
  tree->Branch("V30", &v30, "V30/F");
  tree->Branch("Par", &par, "Par[3]/F");
  tree->Branch("ParErr", &parErr, "ParErr[3]/F");
  tree->Branch("BreakDown", &iBreakDown, "BreakDown/I");
  tree->Branch("DarkCurrent", &darkCurrent, "DarkCurrent/F");

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

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

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

      AliEMCALCalibMapAPDVal * v = t->GetAPDVal(iCol, iRow);

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

      iHW = v->GetHardWareId(); 
      iAPDNum = v->GetAPDNum();
      v30 = v->GetV30();
      for (int k=0; k<3; k++) {
	par[k] = v->GetPar(k);
	parErr[k] = v->GetParErr(k);
      } 
      iBreakDown = v->GetBreakDown();
      darkCurrent = v->GetDarkCurrent();

      tree->Fill();
    }

  } // i, SuperModule

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

  return;
}

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

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

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

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