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.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  EMCAL tender, apply corrections to EMCAL clusters and do track matching. //
//                                                                           //
//  Author: Deepa Thomas (Utrecht University)                                // 
//  Later mods/rewrite: Jiri Kral (University of Jyvaskyla)                  //
//  S. Aiola, C. Loizides : Make it work for AODs                            //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include <TClonesArray.h>
#include <TFile.h>
#include <TGeoGlobalMagField.h>
#include <TInterpreter.h>
#include <TObjArray.h>
#include <TROOT.h>
#include <TTree.h>
#include "AliAODEvent.h"
#include "AliAODMCParticle.h"
#include "AliAnalysisManager.h"
#include "AliEMCALAfterBurnerUF.h"
#include "AliEMCALClusterizer.h"
#include "AliEMCALClusterizerNxN.h"
#include "AliEMCALClusterizerv1.h"
#include "AliEMCALClusterizerv2.h"
#include "AliEMCALDigit.h"
#include "AliEMCALGeometry.h"
#include "AliEMCALRecParam.h"
#include "AliEMCALRecParam.h"
#include "AliEMCALRecPoint.h"
#include "AliEMCALRecoUtils.h"
#include "AliESDCaloCluster.h"
#include "AliESDEvent.h"
#include "AliLog.h"
#include "AliMagF.h"
#include "AliOADBContainer.h"
#include "AliTender.h"
#include "AliEMCALTenderSupply.h"

ClassImp(AliEMCALTenderSupply)

AliEMCALTenderSupply::AliEMCALTenderSupply() :
  AliTenderSupply()
  ,fTask(0)
  ,fRun(0)
  ,fEMCALGeo(0x0)
  ,fEMCALGeoName("")
  ,fEMCALRecoUtils(0)
  ,fConfigName("")
  ,fDebugLevel(0)
  ,fNonLinearFunc(-1) 
  ,fNonLinearThreshold(-1)
  ,fReCalibCluster(kFALSE)
  ,fUpdateCell(kFALSE)  
  ,fCalibrateEnergy(kFALSE)
  ,fCalibrateTime(kFALSE)
  ,fCalibrateTimeParamAvailable(kFALSE)
  ,fDoNonLinearity(kFALSE)
  ,fBadCellRemove(kFALSE)
  ,fRejectExoticCells(kFALSE)
  ,fRejectExoticClusters(kFALSE)
  ,fClusterBadChannelCheck(kFALSE)
  ,fRecalClusPos(kFALSE)
  ,fFiducial(kFALSE) 
  ,fNCellsFromEMCALBorder(-1)
  ,fRecalDistToBadChannels(kFALSE)
  ,fRecalShowerShape(kFALSE)
  ,fInputTree(0)
  ,fInputFile(0)
  ,fGetPassFromFileName(kTRUE)
  ,fFilepass(0) 
  ,fMass(-1)
  ,fStep(-1)
  ,fCutEtaPhiSum(kTRUE)
  ,fCutEtaPhiSeparate(kFALSE)
  ,fRcut(-1)
  ,fEtacut(-1)
  ,fPhicut(-1)
  ,fBasePath("")
  ,fReClusterize(kFALSE)
  ,fClusterizer(0)
  ,fGeomMatrixSet(kFALSE)
  ,fLoadGeomMatrices(kFALSE)
  ,fRecParam(0x0)
  ,fDoTrackMatch(kFALSE)
  ,fDoUpdateOnly(kFALSE)
  ,fUnfolder(0)
  ,fDigitsArr(0)
  ,fClusterArr(0)
  ,fMisalignSurvey(kdefault)  
  ,fExoticCellFraction(-1)
  ,fExoticCellDiffTime(-1)
  ,fExoticCellMinAmplitude(-1)
  ,fSetCellMCLabelFromCluster(0)
  ,fTempClusterArr(0)
  ,fRemapMCLabelForAODs(0)
  ,fUseAutomaticRecalib(1)
  ,fUseAutomaticRunDepRecalib(1)
  ,fUseAutomaticTimeCalib(1)
  ,fUseAutomaticRecParam(1)
{
  // Default constructor.

  for(Int_t i = 0; i < 12;    i++) fEMCALMatrix[i]      = 0 ;
  for(Int_t j = 0; j < 12672; j++) fOrgClusterCellId[j] = -1;
}

//_____________________________________________________
AliEMCALTenderSupply::AliEMCALTenderSupply(const char *name, const AliTender *tender) :
  AliTenderSupply(name,tender)
  ,fTask(0)
  ,fRun(0)
  ,fEMCALGeo(0x0)
  ,fEMCALGeoName("")
  ,fEMCALRecoUtils(0)
  ,fConfigName("")
  ,fDebugLevel(0)
  ,fNonLinearFunc(-1) 
  ,fNonLinearThreshold(-1)        
  ,fReCalibCluster(kFALSE)  
  ,fUpdateCell(kFALSE)  
  ,fCalibrateEnergy(kFALSE)
  ,fCalibrateTime(kFALSE)
  ,fCalibrateTimeParamAvailable(kFALSE)
  ,fDoNonLinearity(kFALSE)
  ,fBadCellRemove(kFALSE)
  ,fRejectExoticCells(kFALSE)
  ,fRejectExoticClusters(kFALSE)
  ,fClusterBadChannelCheck(kFALSE)
  ,fRecalClusPos(kFALSE)
  ,fFiducial(kFALSE) 
  ,fNCellsFromEMCALBorder(-1)  
  ,fRecalDistToBadChannels(kFALSE)  
  ,fRecalShowerShape(kFALSE)
  ,fInputTree(0)  
  ,fInputFile(0)
  ,fGetPassFromFileName(kTRUE)
  ,fFilepass("") 
  ,fMass(-1)
  ,fStep(-1)
  ,fCutEtaPhiSum(kTRUE)
  ,fCutEtaPhiSeparate(kFALSE)
  ,fRcut(-1)  
  ,fEtacut(-1)  
  ,fPhicut(-1)  
  ,fBasePath("")
  ,fReClusterize(kFALSE)
  ,fClusterizer(0)
  ,fGeomMatrixSet(kFALSE)
  ,fLoadGeomMatrices(kFALSE)
  ,fRecParam(0x0)
  ,fDoTrackMatch(kFALSE)
  ,fDoUpdateOnly(kFALSE)
  ,fUnfolder(0)
  ,fDigitsArr(0)
  ,fClusterArr(0)
  ,fMisalignSurvey(kdefault)  
  ,fExoticCellFraction(-1)
  ,fExoticCellDiffTime(-1)
  ,fExoticCellMinAmplitude(-1)
  ,fSetCellMCLabelFromCluster(0)
  ,fTempClusterArr(0)
  ,fRemapMCLabelForAODs(0)
  ,fUseAutomaticRecalib(1)
  ,fUseAutomaticRunDepRecalib(1)
  ,fUseAutomaticTimeCalib(1)
  ,fUseAutomaticRecParam(1)
{
  // Named constructor
  
  for(Int_t i = 0; i < 12;    i++) fEMCALMatrix[i]      = 0 ;
  for(Int_t j = 0; j < 12672; j++) fOrgClusterCellId[j] = -1;
}

//_____________________________________________________
AliEMCALTenderSupply::AliEMCALTenderSupply(const char *name, AliAnalysisTaskSE *task) :
  AliTenderSupply(name)
  ,fTask(task)
  ,fRun(0)
  ,fEMCALGeo(0x0)
  ,fEMCALGeoName("")
  ,fEMCALRecoUtils(0)
  ,fConfigName("")
  ,fDebugLevel(0)
  ,fNonLinearFunc(-1) 
  ,fNonLinearThreshold(-1)        
  ,fReCalibCluster(kFALSE)  
  ,fUpdateCell(kFALSE)  
  ,fCalibrateEnergy(kFALSE)
  ,fCalibrateTime(kFALSE)
  ,fCalibrateTimeParamAvailable(kFALSE)
  ,fDoNonLinearity(kFALSE)
  ,fBadCellRemove(kFALSE)
  ,fRejectExoticCells(kFALSE)
  ,fRejectExoticClusters(kFALSE)
  ,fClusterBadChannelCheck(kFALSE)
  ,fRecalClusPos(kFALSE)
  ,fFiducial(kFALSE) 
  ,fNCellsFromEMCALBorder(-1)  
  ,fRecalDistToBadChannels(kFALSE)  
  ,fRecalShowerShape(kFALSE)
  ,fInputTree(0)  
  ,fInputFile(0)
  ,fGetPassFromFileName(kTRUE)
  ,fFilepass("") 
  ,fMass(-1)
  ,fStep(-1)
  ,fCutEtaPhiSum(kTRUE)
  ,fCutEtaPhiSeparate(kFALSE)
  ,fRcut(-1)  
  ,fEtacut(-1)  
  ,fPhicut(-1)  
  ,fBasePath("")
  ,fReClusterize(kFALSE)
  ,fClusterizer(0)
  ,fGeomMatrixSet(kFALSE)
  ,fLoadGeomMatrices(kFALSE)
  ,fRecParam(0x0)
  ,fDoTrackMatch(kFALSE)
  ,fDoUpdateOnly(kFALSE)
  ,fUnfolder(0)
  ,fDigitsArr(0)
  ,fClusterArr(0)
  ,fMisalignSurvey(kdefault)  
  ,fExoticCellFraction(-1)
  ,fExoticCellDiffTime(-1)
  ,fExoticCellMinAmplitude(-1)
  ,fSetCellMCLabelFromCluster(0)
  ,fTempClusterArr(0)
  ,fRemapMCLabelForAODs(0)
  ,fUseAutomaticRecalib(1)
  ,fUseAutomaticRunDepRecalib(1)
  ,fUseAutomaticTimeCalib(1)
  ,fUseAutomaticRecParam(1)
{
  // Named constructor.
  
  for(Int_t i = 0; i < 12;    i++) fEMCALMatrix[i]      = 0 ;
  for(Int_t j = 0; j < 12672; j++) fOrgClusterCellId[j] = -1;
}

//_____________________________________________________
AliEMCALTenderSupply::~AliEMCALTenderSupply()
{
  //Destructor

  if (!AliAnalysisManager::GetAnalysisManager())  return;  

  if (!AliAnalysisManager::GetAnalysisManager()->IsProofMode()) 
  {
    delete fEMCALRecoUtils;
    delete fRecParam;
    delete fUnfolder;
    
    if (!fClusterizer) 
    {
      if (fDigitsArr) 
      { 
     	fDigitsArr->Clear("C");
      	delete fDigitsArr; 
      }
    } 
    else 
    {
      delete fClusterizer;
      fDigitsArr = 0;
    }
  }
}

//_____________________________________________________
void AliEMCALTenderSupply::SetDefaults()
{
  // Set default settings.

  SwitchOnReclustering();
  SwitchOnTrackMatch();
}

//_____________________________________________________
Bool_t AliEMCALTenderSupply::RunChanged() const
{
  // Get run number.

  return (fTender && fTender->RunChanged()) || (fTask && fRun != fTask->InputEvent()->GetRunNumber()); 
}

//_____________________________________________________
void AliEMCALTenderSupply::Init()
{
  // Initialise EMCAL tender.

  if (fDebugLevel>0) 
    AliWarning("Init EMCAL Tender supply"); 
  
  if (fConfigName.Length()>0 && gROOT->LoadMacro(fConfigName) >=0) {
    AliDebug(1, Form("Loading settings from macro %s", fConfigName.Data()));
    AliEMCALTenderSupply *tender = (AliEMCALTenderSupply*)gInterpreter->ProcessLine("ConfigEMCALTenderSupply()");
    fDebugLevel             = tender->fDebugLevel;
    fEMCALGeoName           = tender->fEMCALGeoName; 
    fEMCALRecoUtils         = tender->fEMCALRecoUtils; 
    fConfigName             = tender->fConfigName;
    fNonLinearFunc          = tender->fNonLinearFunc;
    fNonLinearThreshold     = tender->fNonLinearThreshold;
    fReCalibCluster         = tender->fReCalibCluster;
    fUpdateCell             = tender->fUpdateCell;
    fRecalClusPos           = tender->fRecalClusPos;
    fCalibrateEnergy        = tender->fCalibrateEnergy;
    fCalibrateTime          = tender->fCalibrateTime;
    fCalibrateTimeParamAvailable = tender->fCalibrateTimeParamAvailable;
    fFiducial               = tender->fFiducial;
    fNCellsFromEMCALBorder  = tender->fNCellsFromEMCALBorder;
    fRecalDistToBadChannels = tender->fRecalDistToBadChannels;    
    fRecalShowerShape       = tender->fRecalShowerShape;
    fClusterBadChannelCheck = tender->fClusterBadChannelCheck;
    fBadCellRemove          = tender->fBadCellRemove;
    fRejectExoticCells      = tender->fRejectExoticCells;
    fRejectExoticClusters   = tender->fRejectExoticClusters;
    fMass                   = tender->fMass;
    fStep                   = tender->fStep;
    fCutEtaPhiSum           = tender->fCutEtaPhiSum;
    fCutEtaPhiSeparate      = tender->fCutEtaPhiSeparate;
    fRcut                   = tender->fRcut;
    fEtacut                 = tender->fEtacut;
    fPhicut                 = tender->fPhicut;
    fReClusterize           = tender->fReClusterize;
    fLoadGeomMatrices       = tender->fLoadGeomMatrices;
    fRecParam               = tender->fRecParam;
    fDoNonLinearity         = tender->fDoNonLinearity;
    fDoTrackMatch           = tender->fDoTrackMatch;
    fDoUpdateOnly           = tender->fDoUpdateOnly;
    fMisalignSurvey         = tender->fMisalignSurvey;
    fExoticCellFraction     = tender->fExoticCellFraction;
    fExoticCellDiffTime     = tender->fExoticCellDiffTime;
    fExoticCellMinAmplitude = tender->fExoticCellMinAmplitude;

    for(Int_t i = 0; i < 12; i++) 
      fEMCALMatrix[i] = tender->fEMCALMatrix[i] ;
  }
  
  if (fDebugLevel>0){
    AliInfo("Emcal Tender settings: ======================================"); 
    AliInfo("------------ Switches --------------------------"); 
    AliInfo(Form("BadCellRemove : %d", fBadCellRemove)); 
    AliInfo(Form("ExoticCellRemove : %d", fRejectExoticCells)); 
    AliInfo(Form("CalibrateEnergy : %d", fCalibrateEnergy)); 
    AliInfo(Form("CalibrateTime : %d", fCalibrateTime)); 
    AliInfo(Form("UpdateCell : %d", fUpdateCell)); 
    AliInfo(Form("DoUpdateOnly : %d", fDoUpdateOnly)); 
    AliInfo(Form("Reclustering : %d", fReClusterize)); 
    AliInfo(Form("ClusterBadChannelCheck : %d", fClusterBadChannelCheck)); 
    AliInfo(Form("ClusterExoticChannelCheck : %d", fRejectExoticClusters)); 
    AliInfo(Form("CellFiducialRegion : %d", fFiducial)); 
    AliInfo(Form("ReCalibrateCluster : %d", fReCalibCluster)); 
    AliInfo(Form("RecalculateClusPos : %d", fRecalClusPos)); 
    AliInfo(Form("RecalShowerShape : %d", fRecalShowerShape)); 
    AliInfo(Form("NonLinearityCorrection : %d", fDoNonLinearity)); 
    AliInfo(Form("RecalDistBadChannel : %d", fRecalDistToBadChannels)); 
    AliInfo(Form("TrackMatch : %d", fDoTrackMatch)); 
    AliInfo("------------ Variables -------------------------"); 
    AliInfo(Form("DebugLevel : %d", fDebugLevel)); 
    AliInfo(Form("BasePath : %s", fBasePath.Data())); 
    AliInfo(Form("ConfigFileName : %s", fConfigName.Data())); 
    AliInfo(Form("EMCALGeometryName : %s", fEMCALGeoName.Data())); 
    AliInfo(Form("NonLinearityFunction : %d", fNonLinearFunc)); 
    AliInfo(Form("NonLinearityThreshold : %d", fNonLinearThreshold)); 
    AliInfo(Form("MisalignmentMatrixSurvey : %d", fMisalignSurvey)); 
    AliInfo(Form("NumberOfCellsFromEMCALBorder : %d", fNCellsFromEMCALBorder)); 
    AliInfo(Form("RCut : %f", fRcut)); 
    AliInfo(Form("Mass : %f", fMass)); 
    AliInfo(Form("Step : %f", fStep)); 
    AliInfo(Form("EtaCut : %f", fEtacut)); 
    AliInfo(Form("PhiCut : %f", fPhicut)); 
    AliInfo(Form("ExoticCellFraction : %f", fExoticCellFraction)); 
    AliInfo(Form("ExoticCellDiffTime : %f", fExoticCellDiffTime)); 
    AliInfo(Form("ExoticCellMinAmplitude : %f", fExoticCellMinAmplitude)); 
    AliInfo("============================================================="); 
  }

  // init reco utils
  
  if (!fEMCALRecoUtils)
    fEMCALRecoUtils  = new AliEMCALRecoUtils;

  // init geometry if requested
  if (fEMCALGeoName.Length()>0) 
    fEMCALGeo = AliEMCALGeometry::GetInstance(fEMCALGeoName) ;

  // digits array
  fDigitsArr       = new TClonesArray("AliEMCALDigit",1000);

  // initialising non-linearity parameters
  if (fNonLinearThreshold != -1)
    fEMCALRecoUtils->SetNonLinearityThreshold(fNonLinearThreshold);
  if (fNonLinearFunc != -1)
    fEMCALRecoUtils->SetNonLinearityFunction(fNonLinearFunc);

  // missalignment function
  fEMCALRecoUtils->SetPositionAlgorithm(AliEMCALRecoUtils::kPosTowerGlobal);

  // fiducial cut
  // do not do the eta0 fiducial cut
  if (fNCellsFromEMCALBorder != -1)
    fEMCALRecoUtils->SetNumberOfCellsFromEMCALBorder(fNCellsFromEMCALBorder);
  fEMCALRecoUtils->SwitchOnNoFiducialBorderInEMCALEta0();
    
  // exotic cell rejection
  if (fExoticCellFraction != -1)
    fEMCALRecoUtils->SetExoticCellFractionCut(fExoticCellFraction);
  if (fExoticCellDiffTime != -1)
    fEMCALRecoUtils->SetExoticCellDiffTimeCut(fExoticCellDiffTime);
  if (fExoticCellMinAmplitude != -1)
    fEMCALRecoUtils->SetExoticCellMinAmplitudeCut(fExoticCellMinAmplitude);

  // setting track matching parameters ... mass, step size and residual cut
  if (fMass != -1)
    fEMCALRecoUtils->SetMass(fMass);
  if (fStep != -1)
    fEMCALRecoUtils->SetStep(fStep);
  
  // spatial cut based on separate eta/phi or common processing
  if (fCutEtaPhiSum) { 
    fEMCALRecoUtils->SwitchOnCutEtaPhiSum(); 
    if (fRcut != -1)
      fEMCALRecoUtils->SetCutR(fRcut);
  } else if (fCutEtaPhiSeparate) {
    fEMCALRecoUtils->SwitchOnCutEtaPhiSeparate();
    if (fEtacut != -1)
      fEMCALRecoUtils->SetCutEta(fEtacut);
    if (fPhicut != -1)
      fEMCALRecoUtils->SetCutPhi(fPhicut);
  }
}

//_____________________________________________________
AliVEvent* AliEMCALTenderSupply::GetEvent()
{
  // Return the event pointer.
  
  if (fTender) {
    return fTender->GetEvent();
  } else if (fTask) {
    return fTask->InputEvent();
  }
  
  return 0;
}

//_____________________________________________________
void AliEMCALTenderSupply::ProcessEvent()
{
  // Event loop.
  
  AliVEvent *event = GetEvent();

  if (!event) {
    AliError("Event ptr = 0, returning");
    return;
  }
  
  // Initialising parameters once per run number
  if (RunChanged()) { 

    fRun = event->GetRunNumber();
    AliWarning(Form("Run changed, initializing parameters for %d", fRun));
    if (dynamic_cast<AliAODEvent*>(event)) {
      AliWarning("============================================================="); 
      AliWarning("===  Running on AOD is not equivalent to running on ESD!  ===");
      AliWarning("============================================================="); 
    }

    // init geometry if not already done
    if (fEMCALGeoName.Length()==0) {
      fEMCALGeoName = "EMCAL_FIRSTYEARV1";
      if (fRun>139517) {
        fEMCALGeoName = "EMCAL_COMPLETEV1";
      } 
      if (fRun>170593) {
        fEMCALGeoName = "EMCAL_COMPLETE12SMV1";
      }
      fEMCALGeo = AliEMCALGeometry::GetInstance(fEMCALGeoName);
      if (!fEMCALGeo) {
        AliFatal(Form("Can not create geometry: %s", fEMCALGeoName.Data()));
        return;
      }
    } 

    // get pass
    if (fGetPassFromFileName)
      GetPass();

    // define what recalib parameters are needed for various switches
    // this is based on implementation in AliEMCALRecoUtils
    Bool_t needRecoParam   = fReClusterize;
    Bool_t needBadChannels = fBadCellRemove   | fClusterBadChannelCheck | fRecalDistToBadChannels | fReClusterize;
    Bool_t needRecalib     = fCalibrateEnergy | fReClusterize;
    Bool_t needTimecalib   = fCalibrateTime   | fReClusterize;
    Bool_t needMisalign    = fRecalClusPos    | fReClusterize;
    Bool_t needClusterizer = fReClusterize;

    // init bad channels
    if (needBadChannels) {
      Int_t fInitBC = InitBadChannels();
      if (fInitBC==0)
        AliError("InitBadChannels returned false, returning");
      if (fInitBC==1)
        AliWarning("InitBadChannels OK");
      if (fInitBC>1)
        AliWarning(Form("No external hot channel set: %d - %s", event->GetRunNumber(), fFilepass.Data()));
    }

    // init recalibration factors
    if (needRecalib) {
      if(fUseAutomaticRecalib)
      {
        Int_t fInitRecalib = InitRecalib();
        if (fInitRecalib==0)
          AliError("InitRecalib returned false, returning");
        if (fInitRecalib==1)
          AliWarning("InitRecalib OK");
        if (fInitRecalib>1)
          AliWarning(Form("No recalibration available: %d - %s", event->GetRunNumber(), fFilepass.Data()));
      }
      
      if(fUseAutomaticRunDepRecalib)
      {
        Int_t fInitRunDepRecalib = InitRunDepRecalib();
        if (fInitRunDepRecalib==0)
          AliError("InitrunDepRecalib returned false, returning");
        if (fInitRunDepRecalib==1)
          AliWarning("InitRecalib OK");
        if (fInitRunDepRecalib>1)
          AliWarning(Form("No Temperature recalibration available: %d - %s", event->GetRunNumber(), fFilepass.Data()));
      }
    }
    
    // init time calibration
    if (needTimecalib && fUseAutomaticTimeCalib) {
      Int_t initTC = InitTimeCalibration();
      if (!initTC) 
        AliError("InitTimeCalibration returned false, returning");
      if (initTC==1) {
        fCalibrateTimeParamAvailable = kTRUE;
        AliWarning("InitTimeCalib OK");
      }
      if (initTC > 1)
        AliWarning(Form("No external time calibration available: %d - %s", event->GetRunNumber(), fFilepass.Data()));
    }

    // init misalignment matrix
    if (needMisalign) {
      if (!InitMisalignMatrix())
        AliError("InitMisalignmentMatrix returned false, returning");
      else
        AliWarning("InitMisalignMatrix OK");
    }
    
    // initiate reco params with some defaults
    // will not overwrite, if those have been provided by user
    if (needRecoParam && fUseAutomaticRecParam) {
      Int_t initRC = InitRecParam();
      
      if (initRC == 0)
        AliInfo("Defaults reco params loaded.");
      if (initRC > 1)
        AliWarning("User defined reco params.");
    }
    
    // init clusterizer
    if (needClusterizer) {
      if (!InitClusterization()) 
        AliError("InitClusterization returned false, returning");
      else
        AliWarning("InitClusterization OK");
    }
    
    if (fDebugLevel>1) 
      fEMCALRecoUtils->Print("");
  }
  
  // disable implied switches -------------------------------------------------
  // AliEMCALRecoUtils or clusterizer functions alredy include some
  // recalibration so based on those implied callibration te switches
  // here are disabled to avoid duplication
    
  // clusterizer does cluster energy recalibration, position recomputation
  // and shower shape
  if (fReClusterize) {
    fReCalibCluster   = kFALSE;
    fRecalClusPos     = kFALSE;
    fRecalShowerShape = kFALSE;
  }
  
  // CONFIGURE THE RECO UTILS -------------------------------------------------
  // configure the reco utils
  // this option does energy recalibration
  if (fCalibrateEnergy)
    fEMCALRecoUtils->SwitchOnRecalibration();
  else
    fEMCALRecoUtils->SwitchOffRecalibration();
  
  // allows time calibration
  if (fCalibrateTime)
    fEMCALRecoUtils->SwitchOnTimeRecalibration();
  else
    fEMCALRecoUtils->SwitchOffTimeRecalibration();

  // allows to zero bad cells
  if (fBadCellRemove)
    fEMCALRecoUtils->SwitchOnBadChannelsRemoval();
  else
    fEMCALRecoUtils->SwitchOffBadChannelsRemoval();
  
  // distance to bad channel recalibration
  if (fRecalDistToBadChannels)
    fEMCALRecoUtils->SwitchOnDistToBadChannelRecalculation();
  else
    fEMCALRecoUtils->SwitchOffDistToBadChannelRecalculation();

  // exclude exotic cells
  if (fRejectExoticCells)
    fEMCALRecoUtils->SwitchOnRejectExoticCell();
  else
    fEMCALRecoUtils->SwitchOffRejectExoticCell();
  
  // exclude clusters with exotic cells
  if (fRejectExoticClusters)
    fEMCALRecoUtils->SwitchOnRejectExoticCluster();
  else
    fEMCALRecoUtils->SwitchOffRejectExoticCluster();

  // TODO: not implemented switches
  // SwitchOnClusterEnergySmearing
  // SwitchOnRunDepCorrection

  // START PROCESSING ---------------------------------------------------------
  // Test if cells present
  AliVCaloCells *cells= event->GetEMCALCells();
  if (cells->GetNumberOfCells()<=0) 
  {
    if (fDebugLevel>1) 
      AliWarning(Form("Number of EMCAL cells = %d, returning", cells->GetNumberOfCells()));
    return;
  }
  
  if (fDebugLevel>2)
    AliInfo(Form("Re-calibrate cluster %d\n",fReCalibCluster));

  // mark the cells not recalibrated in case of selected
  // time, energy recalibration or bad channel removal
  if (fCalibrateEnergy || fCalibrateTime || fBadCellRemove)
    fEMCALRecoUtils->ResetCellsCalibrated();
  
 // CELL RECALIBRATION -------------------------------------------------------
  // cell objects will be updated
  // the cell calibrations are also processed locally any time those are needed
  // in case that the cell objects are not to be updated here for later use
  if (fUpdateCell) {
    // do the update
    // includes exotic cell check in the UpdateCells function - is not provided
    // by the reco utils
    UpdateCells();

    // switch off recalibrations so those are not done multiple times
    // this is just for safety, the recalibrated flag of cell object
    // should not allow for farther processing anyways
    fEMCALRecoUtils->SwitchOffRecalibration();
    fEMCALRecoUtils->SwitchOffTimeRecalibration();  
  
    if (fDoUpdateOnly)
      return;
  }

  // RECLUSTERIZATION ---------------------------------------------------------
  if (fReClusterize)
  {
    FillDigitsArray();
    Clusterize();
    UpdateClusters();
  }

  // Store good clusters
  TClonesArray *clusArr = dynamic_cast<TClonesArray*>(event->FindListObject("caloClusters"));
  if (!clusArr) 
    clusArr = dynamic_cast<TClonesArray*>(event->FindListObject("CaloClusters"));
  if (!clusArr) {
    AliWarning(Form("No cluster array, number of cells in event = %d, returning", cells->GetNumberOfCells()));
    return;
  }

  // PROCESS SINGLE CLUSTER RECALIBRATION -------------------------------------
  // now go through clusters one by one and process separate correction
  // as those were defined or not
  Int_t nclusters = clusArr->GetEntriesFast();
  for (Int_t icluster=0; icluster < nclusters; ++icluster) 
  { 
    AliVCluster *clust = static_cast<AliVCluster*>(clusArr->At(icluster));
    if (!clust) 
      continue;
    if  (!clust->IsEMCAL()) 
      continue;

    // REMOVE CLUSTERS WITH BAD CELLS -----------------------------
    if (fClusterBadChannelCheck) {
      // careful, the the ClusterContainsBadChannel is dependent on
      // SwitchOnBadChannelsRemoval, switching it ON automatically
      // and returning to original value after processing
      Bool_t badRemoval = fEMCALRecoUtils->IsBadChannelsRemovalSwitchedOn();
      fEMCALRecoUtils->SwitchOnBadChannelsRemoval();
      
      Bool_t badResult = fEMCALRecoUtils->ClusterContainsBadChannel(fEMCALGeo, clust->GetCellsAbsId(), clust->GetNCells());

      // switch the bad channels removal back
      if (!badRemoval)
        fEMCALRecoUtils->SwitchOffBadChannelsRemoval();
      
      if (badResult)
      {
        delete clusArr->RemoveAt(icluster);
        continue; //TODO is it really needed to remove it? Or should we flag it?
      }
    }
    
    // REMOVE EXOTIC CLUSTERS -------------------------------------
    // does process local cell recalibration energy and time without replacing
    // the global cell values, in case of no cell recalib done yet
    if (fRejectExoticClusters)
    {
      // careful, the IsExoticCluster is dependent on
      // SwitchOnRejectExoticCell, switching it ON automatically
      // and returning to original value after processing
      Bool_t exRemoval = fEMCALRecoUtils->IsRejectExoticCell();
      fEMCALRecoUtils->SwitchOnRejectExoticCell();

      // get bunch crossing
      Int_t bunchCrossNo = event->GetBunchCrossNumber();

      Bool_t exResult = fEMCALRecoUtils->IsExoticCluster(clust, cells, bunchCrossNo);

      // switch the exotic channels removal back
      if (!exRemoval)
        fEMCALRecoUtils->SwitchOffRejectExoticCell();
      
      if (exResult) {
        delete clusArr->RemoveAt(icluster);
        continue; //TODO is it really needed to remove it? Or should we flag it?
      }
    }
    
    // FIDUCIAL CUT -----------------------------------------------
    if (fFiducial) {
      // depends on SetNumberOfCellsFromEMCALBorder
      // SwitchOnNoFiducialBorderInEMCALEta0
      if (!fEMCALRecoUtils->CheckCellFiducialRegion(fEMCALGeo, clust, cells)){
        delete clusArr->RemoveAt(icluster);
        continue; //TODO it would be nice to store the distance
      }
    }
    
    // CLUSTER ENERGY ---------------------------------------------
    // does process local cell recalibration energy and time without replacing
    // the global cell values, in case of no cell recalib done yet
    if (fReCalibCluster) {
      fEMCALRecoUtils->RecalibrateClusterEnergy(fEMCALGeo, clust, cells);
      if (clust->E() < 1e-9) {
        delete clusArr->RemoveAt(icluster);
        continue;
      }
    }
    
    // CLUSTER POSITION -------------------------------------------
    // does process local cell energy recalibration, if enabled and cells
    // not calibrated yet
    if (fRecalClusPos) 
      fEMCALRecoUtils->RecalculateClusterPosition(fEMCALGeo, cells, clust);
    
    // SHOWER SHAPE -----------------------------------------------
    if (fRecalShowerShape)
      fEMCALRecoUtils->RecalculateClusterShowerShapeParameters(fEMCALGeo, cells, clust);  

    // NONLINEARITY -----------------------------------------------
    if (fDoNonLinearity) {
      Float_t correctedEnergy = fEMCALRecoUtils->CorrectClusterEnergyLinearity(clust);
      clust->SetE(correctedEnergy);
    }

    // DISTANCE TO BAD CHANNELS -----------------------------------
    if (fRecalDistToBadChannels)
      fEMCALRecoUtils->RecalculateClusterDistanceToBadChannel(fEMCALGeo, cells, clust);  
  }

  clusArr->Compress();

  if (!fDoTrackMatch)
    return;

  // TRACK MATCHING -----------------------------------------------------------
  if (!TGeoGlobalMagField::Instance()->GetField()) {
    event->InitMagneticField();
  }

  fEMCALRecoUtils->FindMatches(event,0x0,fEMCALGeo);
  fEMCALRecoUtils->SetClusterMatchedToTrack(event);
  fEMCALRecoUtils->SetTracksMatchedToCluster(event);
}

//_____________________________________________________
Bool_t AliEMCALTenderSupply::InitMisalignMatrix()
{
  // Initialising misalignment matrices

  AliVEvent *event = GetEvent();
  
  if (!event) 
    return kFALSE;
  
  if (fGeomMatrixSet) 
  {
    AliInfo("Misalignment matrix already set");  
    return kTRUE;
  }
  
  if (fDebugLevel>0) 
    AliInfo("Initialising misalignment matrix");  
  
  if (fLoadGeomMatrices) {
    for(Int_t mod=0; mod < fEMCALGeo->GetNumberOfSuperModules(); ++mod)
    {
      if (fEMCALMatrix[mod]){
        if (fDebugLevel > 2) 
          fEMCALMatrix[mod]->Print();
        fEMCALGeo->SetMisalMatrix(fEMCALMatrix[mod],mod);  
      }
    }
    fGeomMatrixSet = kTRUE;
    return kTRUE;
  }
  
  Int_t runGM = event->GetRunNumber();
  TObjArray *mobj = 0;

  if (fMisalignSurvey == kdefault)
  { //take default alignment corresponding to run no
    AliOADBContainer emcalgeoCont(Form("emcal"));
    emcalgeoCont.InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALlocal2master.root",Form("AliEMCALgeo"));
    mobj=(TObjArray*)emcalgeoCont.GetObject(runGM,"EmcalMatrices");
  }
  
  if (fMisalignSurvey == kSurveybyS)
  { //take alignment at sector level
    if (runGM <= 140000) { //2010 data
      AliOADBContainer emcalgeoCont(Form("emcal2010"));
      emcalgeoCont.InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALlocal2master.root",Form("AliEMCALgeo"));
      mobj=(TObjArray*)emcalgeoCont.GetObject(100,"survey10");
    } 
    else if (runGM>140000)
    { // 2011 LHC11a pass1 data
      AliOADBContainer emcalgeoCont(Form("emcal2011"));
      emcalgeoCont.InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALlocal2master.root",Form("AliEMCALgeo"));
      mobj=(TObjArray*)emcalgeoCont.GetObject(100,"survey11byS");      
    }
  }

  if (fMisalignSurvey == kSurveybyM)
  { //take alignment at module level
    if (runGM <= 140000) { //2010 data
      AliOADBContainer emcalgeoCont(Form("emcal2010"));
      emcalgeoCont.InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALlocal2master.root",Form("AliEMCALgeo"));
      mobj=(TObjArray*)emcalgeoCont.GetObject(100,"survey10");
    } 
    else if (runGM>140000) 
    { // 2011 LHC11a pass1 data
      AliOADBContainer emcalgeoCont(Form("emcal2011"));
      emcalgeoCont.InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALlocal2master.root",Form("AliEMCALgeo"));
      mobj=(TObjArray*)emcalgeoCont.GetObject(100,"survey11byM");      
    }
  }

  if (!mobj) {
    AliFatal("Geometry matrix array not found");
    return kFALSE;
  }
  
  for(Int_t mod=0; mod < (fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
  {
    fEMCALMatrix[mod] = (TGeoHMatrix*) mobj->At(mod);
    fEMCALGeo->SetMisalMatrix(fEMCALMatrix[mod],mod); 
    fEMCALMatrix[mod]->Print();
  }
  
  return kTRUE;
}

//_____________________________________________________
Int_t AliEMCALTenderSupply::InitBadChannels()
{
  // Initialising bad channel maps

  AliVEvent *event = GetEvent();

  if (!event) 
    return 0;
  
  if (fDebugLevel>0) 
    AliInfo("Initialising Bad channel map");
  
  // init default maps first
  if (!fEMCALRecoUtils->GetEMCALBadChannelStatusMapArray())
    fEMCALRecoUtils->InitEMCALBadChannelStatusMap() ;
  
  Int_t runBC = event->GetRunNumber();
  
  AliOADBContainer *contBC = new AliOADBContainer("");
  if (fBasePath!="")
  { //if fBasePath specified in the ->SetBasePath()
    if (fDebugLevel>0) AliInfo(Form("Loading Bad Channels OADB from given path %s",fBasePath.Data()));
    
    TFile *fbad=new TFile(Form("%s/EMCALBadChannels.root",fBasePath.Data()),"read");
    if (!fbad || fbad->IsZombie())
    {
      AliFatal(Form("EMCALBadChannels.root was not found in the path provided: %s",fBasePath.Data()));
      return 0;
    }  
    
    if (fbad) delete fbad;
    
    contBC->InitFromFile(Form("%s/EMCALBadChannels.root",fBasePath.Data()),"AliEMCALBadChannels");    
  } 
  else 
  { // Else choose the one in the $ALICE_ROOT directory
    if (fDebugLevel>0) AliInfo("Loading Bad Channels OADB from $ALICE_ROOT/OADB/EMCAL");
    
    TFile *fbad=new TFile("$ALICE_ROOT/OADB/EMCAL/EMCALBadChannels.root","read");
    if (!fbad || fbad->IsZombie())
    {
      AliFatal("$ALICE_ROOT/OADB/EMCAL/EMCALBadChannels.root was not found");
      return 0;
    }  
      
    if (fbad) delete fbad;
    
    contBC->InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALBadChannels.root","AliEMCALBadChannels"); 
  }
  
  TObjArray *arrayBC=(TObjArray*)contBC->GetObject(runBC);
  if (!arrayBC)
  {
    AliError(Form("No external hot channel set for run number: %d", runBC));
    return 2; 
  }

  Int_t sms = fEMCALGeo->GetEMCGeometry()->GetNumberOfSuperModules();
  for (Int_t i=0; i<sms; ++i) 
  {
    TH2I *h = fEMCALRecoUtils->GetEMCALChannelStatusMap(i);
    if (h)
      delete h;
    h=(TH2I*)arrayBC->FindObject(Form("EMCALBadChannelMap_Mod%d",i));

    if (!h) 
    {
      AliError(Form("Can not get EMCALBadChannelMap_Mod%d",i));
      continue;
    }
    h->SetDirectory(0);
    fEMCALRecoUtils->SetEMCALChannelStatusMap(i,h);
  }
  return 1;  
}

//_____________________________________________________
Int_t AliEMCALTenderSupply::InitRecalib()
{
  // Initialising recalibration factors.
  
  AliVEvent *event = GetEvent();

  if (!event) 
    return 0;
  
  if (fDebugLevel>0) 
    AliInfo("Initialising recalibration factors");
  
  // init default maps first
  if (!fEMCALRecoUtils->GetEMCALRecalibrationFactorsArray())
    fEMCALRecoUtils->InitEMCALRecalibrationFactors() ;

  Int_t runRC = event->GetRunNumber();
      
  AliOADBContainer *contRF=new AliOADBContainer("");
  if (fBasePath!="") 
  { //if fBasePath specified in the ->SetBasePath()
    if (fDebugLevel>0)  AliInfo(Form("Loading Recalib OADB from given path %s",fBasePath.Data()));
    
    TFile *fRecalib= new TFile(Form("%s/EMCALRecalib.root",fBasePath.Data()),"read");
    if (!fRecalib || fRecalib->IsZombie()) 
    {
      AliFatal(Form("EMCALRecalib.root not found in %s",fBasePath.Data()));
      return 0;
    }
    
    if (fRecalib) delete fRecalib;
    
    contRF->InitFromFile(Form("%s/EMCALRecalib.root",fBasePath.Data()),"AliEMCALRecalib");
  }
  else
  { // Else choose the one in the $ALICE_ROOT directory
    if (fDebugLevel>0)  AliInfo("Loading Recalib OADB from $ALICE_ROOT/OADB/EMCAL");
    
    TFile *fRecalib= new TFile("$ALICE_ROOT/OADB/EMCAL/EMCALRecalib.root","read");
    if (!fRecalib || fRecalib->IsZombie()) 
    {
      AliFatal("$ALICE_ROOT/OADB/EMCAL/EMCALRecalib.root was not found");
      return 0;
    }
    
    if (fRecalib) delete fRecalib;
      
    contRF->InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALRecalib.root","AliEMCALRecalib");     
  }

  TObjArray *recal=(TObjArray*)contRF->GetObject(runRC);
  if (!recal)
  {
    AliError(Form("No Objects for run: %d",runRC));
    return 2;
  } 

  TObjArray *recalpass=(TObjArray*)recal->FindObject(fFilepass);
  if (!recalpass)
  {
    AliError(Form("No Objects for run: %d - %s",runRC,fFilepass.Data()));
    return 2;
  }

  TObjArray *recalib=(TObjArray*)recalpass->FindObject("Recalib");
  if (!recalib)
  {
    AliError(Form("No Recalib histos found for  %d - %s",runRC,fFilepass.Data())); 
    return 2;
  }

  if (fDebugLevel>0) recalib->Print();

  Int_t sms = fEMCALGeo->GetEMCGeometry()->GetNumberOfSuperModules();
  for (Int_t i=0; i<sms; ++i) 
  {
    TH2F *h = fEMCALRecoUtils->GetEMCALChannelRecalibrationFactors(i);
    if (h)
      delete h;
    h = (TH2F*)recalib->FindObject(Form("EMCALRecalFactors_SM%d",i));
    if (!h) 
    {
      AliError(Form("Could not load EMCALRecalFactors_SM%d",i));
      continue;
    }
    h->SetDirectory(0);
    fEMCALRecoUtils->SetEMCALChannelRecalibrationFactors(i,h);
  }
  return 1;
}

//_____________________________________________________
Int_t AliEMCALTenderSupply::InitRunDepRecalib()
{
  // Initialising recalibration factors.
  
  AliVEvent *event = GetEvent();
  
  if (!event) 
    return 0;
  
  if (fDebugLevel>0) 
    AliInfo("Initialising recalibration factors");
  
  // init default maps first
  if (!fEMCALRecoUtils->GetEMCALRecalibrationFactorsArray())
    fEMCALRecoUtils->InitEMCALRecalibrationFactors() ;
  
  Int_t runRC = event->GetRunNumber();
  
  AliOADBContainer *contRF=new AliOADBContainer("");
  if (fBasePath!="") 
  { //if fBasePath specified in the ->SetBasePath()
    if (fDebugLevel>0)  AliInfo(Form("Loading Recalib OADB from given path %s",fBasePath.Data()));
    
    TFile *fRunDepRecalib= new TFile(Form("%s/EMCALTemperatureCorrCalib.root",fBasePath.Data()),"read");
    if (!fRunDepRecalib || fRunDepRecalib->IsZombie()) 
    {
      AliFatal(Form("EMCALTemperatureCorrCalib.root not found in %s",fBasePath.Data()));
      return 0;
    }
    
    if (fRunDepRecalib) delete fRunDepRecalib;
    
    contRF->InitFromFile(Form("%s/EMCALTemperatureCorrCalib.root",fBasePath.Data()),"AliEMCALRunDepTempCalibCorrections");
  }
  else
  { // Else choose the one in the $ALICE_ROOT directory
    if (fDebugLevel>0)  AliInfo("Loading Recalib OADB from $ALICE_ROOT/OADB/EMCAL");
    
    TFile *fRunDepRecalib= new TFile("$ALICE_ROOT/OADB/EMCAL/EMCALTemperatureCorrCalib.root","read");
    if (!fRunDepRecalib || fRunDepRecalib->IsZombie()) 
    {
      AliFatal("$ALICE_ROOT/OADB/EMCAL/EMCALTemperatureCorrCalib.root was not found");
      return 0;
    }
    
    if (fRunDepRecalib) delete fRunDepRecalib;
    
    contRF->InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALTemperatureCorrCalib.root","AliEMCALRunDepTempCalibCorrections");     
  }
  
  TH1S *rundeprecal=(TH1S*)contRF->GetObject(runRC);
  if (!rundeprecal)
  {
    AliWarning(Form("No TemperatureCorrCalib Objects for run: %d",runRC));
    // let's get the closest runnumber instead then..
    Int_t lower = 0;
    Int_t ic = 0;
    Int_t maxEntry = contRF->GetNumberOfEntries();

    while ((ic < maxEntry) && (contRF->UpperLimit(ic) < runRC)) {
      lower = ic;
      ic++; 
    }

    Int_t closest = lower;
    if ((ic<maxEntry) && 
	 (contRF->LowerLimit(ic)-runRC) < (runRC - contRF->UpperLimit(lower))) {
	 closest = ic;
    }

    AliWarning(Form("TemperatureCorrCalib Objects found closest id %d from run: %d", closest, contRF->LowerLimit(closest)));
    rundeprecal = (TH1S*) contRF->GetObjectByIndex(closest);  
  } 
  
  if (fDebugLevel>0) rundeprecal->Print();
  
  Int_t nSM = fEMCALGeo->GetEMCGeometry()->GetNumberOfSuperModules();
  
  for (Int_t ism=0; ism<nSM; ++ism) 
  {        
    for (Int_t icol=0; icol<48; ++icol) 
    {        
      for (Int_t irow=0; irow<24; ++irow) 
      {
        Float_t factor = fEMCALRecoUtils->GetEMCALChannelRecalibrationFactor(ism,icol,irow);
        
        Int_t absID = fEMCALGeo->GetAbsCellIdFromCellIndexes(ism, irow, icol); // original calibration factor
        factor *= rundeprecal->GetBinContent(absID) / 10000. ; // correction dependent on T

        fEMCALRecoUtils->SetEMCALChannelRecalibrationFactor(ism,icol,irow,factor);
      } // columns
    } // rows 
  } // SM loop
  
  return 1;
}


//_____________________________________________________
Int_t AliEMCALTenderSupply::InitTimeCalibration()
{
  // Initialising bad channel maps
  AliVEvent *event = GetEvent();

  if (!event) 
    return 0;
  
  if (fDebugLevel>0) 
    AliInfo("Initialising time calibration map");
  
  // init default maps first
  if (!fEMCALRecoUtils->GetEMCALTimeRecalibrationFactorsArray())
    fEMCALRecoUtils->InitEMCALTimeRecalibrationFactors() ;

  Int_t runBC = event->GetRunNumber();
  
  AliOADBContainer *contBC = new AliOADBContainer("");
  if (fBasePath!="")
  { //if fBasePath specified in the ->SetBasePath()
    if (fDebugLevel>0) AliInfo(Form("Loading time calibration OADB from given path %s",fBasePath.Data()));
    
    TFile *fbad=new TFile(Form("%s/EMCALTimeCalib.root",fBasePath.Data()),"read");
    if (!fbad || fbad->IsZombie())
    {
      AliFatal(Form("EMCALTimeCalib.root was not found in the path provided: %s",fBasePath.Data()));
      return 0;
    }  
    
    if (fbad) delete fbad;
    
    contBC->InitFromFile(Form("%s/EMCALTimeCalib.root",fBasePath.Data()),"AliEMCALTimeCalib");    
  } 
  else 
  { // Else choose the one in the $ALICE_ROOT directory
    if (fDebugLevel>0) AliInfo("Loading time calibration OADB from $ALICE_ROOT/OADB/EMCAL");
    
    TFile *fbad=new TFile("$ALICE_ROOT/OADB/EMCAL/EMCALTimeCalib.root","read");
    if (!fbad || fbad->IsZombie())
    {
      AliFatal("$ALICE_ROOT/OADB/EMCAL/EMCALTimeCalib.root was not found");
      return 0;
    }  
      
    if (fbad) delete fbad;
    
    contBC->InitFromFile("$ALICE_ROOT/OADB/EMCAL/EMCALTimeCalib.root","AliEMCALTimeCalib"); 
  }
  
  TObjArray *arrayBC=(TObjArray*)contBC->GetObject(runBC);
  if (!arrayBC)
  {
    AliError(Form("No external time calibration set for run number: %d", runBC));
    return 2; 
  }
  
  // Here, it looks for a specific pass
  TString pass = fFilepass;
  if (fFilepass=="calo_spc") pass ="pass1";
  TObjArray *arrayBCpass=(TObjArray*)arrayBC->FindObject(pass);
  if (!arrayBCpass)
  {
    AliError(Form("No external time calibration set for: %d -%s", runBC,pass.Data()));
    return 2; 
  }

  if (fDebugLevel>0) arrayBCpass->Print();

  for(Int_t i = 0; i < 4; i++)
  {
    TH1F *h = fEMCALRecoUtils->GetEMCALChannelTimeRecalibrationFactors(i);
    if (h)
      delete h;
    
    h = (TH1F*)arrayBCpass->FindObject(Form("hAllTimeAvBC%d",i));
    
    if (!h)
    {
      AliError(Form("Can not get hAllTimeAvBC%d",i));
      continue;
    }
    h->SetDirectory(0);
    fEMCALRecoUtils->SetEMCALChannelTimeRecalibrationFactors(i,h);
  }
  return 1;  
}

//_____________________________________________________
void AliEMCALTenderSupply::UpdateCells()
{
  //Remove bad cells from the cell list
  //Recalibrate energy and time cells 
  //This is required for later reclusterization

  AliVEvent *event = GetEvent();

  if (!event) return ;
  
  AliVCaloCells *cells = event->GetEMCALCells();
  Int_t bunchCrossNo = event->GetBunchCrossNumber();

  fEMCALRecoUtils->RecalibrateCells(cells, bunchCrossNo); 
  
  // remove exotic cells - loop through cells and zero the exotic ones
  // just like with bad cell rejection in reco utils (inside RecalibrateCells)
  if (fRejectExoticCells)
  {
    Short_t  absId  =-1;
    Double_t ecell = 0;
    Double_t tcell = 0;
    Double_t efrac = 0;
    Int_t  mclabel = -1;
    Bool_t   isExot = kFALSE;
  
    // loop through cells
    Int_t nEMcell  = cells->GetNumberOfCells() ;  
    for (Int_t iCell = 0; iCell < nEMcell; iCell++) 
    { 
      cells->GetCell(iCell, absId, ecell, tcell, mclabel, efrac);
    
      isExot = fEMCALRecoUtils->IsExoticCell(absId, cells, bunchCrossNo); 
      // zero if exotic
      if (isExot)
        cells->SetCell(iCell, absId, 0.0, -1.0, mclabel, efrac);
    } // cell loop
  } // reject exotic cells

  cells->Sort();
}

//_____________________________________________________
TString AliEMCALTenderSupply::GetBeamType()
{
  // Get beam type : pp-AA-pA
  // ESDs have it directly, AODs get it from hardcoded run number ranges
  
  AliVEvent *event = GetEvent();

  if (!event) { 
    AliError("Couldn't retrieve event!");
    return "";
  }

  TString beamType;

  AliESDEvent *esd = dynamic_cast<AliESDEvent*>(event);
  if (esd) {
    const AliESDRun *run = esd->GetESDRun();
    beamType = run->GetBeamType();
  }
  else
  {
    Int_t runNumber = event->GetRunNumber();
    if ((runNumber >= 136851 && runNumber <= 139517)  // LHC10h
  || (runNumber >= 166529 && runNumber <= 170593))  // LHC11h
    {
      beamType = "A-A";
    }
    else 
    {
      beamType = "p-p";
    }
  }

  return beamType;    
}

//_____________________________________________________
Int_t AliEMCALTenderSupply::InitRecParam()
{
  // Init reco params if not yet exist (probably shipped by the user already)

  if (fRecParam != 0)
    return 2;

  TString beamType = GetBeamType();

  // set some default reco params
  fRecParam = new AliEMCALRecParam();
  fRecParam->SetClusteringThreshold(0.100);
  fRecParam->SetMinECut(0.050);
  
  if (!fCalibrateTimeParamAvailable) {
    fRecParam->SetTimeCut(250*1.e-9);
    fRecParam->SetTimeMin(425*1.e-9);
    fRecParam->SetTimeMax(825*1.e-9);
  } else {
    fRecParam->SetTimeCut(100*1.e-9);
    fRecParam->SetTimeMin(-50*1.e-9);
    fRecParam->SetTimeMax(50*1.e-9);
  }
  
  if (beamType == "A-A") {
    fRecParam->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv2);
  } else {
    fRecParam->SetClusterizerFlag(AliEMCALRecParam::kClusterizerv1);
  }

  return 0;
}

//_____________________________________________________
Bool_t AliEMCALTenderSupply::InitClusterization()
{
  // Initialing clusterization/unfolding algorithm and set all the needed parameters.
  
  AliVEvent *event = GetEvent();

  if (!event) 
    return kFALSE;
  
  if (fDebugLevel>0) 
    AliInfo(Form("Initialising reclustering parameters: Clusterizer type: %d",fRecParam->GetClusterizerFlag()));
  
  //---setup clusterizer
  if (fClusterizer) {
    // avoid deleting fDigitsArr
    fClusterizer->SetDigitsArr(0);
    delete fClusterizer;
    fClusterizer = 0;
  }
  if     (fRecParam->GetClusterizerFlag() == AliEMCALRecParam::kClusterizerv1)
    fClusterizer = new AliEMCALClusterizerv1 (fEMCALGeo);
  else if (fRecParam->GetClusterizerFlag() == AliEMCALRecParam::kClusterizerv2) 
    fClusterizer = new AliEMCALClusterizerv2(fEMCALGeo);
  else if (fRecParam->GetClusterizerFlag() == AliEMCALRecParam::kClusterizerNxN) 
  {
    AliEMCALClusterizerNxN *clusterizer = new AliEMCALClusterizerNxN(fEMCALGeo);
    clusterizer->SetNRowDiff(fRecParam->GetNRowDiff());
    clusterizer->SetNColDiff(fRecParam->GetNColDiff());
    fClusterizer = clusterizer;
  } 
  else 
  {
    AliFatal(Form("Clusterizer < %d > not available", fRecParam->GetClusterizerFlag()));
    return kFALSE;
  }
  
  // Set the clustering parameters
  fClusterizer->SetECAClusteringThreshold(fRecParam->GetClusteringThreshold());
  fClusterizer->SetECALogWeight          (fRecParam->GetW0()                 );
  fClusterizer->SetMinECut               (fRecParam->GetMinECut()            );    
  fClusterizer->SetUnfolding             (fRecParam->GetUnfold()             );
  fClusterizer->SetECALocalMaxCut        (fRecParam->GetLocMaxCut()          );
  fClusterizer->SetTimeCut               (fRecParam->GetTimeCut()            );
  fClusterizer->SetTimeMin               (fRecParam->GetTimeMin()            );
  fClusterizer->SetTimeMax               (fRecParam->GetTimeMax()            );
  fClusterizer->SetInputCalibrated       (kTRUE                              );
  fClusterizer->SetJustClusters          (kTRUE                              );  
  
  // In case of unfolding after clusterization is requested, set the corresponding parameters
  if (fRecParam->GetUnfold()) 
  {
    for (Int_t i = 0; i < 8; ++i) 
    {
      fClusterizer->SetSSPars(i, fRecParam->GetSSPars(i));
    }
    for (Int_t i = 0; i < 3; ++i)
    {
      fClusterizer->SetPar5  (i, fRecParam->GetPar5(i));
      fClusterizer->SetPar6  (i, fRecParam->GetPar6(i));
    }
    fClusterizer->InitClusterUnfolding();
  }
  
  fClusterizer->SetDigitsArr(fDigitsArr);
  fClusterizer->SetOutput(0);
  fClusterArr = const_cast<TObjArray *>(fClusterizer->GetRecPoints());
  return kTRUE;
}

//_____________________________________________________
void AliEMCALTenderSupply::FillDigitsArray()
{
  // Fill digits from cells to a TClonesArray.
  
  AliVEvent *event = GetEvent();

 if (!event)
    return;
    
  // In case of MC productions done before aliroot tag v5-02-Rev09
  // assing the cluster label to all the cells belonging to this cluster
  // very rough
  Int_t cellLabels[12672];
  if (fSetCellMCLabelFromCluster)
  {
    for (Int_t i = 0; i < 12672; i++)
    {
      cellLabels       [i] = 0 ;
      fOrgClusterCellId[i] =-1 ;
    }
    
    Int_t nClusters = event->GetNumberOfCaloClusters();
    for (Int_t i = 0; i < nClusters; i++)
    {
      AliVCluster *clus =  event->GetCaloCluster(i);
      
      if (!clus) continue;
      
      if (!clus->IsEMCAL()) continue ;
      
      Int_t      label = clus->GetLabel();
      UShort_t * index = clus->GetCellsAbsId() ;
      
      for(Int_t icell=0; icell < clus->GetNCells(); icell++)
      {
        cellLabels       [index[icell]] = label;
        fOrgClusterCellId[index[icell]] = i ; // index of the original cluster
      }
    }// cluster loop
  }

  fDigitsArr->Clear("C");
  AliVCaloCells *cells = event->GetEMCALCells();
  Int_t ncells = cells->GetNumberOfCells();
  for (Int_t icell = 0, idigit = 0; icell < ncells; ++icell) 
  {
    Double_t cellAmplitude=0, cellTime=0, efrac = 0;
    Short_t  cellNumber=0;
    Int_t mcLabel=-1;

    if (cells->GetCell(icell, cellNumber, cellAmplitude, cellTime, mcLabel, efrac) != kTRUE)
      break;

    // Do not add if energy already too low (some cells set to 0 if bad channels)
    if (cellAmplitude < fRecParam->GetMinECut())
      continue;

    // If requested, do not include exotic cells
   if (fEMCALRecoUtils->IsExoticCell(cellNumber,cells,event->GetBunchCrossNumber())) 
      continue;
    
    if      (fSetCellMCLabelFromCluster) mcLabel = cellLabels[cellNumber];
    else if (fRemapMCLabelForAODs     ) RemapMCLabelForAODs(mcLabel);
    
    if (mcLabel > 0 && efrac < 1e-6) efrac = 1;
    
    new((*fDigitsArr)[idigit]) AliEMCALDigit(mcLabel, mcLabel, cellNumber,
                                             (Float_t)cellAmplitude, (Float_t)cellTime,
                                             AliEMCALDigit::kHG,idigit, 0, 0, efrac*cellAmplitude);
    idigit++;
  }
}

//_____________________________________________________
void AliEMCALTenderSupply::Clusterize()
{
  // Clusterize.
  
  fClusterizer->Digits2Clusters("");
}

//_____________________________________________________
void AliEMCALTenderSupply::UpdateClusters()
{
  // Update ESD cluster list.
  
  AliVEvent *event = GetEvent();

  if (!event)
    return;
  
  TClonesArray *clus = dynamic_cast<TClonesArray*>(event->FindListObject("caloClusters"));
  if (!clus) 
    clus = dynamic_cast<TClonesArray*>(event->FindListObject("CaloClusters"));
  if (!clus) 
  {
    AliError(" Null pointer to calo clusters array, returning");
    return;
  }
    
  // Before destroying the orignal list, assign to the rec points the MC labels
  // of the original clusters, if requested
  if (fSetCellMCLabelFromCluster == 2) 
    SetClustersMCLabelFromOriginalClusters() ;

  Int_t nents = clus->GetEntriesFast();
  for (Int_t i=0; i < nents; ++i) 
  {
    AliVCluster *c = dynamic_cast<AliVCluster*>(clus->At(i));
    if (!c)
      continue;
    if (c->IsEMCAL())
    {
      delete clus->RemoveAt(i);
    }
  }
  
  clus->Compress();
  
  RecPoints2Clusters(clus);
}

//_____________________________________________________
void AliEMCALTenderSupply::RecPoints2Clusters(TClonesArray *clus)
{
  // Convert AliEMCALRecoPoints to AliESDCaloClusters/AliAODCaloClusters.
  // Cluster energy, global position, cells and their amplitude fractions are restored.
  
  AliVEvent *event = GetEvent();

  if (!event)
    return;

  Int_t ncls = fClusterArr->GetEntriesFast();
  for(Int_t i=0, nout=clus->GetEntriesFast(); i < ncls; ++i) 
  {
    AliEMCALRecPoint *recpoint = static_cast<AliEMCALRecPoint*>(fClusterArr->At(i));
    
    Int_t ncellsTrue = 0;
    const Int_t ncells = recpoint->GetMultiplicity();
    UShort_t   absIds[ncells];  
    Double32_t ratios[ncells];
    Int_t *dlist = recpoint->GetDigitsList();
    Float_t *elist = recpoint->GetEnergiesList();
    for (Int_t c = 0; c < ncells; ++c) 
    {
      AliEMCALDigit *digit = static_cast<AliEMCALDigit*>(fDigitsArr->At(dlist[c]));
      absIds[ncellsTrue] = digit->GetId();
      ratios[ncellsTrue] = elist[c]/digit->GetAmplitude();
      if (ratios[ncellsTrue] < 0.001) 
        continue;
      ++ncellsTrue;
    }
    
    if (ncellsTrue < 1) 
    {
      AliWarning("Skipping cluster with no cells");
      continue;
    }
    
    // calculate new cluster position
    TVector3 gpos;
    recpoint->GetGlobalPosition(gpos);
    Float_t g[3];
    gpos.GetXYZ(g);
    
    AliVCluster *c = static_cast<AliVCluster*>(clus->New(nout++));
    c->SetID(nout-1); 
    c->SetType(AliVCluster::kEMCALClusterv1);
    c->SetE(recpoint->GetEnergy());
    c->SetPosition(g);
    c->SetNCells(ncellsTrue);
    c->SetDispersion(recpoint->GetDispersion());
    c->SetEmcCpvDistance(-1);            //not yet implemented
    c->SetChi2(-1);                      //not yet implemented
    c->SetTOF(recpoint->GetTime()) ;     //time-of-flight
    c->SetNExMax(recpoint->GetNExMax()); //number of local maxima
    Float_t elipAxis[2];
    recpoint->GetElipsAxis(elipAxis);
    c->SetM02(elipAxis[0]*elipAxis[0]) ;
    c->SetM20(elipAxis[1]*elipAxis[1]) ;
    c->SetCellsAbsId(absIds);
    c->SetCellsAmplitudeFraction(ratios);

    //MC labels
    Int_t  parentMult = 0;
    Int_t *parentList = recpoint->GetParents(parentMult);
    if (parentMult > 0) c->SetLabel(parentList, parentMult);

  }
}

//___________________________________________________________
void AliEMCALTenderSupply::RemapMCLabelForAODs(Int_t & label)
{
  // MC label for Cells not remapped after ESD filtering, do it here.
  
  if (label < 0) return;
  
  AliAODEvent  * evt = dynamic_cast<AliAODEvent*> (GetEvent()) ;
  if (!evt) return ;
  
  TClonesArray * arr = dynamic_cast<TClonesArray*>(evt->FindListObject("mcparticles")) ;
  if (!arr) return ;
  
  if (label < arr->GetEntriesFast())
  {
    AliAODMCParticle * particle = dynamic_cast<AliAODMCParticle *>(arr->At(label));
    if (!particle) return ;
    
    if (label == particle->Label()) return ; // label already OK
  }
  
  // loop on the particles list and check if there is one with the same label
  for (Int_t ind = 0; ind < arr->GetEntriesFast(); ind++)
  {
    AliAODMCParticle * particle = dynamic_cast<AliAODMCParticle *>(arr->At(ind));
    if (!particle) continue ;
    
    if (label == particle->Label())
    {
      label = ind;
      return;
    }
  }
  
  label = -1;
}

//_____________________________________________________________________________________________
void AliEMCALTenderSupply::SetClustersMCLabelFromOriginalClusters()
{
  // Get the original clusters that contribute to the new rec point cluster,
  // assign the labels of such clusters to the new rec point cluster.
  // Only approximatedly valid  when output are V1 clusters, or input/output clusterizer
  // are the same handle with care
  // Copy from same method in AliAnalysisTaskEMCALClusterize, but here modify the recpoint and
  // not the output calocluster
  
  Int_t ncls = fClusterArr->GetEntriesFast();
  for(Int_t irp=0; irp < ncls; ++irp)
  {
    TArrayI clArray(300) ; //Weird if more than a few clusters are in the origin ...
    clArray.Reset();
    Int_t nClu = 0;
    Int_t nLabTotOrg = 0;
    Float_t emax = -1;
    Int_t idMax = -1;
    
    AliEMCALRecPoint *clus = static_cast<AliEMCALRecPoint*>(fClusterArr->At(irp));
    
    //Find the clusters that originally had the cells
    const Int_t ncells = clus->GetMultiplicity();
    Int_t *digList     = clus->GetDigitsList();
    
    for (Int_t iLoopCell = 0 ; iLoopCell < ncells ; iLoopCell++)
    {
      AliEMCALDigit *digit = static_cast<AliEMCALDigit*>(fDigitsArr->At(digList[iLoopCell]));
      Int_t idCell = digit->GetId();

      if (idCell>=0)
      {
        Int_t idCluster = fOrgClusterCellId[idCell];
        Bool_t set = kTRUE;
        for (Int_t icl =0; icl < nClu; icl++)
        {
          if (((Int_t)clArray.GetAt(icl))==-1) continue;
          if (idCluster == ((Int_t)clArray.GetAt(icl))) set = kFALSE;
        }
        if (set && idCluster >= 0)
        {
          clArray.SetAt(idCluster,nClu++);
          nLabTotOrg+=(GetEvent()->GetCaloCluster(idCluster))->GetNLabels();
                    
          //Search highest E cluster
          AliVCluster * clOrg = GetEvent()->GetCaloCluster(idCluster);
          if (emax < clOrg->E())
          {
            emax  = clOrg->E();
            idMax = idCluster;
          }
        }
      }
    }// cell loop
        
    // Put the first in the list the cluster with highest energy
    if (idMax != ((Int_t)clArray.GetAt(0))) // Max not at first position
    {
      Int_t maxIndex = -1;
      Int_t firstCluster = ((Int_t)clArray.GetAt(0));
      for (Int_t iLoopCluster = 0 ; iLoopCluster < nClu ; iLoopCluster++)
      {
        if (idMax == ((Int_t)clArray.GetAt(iLoopCluster))) maxIndex = iLoopCluster;
      }
      
      if (firstCluster >=0 && idMax >=0)
      {
        clArray.SetAt(idMax,0);
        clArray.SetAt(firstCluster,maxIndex);
      }
    }
    
    // Get the labels list in the original clusters, assign all to the new cluster
    TArrayI clMCArray(nLabTotOrg) ;
    clMCArray.Reset();
    
    Int_t nLabTot = 0;
    for (Int_t iLoopCluster = 0 ; iLoopCluster < nClu ; iLoopCluster++)
    {
      Int_t idCluster = (Int_t) clArray.GetAt(iLoopCluster);
      AliVCluster * clOrg = GetEvent()->GetCaloCluster(idCluster);
      Int_t nLab = clOrg->GetNLabels();
      
      for (Int_t iLab = 0 ; iLab < nLab ; iLab++)
      {
        Int_t lab = clOrg->GetLabelAt(iLab) ;
        if (lab>=0)
        {
          Bool_t set = kTRUE;
          for(Int_t iLabTot =0; iLabTot < nLabTot; iLabTot++)
          {
            if (lab == ((Int_t)clMCArray.GetAt(iLabTot))) set = kFALSE;
          }
          if (set) clMCArray.SetAt(lab,nLabTot++);
        }
      }
    }// cluster loop
    
    // Set the final list of labels to rec point
    
    Int_t *labels = new Int_t[nLabTot];
    for(Int_t il = 0; il < nLabTot; il++) labels[il] = clMCArray.GetArray()[il];
    clus->SetParents(nLabTot,labels);
    
  } // rec point array
}

//_____________________________________________________
void AliEMCALTenderSupply::GetPass()
{
  // Get passx from filename
  
  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  fInputTree = mgr->GetTree();
  
  if (!fInputTree) 
  {
    AliError("Pointer to tree = 0, returning");
    return;
  }
  
  fInputFile = fInputTree->GetCurrentFile();
  if (!fInputFile) {
    AliError("Null pointer input file, returning");
    return;
  }
  
  TString fname(fInputFile->GetName());
  if      (fname.Contains("pass1")) fFilepass = TString("pass1");
  else if (fname.Contains("pass2")) fFilepass = TString("pass2");
  else if (fname.Contains("pass3")) fFilepass = TString("pass3");
  else if (fname.Contains("pass4")) fFilepass = TString("pass4");
  else if (fname.Contains("pass5")) fFilepass = TString("pass5");
  else if (fname.Contains("LHC11c") &&
           fname.Contains("spc_calo")) fFilepass = TString("spc_calo");
  else if (fname.Contains("calo") || fname.Contains("high_lumi"))

  {
    //printf("AliEMCALTenderSupply::GetPass() - Path contains <calo> or <high-lumi>, set as <pass1>\n");
    fFilepass = TString("pass1");
  }
  else if (fname.Contains("LHC14a1a")) fFilepass = TString("LHC14a1a");
  else
  {
    AliError(Form("Pass number string not found: %s", fname.Data()));
    return;            
  }
}
 AliEMCALTenderSupply.cxx:1
 AliEMCALTenderSupply.cxx:2
 AliEMCALTenderSupply.cxx:3
 AliEMCALTenderSupply.cxx:4
 AliEMCALTenderSupply.cxx:5
 AliEMCALTenderSupply.cxx:6
 AliEMCALTenderSupply.cxx:7
 AliEMCALTenderSupply.cxx:8
 AliEMCALTenderSupply.cxx:9
 AliEMCALTenderSupply.cxx:10
 AliEMCALTenderSupply.cxx:11
 AliEMCALTenderSupply.cxx:12
 AliEMCALTenderSupply.cxx:13
 AliEMCALTenderSupply.cxx:14
 AliEMCALTenderSupply.cxx:15
 AliEMCALTenderSupply.cxx:16
 AliEMCALTenderSupply.cxx:17
 AliEMCALTenderSupply.cxx:18
 AliEMCALTenderSupply.cxx:19
 AliEMCALTenderSupply.cxx:20
 AliEMCALTenderSupply.cxx:21
 AliEMCALTenderSupply.cxx:22
 AliEMCALTenderSupply.cxx:23
 AliEMCALTenderSupply.cxx:24
 AliEMCALTenderSupply.cxx:25
 AliEMCALTenderSupply.cxx:26
 AliEMCALTenderSupply.cxx:27
 AliEMCALTenderSupply.cxx:28
 AliEMCALTenderSupply.cxx:29
 AliEMCALTenderSupply.cxx:30
 AliEMCALTenderSupply.cxx:31
 AliEMCALTenderSupply.cxx:32
 AliEMCALTenderSupply.cxx:33
 AliEMCALTenderSupply.cxx:34
 AliEMCALTenderSupply.cxx:35
 AliEMCALTenderSupply.cxx:36
 AliEMCALTenderSupply.cxx:37
 AliEMCALTenderSupply.cxx:38
 AliEMCALTenderSupply.cxx:39
 AliEMCALTenderSupply.cxx:40
 AliEMCALTenderSupply.cxx:41
 AliEMCALTenderSupply.cxx:42
 AliEMCALTenderSupply.cxx:43
 AliEMCALTenderSupply.cxx:44
 AliEMCALTenderSupply.cxx:45
 AliEMCALTenderSupply.cxx:46
 AliEMCALTenderSupply.cxx:47
 AliEMCALTenderSupply.cxx:48
 AliEMCALTenderSupply.cxx:49
 AliEMCALTenderSupply.cxx:50
 AliEMCALTenderSupply.cxx:51
 AliEMCALTenderSupply.cxx:52
 AliEMCALTenderSupply.cxx:53
 AliEMCALTenderSupply.cxx:54
 AliEMCALTenderSupply.cxx:55
 AliEMCALTenderSupply.cxx:56
 AliEMCALTenderSupply.cxx:57
 AliEMCALTenderSupply.cxx:58
 AliEMCALTenderSupply.cxx:59
 AliEMCALTenderSupply.cxx:60
 AliEMCALTenderSupply.cxx:61
 AliEMCALTenderSupply.cxx:62
 AliEMCALTenderSupply.cxx:63
 AliEMCALTenderSupply.cxx:64
 AliEMCALTenderSupply.cxx:65
 AliEMCALTenderSupply.cxx:66
 AliEMCALTenderSupply.cxx:67
 AliEMCALTenderSupply.cxx:68
 AliEMCALTenderSupply.cxx:69
 AliEMCALTenderSupply.cxx:70
 AliEMCALTenderSupply.cxx:71
 AliEMCALTenderSupply.cxx:72
 AliEMCALTenderSupply.cxx:73
 AliEMCALTenderSupply.cxx:74
 AliEMCALTenderSupply.cxx:75
 AliEMCALTenderSupply.cxx:76
 AliEMCALTenderSupply.cxx:77
 AliEMCALTenderSupply.cxx:78
 AliEMCALTenderSupply.cxx:79
 AliEMCALTenderSupply.cxx:80
 AliEMCALTenderSupply.cxx:81
 AliEMCALTenderSupply.cxx:82
 AliEMCALTenderSupply.cxx:83
 AliEMCALTenderSupply.cxx:84
 AliEMCALTenderSupply.cxx:85
 AliEMCALTenderSupply.cxx:86
 AliEMCALTenderSupply.cxx:87
 AliEMCALTenderSupply.cxx:88
 AliEMCALTenderSupply.cxx:89
 AliEMCALTenderSupply.cxx:90
 AliEMCALTenderSupply.cxx:91
 AliEMCALTenderSupply.cxx:92
 AliEMCALTenderSupply.cxx:93
 AliEMCALTenderSupply.cxx:94
 AliEMCALTenderSupply.cxx:95
 AliEMCALTenderSupply.cxx:96
 AliEMCALTenderSupply.cxx:97
 AliEMCALTenderSupply.cxx:98
 AliEMCALTenderSupply.cxx:99
 AliEMCALTenderSupply.cxx:100
 AliEMCALTenderSupply.cxx:101
 AliEMCALTenderSupply.cxx:102
 AliEMCALTenderSupply.cxx:103
 AliEMCALTenderSupply.cxx:104
 AliEMCALTenderSupply.cxx:105
 AliEMCALTenderSupply.cxx:106
 AliEMCALTenderSupply.cxx:107
 AliEMCALTenderSupply.cxx:108
 AliEMCALTenderSupply.cxx:109
 AliEMCALTenderSupply.cxx:110
 AliEMCALTenderSupply.cxx:111
 AliEMCALTenderSupply.cxx:112
 AliEMCALTenderSupply.cxx:113
 AliEMCALTenderSupply.cxx:114
 AliEMCALTenderSupply.cxx:115
 AliEMCALTenderSupply.cxx:116
 AliEMCALTenderSupply.cxx:117
 AliEMCALTenderSupply.cxx:118
 AliEMCALTenderSupply.cxx:119
 AliEMCALTenderSupply.cxx:120
 AliEMCALTenderSupply.cxx:121
 AliEMCALTenderSupply.cxx:122
 AliEMCALTenderSupply.cxx:123
 AliEMCALTenderSupply.cxx:124
 AliEMCALTenderSupply.cxx:125
 AliEMCALTenderSupply.cxx:126
 AliEMCALTenderSupply.cxx:127
 AliEMCALTenderSupply.cxx:128
 AliEMCALTenderSupply.cxx:129
 AliEMCALTenderSupply.cxx:130
 AliEMCALTenderSupply.cxx:131
 AliEMCALTenderSupply.cxx:132
 AliEMCALTenderSupply.cxx:133
 AliEMCALTenderSupply.cxx:134
 AliEMCALTenderSupply.cxx:135
 AliEMCALTenderSupply.cxx:136
 AliEMCALTenderSupply.cxx:137
 AliEMCALTenderSupply.cxx:138
 AliEMCALTenderSupply.cxx:139
 AliEMCALTenderSupply.cxx:140
 AliEMCALTenderSupply.cxx:141
 AliEMCALTenderSupply.cxx:142
 AliEMCALTenderSupply.cxx:143
 AliEMCALTenderSupply.cxx:144
 AliEMCALTenderSupply.cxx:145
 AliEMCALTenderSupply.cxx:146
 AliEMCALTenderSupply.cxx:147
 AliEMCALTenderSupply.cxx:148
 AliEMCALTenderSupply.cxx:149
 AliEMCALTenderSupply.cxx:150
 AliEMCALTenderSupply.cxx:151
 AliEMCALTenderSupply.cxx:152
 AliEMCALTenderSupply.cxx:153
 AliEMCALTenderSupply.cxx:154
 AliEMCALTenderSupply.cxx:155
 AliEMCALTenderSupply.cxx:156
 AliEMCALTenderSupply.cxx:157
 AliEMCALTenderSupply.cxx:158
 AliEMCALTenderSupply.cxx:159
 AliEMCALTenderSupply.cxx:160
 AliEMCALTenderSupply.cxx:161
 AliEMCALTenderSupply.cxx:162
 AliEMCALTenderSupply.cxx:163
 AliEMCALTenderSupply.cxx:164
 AliEMCALTenderSupply.cxx:165
 AliEMCALTenderSupply.cxx:166
 AliEMCALTenderSupply.cxx:167
 AliEMCALTenderSupply.cxx:168
 AliEMCALTenderSupply.cxx:169
 AliEMCALTenderSupply.cxx:170
 AliEMCALTenderSupply.cxx:171
 AliEMCALTenderSupply.cxx:172
 AliEMCALTenderSupply.cxx:173
 AliEMCALTenderSupply.cxx:174
 AliEMCALTenderSupply.cxx:175
 AliEMCALTenderSupply.cxx:176
 AliEMCALTenderSupply.cxx:177
 AliEMCALTenderSupply.cxx:178
 AliEMCALTenderSupply.cxx:179
 AliEMCALTenderSupply.cxx:180
 AliEMCALTenderSupply.cxx:181
 AliEMCALTenderSupply.cxx:182
 AliEMCALTenderSupply.cxx:183
 AliEMCALTenderSupply.cxx:184
 AliEMCALTenderSupply.cxx:185
 AliEMCALTenderSupply.cxx:186
 AliEMCALTenderSupply.cxx:187
 AliEMCALTenderSupply.cxx:188
 AliEMCALTenderSupply.cxx:189
 AliEMCALTenderSupply.cxx:190
 AliEMCALTenderSupply.cxx:191
 AliEMCALTenderSupply.cxx:192
 AliEMCALTenderSupply.cxx:193
 AliEMCALTenderSupply.cxx:194
 AliEMCALTenderSupply.cxx:195
 AliEMCALTenderSupply.cxx:196
 AliEMCALTenderSupply.cxx:197
 AliEMCALTenderSupply.cxx:198
 AliEMCALTenderSupply.cxx:199
 AliEMCALTenderSupply.cxx:200
 AliEMCALTenderSupply.cxx:201
 AliEMCALTenderSupply.cxx:202
 AliEMCALTenderSupply.cxx:203
 AliEMCALTenderSupply.cxx:204
 AliEMCALTenderSupply.cxx:205
 AliEMCALTenderSupply.cxx:206
 AliEMCALTenderSupply.cxx:207
 AliEMCALTenderSupply.cxx:208
 AliEMCALTenderSupply.cxx:209
 AliEMCALTenderSupply.cxx:210
 AliEMCALTenderSupply.cxx:211
 AliEMCALTenderSupply.cxx:212
 AliEMCALTenderSupply.cxx:213
 AliEMCALTenderSupply.cxx:214
 AliEMCALTenderSupply.cxx:215
 AliEMCALTenderSupply.cxx:216
 AliEMCALTenderSupply.cxx:217
 AliEMCALTenderSupply.cxx:218
 AliEMCALTenderSupply.cxx:219
 AliEMCALTenderSupply.cxx:220
 AliEMCALTenderSupply.cxx:221
 AliEMCALTenderSupply.cxx:222
 AliEMCALTenderSupply.cxx:223
 AliEMCALTenderSupply.cxx:224
 AliEMCALTenderSupply.cxx:225
 AliEMCALTenderSupply.cxx:226
 AliEMCALTenderSupply.cxx:227
 AliEMCALTenderSupply.cxx:228
 AliEMCALTenderSupply.cxx:229
 AliEMCALTenderSupply.cxx:230
 AliEMCALTenderSupply.cxx:231
 AliEMCALTenderSupply.cxx:232
 AliEMCALTenderSupply.cxx:233
 AliEMCALTenderSupply.cxx:234
 AliEMCALTenderSupply.cxx:235
 AliEMCALTenderSupply.cxx:236
 AliEMCALTenderSupply.cxx:237
 AliEMCALTenderSupply.cxx:238
 AliEMCALTenderSupply.cxx:239
 AliEMCALTenderSupply.cxx:240
 AliEMCALTenderSupply.cxx:241
 AliEMCALTenderSupply.cxx:242
 AliEMCALTenderSupply.cxx:243
 AliEMCALTenderSupply.cxx:244
 AliEMCALTenderSupply.cxx:245
 AliEMCALTenderSupply.cxx:246
 AliEMCALTenderSupply.cxx:247
 AliEMCALTenderSupply.cxx:248
 AliEMCALTenderSupply.cxx:249
 AliEMCALTenderSupply.cxx:250
 AliEMCALTenderSupply.cxx:251
 AliEMCALTenderSupply.cxx:252
 AliEMCALTenderSupply.cxx:253
 AliEMCALTenderSupply.cxx:254
 AliEMCALTenderSupply.cxx:255
 AliEMCALTenderSupply.cxx:256
 AliEMCALTenderSupply.cxx:257
 AliEMCALTenderSupply.cxx:258
 AliEMCALTenderSupply.cxx:259
 AliEMCALTenderSupply.cxx:260
 AliEMCALTenderSupply.cxx:261
 AliEMCALTenderSupply.cxx:262
 AliEMCALTenderSupply.cxx:263
 AliEMCALTenderSupply.cxx:264
 AliEMCALTenderSupply.cxx:265
 AliEMCALTenderSupply.cxx:266
 AliEMCALTenderSupply.cxx:267
 AliEMCALTenderSupply.cxx:268
 AliEMCALTenderSupply.cxx:269
 AliEMCALTenderSupply.cxx:270
 AliEMCALTenderSupply.cxx:271
 AliEMCALTenderSupply.cxx:272
 AliEMCALTenderSupply.cxx:273
 AliEMCALTenderSupply.cxx:274
 AliEMCALTenderSupply.cxx:275
 AliEMCALTenderSupply.cxx:276
 AliEMCALTenderSupply.cxx:277
 AliEMCALTenderSupply.cxx:278
 AliEMCALTenderSupply.cxx:279
 AliEMCALTenderSupply.cxx:280
 AliEMCALTenderSupply.cxx:281
 AliEMCALTenderSupply.cxx:282
 AliEMCALTenderSupply.cxx:283
 AliEMCALTenderSupply.cxx:284
 AliEMCALTenderSupply.cxx:285
 AliEMCALTenderSupply.cxx:286
 AliEMCALTenderSupply.cxx:287
 AliEMCALTenderSupply.cxx:288
 AliEMCALTenderSupply.cxx:289
 AliEMCALTenderSupply.cxx:290
 AliEMCALTenderSupply.cxx:291
 AliEMCALTenderSupply.cxx:292
 AliEMCALTenderSupply.cxx:293
 AliEMCALTenderSupply.cxx:294
 AliEMCALTenderSupply.cxx:295
 AliEMCALTenderSupply.cxx:296
 AliEMCALTenderSupply.cxx:297
 AliEMCALTenderSupply.cxx:298
 AliEMCALTenderSupply.cxx:299
 AliEMCALTenderSupply.cxx:300
 AliEMCALTenderSupply.cxx:301
 AliEMCALTenderSupply.cxx:302
 AliEMCALTenderSupply.cxx:303
 AliEMCALTenderSupply.cxx:304
 AliEMCALTenderSupply.cxx:305
 AliEMCALTenderSupply.cxx:306
 AliEMCALTenderSupply.cxx:307
 AliEMCALTenderSupply.cxx:308
 AliEMCALTenderSupply.cxx:309
 AliEMCALTenderSupply.cxx:310
 AliEMCALTenderSupply.cxx:311
 AliEMCALTenderSupply.cxx:312
 AliEMCALTenderSupply.cxx:313
 AliEMCALTenderSupply.cxx:314
 AliEMCALTenderSupply.cxx:315
 AliEMCALTenderSupply.cxx:316
 AliEMCALTenderSupply.cxx:317
 AliEMCALTenderSupply.cxx:318
 AliEMCALTenderSupply.cxx:319
 AliEMCALTenderSupply.cxx:320
 AliEMCALTenderSupply.cxx:321
 AliEMCALTenderSupply.cxx:322
 AliEMCALTenderSupply.cxx:323
 AliEMCALTenderSupply.cxx:324
 AliEMCALTenderSupply.cxx:325
 AliEMCALTenderSupply.cxx:326
 AliEMCALTenderSupply.cxx:327
 AliEMCALTenderSupply.cxx:328
 AliEMCALTenderSupply.cxx:329
 AliEMCALTenderSupply.cxx:330
 AliEMCALTenderSupply.cxx:331
 AliEMCALTenderSupply.cxx:332
 AliEMCALTenderSupply.cxx:333
 AliEMCALTenderSupply.cxx:334
 AliEMCALTenderSupply.cxx:335
 AliEMCALTenderSupply.cxx:336
 AliEMCALTenderSupply.cxx:337
 AliEMCALTenderSupply.cxx:338
 AliEMCALTenderSupply.cxx:339
 AliEMCALTenderSupply.cxx:340
 AliEMCALTenderSupply.cxx:341
 AliEMCALTenderSupply.cxx:342
 AliEMCALTenderSupply.cxx:343
 AliEMCALTenderSupply.cxx:344
 AliEMCALTenderSupply.cxx:345
 AliEMCALTenderSupply.cxx:346
 AliEMCALTenderSupply.cxx:347
 AliEMCALTenderSupply.cxx:348
 AliEMCALTenderSupply.cxx:349
 AliEMCALTenderSupply.cxx:350
 AliEMCALTenderSupply.cxx:351
 AliEMCALTenderSupply.cxx:352
 AliEMCALTenderSupply.cxx:353
 AliEMCALTenderSupply.cxx:354
 AliEMCALTenderSupply.cxx:355
 AliEMCALTenderSupply.cxx:356
 AliEMCALTenderSupply.cxx:357
 AliEMCALTenderSupply.cxx:358
 AliEMCALTenderSupply.cxx:359
 AliEMCALTenderSupply.cxx:360
 AliEMCALTenderSupply.cxx:361
 AliEMCALTenderSupply.cxx:362
 AliEMCALTenderSupply.cxx:363
 AliEMCALTenderSupply.cxx:364
 AliEMCALTenderSupply.cxx:365
 AliEMCALTenderSupply.cxx:366
 AliEMCALTenderSupply.cxx:367
 AliEMCALTenderSupply.cxx:368
 AliEMCALTenderSupply.cxx:369
 AliEMCALTenderSupply.cxx:370
 AliEMCALTenderSupply.cxx:371
 AliEMCALTenderSupply.cxx:372
 AliEMCALTenderSupply.cxx:373
 AliEMCALTenderSupply.cxx:374
 AliEMCALTenderSupply.cxx:375
 AliEMCALTenderSupply.cxx:376
 AliEMCALTenderSupply.cxx:377
 AliEMCALTenderSupply.cxx:378
 AliEMCALTenderSupply.cxx:379
 AliEMCALTenderSupply.cxx:380
 AliEMCALTenderSupply.cxx:381
 AliEMCALTenderSupply.cxx:382
 AliEMCALTenderSupply.cxx:383
 AliEMCALTenderSupply.cxx:384
 AliEMCALTenderSupply.cxx:385
 AliEMCALTenderSupply.cxx:386
 AliEMCALTenderSupply.cxx:387
 AliEMCALTenderSupply.cxx:388
 AliEMCALTenderSupply.cxx:389
 AliEMCALTenderSupply.cxx:390
 AliEMCALTenderSupply.cxx:391
 AliEMCALTenderSupply.cxx:392
 AliEMCALTenderSupply.cxx:393
 AliEMCALTenderSupply.cxx:394
 AliEMCALTenderSupply.cxx:395
 AliEMCALTenderSupply.cxx:396
 AliEMCALTenderSupply.cxx:397
 AliEMCALTenderSupply.cxx:398
 AliEMCALTenderSupply.cxx:399
 AliEMCALTenderSupply.cxx:400
 AliEMCALTenderSupply.cxx:401
 AliEMCALTenderSupply.cxx:402
 AliEMCALTenderSupply.cxx:403
 AliEMCALTenderSupply.cxx:404
 AliEMCALTenderSupply.cxx:405
 AliEMCALTenderSupply.cxx:406
 AliEMCALTenderSupply.cxx:407
 AliEMCALTenderSupply.cxx:408
 AliEMCALTenderSupply.cxx:409
 AliEMCALTenderSupply.cxx:410
 AliEMCALTenderSupply.cxx:411
 AliEMCALTenderSupply.cxx:412
 AliEMCALTenderSupply.cxx:413
 AliEMCALTenderSupply.cxx:414
 AliEMCALTenderSupply.cxx:415
 AliEMCALTenderSupply.cxx:416
 AliEMCALTenderSupply.cxx:417
 AliEMCALTenderSupply.cxx:418
 AliEMCALTenderSupply.cxx:419
 AliEMCALTenderSupply.cxx:420
 AliEMCALTenderSupply.cxx:421
 AliEMCALTenderSupply.cxx:422
 AliEMCALTenderSupply.cxx:423
 AliEMCALTenderSupply.cxx:424
 AliEMCALTenderSupply.cxx:425
 AliEMCALTenderSupply.cxx:426
 AliEMCALTenderSupply.cxx:427
 AliEMCALTenderSupply.cxx:428
 AliEMCALTenderSupply.cxx:429
 AliEMCALTenderSupply.cxx:430
 AliEMCALTenderSupply.cxx:431
 AliEMCALTenderSupply.cxx:432
 AliEMCALTenderSupply.cxx:433
 AliEMCALTenderSupply.cxx:434
 AliEMCALTenderSupply.cxx:435
 AliEMCALTenderSupply.cxx:436
 AliEMCALTenderSupply.cxx:437
 AliEMCALTenderSupply.cxx:438
 AliEMCALTenderSupply.cxx:439
 AliEMCALTenderSupply.cxx:440
 AliEMCALTenderSupply.cxx:441
 AliEMCALTenderSupply.cxx:442
 AliEMCALTenderSupply.cxx:443
 AliEMCALTenderSupply.cxx:444
 AliEMCALTenderSupply.cxx:445
 AliEMCALTenderSupply.cxx:446
 AliEMCALTenderSupply.cxx:447
 AliEMCALTenderSupply.cxx:448
 AliEMCALTenderSupply.cxx:449
 AliEMCALTenderSupply.cxx:450
 AliEMCALTenderSupply.cxx:451
 AliEMCALTenderSupply.cxx:452
 AliEMCALTenderSupply.cxx:453
 AliEMCALTenderSupply.cxx:454
 AliEMCALTenderSupply.cxx:455
 AliEMCALTenderSupply.cxx:456
 AliEMCALTenderSupply.cxx:457
 AliEMCALTenderSupply.cxx:458
 AliEMCALTenderSupply.cxx:459
 AliEMCALTenderSupply.cxx:460
 AliEMCALTenderSupply.cxx:461
 AliEMCALTenderSupply.cxx:462
 AliEMCALTenderSupply.cxx:463
 AliEMCALTenderSupply.cxx:464
 AliEMCALTenderSupply.cxx:465
 AliEMCALTenderSupply.cxx:466
 AliEMCALTenderSupply.cxx:467
 AliEMCALTenderSupply.cxx:468
 AliEMCALTenderSupply.cxx:469
 AliEMCALTenderSupply.cxx:470
 AliEMCALTenderSupply.cxx:471
 AliEMCALTenderSupply.cxx:472
 AliEMCALTenderSupply.cxx:473
 AliEMCALTenderSupply.cxx:474
 AliEMCALTenderSupply.cxx:475
 AliEMCALTenderSupply.cxx:476
 AliEMCALTenderSupply.cxx:477
 AliEMCALTenderSupply.cxx:478
 AliEMCALTenderSupply.cxx:479
 AliEMCALTenderSupply.cxx:480
 AliEMCALTenderSupply.cxx:481
 AliEMCALTenderSupply.cxx:482
 AliEMCALTenderSupply.cxx:483
 AliEMCALTenderSupply.cxx:484
 AliEMCALTenderSupply.cxx:485
 AliEMCALTenderSupply.cxx:486
 AliEMCALTenderSupply.cxx:487
 AliEMCALTenderSupply.cxx:488
 AliEMCALTenderSupply.cxx:489
 AliEMCALTenderSupply.cxx:490
 AliEMCALTenderSupply.cxx:491
 AliEMCALTenderSupply.cxx:492
 AliEMCALTenderSupply.cxx:493
 AliEMCALTenderSupply.cxx:494
 AliEMCALTenderSupply.cxx:495
 AliEMCALTenderSupply.cxx:496
 AliEMCALTenderSupply.cxx:497
 AliEMCALTenderSupply.cxx:498
 AliEMCALTenderSupply.cxx:499
 AliEMCALTenderSupply.cxx:500
 AliEMCALTenderSupply.cxx:501
 AliEMCALTenderSupply.cxx:502
 AliEMCALTenderSupply.cxx:503
 AliEMCALTenderSupply.cxx:504
 AliEMCALTenderSupply.cxx:505
 AliEMCALTenderSupply.cxx:506
 AliEMCALTenderSupply.cxx:507
 AliEMCALTenderSupply.cxx:508
 AliEMCALTenderSupply.cxx:509
 AliEMCALTenderSupply.cxx:510
 AliEMCALTenderSupply.cxx:511
 AliEMCALTenderSupply.cxx:512
 AliEMCALTenderSupply.cxx:513
 AliEMCALTenderSupply.cxx:514
 AliEMCALTenderSupply.cxx:515
 AliEMCALTenderSupply.cxx:516
 AliEMCALTenderSupply.cxx:517
 AliEMCALTenderSupply.cxx:518
 AliEMCALTenderSupply.cxx:519
 AliEMCALTenderSupply.cxx:520
 AliEMCALTenderSupply.cxx:521
 AliEMCALTenderSupply.cxx:522
 AliEMCALTenderSupply.cxx:523
 AliEMCALTenderSupply.cxx:524
 AliEMCALTenderSupply.cxx:525
 AliEMCALTenderSupply.cxx:526
 AliEMCALTenderSupply.cxx:527
 AliEMCALTenderSupply.cxx:528
 AliEMCALTenderSupply.cxx:529
 AliEMCALTenderSupply.cxx:530
 AliEMCALTenderSupply.cxx:531
 AliEMCALTenderSupply.cxx:532
 AliEMCALTenderSupply.cxx:533
 AliEMCALTenderSupply.cxx:534
 AliEMCALTenderSupply.cxx:535
 AliEMCALTenderSupply.cxx:536
 AliEMCALTenderSupply.cxx:537
 AliEMCALTenderSupply.cxx:538
 AliEMCALTenderSupply.cxx:539
 AliEMCALTenderSupply.cxx:540
 AliEMCALTenderSupply.cxx:541
 AliEMCALTenderSupply.cxx:542
 AliEMCALTenderSupply.cxx:543
 AliEMCALTenderSupply.cxx:544
 AliEMCALTenderSupply.cxx:545
 AliEMCALTenderSupply.cxx:546
 AliEMCALTenderSupply.cxx:547
 AliEMCALTenderSupply.cxx:548
 AliEMCALTenderSupply.cxx:549
 AliEMCALTenderSupply.cxx:550
 AliEMCALTenderSupply.cxx:551
 AliEMCALTenderSupply.cxx:552
 AliEMCALTenderSupply.cxx:553
 AliEMCALTenderSupply.cxx:554
 AliEMCALTenderSupply.cxx:555
 AliEMCALTenderSupply.cxx:556
 AliEMCALTenderSupply.cxx:557
 AliEMCALTenderSupply.cxx:558
 AliEMCALTenderSupply.cxx:559
 AliEMCALTenderSupply.cxx:560
 AliEMCALTenderSupply.cxx:561
 AliEMCALTenderSupply.cxx:562
 AliEMCALTenderSupply.cxx:563
 AliEMCALTenderSupply.cxx:564
 AliEMCALTenderSupply.cxx:565
 AliEMCALTenderSupply.cxx:566
 AliEMCALTenderSupply.cxx:567
 AliEMCALTenderSupply.cxx:568
 AliEMCALTenderSupply.cxx:569
 AliEMCALTenderSupply.cxx:570
 AliEMCALTenderSupply.cxx:571
 AliEMCALTenderSupply.cxx:572
 AliEMCALTenderSupply.cxx:573
 AliEMCALTenderSupply.cxx:574
 AliEMCALTenderSupply.cxx:575
 AliEMCALTenderSupply.cxx:576
 AliEMCALTenderSupply.cxx:577
 AliEMCALTenderSupply.cxx:578
 AliEMCALTenderSupply.cxx:579
 AliEMCALTenderSupply.cxx:580
 AliEMCALTenderSupply.cxx:581
 AliEMCALTenderSupply.cxx:582
 AliEMCALTenderSupply.cxx:583
 AliEMCALTenderSupply.cxx:584
 AliEMCALTenderSupply.cxx:585
 AliEMCALTenderSupply.cxx:586
 AliEMCALTenderSupply.cxx:587
 AliEMCALTenderSupply.cxx:588
 AliEMCALTenderSupply.cxx:589
 AliEMCALTenderSupply.cxx:590
 AliEMCALTenderSupply.cxx:591
 AliEMCALTenderSupply.cxx:592
 AliEMCALTenderSupply.cxx:593
 AliEMCALTenderSupply.cxx:594
 AliEMCALTenderSupply.cxx:595
 AliEMCALTenderSupply.cxx:596
 AliEMCALTenderSupply.cxx:597
 AliEMCALTenderSupply.cxx:598
 AliEMCALTenderSupply.cxx:599
 AliEMCALTenderSupply.cxx:600
 AliEMCALTenderSupply.cxx:601
 AliEMCALTenderSupply.cxx:602
 AliEMCALTenderSupply.cxx:603
 AliEMCALTenderSupply.cxx:604
 AliEMCALTenderSupply.cxx:605
 AliEMCALTenderSupply.cxx:606
 AliEMCALTenderSupply.cxx:607
 AliEMCALTenderSupply.cxx:608
 AliEMCALTenderSupply.cxx:609
 AliEMCALTenderSupply.cxx:610
 AliEMCALTenderSupply.cxx:611
 AliEMCALTenderSupply.cxx:612
 AliEMCALTenderSupply.cxx:613
 AliEMCALTenderSupply.cxx:614
 AliEMCALTenderSupply.cxx:615
 AliEMCALTenderSupply.cxx:616
 AliEMCALTenderSupply.cxx:617
 AliEMCALTenderSupply.cxx:618
 AliEMCALTenderSupply.cxx:619
 AliEMCALTenderSupply.cxx:620
 AliEMCALTenderSupply.cxx:621
 AliEMCALTenderSupply.cxx:622
 AliEMCALTenderSupply.cxx:623
 AliEMCALTenderSupply.cxx:624
 AliEMCALTenderSupply.cxx:625
 AliEMCALTenderSupply.cxx:626
 AliEMCALTenderSupply.cxx:627
 AliEMCALTenderSupply.cxx:628
 AliEMCALTenderSupply.cxx:629
 AliEMCALTenderSupply.cxx:630
 AliEMCALTenderSupply.cxx:631
 AliEMCALTenderSupply.cxx:632
 AliEMCALTenderSupply.cxx:633
 AliEMCALTenderSupply.cxx:634
 AliEMCALTenderSupply.cxx:635
 AliEMCALTenderSupply.cxx:636
 AliEMCALTenderSupply.cxx:637
 AliEMCALTenderSupply.cxx:638
 AliEMCALTenderSupply.cxx:639
 AliEMCALTenderSupply.cxx:640
 AliEMCALTenderSupply.cxx:641
 AliEMCALTenderSupply.cxx:642
 AliEMCALTenderSupply.cxx:643
 AliEMCALTenderSupply.cxx:644
 AliEMCALTenderSupply.cxx:645
 AliEMCALTenderSupply.cxx:646
 AliEMCALTenderSupply.cxx:647
 AliEMCALTenderSupply.cxx:648
 AliEMCALTenderSupply.cxx:649
 AliEMCALTenderSupply.cxx:650
 AliEMCALTenderSupply.cxx:651
 AliEMCALTenderSupply.cxx:652
 AliEMCALTenderSupply.cxx:653
 AliEMCALTenderSupply.cxx:654
 AliEMCALTenderSupply.cxx:655
 AliEMCALTenderSupply.cxx:656
 AliEMCALTenderSupply.cxx:657
 AliEMCALTenderSupply.cxx:658
 AliEMCALTenderSupply.cxx:659
 AliEMCALTenderSupply.cxx:660
 AliEMCALTenderSupply.cxx:661
 AliEMCALTenderSupply.cxx:662
 AliEMCALTenderSupply.cxx:663
 AliEMCALTenderSupply.cxx:664
 AliEMCALTenderSupply.cxx:665
 AliEMCALTenderSupply.cxx:666
 AliEMCALTenderSupply.cxx:667
 AliEMCALTenderSupply.cxx:668
 AliEMCALTenderSupply.cxx:669
 AliEMCALTenderSupply.cxx:670
 AliEMCALTenderSupply.cxx:671
 AliEMCALTenderSupply.cxx:672
 AliEMCALTenderSupply.cxx:673
 AliEMCALTenderSupply.cxx:674
 AliEMCALTenderSupply.cxx:675
 AliEMCALTenderSupply.cxx:676
 AliEMCALTenderSupply.cxx:677
 AliEMCALTenderSupply.cxx:678
 AliEMCALTenderSupply.cxx:679
 AliEMCALTenderSupply.cxx:680
 AliEMCALTenderSupply.cxx:681
 AliEMCALTenderSupply.cxx:682
 AliEMCALTenderSupply.cxx:683
 AliEMCALTenderSupply.cxx:684
 AliEMCALTenderSupply.cxx:685
 AliEMCALTenderSupply.cxx:686
 AliEMCALTenderSupply.cxx:687
 AliEMCALTenderSupply.cxx:688
 AliEMCALTenderSupply.cxx:689
 AliEMCALTenderSupply.cxx:690
 AliEMCALTenderSupply.cxx:691
 AliEMCALTenderSupply.cxx:692
 AliEMCALTenderSupply.cxx:693
 AliEMCALTenderSupply.cxx:694
 AliEMCALTenderSupply.cxx:695
 AliEMCALTenderSupply.cxx:696
 AliEMCALTenderSupply.cxx:697
 AliEMCALTenderSupply.cxx:698
 AliEMCALTenderSupply.cxx:699
 AliEMCALTenderSupply.cxx:700
 AliEMCALTenderSupply.cxx:701
 AliEMCALTenderSupply.cxx:702
 AliEMCALTenderSupply.cxx:703
 AliEMCALTenderSupply.cxx:704
 AliEMCALTenderSupply.cxx:705
 AliEMCALTenderSupply.cxx:706
 AliEMCALTenderSupply.cxx:707
 AliEMCALTenderSupply.cxx:708
 AliEMCALTenderSupply.cxx:709
 AliEMCALTenderSupply.cxx:710
 AliEMCALTenderSupply.cxx:711
 AliEMCALTenderSupply.cxx:712
 AliEMCALTenderSupply.cxx:713
 AliEMCALTenderSupply.cxx:714
 AliEMCALTenderSupply.cxx:715
 AliEMCALTenderSupply.cxx:716
 AliEMCALTenderSupply.cxx:717
 AliEMCALTenderSupply.cxx:718
 AliEMCALTenderSupply.cxx:719
 AliEMCALTenderSupply.cxx:720
 AliEMCALTenderSupply.cxx:721
 AliEMCALTenderSupply.cxx:722
 AliEMCALTenderSupply.cxx:723
 AliEMCALTenderSupply.cxx:724
 AliEMCALTenderSupply.cxx:725
 AliEMCALTenderSupply.cxx:726
 AliEMCALTenderSupply.cxx:727
 AliEMCALTenderSupply.cxx:728
 AliEMCALTenderSupply.cxx:729
 AliEMCALTenderSupply.cxx:730
 AliEMCALTenderSupply.cxx:731
 AliEMCALTenderSupply.cxx:732
 AliEMCALTenderSupply.cxx:733
 AliEMCALTenderSupply.cxx:734
 AliEMCALTenderSupply.cxx:735
 AliEMCALTenderSupply.cxx:736
 AliEMCALTenderSupply.cxx:737
 AliEMCALTenderSupply.cxx:738
 AliEMCALTenderSupply.cxx:739
 AliEMCALTenderSupply.cxx:740
 AliEMCALTenderSupply.cxx:741
 AliEMCALTenderSupply.cxx:742
 AliEMCALTenderSupply.cxx:743
 AliEMCALTenderSupply.cxx:744
 AliEMCALTenderSupply.cxx:745
 AliEMCALTenderSupply.cxx:746
 AliEMCALTenderSupply.cxx:747
 AliEMCALTenderSupply.cxx:748
 AliEMCALTenderSupply.cxx:749
 AliEMCALTenderSupply.cxx:750
 AliEMCALTenderSupply.cxx:751
 AliEMCALTenderSupply.cxx:752
 AliEMCALTenderSupply.cxx:753
 AliEMCALTenderSupply.cxx:754
 AliEMCALTenderSupply.cxx:755
 AliEMCALTenderSupply.cxx:756
 AliEMCALTenderSupply.cxx:757
 AliEMCALTenderSupply.cxx:758
 AliEMCALTenderSupply.cxx:759
 AliEMCALTenderSupply.cxx:760
 AliEMCALTenderSupply.cxx:761
 AliEMCALTenderSupply.cxx:762
 AliEMCALTenderSupply.cxx:763
 AliEMCALTenderSupply.cxx:764
 AliEMCALTenderSupply.cxx:765
 AliEMCALTenderSupply.cxx:766
 AliEMCALTenderSupply.cxx:767
 AliEMCALTenderSupply.cxx:768
 AliEMCALTenderSupply.cxx:769
 AliEMCALTenderSupply.cxx:770
 AliEMCALTenderSupply.cxx:771
 AliEMCALTenderSupply.cxx:772
 AliEMCALTenderSupply.cxx:773
 AliEMCALTenderSupply.cxx:774
 AliEMCALTenderSupply.cxx:775
 AliEMCALTenderSupply.cxx:776
 AliEMCALTenderSupply.cxx:777
 AliEMCALTenderSupply.cxx:778
 AliEMCALTenderSupply.cxx:779
 AliEMCALTenderSupply.cxx:780
 AliEMCALTenderSupply.cxx:781
 AliEMCALTenderSupply.cxx:782
 AliEMCALTenderSupply.cxx:783
 AliEMCALTenderSupply.cxx:784
 AliEMCALTenderSupply.cxx:785
 AliEMCALTenderSupply.cxx:786
 AliEMCALTenderSupply.cxx:787
 AliEMCALTenderSupply.cxx:788
 AliEMCALTenderSupply.cxx:789
 AliEMCALTenderSupply.cxx:790
 AliEMCALTenderSupply.cxx:791
 AliEMCALTenderSupply.cxx:792
 AliEMCALTenderSupply.cxx:793
 AliEMCALTenderSupply.cxx:794
 AliEMCALTenderSupply.cxx:795
 AliEMCALTenderSupply.cxx:796
 AliEMCALTenderSupply.cxx:797
 AliEMCALTenderSupply.cxx:798
 AliEMCALTenderSupply.cxx:799
 AliEMCALTenderSupply.cxx:800
 AliEMCALTenderSupply.cxx:801
 AliEMCALTenderSupply.cxx:802
 AliEMCALTenderSupply.cxx:803
 AliEMCALTenderSupply.cxx:804
 AliEMCALTenderSupply.cxx:805
 AliEMCALTenderSupply.cxx:806
 AliEMCALTenderSupply.cxx:807
 AliEMCALTenderSupply.cxx:808
 AliEMCALTenderSupply.cxx:809
 AliEMCALTenderSupply.cxx:810
 AliEMCALTenderSupply.cxx:811
 AliEMCALTenderSupply.cxx:812
 AliEMCALTenderSupply.cxx:813
 AliEMCALTenderSupply.cxx:814
 AliEMCALTenderSupply.cxx:815
 AliEMCALTenderSupply.cxx:816
 AliEMCALTenderSupply.cxx:817
 AliEMCALTenderSupply.cxx:818
 AliEMCALTenderSupply.cxx:819
 AliEMCALTenderSupply.cxx:820
 AliEMCALTenderSupply.cxx:821
 AliEMCALTenderSupply.cxx:822
 AliEMCALTenderSupply.cxx:823
 AliEMCALTenderSupply.cxx:824
 AliEMCALTenderSupply.cxx:825
 AliEMCALTenderSupply.cxx:826
 AliEMCALTenderSupply.cxx:827
 AliEMCALTenderSupply.cxx:828
 AliEMCALTenderSupply.cxx:829
 AliEMCALTenderSupply.cxx:830
 AliEMCALTenderSupply.cxx:831
 AliEMCALTenderSupply.cxx:832
 AliEMCALTenderSupply.cxx:833
 AliEMCALTenderSupply.cxx:834
 AliEMCALTenderSupply.cxx:835
 AliEMCALTenderSupply.cxx:836
 AliEMCALTenderSupply.cxx:837
 AliEMCALTenderSupply.cxx:838
 AliEMCALTenderSupply.cxx:839
 AliEMCALTenderSupply.cxx:840
 AliEMCALTenderSupply.cxx:841
 AliEMCALTenderSupply.cxx:842
 AliEMCALTenderSupply.cxx:843
 AliEMCALTenderSupply.cxx:844
 AliEMCALTenderSupply.cxx:845
 AliEMCALTenderSupply.cxx:846
 AliEMCALTenderSupply.cxx:847
 AliEMCALTenderSupply.cxx:848
 AliEMCALTenderSupply.cxx:849
 AliEMCALTenderSupply.cxx:850
 AliEMCALTenderSupply.cxx:851
 AliEMCALTenderSupply.cxx:852
 AliEMCALTenderSupply.cxx:853
 AliEMCALTenderSupply.cxx:854
 AliEMCALTenderSupply.cxx:855
 AliEMCALTenderSupply.cxx:856
 AliEMCALTenderSupply.cxx:857
 AliEMCALTenderSupply.cxx:858
 AliEMCALTenderSupply.cxx:859
 AliEMCALTenderSupply.cxx:860
 AliEMCALTenderSupply.cxx:861
 AliEMCALTenderSupply.cxx:862
 AliEMCALTenderSupply.cxx:863
 AliEMCALTenderSupply.cxx:864
 AliEMCALTenderSupply.cxx:865
 AliEMCALTenderSupply.cxx:866
 AliEMCALTenderSupply.cxx:867
 AliEMCALTenderSupply.cxx:868
 AliEMCALTenderSupply.cxx:869
 AliEMCALTenderSupply.cxx:870
 AliEMCALTenderSupply.cxx:871
 AliEMCALTenderSupply.cxx:872
 AliEMCALTenderSupply.cxx:873
 AliEMCALTenderSupply.cxx:874
 AliEMCALTenderSupply.cxx:875
 AliEMCALTenderSupply.cxx:876
 AliEMCALTenderSupply.cxx:877
 AliEMCALTenderSupply.cxx:878
 AliEMCALTenderSupply.cxx:879
 AliEMCALTenderSupply.cxx:880
 AliEMCALTenderSupply.cxx:881
 AliEMCALTenderSupply.cxx:882
 AliEMCALTenderSupply.cxx:883
 AliEMCALTenderSupply.cxx:884
 AliEMCALTenderSupply.cxx:885
 AliEMCALTenderSupply.cxx:886
 AliEMCALTenderSupply.cxx:887
 AliEMCALTenderSupply.cxx:888
 AliEMCALTenderSupply.cxx:889
 AliEMCALTenderSupply.cxx:890
 AliEMCALTenderSupply.cxx:891
 AliEMCALTenderSupply.cxx:892
 AliEMCALTenderSupply.cxx:893
 AliEMCALTenderSupply.cxx:894
 AliEMCALTenderSupply.cxx:895
 AliEMCALTenderSupply.cxx:896
 AliEMCALTenderSupply.cxx:897
 AliEMCALTenderSupply.cxx:898
 AliEMCALTenderSupply.cxx:899
 AliEMCALTenderSupply.cxx:900
 AliEMCALTenderSupply.cxx:901
 AliEMCALTenderSupply.cxx:902
 AliEMCALTenderSupply.cxx:903
 AliEMCALTenderSupply.cxx:904
 AliEMCALTenderSupply.cxx:905
 AliEMCALTenderSupply.cxx:906
 AliEMCALTenderSupply.cxx:907
 AliEMCALTenderSupply.cxx:908
 AliEMCALTenderSupply.cxx:909
 AliEMCALTenderSupply.cxx:910
 AliEMCALTenderSupply.cxx:911
 AliEMCALTenderSupply.cxx:912
 AliEMCALTenderSupply.cxx:913
 AliEMCALTenderSupply.cxx:914
 AliEMCALTenderSupply.cxx:915
 AliEMCALTenderSupply.cxx:916
 AliEMCALTenderSupply.cxx:917
 AliEMCALTenderSupply.cxx:918
 AliEMCALTenderSupply.cxx:919
 AliEMCALTenderSupply.cxx:920
 AliEMCALTenderSupply.cxx:921
 AliEMCALTenderSupply.cxx:922
 AliEMCALTenderSupply.cxx:923
 AliEMCALTenderSupply.cxx:924
 AliEMCALTenderSupply.cxx:925
 AliEMCALTenderSupply.cxx:926
 AliEMCALTenderSupply.cxx:927
 AliEMCALTenderSupply.cxx:928
 AliEMCALTenderSupply.cxx:929
 AliEMCALTenderSupply.cxx:930
 AliEMCALTenderSupply.cxx:931
 AliEMCALTenderSupply.cxx:932
 AliEMCALTenderSupply.cxx:933
 AliEMCALTenderSupply.cxx:934
 AliEMCALTenderSupply.cxx:935
 AliEMCALTenderSupply.cxx:936
 AliEMCALTenderSupply.cxx:937
 AliEMCALTenderSupply.cxx:938
 AliEMCALTenderSupply.cxx:939
 AliEMCALTenderSupply.cxx:940
 AliEMCALTenderSupply.cxx:941
 AliEMCALTenderSupply.cxx:942
 AliEMCALTenderSupply.cxx:943
 AliEMCALTenderSupply.cxx:944
 AliEMCALTenderSupply.cxx:945
 AliEMCALTenderSupply.cxx:946
 AliEMCALTenderSupply.cxx:947
 AliEMCALTenderSupply.cxx:948
 AliEMCALTenderSupply.cxx:949
 AliEMCALTenderSupply.cxx:950
 AliEMCALTenderSupply.cxx:951
 AliEMCALTenderSupply.cxx:952
 AliEMCALTenderSupply.cxx:953
 AliEMCALTenderSupply.cxx:954
 AliEMCALTenderSupply.cxx:955
 AliEMCALTenderSupply.cxx:956
 AliEMCALTenderSupply.cxx:957
 AliEMCALTenderSupply.cxx:958
 AliEMCALTenderSupply.cxx:959
 AliEMCALTenderSupply.cxx:960
 AliEMCALTenderSupply.cxx:961
 AliEMCALTenderSupply.cxx:962
 AliEMCALTenderSupply.cxx:963
 AliEMCALTenderSupply.cxx:964
 AliEMCALTenderSupply.cxx:965
 AliEMCALTenderSupply.cxx:966
 AliEMCALTenderSupply.cxx:967
 AliEMCALTenderSupply.cxx:968
 AliEMCALTenderSupply.cxx:969
 AliEMCALTenderSupply.cxx:970
 AliEMCALTenderSupply.cxx:971
 AliEMCALTenderSupply.cxx:972
 AliEMCALTenderSupply.cxx:973
 AliEMCALTenderSupply.cxx:974
 AliEMCALTenderSupply.cxx:975
 AliEMCALTenderSupply.cxx:976
 AliEMCALTenderSupply.cxx:977
 AliEMCALTenderSupply.cxx:978
 AliEMCALTenderSupply.cxx:979
 AliEMCALTenderSupply.cxx:980
 AliEMCALTenderSupply.cxx:981
 AliEMCALTenderSupply.cxx:982
 AliEMCALTenderSupply.cxx:983
 AliEMCALTenderSupply.cxx:984
 AliEMCALTenderSupply.cxx:985
 AliEMCALTenderSupply.cxx:986
 AliEMCALTenderSupply.cxx:987
 AliEMCALTenderSupply.cxx:988
 AliEMCALTenderSupply.cxx:989
 AliEMCALTenderSupply.cxx:990
 AliEMCALTenderSupply.cxx:991
 AliEMCALTenderSupply.cxx:992
 AliEMCALTenderSupply.cxx:993
 AliEMCALTenderSupply.cxx:994
 AliEMCALTenderSupply.cxx:995
 AliEMCALTenderSupply.cxx:996
 AliEMCALTenderSupply.cxx:997
 AliEMCALTenderSupply.cxx:998
 AliEMCALTenderSupply.cxx:999
 AliEMCALTenderSupply.cxx:1000
 AliEMCALTenderSupply.cxx:1001
 AliEMCALTenderSupply.cxx:1002
 AliEMCALTenderSupply.cxx:1003
 AliEMCALTenderSupply.cxx:1004
 AliEMCALTenderSupply.cxx:1005
 AliEMCALTenderSupply.cxx:1006
 AliEMCALTenderSupply.cxx:1007
 AliEMCALTenderSupply.cxx:1008
 AliEMCALTenderSupply.cxx:1009
 AliEMCALTenderSupply.cxx:1010
 AliEMCALTenderSupply.cxx:1011
 AliEMCALTenderSupply.cxx:1012
 AliEMCALTenderSupply.cxx:1013
 AliEMCALTenderSupply.cxx:1014
 AliEMCALTenderSupply.cxx:1015
 AliEMCALTenderSupply.cxx:1016
 AliEMCALTenderSupply.cxx:1017
 AliEMCALTenderSupply.cxx:1018
 AliEMCALTenderSupply.cxx:1019
 AliEMCALTenderSupply.cxx:1020
 AliEMCALTenderSupply.cxx:1021
 AliEMCALTenderSupply.cxx:1022
 AliEMCALTenderSupply.cxx:1023
 AliEMCALTenderSupply.cxx:1024
 AliEMCALTenderSupply.cxx:1025
 AliEMCALTenderSupply.cxx:1026
 AliEMCALTenderSupply.cxx:1027
 AliEMCALTenderSupply.cxx:1028
 AliEMCALTenderSupply.cxx:1029
 AliEMCALTenderSupply.cxx:1030
 AliEMCALTenderSupply.cxx:1031
 AliEMCALTenderSupply.cxx:1032
 AliEMCALTenderSupply.cxx:1033
 AliEMCALTenderSupply.cxx:1034
 AliEMCALTenderSupply.cxx:1035
 AliEMCALTenderSupply.cxx:1036
 AliEMCALTenderSupply.cxx:1037
 AliEMCALTenderSupply.cxx:1038
 AliEMCALTenderSupply.cxx:1039
 AliEMCALTenderSupply.cxx:1040
 AliEMCALTenderSupply.cxx:1041
 AliEMCALTenderSupply.cxx:1042
 AliEMCALTenderSupply.cxx:1043
 AliEMCALTenderSupply.cxx:1044
 AliEMCALTenderSupply.cxx:1045
 AliEMCALTenderSupply.cxx:1046
 AliEMCALTenderSupply.cxx:1047
 AliEMCALTenderSupply.cxx:1048
 AliEMCALTenderSupply.cxx:1049
 AliEMCALTenderSupply.cxx:1050
 AliEMCALTenderSupply.cxx:1051
 AliEMCALTenderSupply.cxx:1052
 AliEMCALTenderSupply.cxx:1053
 AliEMCALTenderSupply.cxx:1054
 AliEMCALTenderSupply.cxx:1055
 AliEMCALTenderSupply.cxx:1056
 AliEMCALTenderSupply.cxx:1057
 AliEMCALTenderSupply.cxx:1058
 AliEMCALTenderSupply.cxx:1059
 AliEMCALTenderSupply.cxx:1060
 AliEMCALTenderSupply.cxx:1061
 AliEMCALTenderSupply.cxx:1062
 AliEMCALTenderSupply.cxx:1063
 AliEMCALTenderSupply.cxx:1064
 AliEMCALTenderSupply.cxx:1065
 AliEMCALTenderSupply.cxx:1066
 AliEMCALTenderSupply.cxx:1067
 AliEMCALTenderSupply.cxx:1068
 AliEMCALTenderSupply.cxx:1069
 AliEMCALTenderSupply.cxx:1070
 AliEMCALTenderSupply.cxx:1071
 AliEMCALTenderSupply.cxx:1072
 AliEMCALTenderSupply.cxx:1073
 AliEMCALTenderSupply.cxx:1074
 AliEMCALTenderSupply.cxx:1075
 AliEMCALTenderSupply.cxx:1076
 AliEMCALTenderSupply.cxx:1077
 AliEMCALTenderSupply.cxx:1078
 AliEMCALTenderSupply.cxx:1079
 AliEMCALTenderSupply.cxx:1080
 AliEMCALTenderSupply.cxx:1081
 AliEMCALTenderSupply.cxx:1082
 AliEMCALTenderSupply.cxx:1083
 AliEMCALTenderSupply.cxx:1084
 AliEMCALTenderSupply.cxx:1085
 AliEMCALTenderSupply.cxx:1086
 AliEMCALTenderSupply.cxx:1087
 AliEMCALTenderSupply.cxx:1088
 AliEMCALTenderSupply.cxx:1089
 AliEMCALTenderSupply.cxx:1090
 AliEMCALTenderSupply.cxx:1091
 AliEMCALTenderSupply.cxx:1092
 AliEMCALTenderSupply.cxx:1093
 AliEMCALTenderSupply.cxx:1094
 AliEMCALTenderSupply.cxx:1095
 AliEMCALTenderSupply.cxx:1096
 AliEMCALTenderSupply.cxx:1097
 AliEMCALTenderSupply.cxx:1098
 AliEMCALTenderSupply.cxx:1099
 AliEMCALTenderSupply.cxx:1100
 AliEMCALTenderSupply.cxx:1101
 AliEMCALTenderSupply.cxx:1102
 AliEMCALTenderSupply.cxx:1103
 AliEMCALTenderSupply.cxx:1104
 AliEMCALTenderSupply.cxx:1105
 AliEMCALTenderSupply.cxx:1106
 AliEMCALTenderSupply.cxx:1107
 AliEMCALTenderSupply.cxx:1108
 AliEMCALTenderSupply.cxx:1109
 AliEMCALTenderSupply.cxx:1110
 AliEMCALTenderSupply.cxx:1111
 AliEMCALTenderSupply.cxx:1112
 AliEMCALTenderSupply.cxx:1113
 AliEMCALTenderSupply.cxx:1114
 AliEMCALTenderSupply.cxx:1115
 AliEMCALTenderSupply.cxx:1116
 AliEMCALTenderSupply.cxx:1117
 AliEMCALTenderSupply.cxx:1118
 AliEMCALTenderSupply.cxx:1119
 AliEMCALTenderSupply.cxx:1120
 AliEMCALTenderSupply.cxx:1121
 AliEMCALTenderSupply.cxx:1122
 AliEMCALTenderSupply.cxx:1123
 AliEMCALTenderSupply.cxx:1124
 AliEMCALTenderSupply.cxx:1125
 AliEMCALTenderSupply.cxx:1126
 AliEMCALTenderSupply.cxx:1127
 AliEMCALTenderSupply.cxx:1128
 AliEMCALTenderSupply.cxx:1129
 AliEMCALTenderSupply.cxx:1130
 AliEMCALTenderSupply.cxx:1131
 AliEMCALTenderSupply.cxx:1132
 AliEMCALTenderSupply.cxx:1133
 AliEMCALTenderSupply.cxx:1134
 AliEMCALTenderSupply.cxx:1135
 AliEMCALTenderSupply.cxx:1136
 AliEMCALTenderSupply.cxx:1137
 AliEMCALTenderSupply.cxx:1138
 AliEMCALTenderSupply.cxx:1139
 AliEMCALTenderSupply.cxx:1140
 AliEMCALTenderSupply.cxx:1141
 AliEMCALTenderSupply.cxx:1142
 AliEMCALTenderSupply.cxx:1143
 AliEMCALTenderSupply.cxx:1144
 AliEMCALTenderSupply.cxx:1145
 AliEMCALTenderSupply.cxx:1146
 AliEMCALTenderSupply.cxx:1147
 AliEMCALTenderSupply.cxx:1148
 AliEMCALTenderSupply.cxx:1149
 AliEMCALTenderSupply.cxx:1150
 AliEMCALTenderSupply.cxx:1151
 AliEMCALTenderSupply.cxx:1152
 AliEMCALTenderSupply.cxx:1153
 AliEMCALTenderSupply.cxx:1154
 AliEMCALTenderSupply.cxx:1155
 AliEMCALTenderSupply.cxx:1156
 AliEMCALTenderSupply.cxx:1157
 AliEMCALTenderSupply.cxx:1158
 AliEMCALTenderSupply.cxx:1159
 AliEMCALTenderSupply.cxx:1160
 AliEMCALTenderSupply.cxx:1161
 AliEMCALTenderSupply.cxx:1162
 AliEMCALTenderSupply.cxx:1163
 AliEMCALTenderSupply.cxx:1164
 AliEMCALTenderSupply.cxx:1165
 AliEMCALTenderSupply.cxx:1166
 AliEMCALTenderSupply.cxx:1167
 AliEMCALTenderSupply.cxx:1168
 AliEMCALTenderSupply.cxx:1169
 AliEMCALTenderSupply.cxx:1170
 AliEMCALTenderSupply.cxx:1171
 AliEMCALTenderSupply.cxx:1172
 AliEMCALTenderSupply.cxx:1173
 AliEMCALTenderSupply.cxx:1174
 AliEMCALTenderSupply.cxx:1175
 AliEMCALTenderSupply.cxx:1176
 AliEMCALTenderSupply.cxx:1177
 AliEMCALTenderSupply.cxx:1178
 AliEMCALTenderSupply.cxx:1179
 AliEMCALTenderSupply.cxx:1180
 AliEMCALTenderSupply.cxx:1181
 AliEMCALTenderSupply.cxx:1182
 AliEMCALTenderSupply.cxx:1183
 AliEMCALTenderSupply.cxx:1184
 AliEMCALTenderSupply.cxx:1185
 AliEMCALTenderSupply.cxx:1186
 AliEMCALTenderSupply.cxx:1187
 AliEMCALTenderSupply.cxx:1188
 AliEMCALTenderSupply.cxx:1189
 AliEMCALTenderSupply.cxx:1190
 AliEMCALTenderSupply.cxx:1191
 AliEMCALTenderSupply.cxx:1192
 AliEMCALTenderSupply.cxx:1193
 AliEMCALTenderSupply.cxx:1194
 AliEMCALTenderSupply.cxx:1195
 AliEMCALTenderSupply.cxx:1196
 AliEMCALTenderSupply.cxx:1197
 AliEMCALTenderSupply.cxx:1198
 AliEMCALTenderSupply.cxx:1199
 AliEMCALTenderSupply.cxx:1200
 AliEMCALTenderSupply.cxx:1201
 AliEMCALTenderSupply.cxx:1202
 AliEMCALTenderSupply.cxx:1203
 AliEMCALTenderSupply.cxx:1204
 AliEMCALTenderSupply.cxx:1205
 AliEMCALTenderSupply.cxx:1206
 AliEMCALTenderSupply.cxx:1207
 AliEMCALTenderSupply.cxx:1208
 AliEMCALTenderSupply.cxx:1209
 AliEMCALTenderSupply.cxx:1210
 AliEMCALTenderSupply.cxx:1211
 AliEMCALTenderSupply.cxx:1212
 AliEMCALTenderSupply.cxx:1213
 AliEMCALTenderSupply.cxx:1214
 AliEMCALTenderSupply.cxx:1215
 AliEMCALTenderSupply.cxx:1216
 AliEMCALTenderSupply.cxx:1217
 AliEMCALTenderSupply.cxx:1218
 AliEMCALTenderSupply.cxx:1219
 AliEMCALTenderSupply.cxx:1220
 AliEMCALTenderSupply.cxx:1221
 AliEMCALTenderSupply.cxx:1222
 AliEMCALTenderSupply.cxx:1223
 AliEMCALTenderSupply.cxx:1224
 AliEMCALTenderSupply.cxx:1225
 AliEMCALTenderSupply.cxx:1226
 AliEMCALTenderSupply.cxx:1227
 AliEMCALTenderSupply.cxx:1228
 AliEMCALTenderSupply.cxx:1229
 AliEMCALTenderSupply.cxx:1230
 AliEMCALTenderSupply.cxx:1231
 AliEMCALTenderSupply.cxx:1232
 AliEMCALTenderSupply.cxx:1233
 AliEMCALTenderSupply.cxx:1234
 AliEMCALTenderSupply.cxx:1235
 AliEMCALTenderSupply.cxx:1236
 AliEMCALTenderSupply.cxx:1237
 AliEMCALTenderSupply.cxx:1238
 AliEMCALTenderSupply.cxx:1239
 AliEMCALTenderSupply.cxx:1240
 AliEMCALTenderSupply.cxx:1241
 AliEMCALTenderSupply.cxx:1242
 AliEMCALTenderSupply.cxx:1243
 AliEMCALTenderSupply.cxx:1244
 AliEMCALTenderSupply.cxx:1245
 AliEMCALTenderSupply.cxx:1246
 AliEMCALTenderSupply.cxx:1247
 AliEMCALTenderSupply.cxx:1248
 AliEMCALTenderSupply.cxx:1249
 AliEMCALTenderSupply.cxx:1250
 AliEMCALTenderSupply.cxx:1251
 AliEMCALTenderSupply.cxx:1252
 AliEMCALTenderSupply.cxx:1253
 AliEMCALTenderSupply.cxx:1254
 AliEMCALTenderSupply.cxx:1255
 AliEMCALTenderSupply.cxx:1256
 AliEMCALTenderSupply.cxx:1257
 AliEMCALTenderSupply.cxx:1258
 AliEMCALTenderSupply.cxx:1259
 AliEMCALTenderSupply.cxx:1260
 AliEMCALTenderSupply.cxx:1261
 AliEMCALTenderSupply.cxx:1262
 AliEMCALTenderSupply.cxx:1263
 AliEMCALTenderSupply.cxx:1264
 AliEMCALTenderSupply.cxx:1265
 AliEMCALTenderSupply.cxx:1266
 AliEMCALTenderSupply.cxx:1267
 AliEMCALTenderSupply.cxx:1268
 AliEMCALTenderSupply.cxx:1269
 AliEMCALTenderSupply.cxx:1270
 AliEMCALTenderSupply.cxx:1271
 AliEMCALTenderSupply.cxx:1272
 AliEMCALTenderSupply.cxx:1273
 AliEMCALTenderSupply.cxx:1274
 AliEMCALTenderSupply.cxx:1275
 AliEMCALTenderSupply.cxx:1276
 AliEMCALTenderSupply.cxx:1277
 AliEMCALTenderSupply.cxx:1278
 AliEMCALTenderSupply.cxx:1279
 AliEMCALTenderSupply.cxx:1280
 AliEMCALTenderSupply.cxx:1281
 AliEMCALTenderSupply.cxx:1282
 AliEMCALTenderSupply.cxx:1283
 AliEMCALTenderSupply.cxx:1284
 AliEMCALTenderSupply.cxx:1285
 AliEMCALTenderSupply.cxx:1286
 AliEMCALTenderSupply.cxx:1287
 AliEMCALTenderSupply.cxx:1288
 AliEMCALTenderSupply.cxx:1289
 AliEMCALTenderSupply.cxx:1290
 AliEMCALTenderSupply.cxx:1291
 AliEMCALTenderSupply.cxx:1292
 AliEMCALTenderSupply.cxx:1293
 AliEMCALTenderSupply.cxx:1294
 AliEMCALTenderSupply.cxx:1295
 AliEMCALTenderSupply.cxx:1296
 AliEMCALTenderSupply.cxx:1297
 AliEMCALTenderSupply.cxx:1298
 AliEMCALTenderSupply.cxx:1299
 AliEMCALTenderSupply.cxx:1300
 AliEMCALTenderSupply.cxx:1301
 AliEMCALTenderSupply.cxx:1302
 AliEMCALTenderSupply.cxx:1303
 AliEMCALTenderSupply.cxx:1304
 AliEMCALTenderSupply.cxx:1305
 AliEMCALTenderSupply.cxx:1306
 AliEMCALTenderSupply.cxx:1307
 AliEMCALTenderSupply.cxx:1308
 AliEMCALTenderSupply.cxx:1309
 AliEMCALTenderSupply.cxx:1310
 AliEMCALTenderSupply.cxx:1311
 AliEMCALTenderSupply.cxx:1312
 AliEMCALTenderSupply.cxx:1313
 AliEMCALTenderSupply.cxx:1314
 AliEMCALTenderSupply.cxx:1315
 AliEMCALTenderSupply.cxx:1316
 AliEMCALTenderSupply.cxx:1317
 AliEMCALTenderSupply.cxx:1318
 AliEMCALTenderSupply.cxx:1319
 AliEMCALTenderSupply.cxx:1320
 AliEMCALTenderSupply.cxx:1321
 AliEMCALTenderSupply.cxx:1322
 AliEMCALTenderSupply.cxx:1323
 AliEMCALTenderSupply.cxx:1324
 AliEMCALTenderSupply.cxx:1325
 AliEMCALTenderSupply.cxx:1326
 AliEMCALTenderSupply.cxx:1327
 AliEMCALTenderSupply.cxx:1328
 AliEMCALTenderSupply.cxx:1329
 AliEMCALTenderSupply.cxx:1330
 AliEMCALTenderSupply.cxx:1331
 AliEMCALTenderSupply.cxx:1332
 AliEMCALTenderSupply.cxx:1333
 AliEMCALTenderSupply.cxx:1334
 AliEMCALTenderSupply.cxx:1335
 AliEMCALTenderSupply.cxx:1336
 AliEMCALTenderSupply.cxx:1337
 AliEMCALTenderSupply.cxx:1338
 AliEMCALTenderSupply.cxx:1339
 AliEMCALTenderSupply.cxx:1340
 AliEMCALTenderSupply.cxx:1341
 AliEMCALTenderSupply.cxx:1342
 AliEMCALTenderSupply.cxx:1343
 AliEMCALTenderSupply.cxx:1344
 AliEMCALTenderSupply.cxx:1345
 AliEMCALTenderSupply.cxx:1346
 AliEMCALTenderSupply.cxx:1347
 AliEMCALTenderSupply.cxx:1348
 AliEMCALTenderSupply.cxx:1349
 AliEMCALTenderSupply.cxx:1350
 AliEMCALTenderSupply.cxx:1351
 AliEMCALTenderSupply.cxx:1352
 AliEMCALTenderSupply.cxx:1353
 AliEMCALTenderSupply.cxx:1354
 AliEMCALTenderSupply.cxx:1355
 AliEMCALTenderSupply.cxx:1356
 AliEMCALTenderSupply.cxx:1357
 AliEMCALTenderSupply.cxx:1358
 AliEMCALTenderSupply.cxx:1359
 AliEMCALTenderSupply.cxx:1360
 AliEMCALTenderSupply.cxx:1361
 AliEMCALTenderSupply.cxx:1362
 AliEMCALTenderSupply.cxx:1363
 AliEMCALTenderSupply.cxx:1364
 AliEMCALTenderSupply.cxx:1365
 AliEMCALTenderSupply.cxx:1366
 AliEMCALTenderSupply.cxx:1367
 AliEMCALTenderSupply.cxx:1368
 AliEMCALTenderSupply.cxx:1369
 AliEMCALTenderSupply.cxx:1370
 AliEMCALTenderSupply.cxx:1371
 AliEMCALTenderSupply.cxx:1372
 AliEMCALTenderSupply.cxx:1373
 AliEMCALTenderSupply.cxx:1374
 AliEMCALTenderSupply.cxx:1375
 AliEMCALTenderSupply.cxx:1376
 AliEMCALTenderSupply.cxx:1377
 AliEMCALTenderSupply.cxx:1378
 AliEMCALTenderSupply.cxx:1379
 AliEMCALTenderSupply.cxx:1380
 AliEMCALTenderSupply.cxx:1381
 AliEMCALTenderSupply.cxx:1382
 AliEMCALTenderSupply.cxx:1383
 AliEMCALTenderSupply.cxx:1384
 AliEMCALTenderSupply.cxx:1385
 AliEMCALTenderSupply.cxx:1386
 AliEMCALTenderSupply.cxx:1387
 AliEMCALTenderSupply.cxx:1388
 AliEMCALTenderSupply.cxx:1389
 AliEMCALTenderSupply.cxx:1390
 AliEMCALTenderSupply.cxx:1391
 AliEMCALTenderSupply.cxx:1392
 AliEMCALTenderSupply.cxx:1393
 AliEMCALTenderSupply.cxx:1394
 AliEMCALTenderSupply.cxx:1395
 AliEMCALTenderSupply.cxx:1396
 AliEMCALTenderSupply.cxx:1397
 AliEMCALTenderSupply.cxx:1398
 AliEMCALTenderSupply.cxx:1399
 AliEMCALTenderSupply.cxx:1400
 AliEMCALTenderSupply.cxx:1401
 AliEMCALTenderSupply.cxx:1402
 AliEMCALTenderSupply.cxx:1403
 AliEMCALTenderSupply.cxx:1404
 AliEMCALTenderSupply.cxx:1405
 AliEMCALTenderSupply.cxx:1406
 AliEMCALTenderSupply.cxx:1407
 AliEMCALTenderSupply.cxx:1408
 AliEMCALTenderSupply.cxx:1409
 AliEMCALTenderSupply.cxx:1410
 AliEMCALTenderSupply.cxx:1411
 AliEMCALTenderSupply.cxx:1412
 AliEMCALTenderSupply.cxx:1413
 AliEMCALTenderSupply.cxx:1414
 AliEMCALTenderSupply.cxx:1415
 AliEMCALTenderSupply.cxx:1416
 AliEMCALTenderSupply.cxx:1417
 AliEMCALTenderSupply.cxx:1418
 AliEMCALTenderSupply.cxx:1419
 AliEMCALTenderSupply.cxx:1420
 AliEMCALTenderSupply.cxx:1421
 AliEMCALTenderSupply.cxx:1422
 AliEMCALTenderSupply.cxx:1423
 AliEMCALTenderSupply.cxx:1424
 AliEMCALTenderSupply.cxx:1425
 AliEMCALTenderSupply.cxx:1426
 AliEMCALTenderSupply.cxx:1427
 AliEMCALTenderSupply.cxx:1428
 AliEMCALTenderSupply.cxx:1429
 AliEMCALTenderSupply.cxx:1430
 AliEMCALTenderSupply.cxx:1431
 AliEMCALTenderSupply.cxx:1432
 AliEMCALTenderSupply.cxx:1433
 AliEMCALTenderSupply.cxx:1434
 AliEMCALTenderSupply.cxx:1435
 AliEMCALTenderSupply.cxx:1436
 AliEMCALTenderSupply.cxx:1437
 AliEMCALTenderSupply.cxx:1438
 AliEMCALTenderSupply.cxx:1439
 AliEMCALTenderSupply.cxx:1440
 AliEMCALTenderSupply.cxx:1441
 AliEMCALTenderSupply.cxx:1442
 AliEMCALTenderSupply.cxx:1443
 AliEMCALTenderSupply.cxx:1444
 AliEMCALTenderSupply.cxx:1445
 AliEMCALTenderSupply.cxx:1446
 AliEMCALTenderSupply.cxx:1447
 AliEMCALTenderSupply.cxx:1448
 AliEMCALTenderSupply.cxx:1449
 AliEMCALTenderSupply.cxx:1450
 AliEMCALTenderSupply.cxx:1451
 AliEMCALTenderSupply.cxx:1452
 AliEMCALTenderSupply.cxx:1453
 AliEMCALTenderSupply.cxx:1454
 AliEMCALTenderSupply.cxx:1455
 AliEMCALTenderSupply.cxx:1456
 AliEMCALTenderSupply.cxx:1457
 AliEMCALTenderSupply.cxx:1458
 AliEMCALTenderSupply.cxx:1459
 AliEMCALTenderSupply.cxx:1460
 AliEMCALTenderSupply.cxx:1461
 AliEMCALTenderSupply.cxx:1462
 AliEMCALTenderSupply.cxx:1463
 AliEMCALTenderSupply.cxx:1464
 AliEMCALTenderSupply.cxx:1465
 AliEMCALTenderSupply.cxx:1466
 AliEMCALTenderSupply.cxx:1467
 AliEMCALTenderSupply.cxx:1468
 AliEMCALTenderSupply.cxx:1469
 AliEMCALTenderSupply.cxx:1470
 AliEMCALTenderSupply.cxx:1471
 AliEMCALTenderSupply.cxx:1472
 AliEMCALTenderSupply.cxx:1473
 AliEMCALTenderSupply.cxx:1474
 AliEMCALTenderSupply.cxx:1475
 AliEMCALTenderSupply.cxx:1476
 AliEMCALTenderSupply.cxx:1477
 AliEMCALTenderSupply.cxx:1478
 AliEMCALTenderSupply.cxx:1479
 AliEMCALTenderSupply.cxx:1480
 AliEMCALTenderSupply.cxx:1481
 AliEMCALTenderSupply.cxx:1482
 AliEMCALTenderSupply.cxx:1483
 AliEMCALTenderSupply.cxx:1484
 AliEMCALTenderSupply.cxx:1485
 AliEMCALTenderSupply.cxx:1486
 AliEMCALTenderSupply.cxx:1487
 AliEMCALTenderSupply.cxx:1488
 AliEMCALTenderSupply.cxx:1489
 AliEMCALTenderSupply.cxx:1490
 AliEMCALTenderSupply.cxx:1491
 AliEMCALTenderSupply.cxx:1492
 AliEMCALTenderSupply.cxx:1493
 AliEMCALTenderSupply.cxx:1494
 AliEMCALTenderSupply.cxx:1495
 AliEMCALTenderSupply.cxx:1496
 AliEMCALTenderSupply.cxx:1497
 AliEMCALTenderSupply.cxx:1498
 AliEMCALTenderSupply.cxx:1499
 AliEMCALTenderSupply.cxx:1500
 AliEMCALTenderSupply.cxx:1501
 AliEMCALTenderSupply.cxx:1502
 AliEMCALTenderSupply.cxx:1503
 AliEMCALTenderSupply.cxx:1504
 AliEMCALTenderSupply.cxx:1505
 AliEMCALTenderSupply.cxx:1506
 AliEMCALTenderSupply.cxx:1507
 AliEMCALTenderSupply.cxx:1508
 AliEMCALTenderSupply.cxx:1509
 AliEMCALTenderSupply.cxx:1510
 AliEMCALTenderSupply.cxx:1511
 AliEMCALTenderSupply.cxx:1512
 AliEMCALTenderSupply.cxx:1513
 AliEMCALTenderSupply.cxx:1514
 AliEMCALTenderSupply.cxx:1515
 AliEMCALTenderSupply.cxx:1516
 AliEMCALTenderSupply.cxx:1517
 AliEMCALTenderSupply.cxx:1518
 AliEMCALTenderSupply.cxx:1519
 AliEMCALTenderSupply.cxx:1520
 AliEMCALTenderSupply.cxx:1521
 AliEMCALTenderSupply.cxx:1522
 AliEMCALTenderSupply.cxx:1523
 AliEMCALTenderSupply.cxx:1524
 AliEMCALTenderSupply.cxx:1525
 AliEMCALTenderSupply.cxx:1526
 AliEMCALTenderSupply.cxx:1527
 AliEMCALTenderSupply.cxx:1528
 AliEMCALTenderSupply.cxx:1529
 AliEMCALTenderSupply.cxx:1530
 AliEMCALTenderSupply.cxx:1531
 AliEMCALTenderSupply.cxx:1532
 AliEMCALTenderSupply.cxx:1533
 AliEMCALTenderSupply.cxx:1534
 AliEMCALTenderSupply.cxx:1535
 AliEMCALTenderSupply.cxx:1536
 AliEMCALTenderSupply.cxx:1537
 AliEMCALTenderSupply.cxx:1538
 AliEMCALTenderSupply.cxx:1539
 AliEMCALTenderSupply.cxx:1540
 AliEMCALTenderSupply.cxx:1541
 AliEMCALTenderSupply.cxx:1542
 AliEMCALTenderSupply.cxx:1543
 AliEMCALTenderSupply.cxx:1544
 AliEMCALTenderSupply.cxx:1545
 AliEMCALTenderSupply.cxx:1546
 AliEMCALTenderSupply.cxx:1547
 AliEMCALTenderSupply.cxx:1548
 AliEMCALTenderSupply.cxx:1549
 AliEMCALTenderSupply.cxx:1550
 AliEMCALTenderSupply.cxx:1551
 AliEMCALTenderSupply.cxx:1552
 AliEMCALTenderSupply.cxx:1553
 AliEMCALTenderSupply.cxx:1554
 AliEMCALTenderSupply.cxx:1555
 AliEMCALTenderSupply.cxx:1556
 AliEMCALTenderSupply.cxx:1557
 AliEMCALTenderSupply.cxx:1558
 AliEMCALTenderSupply.cxx:1559
 AliEMCALTenderSupply.cxx:1560
 AliEMCALTenderSupply.cxx:1561
 AliEMCALTenderSupply.cxx:1562
 AliEMCALTenderSupply.cxx:1563
 AliEMCALTenderSupply.cxx:1564
 AliEMCALTenderSupply.cxx:1565
 AliEMCALTenderSupply.cxx:1566
 AliEMCALTenderSupply.cxx:1567
 AliEMCALTenderSupply.cxx:1568
 AliEMCALTenderSupply.cxx:1569
 AliEMCALTenderSupply.cxx:1570
 AliEMCALTenderSupply.cxx:1571
 AliEMCALTenderSupply.cxx:1572
 AliEMCALTenderSupply.cxx:1573
 AliEMCALTenderSupply.cxx:1574
 AliEMCALTenderSupply.cxx:1575
 AliEMCALTenderSupply.cxx:1576
 AliEMCALTenderSupply.cxx:1577
 AliEMCALTenderSupply.cxx:1578
 AliEMCALTenderSupply.cxx:1579
 AliEMCALTenderSupply.cxx:1580
 AliEMCALTenderSupply.cxx:1581
 AliEMCALTenderSupply.cxx:1582
 AliEMCALTenderSupply.cxx:1583
 AliEMCALTenderSupply.cxx:1584
 AliEMCALTenderSupply.cxx:1585
 AliEMCALTenderSupply.cxx:1586
 AliEMCALTenderSupply.cxx:1587
 AliEMCALTenderSupply.cxx:1588
 AliEMCALTenderSupply.cxx:1589
 AliEMCALTenderSupply.cxx:1590
 AliEMCALTenderSupply.cxx:1591
 AliEMCALTenderSupply.cxx:1592
 AliEMCALTenderSupply.cxx:1593
 AliEMCALTenderSupply.cxx:1594
 AliEMCALTenderSupply.cxx:1595
 AliEMCALTenderSupply.cxx:1596
 AliEMCALTenderSupply.cxx:1597
 AliEMCALTenderSupply.cxx:1598
 AliEMCALTenderSupply.cxx:1599
 AliEMCALTenderSupply.cxx:1600
 AliEMCALTenderSupply.cxx:1601
 AliEMCALTenderSupply.cxx:1602
 AliEMCALTenderSupply.cxx:1603
 AliEMCALTenderSupply.cxx:1604
 AliEMCALTenderSupply.cxx:1605
 AliEMCALTenderSupply.cxx:1606
 AliEMCALTenderSupply.cxx:1607
 AliEMCALTenderSupply.cxx:1608
 AliEMCALTenderSupply.cxx:1609
 AliEMCALTenderSupply.cxx:1610
 AliEMCALTenderSupply.cxx:1611
 AliEMCALTenderSupply.cxx:1612
 AliEMCALTenderSupply.cxx:1613
 AliEMCALTenderSupply.cxx:1614
 AliEMCALTenderSupply.cxx:1615
 AliEMCALTenderSupply.cxx:1616
 AliEMCALTenderSupply.cxx:1617
 AliEMCALTenderSupply.cxx:1618
 AliEMCALTenderSupply.cxx:1619
 AliEMCALTenderSupply.cxx:1620
 AliEMCALTenderSupply.cxx:1621
 AliEMCALTenderSupply.cxx:1622
 AliEMCALTenderSupply.cxx:1623
 AliEMCALTenderSupply.cxx:1624
 AliEMCALTenderSupply.cxx:1625
 AliEMCALTenderSupply.cxx:1626
 AliEMCALTenderSupply.cxx:1627
 AliEMCALTenderSupply.cxx:1628
 AliEMCALTenderSupply.cxx:1629
 AliEMCALTenderSupply.cxx:1630
 AliEMCALTenderSupply.cxx:1631
 AliEMCALTenderSupply.cxx:1632
 AliEMCALTenderSupply.cxx:1633
 AliEMCALTenderSupply.cxx:1634
 AliEMCALTenderSupply.cxx:1635
 AliEMCALTenderSupply.cxx:1636
 AliEMCALTenderSupply.cxx:1637
 AliEMCALTenderSupply.cxx:1638
 AliEMCALTenderSupply.cxx:1639
 AliEMCALTenderSupply.cxx:1640
 AliEMCALTenderSupply.cxx:1641
 AliEMCALTenderSupply.cxx:1642
 AliEMCALTenderSupply.cxx:1643
 AliEMCALTenderSupply.cxx:1644
 AliEMCALTenderSupply.cxx:1645
 AliEMCALTenderSupply.cxx:1646
 AliEMCALTenderSupply.cxx:1647
 AliEMCALTenderSupply.cxx:1648
 AliEMCALTenderSupply.cxx:1649
 AliEMCALTenderSupply.cxx:1650
 AliEMCALTenderSupply.cxx:1651
 AliEMCALTenderSupply.cxx:1652
 AliEMCALTenderSupply.cxx:1653
 AliEMCALTenderSupply.cxx:1654
 AliEMCALTenderSupply.cxx:1655
 AliEMCALTenderSupply.cxx:1656
 AliEMCALTenderSupply.cxx:1657
 AliEMCALTenderSupply.cxx:1658
 AliEMCALTenderSupply.cxx:1659
 AliEMCALTenderSupply.cxx:1660
 AliEMCALTenderSupply.cxx:1661
 AliEMCALTenderSupply.cxx:1662
 AliEMCALTenderSupply.cxx:1663
 AliEMCALTenderSupply.cxx:1664
 AliEMCALTenderSupply.cxx:1665
 AliEMCALTenderSupply.cxx:1666
 AliEMCALTenderSupply.cxx:1667
 AliEMCALTenderSupply.cxx:1668
 AliEMCALTenderSupply.cxx:1669
 AliEMCALTenderSupply.cxx:1670
 AliEMCALTenderSupply.cxx:1671
 AliEMCALTenderSupply.cxx:1672
 AliEMCALTenderSupply.cxx:1673
 AliEMCALTenderSupply.cxx:1674
 AliEMCALTenderSupply.cxx:1675
 AliEMCALTenderSupply.cxx:1676
 AliEMCALTenderSupply.cxx:1677
 AliEMCALTenderSupply.cxx:1678
 AliEMCALTenderSupply.cxx:1679
 AliEMCALTenderSupply.cxx:1680
 AliEMCALTenderSupply.cxx:1681
 AliEMCALTenderSupply.cxx:1682
 AliEMCALTenderSupply.cxx:1683
 AliEMCALTenderSupply.cxx:1684
 AliEMCALTenderSupply.cxx:1685
 AliEMCALTenderSupply.cxx:1686
 AliEMCALTenderSupply.cxx:1687
 AliEMCALTenderSupply.cxx:1688
 AliEMCALTenderSupply.cxx:1689
 AliEMCALTenderSupply.cxx:1690
 AliEMCALTenderSupply.cxx:1691
 AliEMCALTenderSupply.cxx:1692
 AliEMCALTenderSupply.cxx:1693
 AliEMCALTenderSupply.cxx:1694
 AliEMCALTenderSupply.cxx:1695
 AliEMCALTenderSupply.cxx:1696
 AliEMCALTenderSupply.cxx:1697
 AliEMCALTenderSupply.cxx:1698
 AliEMCALTenderSupply.cxx:1699
 AliEMCALTenderSupply.cxx:1700
 AliEMCALTenderSupply.cxx:1701
 AliEMCALTenderSupply.cxx:1702
 AliEMCALTenderSupply.cxx:1703
 AliEMCALTenderSupply.cxx:1704
 AliEMCALTenderSupply.cxx:1705
 AliEMCALTenderSupply.cxx:1706
 AliEMCALTenderSupply.cxx:1707
 AliEMCALTenderSupply.cxx:1708
 AliEMCALTenderSupply.cxx:1709
 AliEMCALTenderSupply.cxx:1710
 AliEMCALTenderSupply.cxx:1711
 AliEMCALTenderSupply.cxx:1712
 AliEMCALTenderSupply.cxx:1713
 AliEMCALTenderSupply.cxx:1714
 AliEMCALTenderSupply.cxx:1715
 AliEMCALTenderSupply.cxx:1716
 AliEMCALTenderSupply.cxx:1717
 AliEMCALTenderSupply.cxx:1718
 AliEMCALTenderSupply.cxx:1719
 AliEMCALTenderSupply.cxx:1720
 AliEMCALTenderSupply.cxx:1721
 AliEMCALTenderSupply.cxx:1722
 AliEMCALTenderSupply.cxx:1723
 AliEMCALTenderSupply.cxx:1724
 AliEMCALTenderSupply.cxx:1725
 AliEMCALTenderSupply.cxx:1726
 AliEMCALTenderSupply.cxx:1727
 AliEMCALTenderSupply.cxx:1728
 AliEMCALTenderSupply.cxx:1729
 AliEMCALTenderSupply.cxx:1730
 AliEMCALTenderSupply.cxx:1731
 AliEMCALTenderSupply.cxx:1732
 AliEMCALTenderSupply.cxx:1733
 AliEMCALTenderSupply.cxx:1734
 AliEMCALTenderSupply.cxx:1735
 AliEMCALTenderSupply.cxx:1736
 AliEMCALTenderSupply.cxx:1737
 AliEMCALTenderSupply.cxx:1738
 AliEMCALTenderSupply.cxx:1739
 AliEMCALTenderSupply.cxx:1740
 AliEMCALTenderSupply.cxx:1741
 AliEMCALTenderSupply.cxx:1742
 AliEMCALTenderSupply.cxx:1743
 AliEMCALTenderSupply.cxx:1744
 AliEMCALTenderSupply.cxx:1745
 AliEMCALTenderSupply.cxx:1746
 AliEMCALTenderSupply.cxx:1747
 AliEMCALTenderSupply.cxx:1748
 AliEMCALTenderSupply.cxx:1749
 AliEMCALTenderSupply.cxx:1750
 AliEMCALTenderSupply.cxx:1751
 AliEMCALTenderSupply.cxx:1752
 AliEMCALTenderSupply.cxx:1753
 AliEMCALTenderSupply.cxx:1754
 AliEMCALTenderSupply.cxx:1755
 AliEMCALTenderSupply.cxx:1756
 AliEMCALTenderSupply.cxx:1757
 AliEMCALTenderSupply.cxx:1758
 AliEMCALTenderSupply.cxx:1759
 AliEMCALTenderSupply.cxx:1760
 AliEMCALTenderSupply.cxx:1761
 AliEMCALTenderSupply.cxx:1762
 AliEMCALTenderSupply.cxx:1763
 AliEMCALTenderSupply.cxx:1764
 AliEMCALTenderSupply.cxx:1765
 AliEMCALTenderSupply.cxx:1766
 AliEMCALTenderSupply.cxx:1767
 AliEMCALTenderSupply.cxx:1768
 AliEMCALTenderSupply.cxx:1769
 AliEMCALTenderSupply.cxx:1770
 AliEMCALTenderSupply.cxx:1771
 AliEMCALTenderSupply.cxx:1772
 AliEMCALTenderSupply.cxx:1773
 AliEMCALTenderSupply.cxx:1774
 AliEMCALTenderSupply.cxx:1775
 AliEMCALTenderSupply.cxx:1776
 AliEMCALTenderSupply.cxx:1777
 AliEMCALTenderSupply.cxx:1778
 AliEMCALTenderSupply.cxx:1779
 AliEMCALTenderSupply.cxx:1780
 AliEMCALTenderSupply.cxx:1781
 AliEMCALTenderSupply.cxx:1782
 AliEMCALTenderSupply.cxx:1783
 AliEMCALTenderSupply.cxx:1784
 AliEMCALTenderSupply.cxx:1785
 AliEMCALTenderSupply.cxx:1786
 AliEMCALTenderSupply.cxx:1787
 AliEMCALTenderSupply.cxx:1788
 AliEMCALTenderSupply.cxx:1789
 AliEMCALTenderSupply.cxx:1790
 AliEMCALTenderSupply.cxx:1791
 AliEMCALTenderSupply.cxx:1792
 AliEMCALTenderSupply.cxx:1793
 AliEMCALTenderSupply.cxx:1794
 AliEMCALTenderSupply.cxx:1795
 AliEMCALTenderSupply.cxx:1796
 AliEMCALTenderSupply.cxx:1797
 AliEMCALTenderSupply.cxx:1798
 AliEMCALTenderSupply.cxx:1799
 AliEMCALTenderSupply.cxx:1800
 AliEMCALTenderSupply.cxx:1801
 AliEMCALTenderSupply.cxx:1802
 AliEMCALTenderSupply.cxx:1803
 AliEMCALTenderSupply.cxx:1804
 AliEMCALTenderSupply.cxx:1805
 AliEMCALTenderSupply.cxx:1806
 AliEMCALTenderSupply.cxx:1807
 AliEMCALTenderSupply.cxx:1808
 AliEMCALTenderSupply.cxx:1809
 AliEMCALTenderSupply.cxx:1810
 AliEMCALTenderSupply.cxx:1811
 AliEMCALTenderSupply.cxx:1812
 AliEMCALTenderSupply.cxx:1813
 AliEMCALTenderSupply.cxx:1814
 AliEMCALTenderSupply.cxx:1815
 AliEMCALTenderSupply.cxx:1816
 AliEMCALTenderSupply.cxx:1817
 AliEMCALTenderSupply.cxx:1818
 AliEMCALTenderSupply.cxx:1819
 AliEMCALTenderSupply.cxx:1820
 AliEMCALTenderSupply.cxx:1821
 AliEMCALTenderSupply.cxx:1822
 AliEMCALTenderSupply.cxx:1823
 AliEMCALTenderSupply.cxx:1824
 AliEMCALTenderSupply.cxx:1825
 AliEMCALTenderSupply.cxx:1826
 AliEMCALTenderSupply.cxx:1827