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

//_________________________________________________________________________
// Class utility for Calorimeter specific selection methods                ///
//
//
//
//-- Author: Gustavo Conesa (LPSC-Grenoble) 
//////////////////////////////////////////////////////////////////////////////


// --- ROOT system ---
#include <TGeoManager.h>
#include <TH2F.h>
#include <TCanvas.h>
#include <TStyle.h>
#include <TPad.h>
#include <TFile.h>
#include <TParticle.h>

// --- ANALYSIS system ---
#include "AliCalorimeterUtils.h"
#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliAODPWG4Particle.h"
#include "AliVCluster.h"
#include "AliVCaloCells.h"
#include "AliAODCaloCluster.h"
#include "AliOADBContainer.h"
#include "AliAnalysisManager.h"
#include "AliAODMCParticle.h"
#include "AliLog.h"

// --- Detector ---
#include "AliEMCALGeometry.h"
#include "AliPHOSGeoUtils.h"

ClassImp(AliCalorimeterUtils)
  
  
//____________________________________________
  AliCalorimeterUtils::AliCalorimeterUtils() : 
    TObject(), fDebug(0), 
    fEMCALGeoName(""),
    fPHOSGeoName (""), 
    fEMCALGeo(0x0),                   fPHOSGeo(0x0), 
    fEMCALGeoMatrixSet(kFALSE),       fPHOSGeoMatrixSet(kFALSE), 
    fLoadEMCALMatrices(kFALSE),       fLoadPHOSMatrices(kFALSE),
    fRemoveBadChannels(kFALSE),       fPHOSBadChannelMap(0x0), 
    fNCellsFromPHOSBorder(0),
    fNMaskCellColumns(0),             fMaskCellColumns(0x0),
    fRecalibration(kFALSE),           fRunDependentCorrection(kFALSE),
    fPHOSRecalibrationFactors(),      fEMCALRecoUtils(new AliEMCALRecoUtils),
    fRecalculatePosition(kFALSE),     fCorrectELinearity(kFALSE),
    fRecalculateMatching(kFALSE),
    fCutR(20),                        fCutZ(20),
    fCutEta(20),                      fCutPhi(20),
    fLocMaxCutE(0),                   fLocMaxCutEDiff(0),
    fPlotCluster(0),                  fOADBSet(kFALSE),
    fOADBForEMCAL(kFALSE),            fOADBForPHOS(kFALSE),
    fOADBFilePathEMCAL(""),           fOADBFilePathPHOS(""),
    fImportGeometryFromFile(0),       fImportGeometryFilePath(""),
    fNSuperModulesUsed(0),
    fMCECellClusFracCorrOn(0),        fMCECellClusFracCorrParam()
{
  //Ctor
  
  //Initialize parameters
  InitParameters();
  for(Int_t i = 0; i < 12; i++) fEMCALMatrix[i] = 0 ;
  for(Int_t i = 0; i < 5 ; i++) fPHOSMatrix [i] = 0 ;
  
}

//_________________________________________
AliCalorimeterUtils::~AliCalorimeterUtils()
{
  //Dtor
  
  //if(fPHOSGeo)  delete fPHOSGeo  ;
  if(fEMCALGeo) delete fEMCALGeo ;
  
  if(fPHOSBadChannelMap) { 
    fPHOSBadChannelMap->Clear();
    delete  fPHOSBadChannelMap;
  }
	
  if(fPHOSRecalibrationFactors) { 
    fPHOSRecalibrationFactors->Clear();
    delete  fPHOSRecalibrationFactors;
  }
	
  if(fEMCALRecoUtils)   delete fEMCALRecoUtils ;
  if(fNMaskCellColumns) delete [] fMaskCellColumns;
  
}

//____________________________________________________
void AliCalorimeterUtils::AccessOADB(AliVEvent* event)
{
  // Set the AODB calibration, bad channels etc. parameters at least once
  // alignment matrices from OADB done in SetGeometryMatrices
  
  //Set it only once
  if(fOADBSet) return ; 
  
  Int_t   runnumber = event->GetRunNumber() ;
  TString pass      = GetPass();
  
  // EMCAL
  if(fOADBForEMCAL)
  {
    AliInfo(Form("Get AODB parameters from EMCAL in %s for run %d, and <%s>",fOADBFilePathEMCAL.Data(),runnumber,pass.Data()));
    
    Int_t nSM = fEMCALGeo->GetNumberOfSuperModules();
    
    // Bad map
    if(fRemoveBadChannels)
    {
      AliOADBContainer *contBC=new AliOADBContainer("");
      contBC->InitFromFile(Form("%s/EMCALBadChannels.root",fOADBFilePathEMCAL.Data()),"AliEMCALBadChannels"); 
      
      TObjArray *arrayBC=(TObjArray*)contBC->GetObject(runnumber);
      
      if(arrayBC)
      {
        SwitchOnDistToBadChannelRecalculation();
        AliInfo("Remove EMCAL bad cells");
        
        for (Int_t i=0; i<nSM; ++i) 
        {
          TH2I *hbm = GetEMCALChannelStatusMap(i);
          
          if (hbm)
            delete hbm;
          
          hbm=(TH2I*)arrayBC->FindObject(Form("EMCALBadChannelMap_Mod%d",i));
          
          if (!hbm) 
          {
            AliError(Form("Can not get EMCALBadChannelMap_Mod%d",i));
            continue;
          }
          
          hbm->SetDirectory(0);
          SetEMCALChannelStatusMap(i,hbm);
          
        } // loop
      } else AliInfo("Do NOT remove EMCAL bad channels\n"); // run array
    }  // Remove bad
    
    // Energy Recalibration
    if(fRecalibration)
    {
      AliOADBContainer *contRF=new AliOADBContainer("");
      
      contRF->InitFromFile(Form("%s/EMCALRecalib.root",fOADBFilePathEMCAL.Data()),"AliEMCALRecalib");
      
      TObjArray *recal=(TObjArray*)contRF->GetObject(runnumber); 
      
      if(recal)
      {
        TObjArray *recalpass=(TObjArray*)recal->FindObject(pass);
        
        if(recalpass)
        {
          TObjArray *recalib=(TObjArray*)recalpass->FindObject("Recalib");
          
          if(recalib)
          {
            AliInfo("Recalibrate EMCAL");
            for (Int_t i=0; i < nSM; ++i)
            {
              TH2F *h = 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);
              
              SetEMCALChannelRecalibrationFactors(i,h);
            } // SM loop
          } else AliInfo("Do NOT recalibrate EMCAL, no params object array"); // array ok
        } else AliInfo("Do NOT recalibrate EMCAL, no params for pass"); // array pass ok
      } else AliInfo("Do NOT recalibrate EMCAL, no params for run");  // run number array ok
      
      // once set, apply run dependent corrections if requested
      //fEMCALRecoUtils->SetRunDependentCorrections(runnumber);
            
    } // Recalibration on
    
    // Energy Recalibration, apply on top of previous calibration factors
    if(fRunDependentCorrection)
    {
      AliOADBContainer *contRFTD=new AliOADBContainer("");
      
      contRFTD->InitFromFile(Form("%s/EMCALTemperatureCorrCalib.root",fOADBFilePathEMCAL.Data()),"AliEMCALRunDepTempCalibCorrections");
      
      TH1S *htd=(TH1S*)contRFTD->GetObject(runnumber); 
      
      //If it did not exist for this run, get closes one
      if (!htd)
      {
        AliWarning(Form("No TemperatureCorrCalib Objects for run: %d",runnumber));
        // let's get the closest runnumber instead then..
        Int_t lower = 0;
        Int_t ic = 0;
        Int_t maxEntry = contRFTD->GetNumberOfEntries();
        
        while ( (ic < maxEntry) && (contRFTD->UpperLimit(ic) < runnumber) ) {
          lower = ic;
          ic++;
        }
        
        Int_t closest = lower;
        if ( (ic<maxEntry) &&
            (contRFTD->LowerLimit(ic)-runnumber) < (runnumber - contRFTD->UpperLimit(lower)) ) {
          closest = ic;
        }
        
        AliWarning(Form("TemperatureCorrCalib Objects found closest id %d from run: %d", closest, contRFTD->LowerLimit(closest)));
        htd = (TH1S*) contRFTD->GetObjectByIndex(closest);
      } 
      
      if(htd)
      {
        AliInfo("Recalibrate (Temperature) EMCAL");
        
        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 = GetEMCALChannelRecalibrationFactor(ism,icol,irow);
              
              Int_t absID = fEMCALGeo->GetAbsCellIdFromCellIndexes(ism, irow, icol); // original calibration factor
              factor *= htd->GetBinContent(absID) / 10000. ; // correction dependent on T
              //printf("\t ism %d, icol %d, irow %d,absID %d, corrA %2.3f, corrB %2.3f, corrAB %2.3f\n",ism, icol, irow, absID, 
              //      GetEMCALChannelRecalibrationFactor(ism,icol,irow) , htd->GetBinContent(absID) / 10000., factor);
              SetEMCALChannelRecalibrationFactor(ism,icol,irow,factor);
            } // columns
          } // rows 
        } // SM loop
      }else AliInfo("Do NOT recalibrate EMCAL with T variations, no params TH1");
    } // Run by Run T calibration    
    
    // Time Recalibration
    if(fEMCALRecoUtils->IsTimeRecalibrationOn())
    {
      AliOADBContainer *contTRF=new AliOADBContainer("");
      
      contTRF->InitFromFile(Form("%s/EMCALTimeCalib.root",fOADBFilePathEMCAL.Data()),"AliEMCALTimeCalib");
      
      TObjArray *trecal=(TObjArray*)contTRF->GetObject(runnumber); 
      
      if(trecal)
      {
        TString passM = pass;
        if(pass=="spc_calo") passM = "pass1";
        TObjArray *trecalpass=(TObjArray*)trecal->FindObject(passM);
        
        if(trecalpass)
        {
          AliInfo("Time Recalibrate EMCAL");
          for (Int_t ibc = 0; ibc < 4; ++ibc) 
          {
            TH1F *h = GetEMCALChannelTimeRecalibrationFactors(ibc);
            
            if (h)
              delete h;
            
            h = (TH1F*)trecalpass->FindObject(Form("hAllTimeAvBC%d",ibc));
            
            if (!h) 
            {
              AliError(Form("Could not load hAllTimeAvBC%d",ibc));
              continue;
            }
            
            h->SetDirectory(0);
            
            SetEMCALChannelTimeRecalibrationFactors(ibc,h);
          } // bunch crossing loop
        } else AliInfo("Do NOT recalibrate time EMCAL, no params for pass"); // array pass ok
      } else AliInfo("Do NOT recalibrate time EMCAL, no params for run");  // run number array ok
      
    } // Recalibration on    
    
  }// EMCAL
  
  // PHOS
  if(fOADBForPHOS)
  {
    AliInfo(Form("Get AODB parameters from PHOS in %s for run %d, and <%s>",fOADBFilePathPHOS.Data(),runnumber,pass.Data()));
    
    // Bad map
    if(fRemoveBadChannels)
    {
      AliOADBContainer badmapContainer(Form("phosBadMap"));
      TString fileName="$ALICE_ROOT/OADB/PHOS/PHOSBadMaps.root";
      badmapContainer.InitFromFile(Form("%s/PHOSBadMaps.root",fOADBFilePathPHOS.Data()),"phosBadMap");
      
      //Use a fixed run number from year 2010, this year not available yet.
      TObjArray *maps = (TObjArray*)badmapContainer.GetObject(139000,"phosBadMap");
      if(!maps)
      {
        AliInfo(Form("Can not read PHOS bad map for run %d",runnumber)) ;
      }
      else
      {
        AliInfo(Form("Setting PHOS bad map with name %s",maps->GetName())) ;
        for(Int_t mod=1; mod<5;mod++)
        {
          TH2I *hbmPH = GetPHOSChannelStatusMap(mod);
          
          if(hbmPH) 
            delete hbmPH ;  
          
          hbmPH = (TH2I*)maps->At(mod);
          
          if(hbmPH) hbmPH->SetDirectory(0);
          
          SetPHOSChannelStatusMap(mod-1,hbmPH);
          
        } // modules loop  
      } // maps exist
    } // Remove bad channels
  } // PHOS
  
  // Parameters already set once, so do not it again
  fOADBSet = kTRUE;
  
}  

//_____________________________________________________________
void AliCalorimeterUtils::AccessGeometry(AliVEvent* inputEvent) 
{
  //Set the calorimeters transformation matrices and init geometry
  
  // First init the geometry, a priory not done before
  Int_t runnumber = inputEvent->GetRunNumber() ;
  InitPHOSGeometry (runnumber);
  InitEMCALGeometry(runnumber);
  
  //Get the EMCAL transformation geometry matrices from ESD 
  if(!fEMCALGeoMatrixSet && fEMCALGeo)
  {
    if(fLoadEMCALMatrices)
    {
      AliInfo("Load user defined EMCAL geometry matrices");
      
      // OADB if available
      AliOADBContainer emcGeoMat("AliEMCALgeo");
      emcGeoMat.InitFromFile(Form("%s/EMCALlocal2master.root",fOADBFilePathEMCAL.Data()),"AliEMCALgeo");
      TObjArray *matEMCAL=(TObjArray*)emcGeoMat.GetObject(runnumber,"EmcalMatrices");
      
      for(Int_t mod=0; mod < (fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
      {
        if (!fEMCALMatrix[mod]) // Get it from OADB
        {
          AliDebug(1,Form("EMCAL matrices SM %d, %p", mod,((TGeoHMatrix*) matEMCAL->At(mod))));
          //((TGeoHMatrix*) matEMCAL->At(mod))->Print();
          
          fEMCALMatrix[mod] = (TGeoHMatrix*) matEMCAL->At(mod) ;
        }
        
        if(fEMCALMatrix[mod])
        {
          if(fDebug > 1) 
            fEMCALMatrix[mod]->Print();
          
          fEMCALGeo->SetMisalMatrix(fEMCALMatrix[mod],mod) ;  
        }
      }//SM loop
      
      fEMCALGeoMatrixSet = kTRUE;//At least one, so good
      
    }//Load matrices
    else if (!gGeoManager) 
    { 
      AliDebug(1,"Load EMCAL misalignment matrices");
      if(!strcmp(inputEvent->GetName(),"AliESDEvent"))  
      {
        for(Int_t mod=0; mod < (fEMCALGeo->GetEMCGeometry())->GetNumberOfSuperModules(); mod++)
        { 
          //printf("Load ESD matrix %d, %p\n",mod,((AliESDEvent*)inputEvent)->GetEMCALMatrix(mod));
          if(((AliESDEvent*)inputEvent)->GetEMCALMatrix(mod)) 
          {
            fEMCALGeo->SetMisalMatrix(((AliESDEvent*)inputEvent)->GetEMCALMatrix(mod),mod) ;
          }
        }// loop over super modules	
        
        fEMCALGeoMatrixSet = kTRUE;//At least one, so good
        
      }//ESD as input
      else 
      {
        AliDebug(1,"Setting of EMCAL transformation matrixes for AODs not implemented yet. \n Import geometry.root file");
      }//AOD as input
    }//Get matrix from data
    else if(gGeoManager)
    {
      fEMCALGeoMatrixSet = kTRUE;
    }
  }//EMCAL geo && no geoManager
  
	//Get the PHOS transformation geometry matrices from ESD 
  if(!fPHOSGeoMatrixSet && fPHOSGeo)
  {
    if(fLoadPHOSMatrices)
    {
      AliInfo("Load user defined PHOS geometry matrices");
      
      // OADB if available
      AliOADBContainer geomContainer("phosGeo");
      geomContainer.InitFromFile(Form("%s/PHOSGeometry.root",fOADBFilePathPHOS.Data()),"PHOSRotationMatrixes");
      TObjArray *matPHOS = (TObjArray*)geomContainer.GetObject(139000,"PHOSRotationMatrixes");    
      
      for(Int_t mod = 0 ; mod < 5 ; mod++)
      {
        if (!fPHOSMatrix[mod]) // Get it from OADB
        {
          AliDebug(1,Form("PHOS matrices module %d, %p",mod,((TGeoHMatrix*) matPHOS->At(mod))));
          //((TGeoHMatrix*) matPHOS->At(mod))->Print();
          
          fPHOSMatrix[mod] = (TGeoHMatrix*) matPHOS->At(mod) ;
        }
        
        // Set it, if it exists
        if(fPHOSMatrix[mod])
        {
          if(fDebug > 1 ) 
            fPHOSMatrix[mod]->Print();
          
          fPHOSGeo->SetMisalMatrix(fPHOSMatrix[mod],mod) ;  
        }      
      }// SM loop
      
      fPHOSGeoMatrixSet = kTRUE;//At least one, so good
      
    }//Load matrices
    else if (!gGeoManager) 
    { 
      AliDebug(1,"Load PHOS misalignment matrices.");
			if(!strcmp(inputEvent->GetName(),"AliESDEvent"))  
      {
				for(Int_t mod = 0; mod < 5; mod++)
        { 
					if( ((AliESDEvent*)inputEvent)->GetPHOSMatrix(mod)) 
          {
						//printf("PHOS: mod %d, matrix %p\n",mod, ((AliESDEvent*)inputEvent)->GetPHOSMatrix(mod));
						fPHOSGeo->SetMisalMatrix( ((AliESDEvent*)inputEvent)->GetPHOSMatrix(mod),mod) ;
					}
				}// loop over modules
        fPHOSGeoMatrixSet  = kTRUE; //At least one so good
			}//ESD as input
			else 
      {
				AliDebug(1,"Setting of EMCAL transformation matrixes for AODs not implemented yet. \n Import geometry.root file");
      }//AOD as input
    }// get matrix from data
    else if(gGeoManager)
    {
      fPHOSGeoMatrixSet = kTRUE;
    }
	}//PHOS geo	and  geoManager was not set
  
}

//________________________________________________________________________________________
Bool_t AliCalorimeterUtils::AreNeighbours(Int_t calo, Int_t absId1, Int_t absId2 ) const
{
  // Tells if (true) or not (false) two cells are neighbours
  // A neighbour is defined as being two cells which share a side or corner
	
  Bool_t areNeighbours = kFALSE ;
  
  Int_t iRCU1 = -1, irow1 = -1, icol1 = -1;
  Int_t iRCU2 = -1, irow2 = -1, icol2 = -1;
  
  Int_t rowdiff =  0, coldiff =  0;
  
  Int_t nSupMod1 = GetModuleNumberCellIndexes(absId1, calo, icol1, irow1, iRCU1); 
  Int_t nSupMod2 = GetModuleNumberCellIndexes(absId2, calo, icol2, irow2, iRCU2); 
  
  if(calo==kEMCAL && nSupMod1!=nSupMod2)
  {
    // In case of a shared cluster, index of SM in C side, columns start at 48 and ends at 48*2-1
    // C Side impair SM, nSupMod%2=1; A side pair SM nSupMod%2=0
    if(nSupMod1%2) icol1+=AliEMCALGeoParams::fgkEMCALCols;
    else           icol2+=AliEMCALGeoParams::fgkEMCALCols;    
	}
  
  rowdiff = TMath::Abs( irow1 - irow2 ) ;  
  coldiff = TMath::Abs( icol1 - icol2 ) ;  
  
  //if (( coldiff <= 1 )  && ( rowdiff <= 1 ) && (coldiff + rowdiff > 0))
  if ((coldiff + rowdiff == 1 ))
    areNeighbours = kTRUE ;
  
  return areNeighbours;
  
}
//_____________________________________________________________________________________
Bool_t AliCalorimeterUtils::IsClusterSharedByTwoSuperModules(const AliEMCALGeometry * geom,
                                                             AliVCluster* cluster)
{
  //Method that checks if any of the cells in the cluster belongs to a different SM
  
  Int_t    iSupMod = -1;
  Int_t    iSM0    = -1;
  Int_t    iTower  = -1;
  Int_t    iIphi   = -1;
  Int_t    iIeta   = -1;
  Int_t    iphi    = -1;
  Int_t    ieta    = -1;
  
  for(Int_t iDigit=0; iDigit < cluster->GetNCells(); iDigit++)
  {
    //Get from the absid the supermodule, tower and eta/phi numbers
    geom->GetCellIndex(cluster->GetCellAbsId(iDigit),iSupMod,iTower,iIphi,iIeta);
    geom->GetCellPhiEtaIndexInSModule(iSupMod,iTower,iIphi,iIeta, iphi,ieta);
    
    //Check if there are cells of different SM
    if     (iDigit == 0   ) iSM0 = iSupMod;
    else if(iSupMod!= iSM0) return kTRUE;
  }
  
  return kFALSE;
  
}

//_____________________________________________________________________________________
Bool_t AliCalorimeterUtils::CheckCellFiducialRegion(AliVCluster* cluster, 
                                                    AliVCaloCells* cells) const 
{
  
	// Given the list of AbsId of the cluster, get the maximum cell and 
	// check if there are fNCellsFromBorder from the calorimeter border
	
  //If the distance to the border is 0 or negative just exit accept all clusters
	if(cells->GetType()==AliVCaloCells::kEMCALCell && fEMCALRecoUtils->GetNumberOfCellsFromEMCALBorder() <= 0 ) return kTRUE;
	if(cells->GetType()==AliVCaloCells::kPHOSCell  && fNCellsFromPHOSBorder  <= 0 ) return kTRUE;
  
  Int_t absIdMax	= -1;
	Float_t ampMax  = -1;
	
  for(Int_t i = 0; i < cluster->GetNCells() ; i++)
  {
    Int_t absId = cluster->GetCellAbsId(i) ;
    Float_t amp	= cells->GetCellAmplitude(absId);
    if(amp > ampMax)
    {
      ampMax   = amp;
      absIdMax = absId;
    }
  }
	
	AliDebug(1,Form("Cluster Max AbsId %d, Cell Energy %2.2f, Cluster Energy %2.2f",
                  absIdMax, ampMax, cluster->E()));
	
	if(absIdMax==-1) return kFALSE;
	
	//Check if the cell is close to the borders:
	Bool_t okrow = kFALSE;
	Bool_t okcol = kFALSE;
  
	if(cells->GetType()==AliVCaloCells::kEMCALCell)
  {
		Int_t iTower = -1, iIphi = -1, iIeta = -1, iphi = -1, ieta = -1, iSM = -1; 
		fEMCALGeo->GetCellIndex(absIdMax,iSM,iTower,iIphi,iIeta); 
		fEMCALGeo->GetCellPhiEtaIndexInSModule(iSM,iTower,iIphi, iIeta,iphi,ieta);
		if(iSM < 0 || iphi < 0 || ieta < 0 )
    {
      AliFatal(Form("Negative value for super module: %d, or cell ieta: %d, or cell iphi: %d, check EMCAL geometry name",iSM,ieta,iphi));
    }
    
		//Check rows/phi
    Int_t nborder = fEMCALRecoUtils->GetNumberOfCellsFromEMCALBorder();
		if(iSM < 10)
    {
			if(iphi >= nborder && iphi < 24-nborder) okrow =kTRUE; 
    }
		else
    {
      if(fEMCALGeoName.Contains("12SM")) // 1/3 SM
      {
        if(iphi >= nborder && iphi < 8-nborder) okrow =kTRUE; 
      }
      else // 1/2 SM
      {
        if(iphi >= nborder && iphi <12-nborder) okrow =kTRUE; 
      }
		}
		
		//Check columns/eta
		if(!fEMCALRecoUtils->IsEMCALNoBorderAtEta0())
    {
			if(ieta  > nborder && ieta < 48-nborder) okcol =kTRUE; 
		}
		else
    {
			if(iSM%2==0)
      {
				if(ieta >= nborder)     okcol = kTRUE;	
			}
			else 
      {
				if(ieta <  48-nborder)  okcol = kTRUE;	
			}
		}//eta 0 not checked
    
    AliDebug(1,Form("EMCAL Cluster in %d cells fiducial volume: ieta %d, iphi %d, SM %d ? ok row %d, ok column %d",
                    nborder, ieta, iphi, iSM,okrow,okcol));

	}//EMCAL
	else if ( cells->GetType() == AliVCaloCells::kPHOSCell )
  {
		Int_t relId[4];
		Int_t irow = -1, icol = -1;
		fPHOSGeo->AbsToRelNumbering(absIdMax,relId);
		irow = relId[2];
		icol = relId[3];
		//imod = relId[0]-1;
	
    if(irow >= fNCellsFromPHOSBorder && irow < 64-fNCellsFromPHOSBorder) okrow =kTRUE;
		if(icol >= fNCellsFromPHOSBorder && icol < 56-fNCellsFromPHOSBorder) okcol =kTRUE; 

    AliDebug(1,Form("PHOS Cluster in %d cells fiducial volume: ieta %d, iphi %d, SM %d ? ok row %d, ok column %d",
                    fNCellsFromPHOSBorder, icol, irow, relId[0]-1,okrow,okcol));
	}//PHOS
	
	if (okcol && okrow) return kTRUE; 
	else                return kFALSE;
	
}	

//__________________________________________________________________________________________________________
Bool_t AliCalorimeterUtils::ClusterContainsBadChannel(Int_t calorimeter, UShort_t* cellList, Int_t nCells)
{
	// Check that in the cluster cells, there is no bad channel of those stored 
	// in fEMCALBadChannelMap or fPHOSBadChannelMap
	
	if (!fRemoveBadChannels) return kFALSE;
	//printf("fEMCALBadChannelMap %p, fPHOSBadChannelMap %p \n",fEMCALBadChannelMap,fPHOSBadChannelMap);
	if(calorimeter == kEMCAL && !fEMCALRecoUtils->GetEMCALChannelStatusMap(0)) return kFALSE;
	if(calorimeter == kPHOS  && !fPHOSBadChannelMap)  return kFALSE;
  
	Int_t icol = -1;
	Int_t irow = -1;
	Int_t imod = -1;
	for(Int_t iCell = 0; iCell<nCells; iCell++){
    
		//Get the column and row
		if(calorimeter == kEMCAL){
      return fEMCALRecoUtils->ClusterContainsBadChannel((AliEMCALGeometry*)fEMCALGeo,cellList,nCells);
		}
		else if(calorimeter==kPHOS){
			Int_t    relId[4];
			fPHOSGeo->AbsToRelNumbering(cellList[iCell],relId);
			irow = relId[2];
			icol = relId[3];
			imod = relId[0]-1;
			if(fPHOSBadChannelMap->GetEntries() <= imod)continue;
      //printf("PHOS bad channels imod %d, icol %d, irow %d\n",imod, irow, icol);
			if(GetPHOSChannelStatus(imod, irow, icol)) return kTRUE;
		}
		else return kFALSE;
		
	}// cell cluster loop
  
	return kFALSE;
  
}

//_______________________________________________________________
void AliCalorimeterUtils::CorrectClusterEnergy(AliVCluster *clus)
{
  // Correct cluster energy non linearity
  
  clus->SetE(fEMCALRecoUtils->CorrectClusterEnergyLinearity(clus));

}

//________________________________________________________________________________________
Int_t  AliCalorimeterUtils::GetMaxEnergyCell(AliVCaloCells* cells, const AliVCluster* clu, 
                                             Float_t & clusterFraction) const 
{
  
  //For a given CaloCluster gets the absId of the cell 
  //with maximum energy deposit.
  
  if( !clu || !cells ){
    AliInfo("Cluster or cells pointer is null!");
    return -1;
  }
  
  Double_t eMax        =-1.;
  Double_t eTot        = 0.;
  Double_t eCell       =-1.;
  Float_t  fraction    = 1.;
  Float_t  recalFactor = 1.;
  Int_t    cellAbsId   =-1 , absId =-1 ;
  Int_t    iSupMod     =-1 , ieta  =-1 , iphi = -1, iRCU = -1;
  
  Int_t             calo = kEMCAL;
  if(clu->IsPHOS()) calo = kPHOS ;
  
  for (Int_t iDig=0; iDig< clu->GetNCells(); iDig++) {
    
    cellAbsId = clu->GetCellAbsId(iDig);
    
    fraction  = clu->GetCellAmplitudeFraction(iDig);
    if(fraction < 1e-4) fraction = 1.; // in case unfolding is off
    
    iSupMod = GetModuleNumberCellIndexes(cellAbsId, calo, ieta, iphi, iRCU);
    
    if(IsRecalibrationOn()) {
      if(calo==kEMCAL) recalFactor = GetEMCALChannelRecalibrationFactor(iSupMod,ieta,iphi);
      else             recalFactor = GetPHOSChannelRecalibrationFactor (iSupMod,iphi,ieta);
    }
    
    eCell  = cells->GetCellAmplitude(cellAbsId)*fraction*recalFactor;
    
    if(eCell > eMax)  { 
      eMax  = eCell; 
      absId = cellAbsId;
    }
    
    eTot+=eCell;
    
  }// cell loop
  
  if(eTot > 0.1)
    clusterFraction = (eTot-eMax)/eTot; //Do not use cluster energy in case it was corrected for non linearity.
  else 
    clusterFraction =1.;
  
  return absId;
  
}

//___________________________________________________________________________________
AliVTrack * AliCalorimeterUtils::GetMatchedTrack(AliVCluster* cluster,
                                                 AliVEvent* event, Int_t index) const
{
  // Get the matched track given its index, usually just the first match
  // Since it is different for ESDs and AODs here it is a wrap method to do it
  
  AliVTrack *track = 0;
  
  // EMCAL case only when matching is recalculated
  if(cluster->IsEMCAL() && IsRecalculationOfClusterTrackMatchingOn())
  {
    Int_t trackIndex = fEMCALRecoUtils->GetMatchedTrackIndex(cluster->GetID());
    //printf("track index %d, cluster ID %d \n ",trackIndex,cluster->GetID());
    
    if(trackIndex < 0 )
    { 
      AliInfo(Form("Wrong track index %d, from recalculation", trackIndex));
    }
    else 
    {
      track = dynamic_cast<AliVTrack*> (event->GetTrack(trackIndex));
    }

    return track ;
    
  }   
  
  // Normal case, get info from ESD or AOD
  // ESDs
  if(!strcmp("AliESDCaloCluster",Form("%s",cluster->ClassName())))
  {
    Int_t iESDtrack = cluster->GetTrackMatchedIndex();
    
    if(iESDtrack < 0 )
    { 
      AliWarning(Form("Wrong track index %d", index));
      return 0x0;
    }
    
    track = dynamic_cast<AliVTrack*> (event->GetTrack(iESDtrack));
    
  }
  else // AODs
  {
    if(cluster->GetNTracksMatched() > 0 )
      track = dynamic_cast<AliVTrack*>(cluster->GetTrackMatched(index));
  }
  
  return track ;
  
}
//______________________________________________________________________________________________
Float_t AliCalorimeterUtils::GetMCECellClusFracCorrection(Float_t eCell, Float_t eCluster) const
{
  // Correction factor for cell energy in cluster to temptatively match Data and MC
  if( eCluster <= 0 || eCluster < eCell )
  {
    AliWarning(Form("Bad values eCell=%f, eCluster %f",eCell,eCluster));
    return 1;
  }
  
  Float_t frac       = eCell / eCluster;
  
  Float_t correction = fMCECellClusFracCorrParam[0] +
                       TMath::Exp( frac*fMCECellClusFracCorrParam[2]+fMCECellClusFracCorrParam[1] ) +
                       fMCECellClusFracCorrParam[3]/TMath::Sqrt(frac);
  
//  printf("AliCalorimeterUtils::GetMCECellClusFracCorrection(eCell=%f, eCluster %f, frac %f) = %f\n",eCell, eCluster, frac, correction);
//  printf("\t %2.2f + TMath::Exp( %2.3f*%2.2f + %2.2f ) + %2.2f/TMath::Sqrt(%2.3f)) = %f\n",
//         fMCECellClusFracCorrParam[0],frac,fMCECellClusFracCorrParam[2],fMCECellClusFracCorrParam[1],fMCECellClusFracCorrParam[3], frac, correction);

  return correction;
}

//_____________________________________________________________________________________________________
Int_t AliCalorimeterUtils::GetModuleNumber(AliAODPWG4Particle * particle, AliVEvent * inputEvent) const
{
	//Get the EMCAL/PHOS module number that corresponds to this particle
	
	Int_t absId = -1;
	if(particle->GetDetectorTag()==kEMCAL)
  {
		fEMCALGeo->GetAbsCellIdFromEtaPhi(particle->Eta(),particle->Phi(), absId);
    
    AliDebug(2,Form("EMCAL: cluster eta %f, phi %f, absid %d, SuperModule %d",
                    particle->Eta(), particle->Phi()*TMath::RadToDeg(),absId, fEMCALGeo->GetSuperModuleNumber(absId)));
    
		return fEMCALGeo->GetSuperModuleNumber(absId) ;
	}//EMCAL
	else if(particle->GetDetectorTag()==kPHOS)
  {
    // In case we use the MC reader, the input are TParticles,
    // in this case use the corresponing method in PHOS Geometry to get the particle.
    if(strcmp(inputEvent->ClassName(), "AliMCEvent") == 0 )
    {
      Int_t mod =-1;
      Double_t z = 0., x=0.;
      TParticle* primary = 0x0;
      AliStack * stack = ((AliMCEvent*)inputEvent)->Stack();
      if(stack)
      {
        primary = stack->Particle(particle->GetCaloLabel(0));
      }
      else
      {
        AliFatal("Stack not available, stop!");
      }
      
      if(primary)
      {
        fPHOSGeo->ImpactOnEmc(primary,mod,z,x) ;
      }
      else
      {
        AliFatal("Primary not available, stop!");
      }
      return mod;
    }
    // Input are ESDs or AODs, get the PHOS module number like this.
    else
    {
      //FIXME
      //AliVCluster *cluster = inputEvent->GetCaloCluster(particle->GetCaloLabel(0));
      //return GetModuleNumber(cluster);
      //MEFIX
      return -1;
    }
	}//PHOS
	
	return -1;
}

//_____________________________________________________________________
Int_t AliCalorimeterUtils::GetModuleNumber(AliVCluster * cluster) const
{
	//Get the EMCAL/PHOS module number that corresponds to this cluster
  
  if(!cluster)
  {
    AliDebug(1,"AliCalorimeterUtils::GetModuleNumber() - NUL Cluster, please check!!!");
    
    return -1;
  }
  
  if ( cluster->GetNCells() <= 0 ) return -1;
  
	Int_t absId = cluster->GetCellAbsId(0);
  
  if ( absId < 0 ) return -1;
  
	if( cluster->IsEMCAL() )
  {
		AliDebug(2,Form("EMCAL absid %d, SuperModule %d",absId, fEMCALGeo->GetSuperModuleNumber(absId)));
    
		return fEMCALGeo->GetSuperModuleNumber(absId) ;
	}//EMCAL
	else if ( cluster->IsPHOS() )
  {
		Int_t    relId[4];
    fPHOSGeo->AbsToRelNumbering(absId,relId);
    
    AliDebug(2,Form("PHOS absid %d Module %d",absId, relId[0]-1));
    
    return relId[0]-1;
  }//PHOS
	
	return -1;
}

//___________________________________________________________________________________________________
Int_t AliCalorimeterUtils::GetModuleNumberCellIndexes(Int_t absId, Int_t calo,
                                                      Int_t & icol, Int_t & irow, Int_t & iRCU) const
{
	//Get the EMCAL/PHOS module, columns, row and RCU number that corresponds to this absId
  
	Int_t imod = -1;
  
	if ( absId < 0) return -1 ;
  
  if ( calo == kEMCAL )
  {
    Int_t iTower = -1, iIphi = -1, iIeta = -1;
    fEMCALGeo->GetCellIndex(absId,imod,iTower,iIphi,iIeta);
    fEMCALGeo->GetCellPhiEtaIndexInSModule(imod,iTower,iIphi, iIeta,irow,icol);
    
    if(imod < 0 || irow < 0 || icol < 0 )
    {
      AliFatal(Form("Negative value for super module: %d, or cell icol: %d, or cell irow: %d, check EMCAL geometry name",imod,icol,irow));
    }
    
    //RCU0
    if(imod < 10 )
    {
      if      (0<=irow&&irow<8)                       iRCU=0; // first cable row
      else if (8<=irow&&irow<16 &&  0<=icol&&icol<24) iRCU=0; // first half;
      //second cable row
      //RCU1
      else if (8<=irow&&irow<16 && 24<=icol&&icol<48) iRCU=1; // second half;
      //second cable row
      else if (16<=irow&&irow<24)                     iRCU=1; // third cable row
      
      if (imod%2==1) iRCU = 1 - iRCU; // swap for odd=C side, to allow us to cable both sides the same
    }
    else
    {
      // Last 2 SM have one single SRU, just assign RCU 0
      iRCU = 0 ;
    }
    
    if (iRCU < 0)
    {
      AliFatal(Form("Wrong EMCAL RCU number = %d", iRCU));
    }
    
    return imod ;
    
  }//EMCAL
  else //PHOS
  {
    Int_t    relId[4];
    fPHOSGeo->AbsToRelNumbering(absId,relId);
    irow = relId[2];
    icol = relId[3];
    imod = relId[0]-1;
    iRCU= (Int_t)(relId[2]-1)/16 ;
    //Int_t iBranch= (Int_t)(relid[3]-1)/28 ; //0 to 1
    if (iRCU >= 4)
    {
      AliFatal(Form("Wrong PHOS RCU number = %d", iRCU));
    }
    return imod;
  }//PHOS
	
	return -1;
}

//___________________________________________________________________________________________
Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells) 
{
  // Find local maxima in cluster
  
  const Int_t   nc = cluster->GetNCells();
  Int_t   absIdList[nc]; 
  Float_t maxEList[nc]; 
  
  Int_t nMax = GetNumberOfLocalMaxima(cluster, cells, absIdList, maxEList);
  
  return nMax;
  
}

//___________________________________________________________________________________________
Int_t AliCalorimeterUtils::GetNumberOfLocalMaxima(AliVCluster* cluster, AliVCaloCells* cells,
                                                  Int_t *absIdList,     Float_t *maxEList) 
{
  // Find local maxima in cluster
  
  Int_t iDigitN = 0 ;
  Int_t iDigit  = 0 ;
  Int_t absId1 = -1 ;
  Int_t absId2 = -1 ;
  const Int_t nCells = cluster->GetNCells();
  
  Float_t eCluster =  RecalibrateClusterEnergy(cluster, cells);// recalculate cluster energy, avoid non lin correction.

  Float_t simuTotWeight = 0;
  if(fMCECellClusFracCorrOn)
  {
    simuTotWeight =  RecalibrateClusterEnergyWeightCell(cluster, cells,eCluster);// same but apply a weight
    simuTotWeight/= eCluster;
  }
  
  Int_t calorimeter = kEMCAL;
  if(!cluster->IsEMCAL()) calorimeter = kPHOS;
  
  //printf("cluster : ncells %d \n",nCells);
  
  Float_t emax  = 0;
  Int_t   idmax =-1;
  for(iDigit = 0; iDigit < nCells ; iDigit++)
  {
    absIdList[iDigit] = cluster->GetCellsAbsId()[iDigit]  ; 
    Float_t en = cells->GetCellAmplitude(absIdList[iDigit]);
    RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);
    
    if(fMCECellClusFracCorrOn)
      en*=GetMCECellClusFracCorrection(en,eCluster)/simuTotWeight;
    
    if( en > emax )
    {
      emax  = en ;
      idmax = absIdList[iDigit] ;
    }
    //Int_t icol = -1, irow = -1, iRCU = -1;
    //Int_t sm = GetModuleNumberCellIndexes(absIdList[iDigit], calorimeter, icol, irow, iRCU) ;
    //printf("\t cell %d, id %d, sm %d, col %d, row %d, e %f\n", iDigit, absIdList[iDigit], sm, icol, irow, en );
  }
  
  for(iDigit = 0 ; iDigit < nCells; iDigit++) 
  {   
    if(absIdList[iDigit]>=0) 
    {
      absId1 = cluster->GetCellsAbsId()[iDigit];
      
      Float_t en1 = cells->GetCellAmplitude(absId1);
      RecalibrateCellAmplitude(en1,calorimeter,absId1);  
      
      if(fMCECellClusFracCorrOn)
        en1*=GetMCECellClusFracCorrection(en1,eCluster)/simuTotWeight;
      
      //printf("%d : absIDi %d, E %f\n",iDigit, absId1,en1);
      
      for(iDigitN = 0; iDigitN < nCells; iDigitN++) 
      {	
        absId2 = cluster->GetCellsAbsId()[iDigitN] ;
        
        if(absId2==-1 || absId2==absId1) continue;
        
        //printf("\t %d : absIDj %d\n",iDigitN, absId2);
        
        Float_t en2 = cells->GetCellAmplitude(absId2);
        RecalibrateCellAmplitude(en2,calorimeter,absId2);
        
        if(fMCECellClusFracCorrOn)
          en2*=GetMCECellClusFracCorrection(en2,eCluster)/simuTotWeight;

        //printf("\t %d : absIDj %d, E %f\n",iDigitN, absId2,en2);
        
        if ( AreNeighbours(calorimeter, absId1, absId2) ) 
        {
          // printf("\t \t Neighbours \n");
          if (en1 > en2 ) 
          {    
            absIdList[iDigitN] = -1 ;
            //printf("\t \t indexN %d not local max\n",iDigitN);
            // but may be digit too is not local max ?
            if(en1 < en2 + fLocMaxCutEDiff) {
              //printf("\t \t index %d not local max cause locMaxCutEDiff\n",iDigit);
              absIdList[iDigit] = -1 ;
            }
          }
          else 
          {
            absIdList[iDigit] = -1 ;
            //printf("\t \t index %d not local max\n",iDigitN);
            // but may be digitN too is not local max ?
            if(en1 > en2 - fLocMaxCutEDiff) 
            {
              absIdList[iDigitN] = -1 ; 
              //printf("\t \t indexN %d not local max cause locMaxCutEDiff\n",iDigit);
            }
          } 
        } // if Are neighbours
        //else printf("\t \t NOT Neighbours \n");
      } // while digitN
    } // slot not empty
  } // while digit
  
  iDigitN = 0 ;
  for(iDigit = 0; iDigit < nCells; iDigit++) 
  { 
    if(absIdList[iDigit]>=0 )
    {
      absIdList[iDigitN] = absIdList[iDigit] ;
      
      Float_t en = cells->GetCellAmplitude(absIdList[iDigit]);
      RecalibrateCellAmplitude(en,calorimeter,absIdList[iDigit]);
      
      if(fMCECellClusFracCorrOn)
        en*=GetMCECellClusFracCorrection(en,eCluster)/simuTotWeight;
      
      if(en < fLocMaxCutE) continue; // Maxima only with seed energy at least
      
      maxEList[iDigitN] = en ;
      
      //printf("Local max %d, id %d, en %f\n", iDigit,absIdList[iDigitN],en);
      iDigitN++ ; 
    }
  }
  
  if(iDigitN == 0)
  {
    AliDebug(1,Form("No local maxima found, assign highest energy cell as maxima, id %d, en cell %2.2f, en cluster %2.2f",
                    idmax,emax,cluster->E()));
    iDigitN      = 1     ;
    maxEList[0]  = emax  ;
    absIdList[0] = idmax ; 
  }
  
  
  AliDebug(1,Form("In cluster E %2.2f (wth non lin. %2.2f), M02 %2.2f, M20 %2.2f, N maxima %d",
                  cluster->E(),eCluster, cluster->GetM02(),cluster->GetM20(), iDigitN));
  
//  if(fDebug > 1) for(Int_t imax = 0; imax < iDigitN; imax++)
//  {
//    printf(" \t i %d, absId %d, Ecell %f\n",imax,absIdList[imax],maxEList[imax]);
//  }
  
  return iDigitN ;
  
}

//____________________________________
TString AliCalorimeterUtils::GetPass()
{
  // Get passx from filename.
    
  if (!AliAnalysisManager::GetAnalysisManager()->GetTree()) 
  {
    AliError("AliCalorimeterUtils::GetPass() - Pointer to tree = 0, returning null");
    return TString("");
  }
  
  if (!AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()) 
  {
    AliError("AliCalorimeterUtils::GetPass() - Null pointer input file, returning null");
    return TString("");
  }
  
  TString pass(AliAnalysisManager::GetAnalysisManager()->GetTree()->GetCurrentFile()->GetName());
  if      (pass.Contains("ass1")) return TString("pass1");
  else if (pass.Contains("ass2")) return TString("pass2");
  else if (pass.Contains("ass3")) return TString("pass3");
  else if (pass.Contains("ass4")) return TString("pass4");
  else if (pass.Contains("ass5")) return TString("pass5");
  else if (pass.Contains("LHC11c") && pass.Contains("spc_calo") ) return TString("spc_calo");
  else if (pass.Contains("calo") || pass.Contains("high_lumi"))
  {
    AliInfo("Path contains <calo> or <high-lumi>, set as <pass1>");
    return TString("pass1");
  }

  // No condition fullfilled, give a default value
  AliInfo("Pass number string not found");
  return TString("");            
  
}

//________________________________________
void AliCalorimeterUtils::InitParameters()
{
  //Initialize the parameters of the analysis.
  
  fEMCALGeoName         = "";
  fPHOSGeoName          = "";
  
  fEMCALGeoMatrixSet    = kFALSE;
  fPHOSGeoMatrixSet     = kFALSE;
  
  fRemoveBadChannels    = kFALSE;
  
  fNCellsFromPHOSBorder = 0;
  
  fLocMaxCutE           = 0.1 ;
  fLocMaxCutEDiff       = 0.0 ;

  //  fMaskCellColumns = new Int_t[fNMaskCellColumns];
  //  fMaskCellColumns[0] = 6 ;  fMaskCellColumns[1] = 7 ;  fMaskCellColumns[2] = 8 ; 
  //  fMaskCellColumns[3] = 35;  fMaskCellColumns[4] = 36;  fMaskCellColumns[5] = 37; 
  //  fMaskCellColumns[6] = 12+AliEMCALGeoParams::fgkEMCALCols; fMaskCellColumns[7] = 13+AliEMCALGeoParams::fgkEMCALCols;
  //  fMaskCellColumns[8] = 40+AliEMCALGeoParams::fgkEMCALCols; fMaskCellColumns[9] = 41+AliEMCALGeoParams::fgkEMCALCols; 
  //  fMaskCellColumns[10]= 42+AliEMCALGeoParams::fgkEMCALCols; 
  
  fOADBSet      = kFALSE;
  fOADBForEMCAL = kTRUE ;            
  fOADBForPHOS  = kFALSE;
  
  fOADBFilePathEMCAL = "$ALICE_ROOT/OADB/EMCAL" ;          
  fOADBFilePathPHOS  = "$ALICE_ROOT/OADB/PHOS"  ;     
  
  fImportGeometryFromFile = kTRUE;
  fImportGeometryFilePath = "";
 
  fNSuperModulesUsed = 22;
  
  fMCECellClusFracCorrParam[0] = 0.78;
  fMCECellClusFracCorrParam[1] =-1.8;
  fMCECellClusFracCorrParam[2] =-6.3;
  fMCECellClusFracCorrParam[3] = 0.014;
  
}


//_____________________________________________________
void AliCalorimeterUtils::InitPHOSBadChannelStatusMap()
{
  //Init PHOS bad channels map
  AliDebug(1,"Init bad channel map");
  
  //In order to avoid rewriting the same histograms
  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE);
  
  fPHOSBadChannelMap = new TObjArray(5);	
  for (int i = 0; i < 5; i++)fPHOSBadChannelMap->Add(new TH2I(Form("PHOS_BadMap_mod%d",i),Form("PHOS_BadMap_mod%d",i), 64, 0, 64, 56, 0, 56));
  
  fPHOSBadChannelMap->SetOwner(kTRUE);
  fPHOSBadChannelMap->Compress();
  
  //In order to avoid rewriting the same histograms
  TH1::AddDirectory(oldStatus);		
}

//______________________________________________________
void AliCalorimeterUtils::InitPHOSRecalibrationFactors()
{
	//Init EMCAL recalibration factors
  AliDebug(1,"Init recalibration map");

  //In order to avoid rewriting the same histograms
	Bool_t oldStatus = TH1::AddDirectoryStatus();
	TH1::AddDirectory(kFALSE);
  
	fPHOSRecalibrationFactors = new TObjArray(5);
	for (int i = 0; i < 5; i++)fPHOSRecalibrationFactors->Add(new TH2F(Form("PHOSRecalFactors_Mod%d",i),Form("PHOSRecalFactors_Mod%d",i), 64, 0, 64, 56, 0, 56));
	//Init the histograms with 1
	for (Int_t m = 0; m < 5; m++) {
		for (Int_t i = 0; i < 56; i++) {
			for (Int_t j = 0; j < 64; j++) {
				SetPHOSChannelRecalibrationFactor(m,j,i,1.);
			}
		}
	}
	fPHOSRecalibrationFactors->SetOwner(kTRUE);
	fPHOSRecalibrationFactors->Compress();
	
	//In order to avoid rewriting the same histograms
	TH1::AddDirectory(oldStatus);		
}


//__________________________________________________________
void AliCalorimeterUtils::InitEMCALGeometry(Int_t runnumber)
{
  //Initialize EMCAL geometry if it did not exist previously
  
  if (fEMCALGeo) return;
  
  AliDebug(1,Form(" for run=%d",runnumber));
  
  if(fEMCALGeoName=="")
  {
    if     (runnumber <  140000 &&
            runnumber >= 100000)   fEMCALGeoName = "EMCAL_FIRSTYEARV1";
    else if(runnumber >= 140000 &&
            runnumber <  171000)   fEMCALGeoName = "EMCAL_COMPLETEV1";
    else                           fEMCALGeoName = "EMCAL_COMPLETE12SMV1";
    AliInfo(Form("Set EMCAL geometry name to <%s> for run %d",fEMCALGeoName.Data(),runnumber));
  }
  
  fEMCALGeo = AliEMCALGeometry::GetInstance(fEMCALGeoName);
  
  // Init geometry, I do not like much to do it like this ...
  if(fImportGeometryFromFile && !gGeoManager)
  {
    if(fImportGeometryFilePath=="") // If not specified, set location depending on run number
    {
      // "$ALICE_ROOT/EVE/alice-data/default_geo.root"
      if     (runnumber <  140000 &&
              runnumber >= 100000) fImportGeometryFilePath = "$ALICE_ROOT/OADB/EMCAL/geometry_2010.root";
      if     (runnumber >= 140000 &&
              runnumber <  171000) fImportGeometryFilePath = "$ALICE_ROOT/OADB/EMCAL/geometry_2011.root";
      else                         fImportGeometryFilePath = "$ALICE_ROOT/OADB/EMCAL/geometry_2012.root"; // 2012-2013
      
    }
    
    AliInfo(Form("Import %s",fImportGeometryFilePath.Data()));
    TGeoManager::Import(fImportGeometryFilePath) ; // default need file "geometry.root" in local dir!!!!
  }
  else if (!gGeoManager) AliInfo("Careful!, gGeoManager not loaded, load misalign matrices");
		
  
}

//_________________________________________________________
void AliCalorimeterUtils::InitPHOSGeometry(Int_t runnumber)
{
	//Initialize PHOS geometry if it did not exist previously
  
  if (fPHOSGeo) return;
  
  AliDebug(1,Form(" for run=%d",runnumber));
  
  if(fPHOSGeoName=="") fPHOSGeoName = "PHOSgeo";
  
  fPHOSGeo = new AliPHOSGeoUtils(fPHOSGeoName);
  
  //if (!gGeoManager) AliInfo("Careful!, gGeoManager not loaded, load misalign matrices");
	
}

//_______________________________________________________________________________________________
Bool_t AliCalorimeterUtils::IsMCParticleInCalorimeterAcceptance(Int_t calo, TParticle* particle)
{
  // Check that a MC ESD is in the calorimeter acceptance
  
  if(!particle || (calo!=kEMCAL && calo!=kPHOS)) return kFALSE ;
    
  if( (!IsPHOSGeoMatrixSet () && calo == kPHOS ) ||
      (!IsEMCALGeoMatrixSet() && calo == kEMCAL)   )
  {
    AliFatal(Form("Careful Geo Matrix for calo <%d> is not set, use AliFidutialCut instead",calo));
    return kFALSE ;
  }

  if(calo == kPHOS )
  {
    Int_t mod = 0 ;
    Double_t x = 0, z = 0 ;
    return GetPHOSGeometry()->ImpactOnEmc( particle, mod, z, x);
  }
  else if(calo == kEMCAL)
  {
    Int_t absID = 0 ;
    Bool_t ok = GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(particle->Eta(),particle->Phi(),absID);
    if(ok)
    {
      Int_t icol = -1, irow = -1, iRCU = -1;
      Int_t nModule = GetModuleNumberCellIndexes(absID,calo, icol, irow, iRCU);
      Int_t status  = GetEMCALChannelStatus(nModule,icol,irow);
      if(status > 0) ok = kFALSE;
    }
    return ok ;
  }
  
  return kFALSE ;
}

//______________________________________________________________________________________________________
Bool_t AliCalorimeterUtils::IsMCParticleInCalorimeterAcceptance(Int_t calo, AliAODMCParticle* particle)
{
  // Check that a MC AOD is in the calorimeter acceptance
  
  if(!particle || (calo!=kEMCAL && calo!=kPHOS)) return kFALSE ;
  
  if( (!IsPHOSGeoMatrixSet () && calo == kPHOS ) ||
      (!IsEMCALGeoMatrixSet() && calo == kEMCAL)   )
  {
    AliFatal(Form("Careful Geo Matrix for calo <%d> is not set, use AliFidutialCut instead",calo));
    return kFALSE ;
  }

  Float_t phi = particle->Phi();
  if(phi < 0) phi+=TMath::TwoPi();
  
  if(calo == kPHOS )
  {
    Int_t mod = 0 ;
    Double_t x = 0, z = 0 ;
    Double_t vtx[]={ particle->Xv(), particle->Yv(), particle->Zv() } ;
    return GetPHOSGeometry()->ImpactOnEmc(vtx, particle->Theta(), phi, mod, z, x) ;
  }
  else if(calo == kEMCAL)
  {
    Int_t absID = 0 ;
    Bool_t ok = GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(particle->Eta(),phi,absID);
    if(ok)
    {
      Int_t icol = -1, irow = -1, iRCU = -1;
      Int_t nModule = GetModuleNumberCellIndexes(absID,calo, icol, irow, iRCU);
      Int_t status  = GetEMCALChannelStatus(nModule,icol,irow);
      if(status > 0) ok = kFALSE;
    }
    return ok ;
  }
  
  return kFALSE ;
}

//_____________________________________________________________________________________________________
Bool_t AliCalorimeterUtils::IsMCParticleInCalorimeterAcceptance(Int_t calo, Float_t eta, Float_t theta,
                                                                Float_t phiOrg, Int_t & absID)
{
  // Check that a TLorentzVector is in the calorimeter acceptance, give the cell number where it hit
  
  if(calo!=kEMCAL && calo!=kPHOS) return kFALSE ;
  
  if( (!IsPHOSGeoMatrixSet () && calo == kPHOS ) ||
      (!IsEMCALGeoMatrixSet() && calo == kEMCAL)   )
  {
    AliFatal(Form("Careful Geo Matrix for calo <%d> is not set, use AliFidutialCut instead",calo));
    return kFALSE ;
  }

  Float_t phi = phiOrg;
  if(phi < 0) phi+=TMath::TwoPi();

  if(calo == kPHOS )
  {
    Int_t mod = 0 ;
    Double_t x = 0, z = 0 ;
    Double_t vtx[]={0,0,0} ;
    return GetPHOSGeometry()->ImpactOnEmc(vtx, theta, phi, mod, z, x) ;
  }
  else if(calo == kEMCAL)
  {
    Bool_t ok = GetEMCALGeometry()->GetAbsCellIdFromEtaPhi(eta,phi,absID);
    if(ok)
    {
      Int_t icol = -1, irow = -1, iRCU = -1;
      Int_t nModule = GetModuleNumberCellIndexes(absID,calo, icol, irow, iRCU);
      Int_t status  = GetEMCALChannelStatus(nModule,icol,irow);
      if(status > 0) ok = kFALSE;
    }
    return ok ;
  }
  
  return kFALSE ;
}

//_______________________________________________________________________
Bool_t AliCalorimeterUtils::MaskFrameCluster(Int_t iSM, Int_t ieta) const
{
  //Check if cell is in one of the regions where we have significant amount 
  //of material in front. Only EMCAL
  
  Int_t icol = ieta;
  if(iSM%2) icol+=48; // Impair SM, shift index [0-47] to [48-96]
  
  if (fNMaskCellColumns && fMaskCellColumns) 
  {
    for (Int_t imask = 0; imask < fNMaskCellColumns; imask++) 
    {
      if(icol==fMaskCellColumns[imask]) return kTRUE;
    }
  }
  
  return kFALSE;
  
}

//_________________________________________________________
void AliCalorimeterUtils::Print(const Option_t * opt) const
{
  
  //Print some relevant parameters set for the analysis
  if(! opt)
    return;
  
  printf("***** Print: %s %s ******\n", GetName(), GetTitle() ) ;
  printf("Remove Clusters with bad channels? %d\n",fRemoveBadChannels);
  printf("Remove Clusters with max cell at less than %d cells from EMCAL border and %d cells from PHOS border\n",
         fEMCALRecoUtils->GetNumberOfCellsFromEMCALBorder(), fNCellsFromPHOSBorder);
  if(fEMCALRecoUtils->IsEMCALNoBorderAtEta0()) printf("Do not remove EMCAL clusters at Eta = 0\n");
  printf("Recalibrate Clusters? %d, run by run  %d\n",fRecalibration,fRunDependentCorrection);
  printf("Recalculate Clusters Position? %d\n",fRecalculatePosition);
  printf("Recalculate Clusters Energy? %d\n",fCorrectELinearity);
  printf("Matching criteria: dR < %2.2f[cm], dZ < %2.2f[cm]\n",fCutR,fCutZ);
  
  printf("Loc. Max. E > %2.2f\n",       fLocMaxCutE);
  printf("Loc. Max. E Diff > %2.2f\n",  fLocMaxCutEDiff);
  
  printf("    \n") ;
} 

//_____________________________________________________________________________________________
void AliCalorimeterUtils::RecalibrateCellAmplitude(Float_t & amp, Int_t calo, Int_t id) const
{
  //Recaculate cell energy if recalibration factor
  
  Int_t icol     = -1; Int_t irow     = -1; Int_t iRCU     = -1;
  Int_t nModule  = GetModuleNumberCellIndexes(id,calo, icol, irow, iRCU);
  
  if (IsRecalibrationOn()) 
  {
    if(calo == kPHOS)
    {
      amp *= GetPHOSChannelRecalibrationFactor(nModule,icol,irow);
    }
    else		                   
    {
      amp *= GetEMCALChannelRecalibrationFactor(nModule,icol,irow);
    }
  }
}

//____________________________________________________________________________________________________
void AliCalorimeterUtils::RecalibrateCellTime(Double_t & time, Int_t calo, Int_t id, Int_t bc) const
{
  // Recalculate time if time recalibration available for EMCAL
  // not ready for PHOS
  
  if(calo == kEMCAL && GetEMCALRecoUtils()->IsTimeRecalibrationOn()) 
  {
    GetEMCALRecoUtils()->RecalibrateCellTime(id,bc,time);
  }
  
}

//__________________________________________________________________________
Float_t AliCalorimeterUtils::RecalibrateClusterEnergy(AliVCluster * cluster, 
                                                      AliVCaloCells * cells)
{
	// Recalibrate the cluster energy, considering the recalibration map and the energy of the cells that compose the cluster.
  
  //Initialize some used variables
	Float_t frac  = 0., energy = 0.;  
  
	if(cells) 
  {
    //Get the cluster number of cells and list of absId, check what kind of cluster do we have.
    
    UShort_t * index    = cluster->GetCellsAbsId() ;
    Double_t * fraction = cluster->GetCellsAmplitudeFraction() ;
    
    Int_t ncells     = cluster->GetNCells();	
    
    Int_t calo = kEMCAL;
    if(cluster->IsPHOS()) calo = kPHOS ;
    
    //Loop on the cells, get the cell amplitude and recalibration factor, multiply and and to the new energy
    for(Int_t icell = 0; icell < ncells; icell++){
      
      Int_t absId = index[icell];
      
      frac =  fraction[icell];
      if(frac < 1e-3) frac = 1; //in case of EMCAL, this is set as 0, not used.
      
      Float_t amp = cells->GetCellAmplitude(absId);
      RecalibrateCellAmplitude(amp,calo, absId);
      
      AliDebug(2,Form("Recalibrate cell: calo <%d>, cell fraction %f, cell energy %f",
                      calo,frac,cells->GetCellAmplitude(absId)));
      
      energy += amp*frac;
    }
    
    AliDebug(1,Form("Energy before %f, after %f",cluster->E(),energy));
    
	}// cells available
  else
  {
    AliFatal("Cells pointer does not exist!");
  }
  
	return energy;
}

//_______________________________________________________________________________________________________
Float_t AliCalorimeterUtils::RecalibrateClusterEnergyWeightCell(AliVCluster * cluster,
                                                                AliVCaloCells * cells, Float_t energyOrg)
{
	// Recalibrate the cluster energy, considering the recalibration map and the energy of the cells that compose the cluster.
  // Also consider reweighting of cells energy
  
  //Initialize some used variables
	Float_t frac  = 0., energy = 0.;
  
	if(cells)
  {
    //Get the cluster number of cells and list of absId, check what kind of cluster do we have.
    
    UShort_t * index    = cluster->GetCellsAbsId() ;
    Double_t * fraction = cluster->GetCellsAmplitudeFraction() ;
    
    Int_t ncells     = cluster->GetNCells();
    
    Int_t calo = kEMCAL;
    if(cluster->IsPHOS()) calo = kPHOS ;
    
    //Loop on the cells, get the cell amplitude and recalibration factor, multiply and and to the new energy
    for(Int_t icell = 0; icell < ncells; icell++)
    {
      Int_t absId = index[icell];
      
      frac =  fraction[icell];
      if(frac < 1e-3) frac = 1; //in case of EMCAL, this is set as 0, not used.
      
      Float_t amp = cells->GetCellAmplitude(absId);
      RecalibrateCellAmplitude(amp,calo, absId);
      
      amp*=GetMCECellClusFracCorrection(amp,energyOrg);
      
      AliDebug(2,Form("Recalibrate cell: calo <%d>, cell fraction %f, cell energy %f",
                      calo,frac,cells->GetCellAmplitude(absId)));
      
      energy += amp*frac;
    }
    
    AliDebug(1,Form("Energy before %f, after %f",cluster->E(),energy));
    
	}// cells available
  else
  {
    AliFatal("Cells pointer does not exist!");
  }
  
	return energy;
}


//__________________________________________________________________________________________
void AliCalorimeterUtils::RecalculateClusterPosition(AliVCaloCells* cells, AliVCluster* clu)
{
  
  //Recalculate EMCAL cluster position
  
  fEMCALRecoUtils->RecalculateClusterPosition((AliEMCALGeometry*)fEMCALGeo, cells,clu);
  
}

//________________________________________________________________________________
void AliCalorimeterUtils::RecalculateClusterTrackMatching(AliVEvent * event, 
                                                          TObjArray* clusterArray) 
{ 
  //Recalculate track matching
  
  if (fRecalculateMatching) 
  {
    fEMCALRecoUtils->FindMatches(event,clusterArray,fEMCALGeo)   ; 
    //AliESDEvent* esdevent = dynamic_cast<AliESDEvent*> (event);
    //if(esdevent){
    //  fEMCALRecoUtils->SetClusterMatchedToTrack(esdevent)  ;
    //  fEMCALRecoUtils->SetTracksMatchedToCluster(esdevent) ; 
    //}
  }
}

//___________________________________________________________________________
void AliCalorimeterUtils::SplitEnergy(Int_t absId1, Int_t absId2,
                                      AliVCluster* cluster,
                                      AliVCaloCells* cells,
                                      //Float_t & e1, Float_t & e2,
                                      AliAODCaloCluster* cluster1,
                                      AliAODCaloCluster* cluster2,
                                      Int_t nMax, Int_t eventNumber)
{
  
  // Split energy of cluster between the 2 local maxima, sum energy on 3x3, and if the 2 
  // maxima are too close and have common cells, split the energy between the 2
  
  TH2F* hClusterMap    = 0 ;
  TH2F* hClusterLocMax = 0 ;
  TH2F* hCluster1      = 0 ;
  TH2F* hCluster2      = 0 ;
  
  if(fPlotCluster)
  {
    hClusterMap    = new TH2F("hClusterMap","Cluster Map",48,0,48,24,0,24);
    hClusterLocMax = new TH2F("hClusterLocMax","Cluster 2 highest local maxima",48,0,48,24,0,24);
    hCluster1      = new TH2F("hCluster1","Cluster 1",48,0,48,24,0,24);
    hCluster2      = new TH2F("hCluster2","Cluster 2",48,0,48,24,0,24);
    hClusterMap    ->SetXTitle("column");
    hClusterMap    ->SetYTitle("row");
    hClusterLocMax ->SetXTitle("column");
    hClusterLocMax ->SetYTitle("row");
    hCluster1      ->SetXTitle("column");
    hCluster1      ->SetYTitle("row");
    hCluster2      ->SetXTitle("column");
    hCluster2      ->SetYTitle("row");
  }
  
  Int_t calorimeter = kEMCAL;
  if(cluster->IsPHOS())
  {
    calorimeter=kPHOS;
    AliWarning("Not supported for PHOS yet");
    return;
  }
  
  const Int_t ncells  = cluster->GetNCells();  
  Int_t absIdList[ncells]; 
  
  Float_t e1 = 0,  e2   = 0 ;
  Int_t icol = -1, irow = -1, iRCU = -1, sm = -1;  
  Float_t eCluster = 0;
  Float_t minCol = 100, minRow = 100, maxCol = -1, maxRow = -1; 
  for(Int_t iDigit  = 0; iDigit < ncells; iDigit++ ) 
  {
    absIdList[iDigit] = cluster->GetCellsAbsId()[iDigit];
    
    Float_t ec = cells->GetCellAmplitude(absIdList[iDigit]);
    RecalibrateCellAmplitude(ec,calorimeter, absIdList[iDigit]);
    eCluster+=ec;
    
    if(fPlotCluster) 
    {
      //printf("iDigit %d, absId %d, Ecell %f\n",iDigit,absIdList[iDigit], cells->GetCellAmplitude(absIdList[iDigit]));
      sm = GetModuleNumberCellIndexes(absIdList[iDigit], calorimeter, icol, irow, iRCU) ;
      if(sm > -1 && sm  < 12) // just to avoid compilation warning
      {
        if(icol > maxCol) maxCol = icol;
        if(icol < minCol) minCol = icol;
        if(irow > maxRow) maxRow = irow;
        if(irow < minRow) minRow = irow;
        hClusterMap->Fill(icol,irow,ec);
      }
    }
    
  }
  
  // Init counters and variables
  Int_t ncells1 = 1 ;
  UShort_t absIdList1[9] ;  
  Double_t fracList1 [9] ;  
  absIdList1[0] = absId1 ;
  fracList1 [0] = 1. ;
  
  Float_t ecell1 = cells->GetCellAmplitude(absId1);
  RecalibrateCellAmplitude(ecell1, calorimeter, absId1);
  e1 =  ecell1;  
  
  Int_t ncells2 = 1 ;
  UShort_t absIdList2[9] ;  
  Double_t fracList2 [9] ; 
  absIdList2[0] = absId2 ;
  fracList2 [0] = 1. ;
  
  Float_t ecell2 = cells->GetCellAmplitude(absId2);
  RecalibrateCellAmplitude(ecell2, calorimeter, absId2);
  e2 =  ecell2;  
  
  if(fPlotCluster)
  {
    Int_t icol1 = -1, irow1 = -1, icol2 = -1, irow2 = -1;
    sm = GetModuleNumberCellIndexes(absId1, calorimeter, icol1, irow1, iRCU) ;
    hClusterLocMax->Fill(icol1,irow1,ecell1);
    sm = GetModuleNumberCellIndexes(absId2, calorimeter, icol2, irow2, iRCU) ;
    hClusterLocMax->Fill(icol2,irow2,ecell2);
  }
  
  // Very rough way to share the cluster energy
  Float_t eRemain = (eCluster-ecell1-ecell2)/2;
  Float_t shareFraction1 = ecell1/eCluster+eRemain/eCluster;
  Float_t shareFraction2 = ecell2/eCluster+eRemain/eCluster;
  
  for(Int_t iDigit = 0; iDigit < ncells; iDigit++)
  {
    Int_t absId = absIdList[iDigit];
    
    if(absId==absId1 || absId==absId2 || absId < 0) continue;
    
    Float_t ecell = cells->GetCellAmplitude(absId);
    RecalibrateCellAmplitude(ecell, calorimeter, absId);
    
    if(AreNeighbours(calorimeter, absId1,absId ))
    { 
      absIdList1[ncells1]= absId;
      
      if(AreNeighbours(calorimeter, absId2,absId ))
      { 
        fracList1[ncells1] = shareFraction1; 
        e1 += ecell*shareFraction1;
      }
      else 
      {
        fracList1[ncells1] = 1.; 
        e1 += ecell;
      }
      
      ncells1++;
      
    } // neigbour to cell1
    
    if(AreNeighbours(calorimeter, absId2,absId ))
    { 
      absIdList2[ncells2]= absId;
      
      if(AreNeighbours(calorimeter, absId1,absId ))
      { 
        fracList2[ncells2] = shareFraction2; 
        e2 += ecell*shareFraction2;
      }
      else
      { 
        fracList2[ncells2] = 1.; 
        e2 += ecell;
      }
      
      ncells2++;
      
    } // neigbour to cell2
    
  }
  
  AliDebug(1,Form("N Local Max %d, Cluster energy  = %f, Ecell1 = %f, Ecell2 = %f, Enew1 = %f, Enew2 = %f, Remain %f, \n ncells %d, ncells1 %d, ncells2 %d, f1 %f, f2  %f, sum f12 = %f",
                  nMax, eCluster,ecell1,ecell2,e1,e2,eCluster-e1-e2,ncells,ncells1,ncells2,shareFraction1,shareFraction2,shareFraction1+shareFraction2));
           
  cluster1->SetE(e1);
  cluster2->SetE(e2);  
  
  cluster1->SetNCells(ncells1);
  cluster2->SetNCells(ncells2);  
  
  cluster1->SetCellsAbsId(absIdList1);
  cluster2->SetCellsAbsId(absIdList2);
  
  cluster1->SetCellsAmplitudeFraction(fracList1);
  cluster2->SetCellsAmplitudeFraction(fracList2);
  
  //Correct linearity
  CorrectClusterEnergy(cluster1) ;
  CorrectClusterEnergy(cluster2) ;
  
  if(calorimeter==kEMCAL)
  {
    GetEMCALRecoUtils()->RecalculateClusterPosition(GetEMCALGeometry(), cells, cluster1);
    GetEMCALRecoUtils()->RecalculateClusterPosition(GetEMCALGeometry(), cells, cluster2);
  }
  
  if(fPlotCluster)
  {
    //printf("Cells of cluster1: ");
    for(Int_t iDigit  = 0; iDigit < ncells1; iDigit++ ) 
    {
      //printf(" %d ",absIdList1[iDigit]);
      
      sm = GetModuleNumberCellIndexes(absIdList1[iDigit], calorimeter, icol, irow, iRCU) ;
      
      Float_t ecell = cells->GetCellAmplitude(absIdList1[iDigit]);
      RecalibrateCellAmplitude(ecell, calorimeter, absIdList1[iDigit]);
      
      if( AreNeighbours(calorimeter, absId2,absIdList1[iDigit]) && absId1!=absIdList1[iDigit])
        hCluster1->Fill(icol,irow,ecell*shareFraction1);
      else 
        hCluster1->Fill(icol,irow,ecell);
    }
    
    //printf(" \n ");
    //printf("Cells of cluster2: ");
    
    for(Int_t iDigit  = 0; iDigit < ncells2; iDigit++ ) 
    {
      //printf(" %d ",absIdList2[iDigit]);
      
      sm = GetModuleNumberCellIndexes(absIdList2[iDigit], calorimeter, icol, irow, iRCU) ;
      
      Float_t ecell = cells->GetCellAmplitude(absIdList2[iDigit]);
      RecalibrateCellAmplitude(ecell, calorimeter, absIdList2[iDigit]);
      
      if( AreNeighbours(calorimeter, absId1,absIdList2[iDigit])  && absId2!=absIdList2[iDigit])
        hCluster2->Fill(icol,irow,ecell*shareFraction2);
      else
        hCluster2->Fill(icol,irow,ecell);
      
    }
    //printf(" \n ");
    
    gStyle->SetPadRightMargin(0.1);
    gStyle->SetPadLeftMargin(0.1);
    gStyle->SetOptStat(0);
    gStyle->SetOptFit(000000);
    
    if(maxCol-minCol > maxRow-minRow)
    {
      maxRow+= maxCol-minCol;
    }
    else 
    {
      maxCol+= maxRow-minRow;
    }
    
    TCanvas  * c= new TCanvas("canvas", "canvas", 4000, 4000) ;
    c->Divide(2,2);  
    c->cd(1);
    gPad->SetGridy();
    gPad->SetGridx();
    gPad->SetLogz();
    hClusterMap    ->SetAxisRange(minCol, maxCol,"X");
    hClusterMap    ->SetAxisRange(minRow, maxRow,"Y");
    hClusterMap    ->Draw("colz TEXT");
    c->cd(2);
    gPad->SetGridy();
    gPad->SetGridx();
    gPad->SetLogz();
    hClusterLocMax ->SetAxisRange(minCol, maxCol,"X");
    hClusterLocMax ->SetAxisRange(minRow, maxRow,"Y");
    hClusterLocMax ->Draw("colz TEXT");
    c->cd(3);
    gPad->SetGridy();
    gPad->SetGridx();
    gPad->SetLogz();
    hCluster1      ->SetAxisRange(minCol, maxCol,"X");
    hCluster1      ->SetAxisRange(minRow, maxRow,"Y");
    hCluster1      ->Draw("colz TEXT");
    c->cd(4);
    gPad->SetGridy();
    gPad->SetGridx();
    gPad->SetLogz();
    hCluster2      ->SetAxisRange(minCol, maxCol,"X");
    hCluster2      ->SetAxisRange(minRow, maxRow,"Y");
    hCluster2      ->Draw("colz TEXT");
    
    if(eCluster > 6 )c->Print(Form("clusterFigures/Event%d_E%1.0f_nMax%d_NCell1_%d_NCell2_%d.eps",
                                   eventNumber,cluster->E(),nMax,ncells1,ncells2));
    
    delete c;
    delete hClusterMap;
    delete hClusterLocMax;
    delete hCluster1;
    delete hCluster2;
  }
}

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