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 reference calibrations
//

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

#include "AliEMCALCalibReference.h"

using namespace std;

ClassImp(AliEMCALCalibReference)

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

//____________________________________________________________________________
void AliEMCALCalibReference::ReadTextCalibReferenceInfo(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("AliEMCALCalibReference::ReadCalibReferenceInfo - 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 id = 0;

  // list of values to be read
  // first: overall values for the whole SuperModule
  Int_t iReferenceTime = 0; 
  // second: additional info for LED Reference and SM temperature
  Float_t rLEDRefAmp = 0;
  Float_t rLEDRefAmpRMS = 0;
  Int_t iLEDRefHighLow = 0;
  Float_t temperature = 0;
  Float_t temperatureRMS = 0;
  // third: info for each tower
  Int_t iHighLow = 0; // 
  Float_t rLEDAmp = 0; // low gain eq. amplitude
  Float_t rLEDAmpRMS = 0; //
  // end - all values

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

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

    // first: overall values for the whole SuperModule
    inputFile >> iReferenceTime;
    t->SetReferenceTime(iReferenceTime);

    // second: additional info for LED Reference and SM temperature
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
      inputFile >> id >> iLEDRefHighLow >> rLEDRefAmp >> rLEDRefAmpRMS;
      if (id<0 || id>(AliEMCALGeoParams::fgkEMCALLEDRefs-1) ) {
	printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; LEDRef j %d id %d\n", j, id);
	return;
      }
      t->SetLEDRefHighLow(id, iLEDRefHighLow);
      t->SetLEDRefAmp(id, rLEDRefAmp);
      t->SetLEDRefAmpRMS(id, rLEDRefAmpRMS);
    }

    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
      inputFile >> id >> temperature >> temperatureRMS;
      if (id<0 || id>(AliEMCALGeoParams::fgkEMCALTempSensors-1) ) {
	printf("AliEMCALCalibReference::ReadCalibReferenceInfo - Error while reading input file; TempSensor j %d id %d\n", j, id);
	return;
      }
      t->SetTemperature(id, temperature);
      t->SetTemperatureRMS(id, temperatureRMS);
    }

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

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

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

      v->SetHighLow(iHighLow);
      v->SetLEDAmp(rLEDAmp);
      v->SetLEDAmpRMS(rLEDAmpRMS);
    }

  } // i, SuperModule

  inputFile.close();

  return;
}

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

  std::ofstream outputFile(txtFileName.Data());
  if (!outputFile) {
    printf("AliEMCALCalibReference::WriteCalibReferenceInfo - 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++) {
    AliEMCALSuperModuleCalibReference * t = (AliEMCALSuperModuleCalibReference*) fSuperModuleData[i];

    // first: overall values for the whole SuperModule
    outputFile << t->GetSuperModuleNum() << endl;
    outputFile << t->GetReferenceTime() << endl;

    // second: additional info for LED Reference and SM temperature
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
      outputFile << j << " " << t->GetLEDRefHighLow(j) 
		 << " " << t->GetLEDRefAmp(j) << " " << t->GetLEDRefAmpRMS(j) 
		 << endl;
    }
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
      outputFile << j << " " << t->GetTemperature(j) << " " << t->GetTemperatureRMS(j) << endl;
    }

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

      AliEMCALCalibReferenceVal * 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->GetHighLow() 
		 << " " << v->GetLEDAmp() 
		 << " " << v->GetLEDAmpRMS() << endl;
    }

  } // i, SuperModule

  outputFile.close();

  return;
}

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

  ReadTreeCalibReferenceInfo(tree, swapSides);

  inputFile.Close();

  return;
}

//____________________________________________________________________________
void AliEMCALCalibReference::ReadTreeCalibReferenceInfo(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 iReferenceTime= 0; 
  // second: additional info for LED Reference and SM temperature
  Float_t rLEDRefAmp[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
  Float_t rLEDRefAmpRMS[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
  Int_t iLEDRefHighLow[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
  Float_t temperature[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
  Float_t temperatureRMS[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
  // third: info for each tower
  Int_t iHighLow[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  Float_t rLEDAmp[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  Float_t rLEDAmpRMS[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  // end - all values

  // just to make the initializations of the arrays are done correctly, let's use memset
  memset(rLEDRefAmp, 0, sizeof(rLEDRefAmp)); 
  memset(rLEDRefAmpRMS, 0, sizeof(rLEDRefAmpRMS)); 
  memset(iLEDRefHighLow, 0, sizeof(iLEDRefHighLow)); 
  memset(temperature, 0, sizeof(temperature)); 
  memset(temperatureRMS, 0, sizeof(temperatureRMS)); 
  memset(iHighLow, 0, sizeof(iHighLow)); 
  memset(rLEDAmp, 0, sizeof(rLEDAmp)); 
  memset(rLEDAmpRMS, 0, sizeof(rLEDAmpRMS)); 

  // declare the branches
  tree->SetBranchAddress("iSM", &iSM);
  tree->SetBranchAddress("ReferenceTime", &iReferenceTime);
  //
  tree->SetBranchAddress("LEDRefAmp", rLEDRefAmp);
  tree->SetBranchAddress("LEDRefAmpRMS", rLEDRefAmpRMS);
  tree->SetBranchAddress("LEDRefHighLow", iLEDRefHighLow);
  tree->SetBranchAddress("Temperature", temperature);
  tree->SetBranchAddress("TemperatureRMS", temperatureRMS);
  //
  tree->SetBranchAddress("HighLow", iHighLow);
  tree->SetBranchAddress("LEDAmp", rLEDAmp);
  tree->SetBranchAddress("LEDAmpRMS", rLEDAmpRMS);

  // 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
    AliEMCALSuperModuleCalibReference * t = (AliEMCALSuperModuleCalibReference*) fSuperModuleData[iSM];

    t->SetSuperModuleNum(iSM);
    // first, overall values
    t->SetReferenceTime(iReferenceTime);

    // second: additional info for LED references and SM temperatures
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
      t->SetLEDRefAmp(j, rLEDRefAmp[j]);
      t->SetLEDRefAmpRMS(j, rLEDRefAmpRMS[j]);
      t->SetLEDRefHighLow(j, iLEDRefHighLow[j]);
    }
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
      t->SetTemperature(j, temperature[j]);
      t->SetTemperatureRMS(j, temperatureRMS[j]);
    }

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

      AliEMCALCalibReferenceVal * v = t->GetAPDVal(iColMod, iRowMod);

      v->SetHighLow(iHighLow[iCol][iRow]);
      v->SetLEDAmp(rLEDAmp[iCol][iRow]);
      v->SetLEDAmpRMS(rLEDAmpRMS[iCol][iRow]);
    }

  } // loop over entries

  return;
}

//____________________________________________________________________________
void AliEMCALCalibReference::WriteRootCalibReferenceInfo(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 iReferenceTime = 0; 
  // second: additional info for LED Reference and SM temperature
  Float_t rLEDRefAmp[AliEMCALGeoParams::fgkEMCALLEDRefs] = {0};
  Float_t rLEDRefAmpRMS[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
  Int_t iLEDRefHighLow[AliEMCALGeoParams::fgkEMCALLEDRefs]= {0};
  Float_t temperature[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
  Float_t temperatureRMS[AliEMCALGeoParams::fgkEMCALTempSensors]= {0};
  // third: info for each tower
  Int_t iHighLow[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  Float_t rLEDAmp[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  Float_t rLEDAmpRMS[AliEMCALGeoParams::fgkEMCALCols][AliEMCALGeoParams::fgkEMCALRows]; 
  // end - all values

  // just to make the initializations of the arrays are done correctly, let's use memset
  memset(rLEDRefAmp, 0, sizeof(rLEDRefAmp)); 
  memset(rLEDRefAmpRMS, 0, sizeof(rLEDRefAmpRMS)); 
  memset(iLEDRefHighLow, 0, sizeof(iLEDRefHighLow)); 
  memset(temperature, 0, sizeof(temperature)); 
  memset(temperatureRMS, 0, sizeof(temperatureRMS)); 
  memset(iHighLow, 0, sizeof(iHighLow)); 
  memset(rLEDAmp, 0, sizeof(rLEDAmp)); 
  memset(rLEDAmpRMS, 0, sizeof(rLEDAmpRMS)); 

  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("ReferenceTime", &iReferenceTime, "ReferenceTime/I");
  // second  
  tree->Branch( "LEDRefAmp", &rLEDRefAmp, Form("LEDRefAmp[%d]/F", AliEMCALGeoParams::fgkEMCALLEDRefs) );
  tree->Branch( "LEDRefAmpRMS", &rLEDRefAmpRMS, Form("LEDRefAmpRMS[%d]/F", AliEMCALGeoParams::fgkEMCALLEDRefs) );
  tree->Branch( "LEDRefHighLow", &iLEDRefHighLow, Form("LEDRefHighLow[%d]/I", AliEMCALGeoParams::fgkEMCALLEDRefs) );
  tree->Branch( "Temperature", &temperature, Form("Temperature[%d]/F", AliEMCALGeoParams::fgkEMCALTempSensors) );
  tree->Branch( "TemperatureRMS", &temperatureRMS, Form("TemperatureRMS[%d]/F", AliEMCALGeoParams::fgkEMCALTempSensors) );
  // third: info for each tower; see if a 2D array works OK or if we'll have to use 1D arrays instead 
  tree->Branch( "HighLow", &iHighLow, Form("HighLow[%d][%d]/I", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
  tree->Branch( "LEDAmp", &rLEDAmp, Form("LEDAmp[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );
  tree->Branch( "LEDAmpRMS", &rLEDAmpRMS, Form("LEDAmpRMS[%d][%d]/F", AliEMCALGeoParams::fgkEMCALCols, AliEMCALGeoParams::fgkEMCALRows) );

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

    iSM = t->GetSuperModuleNum();
    // first, overall values
    iReferenceTime = t->GetReferenceTime();

    // second: additional info for LED references and SM temperatures
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALLEDRefs; j++) {
      rLEDRefAmp[j] = t->GetLEDRefAmp(j);
      rLEDRefAmpRMS[j] = t->GetLEDRefAmpRMS(j);
      iLEDRefHighLow[j] = t->GetLEDRefHighLow(j);
    }
    for (Int_t j=0; j<AliEMCALGeoParams::fgkEMCALTempSensors; j++) {
      temperature[j] = t->GetTemperature(j);
      temperatureRMS[j] = t->GetTemperatureRMS(j);
    }

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

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

      iHighLow[iColMod][iRowMod] = v->GetHighLow();
      rLEDAmp[iColMod][iRowMod] = v->GetLEDAmp();
      rLEDAmpRMS[iColMod][iRowMod] = v->GetLEDAmpRMS();
    }

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

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

  return;
}

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

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

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

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