ROOT logo
// $Id$
//
// Simulation EMCal task.
//
// Author: Saehanseul Oh

#include "AliAnalysisTaskSOH.h"

#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <THnSparse.h>

#include "TChain.h"
#include "AliAnalysisManager.h"
#include "AliAnalysisTask.h"
#include "AliEMCALRecoUtils.h"
#include "AliEMCALTrack.h"
#include "AliESDCaloCluster.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDtrack.h"
#include "AliESDtrackCuts.h"
#include "AliExternalTrackParam.h"
#include "AliLog.h"
#include "AliMCEvent.h"
#include "AliHeader.h"
#include "AliGenCocktailEventHeader.h"


ClassImp(AliAnalysisTaskSOH)

//________________________________________________________________________
AliAnalysisTaskSOH::AliAnalysisTaskSOH() :
  AliAnalysisTaskSE(), 
  fESD(0), 
  fMC(0), 
  fZVtxMax(10),
  fEsdTrackCuts(0x0),
  fHybridTrackCuts1(0x0),
  fHybridTrackCuts2(0x0),
  fTrackIndices(0x0),
  fClusterIndices(0x0),
  fClusterArray(0x0),
  fMcProcess(kTRUE),
  fTrackProcess(kTRUE),
  fSFProcess(kFALSE),
  fClusterProcess(kFALSE),
  fOutputList(0x0),        
  fHEventStat(0),
  fHScaleFactor(0),
  fHScaleFactor100HC(0),
  fHEOverPVsPt(0x0),
  fHEMCalResponsePion(0x0), 
  fHEMCalResponseElec(0x0),
  fHEMCalResponseProton(0x0), 
  fHEMCalRecdPhidEta(0x0),
  fHEMCalRecdPhidEtaP(0x0),
  fHEMCalRecdPhidEtaM(0x0),
  fHEMCalRecdPhidEta_Truth(0x0),
  fHEMCalRecdPhidEtaP_Truth(0x0),
  fHEMCalRecdPhidEtaM_Truth(0x0),
  fHEMCalRecdPhidEtaposEta(0x0),
  fHEMCalRecdPhidEtanegEta(0x0),
  fHPhotonEdiff100HC(0x0),
  fHPhotonEdiff70HC(0),
  fHPhotonEdiff30HC(0),
  fHPhotonEdiff0HC(0x0),
  fHPhotonEVsClsE(0x0),
  fHistEsub1Pch(0x0),
  fHistEsub2Pch(0x0),
  fHistEsub1PchRat(0x0),
  fHistEsub2PchRat(0x0),
  fHClsEoverMcE_All(0x0),
  fHClsEoverMcE_Photon(0x0),
  fHClsEoverMcE_Elec(0x0),
  fHClsEoverMcE_Pion(0x0),
  fHParGenPion_p(0x0),
  fHParGenPion_m(0x0),
  fHParGenPion_rmInj_p(0x0),
  fHParGenPion_rmInj_m(0x0),
  fHDetGenFakePion(0x0),
  fHDetRecFakePion(0x0),  
  fHDetGenSecPion(0x0),
  fHDetRecSecPion(0x0)
{
  for(Int_t i=0; i<3; i++)
  {
    fHDetGenPion_p[i]        = 0x0;   
    fHDetRecPion_p[i]        = 0x0;  
    fHDetGenPion_m[i]        = 0x0;  
    fHDetRecPion_m[i]        = 0x0;  
    fHDetGenPion_rmInj_p[i]  = 0x0;  
    fHDetRecPion_rmInj_p[i]  = 0x0;
    fHDetGenPion_rmInj_m[i]  = 0x0;
    fHDetRecPion_rmInj_m[i]  = 0x0;
  }
  DefineInput (0, TChain::Class());
  DefineOutput(1, TList::Class());
  
}


//________________________________________________________________________
AliAnalysisTaskSOH::AliAnalysisTaskSOH(const char *name) :
  AliAnalysisTaskSE(name), 
  fESD(0), 
  fMC(0), 
  fZVtxMax(10),
  fEsdTrackCuts(0x0),
  fHybridTrackCuts1(0x0),
  fHybridTrackCuts2(0x0),
  fTrackIndices(0x0),
  fClusterIndices(0x0),
  fClusterArray(0x0),
  fMcProcess(kTRUE),
  fTrackProcess(kTRUE),
  fSFProcess(kFALSE),
  fClusterProcess(kFALSE),
  fOutputList(0x0),        
  fHEventStat(0), 
  fHScaleFactor(0),
  fHScaleFactor100HC(0),
  fHEOverPVsPt(0x0),
  fHEMCalResponsePion(0x0), 
  fHEMCalResponseElec(0x0),
  fHEMCalResponseProton(0x0), 
  fHEMCalRecdPhidEta(0x0),
  fHEMCalRecdPhidEtaP(0x0),
  fHEMCalRecdPhidEtaM(0x0),
  fHEMCalRecdPhidEta_Truth(0x0),
  fHEMCalRecdPhidEtaP_Truth(0x0),
  fHEMCalRecdPhidEtaM_Truth(0x0),
  fHEMCalRecdPhidEtaposEta(0x0),
  fHEMCalRecdPhidEtanegEta(0x0),
  fHPhotonEdiff100HC(0x0),
  fHPhotonEdiff70HC(0),
  fHPhotonEdiff30HC(0),
  fHPhotonEdiff0HC(0x0),
  fHPhotonEVsClsE(0x0),
  fHistEsub1Pch(0x0),
  fHistEsub2Pch(0x0),
  fHistEsub1PchRat(0x0),
  fHistEsub2PchRat(0x0),
  fHClsEoverMcE_All(0x0),
  fHClsEoverMcE_Photon(0x0),
  fHClsEoverMcE_Elec(0x0),
  fHClsEoverMcE_Pion(0x0),
  fHParGenPion_p(0x0),
  fHParGenPion_m(0x0),
  fHParGenPion_rmInj_p(0x0),
  fHParGenPion_rmInj_m(0x0),
  fHDetGenFakePion(0x0),
  fHDetRecFakePion(0x0),  
  fHDetGenSecPion(0x0),
  fHDetRecSecPion(0x0)
{
  for(Int_t i=0; i<3; i++)
  {
    fHDetGenPion_p[i]        = 0x0;   
    fHDetRecPion_p[i]        = 0x0;  
    fHDetGenPion_m[i]        = 0x0;  
    fHDetRecPion_m[i]        = 0x0;  
    fHDetGenPion_rmInj_p[i]  = 0x0;  
    fHDetRecPion_rmInj_p[i]  = 0x0;
    fHDetGenPion_rmInj_m[i]  = 0x0;
    fHDetRecPion_rmInj_m[i]  = 0x0;
  }

  // Constructor
  // Output slot #1 writes into a TH1 container
  DefineOutput(1, TList::Class());
}


//________________________________________________________________________
AliAnalysisTaskSOH::~AliAnalysisTaskSOH()
{
  // Destructor.

  if(fEsdTrackCuts) delete fEsdTrackCuts;
  if(fHybridTrackCuts1) delete fHybridTrackCuts1;
  if(fHybridTrackCuts2) delete fHybridTrackCuts2;
  if(fTrackIndices) delete fTrackIndices;
  if(fClusterIndices) delete fClusterIndices;
  if(fClusterArray) delete fClusterArray;
}


//________________________________________________________________________
void AliAnalysisTaskSOH::UserCreateOutputObjects()
{
  // Create histograms, called once.

  OpenFile(1);
  
  fOutputList = new TList();
  fOutputList->SetOwner(1);

  fHEventStat = new TH1F("fHEventStat","Event statistics for analysis",8,0,8);
  fHEventStat->GetXaxis()->SetBinLabel(1,"Event");
  fHEventStat->GetXaxis()->SetBinLabel(2,"cluster");
  fHEventStat->GetXaxis()->SetBinLabel(3,"good cluster");
  fHEventStat->GetXaxis()->SetBinLabel(4,"cls/0-truth");
  fHEventStat->GetXaxis()->SetBinLabel(5,"cls/1-truth");
  fHEventStat->GetXaxis()->SetBinLabel(6,"cls/2-truth");
  fHEventStat->GetXaxis()->SetBinLabel(7,"cls/2-goodtruth");
  fHEventStat->GetXaxis()->SetBinLabel(8,"cls/>3-truth");
  fOutputList->Add(fHEventStat);

 
  if(fSFProcess)
  {
    fHScaleFactor = new TH1F("fHScaleFactor", "Scale factor distribution without hadronic correction;Scale factor",100,0,10);
    fOutputList->Add(fHScaleFactor);
    
    fHScaleFactor100HC = new TH1F("fHScaleFactor100HC", "Scale factor distribution with 100% hadronic correction;Scale factor",100,0,10);
    fOutputList->Add(fHScaleFactor100HC);
  }

  if(fClusterProcess)
  {
    fHEOverPVsPt = new TH2F("fHEOverPVsPt", "E/P vs track p_{T}; p_{T} (GeV/c); E/P", 200 , 0, 4, 200, 0, 3.2);
    fOutputList->Add(fHEOverPVsPt);
    
    fHEMCalResponsePion = new TH2F("fHEMCalResponsePion", "Pion E/P vs track p_{T}; p_{T} (GeV/c); E/P", 100 , 0, 4, 100, 0, 3.2);
    fOutputList->Add(fHEMCalResponsePion);
    
    fHEMCalResponseElec = new TH2F("fHEMCalResponseElec", "Electron E/P vs track p_{T};  p_{T} (GeV/c); E/P", 100 , 0, 4, 100, 0, 3.2);
    fOutputList->Add(fHEMCalResponseElec);
    
    fHEMCalResponseProton = new TH2F("fHEMCalResponseProton", "Proton E/P vs track p_{T};  p_{T} (GeV/c); E/P", 100 , 0, 4, 100, 0, 3.2);
    fOutputList->Add(fHEMCalResponseProton);
    
    fHEMCalRecdPhidEta = new TH2F("fHEMCalRecdPhidEta","EMCAL Cluster-Track #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEta);
    
    fHEMCalRecdPhidEtaP = new TH2F("fHEMCalRecdPhidEtaP","EMCAL Charge+ Cluster-Track #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtaP);
    
    fHEMCalRecdPhidEtaM = new TH2F("fHEMCalRecdPhidEtaM","EMCAL Charge- Cluster-Track #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtaM);
    
    fHEMCalRecdPhidEta_Truth = new TH2F("fHEMCalRecdPhidEta_Truth","EMCAL Cluster-Track(Truth matched) #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEta_Truth);
    
    fHEMCalRecdPhidEtaP_Truth = new TH2F("fHEMCalRecdPhidEtaP_Truth","EMCAL Charge+ Cluster-Track(Truth matched) #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtaP_Truth);
    
    fHEMCalRecdPhidEtaM_Truth = new TH2F("fHEMCalRecdPhidEtaM_Truth","EMCAL Charge- Cluster-Track(Truth matched) #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtaM_Truth);
    
    fHEMCalRecdPhidEtaposEta = new TH2F("fHEMCalRecdPhidEtaposEta","(+eta track) EMCAL Cluster-Track #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtaposEta);
    
    fHEMCalRecdPhidEtanegEta = new TH2F("fHEMCalRecdPhidEtanegEta","(-eta track) EMCAL Cluster-Track #Delta#phi-#Delta#eta; #Delta#eta; #Delta#phi",1000,-0.1,0.1,1000,-0.5,0.5);
    fOutputList->Add(fHEMCalRecdPhidEtanegEta);
    
    fHPhotonEdiff100HC = new TH2F("fHPhotonEdiff100HC","Photon (E_{Truth}- E_{calc,100% HC})/E_{Truth} vs. E_{Truth}; E_{Truth} (GeV); (E_{Truth}- E_{calc,100% HC})/E_{Truth}",1000,0,10,600,-4.9,1.1);
    fOutputList->Add(fHPhotonEdiff100HC);
    
    fHPhotonEdiff70HC = new TH2F("fHPhotonEdiff70HC","Photon (E_{Truth}- E_{calc,70% HC})/E_{Truth} vs. E_{Truth}; E_{Truth} (GeV); (E_{Truth}- E_{calc,30% HC})/E_{Truth}",1000,0,10,600,-4.9,1.1);
    fOutputList->Add(fHPhotonEdiff70HC);
    
    fHPhotonEdiff30HC = new TH2F("fHPhotonEdiff30HC","Photon (E_{Truth}- E_{calc,30% HC})/E_{Truth} vs. E_{Truth}; E_{Truth} (GeV); (E_{Truth}- E_{calc,30% HC})/E_{Truth}",1000,0,10,600,-4.9,1.1);
    fOutputList->Add(fHPhotonEdiff30HC);
    
    fHPhotonEdiff0HC = new TH2F("fHPhotonEdiff0HC","Photon (E_{Truth}- E_{calc,0% HC})/E_{Truth} vs. E_{Truth}; E_{Truth} (GeV); (E_{Truth}- E_{cls})/E_{Truth}",1000,0,10,600,-4.9,1.1);
    fOutputList->Add(fHPhotonEdiff0HC);
    
    fHPhotonEVsClsE = new TH2F("fHPhotonEVsClsE","Cluster E vs. photon E_{Truth}; photon E_{Truth} (GeV); Cluster E (GeV)",500,0,5,500,0,5);
    fOutputList->Add(fHPhotonEVsClsE);
    
    fHistEsub1Pch =new  TH2F("fHistEsub1Pch", "(subtracted E in 100% HC) vs. total track P, clusters with 1 matching track; total track P (GeV/c); E_{sub}(GeV)" , 1000, 0., 10, 1000, 0., 10.);
    fOutputList->Add(fHistEsub1Pch);
    
    fHistEsub2Pch =new  TH2F("fHistEsub2Pch", "(subtracted E in 100% HC) vs. total track P, clusters with 2 matching tracks; total track P (GeV/c); E_{sub}(GeV)" , 1000, 0., 10, 1000, 0., 10.);
    fOutputList->Add(fHistEsub2Pch);
    
    fHistEsub1PchRat =new  TH2F("fHistEsub1PchRat", "(subtracted E in 100% HC)/total track P vs. total track P, clusters with 1 matching track; total track P (GeV/c); E_{sub}/P_{tot}" , 1000, 0., 10, 1100, 0., 1.1);
    fOutputList->Add(fHistEsub1PchRat);
    
    fHistEsub2PchRat =new  TH2F("fHistEsub2PchRat", "(subtracted E in 100% HC)/total track P vs. total track P, clusters with 2 matching tracks; total track P (GeV/c); E_{sub}/P_{tot}" , 1000, 0., 10, 1100, 0., 1.1);
    fOutputList->Add(fHistEsub2PchRat);
    
    Int_t bins[4] = {150, 150, 100, 200};
    Double_t xmin[4] = {1.3, -0.8, 0, 0};
    Double_t xmax[4] = {3.2, 0.8, 10, 2};
    
    fHClsEoverMcE_All = new THnSparseF("fHClsEoverMcE_All", "Cluster E/MC E, clusters with 1 matching particle; #phi; #eta; E (GeV); ClsE/McE", 4, bins, xmin, xmax);
    fOutputList->Add(fHClsEoverMcE_All);
    
    fHClsEoverMcE_Photon = new THnSparseF("fHClsEoverMcE_Photon", "Cluster E/MC E, clusters with 1 matching photon; #phi; #eta; E (GeV); ClsE/McE", 4, bins, xmin, xmax);
    fOutputList->Add(fHClsEoverMcE_Photon);
    
    fHClsEoverMcE_Elec = new THnSparseF("fHClsEoverMcE_Elec", "Cluster E/MC E, clusters with 1 matching electron; #phi; #eta; E (GeV); ClsE/McE", 4, bins, xmin, xmax);
    fOutputList->Add(fHClsEoverMcE_Elec);
    
    fHClsEoverMcE_Pion = new THnSparseF("fHClsEoverMcE_Pion", "Cluster E/MC E, clusters with 1 matching pion; #phi; #eta; E (GeV); ClsE/McE",4, bins, xmin, xmax);
    fOutputList->Add(fHClsEoverMcE_Pion);
  }
  
  fHParGenPion_p = new TH3F("fHParGenPion_p","Particle level truth Phi-Eta-p_{T} distribution of #pi+",  500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
  fHParGenPion_p->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
  fHParGenPion_p->GetYaxis()->SetTitle("#eta");
  fHParGenPion_p->GetZaxis()->SetTitle("#phi");
  fOutputList->Add(fHParGenPion_p);
  
  fHParGenPion_m = new TH3F("fHParGenPion_m", "Particle level truth Phi-Eta-p_{T} distribution of all #pi-", 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
  fHParGenPion_m->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
  fHParGenPion_m->GetYaxis()->SetTitle("#eta");
  fHParGenPion_m->GetZaxis()->SetTitle("#phi");
  fOutputList->Add(fHParGenPion_m);
  
  fHParGenPion_rmInj_p = new TH3F("fHParGenPion_rmInj_p","Particle level truth Phi-Eta-p_{T} distribution of all #pi+ without injected signal",  500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
  fHParGenPion_rmInj_p->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
  fHParGenPion_rmInj_p->GetYaxis()->SetTitle("#eta");
  fHParGenPion_rmInj_p->GetZaxis()->SetTitle("#phi");
  fOutputList->Add(fHParGenPion_rmInj_p);
  
  fHParGenPion_rmInj_m = new TH3F("fHParGenPion_rmInj_m","Particle level truth Phi-Eta-p_{T} distribution of #pi- without injected signal", 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
  fHParGenPion_rmInj_m->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
  fHParGenPion_rmInj_m->GetYaxis()->SetTitle("#eta");
  fHParGenPion_rmInj_m->GetZaxis()->SetTitle("#phi");
  fOutputList->Add(fHParGenPion_rmInj_m);


  
  const char* trackCut[3] = {"cut1","cut2", "cut3"};
  if(fMcProcess && fTrackProcess)
  {    
    //Fake
    fHDetGenFakePion = new TH3F("fHDetGenFakePion", "fake charged pion track Phi-Eta-p_{T} distribution",500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
    fHDetGenFakePion->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
    fHDetGenFakePion->GetYaxis()->SetTitle("#eta");
    fHDetGenFakePion->GetZaxis()->SetTitle("#phi");
    fOutputList->Add(fHDetGenFakePion);

    fHDetRecFakePion = new TH3F("fHDetRecFakePion", "fake charged pion track Phi-Eta-p_{T} distribution", 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
    fHDetRecFakePion->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
    fHDetRecFakePion->GetYaxis()->SetTitle("#eta");
    fHDetRecFakePion->GetZaxis()->SetTitle("#phi");
    fOutputList->Add(fHDetRecFakePion);
    
    //Secondary
    fHDetGenSecPion = new TH3F("fHDetGenSecPion", "secondary charged pion charged pion track Phi-Eta-p_{T} distribution", 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
    fHDetGenSecPion->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
    fHDetGenSecPion->GetYaxis()->SetTitle("#eta");
    fHDetGenSecPion->GetZaxis()->SetTitle("#phi");
    fOutputList->Add(fHDetGenSecPion);

    fHDetRecSecPion = new TH3F("fHDetRecSecPion", "secondary charged pion charged pion track Phi-Eta-p_{T} distribution", 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
    fHDetRecSecPion->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
    fHDetRecSecPion->GetYaxis()->SetTitle("#eta");
    fHDetRecSecPion->GetZaxis()->SetTitle("#phi");
    fOutputList->Add(fHDetRecSecPion);
 
    for(Int_t i=0; i<3; i++)
    {
      // pi+
      fHDetGenPion_p[i] = new TH3F(Form("fHDetGenPion_p_%s", trackCut[i]), Form("%s: Detector level truth Phi-Eta-p_{T} distribution of #pi+", trackCut[i]),  500, 0, 100, 60, -1.2, 1.2, 128, 0, 6.4);
      fHDetGenPion_p[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetGenPion_p[i]->GetYaxis()->SetTitle("#eta");
      fHDetGenPion_p[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetGenPion_p[i]);
      
      fHDetRecPion_p[i] = new TH3F(Form("fHDetRecPion_p_%s", trackCut[i]), Form("%s: Reconstructed track Phi-Eta-p_{T} distribution of all #pi+", trackCut[i]),  500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetRecPion_p[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetRecPion_p[i]->GetYaxis()->SetTitle("#eta");
      fHDetRecPion_p[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetRecPion_p[i]);

      // pi-
      fHDetGenPion_m[i] = new TH3F(Form("fHDetGenPion_m_%s", trackCut[i]), Form("%s: Detector level truth Phi-Eta-p_{T} distribution of #pi-", trackCut[i]),  500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetGenPion_m[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetGenPion_m[i]->GetYaxis()->SetTitle("#eta");
      fHDetGenPion_m[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetGenPion_m[i]);
      
      fHDetRecPion_m[i] = new TH3F(Form("fHDetRecPion_m_%s", trackCut[i]), Form("%s: Reconstructed track Phi-Eta-p_{T} distribution of #pi-", trackCut[i]),  500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetRecPion_m[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetRecPion_m[i]->GetYaxis()->SetTitle("#eta");
      fHDetRecPion_m[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetRecPion_m[i]);

        //pi+ without injected signal
      fHDetGenPion_rmInj_p[i] = new TH3F(Form("fHDetGenPion_rmInj_p_%s", trackCut[i]), Form("%s: Detector level truth Phi-Eta-p_{T} distribution of #pi+ without injected signal", trackCut[i]), 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetGenPion_rmInj_p[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetGenPion_rmInj_p[i]->GetYaxis()->SetTitle("#eta");
      fHDetGenPion_rmInj_p[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetGenPion_rmInj_p[i]);
      
      fHDetRecPion_rmInj_p[i] = new TH3F(Form("fHDetRecPion_rmInj_p_%s", trackCut[i]), Form("%s: Reconstructed track Phi-Eta-p_{T} distribution of #pi+ without injected signal", trackCut[i]), 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetRecPion_rmInj_p[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetRecPion_rmInj_p[i]->GetYaxis()->SetTitle("#eta");
      fHDetRecPion_rmInj_p[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetRecPion_rmInj_p[i]);

      //pi- charged particle without injected signal
      fHDetGenPion_rmInj_m[i] = new TH3F(Form("fHDetGenPion_rmInj_m_%s", trackCut[i]), Form("%s: Detector level truth Phi-Eta-p_{T} distribution of #pi- without injected signal", trackCut[i]), 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetGenPion_rmInj_m[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetGenPion_rmInj_m[i]->GetYaxis()->SetTitle("#eta");
      fHDetGenPion_rmInj_m[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetGenPion_rmInj_m[i]);
      
      fHDetRecPion_rmInj_m[i] = new TH3F(Form("fHDetRecPion_rmInj_m_%s", trackCut[i]), Form("%s: Reconstructed track Phi-Eta-p_{T} distribution of #pi- without injected signal", trackCut[i]), 500, 0, 100, 100, -1.0, 1.0, 120, 0.0,2.*TMath::Pi());
      fHDetRecPion_rmInj_m[i]->GetXaxis()->SetTitle("p_{T}^{gen} (GeV/c)");
      fHDetRecPion_rmInj_m[i]->GetYaxis()->SetTitle("#eta");
      fHDetRecPion_rmInj_m[i]->GetZaxis()->SetTitle("#phi");
      fOutputList->Add(fHDetRecPion_rmInj_m[i]);
    }
  }    
  
  fTrackIndices = new TArrayI();
  fClusterIndices = new TArrayI();
  
  fClusterArray = new TObjArray();
  fClusterArray->SetOwner(1);
  
  PostData(1, fOutputList);
}

//________________________________________________________________________
void AliAnalysisTaskSOH::UserExec(Option_t *) 
{
  // Main loop, called for each event.

  // Post output data.
  fESD = dynamic_cast<AliESDEvent*>(InputEvent());
  if (!fESD) {
    printf("ERROR: fESD not available\n");
    return;
  }
  if (!EsdVertexOk())  return;  // Vetex cut

  fMC = MCEvent();
  if (!fMC) {
    printf("ERROR: fMC not available\n");
    return;
  }

  fHEventStat->Fill(0.5);

  if(fTrackIndices) 
    fTrackIndices->Reset();
  if(fClusterIndices) 
    fClusterIndices->Reset();
  if(fClusterArray)
    fClusterArray->Delete();

  if(fTrackProcess) 
    ProcessTrack();
  if(fClusterProcess)
    ProcessCluster();
  if(fMcProcess)
    ProcessMc();
  if(fSFProcess)
    ProcessScaleFactor();
  
  PostData(1, fOutputList);
}   
   
//________________________________________________________________________
void  AliAnalysisTaskSOH::ProcessTrack()
{
  // Process track.
  
  fTrackIndices->Set(fESD->GetNumberOfTracks());
  AliDebug(3,Form("%s:%d Selecting tracks",(char*)__FILE__,__LINE__));

  Int_t isMth = 0;
  Int_t nTracks = 0;

  Float_t ClsPos[3] = {-999,-999,-999};
  Double_t emcTrkpos[3] = {-999,-999,-999};

  for(Int_t itr=0; itr<fESD->GetNumberOfTracks(); itr++)
  {
    AliESDtrack *esdtrack = fESD->GetTrack(itr);
    if(!esdtrack)continue;
    AliESDtrack *newTrack = GetAcceptTrack(esdtrack);
    if(!newTrack) continue;
    if(newTrack->Pt()<0.15 || TMath::Abs(newTrack->Eta())>0.9) {delete newTrack; continue;}
    
    if(fClusterProcess)
    {  
      Double_t clsE = -1;
      Int_t clsIndex = newTrack->GetEMCALcluster();
      if(newTrack->GetEMCALcluster()>-1)
      {
	AliESDCaloCluster *cluster = fESD->GetCaloCluster(clsIndex);
	if(IsGoodCluster(cluster))
        {
	  isMth=1;
	  
	  cluster->GetPosition(ClsPos);
	  TVector3 VClsPos(ClsPos[0], ClsPos[1], ClsPos[2]);
	  
	  AliEMCALTrack EMCTrk(*newTrack);
	  if(!EMCTrk.PropagateToGlobal(ClsPos[0], ClsPos[1], ClsPos[2], 0.0, 0.0)) {continue;}
	  EMCTrk.GetXYZ(emcTrkpos);
	  TVector3 VemcTrkPos(emcTrkpos[0],emcTrkpos[1],emcTrkpos[2]);
	  
	  Double_t dPhi = VClsPos.Phi() - VemcTrkPos.Phi();
	  if (dPhi < -1*TMath::Pi()) dPhi += (2*TMath::Pi());
	  else if (dPhi > TMath::Pi()) dPhi -= (2*TMath::Pi());
	  
	  Double_t dEta = VClsPos.Eta() - VemcTrkPos.Eta();
	  
	  fHEMCalRecdPhidEta->Fill(dEta, dPhi);	
	  
	  if((newTrack->GetLabel())>-1 && (newTrack->GetLabel()) < fMC->GetNumberOfTracks())
	  {
	    AliVParticle *vParticle = fMC->GetTrack(newTrack->GetLabel());
	    if(IsGoodMcParticle(vParticle, newTrack->GetLabel()))
	    {
	      fHEMCalRecdPhidEta_Truth->Fill(dEta, dPhi);
	      if(vParticle->Charge() > 0) fHEMCalRecdPhidEtaP_Truth->Fill(dEta, dPhi);
	      if(vParticle->Charge() < 0) fHEMCalRecdPhidEtaM_Truth->Fill(dEta, dPhi);
	    }
	  }
	  
	  if(esdtrack->Charge() > 0) {fHEMCalRecdPhidEtaP->Fill(dEta, dPhi);}
	  if(esdtrack->Charge() < 0) {fHEMCalRecdPhidEtaM->Fill(dEta, dPhi);}
	  
	  if(VemcTrkPos.Eta() > 0) fHEMCalRecdPhidEtaposEta->Fill(dEta, dPhi);
	  if(VemcTrkPos.Eta() < 0) fHEMCalRecdPhidEtanegEta->Fill(dEta, dPhi);
	  
	  clsE = cluster->E();
	  if(newTrack->P()>0) fHEOverPVsPt->Fill(newTrack->Pt(),clsE/newTrack->P());
	}
	
	Int_t ipart = newTrack->GetLabel();
	if(ipart>-1 && ipart<fMC->GetNumberOfTracks())
	{
	  AliVParticle* vParticle = fMC->GetTrack(ipart);
	  if(isMth && vParticle)
	  {
	    if(TMath::Abs(vParticle->PdgCode())==211)
	    {
	      fHEMCalResponsePion->Fill(newTrack->Pt(),clsE/newTrack->P());
	    }
	    if(TMath::Abs(vParticle->PdgCode())==11)
	    {
	      fHEMCalResponseElec->Fill(newTrack->Pt(),clsE/newTrack->P());
	    }
	    if(TMath::Abs(vParticle->PdgCode())==2212)
	    {
	      fHEMCalResponseProton->Fill(newTrack->Pt(),clsE/newTrack->P());
	    }
	  }
	}
      }
    }
    if(newTrack) delete newTrack;

    // Track Indices
    fTrackIndices->AddAt(itr,nTracks);
    nTracks++;
  }

  fTrackIndices->Set(nTracks);
}

//________________________________________________________________________
void AliAnalysisTaskSOH::ProcessCluster()
{
  // Process cluster.

  Int_t nCluster = 0;
  TLorentzVector gamma;
  Double_t vertex[3] = {0, 0, 0};
  fESD->GetVertex()->GetXYZ(vertex);
  const Int_t nCaloClusters = fESD->GetNumberOfCaloClusters(); 
  fClusterIndices->Set(nCaloClusters);
  Float_t ClsPos[3] = {-999,-999,-999};

  for(Int_t itr=0; itr<nCaloClusters; itr++) 
  {
    fHEventStat->Fill(1.5); 
    AliESDCaloCluster *cluster = fESD->GetCaloCluster(itr);
    if(!IsGoodCluster(cluster)) continue;
    cluster->GetMomentum(gamma, vertex);
    if (gamma.Pt() < 0.15) continue;
    fHEventStat->Fill(2.5);

    cluster->GetPosition(ClsPos);
    TVector3 VClsPos(ClsPos[0], ClsPos[1], ClsPos[2]);
  
    TArrayI *TrackLabels = cluster->GetTracksMatched();
    
    if(TrackLabels->GetSize() == 1)
    {
      AliESDtrack *esdtrack = fESD->GetTrack(TrackLabels->operator[](0));
      AliESDtrack *newTrack = GetAcceptTrack(esdtrack);
      if(newTrack && TMath::Abs(newTrack->Eta())<0.7)
      {
	Double_t Esub = newTrack->P();
	if (Esub > cluster->E()) Esub = cluster->E();
	fHistEsub1Pch->Fill(newTrack->P(), Esub);
	fHistEsub1PchRat->Fill(newTrack->P(), Esub/newTrack->P());
      }
    }

    if(TrackLabels->GetSize() == 2)
    {
      AliESDtrack *esdtrack1 = fESD->GetTrack(TrackLabels->operator[](0));
      AliESDtrack *esdtrack2 = fESD->GetTrack(TrackLabels->operator[](1));
      AliESDtrack *newTrack1 = GetAcceptTrack(esdtrack1);
      AliESDtrack *newTrack2 = GetAcceptTrack(esdtrack2);
      if(newTrack1 && newTrack2 && TMath::Abs(newTrack1->Eta())<0.7  && TMath::Abs(newTrack2->Eta())<0.7)
      {
	Double_t Esub = newTrack1->P() + newTrack2->P();
	if (Esub > cluster->E()) Esub = cluster->E();
	fHistEsub2Pch->Fill(newTrack1->P() + newTrack2->P(), Esub);
	fHistEsub2PchRat->Fill(newTrack1->P() + newTrack2->P(), Esub/(newTrack1->P() + newTrack2->P()));
      }
      else if(newTrack1 && !(newTrack2) && TMath::Abs(newTrack1->Eta())<0.7)
      {
	Double_t Esub = newTrack1->P();
	if (Esub > cluster->E()) Esub = cluster->E();
	fHistEsub1Pch->Fill(newTrack1->P(), Esub);
	fHistEsub1PchRat->Fill(newTrack1->P(), Esub/newTrack1->P());
      }
      else if (!(newTrack1) && newTrack2 && TMath::Abs(newTrack2->Eta())<0.7)
      {
	Double_t Esub = newTrack2->P();
	if (Esub > cluster->E()) Esub = cluster->E();
	fHistEsub1Pch->Fill(newTrack2->P(), Esub);
	fHistEsub1PchRat->Fill(newTrack2->P(), Esub/newTrack2->P());
      }
      else {;}
    }

    TArrayI *MCLabels = cluster->GetLabelsArray();

    if(MCLabels->GetSize() == 0) fHEventStat->Fill(3.5);
    if(MCLabels->GetSize() == 1) 
    {
      fHEventStat->Fill(4.5);
      AliVParticle* vParticle1 = fMC->GetTrack(MCLabels->operator[](0));
      if(IsGoodMcParticle(vParticle1, MCLabels->operator[](0)))
      {
	Double_t Entries[4] = {VClsPos.Phi(), VClsPos.Eta(), vParticle1->E(), cluster->E()/vParticle1->E()}; 
	fHClsEoverMcE_All->Fill(Entries);
	if(vParticle1->PdgCode() == 22) 
	{
	  fHClsEoverMcE_Photon->Fill(Entries);
	}
	if(TMath::Abs(vParticle1->PdgCode()) == 11)
	{
	  fHClsEoverMcE_Elec->Fill(Entries);
	}
	if(TMath::Abs(vParticle1->PdgCode()) == 211) 
	{
	  fHClsEoverMcE_Pion->Fill(Entries);
	}
      }
    }
    if(MCLabels->GetSize() == 2) 
    {
      fHEventStat->Fill(5.5);
      AliVParticle* vParticle1 = fMC->GetTrack(MCLabels->operator[](0));
      AliVParticle* vParticle2 = fMC->GetTrack(MCLabels->operator[](1));
      if(IsGoodMcParticle(vParticle1, MCLabels->operator[](0)) && IsGoodMcParticle(vParticle2, MCLabels->operator[](1))) 
      {
	fHEventStat->Fill(6.5);
	if((vParticle1->PdgCode()==22) && (vParticle2->PdgCode()==22)) {;}
	else if((vParticle1->PdgCode()!=22) && (vParticle2->PdgCode()!=22)) {;}
	else 
	{
	  fClusterIndices->AddAt(itr,nCluster);
	  nCluster++;
	}
      }
    }
    if(MCLabels->GetSize() > 2) fHEventStat->Fill(7.5);

    AliESDCaloCluster *newCluster = new AliESDCaloCluster(*cluster);
 
    Double_t subE = 0;
    TArrayI arrayTrackMatched(fTrackIndices->GetSize());
    Int_t nGoodMatch = 0;

    for(Int_t j=0; j<fTrackIndices->GetSize(); j++)
    {
      AliESDtrack *trk = fESD->GetTrack(fTrackIndices->At(j));
      if(itr==trk->GetEMCALcluster())
      {
	arrayTrackMatched[nGoodMatch] = j;
	nGoodMatch ++;
	subE += trk->P();
      }
    }
  
    arrayTrackMatched.Set(nGoodMatch);
    newCluster->AddTracksMatched(arrayTrackMatched);
      
    Double_t clsE = newCluster->E();
    Double_t newE = clsE-subE; 
    if(newE<0) newE = 0;
    newCluster->SetDispersion(newE);
    fClusterArray->Add(newCluster);
  }

  fClusterIndices->Set(nCluster);
}
//________________________________________________________________________
void AliAnalysisTaskSOH::ProcessMc()
{
  // Process MC.
   for(Int_t i=0; i<fTrackIndices->GetSize(); i++)
  {
    AliESDtrack *esdtrack = fESD->GetTrack(fTrackIndices->At(i));
    if(!esdtrack)continue;
    AliESDtrack *newTrack = GetAcceptTrack(esdtrack);
    if(!newTrack) continue;
    if(newTrack->Pt()<0.15 || TMath::Abs(newTrack->Eta())>0.9) {delete newTrack; continue;}

    Int_t index = esdtrack->GetLabel();
    if(index < 0) 
    {
      AliVParticle *vParticle1  = (AliVParticle*)fMC->GetTrack(-1*index);
      if((TMath::Abs(vParticle1->PdgCode())==211) && IsGoodMcParticle(vParticle1, -1*index)) 
      {
	fHDetRecFakePion->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
	fHDetGenFakePion->Fill(vParticle1->Pt(), vParticle1->Eta(), vParticle1->Phi());
      }
    }
    
    AliVParticle* vParticle2 = fMC->GetTrack(TMath::Abs(index));
    if(!IsGoodMcParticle(vParticle2, TMath::Abs(index)) && (TMath::Abs(vParticle2->PdgCode())==211)) 
    {
      fHDetRecSecPion->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
      fHDetGenSecPion->Fill(vParticle2->Pt(), vParticle2->Eta(), vParticle2->Phi());
    }

    if(newTrack) delete newTrack;
  }

  //tracking effciency
  AliHeader* header = (AliHeader*) fMC->Header();    
  if (!header) AliFatal("fInjectedSignals set but no MC header found");

  AliGenCocktailEventHeader* cocktailHeader = dynamic_cast<AliGenCocktailEventHeader*> (header->GenEventHeader());
  if (!cocktailHeader)
  {
    header->Dump();
    AliFatal("fInjectedSignals set but no MC cocktail header found");
  }

  AliGenEventHeader* eventHeader = 0;
  eventHeader = dynamic_cast<AliGenEventHeader*> (cocktailHeader->GetHeaders()->First());
  if (!eventHeader) AliFatal("First event header not found");

  for(Int_t ipart=0; ipart<fMC->GetNumberOfTracks(); ipart++)
  {
    AliVParticle* vParticle = fMC->GetTrack(ipart);
    Int_t pdgCode = vParticle->PdgCode();
    AliMCParticle *McParticle  = (AliMCParticle*)fMC->GetTrack(ipart);
    if(!IsGoodMcParticle(vParticle, ipart)) continue;  
 
    if(TMath::Abs(vParticle->Eta())<0.9)
    {
      if(pdgCode==211) 
      {
	fHParGenPion_p->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	if(McParticle->GetMother() < eventHeader->NProduced()) fHParGenPion_rmInj_p->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi()); 
      }
    
      else if(pdgCode==-211) 
      {
	fHParGenPion_m->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	if(McParticle->GetMother() < eventHeader->NProduced()) fHParGenPion_rmInj_m->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi()); 
      }
    }
      
    for(Int_t j=0; j<fTrackIndices->GetSize(); j++)
    {
      AliESDtrack *esdtrack = fESD->GetTrack(fTrackIndices->At(j));
      if(!esdtrack)continue;
      AliESDtrack *newTrack = GetAcceptTrack(esdtrack);
      if(!newTrack) continue;
      if(newTrack->Pt()<0.15 || TMath::Abs(newTrack->Eta())>0.9) {delete newTrack; continue;}
      
      Int_t cutType = (Int_t)newTrack->GetTRDQuality();
      
      if(newTrack->GetLabel()==ipart && TMath::Abs(vParticle->Eta())<0.9)
      {
	if(pdgCode==211) 
	{
	  fHDetGenPion_p[cutType]->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	  fHDetRecPion_p[cutType]->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
	  if(McParticle->GetMother() < eventHeader->NProduced())
	  {
	    fHDetGenPion_rmInj_p[cutType]->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	    fHDetRecPion_rmInj_p[cutType]->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
	  }	  
	}
	else if(pdgCode==-211) 
	{
	  fHDetGenPion_m[cutType]->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	  fHDetRecPion_m[cutType]->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
	  if(McParticle->GetMother() < eventHeader->NProduced())
	  {
	    fHDetGenPion_rmInj_m[cutType]->Fill(vParticle->Pt(), vParticle->Eta(), vParticle->Phi());
	    fHDetRecPion_rmInj_m[cutType]->Fill(newTrack->Pt(), newTrack->Eta(), newTrack->Phi());
	  }	  
	}
	  

    //cluster E vs. truth photon energy
	if(fClusterProcess)
	 {
	   for(Int_t k=0; k<fClusterIndices->GetSize(); k++)
	   {
	     AliESDCaloCluster *cluster = fESD->GetCaloCluster(fClusterIndices->At(k));
	     Double_t clsE = cluster->E();
	     TArrayI *MCLabels = cluster->GetLabelsArray();
	     AliVParticle* vParticle1 = fMC->GetTrack(MCLabels->operator[](0));
	     AliVParticle* vParticle2 = fMC->GetTrack(MCLabels->operator[](1));
	     
	     if(vParticle1->PdgCode()==22 && vParticle2 == vParticle)
	     {
	       fHPhotonEdiff0HC->Fill(vParticle1->E(), (vParticle1->E() - clsE)/vParticle1->E());
	       fHPhotonEVsClsE->Fill(vParticle1->E(), clsE);
	       
	       if((clsE - 0.3*esdtrack->E())<0) fHPhotonEdiff30HC->Fill(vParticle1->E(), 1);
	       else  fHPhotonEdiff30HC->Fill(vParticle1->E(), (vParticle1->E() + 0.3*esdtrack->E() - clsE)/vParticle1->E());
	       
	       if((clsE - 0.7*esdtrack->E())<0) fHPhotonEdiff70HC->Fill(vParticle1->E(), 1);
	       else  fHPhotonEdiff70HC->Fill(vParticle1->E(), (vParticle1->E() + 0.7*esdtrack->E() - clsE)/vParticle1->E());
	       
	       if((clsE - esdtrack->E())<0) fHPhotonEdiff100HC->Fill(vParticle1->E(), 1);
	       else  fHPhotonEdiff100HC->Fill(vParticle1->E(), (vParticle1->E() + esdtrack->E() - clsE)/vParticle1->E());
	       continue;
	     }
	     if(vParticle2->PdgCode()==22 && vParticle1 == vParticle)
	     {
	       fHPhotonEdiff0HC->Fill(vParticle2->E(), (vParticle2->E() - clsE)/vParticle2->E());
	       fHPhotonEVsClsE->Fill(vParticle2->E(), clsE);
	       
	       if((clsE - 0.3*esdtrack->E())<0) fHPhotonEdiff30HC->Fill(vParticle2->E(), 1);
	       else fHPhotonEdiff30HC->Fill(vParticle2->E(), (vParticle2->E() + 0.3*esdtrack->E() - clsE)/vParticle2->E());
	       
	       if((clsE - 0.7*esdtrack->E())<0) fHPhotonEdiff70HC->Fill(vParticle2->E(), 1);
	       else fHPhotonEdiff70HC->Fill(vParticle2->E(), (vParticle2->E() + 0.7*esdtrack->E() - clsE)/vParticle2->E());
	       
	       if((clsE-esdtrack->E())<0) fHPhotonEdiff100HC->Fill(vParticle2->E(), 1);
	       else fHPhotonEdiff100HC->Fill(vParticle2->E(), (vParticle2->E() + esdtrack->E() - clsE)/vParticle2->E());
	     }
	   }
	 }
	if(newTrack) delete newTrack;
	break;
      }
      if(newTrack) delete newTrack;
    }
  }
}


//________________________________________________________________________
void AliAnalysisTaskSOH::ProcessScaleFactor()
{
  // Scale factor. 

  const Double_t phiMax = 180 * TMath::DegToRad();
  const Double_t phiMin = 80 * TMath::DegToRad();
  const Double_t TPCArea= 2*TMath::Pi()*1.8;
  const Double_t EMCArea = (phiMax-phiMin)*1.4;

  Double_t PtEMC = 0;
  Double_t PtTPC = 0;

  for(Int_t j=0; j<fTrackIndices->GetSize(); j++)
  {
    AliESDtrack *trk = fESD->GetTrack(fTrackIndices->At(j));
    Double_t eta = trk->Eta();
    Double_t phi = trk->Phi();
    if(TMath::Abs(eta)<0.9) PtTPC += trk->Pt();
    if(TMath::Abs(eta)<0.7  && phi > phiMin && phi < phiMax ) PtEMC += trk->Pt();
  }

  Double_t EtWithHadCorr = 0;
  Double_t EtWithoutHadCorr = 0;
  Double_t vertex[3] = {0, 0, 0};
  fESD->GetVertex()->GetXYZ(vertex);
  TLorentzVector gamma;

  for(Int_t i=0; i<fClusterArray->GetEntriesFast(); i++)
  {
    AliESDCaloCluster *cluster = (AliESDCaloCluster*)fClusterArray->At(i);
    cluster->GetMomentum(gamma, vertex);
    Double_t sinTheta = TMath::Sqrt(1-TMath::Power(gamma.CosTheta(),2));
    EtWithoutHadCorr +=  cluster->E() * sinTheta;
    EtWithHadCorr += cluster->GetDispersion() * sinTheta;
  }

  if(PtTPC>0)
  {
    fHScaleFactor->Fill((PtEMC+EtWithoutHadCorr)/EMCArea * TPCArea/PtTPC);
    fHScaleFactor100HC->Fill((PtEMC+EtWithHadCorr)/EMCArea * TPCArea/PtTPC);
  }
}

//________________________________________________________________________
AliESDtrack *AliAnalysisTaskSOH::GetAcceptTrack(AliESDtrack *esdtrack)
{
  // Get accepted track.
  AliESDtrack *newTrack = 0x0;
  if(fEsdTrackCuts->AcceptTrack(esdtrack))
  {
    newTrack = new AliESDtrack(*esdtrack);
    newTrack->SetTRDQuality(0);
  }
  else if(fHybridTrackCuts1->AcceptTrack(esdtrack))
  {
    if(esdtrack->GetConstrainedParam())
    {
      newTrack = new AliESDtrack(*esdtrack);
      const AliExternalTrackParam* constrainParam = esdtrack->GetConstrainedParam();
      newTrack->Set(constrainParam->GetX(),constrainParam->GetAlpha(),constrainParam->GetParameter(),constrainParam->GetCovariance());
      newTrack->SetTRDQuality(1);		
    }
    else 
      return 0x0;
  }
  else if(fHybridTrackCuts2->AcceptTrack(esdtrack))
  {
    if(esdtrack->GetConstrainedParam())
    {
      newTrack = new AliESDtrack(*esdtrack);
      const AliExternalTrackParam* constrainParam = esdtrack->GetConstrainedParam();
      newTrack->Set(constrainParam->GetX(),constrainParam->GetAlpha(),constrainParam->GetParameter(),constrainParam->GetCovariance());
      newTrack->SetTRDQuality(2);		
    }
    else 
      return 0x0;
  }
  else
  {
    return 0x0;
  }

  return newTrack;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskSOH::IsGoodMcParticle(AliVParticle* vParticle, Int_t ipart)
{
  // Return true if good MC particle.

  if(!vParticle) return kFALSE;
  if(!fMC->IsPhysicalPrimary(ipart)) return kFALSE;
  if (TMath::Abs(vParticle->Eta())>2) return kFALSE;
  if(vParticle->Pt()<0.15) return kFALSE;
  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskSOH::IsGoodCluster(AliESDCaloCluster *cluster)
{
  // Return true if good cluster.

  if(!cluster) return kFALSE;
  if (!cluster->IsEMCAL()) return kFALSE;
  return kTRUE;
}

//________________________________________________________________________
void AliAnalysisTaskSOH::Terminate(Option_t *) 
{
  // Terminate analysis.
}

//________________________________________________________________________
Bool_t AliAnalysisTaskSOH::EsdVertexOk() const
{
  // Modified from AliAnalyseLeadingTrackUE::VertexSelection()  

  const AliESDVertex* vtx = fESD->GetPrimaryVertex();
  if (!vtx) return kFALSE;
  Int_t nContributors = vtx->GetNContributors();
  Double_t zVertex    = vtx->GetZ();
  if( nContributors < 1 || TMath::Abs(zVertex) > fZVtxMax ) return kFALSE;
  return kTRUE;
}
 AliAnalysisTaskSOH.cxx:1
 AliAnalysisTaskSOH.cxx:2
 AliAnalysisTaskSOH.cxx:3
 AliAnalysisTaskSOH.cxx:4
 AliAnalysisTaskSOH.cxx:5
 AliAnalysisTaskSOH.cxx:6
 AliAnalysisTaskSOH.cxx:7
 AliAnalysisTaskSOH.cxx:8
 AliAnalysisTaskSOH.cxx:9
 AliAnalysisTaskSOH.cxx:10
 AliAnalysisTaskSOH.cxx:11
 AliAnalysisTaskSOH.cxx:12
 AliAnalysisTaskSOH.cxx:13
 AliAnalysisTaskSOH.cxx:14
 AliAnalysisTaskSOH.cxx:15
 AliAnalysisTaskSOH.cxx:16
 AliAnalysisTaskSOH.cxx:17
 AliAnalysisTaskSOH.cxx:18
 AliAnalysisTaskSOH.cxx:19
 AliAnalysisTaskSOH.cxx:20
 AliAnalysisTaskSOH.cxx:21
 AliAnalysisTaskSOH.cxx:22
 AliAnalysisTaskSOH.cxx:23
 AliAnalysisTaskSOH.cxx:24
 AliAnalysisTaskSOH.cxx:25
 AliAnalysisTaskSOH.cxx:26
 AliAnalysisTaskSOH.cxx:27
 AliAnalysisTaskSOH.cxx:28
 AliAnalysisTaskSOH.cxx:29
 AliAnalysisTaskSOH.cxx:30
 AliAnalysisTaskSOH.cxx:31
 AliAnalysisTaskSOH.cxx:32
 AliAnalysisTaskSOH.cxx:33
 AliAnalysisTaskSOH.cxx:34
 AliAnalysisTaskSOH.cxx:35
 AliAnalysisTaskSOH.cxx:36
 AliAnalysisTaskSOH.cxx:37
 AliAnalysisTaskSOH.cxx:38
 AliAnalysisTaskSOH.cxx:39
 AliAnalysisTaskSOH.cxx:40
 AliAnalysisTaskSOH.cxx:41
 AliAnalysisTaskSOH.cxx:42
 AliAnalysisTaskSOH.cxx:43
 AliAnalysisTaskSOH.cxx:44
 AliAnalysisTaskSOH.cxx:45
 AliAnalysisTaskSOH.cxx:46
 AliAnalysisTaskSOH.cxx:47
 AliAnalysisTaskSOH.cxx:48
 AliAnalysisTaskSOH.cxx:49
 AliAnalysisTaskSOH.cxx:50
 AliAnalysisTaskSOH.cxx:51
 AliAnalysisTaskSOH.cxx:52
 AliAnalysisTaskSOH.cxx:53
 AliAnalysisTaskSOH.cxx:54
 AliAnalysisTaskSOH.cxx:55
 AliAnalysisTaskSOH.cxx:56
 AliAnalysisTaskSOH.cxx:57
 AliAnalysisTaskSOH.cxx:58
 AliAnalysisTaskSOH.cxx:59
 AliAnalysisTaskSOH.cxx:60
 AliAnalysisTaskSOH.cxx:61
 AliAnalysisTaskSOH.cxx:62
 AliAnalysisTaskSOH.cxx:63
 AliAnalysisTaskSOH.cxx:64
 AliAnalysisTaskSOH.cxx:65
 AliAnalysisTaskSOH.cxx:66
 AliAnalysisTaskSOH.cxx:67
 AliAnalysisTaskSOH.cxx:68
 AliAnalysisTaskSOH.cxx:69
 AliAnalysisTaskSOH.cxx:70
 AliAnalysisTaskSOH.cxx:71
 AliAnalysisTaskSOH.cxx:72
 AliAnalysisTaskSOH.cxx:73
 AliAnalysisTaskSOH.cxx:74
 AliAnalysisTaskSOH.cxx:75
 AliAnalysisTaskSOH.cxx:76
 AliAnalysisTaskSOH.cxx:77
 AliAnalysisTaskSOH.cxx:78
 AliAnalysisTaskSOH.cxx:79
 AliAnalysisTaskSOH.cxx:80
 AliAnalysisTaskSOH.cxx:81
 AliAnalysisTaskSOH.cxx:82
 AliAnalysisTaskSOH.cxx:83
 AliAnalysisTaskSOH.cxx:84
 AliAnalysisTaskSOH.cxx:85
 AliAnalysisTaskSOH.cxx:86
 AliAnalysisTaskSOH.cxx:87
 AliAnalysisTaskSOH.cxx:88
 AliAnalysisTaskSOH.cxx:89
 AliAnalysisTaskSOH.cxx:90
 AliAnalysisTaskSOH.cxx:91
 AliAnalysisTaskSOH.cxx:92
 AliAnalysisTaskSOH.cxx:93
 AliAnalysisTaskSOH.cxx:94
 AliAnalysisTaskSOH.cxx:95
 AliAnalysisTaskSOH.cxx:96
 AliAnalysisTaskSOH.cxx:97
 AliAnalysisTaskSOH.cxx:98
 AliAnalysisTaskSOH.cxx:99
 AliAnalysisTaskSOH.cxx:100
 AliAnalysisTaskSOH.cxx:101
 AliAnalysisTaskSOH.cxx:102
 AliAnalysisTaskSOH.cxx:103
 AliAnalysisTaskSOH.cxx:104
 AliAnalysisTaskSOH.cxx:105
 AliAnalysisTaskSOH.cxx:106
 AliAnalysisTaskSOH.cxx:107
 AliAnalysisTaskSOH.cxx:108
 AliAnalysisTaskSOH.cxx:109
 AliAnalysisTaskSOH.cxx:110
 AliAnalysisTaskSOH.cxx:111
 AliAnalysisTaskSOH.cxx:112
 AliAnalysisTaskSOH.cxx:113
 AliAnalysisTaskSOH.cxx:114
 AliAnalysisTaskSOH.cxx:115
 AliAnalysisTaskSOH.cxx:116
 AliAnalysisTaskSOH.cxx:117
 AliAnalysisTaskSOH.cxx:118
 AliAnalysisTaskSOH.cxx:119
 AliAnalysisTaskSOH.cxx:120
 AliAnalysisTaskSOH.cxx:121
 AliAnalysisTaskSOH.cxx:122
 AliAnalysisTaskSOH.cxx:123
 AliAnalysisTaskSOH.cxx:124
 AliAnalysisTaskSOH.cxx:125
 AliAnalysisTaskSOH.cxx:126
 AliAnalysisTaskSOH.cxx:127
 AliAnalysisTaskSOH.cxx:128
 AliAnalysisTaskSOH.cxx:129
 AliAnalysisTaskSOH.cxx:130
 AliAnalysisTaskSOH.cxx:131
 AliAnalysisTaskSOH.cxx:132
 AliAnalysisTaskSOH.cxx:133
 AliAnalysisTaskSOH.cxx:134
 AliAnalysisTaskSOH.cxx:135
 AliAnalysisTaskSOH.cxx:136
 AliAnalysisTaskSOH.cxx:137
 AliAnalysisTaskSOH.cxx:138
 AliAnalysisTaskSOH.cxx:139
 AliAnalysisTaskSOH.cxx:140
 AliAnalysisTaskSOH.cxx:141
 AliAnalysisTaskSOH.cxx:142
 AliAnalysisTaskSOH.cxx:143
 AliAnalysisTaskSOH.cxx:144
 AliAnalysisTaskSOH.cxx:145
 AliAnalysisTaskSOH.cxx:146
 AliAnalysisTaskSOH.cxx:147
 AliAnalysisTaskSOH.cxx:148
 AliAnalysisTaskSOH.cxx:149
 AliAnalysisTaskSOH.cxx:150
 AliAnalysisTaskSOH.cxx:151
 AliAnalysisTaskSOH.cxx:152
 AliAnalysisTaskSOH.cxx:153
 AliAnalysisTaskSOH.cxx:154
 AliAnalysisTaskSOH.cxx:155
 AliAnalysisTaskSOH.cxx:156
 AliAnalysisTaskSOH.cxx:157
 AliAnalysisTaskSOH.cxx:158
 AliAnalysisTaskSOH.cxx:159
 AliAnalysisTaskSOH.cxx:160
 AliAnalysisTaskSOH.cxx:161
 AliAnalysisTaskSOH.cxx:162
 AliAnalysisTaskSOH.cxx:163
 AliAnalysisTaskSOH.cxx:164
 AliAnalysisTaskSOH.cxx:165
 AliAnalysisTaskSOH.cxx:166
 AliAnalysisTaskSOH.cxx:167
 AliAnalysisTaskSOH.cxx:168
 AliAnalysisTaskSOH.cxx:169
 AliAnalysisTaskSOH.cxx:170
 AliAnalysisTaskSOH.cxx:171
 AliAnalysisTaskSOH.cxx:172
 AliAnalysisTaskSOH.cxx:173
 AliAnalysisTaskSOH.cxx:174
 AliAnalysisTaskSOH.cxx:175
 AliAnalysisTaskSOH.cxx:176
 AliAnalysisTaskSOH.cxx:177
 AliAnalysisTaskSOH.cxx:178
 AliAnalysisTaskSOH.cxx:179
 AliAnalysisTaskSOH.cxx:180
 AliAnalysisTaskSOH.cxx:181
 AliAnalysisTaskSOH.cxx:182
 AliAnalysisTaskSOH.cxx:183
 AliAnalysisTaskSOH.cxx:184
 AliAnalysisTaskSOH.cxx:185
 AliAnalysisTaskSOH.cxx:186
 AliAnalysisTaskSOH.cxx:187
 AliAnalysisTaskSOH.cxx:188
 AliAnalysisTaskSOH.cxx:189
 AliAnalysisTaskSOH.cxx:190
 AliAnalysisTaskSOH.cxx:191
 AliAnalysisTaskSOH.cxx:192
 AliAnalysisTaskSOH.cxx:193
 AliAnalysisTaskSOH.cxx:194
 AliAnalysisTaskSOH.cxx:195
 AliAnalysisTaskSOH.cxx:196
 AliAnalysisTaskSOH.cxx:197
 AliAnalysisTaskSOH.cxx:198
 AliAnalysisTaskSOH.cxx:199
 AliAnalysisTaskSOH.cxx:200
 AliAnalysisTaskSOH.cxx:201
 AliAnalysisTaskSOH.cxx:202
 AliAnalysisTaskSOH.cxx:203
 AliAnalysisTaskSOH.cxx:204
 AliAnalysisTaskSOH.cxx:205
 AliAnalysisTaskSOH.cxx:206
 AliAnalysisTaskSOH.cxx:207
 AliAnalysisTaskSOH.cxx:208
 AliAnalysisTaskSOH.cxx:209
 AliAnalysisTaskSOH.cxx:210
 AliAnalysisTaskSOH.cxx:211
 AliAnalysisTaskSOH.cxx:212
 AliAnalysisTaskSOH.cxx:213
 AliAnalysisTaskSOH.cxx:214
 AliAnalysisTaskSOH.cxx:215
 AliAnalysisTaskSOH.cxx:216
 AliAnalysisTaskSOH.cxx:217
 AliAnalysisTaskSOH.cxx:218
 AliAnalysisTaskSOH.cxx:219
 AliAnalysisTaskSOH.cxx:220
 AliAnalysisTaskSOH.cxx:221
 AliAnalysisTaskSOH.cxx:222
 AliAnalysisTaskSOH.cxx:223
 AliAnalysisTaskSOH.cxx:224
 AliAnalysisTaskSOH.cxx:225
 AliAnalysisTaskSOH.cxx:226
 AliAnalysisTaskSOH.cxx:227
 AliAnalysisTaskSOH.cxx:228
 AliAnalysisTaskSOH.cxx:229
 AliAnalysisTaskSOH.cxx:230
 AliAnalysisTaskSOH.cxx:231
 AliAnalysisTaskSOH.cxx:232
 AliAnalysisTaskSOH.cxx:233
 AliAnalysisTaskSOH.cxx:234
 AliAnalysisTaskSOH.cxx:235
 AliAnalysisTaskSOH.cxx:236
 AliAnalysisTaskSOH.cxx:237
 AliAnalysisTaskSOH.cxx:238
 AliAnalysisTaskSOH.cxx:239
 AliAnalysisTaskSOH.cxx:240
 AliAnalysisTaskSOH.cxx:241
 AliAnalysisTaskSOH.cxx:242
 AliAnalysisTaskSOH.cxx:243
 AliAnalysisTaskSOH.cxx:244
 AliAnalysisTaskSOH.cxx:245
 AliAnalysisTaskSOH.cxx:246
 AliAnalysisTaskSOH.cxx:247
 AliAnalysisTaskSOH.cxx:248
 AliAnalysisTaskSOH.cxx:249
 AliAnalysisTaskSOH.cxx:250
 AliAnalysisTaskSOH.cxx:251
 AliAnalysisTaskSOH.cxx:252
 AliAnalysisTaskSOH.cxx:253
 AliAnalysisTaskSOH.cxx:254
 AliAnalysisTaskSOH.cxx:255
 AliAnalysisTaskSOH.cxx:256
 AliAnalysisTaskSOH.cxx:257
 AliAnalysisTaskSOH.cxx:258
 AliAnalysisTaskSOH.cxx:259
 AliAnalysisTaskSOH.cxx:260
 AliAnalysisTaskSOH.cxx:261
 AliAnalysisTaskSOH.cxx:262
 AliAnalysisTaskSOH.cxx:263
 AliAnalysisTaskSOH.cxx:264
 AliAnalysisTaskSOH.cxx:265
 AliAnalysisTaskSOH.cxx:266
 AliAnalysisTaskSOH.cxx:267
 AliAnalysisTaskSOH.cxx:268
 AliAnalysisTaskSOH.cxx:269
 AliAnalysisTaskSOH.cxx:270
 AliAnalysisTaskSOH.cxx:271
 AliAnalysisTaskSOH.cxx:272
 AliAnalysisTaskSOH.cxx:273
 AliAnalysisTaskSOH.cxx:274
 AliAnalysisTaskSOH.cxx:275
 AliAnalysisTaskSOH.cxx:276
 AliAnalysisTaskSOH.cxx:277
 AliAnalysisTaskSOH.cxx:278
 AliAnalysisTaskSOH.cxx:279
 AliAnalysisTaskSOH.cxx:280
 AliAnalysisTaskSOH.cxx:281
 AliAnalysisTaskSOH.cxx:282
 AliAnalysisTaskSOH.cxx:283
 AliAnalysisTaskSOH.cxx:284
 AliAnalysisTaskSOH.cxx:285
 AliAnalysisTaskSOH.cxx:286
 AliAnalysisTaskSOH.cxx:287
 AliAnalysisTaskSOH.cxx:288
 AliAnalysisTaskSOH.cxx:289
 AliAnalysisTaskSOH.cxx:290
 AliAnalysisTaskSOH.cxx:291
 AliAnalysisTaskSOH.cxx:292
 AliAnalysisTaskSOH.cxx:293
 AliAnalysisTaskSOH.cxx:294
 AliAnalysisTaskSOH.cxx:295
 AliAnalysisTaskSOH.cxx:296
 AliAnalysisTaskSOH.cxx:297
 AliAnalysisTaskSOH.cxx:298
 AliAnalysisTaskSOH.cxx:299
 AliAnalysisTaskSOH.cxx:300
 AliAnalysisTaskSOH.cxx:301
 AliAnalysisTaskSOH.cxx:302
 AliAnalysisTaskSOH.cxx:303
 AliAnalysisTaskSOH.cxx:304
 AliAnalysisTaskSOH.cxx:305
 AliAnalysisTaskSOH.cxx:306
 AliAnalysisTaskSOH.cxx:307
 AliAnalysisTaskSOH.cxx:308
 AliAnalysisTaskSOH.cxx:309
 AliAnalysisTaskSOH.cxx:310
 AliAnalysisTaskSOH.cxx:311
 AliAnalysisTaskSOH.cxx:312
 AliAnalysisTaskSOH.cxx:313
 AliAnalysisTaskSOH.cxx:314
 AliAnalysisTaskSOH.cxx:315
 AliAnalysisTaskSOH.cxx:316
 AliAnalysisTaskSOH.cxx:317
 AliAnalysisTaskSOH.cxx:318
 AliAnalysisTaskSOH.cxx:319
 AliAnalysisTaskSOH.cxx:320
 AliAnalysisTaskSOH.cxx:321
 AliAnalysisTaskSOH.cxx:322
 AliAnalysisTaskSOH.cxx:323
 AliAnalysisTaskSOH.cxx:324
 AliAnalysisTaskSOH.cxx:325
 AliAnalysisTaskSOH.cxx:326
 AliAnalysisTaskSOH.cxx:327
 AliAnalysisTaskSOH.cxx:328
 AliAnalysisTaskSOH.cxx:329
 AliAnalysisTaskSOH.cxx:330
 AliAnalysisTaskSOH.cxx:331
 AliAnalysisTaskSOH.cxx:332
 AliAnalysisTaskSOH.cxx:333
 AliAnalysisTaskSOH.cxx:334
 AliAnalysisTaskSOH.cxx:335
 AliAnalysisTaskSOH.cxx:336
 AliAnalysisTaskSOH.cxx:337
 AliAnalysisTaskSOH.cxx:338
 AliAnalysisTaskSOH.cxx:339
 AliAnalysisTaskSOH.cxx:340
 AliAnalysisTaskSOH.cxx:341
 AliAnalysisTaskSOH.cxx:342
 AliAnalysisTaskSOH.cxx:343
 AliAnalysisTaskSOH.cxx:344
 AliAnalysisTaskSOH.cxx:345
 AliAnalysisTaskSOH.cxx:346
 AliAnalysisTaskSOH.cxx:347
 AliAnalysisTaskSOH.cxx:348
 AliAnalysisTaskSOH.cxx:349
 AliAnalysisTaskSOH.cxx:350
 AliAnalysisTaskSOH.cxx:351
 AliAnalysisTaskSOH.cxx:352
 AliAnalysisTaskSOH.cxx:353
 AliAnalysisTaskSOH.cxx:354
 AliAnalysisTaskSOH.cxx:355
 AliAnalysisTaskSOH.cxx:356
 AliAnalysisTaskSOH.cxx:357
 AliAnalysisTaskSOH.cxx:358
 AliAnalysisTaskSOH.cxx:359
 AliAnalysisTaskSOH.cxx:360
 AliAnalysisTaskSOH.cxx:361
 AliAnalysisTaskSOH.cxx:362
 AliAnalysisTaskSOH.cxx:363
 AliAnalysisTaskSOH.cxx:364
 AliAnalysisTaskSOH.cxx:365
 AliAnalysisTaskSOH.cxx:366
 AliAnalysisTaskSOH.cxx:367
 AliAnalysisTaskSOH.cxx:368
 AliAnalysisTaskSOH.cxx:369
 AliAnalysisTaskSOH.cxx:370
 AliAnalysisTaskSOH.cxx:371
 AliAnalysisTaskSOH.cxx:372
 AliAnalysisTaskSOH.cxx:373
 AliAnalysisTaskSOH.cxx:374
 AliAnalysisTaskSOH.cxx:375
 AliAnalysisTaskSOH.cxx:376
 AliAnalysisTaskSOH.cxx:377
 AliAnalysisTaskSOH.cxx:378
 AliAnalysisTaskSOH.cxx:379
 AliAnalysisTaskSOH.cxx:380
 AliAnalysisTaskSOH.cxx:381
 AliAnalysisTaskSOH.cxx:382
 AliAnalysisTaskSOH.cxx:383
 AliAnalysisTaskSOH.cxx:384
 AliAnalysisTaskSOH.cxx:385
 AliAnalysisTaskSOH.cxx:386
 AliAnalysisTaskSOH.cxx:387
 AliAnalysisTaskSOH.cxx:388
 AliAnalysisTaskSOH.cxx:389
 AliAnalysisTaskSOH.cxx:390
 AliAnalysisTaskSOH.cxx:391
 AliAnalysisTaskSOH.cxx:392
 AliAnalysisTaskSOH.cxx:393
 AliAnalysisTaskSOH.cxx:394
 AliAnalysisTaskSOH.cxx:395
 AliAnalysisTaskSOH.cxx:396
 AliAnalysisTaskSOH.cxx:397
 AliAnalysisTaskSOH.cxx:398
 AliAnalysisTaskSOH.cxx:399
 AliAnalysisTaskSOH.cxx:400
 AliAnalysisTaskSOH.cxx:401
 AliAnalysisTaskSOH.cxx:402
 AliAnalysisTaskSOH.cxx:403
 AliAnalysisTaskSOH.cxx:404
 AliAnalysisTaskSOH.cxx:405
 AliAnalysisTaskSOH.cxx:406
 AliAnalysisTaskSOH.cxx:407
 AliAnalysisTaskSOH.cxx:408
 AliAnalysisTaskSOH.cxx:409
 AliAnalysisTaskSOH.cxx:410
 AliAnalysisTaskSOH.cxx:411
 AliAnalysisTaskSOH.cxx:412
 AliAnalysisTaskSOH.cxx:413
 AliAnalysisTaskSOH.cxx:414
 AliAnalysisTaskSOH.cxx:415
 AliAnalysisTaskSOH.cxx:416
 AliAnalysisTaskSOH.cxx:417
 AliAnalysisTaskSOH.cxx:418
 AliAnalysisTaskSOH.cxx:419
 AliAnalysisTaskSOH.cxx:420
 AliAnalysisTaskSOH.cxx:421
 AliAnalysisTaskSOH.cxx:422
 AliAnalysisTaskSOH.cxx:423
 AliAnalysisTaskSOH.cxx:424
 AliAnalysisTaskSOH.cxx:425
 AliAnalysisTaskSOH.cxx:426
 AliAnalysisTaskSOH.cxx:427
 AliAnalysisTaskSOH.cxx:428
 AliAnalysisTaskSOH.cxx:429
 AliAnalysisTaskSOH.cxx:430
 AliAnalysisTaskSOH.cxx:431
 AliAnalysisTaskSOH.cxx:432
 AliAnalysisTaskSOH.cxx:433
 AliAnalysisTaskSOH.cxx:434
 AliAnalysisTaskSOH.cxx:435
 AliAnalysisTaskSOH.cxx:436
 AliAnalysisTaskSOH.cxx:437
 AliAnalysisTaskSOH.cxx:438
 AliAnalysisTaskSOH.cxx:439
 AliAnalysisTaskSOH.cxx:440
 AliAnalysisTaskSOH.cxx:441
 AliAnalysisTaskSOH.cxx:442
 AliAnalysisTaskSOH.cxx:443
 AliAnalysisTaskSOH.cxx:444
 AliAnalysisTaskSOH.cxx:445
 AliAnalysisTaskSOH.cxx:446
 AliAnalysisTaskSOH.cxx:447
 AliAnalysisTaskSOH.cxx:448
 AliAnalysisTaskSOH.cxx:449
 AliAnalysisTaskSOH.cxx:450
 AliAnalysisTaskSOH.cxx:451
 AliAnalysisTaskSOH.cxx:452
 AliAnalysisTaskSOH.cxx:453
 AliAnalysisTaskSOH.cxx:454
 AliAnalysisTaskSOH.cxx:455
 AliAnalysisTaskSOH.cxx:456
 AliAnalysisTaskSOH.cxx:457
 AliAnalysisTaskSOH.cxx:458
 AliAnalysisTaskSOH.cxx:459
 AliAnalysisTaskSOH.cxx:460
 AliAnalysisTaskSOH.cxx:461
 AliAnalysisTaskSOH.cxx:462
 AliAnalysisTaskSOH.cxx:463
 AliAnalysisTaskSOH.cxx:464
 AliAnalysisTaskSOH.cxx:465
 AliAnalysisTaskSOH.cxx:466
 AliAnalysisTaskSOH.cxx:467
 AliAnalysisTaskSOH.cxx:468
 AliAnalysisTaskSOH.cxx:469
 AliAnalysisTaskSOH.cxx:470
 AliAnalysisTaskSOH.cxx:471
 AliAnalysisTaskSOH.cxx:472
 AliAnalysisTaskSOH.cxx:473
 AliAnalysisTaskSOH.cxx:474
 AliAnalysisTaskSOH.cxx:475
 AliAnalysisTaskSOH.cxx:476
 AliAnalysisTaskSOH.cxx:477
 AliAnalysisTaskSOH.cxx:478
 AliAnalysisTaskSOH.cxx:479
 AliAnalysisTaskSOH.cxx:480
 AliAnalysisTaskSOH.cxx:481
 AliAnalysisTaskSOH.cxx:482
 AliAnalysisTaskSOH.cxx:483
 AliAnalysisTaskSOH.cxx:484
 AliAnalysisTaskSOH.cxx:485
 AliAnalysisTaskSOH.cxx:486
 AliAnalysisTaskSOH.cxx:487
 AliAnalysisTaskSOH.cxx:488
 AliAnalysisTaskSOH.cxx:489
 AliAnalysisTaskSOH.cxx:490
 AliAnalysisTaskSOH.cxx:491
 AliAnalysisTaskSOH.cxx:492
 AliAnalysisTaskSOH.cxx:493
 AliAnalysisTaskSOH.cxx:494
 AliAnalysisTaskSOH.cxx:495
 AliAnalysisTaskSOH.cxx:496
 AliAnalysisTaskSOH.cxx:497
 AliAnalysisTaskSOH.cxx:498
 AliAnalysisTaskSOH.cxx:499
 AliAnalysisTaskSOH.cxx:500
 AliAnalysisTaskSOH.cxx:501
 AliAnalysisTaskSOH.cxx:502
 AliAnalysisTaskSOH.cxx:503
 AliAnalysisTaskSOH.cxx:504
 AliAnalysisTaskSOH.cxx:505
 AliAnalysisTaskSOH.cxx:506
 AliAnalysisTaskSOH.cxx:507
 AliAnalysisTaskSOH.cxx:508
 AliAnalysisTaskSOH.cxx:509
 AliAnalysisTaskSOH.cxx:510
 AliAnalysisTaskSOH.cxx:511
 AliAnalysisTaskSOH.cxx:512
 AliAnalysisTaskSOH.cxx:513
 AliAnalysisTaskSOH.cxx:514
 AliAnalysisTaskSOH.cxx:515
 AliAnalysisTaskSOH.cxx:516
 AliAnalysisTaskSOH.cxx:517
 AliAnalysisTaskSOH.cxx:518
 AliAnalysisTaskSOH.cxx:519
 AliAnalysisTaskSOH.cxx:520
 AliAnalysisTaskSOH.cxx:521
 AliAnalysisTaskSOH.cxx:522
 AliAnalysisTaskSOH.cxx:523
 AliAnalysisTaskSOH.cxx:524
 AliAnalysisTaskSOH.cxx:525
 AliAnalysisTaskSOH.cxx:526
 AliAnalysisTaskSOH.cxx:527
 AliAnalysisTaskSOH.cxx:528
 AliAnalysisTaskSOH.cxx:529
 AliAnalysisTaskSOH.cxx:530
 AliAnalysisTaskSOH.cxx:531
 AliAnalysisTaskSOH.cxx:532
 AliAnalysisTaskSOH.cxx:533
 AliAnalysisTaskSOH.cxx:534
 AliAnalysisTaskSOH.cxx:535
 AliAnalysisTaskSOH.cxx:536
 AliAnalysisTaskSOH.cxx:537
 AliAnalysisTaskSOH.cxx:538
 AliAnalysisTaskSOH.cxx:539
 AliAnalysisTaskSOH.cxx:540
 AliAnalysisTaskSOH.cxx:541
 AliAnalysisTaskSOH.cxx:542
 AliAnalysisTaskSOH.cxx:543
 AliAnalysisTaskSOH.cxx:544
 AliAnalysisTaskSOH.cxx:545
 AliAnalysisTaskSOH.cxx:546
 AliAnalysisTaskSOH.cxx:547
 AliAnalysisTaskSOH.cxx:548
 AliAnalysisTaskSOH.cxx:549
 AliAnalysisTaskSOH.cxx:550
 AliAnalysisTaskSOH.cxx:551
 AliAnalysisTaskSOH.cxx:552
 AliAnalysisTaskSOH.cxx:553
 AliAnalysisTaskSOH.cxx:554
 AliAnalysisTaskSOH.cxx:555
 AliAnalysisTaskSOH.cxx:556
 AliAnalysisTaskSOH.cxx:557
 AliAnalysisTaskSOH.cxx:558
 AliAnalysisTaskSOH.cxx:559
 AliAnalysisTaskSOH.cxx:560
 AliAnalysisTaskSOH.cxx:561
 AliAnalysisTaskSOH.cxx:562
 AliAnalysisTaskSOH.cxx:563
 AliAnalysisTaskSOH.cxx:564
 AliAnalysisTaskSOH.cxx:565
 AliAnalysisTaskSOH.cxx:566
 AliAnalysisTaskSOH.cxx:567
 AliAnalysisTaskSOH.cxx:568
 AliAnalysisTaskSOH.cxx:569
 AliAnalysisTaskSOH.cxx:570
 AliAnalysisTaskSOH.cxx:571
 AliAnalysisTaskSOH.cxx:572
 AliAnalysisTaskSOH.cxx:573
 AliAnalysisTaskSOH.cxx:574
 AliAnalysisTaskSOH.cxx:575
 AliAnalysisTaskSOH.cxx:576
 AliAnalysisTaskSOH.cxx:577
 AliAnalysisTaskSOH.cxx:578
 AliAnalysisTaskSOH.cxx:579
 AliAnalysisTaskSOH.cxx:580
 AliAnalysisTaskSOH.cxx:581
 AliAnalysisTaskSOH.cxx:582
 AliAnalysisTaskSOH.cxx:583
 AliAnalysisTaskSOH.cxx:584
 AliAnalysisTaskSOH.cxx:585
 AliAnalysisTaskSOH.cxx:586
 AliAnalysisTaskSOH.cxx:587
 AliAnalysisTaskSOH.cxx:588
 AliAnalysisTaskSOH.cxx:589
 AliAnalysisTaskSOH.cxx:590
 AliAnalysisTaskSOH.cxx:591
 AliAnalysisTaskSOH.cxx:592
 AliAnalysisTaskSOH.cxx:593
 AliAnalysisTaskSOH.cxx:594
 AliAnalysisTaskSOH.cxx:595
 AliAnalysisTaskSOH.cxx:596
 AliAnalysisTaskSOH.cxx:597
 AliAnalysisTaskSOH.cxx:598
 AliAnalysisTaskSOH.cxx:599
 AliAnalysisTaskSOH.cxx:600
 AliAnalysisTaskSOH.cxx:601
 AliAnalysisTaskSOH.cxx:602
 AliAnalysisTaskSOH.cxx:603
 AliAnalysisTaskSOH.cxx:604
 AliAnalysisTaskSOH.cxx:605
 AliAnalysisTaskSOH.cxx:606
 AliAnalysisTaskSOH.cxx:607
 AliAnalysisTaskSOH.cxx:608
 AliAnalysisTaskSOH.cxx:609
 AliAnalysisTaskSOH.cxx:610
 AliAnalysisTaskSOH.cxx:611
 AliAnalysisTaskSOH.cxx:612
 AliAnalysisTaskSOH.cxx:613
 AliAnalysisTaskSOH.cxx:614
 AliAnalysisTaskSOH.cxx:615
 AliAnalysisTaskSOH.cxx:616
 AliAnalysisTaskSOH.cxx:617
 AliAnalysisTaskSOH.cxx:618
 AliAnalysisTaskSOH.cxx:619
 AliAnalysisTaskSOH.cxx:620
 AliAnalysisTaskSOH.cxx:621
 AliAnalysisTaskSOH.cxx:622
 AliAnalysisTaskSOH.cxx:623
 AliAnalysisTaskSOH.cxx:624
 AliAnalysisTaskSOH.cxx:625
 AliAnalysisTaskSOH.cxx:626
 AliAnalysisTaskSOH.cxx:627
 AliAnalysisTaskSOH.cxx:628
 AliAnalysisTaskSOH.cxx:629
 AliAnalysisTaskSOH.cxx:630
 AliAnalysisTaskSOH.cxx:631
 AliAnalysisTaskSOH.cxx:632
 AliAnalysisTaskSOH.cxx:633
 AliAnalysisTaskSOH.cxx:634
 AliAnalysisTaskSOH.cxx:635
 AliAnalysisTaskSOH.cxx:636
 AliAnalysisTaskSOH.cxx:637
 AliAnalysisTaskSOH.cxx:638
 AliAnalysisTaskSOH.cxx:639
 AliAnalysisTaskSOH.cxx:640
 AliAnalysisTaskSOH.cxx:641
 AliAnalysisTaskSOH.cxx:642
 AliAnalysisTaskSOH.cxx:643
 AliAnalysisTaskSOH.cxx:644
 AliAnalysisTaskSOH.cxx:645
 AliAnalysisTaskSOH.cxx:646
 AliAnalysisTaskSOH.cxx:647
 AliAnalysisTaskSOH.cxx:648
 AliAnalysisTaskSOH.cxx:649
 AliAnalysisTaskSOH.cxx:650
 AliAnalysisTaskSOH.cxx:651
 AliAnalysisTaskSOH.cxx:652
 AliAnalysisTaskSOH.cxx:653
 AliAnalysisTaskSOH.cxx:654
 AliAnalysisTaskSOH.cxx:655
 AliAnalysisTaskSOH.cxx:656
 AliAnalysisTaskSOH.cxx:657
 AliAnalysisTaskSOH.cxx:658
 AliAnalysisTaskSOH.cxx:659
 AliAnalysisTaskSOH.cxx:660
 AliAnalysisTaskSOH.cxx:661
 AliAnalysisTaskSOH.cxx:662
 AliAnalysisTaskSOH.cxx:663
 AliAnalysisTaskSOH.cxx:664
 AliAnalysisTaskSOH.cxx:665
 AliAnalysisTaskSOH.cxx:666
 AliAnalysisTaskSOH.cxx:667
 AliAnalysisTaskSOH.cxx:668
 AliAnalysisTaskSOH.cxx:669
 AliAnalysisTaskSOH.cxx:670
 AliAnalysisTaskSOH.cxx:671
 AliAnalysisTaskSOH.cxx:672
 AliAnalysisTaskSOH.cxx:673
 AliAnalysisTaskSOH.cxx:674
 AliAnalysisTaskSOH.cxx:675
 AliAnalysisTaskSOH.cxx:676
 AliAnalysisTaskSOH.cxx:677
 AliAnalysisTaskSOH.cxx:678
 AliAnalysisTaskSOH.cxx:679
 AliAnalysisTaskSOH.cxx:680
 AliAnalysisTaskSOH.cxx:681
 AliAnalysisTaskSOH.cxx:682
 AliAnalysisTaskSOH.cxx:683
 AliAnalysisTaskSOH.cxx:684
 AliAnalysisTaskSOH.cxx:685
 AliAnalysisTaskSOH.cxx:686
 AliAnalysisTaskSOH.cxx:687
 AliAnalysisTaskSOH.cxx:688
 AliAnalysisTaskSOH.cxx:689
 AliAnalysisTaskSOH.cxx:690
 AliAnalysisTaskSOH.cxx:691
 AliAnalysisTaskSOH.cxx:692
 AliAnalysisTaskSOH.cxx:693
 AliAnalysisTaskSOH.cxx:694
 AliAnalysisTaskSOH.cxx:695
 AliAnalysisTaskSOH.cxx:696
 AliAnalysisTaskSOH.cxx:697
 AliAnalysisTaskSOH.cxx:698
 AliAnalysisTaskSOH.cxx:699
 AliAnalysisTaskSOH.cxx:700
 AliAnalysisTaskSOH.cxx:701
 AliAnalysisTaskSOH.cxx:702
 AliAnalysisTaskSOH.cxx:703
 AliAnalysisTaskSOH.cxx:704
 AliAnalysisTaskSOH.cxx:705
 AliAnalysisTaskSOH.cxx:706
 AliAnalysisTaskSOH.cxx:707
 AliAnalysisTaskSOH.cxx:708
 AliAnalysisTaskSOH.cxx:709
 AliAnalysisTaskSOH.cxx:710
 AliAnalysisTaskSOH.cxx:711
 AliAnalysisTaskSOH.cxx:712
 AliAnalysisTaskSOH.cxx:713
 AliAnalysisTaskSOH.cxx:714
 AliAnalysisTaskSOH.cxx:715
 AliAnalysisTaskSOH.cxx:716
 AliAnalysisTaskSOH.cxx:717
 AliAnalysisTaskSOH.cxx:718
 AliAnalysisTaskSOH.cxx:719
 AliAnalysisTaskSOH.cxx:720
 AliAnalysisTaskSOH.cxx:721
 AliAnalysisTaskSOH.cxx:722
 AliAnalysisTaskSOH.cxx:723
 AliAnalysisTaskSOH.cxx:724
 AliAnalysisTaskSOH.cxx:725
 AliAnalysisTaskSOH.cxx:726
 AliAnalysisTaskSOH.cxx:727
 AliAnalysisTaskSOH.cxx:728
 AliAnalysisTaskSOH.cxx:729
 AliAnalysisTaskSOH.cxx:730
 AliAnalysisTaskSOH.cxx:731
 AliAnalysisTaskSOH.cxx:732
 AliAnalysisTaskSOH.cxx:733
 AliAnalysisTaskSOH.cxx:734
 AliAnalysisTaskSOH.cxx:735
 AliAnalysisTaskSOH.cxx:736
 AliAnalysisTaskSOH.cxx:737
 AliAnalysisTaskSOH.cxx:738
 AliAnalysisTaskSOH.cxx:739
 AliAnalysisTaskSOH.cxx:740
 AliAnalysisTaskSOH.cxx:741
 AliAnalysisTaskSOH.cxx:742
 AliAnalysisTaskSOH.cxx:743
 AliAnalysisTaskSOH.cxx:744
 AliAnalysisTaskSOH.cxx:745
 AliAnalysisTaskSOH.cxx:746
 AliAnalysisTaskSOH.cxx:747
 AliAnalysisTaskSOH.cxx:748
 AliAnalysisTaskSOH.cxx:749
 AliAnalysisTaskSOH.cxx:750
 AliAnalysisTaskSOH.cxx:751
 AliAnalysisTaskSOH.cxx:752
 AliAnalysisTaskSOH.cxx:753
 AliAnalysisTaskSOH.cxx:754
 AliAnalysisTaskSOH.cxx:755
 AliAnalysisTaskSOH.cxx:756
 AliAnalysisTaskSOH.cxx:757
 AliAnalysisTaskSOH.cxx:758
 AliAnalysisTaskSOH.cxx:759
 AliAnalysisTaskSOH.cxx:760
 AliAnalysisTaskSOH.cxx:761
 AliAnalysisTaskSOH.cxx:762
 AliAnalysisTaskSOH.cxx:763
 AliAnalysisTaskSOH.cxx:764
 AliAnalysisTaskSOH.cxx:765
 AliAnalysisTaskSOH.cxx:766
 AliAnalysisTaskSOH.cxx:767
 AliAnalysisTaskSOH.cxx:768
 AliAnalysisTaskSOH.cxx:769
 AliAnalysisTaskSOH.cxx:770
 AliAnalysisTaskSOH.cxx:771
 AliAnalysisTaskSOH.cxx:772
 AliAnalysisTaskSOH.cxx:773
 AliAnalysisTaskSOH.cxx:774
 AliAnalysisTaskSOH.cxx:775
 AliAnalysisTaskSOH.cxx:776
 AliAnalysisTaskSOH.cxx:777
 AliAnalysisTaskSOH.cxx:778
 AliAnalysisTaskSOH.cxx:779
 AliAnalysisTaskSOH.cxx:780
 AliAnalysisTaskSOH.cxx:781
 AliAnalysisTaskSOH.cxx:782
 AliAnalysisTaskSOH.cxx:783
 AliAnalysisTaskSOH.cxx:784
 AliAnalysisTaskSOH.cxx:785
 AliAnalysisTaskSOH.cxx:786
 AliAnalysisTaskSOH.cxx:787
 AliAnalysisTaskSOH.cxx:788
 AliAnalysisTaskSOH.cxx:789
 AliAnalysisTaskSOH.cxx:790
 AliAnalysisTaskSOH.cxx:791
 AliAnalysisTaskSOH.cxx:792
 AliAnalysisTaskSOH.cxx:793
 AliAnalysisTaskSOH.cxx:794
 AliAnalysisTaskSOH.cxx:795
 AliAnalysisTaskSOH.cxx:796
 AliAnalysisTaskSOH.cxx:797
 AliAnalysisTaskSOH.cxx:798
 AliAnalysisTaskSOH.cxx:799
 AliAnalysisTaskSOH.cxx:800
 AliAnalysisTaskSOH.cxx:801
 AliAnalysisTaskSOH.cxx:802
 AliAnalysisTaskSOH.cxx:803
 AliAnalysisTaskSOH.cxx:804
 AliAnalysisTaskSOH.cxx:805
 AliAnalysisTaskSOH.cxx:806
 AliAnalysisTaskSOH.cxx:807
 AliAnalysisTaskSOH.cxx:808
 AliAnalysisTaskSOH.cxx:809
 AliAnalysisTaskSOH.cxx:810
 AliAnalysisTaskSOH.cxx:811
 AliAnalysisTaskSOH.cxx:812
 AliAnalysisTaskSOH.cxx:813
 AliAnalysisTaskSOH.cxx:814
 AliAnalysisTaskSOH.cxx:815
 AliAnalysisTaskSOH.cxx:816
 AliAnalysisTaskSOH.cxx:817
 AliAnalysisTaskSOH.cxx:818
 AliAnalysisTaskSOH.cxx:819
 AliAnalysisTaskSOH.cxx:820
 AliAnalysisTaskSOH.cxx:821
 AliAnalysisTaskSOH.cxx:822
 AliAnalysisTaskSOH.cxx:823
 AliAnalysisTaskSOH.cxx:824
 AliAnalysisTaskSOH.cxx:825
 AliAnalysisTaskSOH.cxx:826
 AliAnalysisTaskSOH.cxx:827
 AliAnalysisTaskSOH.cxx:828
 AliAnalysisTaskSOH.cxx:829
 AliAnalysisTaskSOH.cxx:830
 AliAnalysisTaskSOH.cxx:831
 AliAnalysisTaskSOH.cxx:832
 AliAnalysisTaskSOH.cxx:833
 AliAnalysisTaskSOH.cxx:834
 AliAnalysisTaskSOH.cxx:835
 AliAnalysisTaskSOH.cxx:836
 AliAnalysisTaskSOH.cxx:837
 AliAnalysisTaskSOH.cxx:838
 AliAnalysisTaskSOH.cxx:839
 AliAnalysisTaskSOH.cxx:840
 AliAnalysisTaskSOH.cxx:841
 AliAnalysisTaskSOH.cxx:842
 AliAnalysisTaskSOH.cxx:843
 AliAnalysisTaskSOH.cxx:844
 AliAnalysisTaskSOH.cxx:845
 AliAnalysisTaskSOH.cxx:846
 AliAnalysisTaskSOH.cxx:847
 AliAnalysisTaskSOH.cxx:848
 AliAnalysisTaskSOH.cxx:849
 AliAnalysisTaskSOH.cxx:850
 AliAnalysisTaskSOH.cxx:851
 AliAnalysisTaskSOH.cxx:852
 AliAnalysisTaskSOH.cxx:853
 AliAnalysisTaskSOH.cxx:854
 AliAnalysisTaskSOH.cxx:855
 AliAnalysisTaskSOH.cxx:856
 AliAnalysisTaskSOH.cxx:857
 AliAnalysisTaskSOH.cxx:858
 AliAnalysisTaskSOH.cxx:859
 AliAnalysisTaskSOH.cxx:860
 AliAnalysisTaskSOH.cxx:861
 AliAnalysisTaskSOH.cxx:862
 AliAnalysisTaskSOH.cxx:863
 AliAnalysisTaskSOH.cxx:864
 AliAnalysisTaskSOH.cxx:865
 AliAnalysisTaskSOH.cxx:866
 AliAnalysisTaskSOH.cxx:867
 AliAnalysisTaskSOH.cxx:868
 AliAnalysisTaskSOH.cxx:869
 AliAnalysisTaskSOH.cxx:870
 AliAnalysisTaskSOH.cxx:871
 AliAnalysisTaskSOH.cxx:872
 AliAnalysisTaskSOH.cxx:873
 AliAnalysisTaskSOH.cxx:874
 AliAnalysisTaskSOH.cxx:875
 AliAnalysisTaskSOH.cxx:876
 AliAnalysisTaskSOH.cxx:877
 AliAnalysisTaskSOH.cxx:878
 AliAnalysisTaskSOH.cxx:879
 AliAnalysisTaskSOH.cxx:880
 AliAnalysisTaskSOH.cxx:881
 AliAnalysisTaskSOH.cxx:882
 AliAnalysisTaskSOH.cxx:883
 AliAnalysisTaskSOH.cxx:884
 AliAnalysisTaskSOH.cxx:885
 AliAnalysisTaskSOH.cxx:886
 AliAnalysisTaskSOH.cxx:887
 AliAnalysisTaskSOH.cxx:888
 AliAnalysisTaskSOH.cxx:889
 AliAnalysisTaskSOH.cxx:890
 AliAnalysisTaskSOH.cxx:891
 AliAnalysisTaskSOH.cxx:892
 AliAnalysisTaskSOH.cxx:893
 AliAnalysisTaskSOH.cxx:894
 AliAnalysisTaskSOH.cxx:895
 AliAnalysisTaskSOH.cxx:896
 AliAnalysisTaskSOH.cxx:897
 AliAnalysisTaskSOH.cxx:898
 AliAnalysisTaskSOH.cxx:899
 AliAnalysisTaskSOH.cxx:900
 AliAnalysisTaskSOH.cxx:901
 AliAnalysisTaskSOH.cxx:902
 AliAnalysisTaskSOH.cxx:903
 AliAnalysisTaskSOH.cxx:904
 AliAnalysisTaskSOH.cxx:905
 AliAnalysisTaskSOH.cxx:906
 AliAnalysisTaskSOH.cxx:907
 AliAnalysisTaskSOH.cxx:908
 AliAnalysisTaskSOH.cxx:909
 AliAnalysisTaskSOH.cxx:910
 AliAnalysisTaskSOH.cxx:911
 AliAnalysisTaskSOH.cxx:912
 AliAnalysisTaskSOH.cxx:913
 AliAnalysisTaskSOH.cxx:914
 AliAnalysisTaskSOH.cxx:915
 AliAnalysisTaskSOH.cxx:916
 AliAnalysisTaskSOH.cxx:917
 AliAnalysisTaskSOH.cxx:918
 AliAnalysisTaskSOH.cxx:919
 AliAnalysisTaskSOH.cxx:920
 AliAnalysisTaskSOH.cxx:921
 AliAnalysisTaskSOH.cxx:922
 AliAnalysisTaskSOH.cxx:923
 AliAnalysisTaskSOH.cxx:924
 AliAnalysisTaskSOH.cxx:925
 AliAnalysisTaskSOH.cxx:926
 AliAnalysisTaskSOH.cxx:927
 AliAnalysisTaskSOH.cxx:928
 AliAnalysisTaskSOH.cxx:929
 AliAnalysisTaskSOH.cxx:930
 AliAnalysisTaskSOH.cxx:931
 AliAnalysisTaskSOH.cxx:932
 AliAnalysisTaskSOH.cxx:933
 AliAnalysisTaskSOH.cxx:934
 AliAnalysisTaskSOH.cxx:935
 AliAnalysisTaskSOH.cxx:936
 AliAnalysisTaskSOH.cxx:937
 AliAnalysisTaskSOH.cxx:938
 AliAnalysisTaskSOH.cxx:939
 AliAnalysisTaskSOH.cxx:940
 AliAnalysisTaskSOH.cxx:941
 AliAnalysisTaskSOH.cxx:942
 AliAnalysisTaskSOH.cxx:943
 AliAnalysisTaskSOH.cxx:944
 AliAnalysisTaskSOH.cxx:945
 AliAnalysisTaskSOH.cxx:946
 AliAnalysisTaskSOH.cxx:947
 AliAnalysisTaskSOH.cxx:948
 AliAnalysisTaskSOH.cxx:949
 AliAnalysisTaskSOH.cxx:950
 AliAnalysisTaskSOH.cxx:951
 AliAnalysisTaskSOH.cxx:952
 AliAnalysisTaskSOH.cxx:953
 AliAnalysisTaskSOH.cxx:954
 AliAnalysisTaskSOH.cxx:955
 AliAnalysisTaskSOH.cxx:956
 AliAnalysisTaskSOH.cxx:957
 AliAnalysisTaskSOH.cxx:958
 AliAnalysisTaskSOH.cxx:959
 AliAnalysisTaskSOH.cxx:960
 AliAnalysisTaskSOH.cxx:961
 AliAnalysisTaskSOH.cxx:962
 AliAnalysisTaskSOH.cxx:963
 AliAnalysisTaskSOH.cxx:964
 AliAnalysisTaskSOH.cxx:965
 AliAnalysisTaskSOH.cxx:966
 AliAnalysisTaskSOH.cxx:967
 AliAnalysisTaskSOH.cxx:968
 AliAnalysisTaskSOH.cxx:969
 AliAnalysisTaskSOH.cxx:970
 AliAnalysisTaskSOH.cxx:971
 AliAnalysisTaskSOH.cxx:972
 AliAnalysisTaskSOH.cxx:973
 AliAnalysisTaskSOH.cxx:974
 AliAnalysisTaskSOH.cxx:975
 AliAnalysisTaskSOH.cxx:976
 AliAnalysisTaskSOH.cxx:977
 AliAnalysisTaskSOH.cxx:978
 AliAnalysisTaskSOH.cxx:979
 AliAnalysisTaskSOH.cxx:980
 AliAnalysisTaskSOH.cxx:981
 AliAnalysisTaskSOH.cxx:982
 AliAnalysisTaskSOH.cxx:983
 AliAnalysisTaskSOH.cxx:984
 AliAnalysisTaskSOH.cxx:985
 AliAnalysisTaskSOH.cxx:986
 AliAnalysisTaskSOH.cxx:987
 AliAnalysisTaskSOH.cxx:988