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 bias settings/voltages
//

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

#include "AliEMCALBiasAPD.h"

using namespace std;

ClassImp(AliEMCALBiasAPD)

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

//____________________________________________________________________________
void AliEMCALBiasAPD::ReadTextBiasAPDInfo(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("AliEMCALBiasAPD::ReadBiasAPDInfo - 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 iElecId = 0;
  Int_t iDAC = 0;
  Float_t voltage = 0;

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

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

    if (!inputFile) {
      printf("AliEMCALBiasAPD::ReadBiasAPDInfo - 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 >> iElecId >> iDAC >> voltage;

      // check that input values are not out bounds
      if (iCol<0 || iCol>(AliEMCALGeoParams::fgkEMCALCols-1) ||
	  iRow<0 || iRow>(AliEMCALGeoParams::fgkEMCALRows-1) ) {
	printf("AliEMCALBiasAPD::ReadBiasAPDInfo - 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->SetElecId(iCol, iRow, iElecId);
      t->SetDAC(iCol, iRow, iDAC);
      t->SetVoltage(iCol, iRow, voltage);
    }

  } // i, SuperModule

  inputFile.close();

  return;
}

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

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

  Int_t iCol = 0;
  Int_t iRow = 0;
  Int_t iElecId = 0;
  Int_t iDAC = 0;
  Float_t voltage = 0;

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

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

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

      iElecId = t->GetElecId(iCol, iRow);
      iDAC = t->GetDAC(iCol, iRow);
      voltage = t->GetVoltage(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 << " " 
		 << iElecId << " " << iDAC << " "
		 << voltage << endl;
    }

  } // i, SuperModule

  outputFile.close();

  return;
}

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

  ReadTreeBiasAPDInfo(tree, swapSides);

  inputFile.Close();

  return;
}

//____________________________________________________________________________
void AliEMCALBiasAPD::ReadTreeBiasAPDInfo(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 iElecId = 0;
  Int_t iDAC = 0;
  Float_t voltage = 0;     
  // end - all values

  // declare the branches
  tree->SetBranchAddress("iSM", &iSM);
  tree->SetBranchAddress("iCol", &iCol);
  tree->SetBranchAddress("iRow", &iRow);
  tree->SetBranchAddress("iElecId", &iElecId);
  tree->SetBranchAddress("iDAC", &iDAC);
  tree->SetBranchAddress("voltage", &voltage);

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

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

    t->SetElecId(iCol, iRow, iElecId);
    t->SetDAC(iCol, iRow, iDAC);
    t->SetVoltage(iCol, iRow, voltage);

  } // 

  return;
}

//____________________________________________________________________________
void AliEMCALBiasAPD::WriteRootBiasAPDInfo(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 iCol = 0;
  Int_t iRow = 0;
  Int_t iElecId = 0;
  Int_t iDAC = 0;
  Float_t voltage = 0;
  // declare the branches
  tree->Branch("iSM", &iSM, "iSM/I");
  tree->Branch("iCol", &iCol, "iCol/I");
  tree->Branch("iRow", &iRow, "iRow/I");
  tree->Branch("iElecId", &iElecId, "iElecId/I");
  tree->Branch("iDAC", &iDAC, "iDAC/I");
  tree->Branch("voltage", &voltage, "voltage/F");

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

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

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

      iElecId = t->GetElecId(iCol, iRow);
      iDAC = t->GetDAC(iCol, iRow);
      voltage = t->GetVoltage(iCol, iRow);

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

      tree->Fill();
    }

  } // i, SuperModule

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

  return;
}

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

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

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

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