ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: ALICE Offline.                                                 *
 * 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.                  *
 **************************************************************************/


//=========================================================================//
//             AliEbyE Analysis for Particle Ratio Fluctuation             //
//                   Deepika Rathee  | Satyajit Jena                       //
//                   drathee@cern.ch | sjena@cern.ch                       //
//                  Date: Wed Jul  9 18:38:30 CEST 2014                    //
//          New approch to find particle ratio to reduce memory            //
//                             (Test Only)                                 //
//        Copied from NetParticle Classes
//        Origin: Authors: Jochen Thaeder <jochen@thaeder.de>
//                         Michael Weber <m.weber@cern.ch>
//=========================================================================//

#include "TMath.h"
#include "TAxis.h"

#include "AliESDEvent.h"
#include "AliStack.h"
#include "AliMCEvent.h"
#include "AliESDtrackCuts.h"
#include "AliAODEvent.h"
#include "AliAODMCParticle.h"

#include "AliEbyEPidRatioEffCont.h"

using namespace std;


ClassImp(AliEbyEPidRatioEffCont)

//________________________________________________________________________
AliEbyEPidRatioEffCont::AliEbyEPidRatioEffCont() :
  AliEbyEPidRatioBase("EffCont", "EffCont"),
  fLabelsRec(NULL),
  fHnEffMc(NULL),
  fHnContMc(NULL),
  fHnEffRec(NULL),
  fHnContRec(NULL) {
  // Constructor   

  AliLog::SetClassDebugLevel("AliEbyEPidRatioEffCont",10);
}

//________________________________________________________________________
AliEbyEPidRatioEffCont::~AliEbyEPidRatioEffCont() {
  // Destructor

  for (Int_t ii = 0; ii < 2; ++ii) {
    for (Int_t kk = 0; kk < 4; ++kk)
      if (fLabelsRec[ii][kk]) delete[] fLabelsRec[ii][kk];
    if (fLabelsRec[ii]) delete[] fLabelsRec[ii];
  }
  if (fLabelsRec) delete[] fLabelsRec;


}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::Process() {
  // -- Process event

  // -- Setup (clean, create and fill) MC labels
  FillMCLabels();
 
  // -- Fill  MC histograms for efficiency studies
  FillMCEffHist();

  return;
}      

//________________________________________________________________________
void AliEbyEPidRatioEffCont::Init() {
  // -- Init eventwise

  fLabelsRec = new Int_t**[2];
  for (Int_t ii = 0 ; ii < 2; ++ii) {
    fLabelsRec[ii] = new Int_t*[4];
    for (Int_t kk = 0 ; kk < 4; ++kk)
      fLabelsRec[ii][kk] = NULL;
  }
}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::CreateHistograms() {
  // Copied from NetParticle class
  Int_t    binHnEff[10] = { AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4,   
			    AliEbyEPidRatioHelper::fgkfHistNBinsSign, 2,      2  ,      2  ,                       
			    AliEbyEPidRatioHelper::fgkfHistNBinsEta,     
			    AliEbyEPidRatioHelper::fgkfHistNBinsRap,     
			    AliEbyEPidRatioHelper::fgkfHistNBinsPhi,     
			    AliEbyEPidRatioHelper::fgkfHistNBinsPt};
  
  Double_t minHnEff[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0], -0.5, 
			   AliEbyEPidRatioHelper::fgkfHistRangeSign[0], -0.5, -0.5, -0.5,  
			   AliEbyEPidRatioHelper::fgkfHistRangeEta[0], 
			   AliEbyEPidRatioHelper::fgkfHistRangeRap[0],  
			   AliEbyEPidRatioHelper::fgkfHistRangePhi[0], 
			   AliEbyEPidRatioHelper::fgkfHistRangePt[0]};


  Double_t maxHnEff[10] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeSign[1], 1.5,      1.5,      1.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeEta[1],  
			   AliEbyEPidRatioHelper::fgkfHistRangeRap[1],  
			   AliEbyEPidRatioHelper::fgkfHistRangePhi[1], 
			   AliEbyEPidRatioHelper::fgkfHistRangePt[1]};
  
  fHnEffMc    = new THnSparseF("hnEffMc", "cent:pid:SignMC:findable:recStatus:pidStatus:etaMC:yMC:phiMC:ptMC", 10, binHnEff, minHnEff, maxHnEff);
  fHnEffRec   = new THnSparseF("hnEffRec", "cent:pid:SignMC:findable:recStatus:pidStatus:etaRec:yRec:phiRec:ptRec", 10, binHnEff, minHnEff, maxHnEff);
  //fHnEffRecMc = new THnSparseF("hnEffRecMMc", "cent:pid:SignMC:findable:recStatus:pidStatus:deltaEta:deltaY:deltaPhi:deltaPt" 10, binHnEff, minHnEff, maxHnEff);

  fHnEffMc->Sumw2();    
  fHnEffRec->Sumw2();    
 
  

  fHnEffMc->GetAxis(0)->SetTitle("centrality");                   //  0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
  fHnEffMc->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");                //  0 | 1 | 2 | 3
  fHnEffMc->GetAxis(2)->SetTitle("sign");                         //  -1 | 0 | +1 
  fHnEffMc->GetAxis(3)->SetTitle("findable");                     //  0 not findable      |  1 findable
  fHnEffMc->GetAxis(4)->SetTitle("recStatus");                    //  0 not reconstructed |  1 reconstructed
  fHnEffMc->GetAxis(5)->SetTitle("recPid");                       //  0 not accepted      |  1 accepted
  fHnEffMc->GetAxis(6)->SetTitle("#eta_{MC}");                    //  eta  [-0.9, 0.9]
  fHnEffMc->GetAxis(7)->SetTitle("#it{y}_{MC}");                  //  rapidity  [-0.5, 0.5]
  fHnEffMc->GetAxis(8)->SetTitle("#varphi_{MC} (rad)");           //  phi  [ 0. , 2Pi]
  fHnEffMc->GetAxis(9)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})");   //  pT   [ 0.2, 2.3]
  

  fHnEffRec->GetAxis(0)->SetTitle("centrality");                   //  0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
  fHnEffRec->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");                //  0 | 1 | 2 | 3
  fHnEffRec->GetAxis(2)->SetTitle("sign");                         //  -1 | 0 | +1 
  fHnEffRec->GetAxis(3)->SetTitle("findable");                     //  0 not findable      |  1 findable
  fHnEffRec->GetAxis(4)->SetTitle("recStatus");                    //  0 not reconstructed |  1 reconstructed
  fHnEffRec->GetAxis(5)->SetTitle("recPid");                       //  0 not accepted      |  1 accepted
  fHnEffRec->GetAxis(6)->SetTitle("#eta_{Rec}");                   //  eta  [-0.9, 0.9]
  fHnEffRec->GetAxis(7)->SetTitle("#it{y}_{Rec}");                 //  rapidity  [-0.5, 0.5]
  fHnEffRec->GetAxis(8)->SetTitle("#varphi_{Rec} (rad)");          //  phi  [ 0. , 2Pi]
  fHnEffRec->GetAxis(9)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})");  //  pt   [ 0.2, 2.3]
 
  fHelper->BinLogAxis(fHnEffMc, 9);
  fHelper->BinLogAxis(fHnEffRec, 9);

  /* 
     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Copied from NetParticle
     
     creation -> findable -> reconstructed -> pid_TPC+TOF
        (1)         (2)          (3)            (4)      
                                                                      ||   findable | recStatus | recPid 
     1) all primary probeParticles_MC                                 ||      -           -         -
     2) all findable primary probeParticles_MC                        ||      x           -         -
     3) all reconstructed primary probeParticles_MC                   ||      x           x         -
     4) all reconstructed primary probeParticles_MC & recPid_TPC+TOF  ||      x           x         x
     
     <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
  */ 

  // ------------------------------------------------------------------
  // -- Create THnSparse - Cont
  // ------------------------------------------------------------------

  Int_t    binHnCont[8] = {AliEbyEPidRatioHelper::fgkfHistNBinsCent, 4, 
			   AliEbyEPidRatioHelper::fgkfHistNBinsSign, 8,   
			   AliEbyEPidRatioHelper::fgkfHistNBinsEta,     
			   AliEbyEPidRatioHelper::fgkfHistNBinsRap,  
			   AliEbyEPidRatioHelper::fgkfHistNBinsPhi,     
			   AliEbyEPidRatioHelper::fgkfHistNBinsPt};   
  
  Double_t minHnCont[8] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[0], -0.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeSign[0],  0.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeEta[0], 
			   AliEbyEPidRatioHelper::fgkfHistRangeRap[0],  
			   AliEbyEPidRatioHelper::fgkfHistRangePhi[0], 
			   AliEbyEPidRatioHelper::fgkfHistRangePt[0]};   
  
  Double_t maxHnCont[8] = {AliEbyEPidRatioHelper::fgkfHistRangeCent[1], 3.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeSign[1], 8.5,
			   AliEbyEPidRatioHelper::fgkfHistRangeEta[1], 
			   AliEbyEPidRatioHelper::fgkfHistRangeRap[1],  
			   AliEbyEPidRatioHelper::fgkfHistRangePhi[1], 
			   AliEbyEPidRatioHelper::fgkfHistRangePt[1]};   
  
  fHnContMc  = new THnSparseF("hnContMc", "cent:pid:SignMC:contPart:etaMC:yMC:phiMC:ptMC",8, binHnCont, minHnCont, maxHnCont);
  fHnContRec = new THnSparseF("hnContRec", "cent:pid:SignRec:contPart:etaRec:yRec:phiRec:ptRec",8, binHnCont, minHnCont, maxHnCont);

  fHnContMc->Sumw2();    
  fHnContRec->Sumw2();    

  fHnContMc->GetAxis(0)->SetTitle("centrality");                   //  0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
  fHnContMc->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");                //  0 | 1 | 2 | 3
  fHnContMc->GetAxis(2)->SetTitle("sign");                         //  -1 | 0 | +1  
  fHnContMc->GetAxis(3)->SetTitle("contPart");                     //  1 pi | 2 K | 3 p | 4 e | 5 mu | 6 other | 7 p from WeakDecay | 8 p from Material
  fHnContMc->GetAxis(4)->SetTitle("#eta_{MC}");                    //  eta  [-0.9,0.9]
  fHnContMc->GetAxis(5)->SetTitle("#it{y}_{MC}");                  //  rapidity  [-0.5, 0.5]
  fHnContMc->GetAxis(6)->SetTitle("#varphi_{MC} (rad)");           //  phi  [ 0. ,2Pi]
  fHnContMc->GetAxis(7)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})");   //  pT   [ 0.2,2.3]
  
  
  fHnContRec->GetAxis(0)->SetTitle("centrality");                   //  0-5|5-10|10-20|20-30|30-40|40-50|50-60|60-70|70-80|80-90 --> 10 bins
  fHnContRec->GetAxis(1)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");                //  0 | 1 | 2 | 3
  fHnContRec->GetAxis(2)->SetTitle("sign");                         //  -1 | 0 | +1  
  fHnContRec->GetAxis(3)->SetTitle("contPart");                     //  1 pi | 2 K | 3 p | 4 e | 5 mu | 6 other | 7 p from WeakDecay | 8 p from Material
  fHnContRec->GetAxis(4)->SetTitle("#eta_{Rec}");                   //  eta  [-0.9, 0.9]
  fHnContRec->GetAxis(5)->SetTitle("#it{y}_{Rec}");                 //  rapidity  [-0.5, 0.5]
  fHnContRec->GetAxis(6)->SetTitle("#varphi_{Rec} (rad)");          //  phi  [ 0. , 2Pi]
  fHnContRec->GetAxis(7)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); //  pt   [ 0.2, 2.3]
 

  //  fHnCont->GetAxis(12)->SetTitle("#eta_{MC}-#eta_{Rec}");                      //  eta  [-0.9, 0.9]
  // fHnCont->GetAxis(13)->SetTitle("#it{y}_{MC}-#it{y}_{Rec}");                  //  rapidity  [-0.5, 0.5]
  // fHnCont->GetAxis(14)->SetTitle("#varphi_{MC}-#varphi_{Rec} (rad)");          //  phi  [ -2Pi , 2Pi]
  // fHnCont->GetAxis(15)->SetTitle("#it{p}_{T,MC}-#it{p}_{T,Rec} (GeV/#it{c})"); //  pt   [ -2.3, 2.3]
  // fHnCont->GetAxis(16)->SetTitle("sign_{MC}-sign_{Rec}");                      //  -2 | 0 | +2 
  // fHnCont->GetAxis(17)->SetTitle("N_{ch}|N_{#pi}|N_{K}|N_{p}");                //  0 | 1 | 2 | 3

  fHelper->BinLogAxis(fHnContMc,  7);
  fHelper->BinLogAxis(fHnContRec, 7);

  return;
}

//________________________________________________________________________
Int_t AliEbyEPidRatioEffCont::Setup() {
  // -- Setup eventwise

  // -- Create label arrays
  for(Int_t i = 0; i < 4; i++) {
  fLabelsRec[0][i] = new Int_t[fNTracks];
  if(!fLabelsRec[0][i]) {
    AliError("Cannot create fLabelsRec[0]");
    return -1;
  }
  
  fLabelsRec[1][i] = new Int_t[fNTracks];
  if(!fLabelsRec[1][i]) {
    AliError("Cannot create fLabelsRec[1] for PID");
    return -1;
  }
  
  for(Int_t ii = 0; ii < fNTracks; ++ii) {
    fLabelsRec[0][i][ii] = 0;
    fLabelsRec[1][i][ii] = 0;
  }
  }
  return 0;
}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::Reset() {
  // -- Reset eventwise
  for(Int_t i = 0; i < 4; i++) {
    for (Int_t ii = 0; ii < 2 ; ++ii) {
      if (fLabelsRec[ii][i])
	delete[] fLabelsRec[ii][i];
      fLabelsRec[ii][i] = NULL;
    }
  }
}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::FillMCLabels() {
  Float_t etaRange[2];
  fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);

  Float_t ptRange[2];
  fESDTrackCuts->GetPtRange(ptRange[0],ptRange[1]);

  // -- Track Loop
  for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {
    
    AliVTrack *track = (fESD) ? static_cast<AliVTrack*>(fESD->GetTrack(idxTrack)) : static_cast<AliVTrack*>(fAOD->GetTrack(idxTrack)); 

    // -- Check if track is accepted for basic parameters
    if (!fHelper->IsTrackAcceptedBasicCharged(track))
      continue;
    
    // -- Check if accepted - ESD
    if (fESD && !fESDTrackCuts->AcceptTrack(dynamic_cast<AliESDtrack*>(track)))
      continue;
    
    // -- Check if accepted - AOD
    if (fAOD){
      AliAODTrack * trackAOD = dynamic_cast<AliAODTrack*>(track);
      
      if (!trackAOD) {
	AliError("Pointer to dynamic_cast<AliAODTrack*>(track) = ZERO");
	continue;
      }
      if (!trackAOD->TestFilterBit(fAODtrackCutBit))
	continue;

      // -- Check if in pT and eta range (is done in ESDTrackCuts for ESDs)
      if(!(track->Pt() > ptRange[0] && track->Pt() <= ptRange[1] && TMath::Abs(track->Eta()) <= etaRange[1]))
	continue;
    }

    Int_t gPdgCode = 0;
    
    Int_t iPid = 0;
    Double_t pid[3];
    if      (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kPion)))  {  iPid = 1; gPdgCode = 211;}
    else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kKaon)))  {  iPid = 2; gPdgCode = 321;}
    else if (fHelper->IsTrackAcceptedPID(track, pid, (AliPID::kProton))){  iPid = 3; gPdgCode = 2212;}
    else iPid = 0;

    //  cout << " --- EFF ---- " << iPid << "  " << gPdgCode << endl;
    
    Double_t yP;
    if (!fHelper->IsTrackAcceptedRapidity(track, yP, iPid))
      continue;

    if (!fHelper->IsTrackAcceptedDCA(track))
      continue;

    Int_t label  = TMath::Abs(track->GetLabel()); 
    
    // -- Fill Label of all reconstructed
    if(iPid != 0) fLabelsRec[0][0][idxTrack]    = label;
    fLabelsRec[0][iPid][idxTrack] = label;

    // -- Fill Label of all reconstructed && recPid_TPC+TOF    
    if(iPid != 0) fLabelsRec[1][0][idxTrack]    = label;    
    fLabelsRec[1][iPid][idxTrack] = label;    
    
    // -- Check for contamination and fill contamination THnSparse
    CheckContTrack(track, iPid, gPdgCode);
    if(iPid != 0) CheckContTrack(track, 0, 0);

  } // for (Int_t idxTrack = 0; idxTrack < fNTracks; ++idxTrack) {

  return;
}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::CheckContTrack(AliVTrack *track, Int_t iPid, Int_t gPdgCode) {
  Int_t label     = TMath::Abs(track->GetLabel()); 
  Float_t signRec = track->Charge();

  
  AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(label) : static_cast<AliVParticle*>(fArrayMC->At(label));
  if (!particle)
    return;

  Bool_t isPhysicalPrimary = (fESD) ? fStack->IsPhysicalPrimary(label): (static_cast<AliAODMCParticle*>(particle))->IsPhysicalPrimary();
  if (iPid == 0) {
    if (particle->PdgCode() == (signRec*gPdgCode))
      if (isPhysicalPrimary)
	return;
  }
  else {
    if (isPhysicalPrimary)
      return;
  }

  // -- Check if secondaries from material or weak decay
  Bool_t isSecondaryFromWeakDecay = (fESD) ? fStack->IsSecondaryFromWeakDecay(label) : (static_cast<AliAODMCParticle*>(particle))->IsSecondaryFromWeakDecay();
  Bool_t isSecondaryFromMaterial  = (fESD) ? fStack->IsSecondaryFromMaterial(label)  : (static_cast<AliAODMCParticle*>(particle))->IsSecondaryFromMaterial();

  // -- Get PDG Charge of contaminating particle
  Float_t signMC = 0.;
  if      (particle->Charge() == 0.) signMC =  0.;
  else if (particle->Charge() <  0.) signMC = -1.;	
  else if (particle->Charge() >  0.) signMC =  1.;	

  // -- Get contaminating particle
  Float_t contPart = 0;
  if        (isSecondaryFromWeakDecay)                contPart = 7; // probeParticle from WeakDecay
  else if   (isSecondaryFromMaterial)                 contPart = 8; // probeParticle from Material
  else {
    if      (TMath::Abs(particle->PdgCode()) ==  211) contPart = 1; // pion
    else if (TMath::Abs(particle->PdgCode()) ==  321) contPart = 2; // kaon
    else if (TMath::Abs(particle->PdgCode()) == 2212) contPart = 3; // proton
    else if (TMath::Abs(particle->PdgCode()) ==   11) contPart = 4; // electron
    else if (TMath::Abs(particle->PdgCode()) ==   13) contPart = 5; // muon
    else                                              contPart = 6; // other
  }
  
  // cout << " --- CONT ---- " << iPid << "  " << gPdgCode << endl;

  // -- Get Reconstructed y
  //    yRec = y for identified particles | yRec = eta for charged particles
  Double_t yRec  = 0.;
  fHelper->IsTrackAcceptedRapidity(track, yRec, iPid); 

  Double_t deltaPhi = particle->Phi()-track->Phi();
  if (TMath::Abs(deltaPhi) > TMath::TwoPi()) {
    if (deltaPhi < 0)
      deltaPhi += TMath::TwoPi();
    else
      deltaPhi -= TMath::TwoPi();
  }

  Double_t hnContMc[8]  = {fCentralityBin,static_cast<Double_t>(iPid),signMC,static_cast<Double_t>(contPart),particle->Eta(),particle->Y(),particle->Phi(),particle->Pt()};
  Double_t hnContRec[8] = {fCentralityBin,static_cast<Double_t>(iPid),signRec,static_cast<Double_t>(contPart), track->Eta(),yRec,track->Phi(),track->Pt()};
  fHnContMc->Fill(hnContMc);
  fHnContRec->Fill(hnContRec);
   
}

//________________________________________________________________________
void AliEbyEPidRatioEffCont::FillMCEffHist() {
  // Fill efficiency THnSparse for ESDs

  Float_t etaRange[2];
  fESDTrackCuts->GetEtaRange(etaRange[0],etaRange[1]);

  Int_t nPart  = (fESD) ? fStack->GetNprimary() : fArrayMC->GetEntriesFast();

  for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) {
    AliVParticle* particle = (fESD) ? fMCEvent->GetTrack(idxMC) : static_cast<AliVParticle*>(fArrayMC->At(idxMC));

    // -- Check basic MC properties -> charged physical primary
    if (!fHelper->IsParticleAcceptedBasicCharged(particle, idxMC))
      continue;

    Int_t iPid = 0;
    Int_t gPdgCode = 0;
    if ( TMath::Abs(particle->PdgCode())      ==  211 ) {  iPid = 1; gPdgCode = 211;}
    else if ( TMath::Abs(particle->PdgCode()) ==  321 ) {  iPid = 2; gPdgCode = 321;}
    else if ( TMath::Abs(particle->PdgCode()) == 2212 ) {  iPid = 3; gPdgCode = 2212;}
    else {iPid = 0; gPdgCode = 0;}

    // -- Check if accepted in rapidity window -- for identified particles
    Double_t yMC;
    if (iPid != 0) {
      if(!fHelper->IsParticleAcceptedRapidity(particle, yMC, iPid))
	continue;
    } else {
      // -- Check if accepted in eta window -- for charged particles
      if (TMath::Abs(particle->Eta()) > etaRange[1])
	continue;
    }
  
    // cout << particle->PdgCode() << "  " <<iPid << endl;
    
    // -- Check if probeParticle / anti-probeParticle 
    //    > skip check if PID is not required
    if (iPid != 0) { 
      if (TMath::Abs(particle->PdgCode()) != gPdgCode)
      continue;
    }
    
    // -- Get sign of particle
    Float_t signMC    = (particle->PdgCode() < 0) ? -1. : 1.;

    // -- Get if particle is findable --- not availible for AODs yet
    Float_t findable  = (fESD) ? Float_t(fHelper->IsParticleFindable(idxMC)) : 1.;

    // cout << findable << "  " << fHelper->IsParticleFindable(idxMC)<< endl;

    // -- Get recStatus and pidStatus
    Float_t recStatus = 0.;
    Float_t recPid    = 0.;

    // -- Get Reconstructed values 
    Float_t etaRec  = 0.;
    Float_t phiRec  = 0.;
    Float_t ptRec   = 0.;
    Double_t yRec   = 0.;
    Float_t signRec = 0.;

    // -- Loop over all labels
    for (Int_t idxRec=0; idxRec < fNTracks; ++idxRec) {
      if (idxMC == fLabelsRec[0][iPid][idxRec]) {
	recStatus = 1.;
	
	if (idxMC == fLabelsRec[1][iPid][idxRec])
	  recPid = 1.;
	
        AliVTrack *track = NULL;
        if(fESD)
          track = fESD->GetTrack(idxRec);
        else if(fAOD)
          track = fAOD->GetTrack(idxRec);
	
        if (track) {
          // if no track present (which should not happen)
          // -> pt = 0. , which is not in the looked at range
	  
          // -- Get Reconstructed values
          etaRec  = track->Eta();
          phiRec  = track->Phi();         
          ptRec   = track->Pt();
	  signRec = track->Charge();
          fHelper->IsTrackAcceptedRapidity(track, yRec, iPid); // yRec = y for identified particles | yRec = eta for charged particles
        }      
        break;
      }
    } // for (Int_t idxRec=0; idxRec < fNTracks; ++idxRec) {  

    Double_t deltaPhi = particle->Phi()-phiRec;
    if (TMath::Abs(deltaPhi) > TMath::TwoPi()) {
      if (deltaPhi < 0)
	deltaPhi += TMath::TwoPi();
      else
    	deltaPhi -= TMath::TwoPi();
    }
    
    // if (signRec == 0) continue;

    if(iPid != 0) {
      Double_t hnEffMc[10]  = {fCentralityBin,0,
			       static_cast<Double_t>(signMC),
			       static_cast<Double_t>(findable), 
			       static_cast<Double_t>(recStatus),
			       static_cast<Double_t>(recPid),
			       particle->Eta(), particle->Y(), particle->Phi(),particle->Pt()};
      Double_t hnEffRec[10] = {fCentralityBin,0,
			       static_cast<Double_t>(signRec),
			       static_cast<Double_t>(findable), 
			       static_cast<Double_t>(recStatus),
			       static_cast<Double_t>(recPid),etaRec, yRec, phiRec, ptRec};
      fHnEffMc->Fill(hnEffMc);
      fHnEffRec->Fill(hnEffRec);
    }
    Double_t hnEffMc[10]  = {fCentralityBin,static_cast<Double_t>(iPid),
			     static_cast<Double_t>(signMC),
			     static_cast<Double_t>(findable), 
			     static_cast<Double_t>(recStatus),
			     static_cast<Double_t>(recPid),
			     particle->Eta(), particle->Y(), particle->Phi(),particle->Pt()};
    Double_t hnEffRec[10] = {fCentralityBin,
			     static_cast<Double_t>(iPid),
			     static_cast<Double_t>(signRec),
			     static_cast<Double_t>(findable), 
			     static_cast<Double_t>(recStatus),
			     static_cast<Double_t>(recPid),etaRec, yRec, phiRec, ptRec};
    fHnEffMc->Fill(hnEffMc);
    fHnEffRec->Fill(hnEffRec);
    
   
    //  cout << signMC << "  " << signRec << "  " << iPid << "  " << gPdgCode << endl;


  } // for (Int_t idxMC = 0; idxMC < nPart; ++idxMC) {
  
  return;
}
 AliEbyEPidRatioEffCont.cxx:1
 AliEbyEPidRatioEffCont.cxx:2
 AliEbyEPidRatioEffCont.cxx:3
 AliEbyEPidRatioEffCont.cxx:4
 AliEbyEPidRatioEffCont.cxx:5
 AliEbyEPidRatioEffCont.cxx:6
 AliEbyEPidRatioEffCont.cxx:7
 AliEbyEPidRatioEffCont.cxx:8
 AliEbyEPidRatioEffCont.cxx:9
 AliEbyEPidRatioEffCont.cxx:10
 AliEbyEPidRatioEffCont.cxx:11
 AliEbyEPidRatioEffCont.cxx:12
 AliEbyEPidRatioEffCont.cxx:13
 AliEbyEPidRatioEffCont.cxx:14
 AliEbyEPidRatioEffCont.cxx:15
 AliEbyEPidRatioEffCont.cxx:16
 AliEbyEPidRatioEffCont.cxx:17
 AliEbyEPidRatioEffCont.cxx:18
 AliEbyEPidRatioEffCont.cxx:19
 AliEbyEPidRatioEffCont.cxx:20
 AliEbyEPidRatioEffCont.cxx:21
 AliEbyEPidRatioEffCont.cxx:22
 AliEbyEPidRatioEffCont.cxx:23
 AliEbyEPidRatioEffCont.cxx:24
 AliEbyEPidRatioEffCont.cxx:25
 AliEbyEPidRatioEffCont.cxx:26
 AliEbyEPidRatioEffCont.cxx:27
 AliEbyEPidRatioEffCont.cxx:28
 AliEbyEPidRatioEffCont.cxx:29
 AliEbyEPidRatioEffCont.cxx:30
 AliEbyEPidRatioEffCont.cxx:31
 AliEbyEPidRatioEffCont.cxx:32
 AliEbyEPidRatioEffCont.cxx:33
 AliEbyEPidRatioEffCont.cxx:34
 AliEbyEPidRatioEffCont.cxx:35
 AliEbyEPidRatioEffCont.cxx:36
 AliEbyEPidRatioEffCont.cxx:37
 AliEbyEPidRatioEffCont.cxx:38
 AliEbyEPidRatioEffCont.cxx:39
 AliEbyEPidRatioEffCont.cxx:40
 AliEbyEPidRatioEffCont.cxx:41
 AliEbyEPidRatioEffCont.cxx:42
 AliEbyEPidRatioEffCont.cxx:43
 AliEbyEPidRatioEffCont.cxx:44
 AliEbyEPidRatioEffCont.cxx:45
 AliEbyEPidRatioEffCont.cxx:46
 AliEbyEPidRatioEffCont.cxx:47
 AliEbyEPidRatioEffCont.cxx:48
 AliEbyEPidRatioEffCont.cxx:49
 AliEbyEPidRatioEffCont.cxx:50
 AliEbyEPidRatioEffCont.cxx:51
 AliEbyEPidRatioEffCont.cxx:52
 AliEbyEPidRatioEffCont.cxx:53
 AliEbyEPidRatioEffCont.cxx:54
 AliEbyEPidRatioEffCont.cxx:55
 AliEbyEPidRatioEffCont.cxx:56
 AliEbyEPidRatioEffCont.cxx:57
 AliEbyEPidRatioEffCont.cxx:58
 AliEbyEPidRatioEffCont.cxx:59
 AliEbyEPidRatioEffCont.cxx:60
 AliEbyEPidRatioEffCont.cxx:61
 AliEbyEPidRatioEffCont.cxx:62
 AliEbyEPidRatioEffCont.cxx:63
 AliEbyEPidRatioEffCont.cxx:64
 AliEbyEPidRatioEffCont.cxx:65
 AliEbyEPidRatioEffCont.cxx:66
 AliEbyEPidRatioEffCont.cxx:67
 AliEbyEPidRatioEffCont.cxx:68
 AliEbyEPidRatioEffCont.cxx:69
 AliEbyEPidRatioEffCont.cxx:70
 AliEbyEPidRatioEffCont.cxx:71
 AliEbyEPidRatioEffCont.cxx:72
 AliEbyEPidRatioEffCont.cxx:73
 AliEbyEPidRatioEffCont.cxx:74
 AliEbyEPidRatioEffCont.cxx:75
 AliEbyEPidRatioEffCont.cxx:76
 AliEbyEPidRatioEffCont.cxx:77
 AliEbyEPidRatioEffCont.cxx:78
 AliEbyEPidRatioEffCont.cxx:79
 AliEbyEPidRatioEffCont.cxx:80
 AliEbyEPidRatioEffCont.cxx:81
 AliEbyEPidRatioEffCont.cxx:82
 AliEbyEPidRatioEffCont.cxx:83
 AliEbyEPidRatioEffCont.cxx:84
 AliEbyEPidRatioEffCont.cxx:85
 AliEbyEPidRatioEffCont.cxx:86
 AliEbyEPidRatioEffCont.cxx:87
 AliEbyEPidRatioEffCont.cxx:88
 AliEbyEPidRatioEffCont.cxx:89
 AliEbyEPidRatioEffCont.cxx:90
 AliEbyEPidRatioEffCont.cxx:91
 AliEbyEPidRatioEffCont.cxx:92
 AliEbyEPidRatioEffCont.cxx:93
 AliEbyEPidRatioEffCont.cxx:94
 AliEbyEPidRatioEffCont.cxx:95
 AliEbyEPidRatioEffCont.cxx:96
 AliEbyEPidRatioEffCont.cxx:97
 AliEbyEPidRatioEffCont.cxx:98
 AliEbyEPidRatioEffCont.cxx:99
 AliEbyEPidRatioEffCont.cxx:100
 AliEbyEPidRatioEffCont.cxx:101
 AliEbyEPidRatioEffCont.cxx:102
 AliEbyEPidRatioEffCont.cxx:103
 AliEbyEPidRatioEffCont.cxx:104
 AliEbyEPidRatioEffCont.cxx:105
 AliEbyEPidRatioEffCont.cxx:106
 AliEbyEPidRatioEffCont.cxx:107
 AliEbyEPidRatioEffCont.cxx:108
 AliEbyEPidRatioEffCont.cxx:109
 AliEbyEPidRatioEffCont.cxx:110
 AliEbyEPidRatioEffCont.cxx:111
 AliEbyEPidRatioEffCont.cxx:112
 AliEbyEPidRatioEffCont.cxx:113
 AliEbyEPidRatioEffCont.cxx:114
 AliEbyEPidRatioEffCont.cxx:115
 AliEbyEPidRatioEffCont.cxx:116
 AliEbyEPidRatioEffCont.cxx:117
 AliEbyEPidRatioEffCont.cxx:118
 AliEbyEPidRatioEffCont.cxx:119
 AliEbyEPidRatioEffCont.cxx:120
 AliEbyEPidRatioEffCont.cxx:121
 AliEbyEPidRatioEffCont.cxx:122
 AliEbyEPidRatioEffCont.cxx:123
 AliEbyEPidRatioEffCont.cxx:124
 AliEbyEPidRatioEffCont.cxx:125
 AliEbyEPidRatioEffCont.cxx:126
 AliEbyEPidRatioEffCont.cxx:127
 AliEbyEPidRatioEffCont.cxx:128
 AliEbyEPidRatioEffCont.cxx:129
 AliEbyEPidRatioEffCont.cxx:130
 AliEbyEPidRatioEffCont.cxx:131
 AliEbyEPidRatioEffCont.cxx:132
 AliEbyEPidRatioEffCont.cxx:133
 AliEbyEPidRatioEffCont.cxx:134
 AliEbyEPidRatioEffCont.cxx:135
 AliEbyEPidRatioEffCont.cxx:136
 AliEbyEPidRatioEffCont.cxx:137
 AliEbyEPidRatioEffCont.cxx:138
 AliEbyEPidRatioEffCont.cxx:139
 AliEbyEPidRatioEffCont.cxx:140
 AliEbyEPidRatioEffCont.cxx:141
 AliEbyEPidRatioEffCont.cxx:142
 AliEbyEPidRatioEffCont.cxx:143
 AliEbyEPidRatioEffCont.cxx:144
 AliEbyEPidRatioEffCont.cxx:145
 AliEbyEPidRatioEffCont.cxx:146
 AliEbyEPidRatioEffCont.cxx:147
 AliEbyEPidRatioEffCont.cxx:148
 AliEbyEPidRatioEffCont.cxx:149
 AliEbyEPidRatioEffCont.cxx:150
 AliEbyEPidRatioEffCont.cxx:151
 AliEbyEPidRatioEffCont.cxx:152
 AliEbyEPidRatioEffCont.cxx:153
 AliEbyEPidRatioEffCont.cxx:154
 AliEbyEPidRatioEffCont.cxx:155
 AliEbyEPidRatioEffCont.cxx:156
 AliEbyEPidRatioEffCont.cxx:157
 AliEbyEPidRatioEffCont.cxx:158
 AliEbyEPidRatioEffCont.cxx:159
 AliEbyEPidRatioEffCont.cxx:160
 AliEbyEPidRatioEffCont.cxx:161
 AliEbyEPidRatioEffCont.cxx:162
 AliEbyEPidRatioEffCont.cxx:163
 AliEbyEPidRatioEffCont.cxx:164
 AliEbyEPidRatioEffCont.cxx:165
 AliEbyEPidRatioEffCont.cxx:166
 AliEbyEPidRatioEffCont.cxx:167
 AliEbyEPidRatioEffCont.cxx:168
 AliEbyEPidRatioEffCont.cxx:169
 AliEbyEPidRatioEffCont.cxx:170
 AliEbyEPidRatioEffCont.cxx:171
 AliEbyEPidRatioEffCont.cxx:172
 AliEbyEPidRatioEffCont.cxx:173
 AliEbyEPidRatioEffCont.cxx:174
 AliEbyEPidRatioEffCont.cxx:175
 AliEbyEPidRatioEffCont.cxx:176
 AliEbyEPidRatioEffCont.cxx:177
 AliEbyEPidRatioEffCont.cxx:178
 AliEbyEPidRatioEffCont.cxx:179
 AliEbyEPidRatioEffCont.cxx:180
 AliEbyEPidRatioEffCont.cxx:181
 AliEbyEPidRatioEffCont.cxx:182
 AliEbyEPidRatioEffCont.cxx:183
 AliEbyEPidRatioEffCont.cxx:184
 AliEbyEPidRatioEffCont.cxx:185
 AliEbyEPidRatioEffCont.cxx:186
 AliEbyEPidRatioEffCont.cxx:187
 AliEbyEPidRatioEffCont.cxx:188
 AliEbyEPidRatioEffCont.cxx:189
 AliEbyEPidRatioEffCont.cxx:190
 AliEbyEPidRatioEffCont.cxx:191
 AliEbyEPidRatioEffCont.cxx:192
 AliEbyEPidRatioEffCont.cxx:193
 AliEbyEPidRatioEffCont.cxx:194
 AliEbyEPidRatioEffCont.cxx:195
 AliEbyEPidRatioEffCont.cxx:196
 AliEbyEPidRatioEffCont.cxx:197
 AliEbyEPidRatioEffCont.cxx:198
 AliEbyEPidRatioEffCont.cxx:199
 AliEbyEPidRatioEffCont.cxx:200
 AliEbyEPidRatioEffCont.cxx:201
 AliEbyEPidRatioEffCont.cxx:202
 AliEbyEPidRatioEffCont.cxx:203
 AliEbyEPidRatioEffCont.cxx:204
 AliEbyEPidRatioEffCont.cxx:205
 AliEbyEPidRatioEffCont.cxx:206
 AliEbyEPidRatioEffCont.cxx:207
 AliEbyEPidRatioEffCont.cxx:208
 AliEbyEPidRatioEffCont.cxx:209
 AliEbyEPidRatioEffCont.cxx:210
 AliEbyEPidRatioEffCont.cxx:211
 AliEbyEPidRatioEffCont.cxx:212
 AliEbyEPidRatioEffCont.cxx:213
 AliEbyEPidRatioEffCont.cxx:214
 AliEbyEPidRatioEffCont.cxx:215
 AliEbyEPidRatioEffCont.cxx:216
 AliEbyEPidRatioEffCont.cxx:217
 AliEbyEPidRatioEffCont.cxx:218
 AliEbyEPidRatioEffCont.cxx:219
 AliEbyEPidRatioEffCont.cxx:220
 AliEbyEPidRatioEffCont.cxx:221
 AliEbyEPidRatioEffCont.cxx:222
 AliEbyEPidRatioEffCont.cxx:223
 AliEbyEPidRatioEffCont.cxx:224
 AliEbyEPidRatioEffCont.cxx:225
 AliEbyEPidRatioEffCont.cxx:226
 AliEbyEPidRatioEffCont.cxx:227
 AliEbyEPidRatioEffCont.cxx:228
 AliEbyEPidRatioEffCont.cxx:229
 AliEbyEPidRatioEffCont.cxx:230
 AliEbyEPidRatioEffCont.cxx:231
 AliEbyEPidRatioEffCont.cxx:232
 AliEbyEPidRatioEffCont.cxx:233
 AliEbyEPidRatioEffCont.cxx:234
 AliEbyEPidRatioEffCont.cxx:235
 AliEbyEPidRatioEffCont.cxx:236
 AliEbyEPidRatioEffCont.cxx:237
 AliEbyEPidRatioEffCont.cxx:238
 AliEbyEPidRatioEffCont.cxx:239
 AliEbyEPidRatioEffCont.cxx:240
 AliEbyEPidRatioEffCont.cxx:241
 AliEbyEPidRatioEffCont.cxx:242
 AliEbyEPidRatioEffCont.cxx:243
 AliEbyEPidRatioEffCont.cxx:244
 AliEbyEPidRatioEffCont.cxx:245
 AliEbyEPidRatioEffCont.cxx:246
 AliEbyEPidRatioEffCont.cxx:247
 AliEbyEPidRatioEffCont.cxx:248
 AliEbyEPidRatioEffCont.cxx:249
 AliEbyEPidRatioEffCont.cxx:250
 AliEbyEPidRatioEffCont.cxx:251
 AliEbyEPidRatioEffCont.cxx:252
 AliEbyEPidRatioEffCont.cxx:253
 AliEbyEPidRatioEffCont.cxx:254
 AliEbyEPidRatioEffCont.cxx:255
 AliEbyEPidRatioEffCont.cxx:256
 AliEbyEPidRatioEffCont.cxx:257
 AliEbyEPidRatioEffCont.cxx:258
 AliEbyEPidRatioEffCont.cxx:259
 AliEbyEPidRatioEffCont.cxx:260
 AliEbyEPidRatioEffCont.cxx:261
 AliEbyEPidRatioEffCont.cxx:262
 AliEbyEPidRatioEffCont.cxx:263
 AliEbyEPidRatioEffCont.cxx:264
 AliEbyEPidRatioEffCont.cxx:265
 AliEbyEPidRatioEffCont.cxx:266
 AliEbyEPidRatioEffCont.cxx:267
 AliEbyEPidRatioEffCont.cxx:268
 AliEbyEPidRatioEffCont.cxx:269
 AliEbyEPidRatioEffCont.cxx:270
 AliEbyEPidRatioEffCont.cxx:271
 AliEbyEPidRatioEffCont.cxx:272
 AliEbyEPidRatioEffCont.cxx:273
 AliEbyEPidRatioEffCont.cxx:274
 AliEbyEPidRatioEffCont.cxx:275
 AliEbyEPidRatioEffCont.cxx:276
 AliEbyEPidRatioEffCont.cxx:277
 AliEbyEPidRatioEffCont.cxx:278
 AliEbyEPidRatioEffCont.cxx:279
 AliEbyEPidRatioEffCont.cxx:280
 AliEbyEPidRatioEffCont.cxx:281
 AliEbyEPidRatioEffCont.cxx:282
 AliEbyEPidRatioEffCont.cxx:283
 AliEbyEPidRatioEffCont.cxx:284
 AliEbyEPidRatioEffCont.cxx:285
 AliEbyEPidRatioEffCont.cxx:286
 AliEbyEPidRatioEffCont.cxx:287
 AliEbyEPidRatioEffCont.cxx:288
 AliEbyEPidRatioEffCont.cxx:289
 AliEbyEPidRatioEffCont.cxx:290
 AliEbyEPidRatioEffCont.cxx:291
 AliEbyEPidRatioEffCont.cxx:292
 AliEbyEPidRatioEffCont.cxx:293
 AliEbyEPidRatioEffCont.cxx:294
 AliEbyEPidRatioEffCont.cxx:295
 AliEbyEPidRatioEffCont.cxx:296
 AliEbyEPidRatioEffCont.cxx:297
 AliEbyEPidRatioEffCont.cxx:298
 AliEbyEPidRatioEffCont.cxx:299
 AliEbyEPidRatioEffCont.cxx:300
 AliEbyEPidRatioEffCont.cxx:301
 AliEbyEPidRatioEffCont.cxx:302
 AliEbyEPidRatioEffCont.cxx:303
 AliEbyEPidRatioEffCont.cxx:304
 AliEbyEPidRatioEffCont.cxx:305
 AliEbyEPidRatioEffCont.cxx:306
 AliEbyEPidRatioEffCont.cxx:307
 AliEbyEPidRatioEffCont.cxx:308
 AliEbyEPidRatioEffCont.cxx:309
 AliEbyEPidRatioEffCont.cxx:310
 AliEbyEPidRatioEffCont.cxx:311
 AliEbyEPidRatioEffCont.cxx:312
 AliEbyEPidRatioEffCont.cxx:313
 AliEbyEPidRatioEffCont.cxx:314
 AliEbyEPidRatioEffCont.cxx:315
 AliEbyEPidRatioEffCont.cxx:316
 AliEbyEPidRatioEffCont.cxx:317
 AliEbyEPidRatioEffCont.cxx:318
 AliEbyEPidRatioEffCont.cxx:319
 AliEbyEPidRatioEffCont.cxx:320
 AliEbyEPidRatioEffCont.cxx:321
 AliEbyEPidRatioEffCont.cxx:322
 AliEbyEPidRatioEffCont.cxx:323
 AliEbyEPidRatioEffCont.cxx:324
 AliEbyEPidRatioEffCont.cxx:325
 AliEbyEPidRatioEffCont.cxx:326
 AliEbyEPidRatioEffCont.cxx:327
 AliEbyEPidRatioEffCont.cxx:328
 AliEbyEPidRatioEffCont.cxx:329
 AliEbyEPidRatioEffCont.cxx:330
 AliEbyEPidRatioEffCont.cxx:331
 AliEbyEPidRatioEffCont.cxx:332
 AliEbyEPidRatioEffCont.cxx:333
 AliEbyEPidRatioEffCont.cxx:334
 AliEbyEPidRatioEffCont.cxx:335
 AliEbyEPidRatioEffCont.cxx:336
 AliEbyEPidRatioEffCont.cxx:337
 AliEbyEPidRatioEffCont.cxx:338
 AliEbyEPidRatioEffCont.cxx:339
 AliEbyEPidRatioEffCont.cxx:340
 AliEbyEPidRatioEffCont.cxx:341
 AliEbyEPidRatioEffCont.cxx:342
 AliEbyEPidRatioEffCont.cxx:343
 AliEbyEPidRatioEffCont.cxx:344
 AliEbyEPidRatioEffCont.cxx:345
 AliEbyEPidRatioEffCont.cxx:346
 AliEbyEPidRatioEffCont.cxx:347
 AliEbyEPidRatioEffCont.cxx:348
 AliEbyEPidRatioEffCont.cxx:349
 AliEbyEPidRatioEffCont.cxx:350
 AliEbyEPidRatioEffCont.cxx:351
 AliEbyEPidRatioEffCont.cxx:352
 AliEbyEPidRatioEffCont.cxx:353
 AliEbyEPidRatioEffCont.cxx:354
 AliEbyEPidRatioEffCont.cxx:355
 AliEbyEPidRatioEffCont.cxx:356
 AliEbyEPidRatioEffCont.cxx:357
 AliEbyEPidRatioEffCont.cxx:358
 AliEbyEPidRatioEffCont.cxx:359
 AliEbyEPidRatioEffCont.cxx:360
 AliEbyEPidRatioEffCont.cxx:361
 AliEbyEPidRatioEffCont.cxx:362
 AliEbyEPidRatioEffCont.cxx:363
 AliEbyEPidRatioEffCont.cxx:364
 AliEbyEPidRatioEffCont.cxx:365
 AliEbyEPidRatioEffCont.cxx:366
 AliEbyEPidRatioEffCont.cxx:367
 AliEbyEPidRatioEffCont.cxx:368
 AliEbyEPidRatioEffCont.cxx:369
 AliEbyEPidRatioEffCont.cxx:370
 AliEbyEPidRatioEffCont.cxx:371
 AliEbyEPidRatioEffCont.cxx:372
 AliEbyEPidRatioEffCont.cxx:373
 AliEbyEPidRatioEffCont.cxx:374
 AliEbyEPidRatioEffCont.cxx:375
 AliEbyEPidRatioEffCont.cxx:376
 AliEbyEPidRatioEffCont.cxx:377
 AliEbyEPidRatioEffCont.cxx:378
 AliEbyEPidRatioEffCont.cxx:379
 AliEbyEPidRatioEffCont.cxx:380
 AliEbyEPidRatioEffCont.cxx:381
 AliEbyEPidRatioEffCont.cxx:382
 AliEbyEPidRatioEffCont.cxx:383
 AliEbyEPidRatioEffCont.cxx:384
 AliEbyEPidRatioEffCont.cxx:385
 AliEbyEPidRatioEffCont.cxx:386
 AliEbyEPidRatioEffCont.cxx:387
 AliEbyEPidRatioEffCont.cxx:388
 AliEbyEPidRatioEffCont.cxx:389
 AliEbyEPidRatioEffCont.cxx:390
 AliEbyEPidRatioEffCont.cxx:391
 AliEbyEPidRatioEffCont.cxx:392
 AliEbyEPidRatioEffCont.cxx:393
 AliEbyEPidRatioEffCont.cxx:394
 AliEbyEPidRatioEffCont.cxx:395
 AliEbyEPidRatioEffCont.cxx:396
 AliEbyEPidRatioEffCont.cxx:397
 AliEbyEPidRatioEffCont.cxx:398
 AliEbyEPidRatioEffCont.cxx:399
 AliEbyEPidRatioEffCont.cxx:400
 AliEbyEPidRatioEffCont.cxx:401
 AliEbyEPidRatioEffCont.cxx:402
 AliEbyEPidRatioEffCont.cxx:403
 AliEbyEPidRatioEffCont.cxx:404
 AliEbyEPidRatioEffCont.cxx:405
 AliEbyEPidRatioEffCont.cxx:406
 AliEbyEPidRatioEffCont.cxx:407
 AliEbyEPidRatioEffCont.cxx:408
 AliEbyEPidRatioEffCont.cxx:409
 AliEbyEPidRatioEffCont.cxx:410
 AliEbyEPidRatioEffCont.cxx:411
 AliEbyEPidRatioEffCont.cxx:412
 AliEbyEPidRatioEffCont.cxx:413
 AliEbyEPidRatioEffCont.cxx:414
 AliEbyEPidRatioEffCont.cxx:415
 AliEbyEPidRatioEffCont.cxx:416
 AliEbyEPidRatioEffCont.cxx:417
 AliEbyEPidRatioEffCont.cxx:418
 AliEbyEPidRatioEffCont.cxx:419
 AliEbyEPidRatioEffCont.cxx:420
 AliEbyEPidRatioEffCont.cxx:421
 AliEbyEPidRatioEffCont.cxx:422
 AliEbyEPidRatioEffCont.cxx:423
 AliEbyEPidRatioEffCont.cxx:424
 AliEbyEPidRatioEffCont.cxx:425
 AliEbyEPidRatioEffCont.cxx:426
 AliEbyEPidRatioEffCont.cxx:427
 AliEbyEPidRatioEffCont.cxx:428
 AliEbyEPidRatioEffCont.cxx:429
 AliEbyEPidRatioEffCont.cxx:430
 AliEbyEPidRatioEffCont.cxx:431
 AliEbyEPidRatioEffCont.cxx:432
 AliEbyEPidRatioEffCont.cxx:433
 AliEbyEPidRatioEffCont.cxx:434
 AliEbyEPidRatioEffCont.cxx:435
 AliEbyEPidRatioEffCont.cxx:436
 AliEbyEPidRatioEffCont.cxx:437
 AliEbyEPidRatioEffCont.cxx:438
 AliEbyEPidRatioEffCont.cxx:439
 AliEbyEPidRatioEffCont.cxx:440
 AliEbyEPidRatioEffCont.cxx:441
 AliEbyEPidRatioEffCont.cxx:442
 AliEbyEPidRatioEffCont.cxx:443
 AliEbyEPidRatioEffCont.cxx:444
 AliEbyEPidRatioEffCont.cxx:445
 AliEbyEPidRatioEffCont.cxx:446
 AliEbyEPidRatioEffCont.cxx:447
 AliEbyEPidRatioEffCont.cxx:448
 AliEbyEPidRatioEffCont.cxx:449
 AliEbyEPidRatioEffCont.cxx:450
 AliEbyEPidRatioEffCont.cxx:451
 AliEbyEPidRatioEffCont.cxx:452
 AliEbyEPidRatioEffCont.cxx:453
 AliEbyEPidRatioEffCont.cxx:454
 AliEbyEPidRatioEffCont.cxx:455
 AliEbyEPidRatioEffCont.cxx:456
 AliEbyEPidRatioEffCont.cxx:457
 AliEbyEPidRatioEffCont.cxx:458
 AliEbyEPidRatioEffCont.cxx:459
 AliEbyEPidRatioEffCont.cxx:460
 AliEbyEPidRatioEffCont.cxx:461
 AliEbyEPidRatioEffCont.cxx:462
 AliEbyEPidRatioEffCont.cxx:463
 AliEbyEPidRatioEffCont.cxx:464
 AliEbyEPidRatioEffCont.cxx:465
 AliEbyEPidRatioEffCont.cxx:466
 AliEbyEPidRatioEffCont.cxx:467
 AliEbyEPidRatioEffCont.cxx:468
 AliEbyEPidRatioEffCont.cxx:469
 AliEbyEPidRatioEffCont.cxx:470
 AliEbyEPidRatioEffCont.cxx:471
 AliEbyEPidRatioEffCont.cxx:472
 AliEbyEPidRatioEffCont.cxx:473
 AliEbyEPidRatioEffCont.cxx:474
 AliEbyEPidRatioEffCont.cxx:475
 AliEbyEPidRatioEffCont.cxx:476
 AliEbyEPidRatioEffCont.cxx:477
 AliEbyEPidRatioEffCont.cxx:478
 AliEbyEPidRatioEffCont.cxx:479
 AliEbyEPidRatioEffCont.cxx:480
 AliEbyEPidRatioEffCont.cxx:481
 AliEbyEPidRatioEffCont.cxx:482
 AliEbyEPidRatioEffCont.cxx:483
 AliEbyEPidRatioEffCont.cxx:484
 AliEbyEPidRatioEffCont.cxx:485
 AliEbyEPidRatioEffCont.cxx:486
 AliEbyEPidRatioEffCont.cxx:487
 AliEbyEPidRatioEffCont.cxx:488
 AliEbyEPidRatioEffCont.cxx:489
 AliEbyEPidRatioEffCont.cxx:490
 AliEbyEPidRatioEffCont.cxx:491
 AliEbyEPidRatioEffCont.cxx:492
 AliEbyEPidRatioEffCont.cxx:493
 AliEbyEPidRatioEffCont.cxx:494
 AliEbyEPidRatioEffCont.cxx:495
 AliEbyEPidRatioEffCont.cxx:496
 AliEbyEPidRatioEffCont.cxx:497
 AliEbyEPidRatioEffCont.cxx:498
 AliEbyEPidRatioEffCont.cxx:499
 AliEbyEPidRatioEffCont.cxx:500
 AliEbyEPidRatioEffCont.cxx:501
 AliEbyEPidRatioEffCont.cxx:502
 AliEbyEPidRatioEffCont.cxx:503
 AliEbyEPidRatioEffCont.cxx:504
 AliEbyEPidRatioEffCont.cxx:505
 AliEbyEPidRatioEffCont.cxx:506
 AliEbyEPidRatioEffCont.cxx:507
 AliEbyEPidRatioEffCont.cxx:508
 AliEbyEPidRatioEffCont.cxx:509
 AliEbyEPidRatioEffCont.cxx:510
 AliEbyEPidRatioEffCont.cxx:511
 AliEbyEPidRatioEffCont.cxx:512
 AliEbyEPidRatioEffCont.cxx:513
 AliEbyEPidRatioEffCont.cxx:514
 AliEbyEPidRatioEffCont.cxx:515
 AliEbyEPidRatioEffCont.cxx:516
 AliEbyEPidRatioEffCont.cxx:517
 AliEbyEPidRatioEffCont.cxx:518
 AliEbyEPidRatioEffCont.cxx:519
 AliEbyEPidRatioEffCont.cxx:520
 AliEbyEPidRatioEffCont.cxx:521
 AliEbyEPidRatioEffCont.cxx:522
 AliEbyEPidRatioEffCont.cxx:523
 AliEbyEPidRatioEffCont.cxx:524
 AliEbyEPidRatioEffCont.cxx:525
 AliEbyEPidRatioEffCont.cxx:526
 AliEbyEPidRatioEffCont.cxx:527
 AliEbyEPidRatioEffCont.cxx:528
 AliEbyEPidRatioEffCont.cxx:529
 AliEbyEPidRatioEffCont.cxx:530
 AliEbyEPidRatioEffCont.cxx:531
 AliEbyEPidRatioEffCont.cxx:532
 AliEbyEPidRatioEffCont.cxx:533
 AliEbyEPidRatioEffCont.cxx:534
 AliEbyEPidRatioEffCont.cxx:535
 AliEbyEPidRatioEffCont.cxx:536
 AliEbyEPidRatioEffCont.cxx:537
 AliEbyEPidRatioEffCont.cxx:538
 AliEbyEPidRatioEffCont.cxx:539
 AliEbyEPidRatioEffCont.cxx:540
 AliEbyEPidRatioEffCont.cxx:541
 AliEbyEPidRatioEffCont.cxx:542
 AliEbyEPidRatioEffCont.cxx:543
 AliEbyEPidRatioEffCont.cxx:544
 AliEbyEPidRatioEffCont.cxx:545
 AliEbyEPidRatioEffCont.cxx:546
 AliEbyEPidRatioEffCont.cxx:547
 AliEbyEPidRatioEffCont.cxx:548
 AliEbyEPidRatioEffCont.cxx:549
 AliEbyEPidRatioEffCont.cxx:550
 AliEbyEPidRatioEffCont.cxx:551
 AliEbyEPidRatioEffCont.cxx:552