ROOT logo
//-*- Mode: C++ -*-

#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 "AliAnalysisNetParticleEffCont.h"

using namespace std;

/**
 * Class for NetParticle Distributions
 * -- Efficiency and contaminations for netParticle distributions
 * Authors: Jochen Thaeder <jochen@thaeder.de>
 *          Michael Weber <m.weber@cern.ch>
 */

ClassImp(AliAnalysisNetParticleEffCont)

/*
 * ---------------------------------------------------------------------------------
 *                            Constructor / Destructor
 * ---------------------------------------------------------------------------------
 */

//________________________________________________________________________
AliAnalysisNetParticleEffCont::AliAnalysisNetParticleEffCont() :
  AliAnalysisNetParticleBase("EffCont", "EffCont"),
  fLabelsRec(NULL),
  fHnEff(NULL),
  fHnCont(NULL) {
  // Constructor   

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

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

  if (fLabelsRec) {
    if (fLabelsRec[0])
      delete[] (fLabelsRec[0]);
    if (fLabelsRec[1])
      delete[] (fLabelsRec[1]);
    if (fLabelsRec)
      delete[] fLabelsRec;
  }
}

/*
 * ---------------------------------------------------------------------------------
 *                                 Public Methods
 * ---------------------------------------------------------------------------------
 */

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

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

  return;
}      

/*
 * ---------------------------------------------------------------------------------
 *                                Methods - private
 * ---------------------------------------------------------------------------------
 */

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

  // -- MC Labels for efficiency
  fLabelsRec        = new Int_t*[2];
  for (Int_t ii = 0; ii < 2 ; ++ii)
    fLabelsRec[ii] = NULL;
}

//________________________________________________________________________
void AliAnalysisNetParticleEffCont::CreateHistograms() {
  // -- Create histograms

  // ------------------------------------------------------------------
  // -- Create THnSparse - Eff
  // ------------------------------------------------------------------

  Int_t    binHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistNBinsCent,    AliAnalysisNetParticleHelper::fgkfHistNBinsEta,       //     cent |     etaMC
			   AliAnalysisNetParticleHelper::fgkfHistNBinsRap,     AliAnalysisNetParticleHelper::fgkfHistNBinsPhi,       //      yMC |     phiMC
			   AliAnalysisNetParticleHelper::fgkfHistNBinsPt,      AliAnalysisNetParticleHelper::fgkfHistNBinsSign,      //     ptMC |    signMC
			   2,      2  ,      2  ,                                                                                    // findable | recStatus  | pidStatus
			   AliAnalysisNetParticleHelper::fgkfHistNBinsEta,     AliAnalysisNetParticleHelper::fgkfHistNBinsRap,       //   etaRec |      yRec
			   AliAnalysisNetParticleHelper::fgkfHistNBinsPhi,     AliAnalysisNetParticleHelper::fgkfHistNBinsPt,        //   phiRec |     ptRec
			   AliAnalysisNetParticleHelper::fgkfHistNBinsSign,                                                          //  signRec
  			   AliAnalysisNetParticleHelper::fgkfHistNBinsEta,     AliAnalysisNetParticleHelper::fgkfHistNBinsRap,       // deltaEta | deltaY
			   2*AliAnalysisNetParticleHelper::fgkfHistNBinsPhi+1, 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPt+1,    // deltaPhi | deltaPt
			   AliAnalysisNetParticleHelper::fgkfHistNBinsSign+2};                                                       // deltaSign

  
  Double_t minHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[0], AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], 
			   AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],  AliAnalysisNetParticleHelper::fgkfHistRangePhi[0], 
			   AliAnalysisNetParticleHelper::fgkfHistRangePt[0],   AliAnalysisNetParticleHelper::fgkfHistRangeSign[0], 
			   -0.5,     -0.5,     -0.5,
			   AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], 
			   AliAnalysisNetParticleHelper::fgkfHistRangePhi[0],  AliAnalysisNetParticleHelper::fgkfHistRangePt[0],
			   AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
			   AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], 
			   -1.*AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], -1.*AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			   AliAnalysisNetParticleHelper::fgkfHistRangeSign[0]-1.};

  Double_t maxHnEff[19] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[1], AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], 
			   AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],  AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], 
			   AliAnalysisNetParticleHelper::fgkfHistRangePt[1],   AliAnalysisNetParticleHelper::fgkfHistRangeSign[1], 
			   1.5,      1.5,      1.5,
			   AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], 
			   AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],  AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			   AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
			   AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], 
			   AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],  AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			   AliAnalysisNetParticleHelper::fgkfHistRangeSign[1]+1.};

  fHnEff = new THnSparseF("hnEff", "cent:etaMC:yMC:phiMC:ptMC:signMC:findable:recStatus:pidStatus:etaRec:yRec:phiRec:ptRec:signRec:deltaEta:deltaY:deltaPhi:deltaPt:deltaSign", 
			  19, binHnEff, minHnEff, maxHnEff);
  fHnEff->Sumw2();    

  fHnEff->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
  fHnEff->GetAxis(1)->SetTitle("#eta_{MC}");                    //  eta  [-0.9, 0.9]
  fHnEff->GetAxis(2)->SetTitle("#it{y}_{MC}");                  //  rapidity  [-0.5, 0.5]
  fHnEff->GetAxis(3)->SetTitle("#varphi_{MC} (rad)");           //  phi  [ 0. , 2Pi]
  fHnEff->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})");   //  pT   [ 0.2, 2.3]
  
  fHnEff->GetAxis(5)->SetTitle("sign");                         //  -1 | 0 | +1 
  fHnEff->GetAxis(6)->SetTitle("findable");                     //  0 not findable      |  1 findable
  fHnEff->GetAxis(7)->SetTitle("recStatus");                    //  0 not reconstructed |  1 reconstructed
  fHnEff->GetAxis(8)->SetTitle("recPid");                       //  0 not accepted      |  1 accepted

  fHnEff->GetAxis(9)->SetTitle("#eta_{Rec}");                   //  eta  [-0.9, 0.9]
  fHnEff->GetAxis(10)->SetTitle("#it{y}_{Rec}");                //  rapidity  [-0.5, 0.5]
  fHnEff->GetAxis(11)->SetTitle("#varphi_{Rec} (rad)");         //  phi  [ 0. , 2Pi]
  fHnEff->GetAxis(12)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); //  pt   [ 0.2, 2.3]
  fHnEff->GetAxis(13)->SetTitle("sign");                        //  -1 | 0 | +1 

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

  fHelper->BinLogAxis(fHnEff,  4);
  fHelper->BinLogAxis(fHnEff, 12);

  /* 
     >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
     
     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[17] = {AliAnalysisNetParticleHelper::fgkfHistNBinsCent, AliAnalysisNetParticleHelper::fgkfHistNBinsEta,       //     cent |    etaMC
			    AliAnalysisNetParticleHelper::fgkfHistNBinsRap,  AliAnalysisNetParticleHelper::fgkfHistNBinsPhi,       //      yMC |    phiMC
			    AliAnalysisNetParticleHelper::fgkfHistNBinsPt,   AliAnalysisNetParticleHelper::fgkfHistNBinsSign,      //     ptMC |   signMC=contSign
			    8,                                                                                                     // contPart | 
			    AliAnalysisNetParticleHelper::fgkfHistNBinsEta,  AliAnalysisNetParticleHelper::fgkfHistNBinsRap,       //   etaRec |     yRec
			    AliAnalysisNetParticleHelper::fgkfHistNBinsPhi,  AliAnalysisNetParticleHelper::fgkfHistNBinsPt,        //   phiRec |    ptRec
			    AliAnalysisNetParticleHelper::fgkfHistNBinsSign,                                                       //  signRec  
			    AliAnalysisNetParticleHelper::fgkfHistNBinsEta,     AliAnalysisNetParticleHelper::fgkfHistNBinsRap,    // deltaEta | deltaY
			    2*AliAnalysisNetParticleHelper::fgkfHistNBinsPhi+1, 2*AliAnalysisNetParticleHelper::fgkfHistNBinsPt+1, // deltaPhi | deltaPt
			    AliAnalysisNetParticleHelper::fgkfHistNBinsSign+2};                                                    // deltaSign
  
  Double_t minHnCont[17] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[0], AliAnalysisNetParticleHelper::fgkfHistRangeEta[0], 
			    AliAnalysisNetParticleHelper::fgkfHistRangeRap[0],  AliAnalysisNetParticleHelper::fgkfHistRangePhi[0], 
			    AliAnalysisNetParticleHelper::fgkfHistRangePt[0],   AliAnalysisNetParticleHelper::fgkfHistRangeSign[0], 
			    0.5,                                            
			    AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], 
			    AliAnalysisNetParticleHelper::fgkfHistRangePhi[0],  AliAnalysisNetParticleHelper::fgkfHistRangePt[0],
			    AliAnalysisNetParticleHelper::fgkfHistRangeSign[0],
			    AliAnalysisNetParticleHelper::fgkfHistRangeEta[0],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[0], 
			    -1.*AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], -1.*AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			    AliAnalysisNetParticleHelper::fgkfHistRangeSign[0]-1.};

  
  Double_t maxHnCont[17] = {AliAnalysisNetParticleHelper::fgkfHistRangeCent[1], AliAnalysisNetParticleHelper::fgkfHistRangeEta[1], 
			    AliAnalysisNetParticleHelper::fgkfHistRangeRap[1],  AliAnalysisNetParticleHelper::fgkfHistRangePhi[1], 
			    AliAnalysisNetParticleHelper::fgkfHistRangePt[1],   AliAnalysisNetParticleHelper::fgkfHistRangeSign[1],
			    8.5,                        
			    AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], 
			    AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],  AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			    AliAnalysisNetParticleHelper::fgkfHistRangeSign[1], 
			    AliAnalysisNetParticleHelper::fgkfHistRangeEta[1],  AliAnalysisNetParticleHelper::fgkfHistRangeRap[1], 
			    AliAnalysisNetParticleHelper::fgkfHistRangePhi[1],  AliAnalysisNetParticleHelper::fgkfHistRangePt[1],
			    AliAnalysisNetParticleHelper::fgkfHistRangeSign[1]+1.};

  fHnCont = new THnSparseF("hnCont", "cent:etaMC:yMC:phiMC:ptMC:signMC:contPart:etaRec:yRec:phiRec:ptRec:signRec:deltaEta:deltaY:deltaPhi:deltaPt:deltaSign",
			   17, binHnCont, minHnCont, maxHnCont);
  fHnCont->Sumw2();    

  fHnCont->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
  fHnCont->GetAxis(1)->SetTitle("#eta_{MC}");                    //  eta  [-0.9,0.9]
  fHnCont->GetAxis(2)->SetTitle("#it{y}_{MC}");                  //  rapidity  [-0.5, 0.5]
  fHnCont->GetAxis(3)->SetTitle("#varphi_{MC} (rad)");           //  phi  [ 0. ,2Pi]
  fHnCont->GetAxis(4)->SetTitle("#it{p}_{T,MC} (GeV/#it{c})");   //  pT   [ 0.2,2.3]
  fHnCont->GetAxis(5)->SetTitle("sign");                         //  -1 | 0 | +1 
  
  fHnCont->GetAxis(6)->SetTitle("contPart");                     //  1 pi | 2 K | 3 p | 4 e | 5 mu | 6 other | 7 p from WeakDecay | 8 p from Material
 
  fHnCont->GetAxis(7)->SetTitle("#eta_{Rec}");                   //  eta  [-0.9, 0.9]
  fHnCont->GetAxis(8)->SetTitle("#it{y}_{Rec}");                 //  rapidity  [-0.5, 0.5]
  fHnCont->GetAxis(9)->SetTitle("#varphi_{Rec} (rad)");          //  phi  [ 0. , 2Pi]
  fHnCont->GetAxis(10)->SetTitle("#it{p}_{T,Rec} (GeV/#it{c})"); //  pt   [ 0.2, 2.3]
  fHnCont->GetAxis(11)->SetTitle("sign");                        //  -1 | 0 | +1 

  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 

  fHelper->BinLogAxis(fHnCont,  4);
  fHelper->BinLogAxis(fHnCont, 10);

  return;
}

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

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

  return 0;
}

//________________________________________________________________________
void AliAnalysisNetParticleEffCont::Reset() {
  // -- Reset eventwise

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

/*
 * ---------------------------------------------------------------------------------
 *                                 Private Methods
 * ---------------------------------------------------------------------------------
 */

//________________________________________________________________________
void AliAnalysisNetParticleEffCont::FillMCLabels() {
  // Fill MC labels
  // Loop over ESD tracks and fill arrays with MC lables
  //  fLabelsRec[0] : all Tracks
  //  fLabelsRec[1] : all Tracks accepted by PID of TPC
  // Check every accepted track if correctly identified
  //  otherwise check for contamination

  // -- Get ranges for AOD particles
  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;
    }

    // -- Check if accepted in rapidity window -- for identified particles
    //    for charged particles -- eta check is done in the trackcuts
    Double_t yP;
    if (fHelper->GetUsePID() && !fHelper->IsTrackAcceptedRapidity(track, yP))
      continue;

    // -- Check if accepted with thighter DCA cuts
    // -- returns kTRUE for AODs for now : MW
    if (!fHelper->IsTrackAcceptedDCA(track))
      continue;

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

    // -- Check if accepted by PID from TPC or TPC+TOF
    Double_t pid[3];
    if (!fHelper->IsTrackAcceptedPID(track, pid))
      continue;

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

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

  return;
}

//________________________________________________________________________
void AliAnalysisNetParticleEffCont::CheckContTrack(AliVTrack *track) {
  // Check if particle is contamination or correctly identified for ESDs and AODs
  // Check for missidentified primaries and secondaries
  // Fill contamination THnSparse

  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();
  
  // -- Check if correctly identified 
  //    > return if correctly identified -> all ok, no action neededin this method
  //    > if PID required check -> for the correct (signed pdgcode) particle
  //    > no PID just check for primary 
  if (fHelper->GetUsePID()) {
    if (particle->PdgCode() == (signRec*fPdgCode))
      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
  }
  
  // -- Get Reconstructed y
  //    yRec = y for identified particles | yRec = eta for charged particles
  Double_t yRec  = 0.;
  fHelper->IsTrackAcceptedRapidity(track, yRec); 

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

  // -- Fill THnSparse
  Double_t hnCont[17] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), signMC, 
			 contPart, track->Eta(), yRec, track->Phi(), track->Pt(), signRec,
			 particle->Eta()-track->Eta(), particle->Y()-yRec, deltaPhi, particle->Pt()-track->Pt(), signMC-signRec};
  fHnCont->Fill(hnCont);
}

//________________________________________________________________________
void AliAnalysisNetParticleEffCont::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;

    // -- Check if accepted in rapidity window -- for identified particles
    Double_t yMC;
    if (fHelper->GetUsePID() && !fHelper->IsParticleAcceptedRapidity(particle, yMC))
      continue;

    // -- Check if accepted in eta window -- for charged particles
    if (!fHelper->GetUsePID() && TMath::Abs(particle->Eta()) > etaRange[1])
      continue;

    // -- Check if probeParticle / anti-probeParticle 
    //    > skip check if PID is not required
    if (fHelper->GetUsePID() && TMath::Abs(particle->PdgCode()) != fPdgCode)
      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.;

    // -- 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][idxRec]) {
	recStatus = 1.;
	
	if (idxMC == fLabelsRec[1][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); // 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();
    }
    
    // -- Fill THnSparse
    Double_t hnEff[19] = {fCentralityBin, particle->Eta(), particle->Y(), particle->Phi(), particle->Pt(), signMC, 
			  findable, recStatus, recPid, etaRec, yRec, phiRec, ptRec, signRec,
			  particle->Eta()-etaRec, particle->Y()-yRec, deltaPhi, particle->Pt()-ptRec, signMC-signRec};
    fHnEff->Fill(hnEff);

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