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

//_________________________________________________________________________
// Base class for CaloTrackCorr analysis algorithms
//-- Author: Gustavo Conesa (LNF-INFN, LPSC-Grenoble) 
//
//
//_________________________________________________________________________


// --- ROOT system ---
#include <TClonesArray.h>
//#include <Riostream.h>

//---- AliRoot system ----
#include "AliAnaCaloTrackCorrBaseClass.h"
#include "AliCaloTrackReader.h"
#include "AliCalorimeterUtils.h"
#include "AliCaloPID.h"
#include "AliFiducialCut.h"
#include "AliIsolationCut.h"
#include "AliMCAnalysisUtils.h"
#include "AliNeutralMesonSelection.h"
#include "AliVCaloCells.h" 
#include "AliAODEvent.h"
#include "AliAODHandler.h"
#include "AliAODPWG4Particle.h"

ClassImp(AliAnaCaloTrackCorrBaseClass)


//__________________________________________________________
AliAnaCaloTrackCorrBaseClass::AliAnaCaloTrackCorrBaseClass() : 
TObject(), 
fDataMC(0),                   fDebug(0),
fCalorimeter(-1),             fCalorimeterString(""),
fCheckFidCut(0),              fCheckRealCaloAcc(0),
fCheckCaloPID(0),             fRecalculateCaloPID(0), 
fMinPt(0),                    fMaxPt(0),
fPairTimeCut(200),            fTRDSMCovered(-1),
fNZvertBin(0),                fNrpBin(0),
fNCentrBin(0),                fNmaxMixEv(0),
fDoOwnMix(0),                 fUseTrackMultBins(0),
fFillPileUpHistograms(0),     fFillHighMultHistograms(0),
fMakePlots(kFALSE),
fInputAODBranch(0x0),         fInputAODName(""),
fOutputAODBranch(0x0),        fNewAOD(kFALSE),
fOutputAODName(""),           fOutputAODClassName(""),
fAODObjArrayName(""),         fAddToHistogramsName(""),
fCaloPID(0x0),                fCaloUtils(0x0),
fFidCut(0x0),                 fHisto(0x0),
fIC(0x0),                     fMCUtils(0x0),                
fNMS(0x0),                    fReader(0x0)
{
  //Default Ctor
  
  //Initialize parameters
  InitParameters();
}

//___________________________________________________________
AliAnaCaloTrackCorrBaseClass::~AliAnaCaloTrackCorrBaseClass() 
{
  // Remove all pointers except analysis output pointers.
  
  //delete fCaloUtils ; //Already deleted in maker
  //delete fReader ;    //Already deleted in maker
	
  delete fCaloPID ; 
  delete fFidCut  ;  
  delete fIC      ;      
  delete fMCUtils ; 
  delete fNMS     ;     
  delete fHisto   ;    
}

//______________________________________________________________________
void AliAnaCaloTrackCorrBaseClass::AddAODParticle(AliAODPWG4Particle pc)
{
  //Put AOD calo cluster in the AODParticleCorrelation array
  
  if(!fOutputAODBranch)
  {
    AliFatal("No AOD branch available!!!\n");
    return; // coverity
  }
  
  Int_t i = fOutputAODBranch->GetEntriesFast();
  //new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
  if     (strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4Particle")==0)
  {
    new((*fOutputAODBranch)[i])  AliAODPWG4Particle(pc);
  }
  else if(strcmp(fOutputAODBranch->GetClass()->GetName(),"AliAODPWG4ParticleCorrelation")==0)
  {
    new((*fOutputAODBranch)[i])  AliAODPWG4ParticleCorrelation(pc);
  }
  else
  {
    AliFatal(Form("Cannot add an object of type < %s >, to the AOD TClonesArray \n", fOutputAODBranch->GetClass()->GetName()));
  }
  
}

//__________________________________________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::CheckMixedEventVertex(Int_t caloLabel, Int_t trackLabel)
{
  // Check vertex in mixed events
  
  if (!GetMixedEvent()) return 1; // Not mixed event continue normal processing
  
  Int_t evt = -1;
  
  if     (caloLabel  >= 0 )
  {
    evt = GetMixedEvent()->EventIndexForCaloCluster(caloLabel) ;
  }
  else if(trackLabel >= 0 )
  {
    evt = GetMixedEvent()->EventIndex(trackLabel) ;
  }
  else  
    return 0; // go to next entry in the particle list
  
  if(evt == -1) 
    return 0 ; // to content coverity
  
  if (TMath::Abs(GetVertex(evt)[2]) > GetZvertexCut())  return -1; // Vertex out of range process next event
  
  return 1 ; // continue processing normally
  
}

//________________________________________________________________
void AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() 
{
  //Recover ouput and input AOD pointers for each event in the maker
	
  //Delta AODs
  AliDebug(3,Form("AliAnaCaloTrackCorrBaseClass::ConnectInputOutputAODBranches() - Connect Input with name: <%s>; Connect output with name <%s>\n",fInputAODName.Data(),fOutputAODName.Data()));
  
  //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
  AliAODHandler* aodHandler = 0x0;
  Bool_t outAOD = kFALSE;
  if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
  if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); 
  else 	     aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
  
  if(!GetReader()->WriteDeltaAODToFile())
  {
    fOutputAODBranch =  (TClonesArray *) (fReader->GetAODBranchList())->FindObject(fOutputAODName);
    fInputAODBranch  =  (TClonesArray *) (fReader->GetAODBranchList())->FindObject(fInputAODName);	
  }
  else if (aodHandler->GetExtensions())
  {
    AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(GetReader()->GetDeltaAODFileName()); 
    if(ext)
    {
      AliAODEvent *aodEvent = ext->GetAOD(); 
      if(fNewAOD)fOutputAODBranch = (TClonesArray*) aodEvent->FindListObject(fOutputAODName);
      fInputAODBranch = (TClonesArray*) aodEvent->FindListObject(fInputAODName); 	  
      if(!fOutputAODBranch && fNewAOD) fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
      if(!fInputAODBranch)  fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);
    }
    else
    { // If no Delta AODs, kept in standard branch, to revise.
      if(fNewAOD && fReader->GetOutputEvent())
      {
        fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
        fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);	
      }
      else
      {
        fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName);	
        if(!fInputAODBranch && fReader->GetOutputEvent() ) 
          fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
      }
    }
  }
  else
  { // If no Delta AODs, kept in standard branch
    if(fNewAOD && fReader->GetOutputEvent())
    {
      fOutputAODBranch =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fOutputAODName);
      fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);	
    }
    else
    {
      fInputAODBranch  =  (TClonesArray *) fReader->GetInputEvent()->FindListObject(fInputAODName);
      if(!fInputAODBranch && fReader->GetOutputEvent())  
        fInputAODBranch  =  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(fInputAODName);//Try the output event.
    }
  }
  
//  if(GetDebug() > 1)
//  {
//    if(fNewAOD && !fOutputAODBranch) 
//      AliInfo(Form("Output Branch <%s>, not found!\n",fOutputAODName.Data()));
//    if(!fNewAOD && !fInputAODBranch) 
//      AliInfo(Form("Input Branch  <%s>, not found!\n",fInputAODName.Data()));
//  }
}

//_____________________________________________________________________________________
AliVCluster * AliAnaCaloTrackCorrBaseClass::FindCluster(TObjArray* clusters, Int_t id,
                                                        Int_t & iclus, Int_t first)
{
  // Given the cluster ID stored in AliAODPWG4Particle, get the originator cluster and its index in the array
  
  if(!clusters) return 0x0;
  
  for(iclus = first; iclus < clusters->GetEntriesFast(); iclus++)
  {
    AliVCluster *cluster= dynamic_cast<AliVCluster*> (clusters->At(iclus));
    if(cluster)
    {
      if(cluster->GetID()==id)
      {
        return cluster;
      }
    }      
  }// calorimeter clusters loop
  
  return 0x0;
  
}

//______________________________________________________________________________________
TClonesArray * AliAnaCaloTrackCorrBaseClass::GetAODBranch(const TString & aodName) const
{
	//Recover ouput and input AOD pointers for each event in the maker
	
	//Delta AODs
  
	AliDebug(3,Form("AliAnaCaloTrackCorrBaseClass::GetAODBranch() - Get Input Branch with name: <%s>; \n",aodName.Data()));
	
  //Get the AOD handler, if output AOD is created use it, if not get the branches from the input which should be deltaAODs
  AliAODHandler* aodHandler = 0x0;
  Bool_t outAOD = kFALSE;
  if((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()) outAOD = kTRUE;
  if(outAOD) aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetOutputEventHandler()); 
  else 	     aodHandler = (AliAODHandler*) ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
  
  if(!GetReader()->WriteDeltaAODToFile())
  {
    return  (TClonesArray *) (fReader->GetAODBranchList())->FindObject(aodName);
  }
  else if (aodHandler->GetExtensions())
  { 
    AliAODExtension *ext = (AliAODExtension*)aodHandler->GetExtensions()->FindObject(GetReader()->GetDeltaAODFileName()); 
    if(ext){
      AliAODEvent *aodEvent = ext->GetAOD(); 
      TClonesArray * aodbranch =  (TClonesArray*) aodEvent->FindListObject(aodName);
      if(aodbranch) return aodbranch;
      else {
        if(outAOD) return  (TClonesArray *) fReader->GetOutputEvent()->FindListObject(aodName);
        else       return  (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
      }
    }
    else{//If no Delta AODs, kept in standard branch, to revise. 
      if(outAOD) return (TClonesArray *) fReader->GetOutputEvent()->FindListObject(aodName);
      else       return (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
    }
  }
  else{ //If no Delta AODs, kept in standard branch, to revise. 
    if(outAOD) return (TClonesArray *)  fReader->GetOutputEvent()->FindListObject(aodName);
    else       return  (TClonesArray *) fReader->GetInputEvent() ->FindListObject(aodName);
  }
  
}

//_____________________________________________________________
TObjArray *  AliAnaCaloTrackCorrBaseClass::GetCTSTracks() const 
{
  //Get list of referenced tracks from reader
  
  return fReader->GetCTSTracks(); 
  
}

//________________________________________________________________
TObjArray *  AliAnaCaloTrackCorrBaseClass::GetPHOSClusters() const 
{
  //Get list of PHOS reference caloclusters from reader
  
  return fReader->GetPHOSClusters(); 
  
}

//_________________________________________________________________
TObjArray *  AliAnaCaloTrackCorrBaseClass::GetEMCALClusters() const 
{
  //Get list of emcal referenced caloclusters from reader
  
  return fReader->GetEMCALClusters(); 
  
}

//______________________________________________________________________
TClonesArray *  AliAnaCaloTrackCorrBaseClass::GetAODCaloClusters() const 
{
  //Get list of all caloclusters in AOD output file 
  
  return fReader->GetOutputEvent()->GetCaloClusters(); 
  
}

//________________________________________________________________
TClonesArray *  AliAnaCaloTrackCorrBaseClass::GetAODTracks() const 
{
  //Get list of all tracks in AOD output file 
  
  return fReader->GetOutputEvent()->GetTracks(); 
  
}

//____________________________________________________________
TString  AliAnaCaloTrackCorrBaseClass::GetBaseParametersList()  
{
  //Put data member values in string to keep in output container
  
  TString parList ; //this will be list of parameters used for this analysis.
  const Int_t buffersize = 255;
  char onePar[buffersize] ;
  snprintf(onePar,buffersize,"--- AliAnaCaloTrackCorrBaseClass ---\n") ;
  parList+=onePar ;	
  snprintf(onePar,buffersize,"Minimal P_t: %2.2f ; Max\n", fMinPt) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"Minimal P_t: %2.2f ; Max\n", fMaxPt) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"|t_{1}-t_{2}| < %2.2f ; Max\n", fPairTimeCut) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fDataMC =%d (Check MC information, on/off) \n",fDataMC) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fCheckFidCut=%d (Check Fiducial cut selection on/off) \n",fCheckFidCut) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fCheckRealCaloAcc=%d (Check Real Calo Acceptance on/off) \n",fCheckRealCaloAcc) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fCheckCaloPID =%d (Use Bayesian PID in calorimetes, on/off) \n",fCheckCaloPID) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fRecalculateCaloPID  =%d (Calculate PID from shower/tof/tracking parameters, on/off) \n",fRecalculateCaloPID) ;
  parList+=onePar ;
  snprintf(onePar,buffersize,"fInputAODName  =%s Input AOD name \n",fInputAODName.Data()) ;
  parList+=onePar ;	
  if(fNewAOD)
  {
    snprintf(onePar,buffersize,"fOutputAODName  =%s Output AOD name \n",fOutputAODName.Data()) ;
    parList+=onePar ;	
    snprintf(onePar,buffersize,"fOutputAODClassName  =%s Output AOD class name \n",fOutputAODClassName.Data()) ;
    parList+=onePar ;	
  }
  snprintf(onePar,buffersize,"fAODObjArrayName  =%s Reference arrays in AOD name \n",fAODObjArrayName.Data()) ;
  parList+=onePar ;	
  snprintf(onePar,buffersize,"fAddToHistogramsName  =%s String added to beginning of histograms name \n",fAddToHistogramsName.Data()) ;
  parList+=onePar ;	
	
  return parList; 
  
}

//_____________________________________________________________________
TClonesArray * AliAnaCaloTrackCorrBaseClass::GetCreateOutputAODBranch() 
{
  //Create AOD branch filled in the analysis
  
  AliInfo(Form("Create AOD branch of %s objects and with name < %s >\n",
          fOutputAODClassName.Data(),fOutputAODName.Data())) ;
  
  TClonesArray * aodBranch = new TClonesArray(fOutputAODClassName, 0);
  aodBranch->SetName(fOutputAODName);
  return aodBranch ;
  
}

//________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventNumber() const 
{
  //Get current event number
  
  return fReader->GetEventNumber() ; 
  
}


//__________________________________________________________
AliStack *  AliAnaCaloTrackCorrBaseClass::GetMCStack() const 
{
  //Get stack pointer from reader
  
  return fReader->GetStack(); 
  
}
//____________________________________________________________
AliHeader *  AliAnaCaloTrackCorrBaseClass::GetMCHeader() const
{
  //Get header pointer from reader
  
  return fReader->GetHeader(); 
  
}

//____________________________________________________________________________
AliGenEventHeader *  AliAnaCaloTrackCorrBaseClass::GetMCGenEventHeader() const
{
  //Get GenEventHeader pointer from reader
  
  return fReader->GetGenEventHeader(); 
  
}


//_________________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetTrackMultiplicityBin() const
{
  // Track multiplicity bins
  
  //curCentrBin = (GetTrackMultiplicity()-1)/5;
  //if(curCentrBin > GetNCentrBin()-1) curCentrBin=GetNCentrBin()-1;
  Int_t trackMult = GetReader()->GetTrackMultiplicity();
  
  for(Int_t ibin = 0; ibin < GetNTrackMultBin()-1; ibin++)
  {
    if(trackMult >= fTrackMultBins[ibin] && trackMult < fTrackMultBins[ibin+1]) return ibin;
  }
  
  AliWarning(Form("Bin not found for track multiplicity %d",trackMult));
  
  return -1;
}

//________________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventCentralityBin() const
{
  // Define the centrality bin for mixing
  // In pp collisions analysis hardcoded track multiplicities
  
  Int_t curCentrBin = 0;
  
  if(fUseTrackMultBins) // pp collisions
  {
    return GetTrackMultiplicityBin();
  }
  else // Set centrality based on centrality task, PbPb collisions
  {
    Float_t minCent = GetReader()->GetCentralityBin(0);
    Float_t maxCent = GetReader()->GetCentralityBin(1);
    
    if((minCent< 0 && maxCent< 0) || minCent>=maxCent)
    {
      curCentrBin = GetEventCentrality() * GetNCentrBin() / GetReader()->GetCentralityOpt();
      if(curCentrBin==GetNCentrBin())
      {
        curCentrBin = GetNCentrBin()-1;
        AliDebug(1,Form("Centrality = %d, put it in last bin \n",GetEventCentrality()));
      }
    }
    else
    {
      curCentrBin = (Int_t)((GetEventCentrality()-minCent) * GetNCentrBin() / (maxCent-minCent));
      if(curCentrBin==GetNCentrBin()) curCentrBin = GetNCentrBin()-1;
    }
    
    AliDebug(1,Form("Current CentrBin %d, centrality %d, n bins %d, max bin from centrality %d",
                    curCentrBin, GetEventCentrality(), GetNCentrBin(), GetReader()->GetCentralityOpt()));
  }
  
  return curCentrBin;
  
}

//_______________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventRPBin() const
{
  //Reaction plane bin
  
  Int_t curRPBin  = 0 ;
  
  if(GetNRPBin() > 1 && GetEventPlane())
  {
    Float_t epAngle = GetEventPlaneAngle();//->GetEventplane(GetEventPlaneMethod(),fReader->GetInputEvent());
    
    if(epAngle < 0 || epAngle >TMath::Pi())
    { 
      AliWarning(Form("Wrong event plane angle : %f \n",epAngle));
      return -1;
    }
    
    curRPBin = TMath::Nint(epAngle*(GetNRPBin()-1)/TMath::Pi());
    if(curRPBin >= GetNRPBin()) printf("RP Bin %d out of range %d",curRPBin,GetNRPBin());
    
    AliDebug(1,Form("Current RP bin %d, bin float %f, angle %f, n bins %d",
                    curRPBin,epAngle*(GetNRPBin()-1)/TMath::Pi(),epAngle,GetNRPBin()));
  }  
  
  return curRPBin ;
  
}

//_______________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventVzBin() const
{
  // Return Vz bin, divide vertex in GetNZvertBin() bins, 
  // depending on the vertex cut
  
  Double_t v[3] = {0,0,0}; //vertex 
  GetReader()->GetVertex(v);
  
  Int_t curZvertBin = (Int_t)(0.5*GetNZvertBin()*(v[2]+GetZvertexCut())/GetZvertexCut());
  
  AliDebug(1,Form("AliAnaCaloTrackCorrBaseClass::GetEventVzBin() - %d, vz %2.2f, n bins %d",
                  curZvertBin, v[2], GetNZvertBin()));
  
  return curZvertBin;
}

//________________________________________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventMixBin(Int_t iCen, Int_t iVz, Int_t iRP) const
{
  // Event mixing bin, combination of vz, centrality and reaction plane bins
  
  if(iCen<0 || iVz < 0 || iRP < 0)
    return -1;
  else
    return iCen*GetNZvertBin()*GetNRPBin()+iVz*GetNRPBin()+iRP;
}

//________________________________________________________
Int_t AliAnaCaloTrackCorrBaseClass::GetEventMixBin() const
{
  // Event mixing bin, combination of vz, centrality and reaction plane bins
  
  //Get vertex z bin
  Int_t iVz =  GetEventVzBin();
  
  // centrality (PbPb) or tracks multiplicity (pp) bin
  Int_t iCen = GetEventCentralityBin();
  
  // reaction plane bin (PbPb)
  Int_t iRP = GetEventRPBin();  
  
  Int_t eventBin = GetEventMixBin(iCen, iVz, iRP);
  
  AliDebug(1,Form("Bins : cent %d, vz %d, RP %d, event %d/%d",
                  iCen,iVz, iRP, eventBin, GetNZvertBin()*GetNRPBin()*GetNCentrBin()));
  
  return eventBin;
  
}

//____________________________________________
void AliAnaCaloTrackCorrBaseClass::InitDebug()
{
  // Init once the debugging level, if requested
  
  // Activate debug level in analysis

  if( fDebug >= 0 )
    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(this->ClassName(),fDebug);
  
  if( GetMCAnalysisUtils()->GetDebug() >= 0 )
    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(GetMCAnalysisUtils()->ClassName(),GetMCAnalysisUtils()->GetDebug());
  
  if( GetIsolationCut()->GetDebug() >= 0 )
    (AliAnalysisManager::GetAnalysisManager())->AddClassDebug(GetIsolationCut()   ->ClassName(),GetIsolationCut()->GetDebug());
  
  //printf("Debug levels: Ana %d, MC %d, Iso %d\n",fDebug,GetMCAnalysisUtils()->GetDebug(),GetIsolationCut()->GetDebug());

}

//_________________________________________________
void AliAnaCaloTrackCorrBaseClass::InitParameters()
{ 
  //Initialize the parameters of the analysis.
  fDataMC              = kFALSE;
  fDebug               = 0;
  fCheckCaloPID        = kTRUE ;
  fCheckFidCut         = kFALSE ;
  fCheckRealCaloAcc    = kFALSE ;
  fRecalculateCaloPID  = kFALSE ;
  fMinPt               = 0.2  ; //Min pt in particle analysis
  fMaxPt               = 300. ; //Max pt in particle analysis
  fNZvertBin           = 1;
  fNrpBin              = 1;
  
  fCalorimeterString   = "EMCAL";
  fCalorimeter         = kEMCAL ;
  
  fTrackMultBins[0] =  0;  fTrackMultBins[1] =  5;  fTrackMultBins[2] = 10;
  fTrackMultBins[3] = 15;  fTrackMultBins[4] = 20;  fTrackMultBins[5] = 30;
  fTrackMultBins[6] = 40;  fTrackMultBins[7] = 55;  fTrackMultBins[8] = 70;
  for(Int_t ibin=9; ibin < 20; ibin++) fTrackMultBins[ibin] = 10000;
  
  //fReader    = new AliCaloTrackReader(); //Initialized in maker
  //fCaloUtils = new AliCalorimeterUtils();//Initialized in maker
  
  fNewAOD              = kFALSE ;
  fOutputAODName       = "CaloTrackCorr";
  fOutputAODClassName  = "AliAODPWG4Particle";
  fInputAODName        = "CaloTrackCorr";
  fAddToHistogramsName = "";
  fAODObjArrayName     = "Ref";
  
}

//__________________________________________________________________
void AliAnaCaloTrackCorrBaseClass::Print(const Option_t * opt) const
{
  //Print some relevant parameters set for the analysis
  
  if(! opt)
    return;
	
  printf("New AOD:            =     %d\n",      fNewAOD);
  printf("Input AOD name:     =     %s\n",      fInputAODName.Data());
  printf("Output AOD name:    =     %s\n",      fOutputAODName.Data());
  printf("Output AOD Class name: =  %s\n",      fOutputAODClassName.Data());
  printf("Name of reference array      : %s\n", fAODObjArrayName.Data());
  printf("String added histograms name : %s\n", fAddToHistogramsName.Data());

  printf("Min Photon pT       =     %2.2f\n", fMinPt) ;
  printf("Max Photon pT       =     %3.2f\n", fMaxPt) ;
  printf("Check PID           =     %d\n",    fCheckCaloPID) ;
  printf("Recalculate PID     =     %d\n",    fRecalculateCaloPID) ;
  printf("Check Fiducial cut  =     %d\n",    fCheckFidCut) ;
  printf("Check Real Calo Acc =     %d\n",    fCheckRealCaloAcc) ;
  printf("Check MC labels     =     %d\n",    fDataMC);
  printf("Make plots?         =     %d\n",    fMakePlots);
  printf("Debug Level         =     %d\n",    fDebug);
  
  printf("    \n") ;
  
} 

//_______________________________________________________________
void AliAnaCaloTrackCorrBaseClass::SetCalorimeter(TString & calo)
{
  // Set the calorimeter for the analysis
  
  fCalorimeterString = calo;
  
  if     (calo=="EMCAL") fCalorimeter = kEMCAL;
  else if(calo=="PHOS" ) fCalorimeter = kPHOS;
  else if(calo=="CTS")   fCalorimeter = kCTS;
  else if(calo=="DCAL")  fCalorimeter = kDCAL;
  else if(calo.Contains("DCAL") && calo.Contains("PHOS")) fCalorimeter = kDCALPHOS;
  else AliFatal(Form("Detector < %s > not known!", calo.Data()));

}

//___________________________________________________________
void AliAnaCaloTrackCorrBaseClass::SetCalorimeter(Int_t calo)
{
  // Set the calorimeter for the analysis
  
  fCalorimeter = calo;
  
  if     (calo==kEMCAL)    fCalorimeterString = "EMCAL";
  else if(calo==kPHOS )    fCalorimeterString = "PHOS";
  else if(calo==kCTS)      fCalorimeterString = "CTS";
  else if(calo==kDCAL)     fCalorimeterString = "DCAL";
  else if(calo==kDCALPHOS) fCalorimeterString = "DCAL_PHOS";
  else AliFatal(Form("Detector < %d > not known!", calo));

}


 AliAnaCaloTrackCorrBaseClass.cxx:1
 AliAnaCaloTrackCorrBaseClass.cxx:2
 AliAnaCaloTrackCorrBaseClass.cxx:3
 AliAnaCaloTrackCorrBaseClass.cxx:4
 AliAnaCaloTrackCorrBaseClass.cxx:5
 AliAnaCaloTrackCorrBaseClass.cxx:6
 AliAnaCaloTrackCorrBaseClass.cxx:7
 AliAnaCaloTrackCorrBaseClass.cxx:8
 AliAnaCaloTrackCorrBaseClass.cxx:9
 AliAnaCaloTrackCorrBaseClass.cxx:10
 AliAnaCaloTrackCorrBaseClass.cxx:11
 AliAnaCaloTrackCorrBaseClass.cxx:12
 AliAnaCaloTrackCorrBaseClass.cxx:13
 AliAnaCaloTrackCorrBaseClass.cxx:14
 AliAnaCaloTrackCorrBaseClass.cxx:15
 AliAnaCaloTrackCorrBaseClass.cxx:16
 AliAnaCaloTrackCorrBaseClass.cxx:17
 AliAnaCaloTrackCorrBaseClass.cxx:18
 AliAnaCaloTrackCorrBaseClass.cxx:19
 AliAnaCaloTrackCorrBaseClass.cxx:20
 AliAnaCaloTrackCorrBaseClass.cxx:21
 AliAnaCaloTrackCorrBaseClass.cxx:22
 AliAnaCaloTrackCorrBaseClass.cxx:23
 AliAnaCaloTrackCorrBaseClass.cxx:24
 AliAnaCaloTrackCorrBaseClass.cxx:25
 AliAnaCaloTrackCorrBaseClass.cxx:26
 AliAnaCaloTrackCorrBaseClass.cxx:27
 AliAnaCaloTrackCorrBaseClass.cxx:28
 AliAnaCaloTrackCorrBaseClass.cxx:29
 AliAnaCaloTrackCorrBaseClass.cxx:30
 AliAnaCaloTrackCorrBaseClass.cxx:31
 AliAnaCaloTrackCorrBaseClass.cxx:32
 AliAnaCaloTrackCorrBaseClass.cxx:33
 AliAnaCaloTrackCorrBaseClass.cxx:34
 AliAnaCaloTrackCorrBaseClass.cxx:35
 AliAnaCaloTrackCorrBaseClass.cxx:36
 AliAnaCaloTrackCorrBaseClass.cxx:37
 AliAnaCaloTrackCorrBaseClass.cxx:38
 AliAnaCaloTrackCorrBaseClass.cxx:39
 AliAnaCaloTrackCorrBaseClass.cxx:40
 AliAnaCaloTrackCorrBaseClass.cxx:41
 AliAnaCaloTrackCorrBaseClass.cxx:42
 AliAnaCaloTrackCorrBaseClass.cxx:43
 AliAnaCaloTrackCorrBaseClass.cxx:44
 AliAnaCaloTrackCorrBaseClass.cxx:45
 AliAnaCaloTrackCorrBaseClass.cxx:46
 AliAnaCaloTrackCorrBaseClass.cxx:47
 AliAnaCaloTrackCorrBaseClass.cxx:48
 AliAnaCaloTrackCorrBaseClass.cxx:49
 AliAnaCaloTrackCorrBaseClass.cxx:50
 AliAnaCaloTrackCorrBaseClass.cxx:51
 AliAnaCaloTrackCorrBaseClass.cxx:52
 AliAnaCaloTrackCorrBaseClass.cxx:53
 AliAnaCaloTrackCorrBaseClass.cxx:54
 AliAnaCaloTrackCorrBaseClass.cxx:55
 AliAnaCaloTrackCorrBaseClass.cxx:56
 AliAnaCaloTrackCorrBaseClass.cxx:57
 AliAnaCaloTrackCorrBaseClass.cxx:58
 AliAnaCaloTrackCorrBaseClass.cxx:59
 AliAnaCaloTrackCorrBaseClass.cxx:60
 AliAnaCaloTrackCorrBaseClass.cxx:61
 AliAnaCaloTrackCorrBaseClass.cxx:62
 AliAnaCaloTrackCorrBaseClass.cxx:63
 AliAnaCaloTrackCorrBaseClass.cxx:64
 AliAnaCaloTrackCorrBaseClass.cxx:65
 AliAnaCaloTrackCorrBaseClass.cxx:66
 AliAnaCaloTrackCorrBaseClass.cxx:67
 AliAnaCaloTrackCorrBaseClass.cxx:68
 AliAnaCaloTrackCorrBaseClass.cxx:69
 AliAnaCaloTrackCorrBaseClass.cxx:70
 AliAnaCaloTrackCorrBaseClass.cxx:71
 AliAnaCaloTrackCorrBaseClass.cxx:72
 AliAnaCaloTrackCorrBaseClass.cxx:73
 AliAnaCaloTrackCorrBaseClass.cxx:74
 AliAnaCaloTrackCorrBaseClass.cxx:75
 AliAnaCaloTrackCorrBaseClass.cxx:76
 AliAnaCaloTrackCorrBaseClass.cxx:77
 AliAnaCaloTrackCorrBaseClass.cxx:78
 AliAnaCaloTrackCorrBaseClass.cxx:79
 AliAnaCaloTrackCorrBaseClass.cxx:80
 AliAnaCaloTrackCorrBaseClass.cxx:81
 AliAnaCaloTrackCorrBaseClass.cxx:82
 AliAnaCaloTrackCorrBaseClass.cxx:83
 AliAnaCaloTrackCorrBaseClass.cxx:84
 AliAnaCaloTrackCorrBaseClass.cxx:85
 AliAnaCaloTrackCorrBaseClass.cxx:86
 AliAnaCaloTrackCorrBaseClass.cxx:87
 AliAnaCaloTrackCorrBaseClass.cxx:88
 AliAnaCaloTrackCorrBaseClass.cxx:89
 AliAnaCaloTrackCorrBaseClass.cxx:90
 AliAnaCaloTrackCorrBaseClass.cxx:91
 AliAnaCaloTrackCorrBaseClass.cxx:92
 AliAnaCaloTrackCorrBaseClass.cxx:93
 AliAnaCaloTrackCorrBaseClass.cxx:94
 AliAnaCaloTrackCorrBaseClass.cxx:95
 AliAnaCaloTrackCorrBaseClass.cxx:96
 AliAnaCaloTrackCorrBaseClass.cxx:97
 AliAnaCaloTrackCorrBaseClass.cxx:98
 AliAnaCaloTrackCorrBaseClass.cxx:99
 AliAnaCaloTrackCorrBaseClass.cxx:100
 AliAnaCaloTrackCorrBaseClass.cxx:101
 AliAnaCaloTrackCorrBaseClass.cxx:102
 AliAnaCaloTrackCorrBaseClass.cxx:103
 AliAnaCaloTrackCorrBaseClass.cxx:104
 AliAnaCaloTrackCorrBaseClass.cxx:105
 AliAnaCaloTrackCorrBaseClass.cxx:106
 AliAnaCaloTrackCorrBaseClass.cxx:107
 AliAnaCaloTrackCorrBaseClass.cxx:108
 AliAnaCaloTrackCorrBaseClass.cxx:109
 AliAnaCaloTrackCorrBaseClass.cxx:110
 AliAnaCaloTrackCorrBaseClass.cxx:111
 AliAnaCaloTrackCorrBaseClass.cxx:112
 AliAnaCaloTrackCorrBaseClass.cxx:113
 AliAnaCaloTrackCorrBaseClass.cxx:114
 AliAnaCaloTrackCorrBaseClass.cxx:115
 AliAnaCaloTrackCorrBaseClass.cxx:116
 AliAnaCaloTrackCorrBaseClass.cxx:117
 AliAnaCaloTrackCorrBaseClass.cxx:118
 AliAnaCaloTrackCorrBaseClass.cxx:119
 AliAnaCaloTrackCorrBaseClass.cxx:120
 AliAnaCaloTrackCorrBaseClass.cxx:121
 AliAnaCaloTrackCorrBaseClass.cxx:122
 AliAnaCaloTrackCorrBaseClass.cxx:123
 AliAnaCaloTrackCorrBaseClass.cxx:124
 AliAnaCaloTrackCorrBaseClass.cxx:125
 AliAnaCaloTrackCorrBaseClass.cxx:126
 AliAnaCaloTrackCorrBaseClass.cxx:127
 AliAnaCaloTrackCorrBaseClass.cxx:128
 AliAnaCaloTrackCorrBaseClass.cxx:129
 AliAnaCaloTrackCorrBaseClass.cxx:130
 AliAnaCaloTrackCorrBaseClass.cxx:131
 AliAnaCaloTrackCorrBaseClass.cxx:132
 AliAnaCaloTrackCorrBaseClass.cxx:133
 AliAnaCaloTrackCorrBaseClass.cxx:134
 AliAnaCaloTrackCorrBaseClass.cxx:135
 AliAnaCaloTrackCorrBaseClass.cxx:136
 AliAnaCaloTrackCorrBaseClass.cxx:137
 AliAnaCaloTrackCorrBaseClass.cxx:138
 AliAnaCaloTrackCorrBaseClass.cxx:139
 AliAnaCaloTrackCorrBaseClass.cxx:140
 AliAnaCaloTrackCorrBaseClass.cxx:141
 AliAnaCaloTrackCorrBaseClass.cxx:142
 AliAnaCaloTrackCorrBaseClass.cxx:143
 AliAnaCaloTrackCorrBaseClass.cxx:144
 AliAnaCaloTrackCorrBaseClass.cxx:145
 AliAnaCaloTrackCorrBaseClass.cxx:146
 AliAnaCaloTrackCorrBaseClass.cxx:147
 AliAnaCaloTrackCorrBaseClass.cxx:148
 AliAnaCaloTrackCorrBaseClass.cxx:149
 AliAnaCaloTrackCorrBaseClass.cxx:150
 AliAnaCaloTrackCorrBaseClass.cxx:151
 AliAnaCaloTrackCorrBaseClass.cxx:152
 AliAnaCaloTrackCorrBaseClass.cxx:153
 AliAnaCaloTrackCorrBaseClass.cxx:154
 AliAnaCaloTrackCorrBaseClass.cxx:155
 AliAnaCaloTrackCorrBaseClass.cxx:156
 AliAnaCaloTrackCorrBaseClass.cxx:157
 AliAnaCaloTrackCorrBaseClass.cxx:158
 AliAnaCaloTrackCorrBaseClass.cxx:159
 AliAnaCaloTrackCorrBaseClass.cxx:160
 AliAnaCaloTrackCorrBaseClass.cxx:161
 AliAnaCaloTrackCorrBaseClass.cxx:162
 AliAnaCaloTrackCorrBaseClass.cxx:163
 AliAnaCaloTrackCorrBaseClass.cxx:164
 AliAnaCaloTrackCorrBaseClass.cxx:165
 AliAnaCaloTrackCorrBaseClass.cxx:166
 AliAnaCaloTrackCorrBaseClass.cxx:167
 AliAnaCaloTrackCorrBaseClass.cxx:168
 AliAnaCaloTrackCorrBaseClass.cxx:169
 AliAnaCaloTrackCorrBaseClass.cxx:170
 AliAnaCaloTrackCorrBaseClass.cxx:171
 AliAnaCaloTrackCorrBaseClass.cxx:172
 AliAnaCaloTrackCorrBaseClass.cxx:173
 AliAnaCaloTrackCorrBaseClass.cxx:174
 AliAnaCaloTrackCorrBaseClass.cxx:175
 AliAnaCaloTrackCorrBaseClass.cxx:176
 AliAnaCaloTrackCorrBaseClass.cxx:177
 AliAnaCaloTrackCorrBaseClass.cxx:178
 AliAnaCaloTrackCorrBaseClass.cxx:179
 AliAnaCaloTrackCorrBaseClass.cxx:180
 AliAnaCaloTrackCorrBaseClass.cxx:181
 AliAnaCaloTrackCorrBaseClass.cxx:182
 AliAnaCaloTrackCorrBaseClass.cxx:183
 AliAnaCaloTrackCorrBaseClass.cxx:184
 AliAnaCaloTrackCorrBaseClass.cxx:185
 AliAnaCaloTrackCorrBaseClass.cxx:186
 AliAnaCaloTrackCorrBaseClass.cxx:187
 AliAnaCaloTrackCorrBaseClass.cxx:188
 AliAnaCaloTrackCorrBaseClass.cxx:189
 AliAnaCaloTrackCorrBaseClass.cxx:190
 AliAnaCaloTrackCorrBaseClass.cxx:191
 AliAnaCaloTrackCorrBaseClass.cxx:192
 AliAnaCaloTrackCorrBaseClass.cxx:193
 AliAnaCaloTrackCorrBaseClass.cxx:194
 AliAnaCaloTrackCorrBaseClass.cxx:195
 AliAnaCaloTrackCorrBaseClass.cxx:196
 AliAnaCaloTrackCorrBaseClass.cxx:197
 AliAnaCaloTrackCorrBaseClass.cxx:198
 AliAnaCaloTrackCorrBaseClass.cxx:199
 AliAnaCaloTrackCorrBaseClass.cxx:200
 AliAnaCaloTrackCorrBaseClass.cxx:201
 AliAnaCaloTrackCorrBaseClass.cxx:202
 AliAnaCaloTrackCorrBaseClass.cxx:203
 AliAnaCaloTrackCorrBaseClass.cxx:204
 AliAnaCaloTrackCorrBaseClass.cxx:205
 AliAnaCaloTrackCorrBaseClass.cxx:206
 AliAnaCaloTrackCorrBaseClass.cxx:207
 AliAnaCaloTrackCorrBaseClass.cxx:208
 AliAnaCaloTrackCorrBaseClass.cxx:209
 AliAnaCaloTrackCorrBaseClass.cxx:210
 AliAnaCaloTrackCorrBaseClass.cxx:211
 AliAnaCaloTrackCorrBaseClass.cxx:212
 AliAnaCaloTrackCorrBaseClass.cxx:213
 AliAnaCaloTrackCorrBaseClass.cxx:214
 AliAnaCaloTrackCorrBaseClass.cxx:215
 AliAnaCaloTrackCorrBaseClass.cxx:216
 AliAnaCaloTrackCorrBaseClass.cxx:217
 AliAnaCaloTrackCorrBaseClass.cxx:218
 AliAnaCaloTrackCorrBaseClass.cxx:219
 AliAnaCaloTrackCorrBaseClass.cxx:220
 AliAnaCaloTrackCorrBaseClass.cxx:221
 AliAnaCaloTrackCorrBaseClass.cxx:222
 AliAnaCaloTrackCorrBaseClass.cxx:223
 AliAnaCaloTrackCorrBaseClass.cxx:224
 AliAnaCaloTrackCorrBaseClass.cxx:225
 AliAnaCaloTrackCorrBaseClass.cxx:226
 AliAnaCaloTrackCorrBaseClass.cxx:227
 AliAnaCaloTrackCorrBaseClass.cxx:228
 AliAnaCaloTrackCorrBaseClass.cxx:229
 AliAnaCaloTrackCorrBaseClass.cxx:230
 AliAnaCaloTrackCorrBaseClass.cxx:231
 AliAnaCaloTrackCorrBaseClass.cxx:232
 AliAnaCaloTrackCorrBaseClass.cxx:233
 AliAnaCaloTrackCorrBaseClass.cxx:234
 AliAnaCaloTrackCorrBaseClass.cxx:235
 AliAnaCaloTrackCorrBaseClass.cxx:236
 AliAnaCaloTrackCorrBaseClass.cxx:237
 AliAnaCaloTrackCorrBaseClass.cxx:238
 AliAnaCaloTrackCorrBaseClass.cxx:239
 AliAnaCaloTrackCorrBaseClass.cxx:240
 AliAnaCaloTrackCorrBaseClass.cxx:241
 AliAnaCaloTrackCorrBaseClass.cxx:242
 AliAnaCaloTrackCorrBaseClass.cxx:243
 AliAnaCaloTrackCorrBaseClass.cxx:244
 AliAnaCaloTrackCorrBaseClass.cxx:245
 AliAnaCaloTrackCorrBaseClass.cxx:246
 AliAnaCaloTrackCorrBaseClass.cxx:247
 AliAnaCaloTrackCorrBaseClass.cxx:248
 AliAnaCaloTrackCorrBaseClass.cxx:249
 AliAnaCaloTrackCorrBaseClass.cxx:250
 AliAnaCaloTrackCorrBaseClass.cxx:251
 AliAnaCaloTrackCorrBaseClass.cxx:252
 AliAnaCaloTrackCorrBaseClass.cxx:253
 AliAnaCaloTrackCorrBaseClass.cxx:254
 AliAnaCaloTrackCorrBaseClass.cxx:255
 AliAnaCaloTrackCorrBaseClass.cxx:256
 AliAnaCaloTrackCorrBaseClass.cxx:257
 AliAnaCaloTrackCorrBaseClass.cxx:258
 AliAnaCaloTrackCorrBaseClass.cxx:259
 AliAnaCaloTrackCorrBaseClass.cxx:260
 AliAnaCaloTrackCorrBaseClass.cxx:261
 AliAnaCaloTrackCorrBaseClass.cxx:262
 AliAnaCaloTrackCorrBaseClass.cxx:263
 AliAnaCaloTrackCorrBaseClass.cxx:264
 AliAnaCaloTrackCorrBaseClass.cxx:265
 AliAnaCaloTrackCorrBaseClass.cxx:266
 AliAnaCaloTrackCorrBaseClass.cxx:267
 AliAnaCaloTrackCorrBaseClass.cxx:268
 AliAnaCaloTrackCorrBaseClass.cxx:269
 AliAnaCaloTrackCorrBaseClass.cxx:270
 AliAnaCaloTrackCorrBaseClass.cxx:271
 AliAnaCaloTrackCorrBaseClass.cxx:272
 AliAnaCaloTrackCorrBaseClass.cxx:273
 AliAnaCaloTrackCorrBaseClass.cxx:274
 AliAnaCaloTrackCorrBaseClass.cxx:275
 AliAnaCaloTrackCorrBaseClass.cxx:276
 AliAnaCaloTrackCorrBaseClass.cxx:277
 AliAnaCaloTrackCorrBaseClass.cxx:278
 AliAnaCaloTrackCorrBaseClass.cxx:279
 AliAnaCaloTrackCorrBaseClass.cxx:280
 AliAnaCaloTrackCorrBaseClass.cxx:281
 AliAnaCaloTrackCorrBaseClass.cxx:282
 AliAnaCaloTrackCorrBaseClass.cxx:283
 AliAnaCaloTrackCorrBaseClass.cxx:284
 AliAnaCaloTrackCorrBaseClass.cxx:285
 AliAnaCaloTrackCorrBaseClass.cxx:286
 AliAnaCaloTrackCorrBaseClass.cxx:287
 AliAnaCaloTrackCorrBaseClass.cxx:288
 AliAnaCaloTrackCorrBaseClass.cxx:289
 AliAnaCaloTrackCorrBaseClass.cxx:290
 AliAnaCaloTrackCorrBaseClass.cxx:291
 AliAnaCaloTrackCorrBaseClass.cxx:292
 AliAnaCaloTrackCorrBaseClass.cxx:293
 AliAnaCaloTrackCorrBaseClass.cxx:294
 AliAnaCaloTrackCorrBaseClass.cxx:295
 AliAnaCaloTrackCorrBaseClass.cxx:296
 AliAnaCaloTrackCorrBaseClass.cxx:297
 AliAnaCaloTrackCorrBaseClass.cxx:298
 AliAnaCaloTrackCorrBaseClass.cxx:299
 AliAnaCaloTrackCorrBaseClass.cxx:300
 AliAnaCaloTrackCorrBaseClass.cxx:301
 AliAnaCaloTrackCorrBaseClass.cxx:302
 AliAnaCaloTrackCorrBaseClass.cxx:303
 AliAnaCaloTrackCorrBaseClass.cxx:304
 AliAnaCaloTrackCorrBaseClass.cxx:305
 AliAnaCaloTrackCorrBaseClass.cxx:306
 AliAnaCaloTrackCorrBaseClass.cxx:307
 AliAnaCaloTrackCorrBaseClass.cxx:308
 AliAnaCaloTrackCorrBaseClass.cxx:309
 AliAnaCaloTrackCorrBaseClass.cxx:310
 AliAnaCaloTrackCorrBaseClass.cxx:311
 AliAnaCaloTrackCorrBaseClass.cxx:312
 AliAnaCaloTrackCorrBaseClass.cxx:313
 AliAnaCaloTrackCorrBaseClass.cxx:314
 AliAnaCaloTrackCorrBaseClass.cxx:315
 AliAnaCaloTrackCorrBaseClass.cxx:316
 AliAnaCaloTrackCorrBaseClass.cxx:317
 AliAnaCaloTrackCorrBaseClass.cxx:318
 AliAnaCaloTrackCorrBaseClass.cxx:319
 AliAnaCaloTrackCorrBaseClass.cxx:320
 AliAnaCaloTrackCorrBaseClass.cxx:321
 AliAnaCaloTrackCorrBaseClass.cxx:322
 AliAnaCaloTrackCorrBaseClass.cxx:323
 AliAnaCaloTrackCorrBaseClass.cxx:324
 AliAnaCaloTrackCorrBaseClass.cxx:325
 AliAnaCaloTrackCorrBaseClass.cxx:326
 AliAnaCaloTrackCorrBaseClass.cxx:327
 AliAnaCaloTrackCorrBaseClass.cxx:328
 AliAnaCaloTrackCorrBaseClass.cxx:329
 AliAnaCaloTrackCorrBaseClass.cxx:330
 AliAnaCaloTrackCorrBaseClass.cxx:331
 AliAnaCaloTrackCorrBaseClass.cxx:332
 AliAnaCaloTrackCorrBaseClass.cxx:333
 AliAnaCaloTrackCorrBaseClass.cxx:334
 AliAnaCaloTrackCorrBaseClass.cxx:335
 AliAnaCaloTrackCorrBaseClass.cxx:336
 AliAnaCaloTrackCorrBaseClass.cxx:337
 AliAnaCaloTrackCorrBaseClass.cxx:338
 AliAnaCaloTrackCorrBaseClass.cxx:339
 AliAnaCaloTrackCorrBaseClass.cxx:340
 AliAnaCaloTrackCorrBaseClass.cxx:341
 AliAnaCaloTrackCorrBaseClass.cxx:342
 AliAnaCaloTrackCorrBaseClass.cxx:343
 AliAnaCaloTrackCorrBaseClass.cxx:344
 AliAnaCaloTrackCorrBaseClass.cxx:345
 AliAnaCaloTrackCorrBaseClass.cxx:346
 AliAnaCaloTrackCorrBaseClass.cxx:347
 AliAnaCaloTrackCorrBaseClass.cxx:348
 AliAnaCaloTrackCorrBaseClass.cxx:349
 AliAnaCaloTrackCorrBaseClass.cxx:350
 AliAnaCaloTrackCorrBaseClass.cxx:351
 AliAnaCaloTrackCorrBaseClass.cxx:352
 AliAnaCaloTrackCorrBaseClass.cxx:353
 AliAnaCaloTrackCorrBaseClass.cxx:354
 AliAnaCaloTrackCorrBaseClass.cxx:355
 AliAnaCaloTrackCorrBaseClass.cxx:356
 AliAnaCaloTrackCorrBaseClass.cxx:357
 AliAnaCaloTrackCorrBaseClass.cxx:358
 AliAnaCaloTrackCorrBaseClass.cxx:359
 AliAnaCaloTrackCorrBaseClass.cxx:360
 AliAnaCaloTrackCorrBaseClass.cxx:361
 AliAnaCaloTrackCorrBaseClass.cxx:362
 AliAnaCaloTrackCorrBaseClass.cxx:363
 AliAnaCaloTrackCorrBaseClass.cxx:364
 AliAnaCaloTrackCorrBaseClass.cxx:365
 AliAnaCaloTrackCorrBaseClass.cxx:366
 AliAnaCaloTrackCorrBaseClass.cxx:367
 AliAnaCaloTrackCorrBaseClass.cxx:368
 AliAnaCaloTrackCorrBaseClass.cxx:369
 AliAnaCaloTrackCorrBaseClass.cxx:370
 AliAnaCaloTrackCorrBaseClass.cxx:371
 AliAnaCaloTrackCorrBaseClass.cxx:372
 AliAnaCaloTrackCorrBaseClass.cxx:373
 AliAnaCaloTrackCorrBaseClass.cxx:374
 AliAnaCaloTrackCorrBaseClass.cxx:375
 AliAnaCaloTrackCorrBaseClass.cxx:376
 AliAnaCaloTrackCorrBaseClass.cxx:377
 AliAnaCaloTrackCorrBaseClass.cxx:378
 AliAnaCaloTrackCorrBaseClass.cxx:379
 AliAnaCaloTrackCorrBaseClass.cxx:380
 AliAnaCaloTrackCorrBaseClass.cxx:381
 AliAnaCaloTrackCorrBaseClass.cxx:382
 AliAnaCaloTrackCorrBaseClass.cxx:383
 AliAnaCaloTrackCorrBaseClass.cxx:384
 AliAnaCaloTrackCorrBaseClass.cxx:385
 AliAnaCaloTrackCorrBaseClass.cxx:386
 AliAnaCaloTrackCorrBaseClass.cxx:387
 AliAnaCaloTrackCorrBaseClass.cxx:388
 AliAnaCaloTrackCorrBaseClass.cxx:389
 AliAnaCaloTrackCorrBaseClass.cxx:390
 AliAnaCaloTrackCorrBaseClass.cxx:391
 AliAnaCaloTrackCorrBaseClass.cxx:392
 AliAnaCaloTrackCorrBaseClass.cxx:393
 AliAnaCaloTrackCorrBaseClass.cxx:394
 AliAnaCaloTrackCorrBaseClass.cxx:395
 AliAnaCaloTrackCorrBaseClass.cxx:396
 AliAnaCaloTrackCorrBaseClass.cxx:397
 AliAnaCaloTrackCorrBaseClass.cxx:398
 AliAnaCaloTrackCorrBaseClass.cxx:399
 AliAnaCaloTrackCorrBaseClass.cxx:400
 AliAnaCaloTrackCorrBaseClass.cxx:401
 AliAnaCaloTrackCorrBaseClass.cxx:402
 AliAnaCaloTrackCorrBaseClass.cxx:403
 AliAnaCaloTrackCorrBaseClass.cxx:404
 AliAnaCaloTrackCorrBaseClass.cxx:405
 AliAnaCaloTrackCorrBaseClass.cxx:406
 AliAnaCaloTrackCorrBaseClass.cxx:407
 AliAnaCaloTrackCorrBaseClass.cxx:408
 AliAnaCaloTrackCorrBaseClass.cxx:409
 AliAnaCaloTrackCorrBaseClass.cxx:410
 AliAnaCaloTrackCorrBaseClass.cxx:411
 AliAnaCaloTrackCorrBaseClass.cxx:412
 AliAnaCaloTrackCorrBaseClass.cxx:413
 AliAnaCaloTrackCorrBaseClass.cxx:414
 AliAnaCaloTrackCorrBaseClass.cxx:415
 AliAnaCaloTrackCorrBaseClass.cxx:416
 AliAnaCaloTrackCorrBaseClass.cxx:417
 AliAnaCaloTrackCorrBaseClass.cxx:418
 AliAnaCaloTrackCorrBaseClass.cxx:419
 AliAnaCaloTrackCorrBaseClass.cxx:420
 AliAnaCaloTrackCorrBaseClass.cxx:421
 AliAnaCaloTrackCorrBaseClass.cxx:422
 AliAnaCaloTrackCorrBaseClass.cxx:423
 AliAnaCaloTrackCorrBaseClass.cxx:424
 AliAnaCaloTrackCorrBaseClass.cxx:425
 AliAnaCaloTrackCorrBaseClass.cxx:426
 AliAnaCaloTrackCorrBaseClass.cxx:427
 AliAnaCaloTrackCorrBaseClass.cxx:428
 AliAnaCaloTrackCorrBaseClass.cxx:429
 AliAnaCaloTrackCorrBaseClass.cxx:430
 AliAnaCaloTrackCorrBaseClass.cxx:431
 AliAnaCaloTrackCorrBaseClass.cxx:432
 AliAnaCaloTrackCorrBaseClass.cxx:433
 AliAnaCaloTrackCorrBaseClass.cxx:434
 AliAnaCaloTrackCorrBaseClass.cxx:435
 AliAnaCaloTrackCorrBaseClass.cxx:436
 AliAnaCaloTrackCorrBaseClass.cxx:437
 AliAnaCaloTrackCorrBaseClass.cxx:438
 AliAnaCaloTrackCorrBaseClass.cxx:439
 AliAnaCaloTrackCorrBaseClass.cxx:440
 AliAnaCaloTrackCorrBaseClass.cxx:441
 AliAnaCaloTrackCorrBaseClass.cxx:442
 AliAnaCaloTrackCorrBaseClass.cxx:443
 AliAnaCaloTrackCorrBaseClass.cxx:444
 AliAnaCaloTrackCorrBaseClass.cxx:445
 AliAnaCaloTrackCorrBaseClass.cxx:446
 AliAnaCaloTrackCorrBaseClass.cxx:447
 AliAnaCaloTrackCorrBaseClass.cxx:448
 AliAnaCaloTrackCorrBaseClass.cxx:449
 AliAnaCaloTrackCorrBaseClass.cxx:450
 AliAnaCaloTrackCorrBaseClass.cxx:451
 AliAnaCaloTrackCorrBaseClass.cxx:452
 AliAnaCaloTrackCorrBaseClass.cxx:453
 AliAnaCaloTrackCorrBaseClass.cxx:454
 AliAnaCaloTrackCorrBaseClass.cxx:455
 AliAnaCaloTrackCorrBaseClass.cxx:456
 AliAnaCaloTrackCorrBaseClass.cxx:457
 AliAnaCaloTrackCorrBaseClass.cxx:458
 AliAnaCaloTrackCorrBaseClass.cxx:459
 AliAnaCaloTrackCorrBaseClass.cxx:460
 AliAnaCaloTrackCorrBaseClass.cxx:461
 AliAnaCaloTrackCorrBaseClass.cxx:462
 AliAnaCaloTrackCorrBaseClass.cxx:463
 AliAnaCaloTrackCorrBaseClass.cxx:464
 AliAnaCaloTrackCorrBaseClass.cxx:465
 AliAnaCaloTrackCorrBaseClass.cxx:466
 AliAnaCaloTrackCorrBaseClass.cxx:467
 AliAnaCaloTrackCorrBaseClass.cxx:468
 AliAnaCaloTrackCorrBaseClass.cxx:469
 AliAnaCaloTrackCorrBaseClass.cxx:470
 AliAnaCaloTrackCorrBaseClass.cxx:471
 AliAnaCaloTrackCorrBaseClass.cxx:472
 AliAnaCaloTrackCorrBaseClass.cxx:473
 AliAnaCaloTrackCorrBaseClass.cxx:474
 AliAnaCaloTrackCorrBaseClass.cxx:475
 AliAnaCaloTrackCorrBaseClass.cxx:476
 AliAnaCaloTrackCorrBaseClass.cxx:477
 AliAnaCaloTrackCorrBaseClass.cxx:478
 AliAnaCaloTrackCorrBaseClass.cxx:479
 AliAnaCaloTrackCorrBaseClass.cxx:480
 AliAnaCaloTrackCorrBaseClass.cxx:481
 AliAnaCaloTrackCorrBaseClass.cxx:482
 AliAnaCaloTrackCorrBaseClass.cxx:483
 AliAnaCaloTrackCorrBaseClass.cxx:484
 AliAnaCaloTrackCorrBaseClass.cxx:485
 AliAnaCaloTrackCorrBaseClass.cxx:486
 AliAnaCaloTrackCorrBaseClass.cxx:487
 AliAnaCaloTrackCorrBaseClass.cxx:488
 AliAnaCaloTrackCorrBaseClass.cxx:489
 AliAnaCaloTrackCorrBaseClass.cxx:490
 AliAnaCaloTrackCorrBaseClass.cxx:491
 AliAnaCaloTrackCorrBaseClass.cxx:492
 AliAnaCaloTrackCorrBaseClass.cxx:493
 AliAnaCaloTrackCorrBaseClass.cxx:494
 AliAnaCaloTrackCorrBaseClass.cxx:495
 AliAnaCaloTrackCorrBaseClass.cxx:496
 AliAnaCaloTrackCorrBaseClass.cxx:497
 AliAnaCaloTrackCorrBaseClass.cxx:498
 AliAnaCaloTrackCorrBaseClass.cxx:499
 AliAnaCaloTrackCorrBaseClass.cxx:500
 AliAnaCaloTrackCorrBaseClass.cxx:501
 AliAnaCaloTrackCorrBaseClass.cxx:502
 AliAnaCaloTrackCorrBaseClass.cxx:503
 AliAnaCaloTrackCorrBaseClass.cxx:504
 AliAnaCaloTrackCorrBaseClass.cxx:505
 AliAnaCaloTrackCorrBaseClass.cxx:506
 AliAnaCaloTrackCorrBaseClass.cxx:507
 AliAnaCaloTrackCorrBaseClass.cxx:508
 AliAnaCaloTrackCorrBaseClass.cxx:509
 AliAnaCaloTrackCorrBaseClass.cxx:510
 AliAnaCaloTrackCorrBaseClass.cxx:511
 AliAnaCaloTrackCorrBaseClass.cxx:512
 AliAnaCaloTrackCorrBaseClass.cxx:513
 AliAnaCaloTrackCorrBaseClass.cxx:514
 AliAnaCaloTrackCorrBaseClass.cxx:515
 AliAnaCaloTrackCorrBaseClass.cxx:516
 AliAnaCaloTrackCorrBaseClass.cxx:517
 AliAnaCaloTrackCorrBaseClass.cxx:518
 AliAnaCaloTrackCorrBaseClass.cxx:519
 AliAnaCaloTrackCorrBaseClass.cxx:520
 AliAnaCaloTrackCorrBaseClass.cxx:521
 AliAnaCaloTrackCorrBaseClass.cxx:522
 AliAnaCaloTrackCorrBaseClass.cxx:523
 AliAnaCaloTrackCorrBaseClass.cxx:524
 AliAnaCaloTrackCorrBaseClass.cxx:525
 AliAnaCaloTrackCorrBaseClass.cxx:526
 AliAnaCaloTrackCorrBaseClass.cxx:527
 AliAnaCaloTrackCorrBaseClass.cxx:528
 AliAnaCaloTrackCorrBaseClass.cxx:529
 AliAnaCaloTrackCorrBaseClass.cxx:530
 AliAnaCaloTrackCorrBaseClass.cxx:531
 AliAnaCaloTrackCorrBaseClass.cxx:532
 AliAnaCaloTrackCorrBaseClass.cxx:533
 AliAnaCaloTrackCorrBaseClass.cxx:534
 AliAnaCaloTrackCorrBaseClass.cxx:535
 AliAnaCaloTrackCorrBaseClass.cxx:536
 AliAnaCaloTrackCorrBaseClass.cxx:537
 AliAnaCaloTrackCorrBaseClass.cxx:538
 AliAnaCaloTrackCorrBaseClass.cxx:539
 AliAnaCaloTrackCorrBaseClass.cxx:540
 AliAnaCaloTrackCorrBaseClass.cxx:541
 AliAnaCaloTrackCorrBaseClass.cxx:542
 AliAnaCaloTrackCorrBaseClass.cxx:543
 AliAnaCaloTrackCorrBaseClass.cxx:544
 AliAnaCaloTrackCorrBaseClass.cxx:545
 AliAnaCaloTrackCorrBaseClass.cxx:546
 AliAnaCaloTrackCorrBaseClass.cxx:547
 AliAnaCaloTrackCorrBaseClass.cxx:548
 AliAnaCaloTrackCorrBaseClass.cxx:549
 AliAnaCaloTrackCorrBaseClass.cxx:550
 AliAnaCaloTrackCorrBaseClass.cxx:551
 AliAnaCaloTrackCorrBaseClass.cxx:552
 AliAnaCaloTrackCorrBaseClass.cxx:553
 AliAnaCaloTrackCorrBaseClass.cxx:554
 AliAnaCaloTrackCorrBaseClass.cxx:555
 AliAnaCaloTrackCorrBaseClass.cxx:556
 AliAnaCaloTrackCorrBaseClass.cxx:557
 AliAnaCaloTrackCorrBaseClass.cxx:558
 AliAnaCaloTrackCorrBaseClass.cxx:559
 AliAnaCaloTrackCorrBaseClass.cxx:560
 AliAnaCaloTrackCorrBaseClass.cxx:561
 AliAnaCaloTrackCorrBaseClass.cxx:562
 AliAnaCaloTrackCorrBaseClass.cxx:563
 AliAnaCaloTrackCorrBaseClass.cxx:564
 AliAnaCaloTrackCorrBaseClass.cxx:565
 AliAnaCaloTrackCorrBaseClass.cxx:566
 AliAnaCaloTrackCorrBaseClass.cxx:567
 AliAnaCaloTrackCorrBaseClass.cxx:568
 AliAnaCaloTrackCorrBaseClass.cxx:569
 AliAnaCaloTrackCorrBaseClass.cxx:570
 AliAnaCaloTrackCorrBaseClass.cxx:571
 AliAnaCaloTrackCorrBaseClass.cxx:572
 AliAnaCaloTrackCorrBaseClass.cxx:573
 AliAnaCaloTrackCorrBaseClass.cxx:574
 AliAnaCaloTrackCorrBaseClass.cxx:575
 AliAnaCaloTrackCorrBaseClass.cxx:576
 AliAnaCaloTrackCorrBaseClass.cxx:577
 AliAnaCaloTrackCorrBaseClass.cxx:578
 AliAnaCaloTrackCorrBaseClass.cxx:579
 AliAnaCaloTrackCorrBaseClass.cxx:580
 AliAnaCaloTrackCorrBaseClass.cxx:581
 AliAnaCaloTrackCorrBaseClass.cxx:582
 AliAnaCaloTrackCorrBaseClass.cxx:583
 AliAnaCaloTrackCorrBaseClass.cxx:584
 AliAnaCaloTrackCorrBaseClass.cxx:585
 AliAnaCaloTrackCorrBaseClass.cxx:586
 AliAnaCaloTrackCorrBaseClass.cxx:587
 AliAnaCaloTrackCorrBaseClass.cxx:588
 AliAnaCaloTrackCorrBaseClass.cxx:589
 AliAnaCaloTrackCorrBaseClass.cxx:590
 AliAnaCaloTrackCorrBaseClass.cxx:591
 AliAnaCaloTrackCorrBaseClass.cxx:592
 AliAnaCaloTrackCorrBaseClass.cxx:593
 AliAnaCaloTrackCorrBaseClass.cxx:594
 AliAnaCaloTrackCorrBaseClass.cxx:595
 AliAnaCaloTrackCorrBaseClass.cxx:596
 AliAnaCaloTrackCorrBaseClass.cxx:597
 AliAnaCaloTrackCorrBaseClass.cxx:598
 AliAnaCaloTrackCorrBaseClass.cxx:599
 AliAnaCaloTrackCorrBaseClass.cxx:600
 AliAnaCaloTrackCorrBaseClass.cxx:601
 AliAnaCaloTrackCorrBaseClass.cxx:602
 AliAnaCaloTrackCorrBaseClass.cxx:603
 AliAnaCaloTrackCorrBaseClass.cxx:604
 AliAnaCaloTrackCorrBaseClass.cxx:605
 AliAnaCaloTrackCorrBaseClass.cxx:606
 AliAnaCaloTrackCorrBaseClass.cxx:607
 AliAnaCaloTrackCorrBaseClass.cxx:608
 AliAnaCaloTrackCorrBaseClass.cxx:609
 AliAnaCaloTrackCorrBaseClass.cxx:610
 AliAnaCaloTrackCorrBaseClass.cxx:611
 AliAnaCaloTrackCorrBaseClass.cxx:612
 AliAnaCaloTrackCorrBaseClass.cxx:613
 AliAnaCaloTrackCorrBaseClass.cxx:614
 AliAnaCaloTrackCorrBaseClass.cxx:615
 AliAnaCaloTrackCorrBaseClass.cxx:616
 AliAnaCaloTrackCorrBaseClass.cxx:617
 AliAnaCaloTrackCorrBaseClass.cxx:618
 AliAnaCaloTrackCorrBaseClass.cxx:619
 AliAnaCaloTrackCorrBaseClass.cxx:620
 AliAnaCaloTrackCorrBaseClass.cxx:621
 AliAnaCaloTrackCorrBaseClass.cxx:622
 AliAnaCaloTrackCorrBaseClass.cxx:623
 AliAnaCaloTrackCorrBaseClass.cxx:624
 AliAnaCaloTrackCorrBaseClass.cxx:625
 AliAnaCaloTrackCorrBaseClass.cxx:626
 AliAnaCaloTrackCorrBaseClass.cxx:627
 AliAnaCaloTrackCorrBaseClass.cxx:628
 AliAnaCaloTrackCorrBaseClass.cxx:629
 AliAnaCaloTrackCorrBaseClass.cxx:630
 AliAnaCaloTrackCorrBaseClass.cxx:631
 AliAnaCaloTrackCorrBaseClass.cxx:632
 AliAnaCaloTrackCorrBaseClass.cxx:633
 AliAnaCaloTrackCorrBaseClass.cxx:634
 AliAnaCaloTrackCorrBaseClass.cxx:635
 AliAnaCaloTrackCorrBaseClass.cxx:636
 AliAnaCaloTrackCorrBaseClass.cxx:637
 AliAnaCaloTrackCorrBaseClass.cxx:638
 AliAnaCaloTrackCorrBaseClass.cxx:639
 AliAnaCaloTrackCorrBaseClass.cxx:640
 AliAnaCaloTrackCorrBaseClass.cxx:641
 AliAnaCaloTrackCorrBaseClass.cxx:642
 AliAnaCaloTrackCorrBaseClass.cxx:643
 AliAnaCaloTrackCorrBaseClass.cxx:644
 AliAnaCaloTrackCorrBaseClass.cxx:645
 AliAnaCaloTrackCorrBaseClass.cxx:646
 AliAnaCaloTrackCorrBaseClass.cxx:647
 AliAnaCaloTrackCorrBaseClass.cxx:648
 AliAnaCaloTrackCorrBaseClass.cxx:649
 AliAnaCaloTrackCorrBaseClass.cxx:650
 AliAnaCaloTrackCorrBaseClass.cxx:651
 AliAnaCaloTrackCorrBaseClass.cxx:652
 AliAnaCaloTrackCorrBaseClass.cxx:653
 AliAnaCaloTrackCorrBaseClass.cxx:654
 AliAnaCaloTrackCorrBaseClass.cxx:655
 AliAnaCaloTrackCorrBaseClass.cxx:656
 AliAnaCaloTrackCorrBaseClass.cxx:657
 AliAnaCaloTrackCorrBaseClass.cxx:658
 AliAnaCaloTrackCorrBaseClass.cxx:659
 AliAnaCaloTrackCorrBaseClass.cxx:660
 AliAnaCaloTrackCorrBaseClass.cxx:661
 AliAnaCaloTrackCorrBaseClass.cxx:662
 AliAnaCaloTrackCorrBaseClass.cxx:663
 AliAnaCaloTrackCorrBaseClass.cxx:664
 AliAnaCaloTrackCorrBaseClass.cxx:665
 AliAnaCaloTrackCorrBaseClass.cxx:666
 AliAnaCaloTrackCorrBaseClass.cxx:667
 AliAnaCaloTrackCorrBaseClass.cxx:668
 AliAnaCaloTrackCorrBaseClass.cxx:669
 AliAnaCaloTrackCorrBaseClass.cxx:670
 AliAnaCaloTrackCorrBaseClass.cxx:671
 AliAnaCaloTrackCorrBaseClass.cxx:672
 AliAnaCaloTrackCorrBaseClass.cxx:673
 AliAnaCaloTrackCorrBaseClass.cxx:674
 AliAnaCaloTrackCorrBaseClass.cxx:675
 AliAnaCaloTrackCorrBaseClass.cxx:676
 AliAnaCaloTrackCorrBaseClass.cxx:677
 AliAnaCaloTrackCorrBaseClass.cxx:678
 AliAnaCaloTrackCorrBaseClass.cxx:679