ROOT logo
#include "TChain.h"
#include "TFile.h"
#include "TF1.h"
#include "TAxis.h"
#include "TProfile.h"
#include "TRandom3.h"
#include "TFitResultPtr.h"
#include "TFitResult.h"

#include "AliMCParticle.h"

#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"

#include "AliESDEvent.h"
#include "AliMCEvent.h"
#include "AliESDtrackCuts.h"
#include "AliAnalysisFilter.h"
#include "AliInputEventHandler.h"

#include "AliVVertex.h"
#include "AliPID.h"
#include "AliPIDCombined.h"
#include "AliPIDResponse.h"
#include "AliTPCPIDResponse.h"

#include "AliAnalysisTaskPID.h"

/*
This task collects PID output from different detectors.
Only tracks fulfilling some standard quality cuts are taken into account.
At the moment, only data from TPC and TOF is collected. But in future,
data from e.g. HMPID is also foreseen.

Contact: bhess@cern.ch
*/

ClassImp(AliAnalysisTaskPID)

const Int_t AliAnalysisTaskPID::fgkNumJetAxes = 3; // Number of additional axes for jets
const Double_t AliAnalysisTaskPID::fgkEpsilon = 1e-8; // Double_t threshold above zero
const Int_t AliAnalysisTaskPID::fgkMaxNumGenEntries = 500; // Maximum number of generated detector responses per track and delta(Prime) and associated species

const Double_t AliAnalysisTaskPID::fgkOneOverSqrt2 = 0.707106781186547462; // = 1. / TMath::Sqrt2();

const Double_t AliAnalysisTaskPID::fgkSigmaReferenceForTransitionPars = 0.05; // Reference sigma chosen to calculate transition

//________________________________________________________________________
AliAnalysisTaskPID::AliAnalysisTaskPID()
  : AliAnalysisTaskPIDV0base()
  , fRun(-1)
  , fPIDcombined(new AliPIDCombined())
  , fInputFromOtherTask(kFALSE)
  , fDoPID(kTRUE)
  , fDoEfficiency(kTRUE)
  , fDoPtResolution(kFALSE)
  , fDoDeDxCheck(kFALSE)
  , fDoBinZeroStudy(kFALSE)
  , fStoreCentralityPercentile(kFALSE)
  , fStoreAdditionalJetInformation(kFALSE)
  , fTakeIntoAccountMuons(kFALSE)
  , fUseITS(kFALSE)
  , fUseTOF(kFALSE)
  , fUsePriors(kFALSE)
  , fTPCDefaultPriors(kFALSE)
  , fUseMCidForGeneration(kTRUE)
  , fUseConvolutedGaus(kFALSE) 
  , fkConvolutedGausNPar(3)
  , fAccuracyNonGaussianTail(1e-8)
  , fkDeltaPrimeLowLimit(0.02)
  , fkDeltaPrimeUpLimit(40.0)
  , fConvolutedGausDeltaPrime(0x0)
  , fTOFmode(1)
  , fEtaAbsCutLow(0.0)
  , fEtaAbsCutUp(0.9)
  , fPileUpRejectionType(AliAnalysisTaskPIDV0base::kPileUpRejectionOff)
  , fDoAnySystematicStudiesOnTheExpectedSignal(kFALSE)
  , fSystematicScalingSplinesThreshold(50.)
  , fSystematicScalingSplinesBelowThreshold(1.0)
  , fSystematicScalingSplinesAboveThreshold(1.0)
  , fSystematicScalingEtaCorrectionMomentumThr(0.35)
  , fSystematicScalingEtaCorrectionLowMomenta(1.0)
  , fSystematicScalingEtaCorrectionHighMomenta(1.0)
  , fSystematicScalingEtaSigmaParaThreshold(250.)
  , fSystematicScalingEtaSigmaParaBelowThreshold(1.0)
  , fSystematicScalingEtaSigmaParaAboveThreshold(1.0)
  , fSystematicScalingMultCorrection(1.0)
  , fCentralityEstimator("V0M")
  , fhPIDdataAll(0x0)
  , fhGenEl(0x0)
  , fhGenKa(0x0)
  , fhGenPi(0x0)
  , fhGenMu(0x0)
  , fhGenPr(0x0)
  , fGenRespElDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  /*
  , fGenRespElDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPr(new Double_t[fgkMaxNumGenEntries])
  */
  , fDeltaPrimeAxis(0x0)
  , fhMaxEtaVariation(0x0)
  , fhEventsProcessed(0x0)
  , fhEventsTriggerSel(0x0)
  , fhEventsTriggerSelVtxCut(0x0) 
  , fhEventsProcessedNoPileUpRejection(0x0)
  , fChargedGenPrimariesTriggerSel(0x0)
  , fChargedGenPrimariesTriggerSelVtxCut(0x0)
  , fChargedGenPrimariesTriggerSelVtxCutZ(0x0)
  , fChargedGenPrimariesTriggerSelVtxCutZPileUpRej(0x0)
  , fhMCgeneratedYieldsPrimaries(0x0)
  , fh2FFJetPtRec(0x0)
  , fh2FFJetPtGen(0x0)
  , fh1Xsec(0x0)
  , fh1Trials(0x0)
  , fh1EvtsPtHardCut(0x0)
  , fContainerEff(0x0)
  , fQASharedCls(0x0)
  , fDeDxCheck(0x0)
  , fOutputContainer(0x0)
  , fQAContainer(0x0)
{
  // default Constructor
  
  AliLog::SetClassDebugLevel("AliAnalysisTaskPID", AliLog::kInfo); 
  
  fConvolutedGausDeltaPrime = new TF1("convolutedGausDeltaPrime", this, &AliAnalysisTaskPID::ConvolutedGaus,
                                      fkDeltaPrimeLowLimit, fkDeltaPrimeUpLimit,
                                      fkConvolutedGausNPar, "AliAnalysisTaskPID", "ConvolutedGaus");
  
  // Set some arbitrary parameteres, such that the function call will not crash
  // (although it should not be called with these parameters...)
  fConvolutedGausDeltaPrime->SetParameter(0, 0);
  fConvolutedGausDeltaPrime->SetParameter(1, 1);
  fConvolutedGausDeltaPrime->SetParameter(2, 2);
  
  
  // Initialisation of translation parameters is time consuming.
  // Therefore, default values will only be initialised if they are really needed.
  // Otherwise, it is left to the user to set the parameter properly.
  fConvolutedGaussTransitionPars[0] = -999;
  fConvolutedGaussTransitionPars[1] = -999;
  fConvolutedGaussTransitionPars[2] = -999;
  
  // Fraction histos
  for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
    fFractionHists[i] = 0x0;
    fFractionSysErrorHists[i] = 0x0;
    
    fPtResolution[i] = 0x0;
  }
}

//________________________________________________________________________
AliAnalysisTaskPID::AliAnalysisTaskPID(const char *name)
  : AliAnalysisTaskPIDV0base(name)
  , fRun(-1)
  , fPIDcombined(new AliPIDCombined())
  , fInputFromOtherTask(kFALSE)
  , fDoPID(kTRUE)
  , fDoEfficiency(kTRUE)
  , fDoPtResolution(kFALSE)
  , fDoDeDxCheck(kFALSE)
  , fDoBinZeroStudy(kFALSE)
  , fStoreCentralityPercentile(kFALSE)
  , fStoreAdditionalJetInformation(kFALSE)
  , fTakeIntoAccountMuons(kFALSE)
  , fUseITS(kFALSE)
  , fUseTOF(kFALSE)
  , fUsePriors(kFALSE)
  , fTPCDefaultPriors(kFALSE)
  , fUseMCidForGeneration(kTRUE)
  , fUseConvolutedGaus(kFALSE) 
  , fkConvolutedGausNPar(3)
  , fAccuracyNonGaussianTail(1e-8)
  , fkDeltaPrimeLowLimit(0.02)
  , fkDeltaPrimeUpLimit(40.0)
  , fConvolutedGausDeltaPrime(0x0)
  , fTOFmode(1)
  , fEtaAbsCutLow(0.0)
  , fEtaAbsCutUp(0.9)
  , fPileUpRejectionType(AliAnalysisTaskPIDV0base::kPileUpRejectionOff)
  , fDoAnySystematicStudiesOnTheExpectedSignal(kFALSE)
  , fSystematicScalingSplinesThreshold(50.)
  , fSystematicScalingSplinesBelowThreshold(1.0)
  , fSystematicScalingSplinesAboveThreshold(1.0)
  , fSystematicScalingEtaCorrectionMomentumThr(0.35)
  , fSystematicScalingEtaCorrectionLowMomenta(1.0)
  , fSystematicScalingEtaCorrectionHighMomenta(1.0)
  , fSystematicScalingEtaSigmaParaThreshold(250.)
  , fSystematicScalingEtaSigmaParaBelowThreshold(1.0)
  , fSystematicScalingEtaSigmaParaAboveThreshold(1.0)
  , fSystematicScalingMultCorrection(1.0)
  , fCentralityEstimator("V0M")
  , fhPIDdataAll(0x0)
  , fhGenEl(0x0)
  , fhGenKa(0x0)
  , fhGenPi(0x0)
  , fhGenMu(0x0)
  , fhGenPr(0x0)
  , fGenRespElDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimeEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimeKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimePi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPrimePr(new Double_t[fgkMaxNumGenEntries])
  /*
  , fGenRespElDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespElDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespKaDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPiDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespMuDeltaPr(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaEl(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaKa(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPi(new Double_t[fgkMaxNumGenEntries])
  , fGenRespPrDeltaPr(new Double_t[fgkMaxNumGenEntries])
  */
  , fDeltaPrimeAxis(0x0)
  , fhMaxEtaVariation(0x0)
  , fhEventsProcessed(0x0)
  , fhEventsTriggerSel(0x0)
  , fhEventsTriggerSelVtxCut(0x0) 
  , fhEventsProcessedNoPileUpRejection(0x0)
  , fChargedGenPrimariesTriggerSel(0x0)
  , fChargedGenPrimariesTriggerSelVtxCut(0x0)
  , fChargedGenPrimariesTriggerSelVtxCutZ(0x0)
  , fChargedGenPrimariesTriggerSelVtxCutZPileUpRej(0x0)
  , fhMCgeneratedYieldsPrimaries(0x0)
  , fh2FFJetPtRec(0x0)
  , fh2FFJetPtGen(0x0)
  , fh1Xsec(0x0)
  , fh1Trials(0x0)
  , fh1EvtsPtHardCut(0x0)
  , fContainerEff(0x0)
  , fQASharedCls(0x0)
  , fDeDxCheck(0x0)
  , fOutputContainer(0x0)
  , fQAContainer(0x0)
{
  // Constructor
  
  AliLog::SetClassDebugLevel("AliAnalysisTaskPID", AliLog::kInfo);
  
  fConvolutedGausDeltaPrime = new TF1("convolutedGausDeltaPrime", this, &AliAnalysisTaskPID::ConvolutedGaus,
                                      fkDeltaPrimeLowLimit, fkDeltaPrimeUpLimit,
                                      fkConvolutedGausNPar, "AliAnalysisTaskPID", "ConvolutedGaus");
  
  // Set some arbitrary parameteres, such that the function call will not crash
  // (although it should not be called with these parameters...)
  fConvolutedGausDeltaPrime->SetParameter(0, 0);
  fConvolutedGausDeltaPrime->SetParameter(1, 1);
  fConvolutedGausDeltaPrime->SetParameter(2, 2);
  
  
  // Initialisation of translation parameters is time consuming.
  // Therefore, default values will only be initialised if they are really needed.
  // Otherwise, it is left to the user to set the parameter properly.
  fConvolutedGaussTransitionPars[0] = -999;
  fConvolutedGaussTransitionPars[1] = -999;
  fConvolutedGaussTransitionPars[2] = -999;
  
  // Fraction histos
  for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
    fFractionHists[i] = 0x0;
    fFractionSysErrorHists[i] = 0x0;
    
    fPtResolution[i] = 0x0;
  }
  
  // Define input and output slots here
  // Input slot #0 works with a TChain
  DefineInput(0, TChain::Class());

  DefineOutput(1, TObjArray::Class());
  
  DefineOutput(2, AliCFContainer::Class());
  
  DefineOutput(3, TObjArray::Class());
}


//________________________________________________________________________
AliAnalysisTaskPID::~AliAnalysisTaskPID()
{
  // dtor
  
  CleanupParticleFractionHistos();
  
  delete fOutputContainer;
  fOutputContainer = 0x0;
  
  delete fQAContainer;
  fQAContainer = 0x0;

  delete fConvolutedGausDeltaPrime;
  fConvolutedGausDeltaPrime = 0x0;
  
  delete fDeltaPrimeAxis;
  fDeltaPrimeAxis = 0x0;
  
  delete [] fGenRespElDeltaPrimeEl;
  delete [] fGenRespElDeltaPrimeKa;
  delete [] fGenRespElDeltaPrimePi;
  delete [] fGenRespElDeltaPrimePr;
  
  fGenRespElDeltaPrimeEl = 0x0;
  fGenRespElDeltaPrimeKa = 0x0;
  fGenRespElDeltaPrimePi = 0x0;
  fGenRespElDeltaPrimePr = 0x0;
  
  delete [] fGenRespKaDeltaPrimeEl;
  delete [] fGenRespKaDeltaPrimeKa;
  delete [] fGenRespKaDeltaPrimePi;
  delete [] fGenRespKaDeltaPrimePr;
  
  fGenRespKaDeltaPrimeEl = 0x0;
  fGenRespKaDeltaPrimeKa = 0x0;
  fGenRespKaDeltaPrimePi = 0x0;
  fGenRespKaDeltaPrimePr = 0x0;
  
  delete [] fGenRespPiDeltaPrimeEl;
  delete [] fGenRespPiDeltaPrimeKa;
  delete [] fGenRespPiDeltaPrimePi;
  delete [] fGenRespPiDeltaPrimePr;
  
  fGenRespPiDeltaPrimeEl = 0x0;
  fGenRespPiDeltaPrimeKa = 0x0;
  fGenRespPiDeltaPrimePi = 0x0;
  fGenRespPiDeltaPrimePr = 0x0;
  
  delete [] fGenRespMuDeltaPrimeEl;
  delete [] fGenRespMuDeltaPrimeKa;
  delete [] fGenRespMuDeltaPrimePi;
  delete [] fGenRespMuDeltaPrimePr;
  
  fGenRespMuDeltaPrimeEl = 0x0;
  fGenRespMuDeltaPrimeKa = 0x0;
  fGenRespMuDeltaPrimePi = 0x0;
  fGenRespMuDeltaPrimePr = 0x0;
  
  delete [] fGenRespPrDeltaPrimeEl;
  delete [] fGenRespPrDeltaPrimeKa;
  delete [] fGenRespPrDeltaPrimePi;
  delete [] fGenRespPrDeltaPrimePr;
  
  fGenRespPrDeltaPrimeEl = 0x0;
  fGenRespPrDeltaPrimeKa = 0x0;
  fGenRespPrDeltaPrimePi = 0x0;
  fGenRespPrDeltaPrimePr = 0x0;
  
  delete fhMaxEtaVariation;
  fhMaxEtaVariation = 0x0;
  
  /*OLD with deltaSpecies 
  delete [] fGenRespElDeltaEl;
  delete [] fGenRespElDeltaKa;
  delete [] fGenRespElDeltaPi;
  delete [] fGenRespElDeltaPr;
  
  fGenRespElDeltaEl = 0x0;
  fGenRespElDeltaKa = 0x0;
  fGenRespElDeltaPi = 0x0;
  fGenRespElDeltaPr = 0x0;
  
  delete [] fGenRespKaDeltaEl;
  delete [] fGenRespKaDeltaKa;
  delete [] fGenRespKaDeltaPi;
  delete [] fGenRespKaDeltaPr;
  
  fGenRespKaDeltaEl = 0x0;
  fGenRespKaDeltaKa = 0x0;
  fGenRespKaDeltaPi = 0x0;
  fGenRespKaDeltaPr = 0x0;
  
  delete [] fGenRespPiDeltaEl;
  delete [] fGenRespPiDeltaKa;
  delete [] fGenRespPiDeltaPi;
  delete [] fGenRespPiDeltaPr;
  
  fGenRespPiDeltaEl = 0x0;
  fGenRespPiDeltaKa = 0x0;
  fGenRespPiDeltaPi = 0x0;
  fGenRespPiDeltaPr = 0x0;
  
  delete [] fGenRespMuDeltaEl;
  delete [] fGenRespMuDeltaKa;
  delete [] fGenRespMuDeltaPi;
  delete [] fGenRespMuDeltaPr;
  
  fGenRespMuDeltaEl = 0x0;
  fGenRespMuDeltaKa = 0x0;
  fGenRespMuDeltaPi = 0x0;
  fGenRespMuDeltaPr = 0x0;
  
  delete [] fGenRespPrDeltaEl;
  delete [] fGenRespPrDeltaKa;
  delete [] fGenRespPrDeltaPi;
  delete [] fGenRespPrDeltaPr;
  
  fGenRespPrDeltaEl = 0x0;
  fGenRespPrDeltaKa = 0x0;
  fGenRespPrDeltaPi = 0x0;
  fGenRespPrDeltaPr = 0x0;
  */
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpPIDcombined()
{
  // Initialise the PIDcombined object
  
  if (!fDoPID && !fDoDeDxCheck)
    return;
  
  if(fDebug > 1)
    printf("File: %s, Line: %d: SetUpPIDcombined\n", (char*)__FILE__, __LINE__);
  
  if (!fPIDcombined) {
    AliFatal("No PIDcombined object!\n");
    return;
  }
  
  fPIDcombined->SetSelectedSpecies(AliPID::kSPECIESC);
  fPIDcombined->SetEnablePriors(fUsePriors);
 
  if (fTPCDefaultPriors)
    fPIDcombined->SetDefaultTPCPriors();
  
  //TODO use individual priors...
  
  // Change detector mask (TPC,TOF,ITS)
  Int_t detectorMask = AliPIDResponse::kDetTPC;
  
  // Reject mismatch mask - mismatch only relevant for TOF at the moment - other detectors do not use it
  Int_t rejectMismatchMask = AliPIDResponse::kDetTPC;
  
  
  if (fUseITS) {
    detectorMask = detectorMask | AliPIDResponse::kDetITS;
    rejectMismatchMask = rejectMismatchMask | AliPIDResponse::kDetITS;
  }
  if (fUseTOF) {
    detectorMask = detectorMask | AliPIDResponse::kDetTOF;
    rejectMismatchMask = rejectMismatchMask | AliPIDResponse::kDetTOF;
  }
  
  fPIDcombined->SetDetectorMask(detectorMask);
  fPIDcombined->SetRejectMismatchMask(rejectMismatchMask);
  
  if(fDebug > 1)
    printf("File: %s, Line: %d: SetUpPIDcombined done\n", (char*)__FILE__, __LINE__);
}


//________________________________________________________________________
Bool_t AliAnalysisTaskPID::CalculateMaxEtaVariationMapFromPIDResponse()
{
  // Calculate the maximum deviation from unity of the eta correction factors for each row in 1/dEdx(splines)
  // from the eta correction map of the TPCPIDResponse. The result is stored in fhMaxEtaVariation.
  
  if (!fPIDResponse) {
    AliError("No PID response!");
    return kFALSE;
  }
  
  delete fhMaxEtaVariation;
  
  const TH2D* hEta = fPIDResponse->GetTPCResponse().GetEtaCorrMap();
  if (!hEta) {
    AliError("No eta correction map!");
    return kFALSE;
  }
  
  // Take binning from hEta in Y for fhMaxEtaVariation
  fhMaxEtaVariation = hEta->ProjectionY("hMaxEtaVariation");
  fhMaxEtaVariation->SetDirectory(0);
  fhMaxEtaVariation->Reset();
  
  // For each bin in 1/dEdx, loop of all tanTheta bins and find the maximum deviation from unity.
  // Store the result in fhMaxEtaVariation
  
  for (Int_t binY = 1; binY <= fhMaxEtaVariation->GetNbinsX(); binY++) {
    Double_t maxAbs = -1;
    for (Int_t binX = 1; binX <= hEta->GetNbinsX(); binX++) {
      Double_t curr = TMath::Abs(hEta->GetBinContent(binX, binY) - 1.);
      if (curr > maxAbs)
        maxAbs = curr;
    }
    
    if (maxAbs < 1e-12) {
      AliError(Form("Maximum deviation from unity is zero for 1/dEdx = %f (bin %d)", hEta->GetYaxis()->GetBinCenter(binY), binY));
      delete fhMaxEtaVariation;
      return kFALSE;
    }
    
    fhMaxEtaVariation->SetBinContent(binY, maxAbs);
  }
  
  printf("AliAnalysisTaskPID: Calculated max eta variation from map \"%s\".\n", hEta->GetTitle());
  
  return kTRUE;
}


//________________________________________________________________________
void AliAnalysisTaskPID::UserCreateOutputObjects()
{
  // Create histograms
  // Called once

  if(fDebug > 1)
    printf("File: %s, Line: %d: UserCreateOutputObjects\n", (char*)__FILE__, __LINE__);
  
  // Setup basic things, like PIDResponse
  AliAnalysisTaskPIDV0base::UserCreateOutputObjects();
  
  if (!fPIDResponse)
    AliFatal("PIDResponse object was not created");
  
  SetUpPIDcombined();
  
  OpenFile(1);
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: UserCreateOutputObjects -> OpenFile(1) successful\n", (char*)__FILE__, __LINE__);
  
  fOutputContainer = new TObjArray(1);
  fOutputContainer->SetName(GetName());
  fOutputContainer->SetOwner(kTRUE);
  
  const Int_t nPtBins = 68;
  Double_t binsPt[nPtBins+1] = {0. ,  0.05, 0.1,  0.15, 0.2,  0.25, 0.3,  0.35, 0.4,  0.45,
           0.5,  0.55, 0.6,  0.65, 0.7,  0.75, 0.8,  0.85, 0.9,  0.95,
           1.0,  1.1 , 1.2,  1.3 , 1.4,  1.5 , 1.6,  1.7 , 1.8,  1.9 ,
           2.0,  2.2 , 2.4,  2.6 , 2.8,  3.0 , 3.2,  3.4 , 3.6,  3.8 ,
           4.0,  4.5 , 5.0,  5.5 , 6.0,  6.5 , 7.0,  8.0 , 9.0,  10.0,
           11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 18.0, 20.0, 22.0, 24.0,
           26.0, 28.0, 30.0, 32.0, 34.0, 36.0, 40.0, 45.0, 50.0 };
  
  const Bool_t useITSTPCtrackletsCentEstimatorWithNewBinning = fCentralityEstimator.CompareTo("ITSTPCtracklets", TString::kIgnoreCase) == 0
                                                               && fStoreCentralityPercentile;
  
  const Int_t nCentBinsGeneral = 12;
  const Int_t nCentBinsNewITSTPCtracklets = 17;
  
  const Int_t nCentBins = useITSTPCtrackletsCentEstimatorWithNewBinning ? nCentBinsNewITSTPCtracklets : nCentBinsGeneral;

  Double_t binsCent[nCentBins+1];
  for (Int_t i = 0; i < nCentBins + 1; i++)
    binsCent[i] = -1;
  
  //-1 for pp (unless explicitely requested); 90-100 has huge electro-magnetic impurities
  Double_t binsCentV0[nCentBinsGeneral+1] = {-1, 0,  5, 10, 20, 30, 40, 50, 60, 70, 80,  90, 100 };
  
  // These centrality estimators deal with integers! This implies that the ranges are always [lowlim, uplim - 1]
  Double_t binsCentITSTPCTracklets[nCentBinsNewITSTPCtracklets+1] = { -9999, 0, 1, 4, 7, 10, 15, 20, 25, 30, 40, 50, 60, 70, 80, 90, 100, 9999 };
  Double_t binsCentITSTPCTrackletsOldPreliminary[nCentBinsGeneral+1] = { 0, 7, 13, 20, 29, 40, 50, 60, 72, 83, 95, 105, 115 };
  
  // Special centrality binning for pp
  Double_t binsCentpp[nCentBinsGeneral+1] =   { 0, 0.01, 0.1, 1, 5, 10, 15, 20, 30, 40, 50, 70, 100};
  
  if (fCentralityEstimator.CompareTo("ITSTPCtrackletsOldPreliminaryBinning", TString::kIgnoreCase) == 0 && fStoreCentralityPercentile) {
    // Special binning for this centrality estimator; but keep number of bins!
    for (Int_t i = 0; i < nCentBinsGeneral+1; i++)
      binsCent[i] = binsCentITSTPCTrackletsOldPreliminary[i];
  }
  else if (fCentralityEstimator.CompareTo("ITSTPCtracklets", TString::kIgnoreCase) == 0 && fStoreCentralityPercentile) {
    // Special binning for this centrality estimator and different number of bins!
    for (Int_t i = 0; i < nCentBinsNewITSTPCtracklets+1; i++)
      binsCent[i] = binsCentITSTPCTracklets[i];
  }
  else if (fCentralityEstimator.Contains("ppMult", TString::kIgnoreCase) && fStoreCentralityPercentile) {
    // Special binning for this pp centrality estimator; but keep number of bins!
    for (Int_t i = 0; i < nCentBinsGeneral+1; i++)
      binsCent[i] = binsCentpp[i];
  }
  else {
    // Take default binning for VZERO
    for (Int_t i = 0; i < nCentBinsGeneral+1; i++)
      binsCent[i] = binsCentV0[i];
  }

  const Int_t nJetPtBins = 11;
  Double_t binsJetPt[nJetPtBins+1] = {0, 2, 5, 10, 15, 20, 30, 40, 60, 80, 120, 200};
  
  const Int_t nChargeBins = 2;
  const Double_t binsCharge[nChargeBins+1] = { -1.0 - 1e-4, 0.0, 1.0 + 1e-4 };
  
  const Int_t nBinsJets = kDataNumAxes;
  const Int_t nBinsNoJets = nBinsJets - fgkNumJetAxes;
  
  const Int_t nBins = fStoreAdditionalJetInformation ? nBinsJets : nBinsNoJets;
 
  // deltaPrimeSpecies binning
  const Int_t deltaPrimeNBins = 600;
  Double_t deltaPrimeBins[deltaPrimeNBins + 1];

  const Double_t fromLow = fkDeltaPrimeLowLimit;
  const Double_t toHigh = fkDeltaPrimeUpLimit;
  const Double_t factor = TMath::Power(toHigh/fromLow, 1./deltaPrimeNBins);

  // Log binning for whole deltaPrime range
  deltaPrimeBins[0] = fromLow;
  for (Int_t i = 0 + 1; i <= deltaPrimeNBins; i++) {
    deltaPrimeBins[i] = factor * deltaPrimeBins[i - 1];
  }
  
  fDeltaPrimeAxis = new TAxis(deltaPrimeNBins, deltaPrimeBins);
  
  const Int_t nMCPIDbins = 5;
  const Double_t mcPIDmin = 0.;
  const Double_t mcPIDmax = 5.;
  
  const Int_t nSelSpeciesBins = 4;
  const Double_t selSpeciesMin = 0.;
  const Double_t selSpeciesMax = 4.;
  
  const Int_t nZBins = 20;
  const Double_t zMin = 0.;
  const Double_t zMax = 1.;
  
  const Int_t nXiBins = 70;
  const Double_t xiMin = 0.;
  const Double_t xiMax = 7.;
  
  const Int_t nTOFpidInfoBins = kNumTOFpidInfoBins;
  const Double_t tofPIDinfoMin = kNoTOFinfo;
  const Double_t tofPIDinfoMax = kNoTOFinfo + kNumTOFpidInfoBins;
  
  // MC PID, SelectSpecies, pT, deltaPrimeSpecies, centrality percentile, jet pT, z = track_pT/jet_pT, xi = log(1/z)
  Int_t binsNoJets[nBinsNoJets] =    { nMCPIDbins,
                                       nSelSpeciesBins,
                                       nPtBins,
                                       deltaPrimeNBins,
                                       nCentBins,
                                       nChargeBins,
                                       nTOFpidInfoBins };
  
  Int_t binsJets[nBinsJets]     =    { nMCPIDbins,
                                       nSelSpeciesBins,
                                       nPtBins,
                                       deltaPrimeNBins,           
                                       nCentBins,
                                       nJetPtBins,
                                       nZBins,
                                       nXiBins,
                                       nChargeBins,
                                       nTOFpidInfoBins };
  
  Int_t *bins = fStoreAdditionalJetInformation ? &binsJets[0] : &binsNoJets[0];
  
  Double_t xminNoJets[nBinsNoJets] = { mcPIDmin,  
                                       selSpeciesMin,
                                       binsPt[0],
                                       deltaPrimeBins[0],                       
                                       binsCent[0],
                                       binsCharge[0],
                                       tofPIDinfoMin };
  
  Double_t xminJets[nBinsJets] =     { mcPIDmin,
                                       selSpeciesMin,
                                       binsPt[0],
                                       deltaPrimeBins[0],                       
                                       binsCent[0],
                                       binsJetPt[0],
                                       zMin,
                                       xiMin,
                                       binsCharge[0],
                                       tofPIDinfoMin };
  
  Double_t *xmin = fStoreAdditionalJetInformation? &xminJets[0] : &xminNoJets[0];

  Double_t xmaxNoJets[nBinsNoJets] = { mcPIDmax,
                                       selSpeciesMax,
                                       binsPt[nPtBins],
                                       deltaPrimeBins[deltaPrimeNBins], 
                                       binsCent[nCentBins],
                                       binsCharge[nChargeBins],
                                       tofPIDinfoMax };
  
  Double_t xmaxJets[nBinsJets] =     { mcPIDmax,
                                       selSpeciesMax,
                                       binsPt[nPtBins],
                                       deltaPrimeBins[deltaPrimeNBins], 
                                       binsCent[nCentBins],
                                       binsJetPt[nJetPtBins],
                                       zMax,
                                       xiMax,
                                       binsCharge[nChargeBins],
                                       tofPIDinfoMax };
  
  Double_t *xmax = fStoreAdditionalJetInformation? &xmaxJets[0] : &xmaxNoJets[0];
  
  fConvolutedGausDeltaPrime->SetNpx(deltaPrimeNBins);

  if (fDoPID) {
    fhPIDdataAll = new THnSparseD("hPIDdataAll","", nBins, bins, xmin, xmax);
    SetUpHist(fhPIDdataAll, binsPt, deltaPrimeBins, binsCent, binsJetPt);
    fOutputContainer->Add(fhPIDdataAll);
  }
  
  // Generated histograms (so far, bins are the same as for primary THnSparse)
  const Int_t nGenBins = fStoreAdditionalJetInformation ? nBinsJets : nBinsNoJets;
  // MC PID, SelectSpecies, Pt, deltaPrimeSpecies, jet pT, z = track_pT/jet_pT, xi = log(1/z)
  
  Int_t *genBins = fStoreAdditionalJetInformation ? &binsJets[0] : &binsNoJets[0];
  Double_t *genXmin = fStoreAdditionalJetInformation? &xminJets[0] : &xminNoJets[0];
  Double_t *genXmax = fStoreAdditionalJetInformation? &xmaxJets[0] : &xmaxNoJets[0];

  if (fDoPID) {
    fhGenEl = new THnSparseD("hGenEl", "", nGenBins, genBins, genXmin, genXmax);
    SetUpGenHist(fhGenEl, binsPt, deltaPrimeBins, binsCent, binsJetPt);
    fOutputContainer->Add(fhGenEl);
    
    fhGenKa = new THnSparseD("hGenKa", "", nGenBins, genBins, genXmin, genXmax);
    SetUpGenHist(fhGenKa, binsPt, deltaPrimeBins, binsCent, binsJetPt);
    fOutputContainer->Add(fhGenKa);
    
    fhGenPi = new THnSparseD("hGenPi", "", nGenBins, genBins, genXmin, genXmax);
    SetUpGenHist(fhGenPi, binsPt, deltaPrimeBins, binsCent, binsJetPt);
    fOutputContainer->Add(fhGenPi);
    
    if (fTakeIntoAccountMuons) {
      fhGenMu = new THnSparseD("hGenMu", "", nGenBins, genBins, genXmin, genXmax);
      SetUpGenHist(fhGenMu, binsPt, deltaPrimeBins, binsCent, binsJetPt);
      fOutputContainer->Add(fhGenMu);
    }
    
    fhGenPr = new THnSparseD("hGenPr", "", nGenBins, genBins, genXmin, genXmax);
    SetUpGenHist(fhGenPr, binsPt, deltaPrimeBins, binsCent, binsJetPt);
    fOutputContainer->Add(fhGenPr);
  }
  
  
  fhEventsProcessed = new TH1D("fhEventsProcessed",
                               "Number of events passing trigger selection, vtx and zvtx cuts and pile-up rejection;Centrality Percentile", 
                               nCentBins, binsCent);
  fhEventsProcessed->Sumw2();
  fOutputContainer->Add(fhEventsProcessed);
  
  fhEventsTriggerSelVtxCut = new TH1D("fhEventsTriggerSelVtxCut",
                                      "Number of events passing trigger selection and vtx cut;Centrality Percentile", 
                                      nCentBins, binsCent);
  fhEventsTriggerSelVtxCut->Sumw2();
  fOutputContainer->Add(fhEventsTriggerSelVtxCut);
  
  fhEventsTriggerSel = new TH1D("fhEventsTriggerSel",
                                "Number of events passing trigger selection;Centrality Percentile", 
                                nCentBins, binsCent);
  fOutputContainer->Add(fhEventsTriggerSel);
  fhEventsTriggerSel->Sumw2();
  
  
  fhEventsProcessedNoPileUpRejection = new TH1D("fhEventsProcessedNoPileUpRejection",
                                                "Number of events passing trigger selection, vtx and zvtx cuts;Centrality Percentile", 
                                                nCentBins, binsCent);
  fOutputContainer->Add(fhEventsProcessedNoPileUpRejection);
  fhEventsProcessedNoPileUpRejection->Sumw2();
  
  
  // Generated yields within acceptance
  const Int_t nBinsGenYields = fStoreAdditionalJetInformation ? kGenYieldNumAxes : kGenYieldNumAxes - 3;
  Int_t genYieldsBins[kGenYieldNumAxes]    = { nMCPIDbins,         nPtBins,           nCentBins,            nJetPtBins, nZBins, nXiBins,
                                               nChargeBins };
  genYieldsBins[GetIndexOfChargeAxisGenYield()] = nChargeBins;
  Double_t genYieldsXmin[kGenYieldNumAxes] = {   mcPIDmin,       binsPt[0],         binsCent[0],          binsJetPt[0],   zMin,   xiMin,
                                               binsCharge[0] };
  genYieldsXmin[GetIndexOfChargeAxisGenYield()] = binsCharge[0];
  Double_t genYieldsXmax[kGenYieldNumAxes] = {   mcPIDmax, binsPt[nPtBins], binsCent[nCentBins], binsJetPt[nJetPtBins],   zMax,   xiMax, 
                                               binsCharge[nChargeBins] };
  genYieldsXmax[GetIndexOfChargeAxisGenYield()] = binsCharge[nChargeBins];
  
  if (fDoPID) {
    fhMCgeneratedYieldsPrimaries = new THnSparseD("fhMCgeneratedYieldsPrimaries", 
                                                  "Generated yields w/o reco and cuts inside acceptance (physical primaries)", 
                                                  nBinsGenYields, genYieldsBins, genYieldsXmin, genYieldsXmax);
    SetUpGenYieldHist(fhMCgeneratedYieldsPrimaries, binsPt, binsCent, binsJetPt);
    fOutputContainer->Add(fhMCgeneratedYieldsPrimaries);
  }
  
  // Container with several process steps (generated and reconstructed level with some variations)
  if (fDoEfficiency) {
    OpenFile(2);
    
    if(fDebug > 2)
    printf("File: %s, Line: %d: UserCreateOutputObjects -> OpenFile(2) successful\n", (char*)__FILE__, __LINE__);
  
    // Array for the number of bins in each dimension
    // Dimensions: MC-ID, trackPt, trackEta, trackCharge, cenrality percentile, jetPt, z, xi TODO phi???
    const Int_t nEffDims = fStoreAdditionalJetInformation ? kEffNumAxes : kEffNumAxes - 3; // Number of dimensions for the efficiency
    
    const Int_t nMCIDbins = AliPID::kSPECIES;
    Double_t binsMCID[nMCIDbins + 1];
    
    for(Int_t i = 0; i <= nMCIDbins; i++) {
      binsMCID[i]= i; 
    }
    
    const Int_t nEtaBins = 18;
    const Double_t binsEta[nEtaBins+1] = {-0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1,
                                          0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9 };
    
    const Int_t nEffBins[kEffNumAxes] = { nMCIDbins, nPtBins, nEtaBins, nChargeBins, nCentBins, nJetPtBins, nZBins, nXiBins };
    
    fContainerEff = new AliCFContainer("containerEff", "Reconstruction Efficiency x Acceptance x Resolution and Secondary Correction",
                                      kNumSteps, nEffDims, nEffBins);

    // Setting the bin limits
    fContainerEff->SetBinLimits(kEffMCID, binsMCID);
    fContainerEff->SetBinLimits(kEffTrackPt, binsPt);
    fContainerEff->SetBinLimits(kEffTrackEta, binsEta);
    fContainerEff->SetBinLimits(kEffTrackCharge, binsCharge);
    fContainerEff->SetBinLimits(kEffCentrality, binsCent);
    if (fStoreAdditionalJetInformation) {
      fContainerEff->SetBinLimits(kEffJetPt, binsJetPt);
      fContainerEff->SetBinLimits(kEffZ, zMin, zMax);
      fContainerEff->SetBinLimits(kEffXi, xiMin, xiMax);
    }
    
    fContainerEff->SetVarTitle(kEffMCID,"MC ID");
    fContainerEff->SetVarTitle(kEffTrackPt,"p_{T} (GeV/c)");
    fContainerEff->SetVarTitle(kEffTrackEta,"#eta");
    fContainerEff->SetVarTitle(kEffTrackCharge,"Charge (e_{0})");
    fContainerEff->SetVarTitle(kEffCentrality, "Centrality Percentile");
    if (fStoreAdditionalJetInformation) {
      fContainerEff->SetVarTitle(kEffJetPt, "p_{T}^{jet} (GeV/c)");
      fContainerEff->SetVarTitle(kEffZ, "z = p_{T}^{track} / p_{T}^{jet}");
      fContainerEff->SetVarTitle(kEffXi, "#xi = ln(p_{T}^{jet} / p_{T}^{track})");
    }
    
    // Define clean MC sample
    fContainerEff->SetStepTitle(kStepGenWithGenCuts, "Particle level, cuts on particle level");
    // For Acceptance x Efficiency correction of primaries
    fContainerEff->SetStepTitle(kStepRecWithGenCuts, "Detector level (rec) with cuts on particle level"); 
    // For (pT) resolution correction
    fContainerEff->SetStepTitle(kStepRecWithGenCutsMeasuredObs, 
                                "Detector level (rec) with cuts on particle level with measured observables");
    // For secondary correction
    fContainerEff->SetStepTitle(kStepRecWithRecCutsMeasuredObs, 
                                "Detector level, all cuts on detector level with measured observables");
    fContainerEff->SetStepTitle(kStepRecWithRecCutsPrimaries, 
                                "Detector level, all cuts on detector level, only MC primaries");
    fContainerEff->SetStepTitle(kStepRecWithRecCutsMeasuredObsPrimaries, 
                                "Detector level, all cuts on detector level with measured observables, only MC primaries");
    fContainerEff->SetStepTitle(kStepRecWithRecCutsMeasuredObsStrangenessScaled, 
                                "Detector level (strangeness scaled), all cuts on detector level with measured observables");
  }
  
  if (fDoPID || fDoEfficiency) {
    // Generated jets
    fh2FFJetPtRec = new TH2D("fh2FFJetPtRec", "Number of reconstructed jets;Centrality Percentile;p_{T}^{jet} (GeV/c)",
                            nCentBins, binsCent, nJetPtBins, binsJetPt);
    fh2FFJetPtRec->Sumw2();
    fOutputContainer->Add(fh2FFJetPtRec);
    fh2FFJetPtGen = new TH2D("fh2FFJetPtGen", "Number of generated jets;Centrality Percentile;p_{T}^{jet} (GeV/c)",
                            nCentBins, binsCent, nJetPtBins, binsJetPt);
    fh2FFJetPtGen->Sumw2();
    fOutputContainer->Add(fh2FFJetPtGen);
  }
  
  // Pythia information
  fh1Xsec = new TProfile("fh1Xsec", "xsec from pyxsec.root", 1, 0, 1);
  fh1Xsec->Sumw2();
  fh1Xsec->GetXaxis()->SetBinLabel(1, "<#sigma>");
  fh1Trials = new TH1D("fh1Trials", "trials from pyxsec.root", 1, 0, 1);
  fh1Trials->Sumw2();
  fh1Trials->GetXaxis()->SetBinLabel(1, "#sum{ntrials}");
  
  fh1EvtsPtHardCut = new TH1F("fh1EvtsPtHardCut", "#events before and after MC #it{p}_{T,hard} cut;;Events",2,0,2);
  fh1EvtsPtHardCut->Sumw2();
  fh1EvtsPtHardCut->GetXaxis()->SetBinLabel(1, "All");
  fh1EvtsPtHardCut->GetXaxis()->SetBinLabel(2, "#it{p}_{T,hard}");
  
  fOutputContainer->Add(fh1Xsec);
  fOutputContainer->Add(fh1Trials);
  fOutputContainer->Add(fh1EvtsPtHardCut);
  
  if (fDoDeDxCheck || fDoPtResolution) {
    OpenFile(3);
    fQAContainer = new TObjArray(1);
    fQAContainer->SetName(Form("%s_QA", GetName()));
    fQAContainer->SetOwner(kTRUE);
    
    if(fDebug > 2)
      printf("File: %s, Line: %d: UserCreateOutputObjects -> OpenFile(3) successful\n", (char*)__FILE__, __LINE__);
  }
  
  if (fDoPtResolution) {
    const Int_t nPtBinsRes = 100;
    Double_t pTbinsRes[nPtBinsRes + 1];

    const Double_t fromLowPtRes = 0.15;
    const Double_t toHighPtRes = 50.;
    const Double_t factorPtRes = TMath::Power(toHighPtRes/fromLowPtRes, 1./nPtBinsRes);
    // Log binning for whole pT range
    pTbinsRes[0] = fromLowPtRes;
    for (Int_t i = 0 + 1; i <= nPtBinsRes; i++) {
      pTbinsRes[i] = factorPtRes * pTbinsRes[i - 1];
    }
    
    const Int_t nBinsPtResolution = kPtResNumAxes;
    Int_t ptResolutionBins[kPtResNumAxes]    = { nJetPtBins,                       nPtBinsRes,            nPtBinsRes,             
                                                 nChargeBins,             nCentBins };
    Double_t ptResolutionXmin[kPtResNumAxes] = { binsJetPt[0],                   pTbinsRes[0],          pTbinsRes[0],           
                                                 binsCharge[0],           binsCent[0] };
    Double_t ptResolutionXmax[kPtResNumAxes] = { binsJetPt[nJetPtBins], pTbinsRes[nPtBinsRes], pTbinsRes[nPtBinsRes], 
                                                 binsCharge[nChargeBins], binsCent[nCentBins] };

    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      fPtResolution[i] = new THnSparseD(Form("fPtResolution_%s", AliPID::ParticleShortName(i)), 
                                        Form("Pt resolution for primaries, %s", AliPID::ParticleLatexName(i)),
                                        nBinsPtResolution, ptResolutionBins, ptResolutionXmin, ptResolutionXmax);
      SetUpPtResHist(fPtResolution[i], pTbinsRes, binsJetPt, binsCent);
      fQAContainer->Add(fPtResolution[i]);
    }
    
    
    // Besides the pT resolution, also perform check on shared clusters
    const Int_t nBinsQASharedCls = kQASharedClsNumAxes;
    Int_t qaSharedClsBins[kQASharedClsNumAxes]    = { nJetPtBins, nPtBinsRes, 160, 160 };
    Double_t qaSharedClsXmin[kQASharedClsNumAxes] = { binsJetPt[0], pTbinsRes[0], 0, -1 };
    Double_t qaSharedClsXmax[kQASharedClsNumAxes] = { binsJetPt[nJetPtBins], pTbinsRes[nPtBinsRes], 160, 159 };
    
    fQASharedCls = new THnSparseD("fQASharedCls", "QA shared clusters", nBinsQASharedCls, qaSharedClsBins, qaSharedClsXmin, qaSharedClsXmax);
    
    SetUpSharedClsHist(fQASharedCls, pTbinsRes, binsJetPt);
    fQAContainer->Add(fQASharedCls);
  }
  
  
  
  if (fDoDeDxCheck) {
    const Int_t nEtaAbsBins = 9;
    const Double_t binsEtaAbs[nEtaAbsBins+1] = { 0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9 };
    
    const Double_t dEdxMin = 20;
    const Double_t dEdxMax = 110;
    const Int_t nDeDxBins = (Int_t) ((dEdxMax - dEdxMin) / 0.02);
    const Int_t nBinsDeDxCheck= kDeDxCheckNumAxes;
    Int_t dEdxCheckBins[kDeDxCheckNumAxes]    = { nSelSpeciesBins, nPtBins, nJetPtBins, nEtaAbsBins, nDeDxBins };
    Double_t dEdxCheckXmin[kDeDxCheckNumAxes] = { selSpeciesMin, binsPt[0], binsJetPt[0], binsEtaAbs[0], dEdxMin };
    Double_t dEdxCheckXmax[kDeDxCheckNumAxes] = { selSpeciesMax, binsPt[nPtBins], binsJetPt[nJetPtBins], binsEtaAbs[nEtaAbsBins], dEdxMax };
    
    fDeDxCheck = new THnSparseD("fDeDxCheck", "dEdx check", nBinsDeDxCheck, dEdxCheckBins, dEdxCheckXmin, dEdxCheckXmax);
    SetUpDeDxCheckHist(fDeDxCheck, binsPt, binsJetPt, binsEtaAbs);
    fQAContainer->Add(fDeDxCheck);
  }
  
  if (fDoBinZeroStudy) {
    const Double_t etaLow = -0.9;
    const Double_t etaUp = 0.9;
    const Int_t nEtaBins = 18;
    
    const Int_t nBinsBinZeroStudy = kBinZeroStudyNumAxes;
    Int_t binZeroStudyBins[nBinsBinZeroStudy]    = { nCentBins,                   nPtBins, nEtaBins };
    Double_t binZeroStudyXmin[nBinsBinZeroStudy] = { binsCent[0],               binsPt[0], etaLow   };
    Double_t binZeroStudyXmax[nBinsBinZeroStudy] = { binsCent[nCentBins], binsPt[nPtBins], etaUp    };
    
    fChargedGenPrimariesTriggerSel = new THnSparseD("fChargedGenPrimariesTriggerSel", "Trigger sel.", nBinsBinZeroStudy, binZeroStudyBins,
                                                    binZeroStudyXmin, binZeroStudyXmax);
    SetUpBinZeroStudyHist(fChargedGenPrimariesTriggerSel, binsCent, binsPt);
    fOutputContainer->Add(fChargedGenPrimariesTriggerSel);
    
    fChargedGenPrimariesTriggerSelVtxCut = new THnSparseD("fChargedGenPrimariesTriggerSelVtxCut", "Vertex cut", nBinsBinZeroStudy,
                                                          binZeroStudyBins, binZeroStudyXmin, binZeroStudyXmax);
    SetUpBinZeroStudyHist(fChargedGenPrimariesTriggerSelVtxCut, binsCent, binsPt);
    fOutputContainer->Add(fChargedGenPrimariesTriggerSelVtxCut);
    
    fChargedGenPrimariesTriggerSelVtxCutZ = new THnSparseD("fChargedGenPrimariesTriggerSelVtxCutZ", "Vertex #it{z} cut", nBinsBinZeroStudy,
                                                          binZeroStudyBins, binZeroStudyXmin, binZeroStudyXmax);
    SetUpBinZeroStudyHist(fChargedGenPrimariesTriggerSelVtxCutZ, binsCent, binsPt);
    fOutputContainer->Add(fChargedGenPrimariesTriggerSelVtxCutZ);
    
    fChargedGenPrimariesTriggerSelVtxCutZPileUpRej = new THnSparseD("fChargedGenPrimariesTriggerSelVtxCutZPileUpRej", "Vertex #it{z} cut", 
                                                                    nBinsBinZeroStudy, binZeroStudyBins, binZeroStudyXmin, binZeroStudyXmax);
    SetUpBinZeroStudyHist(fChargedGenPrimariesTriggerSelVtxCutZPileUpRej, binsCent, binsPt);
    fOutputContainer->Add(fChargedGenPrimariesTriggerSelVtxCutZPileUpRej);
  }
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: UserCreateOutputObjects -> Posting output data\n", (char*)__FILE__, __LINE__);
  
  PostData(1, fOutputContainer);
  if (fDoEfficiency)
    PostData(2, fContainerEff);
  if (fDoDeDxCheck || fDoPtResolution) 
    PostData(3, fQAContainer);
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: UserCreateOutputObjects -> Done\n", (char*)__FILE__, __LINE__);
}


//________________________________________________________________________
void AliAnalysisTaskPID::UserExec(Option_t *)
{
  // Main loop
  // Called for each event

  if(fDebug > 1)
    printf("File: %s, Line: %d: UserExec\n", (char*)__FILE__, __LINE__);
  
  // No processing of event, if input is fed in directly from another task
  if (fInputFromOtherTask)
    return;
  
  if(fDebug > 1)
    printf("File: %s, Line: %d: UserExec -> Processing started\n", (char*)__FILE__, __LINE__);

  fEvent = dynamic_cast<AliVEvent*>(InputEvent());
  if (!fEvent) {
    Printf("ERROR: fEvent not available");
    return;
  }
  
  ConfigureTaskForCurrentEvent(fEvent);
  
  fMC = dynamic_cast<AliMCEvent*>(MCEvent());
  
  if (!fPIDResponse || !fPIDcombined)
    return;
  
  Double_t centralityPercentile = -1;
  if (fStoreCentralityPercentile) {
    if (fCentralityEstimator.Contains("ITSTPCtracklets", TString::kIgnoreCase)) {
      // Special pp centrality estimator
      AliESDEvent* esdEvent = dynamic_cast<AliESDEvent*>(fEvent);
      if (!esdEvent) {
        AliError("Not esd event -> Cannot use tracklet multiplicity estimator!");
        centralityPercentile = -1;
      }
      else
        centralityPercentile = AliESDtrackCuts::GetReferenceMultiplicity(esdEvent, AliESDtrackCuts::kTrackletsITSTPC, fEtaAbsCutUp);
    }
    else if (fCentralityEstimator.Contains("ppMult", TString::kIgnoreCase)) {
      // Another special pp centrality estimator
      centralityPercentile = fAnaUtils->GetMultiplicityPercentile(fEvent, GetPPCentralityEstimator().Data());
    }
    else {
      // Ordinary centrality estimator
      centralityPercentile = fEvent->GetCentrality()->GetCentralityPercentile(fCentralityEstimator.Data());
    }
  }
  
  // Check if vertex is ok, but don't apply cut on z position
  const Bool_t passedVertexSelection = GetVertexIsOk(fEvent, kFALSE);
  // Now check again, but also require z position to be in desired range
  const Bool_t passedVertexZSelection = GetVertexIsOk(fEvent, kTRUE);
  // Check pile-up
  const Bool_t isPileUp = GetIsPileUp(fEvent, fPileUpRejectionType);
  
  
  
  if (fDoBinZeroStudy && fMC) {
    for (Int_t iPart = 0; iPart < fMC->GetNumberOfTracks(); iPart++) { 
      AliMCParticle *mcPart  = dynamic_cast<AliMCParticle*>(fMC->GetTrack(iPart));
      
      if (!mcPart)
          continue;
      
      if (!fMC->IsPhysicalPrimary(iPart)) 
          continue;
      
      const Double_t etaGen = mcPart->Eta();
      const Double_t ptGen = mcPart->Pt();
      
      Double_t values[kBinZeroStudyNumAxes] = { 0. };
      values[kBinZeroStudyCentrality] = centralityPercentile;
      values[kBinZeroStudyGenPt] = ptGen;
      values[kBinZeroStudyGenEta] = etaGen;
      
      fChargedGenPrimariesTriggerSel->Fill(values);
      if (passedVertexSelection) {
          fChargedGenPrimariesTriggerSelVtxCut->Fill(values);
        if (passedVertexZSelection) {
            fChargedGenPrimariesTriggerSelVtxCutZ->Fill(values);
          if (!isPileUp) {
            fChargedGenPrimariesTriggerSelVtxCutZPileUpRej->Fill(values);
          }
        }
      }
    }
  }
  
  
  
  // Event counters for trigger selection, vertex cuts and pile-up rejection
  IncrementEventCounter(centralityPercentile, kTriggerSel);
  
  if (!passedVertexSelection)
    return;
  
  IncrementEventCounter(centralityPercentile, kTriggerSelAndVtxCut);
  
  if (!passedVertexZSelection)
    return;
  
  IncrementEventCounter(centralityPercentile, kTriggerSelAndVtxCutAndZvtxCutNoPileUpRejection);
  // ATTENTION: Is this the right place for the pile-up rejection? Important to have still the proper bin-0 correction,
  // which is done solely with sel and selVtx, since the zvtx selection does ~not change the spectra. The question is whether the pile-up
  // rejection changes the spectra. If not, then it is perfectly fine to put it here and keep the usual histo for the normalisation to number
  // of events. But if it does change the spectra, this must somehow be corrected for.
  // NOTE: multiplicity >= 0 usually implies a properly reconstructed vertex. Hence, the bin-0 correction cannot be done in multiplicity bins.
  // Furthermore, there seems to be no MC simulation with pile-up rejection, so the bin-0 correction cannot be extracted with it. Pile-up
  // rejection has only a minor impact, so maybe there is no need to dig further.
  if (isPileUp)
    return;
  
  IncrementEventCounter(centralityPercentile, kTriggerSelAndVtxCutAndZvtxCut);
  
  Double_t magField = fEvent->GetMagneticField();
  
  if (fMC) {
    if (fDoPID || fDoEfficiency) {
      for (Int_t iPart = 0; iPart < fMC->GetNumberOfTracks(); iPart++) { 
        AliMCParticle *mcPart  = dynamic_cast<AliMCParticle*>(fMC->GetTrack(iPart));
        
        if (!mcPart)
            continue;
        
        // Define clean MC sample with corresponding particle level track cuts:
        // - MC-track must be in desired eta range
        // - MC-track must be physical primary
        // - Species must be one of those in question (everything else goes to the overflow bin of mcID)
        
        // Geometrie should be the same as on the reconstructed level -> By definition analysis within this eta interval
        if (!IsInAcceptedEtaRange(TMath::Abs(mcPart->Eta()))) continue;
        
        Int_t mcID = PDGtoMCID(mcPart->PdgCode());
        
        // AliMCParticle->Charge() calls TParticlePDG->Charge(), which returns the charge in units of e0 / 3
        Double_t chargeMC = mcPart->Charge() / 3.;
        
        if (TMath::Abs(chargeMC) < 0.01)
          continue; // Reject neutral particles (only relevant, if mcID is not used)
        
        if (!fMC->IsPhysicalPrimary(iPart)) 
            continue;
        
        if (fDoPID) {
          Double_t valuesGenYield[kGenYieldNumAxes] = {  static_cast<Double_t>(mcID), mcPart->Pt(), centralityPercentile, -1, -1, -1, -1 };
          valuesGenYield[GetIndexOfChargeAxisGenYield()] = chargeMC;
        
          fhMCgeneratedYieldsPrimaries->Fill(valuesGenYield);
        }
        
        
        if (fDoEfficiency) {
          Double_t valueEff[kEffNumAxes] = {  static_cast<Double_t>(mcID), mcPart->Pt(), mcPart->Eta(), chargeMC, centralityPercentile,
                                            -1, -1, -1 };
          
          fContainerEff->Fill(valueEff, kStepGenWithGenCuts);    
        }
      }
    }
  }
  
  // Track loop to fill a Train spectrum
  for (Int_t iTracks = 0; iTracks < fEvent->GetNumberOfTracks(); iTracks++) {
    AliVTrack* track = dynamic_cast<AliVTrack*>(fEvent->GetTrack(iTracks));
    if (!track) {
      Printf("ERROR: Could not retrieve track %d", iTracks);
      continue;
    }
    
    
    // Apply detector level track cuts
    const Bool_t tuneOnDataTPC = fPIDResponse->IsTunedOnData() &&
                                 ((fPIDResponse->GetTunedOnDataMask() & AliPIDResponse::kDetTPC) == AliPIDResponse::kDetTPC);
    Double_t dEdxTPC = tuneOnDataTPC ? fPIDResponse->GetTPCsignalTunedOnData(track) : track->GetTPCsignal();
    if (dEdxTPC <= 0)
      continue;
    
    if(fTrackFilter && !fTrackFilter->IsSelected(track))
      continue;
    
    if (GetUseTPCCutMIGeo()) {
      if (!TPCCutMIGeo(track, fEvent))
        continue;
    }
    else if (GetUseTPCnclCut()) {
      if (!TPCnclCut(track))
        continue;
    }
    
    if(fUsePhiCut) {
      if (!PhiPrimeCut(track, magField))
        continue; // reject track
    }
    
    Int_t pdg =  0; // = 0 indicates data for the moment
    AliMCParticle* mcTrack = 0x0;
    Int_t mcID = AliPID::kUnknown;
    Int_t label = 0;
    
    if (fMC) {
      label = track->GetLabel();
    
      //if (label < 0)
      //  continue;

      mcTrack = dynamic_cast<AliMCParticle*>(fMC->GetTrack(TMath::Abs(label)));
      if (!mcTrack) {
        Printf("ERROR: Could not retrieve mcTrack with label %d for track %d", label, iTracks);
        continue;
      }
      
      pdg = mcTrack->PdgCode();
      mcID = PDGtoMCID(mcTrack->PdgCode());
      
      if (fDoEfficiency) {
        // For efficiency: Reconstructed track has survived all cuts on the detector level (excluding acceptance)
        // and has an associated MC track which is a physical primary and was generated inside the acceptance
        if (fMC->IsPhysicalPrimary(TMath::Abs(label)) &&
            IsInAcceptedEtaRange(TMath::Abs(mcTrack->Eta()))) {
          
          // AliMCParticle->Charge() calls TParticlePDG->Charge(), which returns the charge in units of e0 / 3
          Double_t value[kEffNumAxes] = {  static_cast<Double_t>(mcID), mcTrack->Pt(), mcTrack->Eta(), mcTrack->Charge() / 3., centralityPercentile,
                                          -1, -1, -1 };
          fContainerEff->Fill(value, kStepRecWithGenCuts);    
            
          Double_t valueMeas[kEffNumAxes] = {  static_cast<Double_t>(mcID), track->Pt(), track->Eta(),  static_cast<Double_t>(track->Charge()), centralityPercentile,
                                              -1, -1, -1 };
          fContainerEff->Fill(valueMeas, kStepRecWithGenCutsMeasuredObs);    
        }
      }
    }
   
    // Only process tracks inside the desired eta window    
    if (!IsInAcceptedEtaRange(TMath::Abs(track->Eta()))) continue;
   
    if (fDoPID || fDoDeDxCheck || fDoPtResolution) 
      ProcessTrack(track, pdg, centralityPercentile, -1); // No jet information in this case -> Set jet pT to -1
    
    if (fDoPtResolution) {
      if (mcTrack && fMC->IsPhysicalPrimary(TMath::Abs(label))) {
        // AliMCParticle->Charge() calls TParticlePDG->Charge(), which returns the charge in units of e0 / 3
        Double_t valuePtRes[kPtResNumAxes] = { -1, mcTrack->Pt(), track->Pt(), mcTrack->Charge() / 3., centralityPercentile };
        FillPtResolution(mcID, valuePtRes);
      }
    }
    
    if (fDoEfficiency) {
      if (mcTrack) {
        Double_t valueRecAllCuts[kEffNumAxes] = {  static_cast<Double_t>(mcID), track->Pt(), track->Eta(),  static_cast<Double_t>(track->Charge()), centralityPercentile,
                                                  -1, -1, -1 };
        fContainerEff->Fill(valueRecAllCuts, kStepRecWithRecCutsMeasuredObs);
        
        Double_t weight = IsSecondaryWithStrangeMotherMC(fMC, TMath::Abs(label)) ? 
                                                                GetMCStrangenessFactorCMS(fMC, mcTrack) : 1.0;
        fContainerEff->Fill(valueRecAllCuts, kStepRecWithRecCutsMeasuredObsStrangenessScaled, weight);
        
        // AliMCParticle->Charge() calls TParticlePDG->Charge(), which returns the charge in units of e0 / 3
        Double_t valueGenAllCuts[kEffNumAxes] = {  static_cast<Double_t>(mcID), mcTrack->Pt(), mcTrack->Eta(), mcTrack->Charge() / 3., 
                                                  centralityPercentile, -1, -1, -1 };
        if (fMC->IsPhysicalPrimary(TMath::Abs(label))) {
          fContainerEff->Fill(valueRecAllCuts, kStepRecWithRecCutsMeasuredObsPrimaries);
          fContainerEff->Fill(valueGenAllCuts, kStepRecWithRecCutsPrimaries);
        }
      }
    }
  } //track loop 
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: UserExec -> Processing done\n", (char*)__FILE__, __LINE__);
  
  PostOutputData();
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: UserExec -> Done\n", (char*)__FILE__, __LINE__);
}      

//________________________________________________________________________
void AliAnalysisTaskPID::Terminate(const Option_t *)
{
  // Draw result to the screen
  // Called once at the end of the query
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::CheckDoAnyStematicStudiesOnTheExpectedSignal()
{
  // Check whether at least one scale factor indicates the ussage of systematic studies
  // and set internal flag accordingly.
  
  fDoAnySystematicStudiesOnTheExpectedSignal = kFALSE;
  
  
  if ((TMath::Abs(fSystematicScalingSplinesBelowThreshold - 1.0) > fgkEpsilon) ||
      (TMath::Abs(fSystematicScalingSplinesAboveThreshold - 1.0) > fgkEpsilon)) {
    fDoAnySystematicStudiesOnTheExpectedSignal = kTRUE;
    return;
  }
  
  if ((TMath::Abs(fSystematicScalingEtaCorrectionLowMomenta - 1.0) > fgkEpsilon) ||
      (TMath::Abs(fSystematicScalingEtaCorrectionHighMomenta - 1.0) > fgkEpsilon)) {
    fDoAnySystematicStudiesOnTheExpectedSignal = kTRUE;
    return;
  }
  
  if ((TMath::Abs(fSystematicScalingEtaSigmaParaBelowThreshold - 1.0) > fgkEpsilon) ||
      (TMath::Abs(fSystematicScalingEtaSigmaParaAboveThreshold - 1.0) > fgkEpsilon)) {
    fDoAnySystematicStudiesOnTheExpectedSignal = kTRUE;
    return;
  }
  
  if (TMath::Abs(fSystematicScalingMultCorrection - 1.0) > fgkEpsilon) {
    fDoAnySystematicStudiesOnTheExpectedSignal = kTRUE;
    return;
  }
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::ConfigureTaskForCurrentEvent(AliVEvent* event)
{
  // Configure the task for the current event. In particular, this is needed if the run number changes
  
  if (!event) {
    AliError("Could not set up task: no event!");
    return;
  }
  
  Int_t run = event->GetRunNumber();
  
  if (run != fRun){
    // If systematics on eta is investigated, need to calculate the maxEtaVariationMap
    if ((TMath::Abs(fSystematicScalingEtaCorrectionLowMomenta - 1.0) > fgkEpsilon) ||
        (TMath::Abs(fSystematicScalingEtaCorrectionHighMomenta - 1.0) > fgkEpsilon)) {
      if (!CalculateMaxEtaVariationMapFromPIDResponse())
        AliFatal("Systematics on eta correction requested, but failed to calculate max eta varation map!");
    }
  }
  
  fRun = run;
}


//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::PDGtoMCID(Int_t pdg)
{
  // Returns the corresponding AliPID index to the given pdg code.
  // Returns AliPID::kUnkown if pdg belongs to a not considered species.
  
  Int_t absPDGcode = TMath::Abs(pdg);
  if (absPDGcode == 211) {//Pion
    return AliPID::kPion;
  }
  else if (absPDGcode == 321) {//Kaon
    return AliPID::kKaon;
  }
  else if (absPDGcode == 2212) {//Proton
    return AliPID::kProton;
  }
  else if (absPDGcode == 11) {//Electron      
    return AliPID::kElectron;
  }
  else if (absPDGcode == 13) {//Muon
    return AliPID::kMuon;
  }
  
  return AliPID::kUnknown;
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::GetJetTrackObservables(Double_t trackPt, Double_t jetPt, Double_t& z, Double_t& xi)
{
  // Uses trackPt and jetPt to obtain z and xi.
  
  z = (jetPt > 0 && trackPt >= 0) ? (trackPt / jetPt) : -1;
  xi = (z > 0) ? TMath::Log(1. / z) : -1;
  
  if(trackPt > (1. - 1e-06) * jetPt && trackPt < (1. + 1e-06) * jetPt) { // case z=1 : move entry to last histo bin <1
    z  = 1. - 1e-06;
    xi = 1e-06;
  }
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::CleanupParticleFractionHistos()
{
  // Delete histos with particle fractions
  
  for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
    delete fFractionHists[i];
    fFractionHists[i] = 0x0;
    
    delete fFractionSysErrorHists[i];
    fFractionSysErrorHists[i] = 0x0;
  }
}


//_____________________________________________________________________________
Double_t AliAnalysisTaskPID::ConvolutedGaus(const Double_t* xx, const Double_t* par) const
{
  // Convolutes gauss with an exponential tail which describes dEdx-response better than pure gaussian

  const Double_t mean = par[0];
  const Double_t sigma = par[1];
  const Double_t lambda = par[2];
  
  if(fDebug > 5)
    printf("File: %s, Line: %d: ConvolutedGaus: mean %e, sigma %e, lambda %e\n", (char*)__FILE__, __LINE__, mean, sigma, lambda);
  
  return lambda/sigma*TMath::Exp(-lambda/sigma*(xx[0]-mean)+lambda*lambda*0.5)*0.5*TMath::Erfc((-xx[0]+mean+sigma*lambda)/sigma*fgkOneOverSqrt2);
}


//_____________________________________________________________________________
inline Double_t AliAnalysisTaskPID::FastGaus(Double_t x, Double_t mean, Double_t sigma) const
{
  // Calculate an unnormalised gaussian function with mean and sigma.

  if (sigma < fgkEpsilon)
    return 1.e30;
  
  const Double_t arg = (x - mean) / sigma;
  return exp(-0.5 * arg * arg);
}


//_____________________________________________________________________________
inline Double_t AliAnalysisTaskPID::FastNormalisedGaus(Double_t x, Double_t mean, Double_t sigma) const
{
  // Calculate a normalised (divided by sqrt(2*Pi)*sigma) gaussian function with mean and sigma.

  if (sigma < fgkEpsilon)
    return 1.e30;
  
  const Double_t arg = (x - mean) / sigma;
  const Double_t res = exp(-0.5 * arg * arg);
  return res / (2.50662827463100024 * sigma); //sqrt(2*Pi)=2.50662827463100024
}


//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::FindBinWithinRange(TAxis* axis, Double_t value) const
{
  // Find the corresponding bin of the axis. Values outside the range (also under and overflow) will be set to the first/last
  // available bin
  
  Int_t bin = axis->FindFixBin(value);
  
  if (bin <= 0)
    bin = 1;
  if (bin > axis->GetNbins())
    bin = axis->GetNbins();

  return bin;
}

  
//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::FindFirstBinAboveIn3dSubset(const TH3* hist, Double_t threshold, Int_t yBin,
                                                      Int_t zBin) const
{
  // Kind of projects a TH3 to 1 bin combination in y and z
  // and looks for the first x bin above a threshold for this projection.
  // If no such bin is found, -1 is returned.
  
  if (!hist)
    return -1;
    
  Int_t nBinsX = hist->GetNbinsX();
  for (Int_t xBin = 1; xBin <= nBinsX; xBin++) {
    if (hist->GetBinContent(xBin, yBin, zBin) > threshold)
      return xBin;
  }
  
  return -1;
}


//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::FindLastBinAboveIn3dSubset(const TH3* hist, Double_t threshold, Int_t yBin,
                                                     Int_t zBin) const
{
  // Kind of projects a TH3 to 1 bin combination in y and z 
  // and looks for the last x bin above a threshold for this projection.
  // If no such bin is found, -1 is returned.
  
  if (!hist)
    return -1;
    
  Int_t nBinsX = hist->GetNbinsX();
  for (Int_t xBin = nBinsX; xBin >= 1; xBin--) {
    if (hist->GetBinContent(xBin, yBin, zBin) > threshold)
      return xBin;
  }
  
  return -1;
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::GetParticleFraction(Double_t trackPt, Double_t jetPt, Double_t centralityPercentile,
                                               AliPID::EParticleType species,
                                               Double_t& fraction, Double_t& fractionErrorStat, Double_t& fractionErrorSys) const
{
  // Computes the particle fraction for the corresponding species for the given trackPt, jetPt and centrality.
  // Use jetPt = -1 for inclusive spectra and centralityPercentile = -1 for pp.
  // On success (return value kTRUE), fraction contains the particle fraction, fractionErrorStat(Sys) the sigma of its
  // statistical (systematic) error
  
  fraction = -999.;
  fractionErrorStat = 999.;
  fractionErrorSys = 999.;
  
  if (species > AliPID::kProton || species < AliPID::kElectron) {
    AliError(Form("Only fractions for species index %d to %d availabe, but not for the requested one: %d", 0, AliPID::kProton, species));
    return kFALSE;
  }
  
  if (!fFractionHists[species]) {
    AliError(Form("Histo with particle fractions for species %d not loaded!", species));
    
    return kFALSE;
  }
  
  Int_t jetPtBin = FindBinWithinRange(fFractionHists[species]->GetYaxis(), jetPt);
  Int_t centBin  = FindBinWithinRange(fFractionHists[species]->GetZaxis(), centralityPercentile);
  
  // The following interpolation takes the bin content of the first/last available bin,
  // if requested point lies beyond bin center of first/last bin.
  // The interpolation is only done for the x-axis (track pT), i.e. jetPtBin and centBin are fix,
  // because the analysis will anyhow be run in bins of jetPt and centrality and
  // it is not desired to correlate different jetPt bins via interpolation.
  
  // The same procedure is used for the error of the fraction
  TAxis* xAxis = fFractionHists[species]->GetXaxis();
  
  // No interpolation to values beyond the centers of the first/last bins (we don't know exactly where the spectra start or stop,
  // thus, search for the first and last bin above 0.0 to constrain the range
  Int_t firstBin = TMath::Max(1, FindFirstBinAboveIn3dSubset(fFractionHists[species], 0.0, jetPtBin, centBin));
  Int_t lastBin  = TMath::Min(fFractionHists[species]->GetNbinsX(), 
                              FindLastBinAboveIn3dSubset(fFractionHists[species], 0.0, jetPtBin, centBin));
  
  if (trackPt <= xAxis->GetBinCenter(firstBin)) {
    fraction = fFractionHists[species]->GetBinContent(firstBin, jetPtBin, centBin);
    fractionErrorStat = fFractionHists[species]->GetBinError(firstBin, jetPtBin, centBin);
    fractionErrorSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(firstBin, jetPtBin, centBin) : 0.;
  }
  else if (trackPt >= xAxis->GetBinCenter(lastBin)) {
    fraction = fFractionHists[species]->GetBinContent(lastBin, jetPtBin, centBin);
    fractionErrorStat = fFractionHists[species]->GetBinError(lastBin, jetPtBin, centBin);
    fractionErrorSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(lastBin, jetPtBin, centBin) : 0.;
  }
  else {
    Double_t x0 = 0., x1 = 0., y0 = 0., y1 = 0.;
    Double_t y0errStat = 0., y1errStat = 0., y0errSys = 0., y1errSys = 0.;
    Int_t trackPtBin = xAxis->FindFixBin(trackPt);
    
    // Linear interpolation between nearest neighbours in trackPt
    if (trackPt <= xAxis->GetBinCenter(trackPtBin)) {
        y0 = fFractionHists[species]->GetBinContent(trackPtBin - 1, jetPtBin, centBin);
        y0errStat = fFractionHists[species]->GetBinError(trackPtBin - 1, jetPtBin, centBin);
        y0errSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(trackPtBin - 1, jetPtBin, centBin)
                                                   : 0.;
        x0 = xAxis->GetBinCenter(trackPtBin - 1);
        y1 = fFractionHists[species]->GetBinContent(trackPtBin, jetPtBin, centBin);
        y1errStat = fFractionHists[species]->GetBinError(trackPtBin, jetPtBin, centBin);
        y1errSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(trackPtBin, jetPtBin, centBin)
                                                   : 0.;
        x1 = xAxis->GetBinCenter(trackPtBin);
    }
    else {
        y0 = fFractionHists[species]->GetBinContent(trackPtBin, jetPtBin, centBin);
        y0errStat = fFractionHists[species]->GetBinError(trackPtBin, jetPtBin, centBin);
        y0errSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(trackPtBin, jetPtBin, centBin)
                                                   : 0.;
        x0 = xAxis->GetBinCenter(trackPtBin);
        y1 = fFractionHists[species]->GetBinContent(trackPtBin + 1, jetPtBin, centBin);
        y1errStat = fFractionHists[species]->GetBinError(trackPtBin + 1, jetPtBin, centBin);
        y1errSys = fFractionSysErrorHists[species] ? fFractionSysErrorHists[species]->GetBinError(trackPtBin + 1, jetPtBin, centBin)
                                                   : 0.;
        x1 = xAxis->GetBinCenter(trackPtBin + 1);
    }
    
    // Per construction: x0 < trackPt < x1
    fraction = y0 + (trackPt - x0) * ((y1 - y0) / (x1 - x0));
    fractionErrorStat = y0errStat + (trackPt - x0) * ((y1errStat - y0errStat) / (x1 - x0));
    fractionErrorSys = fFractionSysErrorHists[species] ? (y0errSys + (trackPt - x0) * ((y1errSys - y0errSys) / (x1 - x0))) : 0.;
  }
  
  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::GetParticleFractions(Double_t trackPt, Double_t jetPt, Double_t centralityPercentile,
                                                Double_t* prob, Int_t smearSpeciesByError,
                                                Int_t takeIntoAccountSpeciesSysError, Bool_t uniformSystematicError) const
{
  // Fills the particle fractions for the given trackPt, jetPt and centrality into "prob".
  // Use jetPt = -1 for inclusive spectra and centralityPercentile = -1 for pp.
  // If smearSpeciesByError is >= 0 && < AliPID::kSPECIES, the returned fractions will be a random number distributed
  // with a gauss with mean being the corresponding particle fraction and sigma it's error for the considered species
  // "smearSpeciesByError".
  // Note that in this case the fractions for all species will NOT sum up to 1!
  // Thus, all other species fractions will be re-scaled weighted with their corresponding statistical error.
  // A similar procedure is used for "takeIntoAccountSpeciesSysError":  The systematic error of the corresponding species
  // is used to generate a random number with uniform distribution in [mean - sysError, mean + sysError] for the new mean
  // (in cace of uniformSystematicError = kTRUE, otherwise it will be a gaus(mean, sysError)),
  // then the other species will be re-scaled according to their systematic errors.
  // First, the systematic error uncertainty procedure will be performed (that is including re-scaling), then the statistical
  // uncertainty procedure.
  // On success, kTRUE is returned.
  
  if (!prob || smearSpeciesByError >= AliPID::kSPECIES || takeIntoAccountSpeciesSysError >= AliPID::kSPECIES)
    return kFALSE;
  
  Double_t probTemp[AliPID::kSPECIES];
  Double_t probErrorStat[AliPID::kSPECIES];
  Double_t probErrorSys[AliPID::kSPECIES];
  
  Bool_t success = kTRUE;
  success = success && GetParticleFraction(trackPt, jetPt, centralityPercentile, AliPID::kElectron,
                                           probTemp[AliPID::kElectron], probErrorStat[AliPID::kElectron], 
                                           probErrorSys[AliPID::kElectron]);
  success = success && GetParticleFraction(trackPt, jetPt, centralityPercentile, AliPID::kMuon,
                                           probTemp[AliPID::kMuon], probErrorStat[AliPID::kMuon], probErrorSys[AliPID::kMuon]);
  success = success && GetParticleFraction(trackPt, jetPt, centralityPercentile, AliPID::kPion,
                                           probTemp[AliPID::kPion], probErrorStat[AliPID::kPion], probErrorSys[AliPID::kPion]);
  success = success && GetParticleFraction(trackPt, jetPt, centralityPercentile, AliPID::kKaon,
                                           probTemp[AliPID::kKaon], probErrorStat[AliPID::kKaon], probErrorSys[AliPID::kKaon]);
  success = success && GetParticleFraction(trackPt, jetPt, centralityPercentile, AliPID::kProton,
                                           probTemp[AliPID::kProton], probErrorStat[AliPID::kProton], probErrorSys[AliPID::kProton]);
  
  if (!success)
    return kFALSE;
  
  // If desired, take into account the systematic error of the corresponding species and re-generate probTemp accordingly
  if (takeIntoAccountSpeciesSysError >= 0) {
    // Generate random fraction of the considered species "smearSpeciesByError" according to mean and sigma
    Double_t generatedFraction = uniformSystematicError 
                                   ? fRandom->Rndm() * 2. * probErrorSys[takeIntoAccountSpeciesSysError]
                                     - probErrorSys[takeIntoAccountSpeciesSysError]
                                     + probTemp[takeIntoAccountSpeciesSysError]
                                   : fRandom->Gaus(probTemp[takeIntoAccountSpeciesSysError],
                                                   probErrorSys[takeIntoAccountSpeciesSysError]);
    
    // Catch cases with invalid fraction (can happen for large errors), i.e. fraction < 0 or > 1
    if (generatedFraction < 0.)
      generatedFraction = 0.;
    else if (generatedFraction > 1.)
      generatedFraction = 1.;
    
    // Calculate difference from original fraction (original fractions sum up to 1!)
    Double_t deltaFraction = generatedFraction - probTemp[takeIntoAccountSpeciesSysError];
    
    // Fractions must (including errors) lie inside [0,1] -> Adapt weights accordingly by setting the errors
    if (deltaFraction > 0) {
      // Some part will be SUBTRACTED from the other fractions
      for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
        if (probTemp[i] - probErrorSys[i] < 0) 
          probErrorSys[i] = probTemp[i];
      }
    }
    else {
      // Some part will be ADDED to the other fractions
      for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
        if (probTemp[i] + probErrorSys[i] > 1) 
          probErrorSys[i] = 1. - probTemp[i];
      }
    }
    
    // Compute summed weight of all fractions except for the considered one
    Double_t summedWeight = 0.;
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != takeIntoAccountSpeciesSysError)
        summedWeight += probErrorSys[i]; 
    }
    
    // Compute the weight for the other species
    /*
    if (summedWeight <= 1e-13) {
      // If this happens for some reason (it should not!), just assume flat weight
      printf("Error: summedWeight (sys error) ~ 0 for trackPt %f, jetPt %f, centralityPercentile %f. Setting flat weight!\n",
             trackPt, jetPt, centralityPercentile);
    }*/
    
    Double_t weight[AliPID::kSPECIES];
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != takeIntoAccountSpeciesSysError) {
        if (summedWeight > 1e-13)
          weight[i] = probErrorSys[i] / summedWeight;
        else
          weight[i] = probErrorSys[i] / (AliPID::kSPECIES - 1);
      }
    }
    
    // For the final generated fractions, set the generated value for the considered species
    // and the generated value minus delta times statistical weight
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != takeIntoAccountSpeciesSysError) 
        probTemp[i] = probTemp[i] - weight[i] * deltaFraction;
      else
        probTemp[i] = generatedFraction;
    }
  }
  
  // Using the values of probTemp (either the original ones or those after taking into account the systematic error),
  // calculate the final fractions - if the statistical error is to be taken into account, smear the corresponding
  // fraction. If not, just write probTemp to the final result array.
  if (smearSpeciesByError >= 0) {
    // Generate random fraction of the considered species "smearSpeciesByError" according to mean and sigma
    Double_t generatedFraction = fRandom->Gaus(probTemp[smearSpeciesByError], probErrorStat[smearSpeciesByError]);
    
    // Catch cases with invalid fraction (can happen for large errors), i.e. fraction < 0 or > 1
    if (generatedFraction < 0.)
      generatedFraction = 0.;
    else if (generatedFraction > 1.)
      generatedFraction = 1.;
    
    // Calculate difference from original fraction (original fractions sum up to 1!)
    Double_t deltaFraction = generatedFraction - probTemp[smearSpeciesByError];
    
    // Fractions must (including errors) lie inside [0,1] -> Adapt weights accordingly by setting the errors
    if (deltaFraction > 0) {
      // Some part will be SUBTRACTED from the other fractions
      for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
        if (probTemp[i] - probErrorStat[i] < 0) 
          probErrorStat[i] = probTemp[i];
      }
    }
    else {
      // Some part will be ADDED to the other fractions
      for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
        if (probTemp[i] + probErrorStat[i] > 1) 
          probErrorStat[i] = 1. - probTemp[i];
      }
    }
    
    // Compute summed weight of all fractions except for the considered one
    Double_t summedWeight = 0.;
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != smearSpeciesByError)
        summedWeight += probErrorStat[i]; 
    }
    
    // Compute the weight for the other species
    /*
    if (summedWeight <= 1e-13) {
      // If this happens for some reason (it should not!), just assume flat weight
      printf("Error: summedWeight (stat error) ~ 0 for trackPt %f, jetPt %f, centralityPercentile %f. Setting flat weight!\n",
             trackPt, jetPt, centralityPercentile);
    }*/
    
    Double_t weight[AliPID::kSPECIES];
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != smearSpeciesByError) {
        if (summedWeight > 1e-13)
          weight[i] = probErrorStat[i] / summedWeight;
        else
          weight[i] = probErrorStat[i] / (AliPID::kSPECIES - 1);
      }
    }
    
    // For the final generated fractions, set the generated value for the considered species
    // and the generated value minus delta times statistical weight
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      if (i != smearSpeciesByError) 
        prob[i] = probTemp[i] - weight[i] * deltaFraction;
      else
        prob[i] = generatedFraction;
    }
  }
  else {
    // Just take the generated values
    for (Int_t i = 0; i < AliPID::kSPECIES; i++)
      prob[i] = probTemp[i];
  }
  
  
  // Should already be normalised, but make sure that it really is:
  Double_t probSum = 0.;
  for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
    probSum += prob[i];
  }
  
  if (probSum <= 0)
    return kFALSE;
  
  if (TMath::Abs(probSum - 1.0) > 1e-4) {
    printf("Warning: Re-normalising sum of fractions: Sum is %e\n", probSum);
    for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
      prob[i] /= probSum;
    }
  }
  
  return kTRUE;
}


//_____________________________________________________________________________
const TH3D* AliAnalysisTaskPID::GetParticleFractionHisto(Int_t species, Bool_t sysError) const
{
  if (species < AliPID::kElectron || species > AliPID::kProton)
    return 0x0;
  
  return sysError ? fFractionSysErrorHists[species] : fFractionHists[species];
}


//_____________________________________________________________________________
Double_t AliAnalysisTaskPID::GetMCStrangenessFactorCMS(Int_t motherPDG, Double_t motherGenPt)
{
  // Strangeness ratio MC/data as function of mother pt from CMS data in |eta|<2.0
  // -> Based on function in PWGJE/AliAnalysisTaskFragmentationFunction, which uses
  // the following data from CMS pp @ 7 TeV inclusive (JHEP 05 (2011) 064)
  
  Double_t fac = 1;
  
  const Int_t absMotherPDG = TMath::Abs(motherPDG);
  
  if (absMotherPDG == 310 || absMotherPDG == 321) { // K0s / K+ / K-
    if (0.00 <= motherGenPt && motherGenPt < 0.20) fac = 0.768049;
    else if(0.20 <= motherGenPt && motherGenPt < 0.40) fac = 0.732933;
    else if(0.40 <= motherGenPt && motherGenPt < 0.60) fac = 0.650298;
    else if(0.60 <= motherGenPt && motherGenPt < 0.80) fac = 0.571332;
    else if(0.80 <= motherGenPt && motherGenPt < 1.00) fac = 0.518734;
    else if(1.00 <= motherGenPt && motherGenPt < 1.20) fac = 0.492543;
    else if(1.20 <= motherGenPt && motherGenPt < 1.40) fac = 0.482704;
    else if(1.40 <= motherGenPt && motherGenPt < 1.60) fac = 0.488056;
    else if(1.60 <= motherGenPt && motherGenPt < 1.80) fac = 0.488861;
    else if(1.80 <= motherGenPt && motherGenPt < 2.00) fac = 0.492862;
    else if(2.00 <= motherGenPt && motherGenPt < 2.20) fac = 0.504332;
    else if(2.20 <= motherGenPt && motherGenPt < 2.40) fac = 0.501858;
    else if(2.40 <= motherGenPt && motherGenPt < 2.60) fac = 0.512970;
    else if(2.60 <= motherGenPt && motherGenPt < 2.80) fac = 0.524131;
    else if(2.80 <= motherGenPt && motherGenPt < 3.00) fac = 0.539130;
    else if(3.00 <= motherGenPt && motherGenPt < 3.20) fac = 0.554101;
    else if(3.20 <= motherGenPt && motherGenPt < 3.40) fac = 0.560348;
    else if(3.40 <= motherGenPt && motherGenPt < 3.60) fac = 0.568869;
    else if(3.60 <= motherGenPt && motherGenPt < 3.80) fac = 0.583310;
    else if(3.80 <= motherGenPt && motherGenPt < 4.00) fac = 0.604818;
    else if(4.00 <= motherGenPt && motherGenPt < 5.00) fac = 0.632630;
    else if(5.00 <= motherGenPt && motherGenPt < 6.00) fac = 0.710070;
    else if(6.00 <= motherGenPt && motherGenPt < 8.00) fac = 0.736365;
    else if(8.00 <= motherGenPt && motherGenPt < 10.00) fac = 0.835865;
  }
  
  if (absMotherPDG == 3122) { // Lambda
  //if (absMotherPDG == 3122 || absMotherPDG == 3112 || absMotherPDG == 3222) { // Lambda / Sigma- / Sigma+
    if (0.00 <= motherGenPt && motherGenPt < 0.20) fac = 0.645162;
    else if(0.20 <= motherGenPt && motherGenPt < 0.40) fac = 0.627431;
    else if(0.40 <= motherGenPt && motherGenPt < 0.60) fac = 0.457136;
    else if(0.60 <= motherGenPt && motherGenPt < 0.80) fac = 0.384369;
    else if(0.80 <= motherGenPt && motherGenPt < 1.00) fac = 0.330597;
    else if(1.00 <= motherGenPt && motherGenPt < 1.20) fac = 0.309571;
    else if(1.20 <= motherGenPt && motherGenPt < 1.40) fac = 0.293620;
    else if(1.40 <= motherGenPt && motherGenPt < 1.60) fac = 0.283709;
    else if(1.60 <= motherGenPt && motherGenPt < 1.80) fac = 0.282047;
    else if(1.80 <= motherGenPt && motherGenPt < 2.00) fac = 0.277261;
    else if(2.00 <= motherGenPt && motherGenPt < 2.20) fac = 0.275772;
    else if(2.20 <= motherGenPt && motherGenPt < 2.40) fac = 0.280726;
    else if(2.40 <= motherGenPt && motherGenPt < 2.60) fac = 0.288540;
    else if(2.60 <= motherGenPt && motherGenPt < 2.80) fac = 0.288315;
    else if(2.80 <= motherGenPt && motherGenPt < 3.00) fac = 0.296619;
    else if(3.00 <= motherGenPt && motherGenPt < 3.20) fac = 0.302993;
    else if(3.20 <= motherGenPt && motherGenPt < 3.40) fac = 0.338121;
    else if(3.40 <= motherGenPt && motherGenPt < 3.60) fac = 0.349800;
    else if(3.60 <= motherGenPt && motherGenPt < 3.80) fac = 0.356802;
    else if(3.80 <= motherGenPt && motherGenPt < 4.00) fac = 0.391202;
    else if(4.00 <= motherGenPt && motherGenPt < 5.00) fac = 0.422573;
    else if(5.00 <= motherGenPt && motherGenPt < 6.00) fac = 0.573815;
    else if(6.00 <= motherGenPt && motherGenPt < 8.00) fac = 0.786984;
    else if(8.00 <= motherGenPt && motherGenPt < 10.00) fac = 1.020021;
  } 
  
  if (absMotherPDG == 3312 || absMotherPDG == 3322) { // xi 
    if (0.00 <= motherGenPt && motherGenPt < 0.20) fac = 0.666620;
    else if(0.20 <= motherGenPt && motherGenPt < 0.40) fac = 0.575908;
    else if(0.40 <= motherGenPt && motherGenPt < 0.60) fac = 0.433198;
    else if(0.60 <= motherGenPt && motherGenPt < 0.80) fac = 0.340901;
    else if(0.80 <= motherGenPt && motherGenPt < 1.00) fac = 0.290896;
    else if(1.00 <= motherGenPt && motherGenPt < 1.20) fac = 0.236074;
    else if(1.20 <= motherGenPt && motherGenPt < 1.40) fac = 0.218681;
    else if(1.40 <= motherGenPt && motherGenPt < 1.60) fac = 0.207763;
    else if(1.60 <= motherGenPt && motherGenPt < 1.80) fac = 0.222848;
    else if(1.80 <= motherGenPt && motherGenPt < 2.00) fac = 0.208806;
    else if(2.00 <= motherGenPt && motherGenPt < 2.20) fac = 0.197275;
    else if(2.20 <= motherGenPt && motherGenPt < 2.40) fac = 0.183645;
    else if(2.40 <= motherGenPt && motherGenPt < 2.60) fac = 0.188788;
    else if(2.60 <= motherGenPt && motherGenPt < 2.80) fac = 0.188282;
    else if(2.80 <= motherGenPt && motherGenPt < 3.00) fac = 0.207442;
    else if(3.00 <= motherGenPt && motherGenPt < 3.20) fac = 0.240388;
    else if(3.20 <= motherGenPt && motherGenPt < 3.40) fac = 0.241916;
    else if(3.40 <= motherGenPt && motherGenPt < 3.60) fac = 0.208276;
    else if(3.60 <= motherGenPt && motherGenPt < 3.80) fac = 0.234550;
    else if(3.80 <= motherGenPt && motherGenPt < 4.00) fac = 0.251689;
    else if(4.00 <= motherGenPt && motherGenPt < 5.00) fac = 0.310204;
    else if(5.00 <= motherGenPt && motherGenPt < 6.00) fac = 0.343492;  
  }
  
  const Double_t weight = 1. / fac;
  
  return weight;
}


//_____________________________________________________________________________
Double_t AliAnalysisTaskPID::GetMCStrangenessFactorCMS(AliMCEvent* mcEvent, AliMCParticle* daughter)
{
  // Strangeness ratio MC/data as function of mother pt from CMS data in |eta|<2.0
  // -> Based on function in PWGJE/AliAnalysisTaskFragmentationFunction

  if (!mcEvent)
    return 1.;

  AliMCParticle* currentMother   = daughter;
  AliMCParticle* currentDaughter = daughter;


  // find first primary mother K0s, Lambda or Xi   
  while(1) {
    Int_t daughterPDG = currentDaughter->PdgCode();  

    Int_t motherLabel = currentDaughter->GetMother();
    if(motherLabel >= mcEvent->GetNumberOfTracks()){ // protection
      currentMother = currentDaughter; 
      break; 
    }

    currentMother = (AliMCParticle*)mcEvent->GetTrack(motherLabel);

    if (!currentMother) { 
      currentMother = currentDaughter; 
      break; 
    }

    Int_t motherPDG = currentMother->PdgCode();  
 
    // phys. primary found ?    
    if (mcEvent->IsPhysicalPrimary(motherLabel))
      break; 

    if (TMath::Abs(daughterPDG) == 321) { 
      // K+/K- e.g. from phi (ref data not feeddown corrected)
      currentMother = currentDaughter;
      break; 
    }   
    if (TMath::Abs(motherPDG) == 310) { 
      // K0s e.g. from phi (ref data not feeddown corrected)
      break; 
    }   
    if (TMath::Abs(motherPDG) == 3212 && TMath::Abs(daughterPDG) == 3122) { 
      // Mother Sigma0, daughter Lambda (this case not included in feeddown corr.)
      currentMother = currentDaughter;
      break; 
    }

    currentDaughter = currentMother;
  }


  Int_t motherPDG = currentMother->PdgCode();  
  Double_t motherGenPt = currentMother->Pt(); 

  return GetMCStrangenessFactorCMS(motherPDG, motherGenPt);
}


// _________________________________________________________________________________
AliAnalysisTaskPID::TOFpidInfo AliAnalysisTaskPID::GetTOFType(const AliVTrack* track, Int_t tofMode) const
{
  // Get the (locally defined) particle type judged by TOF
  
  if (!fPIDResponse) {
    Printf("ERROR: fPIDResponse not available -> Cannot determine TOF type!");
    return kNoTOFinfo;
  }
  
  /*TODO still needs some further thinking how to implement it....
  // TOF PID status (kTOFout, kTIME) automatically checked by return value of ComputeTPCProbability;
  // also, probability array will be set there (no need to initialise here)
  Double_t p[AliPID::kSPECIES];
  const AliPIDResponse::EDetPidStatus tofStatus = fPIDResponse->ComputeTPCProbability(track, AliPID::kSPECIES, p);
  if (tofStatus != AliPIDResponse::kDetPidOk)
    return kNoTOFinfo;
  
  // Do not consider muons
  p[AliPID::kMuon] = 0.;
  
  // Probabilities are not normalised yet
  Double_t sum = 0.;
  for (Int_t i = 0; i < AliPID::kSPECIES; i++)
    sum += p[i];
  
  if (sum <= 0.)
    return kNoTOFinfo;
  
  for (Int_t i = 0; i < AliPID::kSPECIES; i++)
    p[i] /= sum;
  
  Double_t probThreshold = -999.;
  
  // If there is only one distribution, the threshold corresponds to...
  if (tofMode == 0) {
    probThreshold = ;
  }
  else if (tofMode == 1) { // default
    probThreshold = 0.9973; // a 3-sigma inclusion cut
  }
  else if (tofMode == 2) {
    inclusion = 3.;
    exclusion = 3.5;
  }
  else {
    Printf("ERROR: Bad TOF mode: %d!", tofMode);
    return kNoTOFinfo;
  }
  
  */
  
  ///* OLD: cut with n-sigmas (ATTENTION: Does not take into account properly the TOF tail!)
  // Check kTOFout, kTIME, mismatch
  const AliPIDResponse::EDetPidStatus tofStatus = fPIDResponse->CheckPIDStatus(AliPIDResponse::kTOF, track);
  if (tofStatus != AliPIDResponse::kDetPidOk)
    return kNoTOFinfo;
  
  Double_t nsigma[kNumTOFspecies + 1] = { -999., -999., -999., -999. };
  nsigma[kTOFpion]   = fPIDResponse->NumberOfSigmasTOF(track, AliPID::kPion);
  nsigma[kTOFkaon]   = fPIDResponse->NumberOfSigmasTOF(track, AliPID::kKaon);
  nsigma[kTOFproton] = fPIDResponse->NumberOfSigmasTOF(track, AliPID::kProton);
  
  Double_t inclusion = -999;
  Double_t exclusion = -999;
  
  if (tofMode == 0) {
    inclusion = 3.;
    exclusion = 2.5;
  }
  else if (tofMode == 1) { // default
    inclusion = 3.;
    exclusion = 3.;
  }
  else if (tofMode == 2) {
    inclusion = 3.;
    exclusion = 3.5;
  }
  else {
    Printf("ERROR: Bad TOF mode: %d!", tofMode);
    return kNoTOFinfo;
  }
  
  // Do not cut on nSigma electron because this would also remove pions in a large pT range.
  // The electron contamination of the pion sample can be treated by TPC dEdx fits afterwards.
  if (TMath::Abs(nsigma[kTOFpion]) < inclusion && TMath::Abs(nsigma[kTOFkaon]) > exclusion && TMath::Abs(nsigma[kTOFproton]) > exclusion)
    return kTOFpion;
  if (TMath::Abs(nsigma[kTOFpion]) > exclusion && TMath::Abs(nsigma[kTOFkaon]) < inclusion && TMath::Abs(nsigma[kTOFproton]) > exclusion)
    return kTOFkaon;
  if (TMath::Abs(nsigma[kTOFpion]) > exclusion && TMath::Abs(nsigma[kTOFkaon]) > exclusion && TMath::Abs(nsigma[kTOFproton]) < inclusion)
    return kTOFproton;
  //*/
  
  // There are no TOF electrons selected because the purity is rather bad, even for small momenta
  // (also a small mismatch probability significantly affects electrons because their fraction
  // is small). There is no need for TOF electrons anyway, since the dEdx distribution of kaons and 
  // protons in a given pT bin (also at the dEdx crossings) is very different from that of electrons.
  // This is due to the steeply falling dEdx of p and K with momentum, whereas the electron dEdx stays
  // rather constant.
  // As a result, the TPC fit yields a more accurate electron fraction than the TOF selection can do.
  
  return kNoTOFpid;
}


// _________________________________________________________________________________
Bool_t AliAnalysisTaskPID::IsSecondaryWithStrangeMotherMC(AliMCEvent* mcEvent, Int_t partLabel)
{
  // Check whether particle is a secondary with strange mother, i.e. returns kTRUE if a strange mother is found
  // and the particle is NOT a physical primary. In all other cases kFALSE is returned
  
  if (!mcEvent || partLabel < 0)
    return kFALSE;
  
  AliMCParticle* part = (AliMCParticle*)mcEvent->GetTrack(partLabel);
  
  if (!part)
    return kFALSE;
  
  if (mcEvent->IsPhysicalPrimary(partLabel))
    return kFALSE;
  
  Int_t iMother = part->GetMother();
  if (iMother < 0)
    return kFALSE;
  
  
  AliMCParticle* partM = (AliMCParticle*)mcEvent->GetTrack(iMother);
  if (!partM) 
   return kFALSE;
  
  Int_t codeM = TMath::Abs(partM->PdgCode());
  Int_t mfl = Int_t(codeM / TMath::Power(10, Int_t(TMath::Log10(codeM))));
  if (mfl == 3 && codeM != 3) // codeM = 3 is for s quark
    return kTRUE;
  
  return kFALSE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::SetParticleFractionHisto(const TH3D* hist, Int_t species, Bool_t sysError)
{
  // Store a clone of hist (containing the particle fractions of the corresponding species with statistical error (sysError = kFALSE)
  // or systematic error (sysError = kTRUE), respectively), internally 
  
  if (species < AliPID::kElectron || species > AliPID::kProton) {
    AliError(Form("Only fractions for species index %d to %d can be set, but not for the requested one: %d", 0,
                  AliPID::kProton, species));
    return kFALSE;
  }
  
  if (sysError) {
    delete fFractionSysErrorHists[species];
    
    fFractionSysErrorHists[species] = new TH3D(*hist);
  }
  else {
    delete fFractionHists[species];
  
    fFractionHists[species] = new TH3D(*hist);
  }
  
  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::SetParticleFractionHistosFromFile(const TString filePathName, Bool_t sysError)
{
  // Loads particle fractions for all species from the desired file and returns kTRUE on success.
  // The maps are assumed to be of Type TH3D, to sit in the main directory and to have names 
  // Form("hFraction_%e", AliPID::ParticleName(i)) for sysError = kFALSE and
  // Form("hFractionSysError_%e", AliPID::ParticleName(i)) for sysError = kTRUE.
  
  TFile* f = TFile::Open(filePathName.Data());
  if (!f)  {
    std::cout << "Failed to open file with particle fractions \"" << filePathName.Data() << "\"!" << std::endl;
    return kFALSE;
  }

  TH3D* hist = 0x0;
  for (Int_t i = 0; i < AliPID::kSPECIES; i++) {
    TString histName = Form("hFraction%s_%s", sysError ? "SysError" : "", AliPID::ParticleName(i));
    hist = dynamic_cast<TH3D*>(f->Get(histName.Data()));
    if (!hist) {
      std::cout << "Failed to load particle fractions for " << histName.Data() << "!";
      std::cout << std::endl << "Cleaning up particle fraction histos!" << std::endl;
      CleanupParticleFractionHistos();
      return kFALSE;
    }
    
    if (!SetParticleFractionHisto(hist, i, sysError)) {
      std::cout << "Failed to load particle fractions for " << histName.Data() << "!";
      std::cout << std::endl << "Cleaning up particle fraction histos!" << std::endl;
      CleanupParticleFractionHistos();
      return kFALSE;
    }
  }
  
  delete hist;
  
  return kTRUE;
  
}


//_____________________________________________________________________________
Double_t AliAnalysisTaskPID::GetMaxEtaVariation(Double_t dEdxSplines)
{
  // Returns the maximum eta variation (i.e. deviation of eta correction factor from unity) for the
  // given (spline) dEdx
  
  if (dEdxSplines < 1. || !fhMaxEtaVariation) {
    Printf("Error GetMaxEtaVariation: No map or invalid dEdxSplines (%f)!", dEdxSplines);
    return 999.;
  } 
  
  Int_t bin = fhMaxEtaVariation->GetXaxis()->FindFixBin(1. / dEdxSplines);
  
  if (bin == 0) 
    bin = 1;
  if (bin > fhMaxEtaVariation->GetXaxis()->GetNbins())
    bin = fhMaxEtaVariation->GetXaxis()->GetNbins();
  
  return fhMaxEtaVariation->GetBinContent(bin);
}


//_____________________________________________________________________________
Int_t AliAnalysisTaskPID::GetRandomParticleTypeAccordingToParticleFractions(Double_t trackPt, Double_t jetPt,
                                                                            Double_t centralityPercentile, 
                                                                            Bool_t smearByError,
                                                                            Bool_t takeIntoAccountSysError) const
{
  // Uses the stored histograms with the particle fractions to generate a random particle type according to these fractions.
  // In case of problems (e.g. histo missing), AliPID::kUnknown is returned.
  // If smearByError is kTRUE, the used fractions will be random numbers distributed with a gauss with mean
  // being the corresponding particle fraction and sigma it's error.
  // Note that in this case only the fraction of a random species is varied in this way. The other fractions
  // will be re-normalised according their statistical errors.
  // The same holds for the systematic error of species "takeIntoAccountSpeciesSysError", but the random number will be
  // uniformly distributed within [mean - sys, mean + sys] and the re-normalisation will be weighted with the systematic errors.
  // Note that the fractions will be calculated first with only the systematic error taken into account (if desired), including
  // re-normalisation. Then, the resulting fractions will be used to calculate the final fractions - either with statistical error
  // or without. The species, for which the error will be used for smearing, is the same for sys and stat error.
  
  Double_t prob[AliPID::kSPECIES];
  Int_t randomSpecies = (smearByError || takeIntoAccountSysError) ? (Int_t)(fRandom->Rndm() * AliPID::kSPECIES) : -1;
  Bool_t success = GetParticleFractions(trackPt, jetPt, centralityPercentile, prob, randomSpecies, randomSpecies);
  
  if (!success)
    return AliPID::kUnknown;
  
  Double_t rnd = fRandom->Rndm(); // Produce uniformly distributed floating point in ]0, 1]
  
  if (rnd <= prob[AliPID::kPion])
    return AliPID::kPion;
  else if (rnd <= prob[AliPID::kPion] + prob[AliPID::kKaon])
    return AliPID::kKaon;
  else if (rnd <= prob[AliPID::kPion] + prob[AliPID::kKaon] + prob[AliPID::kProton])
    return AliPID::kProton;
  else if (rnd <= prob[AliPID::kPion] + prob[AliPID::kKaon] + prob[AliPID::kProton] + prob[AliPID::kElectron])
    return AliPID::kElectron;
  
  return AliPID::kMuon;  //else it must be a muon (only species left)
}


//_____________________________________________________________________________
AliAnalysisTaskPID::ErrorCode AliAnalysisTaskPID::GenerateDetectorResponse(AliAnalysisTaskPID::ErrorCode errCode, 
                                                                           Double_t mean, Double_t sigma,
                                                                           Double_t* responses, Int_t nResponses, 
                                                                           Bool_t usePureGaus)
{
  // Generate detector response. If a previous generation was not successful or there is something wrong with this signal generation,
  // the function will return kFALSE  
  if (!responses)
    return kError;
  
  // Reset response array
  for (Int_t i = 0; i < nResponses; i++)
    responses[i] = -999;
  
  if (errCode == kError)
    return kError;
  
  ErrorCode ownErrCode = kNoErrors;
  
  if (fUseConvolutedGaus && !usePureGaus) {
    // In case of convoluted gauss, calculate the probability density only once to save a lot of time!
    
    TH1* hProbDensity = 0x0;
    ownErrCode = SetParamsForConvolutedGaus(mean, sigma);
    if (ownErrCode == kError)
      return kError;
    
    hProbDensity = fConvolutedGausDeltaPrime->GetHistogram();
    
    for (Int_t i = 0; i < nResponses; i++) {
      responses[i] = hProbDensity->GetRandom();
      //responses[i] fConvolutedGausDeltaPrime->GetRandom(); // MUCH slower than using the binned version via the histogram
    }
  }
  else {
    for (Int_t i = 0; i < nResponses; i++) {
      responses[i] = fRandom->Gaus(mean, sigma);
    }
  }
  
  // If forwarded error code was a warning (error case has been handled before), return a warning
  if (errCode == kWarning)
    return kWarning;
  
  return ownErrCode; // Forward success/warning
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::PrintSettings(Bool_t printSystematicsSettings) const
{
  // Print current settings.
  
  printf("\n\nSettings for task %s:\n", GetName());
  printf("Is pPb/Pbp: %d -> %s\n", GetIsPbpOrpPb(), GetIsPbpOrpPb() ? "Adapting vertex cuts" : "Using standard vertex cuts");
  printf("Track cuts: %s\n", fTrackFilter ? fTrackFilter->GetTitle() : "-");
  printf("Eta cut: %.2f <= |eta| <= %.2f\n", GetEtaAbsCutLow(), GetEtaAbsCutUp());
  printf("Phi' cut: %d\n", GetUsePhiCut());
  printf("TPCCutMIGeo: %d\n", GetUseTPCCutMIGeo());
  if (GetUseTPCCutMIGeo()) {
    printf("GetCutGeo: %f\n", GetCutGeo());
    printf("GetCutNcr: %f\n", GetCutNcr());
    printf("GetCutNcl: %f\n", GetCutNcl());
  }
  printf("TPCnclCut: %d\n", GetUseTPCnclCut());
  if (GetUseTPCnclCut()) {
    printf("GetCutPureNcl: %d\n", GetCutPureNcl());
  }
  
  printf("\n");
  
  printf("Centrality estimator: %s\n", GetCentralityEstimator().Data());
  
  printf("\n");
  
  printf("Pile up rejection type: %d\n", (Int_t)fPileUpRejectionType);
  
  printf("\n");
  
  printf("Use MC-ID for signal generation: %d\n", GetUseMCidForGeneration());
  printf("Use ITS: %d\n", GetUseITS());
  printf("Use TOF: %d\n", GetUseTOF());
  printf("Use priors: %d\n", GetUsePriors());
  printf("Use TPC default priors: %d\n", GetUseTPCDefaultPriors());
  printf("Use convoluted Gauss: %d\n", GetUseConvolutedGaus());
  printf("Accuracy of non-Gaussian tail: %e\n", GetAccuracyNonGaussianTail());
  printf("Take into account muons: %d\n", GetTakeIntoAccountMuons());
  printf("TOF mode: %d\n", GetTOFmode());
  printf("\nParams for transition from gauss to asymmetric shape:\n");
  printf("[0]: %e\n", GetConvolutedGaussTransitionPar(0));
  printf("[1]: %e\n", GetConvolutedGaussTransitionPar(1));
  printf("[2]: %e\n", GetConvolutedGaussTransitionPar(2));
  
  printf("\n");
  
  printf("Do PID: %d\n", fDoPID);
  printf("Do Efficiency: %d\n", fDoEfficiency);
  printf("Do PtResolution: %d\n", fDoPtResolution);
  printf("Do dEdxCheck: %d\n", fDoDeDxCheck);
  printf("Do binZeroStudy: %d\n", fDoBinZeroStudy);
  
  printf("\n");

  printf("Input from other task: %d\n", GetInputFromOtherTask());
  printf("Store additional jet information: %d\n", GetStoreAdditionalJetInformation());
  printf("Store centrality percentile: %d", GetStoreCentralityPercentile());
  
  if (printSystematicsSettings)
    PrintSystematicsSettings();
  else
    printf("\n\n\n");
}


//_____________________________________________________________________________
void AliAnalysisTaskPID::PrintSystematicsSettings() const
{
  // Print current settings for systematic studies.
  
  printf("\n\nSettings for systematics for task %s:\n", GetName());
  printf("SplinesThr:\t%f\n", GetSystematicScalingSplinesThreshold());
  printf("SplinesBelowThr:\t%f\n", GetSystematicScalingSplinesBelowThreshold());
  printf("SplinesAboveThr:\t%f\n", GetSystematicScalingSplinesAboveThreshold());
  printf("EtaCorrMomThr:\t%f\n", GetSystematicScalingEtaCorrectionMomentumThr());
  printf("EtaCorrLowP:\t%f\n", GetSystematicScalingEtaCorrectionLowMomenta());
  printf("EtaCorrHighP:\t%f\n", GetSystematicScalingEtaCorrectionHighMomenta());
  printf("SigmaParaThr:\t%f\n", GetSystematicScalingEtaSigmaParaThreshold());
  printf("SigmaParaBelowThr:\t%f\n", GetSystematicScalingEtaSigmaParaBelowThreshold());
  printf("SigmaParaAboveThr:\t%f\n", GetSystematicScalingEtaSigmaParaAboveThreshold());
  printf("MultCorr:\t%f\n", GetSystematicScalingMultCorrection());
  printf("TOF mode: %d\n", GetTOFmode());
  
  printf("\n\n");
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::ProcessTrack(const AliVTrack* track, Int_t particlePDGcode, Double_t centralityPercentile,
                                        Double_t jetPt) 
{
  // Process the track (generate expected response, fill histos, etc.).
  // particlePDGcode == 0 means data. Otherwise, the corresponding MC ID will be assumed.
  
  //Printf("Debug: Task %s is starting to process track: dEdx %f, pTPC %f, eta %f, ncl %d\n", GetName(), track->GetTPCsignal(), track->GetTPCmomentum(),
  //       track->Eta(), track->GetTPCsignalN());
  
  if(fDebug > 1)
    printf("File: %s, Line: %d: ProcessTrack\n", (char*)__FILE__, __LINE__);
  
  if (!fDoPID && !fDoDeDxCheck && !fDoPtResolution)
    return kFALSE;
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: ProcessTrack -> Processing started\n", (char*)__FILE__, __LINE__);
  
  const Bool_t isMC = (particlePDGcode == 0) ? kFALSE : kTRUE;
  
  Int_t binMC = -1;
  
  if (isMC) {
    if (TMath::Abs(particlePDGcode) == 211) {//Pion
      binMC = 3;
    }
    else if (TMath::Abs(particlePDGcode) == 321) {//Kaon
      binMC = 1;
    }
    else if (TMath::Abs(particlePDGcode) == 2212) {//Proton
      binMC = 4;
    }
    else if (TMath::Abs(particlePDGcode) == 11) {//Electron      
      binMC = 0;
    }
    else if (TMath::Abs(particlePDGcode) == 13) {//Muon
      binMC = 2;
    }
    else // In MC-ID case, set to underflow bin such that the response from this track is only used for unidentified signal generation
         // or signal generation with PID response and the track is still there (as in data) - e.g. relevant w.r.t. deuterons.
         // This is important to be as much as possible consistent with data. And the tracks can still be removed by disabling the
         // underflow bin for the projections
      binMC = -1; 
  }
  
  // Momenta
  //Double_t p = track->GetP();
  const Double_t pTPC = track->GetTPCmomentum();
  Double_t pT = track->Pt();
  
  Double_t z = -1, xi = -1;
  GetJetTrackObservables(pT, jetPt, z, xi);
  
  
  Double_t trackCharge = track->Charge();
  
  // TPC signal
  const Bool_t tuneOnDataTPC = fPIDResponse->IsTunedOnData() &&
                               ((fPIDResponse->GetTunedOnDataMask() & AliPIDResponse::kDetTPC) == AliPIDResponse::kDetTPC);
  Double_t dEdxTPC = tuneOnDataTPC ? fPIDResponse->GetTPCsignalTunedOnData(track) : track->GetTPCsignal();
  
  if (dEdxTPC <= 0) {
    if (fDebug > 1)
      Printf("Skipping track with strange dEdx value: dEdx %f, pTPC %f, eta %f, ncl %d\n", track->GetTPCsignal(), pTPC,
             track->Eta(), track->GetTPCsignalN());
    return kFALSE;
  }
  
  // Completely remove tracks from light nuclei defined by el and pr <dEdx> as function of pT.
  // A very loose cut to be sure not to throw away electrons and/or protons
  Double_t nSigmaPr = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kProton);
  Double_t nSigmaEl = fPIDResponse->NumberOfSigmasTPC(track, AliPID::kElectron);
  
  if ((pTPC >= 0.3 && (nSigmaPr > 10 && nSigmaEl > 10)) ||
      (pTPC <  0.3 && (nSigmaPr > 15 && nSigmaEl > 15))) {
    if (fDebug > 1)
      Printf("Skipping track which seems to be a light nucleus: dEdx %f, pTPC %f, pT %f, eta %f, ncl %d, nSigmaPr %f, nSigmaEl %f\n",
             track->GetTPCsignal(), pTPC, pT, track->Eta(), track->GetTPCsignalN(), nSigmaPr, nSigmaEl);
    return kFALSE;
  }
  
  
  Double_t dEdxEl, dEdxKa, dEdxPi, dEdxMu, dEdxPr;
  Double_t sigmaEl, sigmaKa, sigmaPi, sigmaMu, sigmaPr;
  
  if (fDoAnySystematicStudiesOnTheExpectedSignal) {
    // Get the uncorrected signal first and the corresponding correction factors.
    // Then modify the correction factors and properly recalculate the corrected dEdx
    
    // Get pure spline values for dEdx_expected, without any correction
    dEdxEl = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kElectron, AliTPCPIDResponse::kdEdxDefault, kFALSE, kFALSE);
    dEdxKa = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kKaon, AliTPCPIDResponse::kdEdxDefault, kFALSE, kFALSE);
    dEdxPi = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kPion, AliTPCPIDResponse::kdEdxDefault, kFALSE, kFALSE);
    dEdxMu = !fTakeIntoAccountMuons ? -1 :
                            fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kMuon, AliTPCPIDResponse::kdEdxDefault, kFALSE, kFALSE);
    dEdxPr = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault, kFALSE, kFALSE);
    
    // Scale splines, if desired
    if ((TMath::Abs(fSystematicScalingSplinesBelowThreshold - 1.0) > fgkEpsilon) ||
        (TMath::Abs(fSystematicScalingSplinesAboveThreshold - 1.0) > fgkEpsilon)) {
       
      // Tune turn-on of correction for pions (not so relevant for the other species, since at very large momenta)
      Double_t bg = 0;
      Double_t scaleFactor = 1.;
      Double_t usedSystematicScalingSplines = 1.;
        
      bg = pTPC / AliPID::ParticleMass(AliPID::kElectron);
      scaleFactor = 0.5 * (1. + TMath::Erf((bg - fSystematicScalingSplinesThreshold) / 4.));
      usedSystematicScalingSplines = fSystematicScalingSplinesBelowThreshold * (1 - scaleFactor)
                                            + fSystematicScalingSplinesAboveThreshold * scaleFactor;
      dEdxEl *= usedSystematicScalingSplines;
      
      bg = pTPC / AliPID::ParticleMass(AliPID::kKaon);
      scaleFactor = 0.5 * (1. + TMath::Erf((bg - fSystematicScalingSplinesThreshold) / 4.));
      usedSystematicScalingSplines = fSystematicScalingSplinesBelowThreshold * (1 - scaleFactor)
                                            + fSystematicScalingSplinesAboveThreshold * scaleFactor;
      dEdxKa *= usedSystematicScalingSplines;
      
      bg = pTPC / AliPID::ParticleMass(AliPID::kPion);
      scaleFactor = 0.5 * (1. + TMath::Erf((bg - fSystematicScalingSplinesThreshold) / 4.));
      usedSystematicScalingSplines = fSystematicScalingSplinesBelowThreshold * (1 - scaleFactor)
                                            + fSystematicScalingSplinesAboveThreshold * scaleFactor;
      dEdxPi *= usedSystematicScalingSplines;
      
      if (fTakeIntoAccountMuons) {
        bg = pTPC / AliPID::ParticleMass(AliPID::kMuon);
        scaleFactor = 0.5 * (1. + TMath::Erf((bg - fSystematicScalingSplinesThreshold) / 4.));
        usedSystematicScalingSplines = fSystematicScalingSplinesBelowThreshold * (1 - scaleFactor)
                                              + fSystematicScalingSplinesAboveThreshold * scaleFactor;
        dEdxMu *= usedSystematicScalingSplines;
      }
      
      
      bg = pTPC / AliPID::ParticleMass(AliPID::kProton);
      scaleFactor = 0.5 * (1. + TMath::Erf((bg - fSystematicScalingSplinesThreshold) / 4.));
      usedSystematicScalingSplines = fSystematicScalingSplinesBelowThreshold * (1 - scaleFactor)
                                            + fSystematicScalingSplinesAboveThreshold * scaleFactor;
      dEdxPr *= usedSystematicScalingSplines;
    }
    
    // Get the eta correction factors for the (modified) expected dEdx
    Double_t etaCorrEl = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxEl) : 1.;
    Double_t etaCorrKa = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxKa) : 1.;
    Double_t etaCorrPi = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxPi) : 1.;
    Double_t etaCorrMu = fTakeIntoAccountMuons && fPIDResponse->UseTPCEtaCorrection() ? 
                            fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxMu) : 1.;
    Double_t etaCorrPr = fPIDResponse->UseTPCEtaCorrection() ? fPIDResponse->GetTPCResponse().GetEtaCorrectionFast(track, dEdxPr) : 1.;

    // Scale eta correction factors, if desired (and eta correction maps are to be used, otherwise it is not possible!)
    if (fPIDResponse->UseTPCEtaCorrection() &&
        (TMath::Abs(fSystematicScalingEtaCorrectionHighMomenta - 1.0) > fgkEpsilon ||
         TMath::Abs(fSystematicScalingEtaCorrectionLowMomenta - 1.0) > fgkEpsilon)) {
      // Since we do not want to scale the splines with this, but only the eta variation, only scale the deviation of the correction factor!
      // E.g. if we would have a flat eta depence fixed at 1.0, we would shift the whole thing equal to shifting the splines by the same factor!
      
      
      // Due to additional azimuthal effects, there is an additional eta dependence for low momenta which is not corrected successfully so far.
      // One can assign a different (higher) systematic scale factor for this low-p region and a threshold which separates low- and high-p.
      // An ERF will be used to get (as a function of p_TPC) from one correction factor to the other within roughly 0.2 GeV/c
      Double_t usedSystematicScalingEtaCorrection = fSystematicScalingEtaCorrectionHighMomenta;
      
      if (TMath::Abs(fSystematicScalingEtaCorrectionHighMomenta - fSystematicScalingEtaCorrectionLowMomenta) > fgkEpsilon) {
        const Double_t fractionHighMomentumScaleFactor = 0.5 * (1. + TMath::Erf((pTPC - fSystematicScalingEtaCorrectionMomentumThr) / 0.1));
        usedSystematicScalingEtaCorrection = fSystematicScalingEtaCorrectionLowMomenta * (1 - fractionHighMomentumScaleFactor)
                                             + fSystematicScalingEtaCorrectionHighMomenta * fractionHighMomentumScaleFactor;
      }
      
      Double_t maxEtaVariationEl = GetMaxEtaVariation(dEdxEl);
      etaCorrEl = etaCorrEl * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrEl - 1.0) / maxEtaVariationEl);
      
      Double_t maxEtaVariationKa = GetMaxEtaVariation(dEdxKa);
      etaCorrKa = etaCorrKa * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrKa - 1.0) / maxEtaVariationKa);
      
      Double_t maxEtaVariationPi = GetMaxEtaVariation(dEdxPi);
      etaCorrPi = etaCorrPi * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrPi - 1.0) / maxEtaVariationPi);
      
      if (fTakeIntoAccountMuons) {
        Double_t maxEtaVariationMu = GetMaxEtaVariation(dEdxMu);
        etaCorrMu = etaCorrMu * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrMu - 1.0) / maxEtaVariationMu);
      }
      else
        etaCorrMu = 1.0;
      
      Double_t maxEtaVariationPr = GetMaxEtaVariation(dEdxPr);
      etaCorrPr = etaCorrPr * (1.0 + (usedSystematicScalingEtaCorrection - 1.) * (etaCorrPr - 1.0) / maxEtaVariationPr);
      
      
      /*OLD
      etaCorrEl = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrEl - 1.0);
      etaCorrKa = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrKa - 1.0);
      etaCorrPi = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrPi - 1.0);
      etaCorrMu = fTakeIntoAccountMuons ? (1.0 + usedSystematicScalingEtaCorrection * (etaCorrMu - 1.0)) : 1.0;
      etaCorrPr = 1.0 + usedSystematicScalingEtaCorrection * (etaCorrPr - 1.0);
      */
    }
    
    // Get the multiplicity correction factors for the (modified) expected dEdx
    const Int_t currEvtMultiplicity = fPIDResponse->GetTPCResponse().GetCurrentEventMultiplicity();
    
    Double_t multiplicityCorrEl = fPIDResponse->UseTPCMultiplicityCorrection() ? fPIDResponse->GetTPCResponse().GetMultiplicityCorrectionFast(track,
                                    dEdxEl * etaCorrEl, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrKa = fPIDResponse->UseTPCMultiplicityCorrection() ? fPIDResponse->GetTPCResponse().GetMultiplicityCorrectionFast(track,
                                    dEdxKa * etaCorrKa, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrPi = fPIDResponse->UseTPCMultiplicityCorrection() ? fPIDResponse->GetTPCResponse().GetMultiplicityCorrectionFast(track,
                                    dEdxPi * etaCorrPi, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrMu = fTakeIntoAccountMuons && fPIDResponse->UseTPCMultiplicityCorrection() ? 
                                    fPIDResponse->GetTPCResponse().GetMultiplicityCorrectionFast(track, dEdxMu * etaCorrMu, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrPr = fPIDResponse->UseTPCMultiplicityCorrection() ? fPIDResponse->GetTPCResponse().GetMultiplicityCorrectionFast(track,
                                    dEdxPr * etaCorrPr, currEvtMultiplicity) : 1.;
    
    Double_t multiplicityCorrSigmaEl = fPIDResponse->UseTPCMultiplicityCorrection() ? 
                                        fPIDResponse->GetTPCResponse().GetMultiplicitySigmaCorrectionFast(dEdxEl * etaCorrEl, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrSigmaKa = fPIDResponse->UseTPCMultiplicityCorrection() ? 
                                        fPIDResponse->GetTPCResponse().GetMultiplicitySigmaCorrectionFast(dEdxKa * etaCorrKa, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrSigmaPi = fPIDResponse->UseTPCMultiplicityCorrection() ?
                                        fPIDResponse->GetTPCResponse().GetMultiplicitySigmaCorrectionFast(dEdxPi * etaCorrPi, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrSigmaMu = fTakeIntoAccountMuons && fPIDResponse->UseTPCMultiplicityCorrection() ? 
                                        fPIDResponse->GetTPCResponse().GetMultiplicitySigmaCorrectionFast(dEdxMu * etaCorrMu, currEvtMultiplicity) : 1.;
    Double_t multiplicityCorrSigmaPr = fPIDResponse->UseTPCMultiplicityCorrection() ? 
                                        fPIDResponse->GetTPCResponse().GetMultiplicitySigmaCorrectionFast(dEdxPr * etaCorrPr, currEvtMultiplicity) : 1.;
    
    // Scale multiplicity correction factors, if desired (and multiplicity correction functions are to be used, otherwise it is not possible!)
    if (fPIDResponse->UseTPCMultiplicityCorrection() && TMath::Abs(fSystematicScalingMultCorrection - 1.0) > fgkEpsilon) {
      // Since we do not want to scale the splines with this, but only the multiplicity variation, only scale the deviation of the correction factor!
      // E.g. if we would have a flat mult depence fix at 1.0, we would shift the whole thing equal to shifting the splines by the same factor!
      
      multiplicityCorrEl = 1.0 + fSystematicScalingMultCorrection * (multiplicityCorrEl - 1.0);
      multiplicityCorrKa = 1.0 + fSystematicScalingMultCorrection * (multiplicityCorrKa - 1.0);
      multiplicityCorrPi = 1.0 + fSystematicScalingMultCorrection * (multiplicityCorrPi - 1.0);
      multiplicityCorrMu = fTakeIntoAccountMuons ? (1.0 + fSystematicScalingMultCorrection * (multiplicityCorrMu - 1.0)) : 1.0;
      multiplicityCorrPr = 1.0 + fSystematicScalingMultCorrection * (multiplicityCorrPr - 1.0);
    }
    
    // eta correction must be enabled in order to use the new sigma parametrisation maps. Since this is the absolute sigma
    // for a track calculated with the unscaled paramaters, we have to devide out dEdxExpectedEtaCorrected and then need
    // to scale with the multiplicitySigmaCorrFactor * fSystematicScalingEtaSigmaPara. In the end, one has to scale with the
    // (modified) dEdx to get the absolute sigma
    // This means there is no extra parameter for the multiplicitySigmaCorrFactor, but only for the sigma map itself.
    // This is valid, since it appears only as a product. One has to assume a larger systematic shift in case of additional
    // multiplicity dependence....
    
    Bool_t doSigmaSystematics = (TMath::Abs(fSystematicScalingEtaSigmaParaBelowThreshold - 1.0) > fgkEpsilon) ||
                                (TMath::Abs(fSystematicScalingEtaSigmaParaAboveThreshold - 1.0) > fgkEpsilon);
    
    
    Double_t dEdxElExpected = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kElectron, AliTPCPIDResponse::kdEdxDefault,
                                                                               kTRUE, kFALSE);
    Double_t systematicScalingEtaSigmaParaEl = 1.;
    if (doSigmaSystematics) {
      Double_t scaleFactor = 0.5 * (1. + TMath::Erf((dEdxElExpected - fSystematicScalingEtaSigmaParaThreshold) / 25.));
      systematicScalingEtaSigmaParaEl = fSystematicScalingEtaSigmaParaBelowThreshold * (1 - scaleFactor)
                                        + fSystematicScalingEtaSigmaParaAboveThreshold * scaleFactor;
    }
    Double_t sigmaRelEl = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kElectron, AliTPCPIDResponse::kdEdxDefault,
                                                                          kTRUE, kFALSE)
                          / dEdxElExpected * systematicScalingEtaSigmaParaEl * multiplicityCorrSigmaEl;
    
    
    Double_t dEdxKaExpected = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kKaon, AliTPCPIDResponse::kdEdxDefault, 
                                                                               kTRUE, kFALSE);
    Double_t systematicScalingEtaSigmaParaKa = 1.;
    if (doSigmaSystematics) {
      Double_t scaleFactor = 0.5 * (1. + TMath::Erf((dEdxKaExpected - fSystematicScalingEtaSigmaParaThreshold) / 25.));
      systematicScalingEtaSigmaParaKa = fSystematicScalingEtaSigmaParaBelowThreshold * (1 - scaleFactor)
                                        + fSystematicScalingEtaSigmaParaAboveThreshold * scaleFactor;
    }
    Double_t sigmaRelKa = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kKaon, AliTPCPIDResponse::kdEdxDefault,
                                                                          kTRUE, kFALSE)
                          / dEdxKaExpected * systematicScalingEtaSigmaParaKa * multiplicityCorrSigmaKa;
    
    
    Double_t dEdxPiExpected = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kPion, AliTPCPIDResponse::kdEdxDefault,
                                                                               kTRUE, kFALSE);
    Double_t systematicScalingEtaSigmaParaPi = 1.;
    if (doSigmaSystematics) {
      Double_t scaleFactor = 0.5 * (1. + TMath::Erf((dEdxPiExpected - fSystematicScalingEtaSigmaParaThreshold) / 25.));
      systematicScalingEtaSigmaParaPi = fSystematicScalingEtaSigmaParaBelowThreshold * (1 - scaleFactor)
                                        + fSystematicScalingEtaSigmaParaAboveThreshold * scaleFactor;
    }
    Double_t sigmaRelPi = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kPion, AliTPCPIDResponse::kdEdxDefault,
                                                                          kTRUE, kFALSE)
                          / dEdxPiExpected * systematicScalingEtaSigmaParaPi * multiplicityCorrSigmaPi;
    
    
    Double_t sigmaRelMu = 999.;
    if (fTakeIntoAccountMuons) {
      Double_t dEdxMuExpected = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kMuon, AliTPCPIDResponse::kdEdxDefault, 
                                                                                 kTRUE, kFALSE);
      Double_t systematicScalingEtaSigmaParaMu = 1.;
      if (doSigmaSystematics) {
        Double_t scaleFactor = 0.5 * (1. + TMath::Erf((dEdxMuExpected - fSystematicScalingEtaSigmaParaThreshold) / 25.));
        systematicScalingEtaSigmaParaMu = fSystematicScalingEtaSigmaParaBelowThreshold * (1 - scaleFactor)
                                          + fSystematicScalingEtaSigmaParaAboveThreshold * scaleFactor;
      }
      sigmaRelMu = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kMuon, AliTPCPIDResponse::kdEdxDefault, kTRUE, kFALSE)
                   / dEdxMuExpected * systematicScalingEtaSigmaParaMu * multiplicityCorrSigmaMu;
    }
    
    
    Double_t dEdxPrExpected = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault,
                                                                               kTRUE, kFALSE);
    Double_t systematicScalingEtaSigmaParaPr = 1.;
    if (doSigmaSystematics) {
      Double_t scaleFactor = 0.5 * (1. + TMath::Erf((dEdxPrExpected - fSystematicScalingEtaSigmaParaThreshold) / 25.));
      systematicScalingEtaSigmaParaPr = fSystematicScalingEtaSigmaParaBelowThreshold * (1 - scaleFactor)
                                        + fSystematicScalingEtaSigmaParaAboveThreshold * scaleFactor;
    }
    Double_t sigmaRelPr = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault,
                                                                          kTRUE, kFALSE)
                          / dEdxPrExpected * systematicScalingEtaSigmaParaPr * multiplicityCorrSigmaPr;
    
    // Now scale the (possibly modified) spline values with the (possibly modified) correction factors
    dEdxEl *= etaCorrEl * multiplicityCorrEl;
    dEdxKa *= etaCorrKa * multiplicityCorrKa;
    dEdxPi *= etaCorrPi * multiplicityCorrPi;
    dEdxMu *= etaCorrMu * multiplicityCorrMu;
    dEdxPr *= etaCorrPr * multiplicityCorrPr;
    
    // Finally, get the absolute sigma
    sigmaEl = sigmaRelEl * dEdxEl;
    sigmaKa = sigmaRelKa * dEdxKa;
    sigmaPi = sigmaRelPi * dEdxPi;
    sigmaMu = sigmaRelMu * dEdxMu;
    sigmaPr = sigmaRelPr * dEdxPr;
    
  }
  else {
    // No systematic studies on expected signal - just take it as it comes from the TPCPIDResponse
    dEdxEl = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kElectron, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    dEdxKa = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kKaon, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    dEdxPi = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kPion, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    dEdxMu = !fTakeIntoAccountMuons ? -1 :
                            fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kMuon, AliTPCPIDResponse::kdEdxDefault, 
                                                                             fPIDResponse->UseTPCEtaCorrection(),
                                                                             fPIDResponse->UseTPCMultiplicityCorrection());
    dEdxPr = fPIDResponse->GetTPCResponse().GetExpectedSignal(track, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    
    sigmaEl = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kElectron, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    sigmaKa = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kKaon, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    sigmaPi = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kPion, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    sigmaMu = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kMuon, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection());
    sigmaPr = fPIDResponse->GetTPCResponse().GetExpectedSigma(track, AliPID::kProton, AliTPCPIDResponse::kdEdxDefault, 
                                                              fPIDResponse->UseTPCEtaCorrection(),
                                                              fPIDResponse->UseTPCMultiplicityCorrection()); 
  }
  
  Double_t deltaPrimeElectron = (dEdxEl > 0) ? dEdxTPC / dEdxEl : -1;
  if (dEdxEl <= 0)  {
    Printf("Error: Expected TPC signal <= 0 for electron hypothesis");
    return kFALSE;
  }
    
  Double_t deltaPrimeKaon = (dEdxKa > 0) ? dEdxTPC / dEdxKa : -1;
  if (dEdxKa <= 0)  {
    Printf("Error: Expected TPC signal <= 0 for kaon hypothesis");
    return kFALSE;
  }
  
  Double_t deltaPrimePion = (dEdxPi > 0) ? dEdxTPC / dEdxPi : -1;
  if (dEdxPi <= 0)  {
    Printf("Error: Expected TPC signal <= 0 for pion hypothesis");
    return kFALSE;
  }
  
  Double_t deltaPrimeProton = (dEdxPr > 0) ? dEdxTPC / dEdxPr : -1;
  if (dEdxPr <= 0)  {
    Printf("Error: Expected TPC signal <= 0 for proton hypothesis");
    return kFALSE;
  }
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: ProcessTrack -> Compute probabilities\n", (char*)__FILE__, __LINE__);
  
  
  // Use probabilities to weigh the response generation for the different species.
  // Also determine the most probable particle type.
  Double_t prob[AliPID::kSPECIESC];
  for (Int_t i = 0; i < AliPID::kSPECIESC; i++)
    prob[i] = 0;

  fPIDcombined->ComputeProbabilities(track, fPIDResponse, prob);
  
  // If muons are not to be taken into account, just set their probability to zero and normalise the remaining probabilities later
  if (!fTakeIntoAccountMuons)
    prob[AliPID::kMuon] = 0;
  
  // Priors might cause problems in case of mismatches, i.e. mismatch particles will be identified as pions.
  // Can be easily caught for low p_TPC by just setting pion (and muon) probs to zero, if dEdx is larger than
  // expected dEdx of electrons and kaons
  if (pTPC < 1. && dEdxTPC > dEdxEl && dEdxTPC > dEdxKa) {
    prob[AliPID::kMuon] = 0;
    prob[AliPID::kPion] = 0;
  }
  
  
  // Bug: One can set the number of species for PIDcombined, but PIDcombined will call PIDresponse, which writes without testing
  // the probs for kSPECIESC (including light nuclei) into the array.
  // In this case, when only kSPECIES are considered, the probabilities have to be rescaled!
  
  // Exceptions:
  // 1. If the most probable PID is a light nucleus and above expected dEdx + 5 sigma of el to be sure not to mix up things in the
  //    high-pT region (also contribution there completely negligable!)
  // 2. If dEdx is larger than the expected dEdx + 5 sigma of el and pr, it is most likely a light nucleus
  //    (if dEdx is more than 5 sigma away from expectation, flat TPC probs are set... and the light nuclei splines are not
  //     too accurate)
  // In these cases:
  // The highest expected dEdx is either for pr or for el. Assign 100% probability to the species with highest expected dEdx then.
  // In all other cases: Throw away light nuclei probs and rescale other probs to 100%.
  
  // Find most probable species for the ID 
  Int_t maxIndex = TMath::LocMax(AliPID::kSPECIESC, prob);

  if ((prob[maxIndex] > 0 && maxIndex >= AliPID::kSPECIES && dEdxTPC > dEdxEl + 5. * sigmaEl) ||
      (dEdxTPC > dEdxEl + 5. * sigmaEl && dEdxTPC > dEdxPr + 5. * sigmaPr)) {
    for (Int_t i = 0; i < AliPID::kSPECIESC; i++)
      prob[i] = 0;
    
    if (dEdxEl > dEdxPr) {
      prob[AliPID::kElectron] = 1.;
      maxIndex = AliPID::kElectron;
    }
    else {
      prob[AliPID::kProton] = 1.;
      maxIndex = AliPID::kProton;
    }
  }
  else {
    for (Int_t i = AliPID::kSPECIES; i < AliPID::kSPECIESC; i++)
      prob[i] = 0;
    
    Double_t probSum = 0.;
    for (Int_t i = 0; i < AliPID::kSPECIES; i++)
      probSum += prob[i];
    
    if (probSum > 0) {
      for (Int_t i = 0; i < AliPID::kSPECIES; i++)
        prob[i] /= probSum;
    }
    
    // If all probabilities are equal (should only happen if no priors are used), set most probable PID to pion
    // because LocMax returns just the first maximal value (i.e. AliPID::kElectron)
    if (TMath::Abs(prob[maxIndex] - 1. / AliPID::kSPECIES) < 1e-5)
      maxIndex = AliPID::kPion;
    
    // In all other cases, the maximum remains untouched from the scaling (and is < AliPID::kSPECIES by construction)
  }
  
  if (fDoDeDxCheck) {
    // Generate the expected responses in DeltaPrime and translate to real dEdx. Only take responses for exactly that species
    // (i.e. with pre-PID)
    
    Int_t numGenEntries = fgkMaxNumGenEntries; // fgkMaxNumGenEntries = 500
    
    ErrorCode errCode = kNoErrors;
  
    if(fDebug > 2)
      printf("File: %s, Line: %d: ProcessTrack -> Generate Responses for dEdx check\n", (char*)__FILE__, __LINE__);
    
    // Electrons
    errCode = GenerateDetectorResponse(errCode, 1., sigmaEl / dEdxEl, fGenRespElDeltaPrimeEl, numGenEntries);

    // Kaons
    errCode = GenerateDetectorResponse(errCode, 1., sigmaKa / dEdxKa, fGenRespKaDeltaPrimeKa, numGenEntries);

    // Pions
    errCode = GenerateDetectorResponse(errCode, 1., sigmaPi / dEdxPi, fGenRespPiDeltaPrimePi, numGenEntries);

    // Protons
    errCode = GenerateDetectorResponse(errCode, 1., sigmaPr / dEdxPr, fGenRespPrDeltaPrimePr, numGenEntries);
    
    if (errCode == kNoErrors) {
      Double_t genEntry[kDeDxCheckNumAxes];
      genEntry[kDeDxCheckJetPt] = jetPt;
      genEntry[kDeDxCheckEtaAbs] = TMath::Abs(track->Eta());
      genEntry[kDeDxCheckP] = pTPC;
      
        
      for (Int_t n = 0; n < numGenEntries; n++)  {
        // If no MC info is available or shall not be used, use weighting with priors to generate entries for the different species
        Double_t rnd = fRandom->Rndm(); // Produce uniformly distributed floating point in ]0, 1]
        
        // Consider generated response as originating from...
        if (rnd <= prob[AliPID::kElectron]) {
          genEntry[kDeDxCheckPID] = 0; // ... an electron
          genEntry[kDeDxCheckDeDx] = fGenRespElDeltaPrimeEl[n] * dEdxEl;
        }
        else if (rnd <= prob[AliPID::kElectron] + prob[AliPID::kKaon]) {
          genEntry[kDeDxCheckPID] = 1;  // ... a kaon
          genEntry[kDeDxCheckDeDx] = fGenRespKaDeltaPrimeKa[n] * dEdxKa;
        }
        else if (rnd <= prob[AliPID::kElectron] + prob[AliPID::kKaon] + prob[AliPID::kMuon] + prob[AliPID::kPion]) {
          genEntry[kDeDxCheckPID] = 2;  // ... a pion (or a muon)
          genEntry[kDeDxCheckDeDx] = fGenRespPiDeltaPrimePi[n] * dEdxPi;
        }
        else {
          genEntry[kDeDxCheckPID] = 3;  // ... a proton
          genEntry[kDeDxCheckDeDx] = fGenRespPrDeltaPrimePr[n] * dEdxPr;
        }
     
        fDeDxCheck->Fill(genEntry);
      }
    }
    
    if(fDebug > 2)
      printf("File: %s, Line: %d: ProcessTrack -> Generate Responses for dEdx check done\n", (char*)__FILE__, __LINE__);
  }
  
  if (fDoPtResolution) {
    // Check shared clusters, which is done together with the pT resolution
    Double_t qaEntry[kQASharedClsNumAxes];
    qaEntry[kQASharedClsJetPt] = jetPt;
    qaEntry[kQASharedClsPt] = pT;
    qaEntry[kDeDxCheckP] = pTPC;
    qaEntry[kQASharedClsNumSharedCls] = track->GetTPCSharedMapPtr()->CountBits();
    
    Int_t iRowInd = -1;
    // iRowInd == -1 for "all rows w/o multiple counting"
    qaEntry[kQASharedClsPadRow] = iRowInd;
    fQASharedCls->Fill(qaEntry);

    // Fill hist for every pad row with shared cluster
    for (iRowInd = 0; iRowInd < 159; iRowInd++) {
      if (track->GetTPCSharedMapPtr()->TestBitNumber(iRowInd)) {
        qaEntry[kQASharedClsPadRow] = iRowInd;
        fQASharedCls->Fill(qaEntry);
      }
    }
  }
  
  if (!fDoPID)
    return kTRUE;
  
  if (!isMC) {
    // Clean up the most probable PID for low momenta (not an issue for the probabilities, since fractions small,
    // but to get clean (and nice looking) templates (if most probable PID is used instead of generated responses), it should be done).
    // Problem: If more than 5 sigma away (and since priors also included), most probable PID for dEdx around protons could be pions.
    // Idea: Only clean selection for K and p possible. So, just take for the most probable PID the probs from TPC only calculated
    // by hand without restriction to 5 sigma and without priors. This will not affect the template generation, but afterwards one
    // can replace the K and p templates with the most probable PID distributions, so all other species templates remain the same.
    // I.e. it doesn't hurt if the most probable PID is distributed incorrectly between el, pi, mu.
    Bool_t maxIndexSetManually = kFALSE;
    
    if (pTPC < 1.) {
      Double_t probManualTPC[AliPID::kSPECIES];
       for (Int_t i = 0; i < AliPID::kSPECIES; i++)
        probManualTPC[i] = 0;
      
      probManualTPC[AliPID::kElectron] = TMath::Exp(-0.5*(dEdxTPC-dEdxEl)*(dEdxTPC-dEdxEl)/(sigmaEl*sigmaEl))/sigmaEl;
      // Muons are not important here, just ignore and save processing time
      probManualTPC[AliPID::kMuon] = 0.;//TMath::Exp(-0.5*(dEdxTPC-dEdxMu)*(dEdxTPC-dEdxMu)/(sigmaMu*sigmaMu))/sigmaMu;
      probManualTPC[AliPID::kPion] = TMath::Exp(-0.5*(dEdxTPC-dEdxPi)*(dEdxTPC-dEdxPi)/(sigmaPi*sigmaPi))/sigmaPi;
      probManualTPC[AliPID::kKaon] = TMath::Exp(-0.5*(dEdxTPC-dEdxKa)*(dEdxTPC-dEdxKa)/(sigmaKa*sigmaKa))/sigmaKa;
      probManualTPC[AliPID::kProton] = TMath::Exp(-0.5*(dEdxTPC-dEdxPr)*(dEdxTPC-dEdxPr)/(sigmaPr*sigmaPr))/sigmaPr;
      
      const Int_t maxIndexManualTPC = TMath::LocMax(AliPID::kSPECIES, probManualTPC);
      // Should always be > 0, but in case the dEdx is far off such that the machine accuracy sets every prob to zero,
      // better take the "old" result
      if (probManualTPC[maxIndexManualTPC] > 0.)
        maxIndex = maxIndexManualTPC;
      
      maxIndexSetManually = kTRUE;
    }
    
    
    // Translate from AliPID numbering to numbering of this class
    if (prob[maxIndex] > 0 || maxIndexSetManually) {
      if (maxIndex == AliPID::kElectron)
        binMC = 0;
      else if (maxIndex == AliPID::kKaon)
        binMC = 1;
      else if (maxIndex == AliPID::kMuon)
        binMC = 2;
      else if (maxIndex == AliPID::kPion)
        binMC = 3;
      else if (maxIndex == AliPID::kProton)
        binMC = 4;
      else
        binMC = -1;
    }
    else {
      // Only take track into account for expectation values, if valid pid response is available.. Otherwise: Set to underflow bin.
      binMC = -1;
    }
  }
  
  /*
  //For testing: Swap p<->pT to analyse pure p-dependence => Needs to be removed later
  Double_t temp = pT;
  pT = pTPC;
  pTPC = temp;
  */
  
  TOFpidInfo tofPIDinfo = GetTOFType(track, fTOFmode);
  
  Double_t entry[fStoreAdditionalJetInformation ? kDataNumAxes : kDataNumAxes - fgkNumJetAxes];
  entry[kDataMCID] = binMC;
  entry[kDataSelectSpecies] = 0;
  entry[kDataPt] = pT;
  entry[kDataDeltaPrimeSpecies] = deltaPrimeElectron;
  entry[kDataCentrality] = centralityPercentile;
  
  if (fStoreAdditionalJetInformation) {
    entry[kDataJetPt] = jetPt;
    entry[kDataZ] = z;
    entry[kDataXi] = xi;
  }
  
  entry[GetIndexOfChargeAxisData()] = trackCharge;
  entry[GetIndexOfTOFpidInfoAxisData()] = tofPIDinfo;
  
  fhPIDdataAll->Fill(entry);
  
  entry[kDataSelectSpecies] = 1;
  entry[kDataDeltaPrimeSpecies] = deltaPrimeKaon;
  fhPIDdataAll->Fill(entry);
    
  entry[kDataSelectSpecies] = 2;
  entry[kDataDeltaPrimeSpecies] = deltaPrimePion;
  fhPIDdataAll->Fill(entry);
    
  entry[kDataSelectSpecies] = 3;
  entry[kDataDeltaPrimeSpecies] = deltaPrimeProton;
  fhPIDdataAll->Fill(entry);
  
  
  // Construct the expected shape for the transition p -> pT
  
  Double_t genEntry[fStoreAdditionalJetInformation ? kGenNumAxes : kGenNumAxes - fgkNumJetAxes];
  genEntry[kGenMCID] = binMC;
  genEntry[kGenSelectSpecies] = 0;
  genEntry[kGenPt] = pT;
  genEntry[kGenDeltaPrimeSpecies] = -999;
  genEntry[kGenCentrality] = centralityPercentile;
  
  if (fStoreAdditionalJetInformation) {
    genEntry[kGenJetPt] = jetPt;
    genEntry[kGenZ] = z;
    genEntry[kGenXi] = xi;
  }
  
  genEntry[GetIndexOfChargeAxisGen()] = trackCharge;
  genEntry[GetIndexOfTOFpidInfoAxisGen()] = tofPIDinfo;
  
  // Generate numGenEntries "responses" with fluctuations around the expected values.
  // fgkMaxNumGenEntries = 500 turned out to give reasonable templates even for highest track pT in 15-20 GeV/c jet pT bin.
  Int_t numGenEntries = fgkMaxNumGenEntries; // fgkMaxNumGenEntries = 500
  
  /*OLD: Different number of responses depending on pT and jet pT for fgkMaxNumGenEntries = 1000
   * => Problem: If threshold to higher number of responses inside a bin (or after rebinning), then the template
   * is biased to the higher pT.
  // Generate numGenEntries "responses" with fluctuations around the expected values.
  // The higher the (transverse) momentum, the more "responses" will be generated in order not to run out of statistics too fast.
  Int_t numGenEntries = 10;
 
  // Jets have even worse statistics, therefore, scale numGenEntries further
  if (jetPt >= 40)
    numGenEntries *= 20;
  else if (jetPt >= 20)
    numGenEntries *= 10;
  else if (jetPt >= 10)
    numGenEntries *= 2;
  
  
  
  // Do not generate more entries than available in memory!
  if (numGenEntries > fgkMaxNumGenEntries)// fgkMaxNumGenEntries = 1000
    numGenEntries = fgkMaxNumGenEntries;
  */
  
  
  ErrorCode errCode = kNoErrors;
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: ProcessTrack -> Generate Responses\n", (char*)__FILE__, __LINE__);
  
  // Electrons
  errCode = GenerateDetectorResponse(errCode, 1.,              sigmaEl / dEdxEl, fGenRespElDeltaPrimeEl, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxEl / dEdxKa, sigmaEl / dEdxKa, fGenRespElDeltaPrimeKa, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxEl / dEdxPi, sigmaEl / dEdxPi, fGenRespElDeltaPrimePi, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxEl / dEdxPr, sigmaEl / dEdxPr, fGenRespElDeltaPrimePr, numGenEntries);

  // Kaons
  errCode = GenerateDetectorResponse(errCode, dEdxKa / dEdxEl, sigmaKa / dEdxEl, fGenRespKaDeltaPrimeEl, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, 1.,              sigmaKa / dEdxKa, fGenRespKaDeltaPrimeKa, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxKa / dEdxPi, sigmaKa / dEdxPi, fGenRespKaDeltaPrimePi, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxKa / dEdxPr, sigmaKa / dEdxPr, fGenRespKaDeltaPrimePr, numGenEntries);

  // Pions
  errCode = GenerateDetectorResponse(errCode, dEdxPi / dEdxEl, sigmaPi / dEdxEl, fGenRespPiDeltaPrimeEl, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxPi / dEdxKa, sigmaPi / dEdxKa, fGenRespPiDeltaPrimeKa, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, 1.,              sigmaPi / dEdxPi, fGenRespPiDeltaPrimePi, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxPi / dEdxPr, sigmaPi / dEdxPr, fGenRespPiDeltaPrimePr, numGenEntries);

  // Muons, if desired
  if (fTakeIntoAccountMuons) {
    errCode = GenerateDetectorResponse(errCode, dEdxMu / dEdxEl, sigmaMu / dEdxEl, fGenRespMuDeltaPrimeEl, numGenEntries);
    errCode = GenerateDetectorResponse(errCode, dEdxMu / dEdxKa, sigmaMu / dEdxKa, fGenRespMuDeltaPrimeKa, numGenEntries);
    errCode = GenerateDetectorResponse(errCode, dEdxMu / dEdxPi, sigmaMu / dEdxPi, fGenRespMuDeltaPrimePi, numGenEntries);
    errCode = GenerateDetectorResponse(errCode, dEdxMu / dEdxPr, sigmaMu / dEdxPr, fGenRespMuDeltaPrimePr, numGenEntries);
  }
  
  // Protons
  errCode = GenerateDetectorResponse(errCode, dEdxPr / dEdxEl, sigmaPr / dEdxEl, fGenRespPrDeltaPrimeEl, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxPr / dEdxKa, sigmaPr / dEdxKa, fGenRespPrDeltaPrimeKa, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, dEdxPr / dEdxPi, sigmaPr / dEdxPi, fGenRespPrDeltaPrimePi, numGenEntries);
  errCode = GenerateDetectorResponse(errCode, 1.,              sigmaPr / dEdxPr, fGenRespPrDeltaPrimePr, numGenEntries);
  
  if (errCode != kNoErrors) {
    if (errCode == kWarning && fDebug > 1) {
      Printf("Warning: Questionable detector response for track, most likely due to very low number of PID clusters! Debug output (dEdx_expected, sigma_expected):");
    }
    else 
      Printf("Error: Failed to generate detector response for track - skipped! Debug output (dEdx_expected, sigma_expected):");
    
    if (fDebug > 1) {
      Printf("Pr: %e, %e", dEdxPr, sigmaPr);
      Printf("Pi: %e, %e", dEdxPi, sigmaPi);
      Printf("El: %e, %e", dEdxEl, sigmaEl);
      Printf("Mu: %e, %e", dEdxMu, sigmaMu);
      Printf("Ka: %e, %e", dEdxKa, sigmaKa);
      Printf("track: dEdx %f, pTPC %f, eta %f, ncl %d\n", track->GetTPCsignal(), track->GetTPCmomentum(), track->Eta(), 
            track->GetTPCsignalN());
    }
    
    if (errCode != kWarning) {
      return kFALSE;// Skip generated response in case of error
    }
  }
  
  for (Int_t n = 0; n < numGenEntries; n++)  {
    if (!isMC || !fUseMCidForGeneration) {
      // If no MC info is available or shall not be used, use weighting with priors to generate entries for the different species
      Double_t rnd = fRandom->Rndm(); // Produce uniformly distributed floating point in ]0, 1]
      
      // Consider generated response as originating from...
      if (rnd <= prob[AliPID::kElectron])
        genEntry[kGenMCID] = 0; // ... an electron
      else if (rnd <= prob[AliPID::kElectron] + prob[AliPID::kKaon])
        genEntry[kGenMCID] = 1;  // ... a kaon
      else if (rnd <=  prob[AliPID::kElectron] + prob[AliPID::kKaon] + prob[AliPID::kMuon])
        genEntry[kGenMCID] = 2;  // ... a muon -> NOTE: prob[AliPID::kMuon] = 0 in case of fTakeIntoAccountMuons = kFALSE
      else if (rnd <= prob[AliPID::kElectron] + prob[AliPID::kKaon] + prob[AliPID::kMuon] + prob[AliPID::kPion])
        genEntry[kGenMCID] = 3;  // ... a pion
      else
        genEntry[kGenMCID] = 4;  // ... a proton
    }
    
    // Electrons
    genEntry[kGenSelectSpecies] = 0;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespElDeltaPrimeEl[n];
    fhGenEl->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 1;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespElDeltaPrimeKa[n];
    fhGenEl->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 2;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespElDeltaPrimePi[n];
    fhGenEl->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 3;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespElDeltaPrimePr[n];
    fhGenEl->Fill(genEntry);
    
    // Kaons
    genEntry[kGenSelectSpecies] = 0;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespKaDeltaPrimeEl[n];
    fhGenKa->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 1;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespKaDeltaPrimeKa[n];
    fhGenKa->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 2;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespKaDeltaPrimePi[n];
    fhGenKa->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 3;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespKaDeltaPrimePr[n];
    fhGenKa->Fill(genEntry);
    
    // Pions
    genEntry[kGenSelectSpecies] = 0;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPiDeltaPrimeEl[n];
    fhGenPi->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 1;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPiDeltaPrimeKa[n];
    fhGenPi->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 2;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPiDeltaPrimePi[n];
    fhGenPi->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 3;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPiDeltaPrimePr[n];
    fhGenPi->Fill(genEntry);
    
    if (fTakeIntoAccountMuons) {
      // Muons, if desired
      genEntry[kGenSelectSpecies] = 0;
      genEntry[kGenDeltaPrimeSpecies] = fGenRespMuDeltaPrimeEl[n];
      fhGenMu->Fill(genEntry);
      
      genEntry[kGenSelectSpecies] = 1;
      genEntry[kGenDeltaPrimeSpecies] = fGenRespMuDeltaPrimeKa[n];
      fhGenMu->Fill(genEntry);
      
      genEntry[kGenSelectSpecies] = 2;
      genEntry[kGenDeltaPrimeSpecies] = fGenRespMuDeltaPrimePi[n];
      fhGenMu->Fill(genEntry);
      
      genEntry[kGenSelectSpecies] = 3;
      genEntry[kGenDeltaPrimeSpecies] = fGenRespMuDeltaPrimePr[n];
      fhGenMu->Fill(genEntry);
    }
    
    // Protons
    genEntry[kGenSelectSpecies] = 0;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPrDeltaPrimeEl[n];
    fhGenPr->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 1;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPrDeltaPrimeKa[n];
    fhGenPr->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 2;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPrDeltaPrimePi[n];
    fhGenPr->Fill(genEntry);
    
    genEntry[kGenSelectSpecies] = 3;
    genEntry[kGenDeltaPrimeSpecies] = fGenRespPrDeltaPrimePr[n];
    fhGenPr->Fill(genEntry);
  }
  
  if(fDebug > 2)
    printf("File: %s, Line: %d: ProcessTrack -> Done\n", (char*)__FILE__, __LINE__);
  
  return kTRUE;
}


//_____________________________________________________________________________
Bool_t AliAnalysisTaskPID::SetConvolutedGaussLambdaParameter(Double_t lambda)
{
  // Set the lambda parameter of the convolution to the desired value. Automatically
  // calculates the parameters for the transition (restricted) gauss -> convoluted gauss.
  fConvolutedGaussTransitionPars[2] = lambda;
  
  // Save old parameters and settings of function to restore them later:
  Double_t* oldFuncParams = new Double_t[fkConvolutedGausNPar];
  for (Int_t i = 0; i < fkConvolutedGausNPar; i++)
    oldFuncParams[i] = fConvolutedGausDeltaPrime->GetParameter(i);
  Int_t oldFuncNpx = fConvolutedGausDeltaPrime->GetNpx();
  Double_t oldFuncRangeLow = 0, oldFuncRangeUp = 100;
  fConvolutedGausDeltaPrime->GetRange(oldFuncRangeLow, oldFuncRangeUp);
    
  // Choose some sufficiently large range
  const Double_t rangeStart = 0.5;
  const Double_t rangeEnd = 2.0;
  
  // To get the parameters for the transition, just choose arbitrarily input parameters for mu and sigma
  // (it makes sense to choose typical values). The ratio sigma_gauss / sigma_convolution is independent
  // of mu and as well the difference mu_gauss - mu_convolution.
  Double_t muInput = 1.0;
  Double_t sigmaInput = fgkSigmaReferenceForTransitionPars;
  
  
  // Step 1: Generate distribution with input parameters
  const Int_t nPar = 3;
  Double_t inputPar[nPar] = { muInput, sigmaInput, lambda };

  TH1D* hInput = new TH1D("hInput", "Input distribution", 2000, rangeStart, rangeEnd);

  fConvolutedGausDeltaPrime->SetParameters(inputPar);
  fConvolutedGausDeltaPrime->SetRange(rangeStart, rangeEnd);
  fConvolutedGausDeltaPrime->SetNpx(2000);

  /*OLD
  // The resolution and mean of the AliPIDResponse are determined in finite intervals
  // of ncl (also second order effects due to finite dEdx and tanTheta).
  // Take this into account for the transition parameters via assuming an approximately flat
  // distritubtion in ncl in this interval.
  // NOTE: The ncl interval should be the same as the one used for the sigma map creation!
  const Int_t nclStart = 151;
  const Int_t nclEnd = 160;
  const Int_t nclSteps = (nclEnd - nclStart) + 1;
  for (Int_t ncl = nclStart; ncl <= nclEnd; ncl++) {
    // Resolution scales with 1/sqrt(ncl)
    fConvolutedGausDeltaPrime->SetParameter(1, inputPar[1] * sqrt(nclEnd) / sqrt(ncl));
    TH1* hProbDensity = fConvolutedGausDeltaPrime->GetHistogram();
    
    for (Int_t i = 0; i < 50000000 / nclSteps; i++)  
      hInput->Fill(hProbDensity->GetRandom());
  }
  */
  
  TH1* hProbDensity = fConvolutedGausDeltaPrime->GetHistogram();
  
  for (Int_t i = 0; i < 50000000; i++)
    hInput->Fill(hProbDensity->GetRandom());
  
  // Step 2: Fit generated distribution with restricted gaussian
  Int_t maxBin = hInput->GetMaximumBin();
  Double_t max = hInput->GetBinContent(maxBin);
  
  UChar_t usedBins = 1;
  if (maxBin > 1) {
    max += hInput->GetBinContent(maxBin - 1);
    usedBins++;
  }
  if (maxBin < hInput->GetNbinsX()) {
    max += hInput->GetBinContent(maxBin + 1);
    usedBins++;
  }
  max /= usedBins;
  
  // NOTE: The range (<-> fraction of maximum) should be the same
  // as for the spline and eta maps creation
  const Double_t lowThreshold = hInput->GetXaxis()->GetBinLowEdge(hInput->FindFirstBinAbove(0.1 * max));
  const Double_t highThreshold = hInput->GetXaxis()->GetBinUpEdge(hInput->FindLastBinAbove(0.1 * max));
  
  TFitResultPtr fitResGaussFirstStep = hInput->Fit("gaus", "QNRS", "", lowThreshold, highThreshold);
  
  TFitResultPtr fitResGauss;
  
  if ((Int_t)fitResGaussFirstStep == 0) {
    TF1 fGauss("fGauss", "[0]*TMath::Gaus(x, [1], [2], 1)", rangeStart, rangeEnd);
    fGauss.SetParameter(0, fitResGaussFirstStep->GetParams()[0]);
    fGauss.SetParError(0, fitResGaussFirstStep->GetErrors()[0]);
    fGauss.SetParameter(2, fitResGaussFirstStep->GetParams()[2]);
    fGauss.SetParError(2, fitResGaussFirstStep->GetErrors()[2]);

    fGauss.FixParameter(1, fitResGaussFirstStep->GetParams()[1]);
    fitResGauss = hInput->Fit(&fGauss, "QNS", "s", rangeStart, rangeEnd);
  }
  else {
    fitResGauss = hInput->Fit("gaus", "QNRS", "same", rangeStart, rangeEnd);
  }
  //OLD TFitResultPtr fitResGauss = hInput->Fit("gaus", "QNRS", "", hInput->GetXaxis()->GetBinLowEdge(hInput->FindFirstBinAbove(0.1 * max)),
  //                                        hInput->GetXaxis()->GetBinUpEdge(hInput->FindLastBinAbove(0.1 * max)));
  
  
  // Step 3: Use parameters from gaussian fit to obtain parameters for the transition "restricted gauss" -> "convoluted gauss"
  
  // 3.1 The ratio sigmaInput / sigma_gaussFit ONLY depends on lambda (which is fixed per period) -> Calculate this first
  // for an arbitrary (here: typical) sigma. The ratio is then ~the same for ALL sigma for given lambda!
  if ((Int_t)fitResGauss != 0) {
    AliError("Not able to calculate parameters for the transition \"restricted gauss\" -> \"convoluted gauss\": Gauss Fit failed!\n");
    fConvolutedGausDeltaPrime->SetParameters(oldFuncParams);
    fConvolutedGausDeltaPrime->SetNpx(oldFuncNpx);
    fConvolutedGausDeltaPrime->SetRange(oldFuncRangeLow, oldFuncRangeUp);
    
    delete hInput;
    delete [] oldFuncParams;
    
    return kFALSE; 
  }
  
  if (fitResGauss->GetParams()[2] <= 0) {
    AliError("Not able to calculate parameters for the transition \"restricted gauss\" -> \"convoluted gauss\": Sigma of gauss fit <= 0!\n");
    fConvolutedGausDeltaPrime->SetParameters(oldFuncParams);
    fConvolutedGausDeltaPrime->SetNpx(oldFuncNpx);
    fConvolutedGausDeltaPrime->SetRange(oldFuncRangeLow, oldFuncRangeUp);
    
    delete hInput;
    delete [] oldFuncParams;
    
    return kFALSE;
  }
  
  // sigma correction factor
  fConvolutedGaussTransitionPars[1] = sigmaInput / fitResGauss->GetParams()[2];
  
  // 3.2 Now that sigma und lambda are determined, one can calculate mu by shifting the maximum to the desired position,
  // i.e. the maximum of the input distribution should coincide with that of the re-calculated distribution,
  // which is achieved by getting the same mu for the same sigma.
  // NOTE: For fixed lambda, the shift is proportional to sigma and independent of mu!
  // So, one can calculate the shift for an arbitrary fixed (here: typical)
  // sigma and then simply use this shift for any other sigma by scaling it correspondingly!!!
  
  // Mu shift correction:
  // Shift in mu (difference between mean of gauss and mean of convolution) is proportional to sigma!
  // Thus, choose a reference sigma (typical -> 0.05), such that for arbitrary sigma one can simple scale 
  // this shift correction with sigma / referenceSigma.
  fConvolutedGaussTransitionPars[0] = (fitResGauss->GetParams()[1] - muInput);
  
  
  /*Changed on 03.07.2013
  
  // Maximum of fConvolutedGausDeltaPrime should agree with maximum of input
  Double_t par[nPar] = { fitResGauss->GetParams()[1], // just as a guess of the maximum position
                         sigmaInput,
                         lambda };
                         
  fConvolutedGausDeltaPrime->SetParameters(par);
  
  Double_t maxXInput = fConvolutedGausDeltaPrime->GetMaximumX(TMath::Max(0.001, muInput - 3. * sigmaInput),
                                                              muInput + 10. * sigmaInput,
                                                              0.0001);
                                                              
  // Maximum shifts proportional to sigma and is linear in mu (~mean of gauss)
  // Maximum should be typically located within [gaussMean, gaussMean + 3 gaussSigma]. 
  // -> Larger search range for safety reasons (also: sigma and/or mean might be not 100% accurate).
  Double_t maxXconvoluted = fConvolutedGausDeltaPrime->GetMaximumX(TMath::Max(0.001, 
                                                                              fitResGauss->GetParams()[1] - 3. * fitResGauss->GetParams()[2]),
                                                                   fitResGauss->GetParams()[1] + 10. * fitResGauss->GetParams()[2],
                                                                   0.0001);
  if (maxXconvoluted <= 0) {
    AliError("Not able to calculate parameters for the transition \"restricted gauss\" -> \"convoluted gauss\": Maximum of fConvolutedGausDeltaPrime <= 0!\n");
    
    fConvolutedGausDeltaPrime->SetParameters(oldFuncParams);
    fConvolutedGausDeltaPrime->SetNpx(oldFuncNpx);
    fConvolutedGausDeltaPrime->SetRange(oldFuncRangeLow, oldFuncRangeUp);
    
    delete hInput;
    delete [] oldFuncParams;
    
    return kFALSE;
  }
  
  // maxX perfectly shifts as par[0] (scaled by sigma) -> Can shift maxX to input value.
  // Mu shift correction:
  fConvolutedGaussTransitionPars[0] = maxXconvoluted - maxXInput;
  */
  
  
  
  fConvolutedGausDeltaPrime->SetParameters(oldFuncParams);
  fConvolutedGausDeltaPrime->SetNpx(oldFuncNpx);
  fConvolutedGausDeltaPrime->SetRange(oldFuncRangeLow, oldFuncRangeUp);
  
  delete hInput;
  delete [] oldFuncParams;

  return kTRUE;
}


//_____________________________________________________________________________
AliAnalysisTaskPID::ErrorCode AliAnalysisTaskPID::SetParamsForConvolutedGaus(Double_t gausMean, Double_t gausSigma) 
{
  // Set parameters for convoluted gauss using parameters for a pure gaussian.
  // If SetConvolutedGaussLambdaParameter has not been called before to initialise the translation parameters,
  // some default parameters will be used and an error will show up.
  
  if(fDebug > 1)
    printf("File: %s, Line: %d: SetParamsForConvolutedGaus: mean %e, sigma %e\n", (char*)__FILE__, __LINE__, gausMean, gausSigma);
  
  if (fConvolutedGaussTransitionPars[1] < -998) {
    AliError("Transition parameters not initialised! Default parameters will be used. Please call SetConvolutedGaussLambdaParameter(...) before any calculations!");
    SetConvolutedGaussLambdaParameter(2.0);
    AliError(Form("Parameters set to:\n[0]: %f\n[1]: %f\n[2]: %f\n", fConvolutedGaussTransitionPars[0],           
                  fConvolutedGaussTransitionPars[1], fConvolutedGaussTransitionPars[2]));
  }
  
  Double_t par[fkConvolutedGausNPar];
  par[2] = fConvolutedGaussTransitionPars[2];
  par[1] = fConvolutedGaussTransitionPars[1] * gausSigma;
  // maxX perfectly shifts as par[0] (scaled by sigma) -> Can shift maxX so that it sits at the right place.
  par[0] = gausMean - fConvolutedGaussTransitionPars[0] * par[1] / fgkSigmaReferenceForTransitionPars;
  
  ErrorCode errCode = kNoErrors;
  fConvolutedGausDeltaPrime->SetParameters(par);
  
  if(fDebug > 3)
    printf("File: %s, Line: %d: SetParamsForConvolutedGaus -> Parameters set to: %e, %e, %e (transition pars: %e, %e, %e, %e)\n",
           (char*)__FILE__, __LINE__, par[0], par[1], par[2], fConvolutedGaussTransitionPars[0], fConvolutedGaussTransitionPars[1], 
           fConvolutedGaussTransitionPars[2], fgkSigmaReferenceForTransitionPars);
  
  fConvolutedGausDeltaPrime->SetNpx(20); // Small value speeds up following algorithm (valid, since extrema far apart)

  // Accuracy of 10^-5 is enough to get 0.1% precise peak for MIPS w.r.t. to dEdx = 2000 of protons
  // (should boost up the algorithm, because 10^-10 is the default value!)
  Double_t maxX= fConvolutedGausDeltaPrime->GetMaximumX(TMath::Max(0.001, gausMean - 2. * gausSigma), 
                                                        gausMean + 6. * gausSigma, 1.0E-5);
  
  const Double_t maximum = fConvolutedGausDeltaPrime->Eval(maxX);
  const Double_t maximumFraction = maximum * fAccuracyNonGaussianTail;
  
  // Estimate lower boundary for subsequent search:
  Double_t lowBoundSearchBoundLow = TMath::Max(1e-4, maxX - 5. * gausSigma);
  Double_t lowBoundSearchBoundUp = maxX;
  
  Bool_t lowerBoundaryFixedAtZero = kFALSE;
  
  while (fConvolutedGausDeltaPrime->Eval(lowBoundSearchBoundLow) >= maximumFraction) {
    if (lowBoundSearchBoundLow <= 0) {
      // This should only happen to low dEdx particles with very few clusters and therefore large sigma, such that the gauss goes below zero deltaPrime
      if (maximum <= 0) { // Something is weired
        printf("Error generating signal: maximum is <= 0!\n");
        return kError;
      }
      else {
        const Double_t valueAtZero = fConvolutedGausDeltaPrime->Eval(0);
        if (valueAtZero / maximum > 0.05) {
          // Too large fraction below zero deltaPrime. Signal generation cannot be reliable in this case
          printf("Error generating signal: Too large fraction below zero deltaPrime: convGauss(0) / convGauss(max) =  %e / %e = %e!\n",
                 valueAtZero, maximum, valueAtZero / maximum);
          return kError;
        }
      }
      
      /*
      printf("Warning: LowBoundSearchBoundLow gets smaller zero -> Set left boundary to zero! Debug output: maximumFraction * fAccuracyNonGaussianTail = %e * %e = %e maxX %f, par[0] %f, par[1] %f, par[2] %f, gausMean %f, gausSigma %f\n",
             fConvolutedGausDeltaPrime->Eval(maxX), fAccuracyNonGaussianTail, maximumFraction, maxX, par[0], par[1], par[2], gausMean, gausSigma);
      */
      
      lowerBoundaryFixedAtZero = kTRUE;
      
      if (errCode != kError)
        errCode = kWarning;
      
      break;
    }
    
    lowBoundSearchBoundUp -= gausSigma;
    lowBoundSearchBoundLow -= gausSigma;
    
    if (lowBoundSearchBoundLow < 0) {
      lowBoundSearchBoundLow = 0;
      lowBoundSearchBoundUp += gausSigma;
    }
  }
  
  // Determine lower boundary inside estimated range. For small values of the maximum: Need more precision, since finer binning!
  Double_t rangeStart = lowerBoundaryFixedAtZero ? 0 :
                        fConvolutedGausDeltaPrime->GetX(maximumFraction, lowBoundSearchBoundLow, lowBoundSearchBoundUp, (maxX < 0.4) ? 1e-5 : 0.001);
  
  // .. and the same for the upper boundary
  Double_t rangeEnd = 0;
  // If distribution starts beyond upper boundary, everything ends up in the overflow bin. So, just reduce range and Npx to minimum
  if (rangeStart > fkDeltaPrimeUpLimit) {
    rangeEnd = rangeStart + 0.00001;
    fConvolutedGausDeltaPrime->SetRange(rangeStart,rangeEnd);
    fConvolutedGausDeltaPrime->SetNpx(4);
  }
  else {
    // Estimate upper boundary for subsequent search:
    Double_t upBoundSearchBoundUp = maxX + 5 * gausSigma;
    Double_t upBoundSearchBoundLow = maxX;
    while (fConvolutedGausDeltaPrime->Eval(upBoundSearchBoundUp) >= maximumFraction) {
      upBoundSearchBoundUp += gausSigma;
      upBoundSearchBoundLow += gausSigma;
    }
  
    //  For small values of the maximum: Need more precision, since finer binning!
    rangeEnd = fConvolutedGausDeltaPrime->GetX(maximumFraction, upBoundSearchBoundLow, upBoundSearchBoundUp, (maxX < 0.4) ? 1e-5 : 0.001);
    
    fConvolutedGausDeltaPrime->SetRange(rangeStart,rangeEnd);
    fConvolutedGausDeltaPrime->SetNpx(fDeltaPrimeAxis->FindFixBin(rangeEnd) - fDeltaPrimeAxis->FindFixBin(rangeStart) + 1);
    
    fConvolutedGausDeltaPrime->SetNpx(fDeltaPrimeAxis->FindFixBin(rangeEnd) - fDeltaPrimeAxis->FindFixBin(rangeStart) + 1);
    //fConvolutedGausDeltaPrime->SetNpx(fhPIDdataAll->GetAxis(kDataDeltaPrimeSpecies)->FindFixBin(rangeEnd)
    //                                  - fhPIDdataAll->GetAxis(kDataDeltaPrimeSpecies)->FindFixBin(rangeStart) + 1);
    //fConvolutedGausDeltaPrime->SetNpx((rangeEnd - rangeStart) / fDeltaPrimeBinWidth + 1);
  }
  
  if(fDebug > 3)
    printf("File: %s, Line: %d: SetParamsForConvolutedGaus -> range %f - %f, error code %d\n", (char*)__FILE__, __LINE__,
           rangeStart, rangeEnd, errCode);
  
  return errCode;
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpGenHist(THnSparse* hist, Double_t* binsPt, Double_t* binsDeltaPrime, Double_t* binsCent, Double_t* binsJetPt) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  
  hist->SetBinEdges(kGenPt, binsPt);
  hist->SetBinEdges(kGenDeltaPrimeSpecies, binsDeltaPrime);
  hist->SetBinEdges(kGenCentrality, binsCent);
  
  if (fStoreAdditionalJetInformation)
    hist->SetBinEdges(kGenJetPt, binsJetPt);
                          
  // Set axes titles
  hist->GetAxis(kGenMCID)->SetTitle("MC PID");
  hist->GetAxis(kGenMCID)->SetBinLabel(1, "e");
  hist->GetAxis(kGenMCID)->SetBinLabel(2, "K");
  hist->GetAxis(kGenMCID)->SetBinLabel(3, "#mu");
  hist->GetAxis(kGenMCID)->SetBinLabel(4, "#pi");
  hist->GetAxis(kGenMCID)->SetBinLabel(5, "p");
  
  hist->GetAxis(kGenSelectSpecies)->SetTitle("Select Species");
  hist->GetAxis(kGenSelectSpecies)->SetBinLabel(1, "e");
  hist->GetAxis(kGenSelectSpecies)->SetBinLabel(2, "K");
  hist->GetAxis(kGenSelectSpecies)->SetBinLabel(3, "#pi");
  hist->GetAxis(kGenSelectSpecies)->SetBinLabel(4, "p");
  
  hist->GetAxis(kGenPt)->SetTitle("p_{T} (GeV/c)");
  
  hist->GetAxis(kGenDeltaPrimeSpecies)->SetTitle("TPC #Delta'_{species} (arb. unit)");
  
  hist->GetAxis(kGenCentrality)->SetTitle(Form("Centrality Percentile (%s)", GetPPCentralityEstimator().Data()));
  
  if (fStoreAdditionalJetInformation) {
    hist->GetAxis(kGenJetPt)->SetTitle("p_{T}^{jet} (GeV/c)");
    
    hist->GetAxis(kGenZ)->SetTitle("z = p_{T}^{track} / p_{T}^{jet}");
    
    hist->GetAxis(kGenXi)->SetTitle("#xi = ln(p_{T}^{jet} / p_{T}^{track})");
  }
  
  hist->GetAxis(GetIndexOfChargeAxisGen())->SetTitle("Charge (e_{0})");
  
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetTitle("TOF PID Info");
  // Offset is (TMath::Abs(kNoTOFinfo) + 1), such that bin 1 (= first label) corresponds to kNoTOFinfo (< 0)
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetBinLabel(kNoTOFinfo + (TMath::Abs(kNoTOFinfo) + 1), "No TOF Info");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetBinLabel(kNoTOFpid + (TMath::Abs(kNoTOFinfo) + 1), "No TOF PID");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetBinLabel(kTOFpion + (TMath::Abs(kNoTOFinfo) + 1), "#pi");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetBinLabel(kTOFkaon + (TMath::Abs(kNoTOFinfo) + 1), "K");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisGen())->SetBinLabel(kTOFproton + (TMath::Abs(kNoTOFinfo) + 1), "p");
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpGenYieldHist(THnSparse* hist, Double_t* binsPt, Double_t* binsCent, Double_t* binsJetPt) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  
  hist->SetBinEdges(kGenYieldPt, binsPt);
  hist->SetBinEdges(kGenYieldCentrality, binsCent);
  if (fStoreAdditionalJetInformation)
    hist->SetBinEdges(kGenYieldJetPt, binsJetPt);
  
  for (Int_t i = 0; i < 5; i++)
    hist->GetAxis(kGenYieldMCID)->SetBinLabel(i + 1, AliPID::ParticleLatexName(i));
  
  // Set axes titles
  hist->GetAxis(kGenYieldMCID)->SetTitle("MC PID");
  hist->GetAxis(kGenYieldPt)->SetTitle("p_{T}^{gen} (GeV/c)");
  hist->GetAxis(kGenYieldCentrality)->SetTitle(Form("Centrality Percentile (%s)", GetPPCentralityEstimator().Data()));
  
  if (fStoreAdditionalJetInformation) {
    hist->GetAxis(kGenYieldJetPt)->SetTitle("p_{T}^{jet, gen} (GeV/c)");
    
    hist->GetAxis(kGenYieldZ)->SetTitle("z = p_{T}^{track} / p_{T}^{jet}");
    
    hist->GetAxis(kGenYieldXi)->SetTitle("#xi = ln(p_{T}^{jet} / p_{T}^{track})");
  }
  
  hist->GetAxis(GetIndexOfChargeAxisGenYield())->SetTitle("Charge (e_{0})");
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpHist(THnSparse* hist, Double_t* binsPt, Double_t* binsDeltaPrime, Double_t* binsCent, Double_t* binsJetPt) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  
  hist->SetBinEdges(kDataPt, binsPt);
  hist->SetBinEdges(kDataDeltaPrimeSpecies, binsDeltaPrime);
  hist->SetBinEdges(kDataCentrality, binsCent);
  
  if (fStoreAdditionalJetInformation)
    hist->SetBinEdges(kDataJetPt, binsJetPt);
  
  // Set axes titles
  hist->GetAxis(kDataMCID)->SetTitle("MC PID");
  hist->GetAxis(kDataMCID)->SetBinLabel(1, "e");
  hist->GetAxis(kDataMCID)->SetBinLabel(2, "K");
  hist->GetAxis(kDataMCID)->SetBinLabel(3, "#mu");
  hist->GetAxis(kDataMCID)->SetBinLabel(4, "#pi");
  hist->GetAxis(kDataMCID)->SetBinLabel(5, "p");
  
  hist->GetAxis(kDataSelectSpecies)->SetTitle("Select Species");
  hist->GetAxis(kDataSelectSpecies)->SetBinLabel(1, "e");
  hist->GetAxis(kDataSelectSpecies)->SetBinLabel(2, "K");
  hist->GetAxis(kDataSelectSpecies)->SetBinLabel(3, "#pi");
  hist->GetAxis(kDataSelectSpecies)->SetBinLabel(4, "p");
  
  hist->GetAxis(kDataPt)->SetTitle("p_{T} (GeV/c)");
    
  hist->GetAxis(kDataDeltaPrimeSpecies)->SetTitle("TPC #Delta'_{species} (arb. unit)");
  
  hist->GetAxis(kDataCentrality)->SetTitle(Form("Centrality Percentile (%s)", GetPPCentralityEstimator().Data()));
  
  if (fStoreAdditionalJetInformation) {
    hist->GetAxis(kDataJetPt)->SetTitle("p_{T}^{jet} (GeV/c)");
  
    hist->GetAxis(kDataZ)->SetTitle("z = p_{T}^{track} / p_{T}^{jet}");
  
    hist->GetAxis(kDataXi)->SetTitle("#xi = ln(p_{T}^{jet} / p_{T}^{track})");
  }
  
  hist->GetAxis(GetIndexOfChargeAxisData())->SetTitle("Charge (e_{0})");
  
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetTitle("TOF PID Info");
  // Offset is (TMath::Abs(kNoTOFinfo) + 1), such that bin 1 (= first label) corresponds to kNoTOFinfo (< 0)
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetBinLabel(kNoTOFinfo + (TMath::Abs(kNoTOFinfo) + 1), "No TOF Info");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetBinLabel(kNoTOFpid + (TMath::Abs(kNoTOFinfo) + 1), "No TOF PID");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetBinLabel(kTOFpion + (TMath::Abs(kNoTOFinfo) + 1), "#pi");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetBinLabel(kTOFkaon + (TMath::Abs(kNoTOFinfo) + 1), "K");
  hist->GetAxis(GetIndexOfTOFpidInfoAxisData())->SetBinLabel(kTOFproton + (TMath::Abs(kNoTOFinfo) + 1), "p");
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpPtResHist(THnSparse* hist, Double_t* binsPt, Double_t* binsJetPt, Double_t* binsCent) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  
  hist->SetBinEdges(kPtResJetPt, binsJetPt);
  hist->SetBinEdges(kPtResGenPt, binsPt);
  hist->SetBinEdges(kPtResRecPt, binsPt);
  hist->SetBinEdges(kPtResCentrality, binsCent);
  
  // Set axes titles
  hist->GetAxis(kPtResJetPt)->SetTitle("p_{T}^{jet, rec} (GeV/c)");
  hist->GetAxis(kPtResGenPt)->SetTitle("p_{T}^{gen} (GeV/c)");
  hist->GetAxis(kPtResRecPt)->SetTitle("p_{T}^{rec} (GeV/c)");  
  
  hist->GetAxis(kPtResCharge)->SetTitle("Charge (e_{0})");
  hist->GetAxis(kPtResCentrality)->SetTitle(Form("Centrality Percentile (%s)", GetPPCentralityEstimator().Data()));
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpSharedClsHist(THnSparse* hist, Double_t* binsPt, Double_t* binsJetPt) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  
  hist->SetBinEdges(kQASharedClsJetPt, binsJetPt);
  hist->SetBinEdges(kQASharedClsPt, binsPt);
  
  // Set axes titles
  hist->GetAxis(kQASharedClsJetPt)->SetTitle("#it{p}_{T}^{jet} (GeV/#it{c})");
  hist->GetAxis(kQASharedClsPt)->SetTitle("#it{p}_{T} (GeV/#it{c})");
  hist->GetAxis(kQASharedClsNumSharedCls)->SetTitle("#it{N}_{shared}^{cls}");
  hist->GetAxis(kQASharedClsPadRow)->SetTitle("Pad row");
  
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpDeDxCheckHist(THnSparse* hist, const Double_t* binsPt, const Double_t* binsJetPt, const Double_t* binsEtaAbs) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  hist->SetBinEdges(kDeDxCheckP, binsPt);
  hist->SetBinEdges(kDeDxCheckJetPt, binsJetPt);
  hist->SetBinEdges(kDeDxCheckEtaAbs, binsEtaAbs);
  
  
  // Set axes titles
  hist->GetAxis(kDeDxCheckPID)->SetTitle("PID");
  hist->GetAxis(kDeDxCheckPID)->SetBinLabel(1, "e");
  hist->GetAxis(kDeDxCheckPID)->SetBinLabel(2, "K");
  hist->GetAxis(kDeDxCheckPID)->SetBinLabel(3, "#pi");
  hist->GetAxis(kDeDxCheckPID)->SetBinLabel(4, "p");
  
  
  hist->GetAxis(kDeDxCheckJetPt)->SetTitle("p_{T}^{jet} (GeV/c)");
  hist->GetAxis(kDeDxCheckEtaAbs)->SetTitle("|#eta|");  
  hist->GetAxis(kDeDxCheckP)->SetTitle("p_{TPC} (GeV/c)"); 
  hist->GetAxis(kDeDxCheckDeDx)->SetTitle("TPC dE/dx (arb. unit)");
}


//________________________________________________________________________
void AliAnalysisTaskPID::SetUpBinZeroStudyHist(THnSparse* hist, const Double_t* binsCent, const Double_t* binsPt) const
{
  // Sets bin limits for axes which are not standard binned and the axes titles.
  hist->SetBinEdges(kBinZeroStudyCentrality, binsCent);
  hist->SetBinEdges(kBinZeroStudyGenPt, binsPt);
  
  // Set axes titles
  hist->GetAxis(kBinZeroStudyCentrality)->SetTitle(Form("Centrality Percentile (%s)", GetPPCentralityEstimator().Data()));
  hist->GetAxis(kBinZeroStudyGenEta)->SetTitle("#it{#eta}^{gen}");  
  hist->GetAxis(kBinZeroStudyGenPt)->SetTitle("#it{p}_{T}^{gen} (GeV/#it{c})"); 
 AliAnalysisTaskPID.cxx:1
 AliAnalysisTaskPID.cxx:2
 AliAnalysisTaskPID.cxx:3
 AliAnalysisTaskPID.cxx:4
 AliAnalysisTaskPID.cxx:5
 AliAnalysisTaskPID.cxx:6
 AliAnalysisTaskPID.cxx:7
 AliAnalysisTaskPID.cxx:8
 AliAnalysisTaskPID.cxx:9
 AliAnalysisTaskPID.cxx:10
 AliAnalysisTaskPID.cxx:11
 AliAnalysisTaskPID.cxx:12
 AliAnalysisTaskPID.cxx:13
 AliAnalysisTaskPID.cxx:14
 AliAnalysisTaskPID.cxx:15
 AliAnalysisTaskPID.cxx:16
 AliAnalysisTaskPID.cxx:17
 AliAnalysisTaskPID.cxx:18
 AliAnalysisTaskPID.cxx:19
 AliAnalysisTaskPID.cxx:20
 AliAnalysisTaskPID.cxx:21
 AliAnalysisTaskPID.cxx:22
 AliAnalysisTaskPID.cxx:23
 AliAnalysisTaskPID.cxx:24
 AliAnalysisTaskPID.cxx:25
 AliAnalysisTaskPID.cxx:26
 AliAnalysisTaskPID.cxx:27
 AliAnalysisTaskPID.cxx:28
 AliAnalysisTaskPID.cxx:29
 AliAnalysisTaskPID.cxx:30
 AliAnalysisTaskPID.cxx:31
 AliAnalysisTaskPID.cxx:32
 AliAnalysisTaskPID.cxx:33
 AliAnalysisTaskPID.cxx:34
 AliAnalysisTaskPID.cxx:35
 AliAnalysisTaskPID.cxx:36
 AliAnalysisTaskPID.cxx:37
 AliAnalysisTaskPID.cxx:38
 AliAnalysisTaskPID.cxx:39
 AliAnalysisTaskPID.cxx:40
 AliAnalysisTaskPID.cxx:41
 AliAnalysisTaskPID.cxx:42
 AliAnalysisTaskPID.cxx:43
 AliAnalysisTaskPID.cxx:44
 AliAnalysisTaskPID.cxx:45
 AliAnalysisTaskPID.cxx:46
 AliAnalysisTaskPID.cxx:47
 AliAnalysisTaskPID.cxx:48
 AliAnalysisTaskPID.cxx:49
 AliAnalysisTaskPID.cxx:50
 AliAnalysisTaskPID.cxx:51
 AliAnalysisTaskPID.cxx:52
 AliAnalysisTaskPID.cxx:53
 AliAnalysisTaskPID.cxx:54
 AliAnalysisTaskPID.cxx:55
 AliAnalysisTaskPID.cxx:56
 AliAnalysisTaskPID.cxx:57
 AliAnalysisTaskPID.cxx:58
 AliAnalysisTaskPID.cxx:59
 AliAnalysisTaskPID.cxx:60
 AliAnalysisTaskPID.cxx:61
 AliAnalysisTaskPID.cxx:62
 AliAnalysisTaskPID.cxx:63
 AliAnalysisTaskPID.cxx:64
 AliAnalysisTaskPID.cxx:65
 AliAnalysisTaskPID.cxx:66
 AliAnalysisTaskPID.cxx:67
 AliAnalysisTaskPID.cxx:68
 AliAnalysisTaskPID.cxx:69
 AliAnalysisTaskPID.cxx:70
 AliAnalysisTaskPID.cxx:71
 AliAnalysisTaskPID.cxx:72
 AliAnalysisTaskPID.cxx:73
 AliAnalysisTaskPID.cxx:74
 AliAnalysisTaskPID.cxx:75
 AliAnalysisTaskPID.cxx:76
 AliAnalysisTaskPID.cxx:77
 AliAnalysisTaskPID.cxx:78
 AliAnalysisTaskPID.cxx:79
 AliAnalysisTaskPID.cxx:80
 AliAnalysisTaskPID.cxx:81
 AliAnalysisTaskPID.cxx:82
 AliAnalysisTaskPID.cxx:83
 AliAnalysisTaskPID.cxx:84
 AliAnalysisTaskPID.cxx:85
 AliAnalysisTaskPID.cxx:86
 AliAnalysisTaskPID.cxx:87
 AliAnalysisTaskPID.cxx:88
 AliAnalysisTaskPID.cxx:89
 AliAnalysisTaskPID.cxx:90
 AliAnalysisTaskPID.cxx:91
 AliAnalysisTaskPID.cxx:92
 AliAnalysisTaskPID.cxx:93
 AliAnalysisTaskPID.cxx:94
 AliAnalysisTaskPID.cxx:95
 AliAnalysisTaskPID.cxx:96
 AliAnalysisTaskPID.cxx:97
 AliAnalysisTaskPID.cxx:98
 AliAnalysisTaskPID.cxx:99
 AliAnalysisTaskPID.cxx:100
 AliAnalysisTaskPID.cxx:101
 AliAnalysisTaskPID.cxx:102
 AliAnalysisTaskPID.cxx:103
 AliAnalysisTaskPID.cxx:104
 AliAnalysisTaskPID.cxx:105
 AliAnalysisTaskPID.cxx:106
 AliAnalysisTaskPID.cxx:107
 AliAnalysisTaskPID.cxx:108
 AliAnalysisTaskPID.cxx:109
 AliAnalysisTaskPID.cxx:110
 AliAnalysisTaskPID.cxx:111
 AliAnalysisTaskPID.cxx:112
 AliAnalysisTaskPID.cxx:113
 AliAnalysisTaskPID.cxx:114
 AliAnalysisTaskPID.cxx:115
 AliAnalysisTaskPID.cxx:116
 AliAnalysisTaskPID.cxx:117
 AliAnalysisTaskPID.cxx:118
 AliAnalysisTaskPID.cxx:119
 AliAnalysisTaskPID.cxx:120
 AliAnalysisTaskPID.cxx:121
 AliAnalysisTaskPID.cxx:122
 AliAnalysisTaskPID.cxx:123
 AliAnalysisTaskPID.cxx:124
 AliAnalysisTaskPID.cxx:125
 AliAnalysisTaskPID.cxx:126
 AliAnalysisTaskPID.cxx:127
 AliAnalysisTaskPID.cxx:128
 AliAnalysisTaskPID.cxx:129
 AliAnalysisTaskPID.cxx:130
 AliAnalysisTaskPID.cxx:131
 AliAnalysisTaskPID.cxx:132
 AliAnalysisTaskPID.cxx:133
 AliAnalysisTaskPID.cxx:134
 AliAnalysisTaskPID.cxx:135
 AliAnalysisTaskPID.cxx:136
 AliAnalysisTaskPID.cxx:137
 AliAnalysisTaskPID.cxx:138
 AliAnalysisTaskPID.cxx:139
 AliAnalysisTaskPID.cxx:140
 AliAnalysisTaskPID.cxx:141
 AliAnalysisTaskPID.cxx:142
 AliAnalysisTaskPID.cxx:143
 AliAnalysisTaskPID.cxx:144
 AliAnalysisTaskPID.cxx:145
 AliAnalysisTaskPID.cxx:146
 AliAnalysisTaskPID.cxx:147
 AliAnalysisTaskPID.cxx:148
 AliAnalysisTaskPID.cxx:149
 AliAnalysisTaskPID.cxx:150
 AliAnalysisTaskPID.cxx:151
 AliAnalysisTaskPID.cxx:152
 AliAnalysisTaskPID.cxx:153
 AliAnalysisTaskPID.cxx:154
 AliAnalysisTaskPID.cxx:155
 AliAnalysisTaskPID.cxx:156
 AliAnalysisTaskPID.cxx:157
 AliAnalysisTaskPID.cxx:158
 AliAnalysisTaskPID.cxx:159
 AliAnalysisTaskPID.cxx:160
 AliAnalysisTaskPID.cxx:161
 AliAnalysisTaskPID.cxx:162
 AliAnalysisTaskPID.cxx:163
 AliAnalysisTaskPID.cxx:164
 AliAnalysisTaskPID.cxx:165
 AliAnalysisTaskPID.cxx:166
 AliAnalysisTaskPID.cxx:167
 AliAnalysisTaskPID.cxx:168
 AliAnalysisTaskPID.cxx:169
 AliAnalysisTaskPID.cxx:170
 AliAnalysisTaskPID.cxx:171
 AliAnalysisTaskPID.cxx:172
 AliAnalysisTaskPID.cxx:173
 AliAnalysisTaskPID.cxx:174
 AliAnalysisTaskPID.cxx:175
 AliAnalysisTaskPID.cxx:176
 AliAnalysisTaskPID.cxx:177
 AliAnalysisTaskPID.cxx:178
 AliAnalysisTaskPID.cxx:179
 AliAnalysisTaskPID.cxx:180
 AliAnalysisTaskPID.cxx:181
 AliAnalysisTaskPID.cxx:182
 AliAnalysisTaskPID.cxx:183
 AliAnalysisTaskPID.cxx:184
 AliAnalysisTaskPID.cxx:185
 AliAnalysisTaskPID.cxx:186
 AliAnalysisTaskPID.cxx:187
 AliAnalysisTaskPID.cxx:188
 AliAnalysisTaskPID.cxx:189
 AliAnalysisTaskPID.cxx:190
 AliAnalysisTaskPID.cxx:191
 AliAnalysisTaskPID.cxx:192
 AliAnalysisTaskPID.cxx:193
 AliAnalysisTaskPID.cxx:194
 AliAnalysisTaskPID.cxx:195
 AliAnalysisTaskPID.cxx:196
 AliAnalysisTaskPID.cxx:197
 AliAnalysisTaskPID.cxx:198
 AliAnalysisTaskPID.cxx:199
 AliAnalysisTaskPID.cxx:200
 AliAnalysisTaskPID.cxx:201
 AliAnalysisTaskPID.cxx:202
 AliAnalysisTaskPID.cxx:203
 AliAnalysisTaskPID.cxx:204
 AliAnalysisTaskPID.cxx:205
 AliAnalysisTaskPID.cxx:206
 AliAnalysisTaskPID.cxx:207
 AliAnalysisTaskPID.cxx:208
 AliAnalysisTaskPID.cxx:209
 AliAnalysisTaskPID.cxx:210
 AliAnalysisTaskPID.cxx:211
 AliAnalysisTaskPID.cxx:212
 AliAnalysisTaskPID.cxx:213
 AliAnalysisTaskPID.cxx:214
 AliAnalysisTaskPID.cxx:215
 AliAnalysisTaskPID.cxx:216
 AliAnalysisTaskPID.cxx:217
 AliAnalysisTaskPID.cxx:218
 AliAnalysisTaskPID.cxx:219
 AliAnalysisTaskPID.cxx:220
 AliAnalysisTaskPID.cxx:221
 AliAnalysisTaskPID.cxx:222
 AliAnalysisTaskPID.cxx:223
 AliAnalysisTaskPID.cxx:224
 AliAnalysisTaskPID.cxx:225
 AliAnalysisTaskPID.cxx:226
 AliAnalysisTaskPID.cxx:227
 AliAnalysisTaskPID.cxx:228
 AliAnalysisTaskPID.cxx:229
 AliAnalysisTaskPID.cxx:230
 AliAnalysisTaskPID.cxx:231
 AliAnalysisTaskPID.cxx:232
 AliAnalysisTaskPID.cxx:233
 AliAnalysisTaskPID.cxx:234
 AliAnalysisTaskPID.cxx:235
 AliAnalysisTaskPID.cxx:236
 AliAnalysisTaskPID.cxx:237
 AliAnalysisTaskPID.cxx:238
 AliAnalysisTaskPID.cxx:239
 AliAnalysisTaskPID.cxx:240
 AliAnalysisTaskPID.cxx:241
 AliAnalysisTaskPID.cxx:242
 AliAnalysisTaskPID.cxx:243
 AliAnalysisTaskPID.cxx:244
 AliAnalysisTaskPID.cxx:245
 AliAnalysisTaskPID.cxx:246
 AliAnalysisTaskPID.cxx:247
 AliAnalysisTaskPID.cxx:248
 AliAnalysisTaskPID.cxx:249
 AliAnalysisTaskPID.cxx:250
 AliAnalysisTaskPID.cxx:251
 AliAnalysisTaskPID.cxx:252
 AliAnalysisTaskPID.cxx:253
 AliAnalysisTaskPID.cxx:254
 AliAnalysisTaskPID.cxx:255
 AliAnalysisTaskPID.cxx:256
 AliAnalysisTaskPID.cxx:257
 AliAnalysisTaskPID.cxx:258
 AliAnalysisTaskPID.cxx:259
 AliAnalysisTaskPID.cxx:260
 AliAnalysisTaskPID.cxx:261
 AliAnalysisTaskPID.cxx:262
 AliAnalysisTaskPID.cxx:263
 AliAnalysisTaskPID.cxx:264
 AliAnalysisTaskPID.cxx:265
 AliAnalysisTaskPID.cxx:266
 AliAnalysisTaskPID.cxx:267
 AliAnalysisTaskPID.cxx:268
 AliAnalysisTaskPID.cxx:269
 AliAnalysisTaskPID.cxx:270
 AliAnalysisTaskPID.cxx:271
 AliAnalysisTaskPID.cxx:272
 AliAnalysisTaskPID.cxx:273
 AliAnalysisTaskPID.cxx:274
 AliAnalysisTaskPID.cxx:275
 AliAnalysisTaskPID.cxx:276
 AliAnalysisTaskPID.cxx:277
 AliAnalysisTaskPID.cxx:278
 AliAnalysisTaskPID.cxx:279
 AliAnalysisTaskPID.cxx:280
 AliAnalysisTaskPID.cxx:281
 AliAnalysisTaskPID.cxx:282
 AliAnalysisTaskPID.cxx:283
 AliAnalysisTaskPID.cxx:284
 AliAnalysisTaskPID.cxx:285
 AliAnalysisTaskPID.cxx:286
 AliAnalysisTaskPID.cxx:287
 AliAnalysisTaskPID.cxx:288
 AliAnalysisTaskPID.cxx:289
 AliAnalysisTaskPID.cxx:290
 AliAnalysisTaskPID.cxx:291
 AliAnalysisTaskPID.cxx:292
 AliAnalysisTaskPID.cxx:293
 AliAnalysisTaskPID.cxx:294
 AliAnalysisTaskPID.cxx:295
 AliAnalysisTaskPID.cxx:296
 AliAnalysisTaskPID.cxx:297
 AliAnalysisTaskPID.cxx:298
 AliAnalysisTaskPID.cxx:299
 AliAnalysisTaskPID.cxx:300
 AliAnalysisTaskPID.cxx:301
 AliAnalysisTaskPID.cxx:302
 AliAnalysisTaskPID.cxx:303
 AliAnalysisTaskPID.cxx:304
 AliAnalysisTaskPID.cxx:305
 AliAnalysisTaskPID.cxx:306
 AliAnalysisTaskPID.cxx:307
 AliAnalysisTaskPID.cxx:308
 AliAnalysisTaskPID.cxx:309
 AliAnalysisTaskPID.cxx:310
 AliAnalysisTaskPID.cxx:311
 AliAnalysisTaskPID.cxx:312
 AliAnalysisTaskPID.cxx:313
 AliAnalysisTaskPID.cxx:314
 AliAnalysisTaskPID.cxx:315
 AliAnalysisTaskPID.cxx:316
 AliAnalysisTaskPID.cxx:317
 AliAnalysisTaskPID.cxx:318
 AliAnalysisTaskPID.cxx:319
 AliAnalysisTaskPID.cxx:320
 AliAnalysisTaskPID.cxx:321
 AliAnalysisTaskPID.cxx:322
 AliAnalysisTaskPID.cxx:323
 AliAnalysisTaskPID.cxx:324
 AliAnalysisTaskPID.cxx:325
 AliAnalysisTaskPID.cxx:326
 AliAnalysisTaskPID.cxx:327
 AliAnalysisTaskPID.cxx:328
 AliAnalysisTaskPID.cxx:329
 AliAnalysisTaskPID.cxx:330
 AliAnalysisTaskPID.cxx:331
 AliAnalysisTaskPID.cxx:332
 AliAnalysisTaskPID.cxx:333
 AliAnalysisTaskPID.cxx:334
 AliAnalysisTaskPID.cxx:335
 AliAnalysisTaskPID.cxx:336
 AliAnalysisTaskPID.cxx:337
 AliAnalysisTaskPID.cxx:338
 AliAnalysisTaskPID.cxx:339
 AliAnalysisTaskPID.cxx:340
 AliAnalysisTaskPID.cxx:341
 AliAnalysisTaskPID.cxx:342
 AliAnalysisTaskPID.cxx:343
 AliAnalysisTaskPID.cxx:344
 AliAnalysisTaskPID.cxx:345
 AliAnalysisTaskPID.cxx:346
 AliAnalysisTaskPID.cxx:347
 AliAnalysisTaskPID.cxx:348
 AliAnalysisTaskPID.cxx:349
 AliAnalysisTaskPID.cxx:350
 AliAnalysisTaskPID.cxx:351
 AliAnalysisTaskPID.cxx:352
 AliAnalysisTaskPID.cxx:353
 AliAnalysisTaskPID.cxx:354
 AliAnalysisTaskPID.cxx:355
 AliAnalysisTaskPID.cxx:356
 AliAnalysisTaskPID.cxx:357
 AliAnalysisTaskPID.cxx:358
 AliAnalysisTaskPID.cxx:359
 AliAnalysisTaskPID.cxx:360
 AliAnalysisTaskPID.cxx:361
 AliAnalysisTaskPID.cxx:362
 AliAnalysisTaskPID.cxx:363
 AliAnalysisTaskPID.cxx:364
 AliAnalysisTaskPID.cxx:365
 AliAnalysisTaskPID.cxx:366
 AliAnalysisTaskPID.cxx:367
 AliAnalysisTaskPID.cxx:368
 AliAnalysisTaskPID.cxx:369
 AliAnalysisTaskPID.cxx:370
 AliAnalysisTaskPID.cxx:371
 AliAnalysisTaskPID.cxx:372
 AliAnalysisTaskPID.cxx:373
 AliAnalysisTaskPID.cxx:374
 AliAnalysisTaskPID.cxx:375
 AliAnalysisTaskPID.cxx:376
 AliAnalysisTaskPID.cxx:377
 AliAnalysisTaskPID.cxx:378
 AliAnalysisTaskPID.cxx:379
 AliAnalysisTaskPID.cxx:380
 AliAnalysisTaskPID.cxx:381
 AliAnalysisTaskPID.cxx:382
 AliAnalysisTaskPID.cxx:383
 AliAnalysisTaskPID.cxx:384
 AliAnalysisTaskPID.cxx:385
 AliAnalysisTaskPID.cxx:386
 AliAnalysisTaskPID.cxx:387
 AliAnalysisTaskPID.cxx:388
 AliAnalysisTaskPID.cxx:389
 AliAnalysisTaskPID.cxx:390
 AliAnalysisTaskPID.cxx:391
 AliAnalysisTaskPID.cxx:392
 AliAnalysisTaskPID.cxx:393
 AliAnalysisTaskPID.cxx:394
 AliAnalysisTaskPID.cxx:395
 AliAnalysisTaskPID.cxx:396
 AliAnalysisTaskPID.cxx:397
 AliAnalysisTaskPID.cxx:398
 AliAnalysisTaskPID.cxx:399
 AliAnalysisTaskPID.cxx:400
 AliAnalysisTaskPID.cxx:401
 AliAnalysisTaskPID.cxx:402
 AliAnalysisTaskPID.cxx:403
 AliAnalysisTaskPID.cxx:404
 AliAnalysisTaskPID.cxx:405
 AliAnalysisTaskPID.cxx:406
 AliAnalysisTaskPID.cxx:407
 AliAnalysisTaskPID.cxx:408
 AliAnalysisTaskPID.cxx:409
 AliAnalysisTaskPID.cxx:410
 AliAnalysisTaskPID.cxx:411
 AliAnalysisTaskPID.cxx:412
 AliAnalysisTaskPID.cxx:413
 AliAnalysisTaskPID.cxx:414
 AliAnalysisTaskPID.cxx:415
 AliAnalysisTaskPID.cxx:416
 AliAnalysisTaskPID.cxx:417
 AliAnalysisTaskPID.cxx:418
 AliAnalysisTaskPID.cxx:419
 AliAnalysisTaskPID.cxx:420
 AliAnalysisTaskPID.cxx:421
 AliAnalysisTaskPID.cxx:422
 AliAnalysisTaskPID.cxx:423
 AliAnalysisTaskPID.cxx:424
 AliAnalysisTaskPID.cxx:425
 AliAnalysisTaskPID.cxx:426
 AliAnalysisTaskPID.cxx:427
 AliAnalysisTaskPID.cxx:428
 AliAnalysisTaskPID.cxx:429
 AliAnalysisTaskPID.cxx:430
 AliAnalysisTaskPID.cxx:431
 AliAnalysisTaskPID.cxx:432
 AliAnalysisTaskPID.cxx:433
 AliAnalysisTaskPID.cxx:434
 AliAnalysisTaskPID.cxx:435
 AliAnalysisTaskPID.cxx:436
 AliAnalysisTaskPID.cxx:437
 AliAnalysisTaskPID.cxx:438
 AliAnalysisTaskPID.cxx:439
 AliAnalysisTaskPID.cxx:440
 AliAnalysisTaskPID.cxx:441
 AliAnalysisTaskPID.cxx:442
 AliAnalysisTaskPID.cxx:443
 AliAnalysisTaskPID.cxx:444
 AliAnalysisTaskPID.cxx:445
 AliAnalysisTaskPID.cxx:446
 AliAnalysisTaskPID.cxx:447
 AliAnalysisTaskPID.cxx:448
 AliAnalysisTaskPID.cxx:449
 AliAnalysisTaskPID.cxx:450
 AliAnalysisTaskPID.cxx:451
 AliAnalysisTaskPID.cxx:452
 AliAnalysisTaskPID.cxx:453
 AliAnalysisTaskPID.cxx:454
 AliAnalysisTaskPID.cxx:455
 AliAnalysisTaskPID.cxx:456
 AliAnalysisTaskPID.cxx:457
 AliAnalysisTaskPID.cxx:458
 AliAnalysisTaskPID.cxx:459
 AliAnalysisTaskPID.cxx:460
 AliAnalysisTaskPID.cxx:461
 AliAnalysisTaskPID.cxx:462
 AliAnalysisTaskPID.cxx:463
 AliAnalysisTaskPID.cxx:464
 AliAnalysisTaskPID.cxx:465
 AliAnalysisTaskPID.cxx:466
 AliAnalysisTaskPID.cxx:467
 AliAnalysisTaskPID.cxx:468
 AliAnalysisTaskPID.cxx:469
 AliAnalysisTaskPID.cxx:470
 AliAnalysisTaskPID.cxx:471
 AliAnalysisTaskPID.cxx:472
 AliAnalysisTaskPID.cxx:473
 AliAnalysisTaskPID.cxx:474
 AliAnalysisTaskPID.cxx:475
 AliAnalysisTaskPID.cxx:476
 AliAnalysisTaskPID.cxx:477
 AliAnalysisTaskPID.cxx:478
 AliAnalysisTaskPID.cxx:479
 AliAnalysisTaskPID.cxx:480
 AliAnalysisTaskPID.cxx:481
 AliAnalysisTaskPID.cxx:482
 AliAnalysisTaskPID.cxx:483
 AliAnalysisTaskPID.cxx:484
 AliAnalysisTaskPID.cxx:485
 AliAnalysisTaskPID.cxx:486
 AliAnalysisTaskPID.cxx:487
 AliAnalysisTaskPID.cxx:488
 AliAnalysisTaskPID.cxx:489
 AliAnalysisTaskPID.cxx:490
 AliAnalysisTaskPID.cxx:491
 AliAnalysisTaskPID.cxx:492
 AliAnalysisTaskPID.cxx:493
 AliAnalysisTaskPID.cxx:494
 AliAnalysisTaskPID.cxx:495
 AliAnalysisTaskPID.cxx:496
 AliAnalysisTaskPID.cxx:497
 AliAnalysisTaskPID.cxx:498
 AliAnalysisTaskPID.cxx:499
 AliAnalysisTaskPID.cxx:500
 AliAnalysisTaskPID.cxx:501
 AliAnalysisTaskPID.cxx:502
 AliAnalysisTaskPID.cxx:503
 AliAnalysisTaskPID.cxx:504
 AliAnalysisTaskPID.cxx:505
 AliAnalysisTaskPID.cxx:506
 AliAnalysisTaskPID.cxx:507
 AliAnalysisTaskPID.cxx:508
 AliAnalysisTaskPID.cxx:509
 AliAnalysisTaskPID.cxx:510
 AliAnalysisTaskPID.cxx:511
 AliAnalysisTaskPID.cxx:512
 AliAnalysisTaskPID.cxx:513
 AliAnalysisTaskPID.cxx:514
 AliAnalysisTaskPID.cxx:515
 AliAnalysisTaskPID.cxx:516
 AliAnalysisTaskPID.cxx:517
 AliAnalysisTaskPID.cxx:518
 AliAnalysisTaskPID.cxx:519
 AliAnalysisTaskPID.cxx:520
 AliAnalysisTaskPID.cxx:521
 AliAnalysisTaskPID.cxx:522
 AliAnalysisTaskPID.cxx:523
 AliAnalysisTaskPID.cxx:524
 AliAnalysisTaskPID.cxx:525
 AliAnalysisTaskPID.cxx:526
 AliAnalysisTaskPID.cxx:527
 AliAnalysisTaskPID.cxx:528
 AliAnalysisTaskPID.cxx:529
 AliAnalysisTaskPID.cxx:530
 AliAnalysisTaskPID.cxx:531
 AliAnalysisTaskPID.cxx:532
 AliAnalysisTaskPID.cxx:533
 AliAnalysisTaskPID.cxx:534
 AliAnalysisTaskPID.cxx:535
 AliAnalysisTaskPID.cxx:536
 AliAnalysisTaskPID.cxx:537
 AliAnalysisTaskPID.cxx:538
 AliAnalysisTaskPID.cxx:539
 AliAnalysisTaskPID.cxx:540
 AliAnalysisTaskPID.cxx:541
 AliAnalysisTaskPID.cxx:542
 AliAnalysisTaskPID.cxx:543
 AliAnalysisTaskPID.cxx:544
 AliAnalysisTaskPID.cxx:545
 AliAnalysisTaskPID.cxx:546
 AliAnalysisTaskPID.cxx:547
 AliAnalysisTaskPID.cxx:548
 AliAnalysisTaskPID.cxx:549
 AliAnalysisTaskPID.cxx:550
 AliAnalysisTaskPID.cxx:551
 AliAnalysisTaskPID.cxx:552
 AliAnalysisTaskPID.cxx:553
 AliAnalysisTaskPID.cxx:554
 AliAnalysisTaskPID.cxx:555
 AliAnalysisTaskPID.cxx:556
 AliAnalysisTaskPID.cxx:557
 AliAnalysisTaskPID.cxx:558
 AliAnalysisTaskPID.cxx:559
 AliAnalysisTaskPID.cxx:560
 AliAnalysisTaskPID.cxx:561
 AliAnalysisTaskPID.cxx:562
 AliAnalysisTaskPID.cxx:563
 AliAnalysisTaskPID.cxx:564
 AliAnalysisTaskPID.cxx:565
 AliAnalysisTaskPID.cxx:566
 AliAnalysisTaskPID.cxx:567
 AliAnalysisTaskPID.cxx:568
 AliAnalysisTaskPID.cxx:569
 AliAnalysisTaskPID.cxx:570
 AliAnalysisTaskPID.cxx:571
 AliAnalysisTaskPID.cxx:572
 AliAnalysisTaskPID.cxx:573
 AliAnalysisTaskPID.cxx:574
 AliAnalysisTaskPID.cxx:575
 AliAnalysisTaskPID.cxx:576
 AliAnalysisTaskPID.cxx:577
 AliAnalysisTaskPID.cxx:578
 AliAnalysisTaskPID.cxx:579
 AliAnalysisTaskPID.cxx:580
 AliAnalysisTaskPID.cxx:581
 AliAnalysisTaskPID.cxx:582
 AliAnalysisTaskPID.cxx:583
 AliAnalysisTaskPID.cxx:584
 AliAnalysisTaskPID.cxx:585
 AliAnalysisTaskPID.cxx:586
 AliAnalysisTaskPID.cxx:587
 AliAnalysisTaskPID.cxx:588
 AliAnalysisTaskPID.cxx:589
 AliAnalysisTaskPID.cxx:590
 AliAnalysisTaskPID.cxx:591
 AliAnalysisTaskPID.cxx:592
 AliAnalysisTaskPID.cxx:593
 AliAnalysisTaskPID.cxx:594
 AliAnalysisTaskPID.cxx:595
 AliAnalysisTaskPID.cxx:596
 AliAnalysisTaskPID.cxx:597
 AliAnalysisTaskPID.cxx:598
 AliAnalysisTaskPID.cxx:599
 AliAnalysisTaskPID.cxx:600
 AliAnalysisTaskPID.cxx:601
 AliAnalysisTaskPID.cxx:602
 AliAnalysisTaskPID.cxx:603
 AliAnalysisTaskPID.cxx:604
 AliAnalysisTaskPID.cxx:605
 AliAnalysisTaskPID.cxx:606
 AliAnalysisTaskPID.cxx:607
 AliAnalysisTaskPID.cxx:608
 AliAnalysisTaskPID.cxx:609
 AliAnalysisTaskPID.cxx:610
 AliAnalysisTaskPID.cxx:611
 AliAnalysisTaskPID.cxx:612
 AliAnalysisTaskPID.cxx:613
 AliAnalysisTaskPID.cxx:614
 AliAnalysisTaskPID.cxx:615
 AliAnalysisTaskPID.cxx:616
 AliAnalysisTaskPID.cxx:617
 AliAnalysisTaskPID.cxx:618
 AliAnalysisTaskPID.cxx:619
 AliAnalysisTaskPID.cxx:620
 AliAnalysisTaskPID.cxx:621
 AliAnalysisTaskPID.cxx:622
 AliAnalysisTaskPID.cxx:623
 AliAnalysisTaskPID.cxx:624
 AliAnalysisTaskPID.cxx:625
 AliAnalysisTaskPID.cxx:626
 AliAnalysisTaskPID.cxx:627
 AliAnalysisTaskPID.cxx:628
 AliAnalysisTaskPID.cxx:629
 AliAnalysisTaskPID.cxx:630
 AliAnalysisTaskPID.cxx:631
 AliAnalysisTaskPID.cxx:632
 AliAnalysisTaskPID.cxx:633
 AliAnalysisTaskPID.cxx:634
 AliAnalysisTaskPID.cxx:635
 AliAnalysisTaskPID.cxx:636
 AliAnalysisTaskPID.cxx:637
 AliAnalysisTaskPID.cxx:638
 AliAnalysisTaskPID.cxx:639
 AliAnalysisTaskPID.cxx:640
 AliAnalysisTaskPID.cxx:641
 AliAnalysisTaskPID.cxx:642
 AliAnalysisTaskPID.cxx:643
 AliAnalysisTaskPID.cxx:644
 AliAnalysisTaskPID.cxx:645
 AliAnalysisTaskPID.cxx:646
 AliAnalysisTaskPID.cxx:647
 AliAnalysisTaskPID.cxx:648
 AliAnalysisTaskPID.cxx:649
 AliAnalysisTaskPID.cxx:650
 AliAnalysisTaskPID.cxx:651
 AliAnalysisTaskPID.cxx:652
 AliAnalysisTaskPID.cxx:653
 AliAnalysisTaskPID.cxx:654
 AliAnalysisTaskPID.cxx:655
 AliAnalysisTaskPID.cxx:656
 AliAnalysisTaskPID.cxx:657
 AliAnalysisTaskPID.cxx:658
 AliAnalysisTaskPID.cxx:659
 AliAnalysisTaskPID.cxx:660
 AliAnalysisTaskPID.cxx:661
 AliAnalysisTaskPID.cxx:662
 AliAnalysisTaskPID.cxx:663
 AliAnalysisTaskPID.cxx:664
 AliAnalysisTaskPID.cxx:665
 AliAnalysisTaskPID.cxx:666
 AliAnalysisTaskPID.cxx:667
 AliAnalysisTaskPID.cxx:668
 AliAnalysisTaskPID.cxx:669
 AliAnalysisTaskPID.cxx:670
 AliAnalysisTaskPID.cxx:671
 AliAnalysisTaskPID.cxx:672
 AliAnalysisTaskPID.cxx:673
 AliAnalysisTaskPID.cxx:674
 AliAnalysisTaskPID.cxx:675
 AliAnalysisTaskPID.cxx:676
 AliAnalysisTaskPID.cxx:677
 AliAnalysisTaskPID.cxx:678
 AliAnalysisTaskPID.cxx:679
 AliAnalysisTaskPID.cxx:680
 AliAnalysisTaskPID.cxx:681
 AliAnalysisTaskPID.cxx:682
 AliAnalysisTaskPID.cxx:683
 AliAnalysisTaskPID.cxx:684
 AliAnalysisTaskPID.cxx:685
 AliAnalysisTaskPID.cxx:686
 AliAnalysisTaskPID.cxx:687
 AliAnalysisTaskPID.cxx:688
 AliAnalysisTaskPID.cxx:689
 AliAnalysisTaskPID.cxx:690
 AliAnalysisTaskPID.cxx:691
 AliAnalysisTaskPID.cxx:692
 AliAnalysisTaskPID.cxx:693
 AliAnalysisTaskPID.cxx:694
 AliAnalysisTaskPID.cxx:695
 AliAnalysisTaskPID.cxx:696
 AliAnalysisTaskPID.cxx:697
 AliAnalysisTaskPID.cxx:698
 AliAnalysisTaskPID.cxx:699
 AliAnalysisTaskPID.cxx:700
 AliAnalysisTaskPID.cxx:701
 AliAnalysisTaskPID.cxx:702
 AliAnalysisTaskPID.cxx:703
 AliAnalysisTaskPID.cxx:704
 AliAnalysisTaskPID.cxx:705
 AliAnalysisTaskPID.cxx:706
 AliAnalysisTaskPID.cxx:707
 AliAnalysisTaskPID.cxx:708
 AliAnalysisTaskPID.cxx:709
 AliAnalysisTaskPID.cxx:710
 AliAnalysisTaskPID.cxx:711
 AliAnalysisTaskPID.cxx:712
 AliAnalysisTaskPID.cxx:713
 AliAnalysisTaskPID.cxx:714
 AliAnalysisTaskPID.cxx:715
 AliAnalysisTaskPID.cxx:716
 AliAnalysisTaskPID.cxx:717
 AliAnalysisTaskPID.cxx:718
 AliAnalysisTaskPID.cxx:719
 AliAnalysisTaskPID.cxx:720
 AliAnalysisTaskPID.cxx:721
 AliAnalysisTaskPID.cxx:722
 AliAnalysisTaskPID.cxx:723
 AliAnalysisTaskPID.cxx:724
 AliAnalysisTaskPID.cxx:725
 AliAnalysisTaskPID.cxx:726
 AliAnalysisTaskPID.cxx:727
 AliAnalysisTaskPID.cxx:728
 AliAnalysisTaskPID.cxx:729
 AliAnalysisTaskPID.cxx:730
 AliAnalysisTaskPID.cxx:731
 AliAnalysisTaskPID.cxx:732
 AliAnalysisTaskPID.cxx:733
 AliAnalysisTaskPID.cxx:734
 AliAnalysisTaskPID.cxx:735
 AliAnalysisTaskPID.cxx:736
 AliAnalysisTaskPID.cxx:737
 AliAnalysisTaskPID.cxx:738
 AliAnalysisTaskPID.cxx:739
 AliAnalysisTaskPID.cxx:740
 AliAnalysisTaskPID.cxx:741
 AliAnalysisTaskPID.cxx:742
 AliAnalysisTaskPID.cxx:743
 AliAnalysisTaskPID.cxx:744
 AliAnalysisTaskPID.cxx:745
 AliAnalysisTaskPID.cxx:746
 AliAnalysisTaskPID.cxx:747
 AliAnalysisTaskPID.cxx:748
 AliAnalysisTaskPID.cxx:749
 AliAnalysisTaskPID.cxx:750
 AliAnalysisTaskPID.cxx:751
 AliAnalysisTaskPID.cxx:752
 AliAnalysisTaskPID.cxx:753
 AliAnalysisTaskPID.cxx:754
 AliAnalysisTaskPID.cxx:755
 AliAnalysisTaskPID.cxx:756
 AliAnalysisTaskPID.cxx:757
 AliAnalysisTaskPID.cxx:758
 AliAnalysisTaskPID.cxx:759
 AliAnalysisTaskPID.cxx:760
 AliAnalysisTaskPID.cxx:761
 AliAnalysisTaskPID.cxx:762
 AliAnalysisTaskPID.cxx:763
 AliAnalysisTaskPID.cxx:764
 AliAnalysisTaskPID.cxx:765
 AliAnalysisTaskPID.cxx:766
 AliAnalysisTaskPID.cxx:767
 AliAnalysisTaskPID.cxx:768
 AliAnalysisTaskPID.cxx:769
 AliAnalysisTaskPID.cxx:770
 AliAnalysisTaskPID.cxx:771
 AliAnalysisTaskPID.cxx:772
 AliAnalysisTaskPID.cxx:773
 AliAnalysisTaskPID.cxx:774
 AliAnalysisTaskPID.cxx:775
 AliAnalysisTaskPID.cxx:776
 AliAnalysisTaskPID.cxx:777
 AliAnalysisTaskPID.cxx:778
 AliAnalysisTaskPID.cxx:779
 AliAnalysisTaskPID.cxx:780
 AliAnalysisTaskPID.cxx:781
 AliAnalysisTaskPID.cxx:782
 AliAnalysisTaskPID.cxx:783
 AliAnalysisTaskPID.cxx:784
 AliAnalysisTaskPID.cxx:785
 AliAnalysisTaskPID.cxx:786
 AliAnalysisTaskPID.cxx:787
 AliAnalysisTaskPID.cxx:788
 AliAnalysisTaskPID.cxx:789
 AliAnalysisTaskPID.cxx:790
 AliAnalysisTaskPID.cxx:791
 AliAnalysisTaskPID.cxx:792
 AliAnalysisTaskPID.cxx:793
 AliAnalysisTaskPID.cxx:794
 AliAnalysisTaskPID.cxx:795
 AliAnalysisTaskPID.cxx:796
 AliAnalysisTaskPID.cxx:797
 AliAnalysisTaskPID.cxx:798
 AliAnalysisTaskPID.cxx:799
 AliAnalysisTaskPID.cxx:800
 AliAnalysisTaskPID.cxx:801
 AliAnalysisTaskPID.cxx:802
 AliAnalysisTaskPID.cxx:803
 AliAnalysisTaskPID.cxx:804
 AliAnalysisTaskPID.cxx:805
 AliAnalysisTaskPID.cxx:806
 AliAnalysisTaskPID.cxx:807
 AliAnalysisTaskPID.cxx:808
 AliAnalysisTaskPID.cxx:809
 AliAnalysisTaskPID.cxx:810
 AliAnalysisTaskPID.cxx:811
 AliAnalysisTaskPID.cxx:812
 AliAnalysisTaskPID.cxx:813
 AliAnalysisTaskPID.cxx:814
 AliAnalysisTaskPID.cxx:815
 AliAnalysisTaskPID.cxx:816
 AliAnalysisTaskPID.cxx:817
 AliAnalysisTaskPID.cxx:818
 AliAnalysisTaskPID.cxx:819
 AliAnalysisTaskPID.cxx:820
 AliAnalysisTaskPID.cxx:821
 AliAnalysisTaskPID.cxx:822
 AliAnalysisTaskPID.cxx:823
 AliAnalysisTaskPID.cxx:824
 AliAnalysisTaskPID.cxx:825
 AliAnalysisTaskPID.cxx:826
 AliAnalysisTaskPID.cxx:827
 AliAnalysisTaskPID.cxx:828
 AliAnalysisTaskPID.cxx:829
 AliAnalysisTaskPID.cxx:830
 AliAnalysisTaskPID.cxx:831
 AliAnalysisTaskPID.cxx:832
 AliAnalysisTaskPID.cxx:833
 AliAnalysisTaskPID.cxx:834
 AliAnalysisTaskPID.cxx:835
 AliAnalysisTaskPID.cxx:836
 AliAnalysisTaskPID.cxx:837
 AliAnalysisTaskPID.cxx:838
 AliAnalysisTaskPID.cxx:839
 AliAnalysisTaskPID.cxx:840
 AliAnalysisTaskPID.cxx:841
 AliAnalysisTaskPID.cxx:842
 AliAnalysisTaskPID.cxx:843
 AliAnalysisTaskPID.cxx:844
 AliAnalysisTaskPID.cxx:845
 AliAnalysisTaskPID.cxx:846
 AliAnalysisTaskPID.cxx:847
 AliAnalysisTaskPID.cxx:848
 AliAnalysisTaskPID.cxx:849
 AliAnalysisTaskPID.cxx:850
 AliAnalysisTaskPID.cxx:851
 AliAnalysisTaskPID.cxx:852
 AliAnalysisTaskPID.cxx:853
 AliAnalysisTaskPID.cxx:854
 AliAnalysisTaskPID.cxx:855
 AliAnalysisTaskPID.cxx:856
 AliAnalysisTaskPID.cxx:857
 AliAnalysisTaskPID.cxx:858
 AliAnalysisTaskPID.cxx:859
 AliAnalysisTaskPID.cxx:860
 AliAnalysisTaskPID.cxx:861
 AliAnalysisTaskPID.cxx:862
 AliAnalysisTaskPID.cxx:863
 AliAnalysisTaskPID.cxx:864
 AliAnalysisTaskPID.cxx:865
 AliAnalysisTaskPID.cxx:866
 AliAnalysisTaskPID.cxx:867
 AliAnalysisTaskPID.cxx:868
 AliAnalysisTaskPID.cxx:869
 AliAnalysisTaskPID.cxx:870
 AliAnalysisTaskPID.cxx:871
 AliAnalysisTaskPID.cxx:872
 AliAnalysisTaskPID.cxx:873
 AliAnalysisTaskPID.cxx:874
 AliAnalysisTaskPID.cxx:875
 AliAnalysisTaskPID.cxx:876
 AliAnalysisTaskPID.cxx:877
 AliAnalysisTaskPID.cxx:878
 AliAnalysisTaskPID.cxx:879
 AliAnalysisTaskPID.cxx:880
 AliAnalysisTaskPID.cxx:881
 AliAnalysisTaskPID.cxx:882
 AliAnalysisTaskPID.cxx:883
 AliAnalysisTaskPID.cxx:884
 AliAnalysisTaskPID.cxx:885
 AliAnalysisTaskPID.cxx:886
 AliAnalysisTaskPID.cxx:887
 AliAnalysisTaskPID.cxx:888
 AliAnalysisTaskPID.cxx:889
 AliAnalysisTaskPID.cxx:890
 AliAnalysisTaskPID.cxx:891
 AliAnalysisTaskPID.cxx:892
 AliAnalysisTaskPID.cxx:893
 AliAnalysisTaskPID.cxx:894
 AliAnalysisTaskPID.cxx:895
 AliAnalysisTaskPID.cxx:896
 AliAnalysisTaskPID.cxx:897
 AliAnalysisTaskPID.cxx:898
 AliAnalysisTaskPID.cxx:899
 AliAnalysisTaskPID.cxx:900
 AliAnalysisTaskPID.cxx:901
 AliAnalysisTaskPID.cxx:902
 AliAnalysisTaskPID.cxx:903
 AliAnalysisTaskPID.cxx:904
 AliAnalysisTaskPID.cxx:905
 AliAnalysisTaskPID.cxx:906
 AliAnalysisTaskPID.cxx:907
 AliAnalysisTaskPID.cxx:908
 AliAnalysisTaskPID.cxx:909
 AliAnalysisTaskPID.cxx:910
 AliAnalysisTaskPID.cxx:911
 AliAnalysisTaskPID.cxx:912
 AliAnalysisTaskPID.cxx:913
 AliAnalysisTaskPID.cxx:914
 AliAnalysisTaskPID.cxx:915
 AliAnalysisTaskPID.cxx:916
 AliAnalysisTaskPID.cxx:917
 AliAnalysisTaskPID.cxx:918
 AliAnalysisTaskPID.cxx:919
 AliAnalysisTaskPID.cxx:920
 AliAnalysisTaskPID.cxx:921
 AliAnalysisTaskPID.cxx:922
 AliAnalysisTaskPID.cxx:923
 AliAnalysisTaskPID.cxx:924
 AliAnalysisTaskPID.cxx:925
 AliAnalysisTaskPID.cxx:926
 AliAnalysisTaskPID.cxx:927
 AliAnalysisTaskPID.cxx:928
 AliAnalysisTaskPID.cxx:929
 AliAnalysisTaskPID.cxx:930
 AliAnalysisTaskPID.cxx:931
 AliAnalysisTaskPID.cxx:932
 AliAnalysisTaskPID.cxx:933
 AliAnalysisTaskPID.cxx:934
 AliAnalysisTaskPID.cxx:935
 AliAnalysisTaskPID.cxx:936
 AliAnalysisTaskPID.cxx:937
 AliAnalysisTaskPID.cxx:938
 AliAnalysisTaskPID.cxx:939
 AliAnalysisTaskPID.cxx:940
 AliAnalysisTaskPID.cxx:941
 AliAnalysisTaskPID.cxx:942
 AliAnalysisTaskPID.cxx:943
 AliAnalysisTaskPID.cxx:944
 AliAnalysisTaskPID.cxx:945
 AliAnalysisTaskPID.cxx:946
 AliAnalysisTaskPID.cxx:947
 AliAnalysisTaskPID.cxx:948
 AliAnalysisTaskPID.cxx:949
 AliAnalysisTaskPID.cxx:950
 AliAnalysisTaskPID.cxx:951
 AliAnalysisTaskPID.cxx:952
 AliAnalysisTaskPID.cxx:953
 AliAnalysisTaskPID.cxx:954
 AliAnalysisTaskPID.cxx:955
 AliAnalysisTaskPID.cxx:956
 AliAnalysisTaskPID.cxx:957
 AliAnalysisTaskPID.cxx:958
 AliAnalysisTaskPID.cxx:959
 AliAnalysisTaskPID.cxx:960
 AliAnalysisTaskPID.cxx:961
 AliAnalysisTaskPID.cxx:962
 AliAnalysisTaskPID.cxx:963
 AliAnalysisTaskPID.cxx:964
 AliAnalysisTaskPID.cxx:965
 AliAnalysisTaskPID.cxx:966
 AliAnalysisTaskPID.cxx:967
 AliAnalysisTaskPID.cxx:968
 AliAnalysisTaskPID.cxx:969
 AliAnalysisTaskPID.cxx:970
 AliAnalysisTaskPID.cxx:971
 AliAnalysisTaskPID.cxx:972
 AliAnalysisTaskPID.cxx:973
 AliAnalysisTaskPID.cxx:974
 AliAnalysisTaskPID.cxx:975
 AliAnalysisTaskPID.cxx:976
 AliAnalysisTaskPID.cxx:977
 AliAnalysisTaskPID.cxx:978
 AliAnalysisTaskPID.cxx:979
 AliAnalysisTaskPID.cxx:980
 AliAnalysisTaskPID.cxx:981
 AliAnalysisTaskPID.cxx:982
 AliAnalysisTaskPID.cxx:983
 AliAnalysisTaskPID.cxx:984
 AliAnalysisTaskPID.cxx:985
 AliAnalysisTaskPID.cxx:986
 AliAnalysisTaskPID.cxx:987
 AliAnalysisTaskPID.cxx:988
 AliAnalysisTaskPID.cxx:989
 AliAnalysisTaskPID.cxx:990
 AliAnalysisTaskPID.cxx:991
 AliAnalysisTaskPID.cxx:992
 AliAnalysisTaskPID.cxx:993
 AliAnalysisTaskPID.cxx:994
 AliAnalysisTaskPID.cxx:995
 AliAnalysisTaskPID.cxx:996
 AliAnalysisTaskPID.cxx:997
 AliAnalysisTaskPID.cxx:998
 AliAnalysisTaskPID.cxx:999
 AliAnalysisTaskPID.cxx:1000
 AliAnalysisTaskPID.cxx:1001
 AliAnalysisTaskPID.cxx:1002
 AliAnalysisTaskPID.cxx:1003
 AliAnalysisTaskPID.cxx:1004
 AliAnalysisTaskPID.cxx:1005
 AliAnalysisTaskPID.cxx:1006
 AliAnalysisTaskPID.cxx:1007
 AliAnalysisTaskPID.cxx:1008
 AliAnalysisTaskPID.cxx:1009
 AliAnalysisTaskPID.cxx:1010
 AliAnalysisTaskPID.cxx:1011
 AliAnalysisTaskPID.cxx:1012
 AliAnalysisTaskPID.cxx:1013
 AliAnalysisTaskPID.cxx:1014
 AliAnalysisTaskPID.cxx:1015
 AliAnalysisTaskPID.cxx:1016
 AliAnalysisTaskPID.cxx:1017
 AliAnalysisTaskPID.cxx:1018
 AliAnalysisTaskPID.cxx:1019
 AliAnalysisTaskPID.cxx:1020
 AliAnalysisTaskPID.cxx:1021
 AliAnalysisTaskPID.cxx:1022
 AliAnalysisTaskPID.cxx:1023
 AliAnalysisTaskPID.cxx:1024
 AliAnalysisTaskPID.cxx:1025
 AliAnalysisTaskPID.cxx:1026
 AliAnalysisTaskPID.cxx:1027
 AliAnalysisTaskPID.cxx:1028
 AliAnalysisTaskPID.cxx:1029
 AliAnalysisTaskPID.cxx:1030
 AliAnalysisTaskPID.cxx:1031
 AliAnalysisTaskPID.cxx:1032
 AliAnalysisTaskPID.cxx:1033
 AliAnalysisTaskPID.cxx:1034
 AliAnalysisTaskPID.cxx:1035
 AliAnalysisTaskPID.cxx:1036
 AliAnalysisTaskPID.cxx:1037
 AliAnalysisTaskPID.cxx:1038
 AliAnalysisTaskPID.cxx:1039
 AliAnalysisTaskPID.cxx:1040
 AliAnalysisTaskPID.cxx:1041
 AliAnalysisTaskPID.cxx:1042
 AliAnalysisTaskPID.cxx:1043
 AliAnalysisTaskPID.cxx:1044
 AliAnalysisTaskPID.cxx:1045
 AliAnalysisTaskPID.cxx:1046
 AliAnalysisTaskPID.cxx:1047
 AliAnalysisTaskPID.cxx:1048
 AliAnalysisTaskPID.cxx:1049
 AliAnalysisTaskPID.cxx:1050
 AliAnalysisTaskPID.cxx:1051
 AliAnalysisTaskPID.cxx:1052
 AliAnalysisTaskPID.cxx:1053
 AliAnalysisTaskPID.cxx:1054
 AliAnalysisTaskPID.cxx:1055
 AliAnalysisTaskPID.cxx:1056
 AliAnalysisTaskPID.cxx:1057
 AliAnalysisTaskPID.cxx:1058
 AliAnalysisTaskPID.cxx:1059
 AliAnalysisTaskPID.cxx:1060
 AliAnalysisTaskPID.cxx:1061
 AliAnalysisTaskPID.cxx:1062
 AliAnalysisTaskPID.cxx:1063
 AliAnalysisTaskPID.cxx:1064
 AliAnalysisTaskPID.cxx:1065
 AliAnalysisTaskPID.cxx:1066
 AliAnalysisTaskPID.cxx:1067
 AliAnalysisTaskPID.cxx:1068
 AliAnalysisTaskPID.cxx:1069
 AliAnalysisTaskPID.cxx:1070
 AliAnalysisTaskPID.cxx:1071
 AliAnalysisTaskPID.cxx:1072
 AliAnalysisTaskPID.cxx:1073
 AliAnalysisTaskPID.cxx:1074
 AliAnalysisTaskPID.cxx:1075
 AliAnalysisTaskPID.cxx:1076
 AliAnalysisTaskPID.cxx:1077
 AliAnalysisTaskPID.cxx:1078
 AliAnalysisTaskPID.cxx:1079
 AliAnalysisTaskPID.cxx:1080
 AliAnalysisTaskPID.cxx:1081
 AliAnalysisTaskPID.cxx:1082
 AliAnalysisTaskPID.cxx:1083
 AliAnalysisTaskPID.cxx:1084
 AliAnalysisTaskPID.cxx:1085
 AliAnalysisTaskPID.cxx:1086
 AliAnalysisTaskPID.cxx:1087
 AliAnalysisTaskPID.cxx:1088
 AliAnalysisTaskPID.cxx:1089
 AliAnalysisTaskPID.cxx:1090
 AliAnalysisTaskPID.cxx:1091
 AliAnalysisTaskPID.cxx:1092
 AliAnalysisTaskPID.cxx:1093
 AliAnalysisTaskPID.cxx:1094
 AliAnalysisTaskPID.cxx:1095
 AliAnalysisTaskPID.cxx:1096
 AliAnalysisTaskPID.cxx:1097
 AliAnalysisTaskPID.cxx:1098
 AliAnalysisTaskPID.cxx:1099
 AliAnalysisTaskPID.cxx:1100
 AliAnalysisTaskPID.cxx:1101
 AliAnalysisTaskPID.cxx:1102
 AliAnalysisTaskPID.cxx:1103
 AliAnalysisTaskPID.cxx:1104
 AliAnalysisTaskPID.cxx:1105
 AliAnalysisTaskPID.cxx:1106
 AliAnalysisTaskPID.cxx:1107
 AliAnalysisTaskPID.cxx:1108
 AliAnalysisTaskPID.cxx:1109
 AliAnalysisTaskPID.cxx:1110
 AliAnalysisTaskPID.cxx:1111
 AliAnalysisTaskPID.cxx:1112
 AliAnalysisTaskPID.cxx:1113
 AliAnalysisTaskPID.cxx:1114
 AliAnalysisTaskPID.cxx:1115
 AliAnalysisTaskPID.cxx:1116
 AliAnalysisTaskPID.cxx:1117
 AliAnalysisTaskPID.cxx:1118
 AliAnalysisTaskPID.cxx:1119
 AliAnalysisTaskPID.cxx:1120
 AliAnalysisTaskPID.cxx:1121
 AliAnalysisTaskPID.cxx:1122
 AliAnalysisTaskPID.cxx:1123
 AliAnalysisTaskPID.cxx:1124
 AliAnalysisTaskPID.cxx:1125
 AliAnalysisTaskPID.cxx:1126
 AliAnalysisTaskPID.cxx:1127
 AliAnalysisTaskPID.cxx:1128
 AliAnalysisTaskPID.cxx:1129
 AliAnalysisTaskPID.cxx:1130
 AliAnalysisTaskPID.cxx:1131
 AliAnalysisTaskPID.cxx:1132
 AliAnalysisTaskPID.cxx:1133
 AliAnalysisTaskPID.cxx:1134
 AliAnalysisTaskPID.cxx:1135
 AliAnalysisTaskPID.cxx:1136
 AliAnalysisTaskPID.cxx:1137
 AliAnalysisTaskPID.cxx:1138
 AliAnalysisTaskPID.cxx:1139
 AliAnalysisTaskPID.cxx:1140
 AliAnalysisTaskPID.cxx:1141
 AliAnalysisTaskPID.cxx:1142
 AliAnalysisTaskPID.cxx:1143
 AliAnalysisTaskPID.cxx:1144
 AliAnalysisTaskPID.cxx:1145
 AliAnalysisTaskPID.cxx:1146
 AliAnalysisTaskPID.cxx:1147
 AliAnalysisTaskPID.cxx:1148
 AliAnalysisTaskPID.cxx:1149
 AliAnalysisTaskPID.cxx:1150
 AliAnalysisTaskPID.cxx:1151
 AliAnalysisTaskPID.cxx:1152
 AliAnalysisTaskPID.cxx:1153
 AliAnalysisTaskPID.cxx:1154
 AliAnalysisTaskPID.cxx:1155
 AliAnalysisTaskPID.cxx:1156
 AliAnalysisTaskPID.cxx:1157
 AliAnalysisTaskPID.cxx:1158
 AliAnalysisTaskPID.cxx:1159
 AliAnalysisTaskPID.cxx:1160
 AliAnalysisTaskPID.cxx:1161
 AliAnalysisTaskPID.cxx:1162
 AliAnalysisTaskPID.cxx:1163
 AliAnalysisTaskPID.cxx:1164
 AliAnalysisTaskPID.cxx:1165
 AliAnalysisTaskPID.cxx:1166
 AliAnalysisTaskPID.cxx:1167
 AliAnalysisTaskPID.cxx:1168
 AliAnalysisTaskPID.cxx:1169
 AliAnalysisTaskPID.cxx:1170
 AliAnalysisTaskPID.cxx:1171
 AliAnalysisTaskPID.cxx:1172
 AliAnalysisTaskPID.cxx:1173
 AliAnalysisTaskPID.cxx:1174
 AliAnalysisTaskPID.cxx:1175
 AliAnalysisTaskPID.cxx:1176
 AliAnalysisTaskPID.cxx:1177
 AliAnalysisTaskPID.cxx:1178
 AliAnalysisTaskPID.cxx:1179
 AliAnalysisTaskPID.cxx:1180
 AliAnalysisTaskPID.cxx:1181
 AliAnalysisTaskPID.cxx:1182
 AliAnalysisTaskPID.cxx:1183
 AliAnalysisTaskPID.cxx:1184
 AliAnalysisTaskPID.cxx:1185
 AliAnalysisTaskPID.cxx:1186
 AliAnalysisTaskPID.cxx:1187
 AliAnalysisTaskPID.cxx:1188
 AliAnalysisTaskPID.cxx:1189
 AliAnalysisTaskPID.cxx:1190
 AliAnalysisTaskPID.cxx:1191
 AliAnalysisTaskPID.cxx:1192
 AliAnalysisTaskPID.cxx:1193
 AliAnalysisTaskPID.cxx:1194
 AliAnalysisTaskPID.cxx:1195
 AliAnalysisTaskPID.cxx:1196
 AliAnalysisTaskPID.cxx:1197
 AliAnalysisTaskPID.cxx:1198
 AliAnalysisTaskPID.cxx:1199
 AliAnalysisTaskPID.cxx:1200
 AliAnalysisTaskPID.cxx:1201
 AliAnalysisTaskPID.cxx:1202
 AliAnalysisTaskPID.cxx:1203
 AliAnalysisTaskPID.cxx:1204
 AliAnalysisTaskPID.cxx:1205
 AliAnalysisTaskPID.cxx:1206
 AliAnalysisTaskPID.cxx:1207
 AliAnalysisTaskPID.cxx:1208
 AliAnalysisTaskPID.cxx:1209
 AliAnalysisTaskPID.cxx:1210
 AliAnalysisTaskPID.cxx:1211
 AliAnalysisTaskPID.cxx:1212
 AliAnalysisTaskPID.cxx:1213
 AliAnalysisTaskPID.cxx:1214
 AliAnalysisTaskPID.cxx:1215
 AliAnalysisTaskPID.cxx:1216
 AliAnalysisTaskPID.cxx:1217
 AliAnalysisTaskPID.cxx:1218
 AliAnalysisTaskPID.cxx:1219
 AliAnalysisTaskPID.cxx:1220
 AliAnalysisTaskPID.cxx:1221
 AliAnalysisTaskPID.cxx:1222
 AliAnalysisTaskPID.cxx:1223
 AliAnalysisTaskPID.cxx:1224
 AliAnalysisTaskPID.cxx:1225
 AliAnalysisTaskPID.cxx:1226
 AliAnalysisTaskPID.cxx:1227
 AliAnalysisTaskPID.cxx:1228
 AliAnalysisTaskPID.cxx:1229
 AliAnalysisTaskPID.cxx:1230
 AliAnalysisTaskPID.cxx:1231
 AliAnalysisTaskPID.cxx:1232
 AliAnalysisTaskPID.cxx:1233
 AliAnalysisTaskPID.cxx:1234
 AliAnalysisTaskPID.cxx:1235
 AliAnalysisTaskPID.cxx:1236
 AliAnalysisTaskPID.cxx:1237
 AliAnalysisTaskPID.cxx:1238
 AliAnalysisTaskPID.cxx:1239
 AliAnalysisTaskPID.cxx:1240
 AliAnalysisTaskPID.cxx:1241
 AliAnalysisTaskPID.cxx:1242
 AliAnalysisTaskPID.cxx:1243
 AliAnalysisTaskPID.cxx:1244
 AliAnalysisTaskPID.cxx:1245
 AliAnalysisTaskPID.cxx:1246
 AliAnalysisTaskPID.cxx:1247
 AliAnalysisTaskPID.cxx:1248
 AliAnalysisTaskPID.cxx:1249
 AliAnalysisTaskPID.cxx:1250
 AliAnalysisTaskPID.cxx:1251
 AliAnalysisTaskPID.cxx:1252
 AliAnalysisTaskPID.cxx:1253
 AliAnalysisTaskPID.cxx:1254
 AliAnalysisTaskPID.cxx:1255
 AliAnalysisTaskPID.cxx:1256
 AliAnalysisTaskPID.cxx:1257
 AliAnalysisTaskPID.cxx:1258
 AliAnalysisTaskPID.cxx:1259
 AliAnalysisTaskPID.cxx:1260
 AliAnalysisTaskPID.cxx:1261
 AliAnalysisTaskPID.cxx:1262
 AliAnalysisTaskPID.cxx:1263
 AliAnalysisTaskPID.cxx:1264
 AliAnalysisTaskPID.cxx:1265
 AliAnalysisTaskPID.cxx:1266
 AliAnalysisTaskPID.cxx:1267
 AliAnalysisTaskPID.cxx:1268
 AliAnalysisTaskPID.cxx:1269
 AliAnalysisTaskPID.cxx:1270
 AliAnalysisTaskPID.cxx:1271
 AliAnalysisTaskPID.cxx:1272
 AliAnalysisTaskPID.cxx:1273
 AliAnalysisTaskPID.cxx:1274
 AliAnalysisTaskPID.cxx:1275
 AliAnalysisTaskPID.cxx:1276
 AliAnalysisTaskPID.cxx:1277
 AliAnalysisTaskPID.cxx:1278
 AliAnalysisTaskPID.cxx:1279
 AliAnalysisTaskPID.cxx:1280
 AliAnalysisTaskPID.cxx:1281
 AliAnalysisTaskPID.cxx:1282
 AliAnalysisTaskPID.cxx:1283
 AliAnalysisTaskPID.cxx:1284
 AliAnalysisTaskPID.cxx:1285
 AliAnalysisTaskPID.cxx:1286
 AliAnalysisTaskPID.cxx:1287
 AliAnalysisTaskPID.cxx:1288
 AliAnalysisTaskPID.cxx:1289
 AliAnalysisTaskPID.cxx:1290
 AliAnalysisTaskPID.cxx:1291
 AliAnalysisTaskPID.cxx:1292
 AliAnalysisTaskPID.cxx:1293
 AliAnalysisTaskPID.cxx:1294
 AliAnalysisTaskPID.cxx:1295
 AliAnalysisTaskPID.cxx:1296
 AliAnalysisTaskPID.cxx:1297
 AliAnalysisTaskPID.cxx:1298
 AliAnalysisTaskPID.cxx:1299
 AliAnalysisTaskPID.cxx:1300
 AliAnalysisTaskPID.cxx:1301
 AliAnalysisTaskPID.cxx:1302
 AliAnalysisTaskPID.cxx:1303
 AliAnalysisTaskPID.cxx:1304
 AliAnalysisTaskPID.cxx:1305
 AliAnalysisTaskPID.cxx:1306
 AliAnalysisTaskPID.cxx:1307
 AliAnalysisTaskPID.cxx:1308
 AliAnalysisTaskPID.cxx:1309
 AliAnalysisTaskPID.cxx:1310
 AliAnalysisTaskPID.cxx:1311
 AliAnalysisTaskPID.cxx:1312
 AliAnalysisTaskPID.cxx:1313
 AliAnalysisTaskPID.cxx:1314
 AliAnalysisTaskPID.cxx:1315
 AliAnalysisTaskPID.cxx:1316
 AliAnalysisTaskPID.cxx:1317
 AliAnalysisTaskPID.cxx:1318
 AliAnalysisTaskPID.cxx:1319
 AliAnalysisTaskPID.cxx:1320
 AliAnalysisTaskPID.cxx:1321
 AliAnalysisTaskPID.cxx:1322
 AliAnalysisTaskPID.cxx:1323
 AliAnalysisTaskPID.cxx:1324
 AliAnalysisTaskPID.cxx:1325
 AliAnalysisTaskPID.cxx:1326
 AliAnalysisTaskPID.cxx:1327
 AliAnalysisTaskPID.cxx:1328
 AliAnalysisTaskPID.cxx:1329
 AliAnalysisTaskPID.cxx:1330
 AliAnalysisTaskPID.cxx:1331
 AliAnalysisTaskPID.cxx:1332
 AliAnalysisTaskPID.cxx:1333
 AliAnalysisTaskPID.cxx:1334
 AliAnalysisTaskPID.cxx:1335
 AliAnalysisTaskPID.cxx:1336
 AliAnalysisTaskPID.cxx:1337
 AliAnalysisTaskPID.cxx:1338
 AliAnalysisTaskPID.cxx:1339
 AliAnalysisTaskPID.cxx:1340
 AliAnalysisTaskPID.cxx:1341
 AliAnalysisTaskPID.cxx:1342
 AliAnalysisTaskPID.cxx:1343
 AliAnalysisTaskPID.cxx:1344
 AliAnalysisTaskPID.cxx:1345
 AliAnalysisTaskPID.cxx:1346
 AliAnalysisTaskPID.cxx:1347
 AliAnalysisTaskPID.cxx:1348
 AliAnalysisTaskPID.cxx:1349
 AliAnalysisTaskPID.cxx:1350
 AliAnalysisTaskPID.cxx:1351
 AliAnalysisTaskPID.cxx:1352
 AliAnalysisTaskPID.cxx:1353
 AliAnalysisTaskPID.cxx:1354
 AliAnalysisTaskPID.cxx:1355
 AliAnalysisTaskPID.cxx:1356
 AliAnalysisTaskPID.cxx:1357
 AliAnalysisTaskPID.cxx:1358
 AliAnalysisTaskPID.cxx:1359
 AliAnalysisTaskPID.cxx:1360
 AliAnalysisTaskPID.cxx:1361
 AliAnalysisTaskPID.cxx:1362
 AliAnalysisTaskPID.cxx:1363
 AliAnalysisTaskPID.cxx:1364
 AliAnalysisTaskPID.cxx:1365
 AliAnalysisTaskPID.cxx:1366
 AliAnalysisTaskPID.cxx:1367
 AliAnalysisTaskPID.cxx:1368
 AliAnalysisTaskPID.cxx:1369
 AliAnalysisTaskPID.cxx:1370
 AliAnalysisTaskPID.cxx:1371
 AliAnalysisTaskPID.cxx:1372
 AliAnalysisTaskPID.cxx:1373
 AliAnalysisTaskPID.cxx:1374
 AliAnalysisTaskPID.cxx:1375
 AliAnalysisTaskPID.cxx:1376
 AliAnalysisTaskPID.cxx:1377
 AliAnalysisTaskPID.cxx:1378
 AliAnalysisTaskPID.cxx:1379
 AliAnalysisTaskPID.cxx:1380
 AliAnalysisTaskPID.cxx:1381
 AliAnalysisTaskPID.cxx:1382
 AliAnalysisTaskPID.cxx:1383
 AliAnalysisTaskPID.cxx:1384
 AliAnalysisTaskPID.cxx:1385
 AliAnalysisTaskPID.cxx:1386
 AliAnalysisTaskPID.cxx:1387
 AliAnalysisTaskPID.cxx:1388
 AliAnalysisTaskPID.cxx:1389
 AliAnalysisTaskPID.cxx:1390
 AliAnalysisTaskPID.cxx:1391
 AliAnalysisTaskPID.cxx:1392
 AliAnalysisTaskPID.cxx:1393
 AliAnalysisTaskPID.cxx:1394
 AliAnalysisTaskPID.cxx:1395
 AliAnalysisTaskPID.cxx:1396
 AliAnalysisTaskPID.cxx:1397
 AliAnalysisTaskPID.cxx:1398
 AliAnalysisTaskPID.cxx:1399
 AliAnalysisTaskPID.cxx:1400
 AliAnalysisTaskPID.cxx:1401
 AliAnalysisTaskPID.cxx:1402
 AliAnalysisTaskPID.cxx:1403
 AliAnalysisTaskPID.cxx:1404
 AliAnalysisTaskPID.cxx:1405
 AliAnalysisTaskPID.cxx:1406
 AliAnalysisTaskPID.cxx:1407
 AliAnalysisTaskPID.cxx:1408
 AliAnalysisTaskPID.cxx:1409
 AliAnalysisTaskPID.cxx:1410
 AliAnalysisTaskPID.cxx:1411
 AliAnalysisTaskPID.cxx:1412
 AliAnalysisTaskPID.cxx:1413
 AliAnalysisTaskPID.cxx:1414
 AliAnalysisTaskPID.cxx:1415
 AliAnalysisTaskPID.cxx:1416
 AliAnalysisTaskPID.cxx:1417
 AliAnalysisTaskPID.cxx:1418
 AliAnalysisTaskPID.cxx:1419
 AliAnalysisTaskPID.cxx:1420
 AliAnalysisTaskPID.cxx:1421
 AliAnalysisTaskPID.cxx:1422
 AliAnalysisTaskPID.cxx:1423
 AliAnalysisTaskPID.cxx:1424
 AliAnalysisTaskPID.cxx:1425
 AliAnalysisTaskPID.cxx:1426
 AliAnalysisTaskPID.cxx:1427
 AliAnalysisTaskPID.cxx:1428
 AliAnalysisTaskPID.cxx:1429
 AliAnalysisTaskPID.cxx:1430
 AliAnalysisTaskPID.cxx:1431
 AliAnalysisTaskPID.cxx:1432
 AliAnalysisTaskPID.cxx:1433
 AliAnalysisTaskPID.cxx:1434
 AliAnalysisTaskPID.cxx:1435
 AliAnalysisTaskPID.cxx:1436
 AliAnalysisTaskPID.cxx:1437
 AliAnalysisTaskPID.cxx:1438
 AliAnalysisTaskPID.cxx:1439
 AliAnalysisTaskPID.cxx:1440
 AliAnalysisTaskPID.cxx:1441
 AliAnalysisTaskPID.cxx:1442
 AliAnalysisTaskPID.cxx:1443
 AliAnalysisTaskPID.cxx:1444
 AliAnalysisTaskPID.cxx:1445
 AliAnalysisTaskPID.cxx:1446
 AliAnalysisTaskPID.cxx:1447
 AliAnalysisTaskPID.cxx:1448
 AliAnalysisTaskPID.cxx:1449
 AliAnalysisTaskPID.cxx:1450
 AliAnalysisTaskPID.cxx:1451
 AliAnalysisTaskPID.cxx:1452
 AliAnalysisTaskPID.cxx:1453
 AliAnalysisTaskPID.cxx:1454
 AliAnalysisTaskPID.cxx:1455
 AliAnalysisTaskPID.cxx:1456
 AliAnalysisTaskPID.cxx:1457
 AliAnalysisTaskPID.cxx:1458
 AliAnalysisTaskPID.cxx:1459
 AliAnalysisTaskPID.cxx:1460
 AliAnalysisTaskPID.cxx:1461
 AliAnalysisTaskPID.cxx:1462
 AliAnalysisTaskPID.cxx:1463
 AliAnalysisTaskPID.cxx:1464
 AliAnalysisTaskPID.cxx:1465
 AliAnalysisTaskPID.cxx:1466
 AliAnalysisTaskPID.cxx:1467
 AliAnalysisTaskPID.cxx:1468
 AliAnalysisTaskPID.cxx:1469
 AliAnalysisTaskPID.cxx:1470
 AliAnalysisTaskPID.cxx:1471
 AliAnalysisTaskPID.cxx:1472
 AliAnalysisTaskPID.cxx:1473
 AliAnalysisTaskPID.cxx:1474
 AliAnalysisTaskPID.cxx:1475
 AliAnalysisTaskPID.cxx:1476
 AliAnalysisTaskPID.cxx:1477
 AliAnalysisTaskPID.cxx:1478
 AliAnalysisTaskPID.cxx:1479
 AliAnalysisTaskPID.cxx:1480
 AliAnalysisTaskPID.cxx:1481
 AliAnalysisTaskPID.cxx:1482
 AliAnalysisTaskPID.cxx:1483
 AliAnalysisTaskPID.cxx:1484
 AliAnalysisTaskPID.cxx:1485
 AliAnalysisTaskPID.cxx:1486
 AliAnalysisTaskPID.cxx:1487
 AliAnalysisTaskPID.cxx:1488
 AliAnalysisTaskPID.cxx:1489
 AliAnalysisTaskPID.cxx:1490
 AliAnalysisTaskPID.cxx:1491
 AliAnalysisTaskPID.cxx:1492
 AliAnalysisTaskPID.cxx:1493
 AliAnalysisTaskPID.cxx:1494
 AliAnalysisTaskPID.cxx:1495
 AliAnalysisTaskPID.cxx:1496
 AliAnalysisTaskPID.cxx:1497
 AliAnalysisTaskPID.cxx:1498
 AliAnalysisTaskPID.cxx:1499
 AliAnalysisTaskPID.cxx:1500
 AliAnalysisTaskPID.cxx:1501
 AliAnalysisTaskPID.cxx:1502
 AliAnalysisTaskPID.cxx:1503
 AliAnalysisTaskPID.cxx:1504
 AliAnalysisTaskPID.cxx:1505
 AliAnalysisTaskPID.cxx:1506
 AliAnalysisTaskPID.cxx:1507
 AliAnalysisTaskPID.cxx:1508
 AliAnalysisTaskPID.cxx:1509
 AliAnalysisTaskPID.cxx:1510
 AliAnalysisTaskPID.cxx:1511
 AliAnalysisTaskPID.cxx:1512
 AliAnalysisTaskPID.cxx:1513
 AliAnalysisTaskPID.cxx:1514
 AliAnalysisTaskPID.cxx:1515
 AliAnalysisTaskPID.cxx:1516
 AliAnalysisTaskPID.cxx:1517
 AliAnalysisTaskPID.cxx:1518
 AliAnalysisTaskPID.cxx:1519
 AliAnalysisTaskPID.cxx:1520
 AliAnalysisTaskPID.cxx:1521
 AliAnalysisTaskPID.cxx:1522
 AliAnalysisTaskPID.cxx:1523
 AliAnalysisTaskPID.cxx:1524
 AliAnalysisTaskPID.cxx:1525
 AliAnalysisTaskPID.cxx:1526
 AliAnalysisTaskPID.cxx:1527
 AliAnalysisTaskPID.cxx:1528
 AliAnalysisTaskPID.cxx:1529
 AliAnalysisTaskPID.cxx:1530
 AliAnalysisTaskPID.cxx:1531
 AliAnalysisTaskPID.cxx:1532
 AliAnalysisTaskPID.cxx:1533
 AliAnalysisTaskPID.cxx:1534
 AliAnalysisTaskPID.cxx:1535
 AliAnalysisTaskPID.cxx:1536
 AliAnalysisTaskPID.cxx:1537
 AliAnalysisTaskPID.cxx:1538
 AliAnalysisTaskPID.cxx:1539
 AliAnalysisTaskPID.cxx:1540
 AliAnalysisTaskPID.cxx:1541
 AliAnalysisTaskPID.cxx:1542
 AliAnalysisTaskPID.cxx:1543
 AliAnalysisTaskPID.cxx:1544
 AliAnalysisTaskPID.cxx:1545
 AliAnalysisTaskPID.cxx:1546
 AliAnalysisTaskPID.cxx:1547
 AliAnalysisTaskPID.cxx:1548
 AliAnalysisTaskPID.cxx:1549
 AliAnalysisTaskPID.cxx:1550
 AliAnalysisTaskPID.cxx:1551
 AliAnalysisTaskPID.cxx:1552
 AliAnalysisTaskPID.cxx:1553
 AliAnalysisTaskPID.cxx:1554
 AliAnalysisTaskPID.cxx:1555
 AliAnalysisTaskPID.cxx:1556
 AliAnalysisTaskPID.cxx:1557
 AliAnalysisTaskPID.cxx:1558
 AliAnalysisTaskPID.cxx:1559
 AliAnalysisTaskPID.cxx:1560
 AliAnalysisTaskPID.cxx:1561
 AliAnalysisTaskPID.cxx:1562
 AliAnalysisTaskPID.cxx:1563
 AliAnalysisTaskPID.cxx:1564
 AliAnalysisTaskPID.cxx:1565
 AliAnalysisTaskPID.cxx:1566
 AliAnalysisTaskPID.cxx:1567
 AliAnalysisTaskPID.cxx:1568
 AliAnalysisTaskPID.cxx:1569
 AliAnalysisTaskPID.cxx:1570
 AliAnalysisTaskPID.cxx:1571
 AliAnalysisTaskPID.cxx:1572
 AliAnalysisTaskPID.cxx:1573
 AliAnalysisTaskPID.cxx:1574
 AliAnalysisTaskPID.cxx:1575
 AliAnalysisTaskPID.cxx:1576
 AliAnalysisTaskPID.cxx:1577
 AliAnalysisTaskPID.cxx:1578
 AliAnalysisTaskPID.cxx:1579
 AliAnalysisTaskPID.cxx:1580
 AliAnalysisTaskPID.cxx:1581
 AliAnalysisTaskPID.cxx:1582
 AliAnalysisTaskPID.cxx:1583
 AliAnalysisTaskPID.cxx:1584
 AliAnalysisTaskPID.cxx:1585
 AliAnalysisTaskPID.cxx:1586
 AliAnalysisTaskPID.cxx:1587
 AliAnalysisTaskPID.cxx:1588
 AliAnalysisTaskPID.cxx:1589
 AliAnalysisTaskPID.cxx:1590
 AliAnalysisTaskPID.cxx:1591
 AliAnalysisTaskPID.cxx:1592
 AliAnalysisTaskPID.cxx:1593
 AliAnalysisTaskPID.cxx:1594
 AliAnalysisTaskPID.cxx:1595
 AliAnalysisTaskPID.cxx:1596
 AliAnalysisTaskPID.cxx:1597
 AliAnalysisTaskPID.cxx:1598
 AliAnalysisTaskPID.cxx:1599
 AliAnalysisTaskPID.cxx:1600
 AliAnalysisTaskPID.cxx:1601
 AliAnalysisTaskPID.cxx:1602
 AliAnalysisTaskPID.cxx:1603
 AliAnalysisTaskPID.cxx:1604
 AliAnalysisTaskPID.cxx:1605
 AliAnalysisTaskPID.cxx:1606
 AliAnalysisTaskPID.cxx:1607
 AliAnalysisTaskPID.cxx:1608
 AliAnalysisTaskPID.cxx:1609
 AliAnalysisTaskPID.cxx:1610
 AliAnalysisTaskPID.cxx:1611
 AliAnalysisTaskPID.cxx:1612
 AliAnalysisTaskPID.cxx:1613
 AliAnalysisTaskPID.cxx:1614
 AliAnalysisTaskPID.cxx:1615
 AliAnalysisTaskPID.cxx:1616
 AliAnalysisTaskPID.cxx:1617
 AliAnalysisTaskPID.cxx:1618
 AliAnalysisTaskPID.cxx:1619
 AliAnalysisTaskPID.cxx:1620
 AliAnalysisTaskPID.cxx:1621
 AliAnalysisTaskPID.cxx:1622
 AliAnalysisTaskPID.cxx:1623
 AliAnalysisTaskPID.cxx:1624
 AliAnalysisTaskPID.cxx:1625
 AliAnalysisTaskPID.cxx:1626
 AliAnalysisTaskPID.cxx:1627
 AliAnalysisTaskPID.cxx:1628
 AliAnalysisTaskPID.cxx:1629
 AliAnalysisTaskPID.cxx:1630
 AliAnalysisTaskPID.cxx:1631
 AliAnalysisTaskPID.cxx:1632
 AliAnalysisTaskPID.cxx:1633
 AliAnalysisTaskPID.cxx:1634
 AliAnalysisTaskPID.cxx:1635
 AliAnalysisTaskPID.cxx:1636
 AliAnalysisTaskPID.cxx:1637
 AliAnalysisTaskPID.cxx:1638
 AliAnalysisTaskPID.cxx:1639
 AliAnalysisTaskPID.cxx:1640
 AliAnalysisTaskPID.cxx:1641
 AliAnalysisTaskPID.cxx:1642
 AliAnalysisTaskPID.cxx:1643
 AliAnalysisTaskPID.cxx:1644
 AliAnalysisTaskPID.cxx:1645
 AliAnalysisTaskPID.cxx:1646
 AliAnalysisTaskPID.cxx:1647
 AliAnalysisTaskPID.cxx:1648
 AliAnalysisTaskPID.cxx:1649
 AliAnalysisTaskPID.cxx:1650
 AliAnalysisTaskPID.cxx:1651
 AliAnalysisTaskPID.cxx:1652
 AliAnalysisTaskPID.cxx:1653
 AliAnalysisTaskPID.cxx:1654
 AliAnalysisTaskPID.cxx:1655
 AliAnalysisTaskPID.cxx:1656
 AliAnalysisTaskPID.cxx:1657
 AliAnalysisTaskPID.cxx:1658
 AliAnalysisTaskPID.cxx:1659
 AliAnalysisTaskPID.cxx:1660
 AliAnalysisTaskPID.cxx:1661
 AliAnalysisTaskPID.cxx:1662
 AliAnalysisTaskPID.cxx:1663
 AliAnalysisTaskPID.cxx:1664
 AliAnalysisTaskPID.cxx:1665
 AliAnalysisTaskPID.cxx:1666
 AliAnalysisTaskPID.cxx:1667
 AliAnalysisTaskPID.cxx:1668
 AliAnalysisTaskPID.cxx:1669
 AliAnalysisTaskPID.cxx:1670
 AliAnalysisTaskPID.cxx:1671
 AliAnalysisTaskPID.cxx:1672
 AliAnalysisTaskPID.cxx:1673
 AliAnalysisTaskPID.cxx:1674
 AliAnalysisTaskPID.cxx:1675
 AliAnalysisTaskPID.cxx:1676
 AliAnalysisTaskPID.cxx:1677
 AliAnalysisTaskPID.cxx:1678
 AliAnalysisTaskPID.cxx:1679
 AliAnalysisTaskPID.cxx:1680
 AliAnalysisTaskPID.cxx:1681
 AliAnalysisTaskPID.cxx:1682
 AliAnalysisTaskPID.cxx:1683
 AliAnalysisTaskPID.cxx:1684
 AliAnalysisTaskPID.cxx:1685
 AliAnalysisTaskPID.cxx:1686
 AliAnalysisTaskPID.cxx:1687
 AliAnalysisTaskPID.cxx:1688
 AliAnalysisTaskPID.cxx:1689
 AliAnalysisTaskPID.cxx:1690
 AliAnalysisTaskPID.cxx:1691
 AliAnalysisTaskPID.cxx:1692
 AliAnalysisTaskPID.cxx:1693
 AliAnalysisTaskPID.cxx:1694
 AliAnalysisTaskPID.cxx:1695
 AliAnalysisTaskPID.cxx:1696
 AliAnalysisTaskPID.cxx:1697
 AliAnalysisTaskPID.cxx:1698
 AliAnalysisTaskPID.cxx:1699
 AliAnalysisTaskPID.cxx:1700
 AliAnalysisTaskPID.cxx:1701
 AliAnalysisTaskPID.cxx:1702
 AliAnalysisTaskPID.cxx:1703
 AliAnalysisTaskPID.cxx:1704
 AliAnalysisTaskPID.cxx:1705
 AliAnalysisTaskPID.cxx:1706
 AliAnalysisTaskPID.cxx:1707
 AliAnalysisTaskPID.cxx:1708
 AliAnalysisTaskPID.cxx:1709
 AliAnalysisTaskPID.cxx:1710
 AliAnalysisTaskPID.cxx:1711
 AliAnalysisTaskPID.cxx:1712
 AliAnalysisTaskPID.cxx:1713
 AliAnalysisTaskPID.cxx:1714
 AliAnalysisTaskPID.cxx:1715
 AliAnalysisTaskPID.cxx:1716
 AliAnalysisTaskPID.cxx:1717
 AliAnalysisTaskPID.cxx:1718
 AliAnalysisTaskPID.cxx:1719
 AliAnalysisTaskPID.cxx:1720
 AliAnalysisTaskPID.cxx:1721
 AliAnalysisTaskPID.cxx:1722
 AliAnalysisTaskPID.cxx:1723
 AliAnalysisTaskPID.cxx:1724
 AliAnalysisTaskPID.cxx:1725
 AliAnalysisTaskPID.cxx:1726
 AliAnalysisTaskPID.cxx:1727
 AliAnalysisTaskPID.cxx:1728
 AliAnalysisTaskPID.cxx:1729
 AliAnalysisTaskPID.cxx:1730
 AliAnalysisTaskPID.cxx:1731
 AliAnalysisTaskPID.cxx:1732
 AliAnalysisTaskPID.cxx:1733
 AliAnalysisTaskPID.cxx:1734
 AliAnalysisTaskPID.cxx:1735
 AliAnalysisTaskPID.cxx:1736
 AliAnalysisTaskPID.cxx:1737
 AliAnalysisTaskPID.cxx:1738
 AliAnalysisTaskPID.cxx:1739
 AliAnalysisTaskPID.cxx:1740
 AliAnalysisTaskPID.cxx:1741
 AliAnalysisTaskPID.cxx:1742
 AliAnalysisTaskPID.cxx:1743
 AliAnalysisTaskPID.cxx:1744
 AliAnalysisTaskPID.cxx:1745
 AliAnalysisTaskPID.cxx:1746
 AliAnalysisTaskPID.cxx:1747
 AliAnalysisTaskPID.cxx:1748
 AliAnalysisTaskPID.cxx:1749
 AliAnalysisTaskPID.cxx:1750
 AliAnalysisTaskPID.cxx:1751
 AliAnalysisTaskPID.cxx:1752
 AliAnalysisTaskPID.cxx:1753
 AliAnalysisTaskPID.cxx:1754
 AliAnalysisTaskPID.cxx:1755
 AliAnalysisTaskPID.cxx:1756
 AliAnalysisTaskPID.cxx:1757
 AliAnalysisTaskPID.cxx:1758
 AliAnalysisTaskPID.cxx:1759
 AliAnalysisTaskPID.cxx:1760
 AliAnalysisTaskPID.cxx:1761
 AliAnalysisTaskPID.cxx:1762
 AliAnalysisTaskPID.cxx:1763
 AliAnalysisTaskPID.cxx:1764
 AliAnalysisTaskPID.cxx:1765
 AliAnalysisTaskPID.cxx:1766
 AliAnalysisTaskPID.cxx:1767
 AliAnalysisTaskPID.cxx:1768
 AliAnalysisTaskPID.cxx:1769
 AliAnalysisTaskPID.cxx:1770
 AliAnalysisTaskPID.cxx:1771
 AliAnalysisTaskPID.cxx:1772
 AliAnalysisTaskPID.cxx:1773
 AliAnalysisTaskPID.cxx:1774
 AliAnalysisTaskPID.cxx:1775
 AliAnalysisTaskPID.cxx:1776
 AliAnalysisTaskPID.cxx:1777
 AliAnalysisTaskPID.cxx:1778
 AliAnalysisTaskPID.cxx:1779
 AliAnalysisTaskPID.cxx:1780
 AliAnalysisTaskPID.cxx:1781
 AliAnalysisTaskPID.cxx:1782
 AliAnalysisTaskPID.cxx:1783
 AliAnalysisTaskPID.cxx:1784
 AliAnalysisTaskPID.cxx:1785
 AliAnalysisTaskPID.cxx:1786
 AliAnalysisTaskPID.cxx:1787
 AliAnalysisTaskPID.cxx:1788
 AliAnalysisTaskPID.cxx:1789
 AliAnalysisTaskPID.cxx:1790
 AliAnalysisTaskPID.cxx:1791
 AliAnalysisTaskPID.cxx:1792
 AliAnalysisTaskPID.cxx:1793
 AliAnalysisTaskPID.cxx:1794
 AliAnalysisTaskPID.cxx:1795
 AliAnalysisTaskPID.cxx:1796
 AliAnalysisTaskPID.cxx:1797
 AliAnalysisTaskPID.cxx:1798
 AliAnalysisTaskPID.cxx:1799
 AliAnalysisTaskPID.cxx:1800
 AliAnalysisTaskPID.cxx:1801
 AliAnalysisTaskPID.cxx:1802
 AliAnalysisTaskPID.cxx:1803
 AliAnalysisTaskPID.cxx:1804
 AliAnalysisTaskPID.cxx:1805
 AliAnalysisTaskPID.cxx:1806
 AliAnalysisTaskPID.cxx:1807
 AliAnalysisTaskPID.cxx:1808
 AliAnalysisTaskPID.cxx:1809
 AliAnalysisTaskPID.cxx:1810
 AliAnalysisTaskPID.cxx:1811
 AliAnalysisTaskPID.cxx:1812
 AliAnalysisTaskPID.cxx:1813
 AliAnalysisTaskPID.cxx:1814
 AliAnalysisTaskPID.cxx:1815
 AliAnalysisTaskPID.cxx:1816
 AliAnalysisTaskPID.cxx:1817
 AliAnalysisTaskPID.cxx:1818
 AliAnalysisTaskPID.cxx:1819
 AliAnalysisTaskPID.cxx:1820
 AliAnalysisTaskPID.cxx:1821
 AliAnalysisTaskPID.cxx:1822
 AliAnalysisTaskPID.cxx:1823
 AliAnalysisTaskPID.cxx:1824
 AliAnalysisTaskPID.cxx:1825
 AliAnalysisTaskPID.cxx:1826
 AliAnalysisTaskPID.cxx:1827
 AliAnalysisTaskPID.cxx:1828
 AliAnalysisTaskPID.cxx:1829
 AliAnalysisTaskPID.cxx:1830
 AliAnalysisTaskPID.cxx:1831
 AliAnalysisTaskPID.cxx:1832
 AliAnalysisTaskPID.cxx:1833
 AliAnalysisTaskPID.cxx:1834
 AliAnalysisTaskPID.cxx:1835
 AliAnalysisTaskPID.cxx:1836
 AliAnalysisTaskPID.cxx:1837
 AliAnalysisTaskPID.cxx:1838
 AliAnalysisTaskPID.cxx:1839
 AliAnalysisTaskPID.cxx:1840
 AliAnalysisTaskPID.cxx:1841
 AliAnalysisTaskPID.cxx:1842
 AliAnalysisTaskPID.cxx:1843
 AliAnalysisTaskPID.cxx:1844
 AliAnalysisTaskPID.cxx:1845
 AliAnalysisTaskPID.cxx:1846
 AliAnalysisTaskPID.cxx:1847
 AliAnalysisTaskPID.cxx:1848
 AliAnalysisTaskPID.cxx:1849
 AliAnalysisTaskPID.cxx:1850
 AliAnalysisTaskPID.cxx:1851
 AliAnalysisTaskPID.cxx:1852
 AliAnalysisTaskPID.cxx:1853
 AliAnalysisTaskPID.cxx:1854
 AliAnalysisTaskPID.cxx:1855
 AliAnalysisTaskPID.cxx:1856
 AliAnalysisTaskPID.cxx:1857
 AliAnalysisTaskPID.cxx:1858
 AliAnalysisTaskPID.cxx:1859
 AliAnalysisTaskPID.cxx:1860
 AliAnalysisTaskPID.cxx:1861
 AliAnalysisTaskPID.cxx:1862
 AliAnalysisTaskPID.cxx:1863
 AliAnalysisTaskPID.cxx:1864
 AliAnalysisTaskPID.cxx:1865
 AliAnalysisTaskPID.cxx:1866
 AliAnalysisTaskPID.cxx:1867
 AliAnalysisTaskPID.cxx:1868
 AliAnalysisTaskPID.cxx:1869
 AliAnalysisTaskPID.cxx:1870
 AliAnalysisTaskPID.cxx:1871
 AliAnalysisTaskPID.cxx:1872
 AliAnalysisTaskPID.cxx:1873
 AliAnalysisTaskPID.cxx:1874
 AliAnalysisTaskPID.cxx:1875
 AliAnalysisTaskPID.cxx:1876
 AliAnalysisTaskPID.cxx:1877
 AliAnalysisTaskPID.cxx:1878
 AliAnalysisTaskPID.cxx:1879
 AliAnalysisTaskPID.cxx:1880
 AliAnalysisTaskPID.cxx:1881
 AliAnalysisTaskPID.cxx:1882
 AliAnalysisTaskPID.cxx:1883
 AliAnalysisTaskPID.cxx:1884
 AliAnalysisTaskPID.cxx:1885
 AliAnalysisTaskPID.cxx:1886
 AliAnalysisTaskPID.cxx:1887
 AliAnalysisTaskPID.cxx:1888
 AliAnalysisTaskPID.cxx:1889
 AliAnalysisTaskPID.cxx:1890
 AliAnalysisTaskPID.cxx:1891
 AliAnalysisTaskPID.cxx:1892
 AliAnalysisTaskPID.cxx:1893
 AliAnalysisTaskPID.cxx:1894
 AliAnalysisTaskPID.cxx:1895
 AliAnalysisTaskPID.cxx:1896
 AliAnalysisTaskPID.cxx:1897
 AliAnalysisTaskPID.cxx:1898
 AliAnalysisTaskPID.cxx:1899
 AliAnalysisTaskPID.cxx:1900
 AliAnalysisTaskPID.cxx:1901
 AliAnalysisTaskPID.cxx:1902
 AliAnalysisTaskPID.cxx:1903
 AliAnalysisTaskPID.cxx:1904
 AliAnalysisTaskPID.cxx:1905
 AliAnalysisTaskPID.cxx:1906
 AliAnalysisTaskPID.cxx:1907
 AliAnalysisTaskPID.cxx:1908
 AliAnalysisTaskPID.cxx:1909
 AliAnalysisTaskPID.cxx:1910
 AliAnalysisTaskPID.cxx:1911
 AliAnalysisTaskPID.cxx:1912
 AliAnalysisTaskPID.cxx:1913
 AliAnalysisTaskPID.cxx:1914
 AliAnalysisTaskPID.cxx:1915
 AliAnalysisTaskPID.cxx:1916
 AliAnalysisTaskPID.cxx:1917
 AliAnalysisTaskPID.cxx:1918
 AliAnalysisTaskPID.cxx:1919
 AliAnalysisTaskPID.cxx:1920
 AliAnalysisTaskPID.cxx:1921
 AliAnalysisTaskPID.cxx:1922
 AliAnalysisTaskPID.cxx:1923
 AliAnalysisTaskPID.cxx:1924
 AliAnalysisTaskPID.cxx:1925
 AliAnalysisTaskPID.cxx:1926
 AliAnalysisTaskPID.cxx:1927
 AliAnalysisTaskPID.cxx:1928
 AliAnalysisTaskPID.cxx:1929
 AliAnalysisTaskPID.cxx:1930
 AliAnalysisTaskPID.cxx:1931
 AliAnalysisTaskPID.cxx:1932
 AliAnalysisTaskPID.cxx:1933
 AliAnalysisTaskPID.cxx:1934
 AliAnalysisTaskPID.cxx:1935
 AliAnalysisTaskPID.cxx:1936
 AliAnalysisTaskPID.cxx:1937
 AliAnalysisTaskPID.cxx:1938
 AliAnalysisTaskPID.cxx:1939
 AliAnalysisTaskPID.cxx:1940
 AliAnalysisTaskPID.cxx:1941
 AliAnalysisTaskPID.cxx:1942
 AliAnalysisTaskPID.cxx:1943
 AliAnalysisTaskPID.cxx:1944
 AliAnalysisTaskPID.cxx:1945
 AliAnalysisTaskPID.cxx:1946
 AliAnalysisTaskPID.cxx:1947
 AliAnalysisTaskPID.cxx:1948
 AliAnalysisTaskPID.cxx:1949
 AliAnalysisTaskPID.cxx:1950
 AliAnalysisTaskPID.cxx:1951
 AliAnalysisTaskPID.cxx:1952
 AliAnalysisTaskPID.cxx:1953
 AliAnalysisTaskPID.cxx:1954
 AliAnalysisTaskPID.cxx:1955
 AliAnalysisTaskPID.cxx:1956
 AliAnalysisTaskPID.cxx:1957
 AliAnalysisTaskPID.cxx:1958
 AliAnalysisTaskPID.cxx:1959
 AliAnalysisTaskPID.cxx:1960
 AliAnalysisTaskPID.cxx:1961
 AliAnalysisTaskPID.cxx:1962
 AliAnalysisTaskPID.cxx:1963
 AliAnalysisTaskPID.cxx:1964
 AliAnalysisTaskPID.cxx:1965
 AliAnalysisTaskPID.cxx:1966
 AliAnalysisTaskPID.cxx:1967
 AliAnalysisTaskPID.cxx:1968
 AliAnalysisTaskPID.cxx:1969
 AliAnalysisTaskPID.cxx:1970
 AliAnalysisTaskPID.cxx:1971
 AliAnalysisTaskPID.cxx:1972
 AliAnalysisTaskPID.cxx:1973
 AliAnalysisTaskPID.cxx:1974
 AliAnalysisTaskPID.cxx:1975
 AliAnalysisTaskPID.cxx:1976
 AliAnalysisTaskPID.cxx:1977
 AliAnalysisTaskPID.cxx:1978
 AliAnalysisTaskPID.cxx:1979
 AliAnalysisTaskPID.cxx:1980
 AliAnalysisTaskPID.cxx:1981
 AliAnalysisTaskPID.cxx:1982
 AliAnalysisTaskPID.cxx:1983
 AliAnalysisTaskPID.cxx:1984
 AliAnalysisTaskPID.cxx:1985
 AliAnalysisTaskPID.cxx:1986
 AliAnalysisTaskPID.cxx:1987
 AliAnalysisTaskPID.cxx:1988
 AliAnalysisTaskPID.cxx:1989
 AliAnalysisTaskPID.cxx:1990
 AliAnalysisTaskPID.cxx:1991
 AliAnalysisTaskPID.cxx:1992
 AliAnalysisTaskPID.cxx:1993
 AliAnalysisTaskPID.cxx:1994
 AliAnalysisTaskPID.cxx:1995
 AliAnalysisTaskPID.cxx:1996
 AliAnalysisTaskPID.cxx:1997
 AliAnalysisTaskPID.cxx:1998
 AliAnalysisTaskPID.cxx:1999
 AliAnalysisTaskPID.cxx:2000
 AliAnalysisTaskPID.cxx:2001
 AliAnalysisTaskPID.cxx:2002
 AliAnalysisTaskPID.cxx:2003
 AliAnalysisTaskPID.cxx:2004
 AliAnalysisTaskPID.cxx:2005
 AliAnalysisTaskPID.cxx:2006
 AliAnalysisTaskPID.cxx:2007
 AliAnalysisTaskPID.cxx:2008
 AliAnalysisTaskPID.cxx:2009
 AliAnalysisTaskPID.cxx:2010
 AliAnalysisTaskPID.cxx:2011
 AliAnalysisTaskPID.cxx:2012
 AliAnalysisTaskPID.cxx:2013
 AliAnalysisTaskPID.cxx:2014
 AliAnalysisTaskPID.cxx:2015
 AliAnalysisTaskPID.cxx:2016
 AliAnalysisTaskPID.cxx:2017
 AliAnalysisTaskPID.cxx:2018
 AliAnalysisTaskPID.cxx:2019
 AliAnalysisTaskPID.cxx:2020
 AliAnalysisTaskPID.cxx:2021
 AliAnalysisTaskPID.cxx:2022
 AliAnalysisTaskPID.cxx:2023
 AliAnalysisTaskPID.cxx:2024
 AliAnalysisTaskPID.cxx:2025
 AliAnalysisTaskPID.cxx:2026
 AliAnalysisTaskPID.cxx:2027
 AliAnalysisTaskPID.cxx:2028
 AliAnalysisTaskPID.cxx:2029
 AliAnalysisTaskPID.cxx:2030
 AliAnalysisTaskPID.cxx:2031
 AliAnalysisTaskPID.cxx:2032
 AliAnalysisTaskPID.cxx:2033
 AliAnalysisTaskPID.cxx:2034
 AliAnalysisTaskPID.cxx:2035
 AliAnalysisTaskPID.cxx:2036
 AliAnalysisTaskPID.cxx:2037
 AliAnalysisTaskPID.cxx:2038
 AliAnalysisTaskPID.cxx:2039
 AliAnalysisTaskPID.cxx:2040
 AliAnalysisTaskPID.cxx:2041
 AliAnalysisTaskPID.cxx:2042
 AliAnalysisTaskPID.cxx:2043
 AliAnalysisTaskPID.cxx:2044
 AliAnalysisTaskPID.cxx:2045
 AliAnalysisTaskPID.cxx:2046
 AliAnalysisTaskPID.cxx:2047
 AliAnalysisTaskPID.cxx:2048
 AliAnalysisTaskPID.cxx:2049
 AliAnalysisTaskPID.cxx:2050
 AliAnalysisTaskPID.cxx:2051
 AliAnalysisTaskPID.cxx:2052
 AliAnalysisTaskPID.cxx:2053
 AliAnalysisTaskPID.cxx:2054
 AliAnalysisTaskPID.cxx:2055
 AliAnalysisTaskPID.cxx:2056
 AliAnalysisTaskPID.cxx:2057
 AliAnalysisTaskPID.cxx:2058
 AliAnalysisTaskPID.cxx:2059
 AliAnalysisTaskPID.cxx:2060
 AliAnalysisTaskPID.cxx:2061
 AliAnalysisTaskPID.cxx:2062
 AliAnalysisTaskPID.cxx:2063
 AliAnalysisTaskPID.cxx:2064
 AliAnalysisTaskPID.cxx:2065
 AliAnalysisTaskPID.cxx:2066
 AliAnalysisTaskPID.cxx:2067
 AliAnalysisTaskPID.cxx:2068
 AliAnalysisTaskPID.cxx:2069
 AliAnalysisTaskPID.cxx:2070
 AliAnalysisTaskPID.cxx:2071
 AliAnalysisTaskPID.cxx:2072
 AliAnalysisTaskPID.cxx:2073
 AliAnalysisTaskPID.cxx:2074
 AliAnalysisTaskPID.cxx:2075
 AliAnalysisTaskPID.cxx:2076
 AliAnalysisTaskPID.cxx:2077
 AliAnalysisTaskPID.cxx:2078
 AliAnalysisTaskPID.cxx:2079
 AliAnalysisTaskPID.cxx:2080
 AliAnalysisTaskPID.cxx:2081
 AliAnalysisTaskPID.cxx:2082
 AliAnalysisTaskPID.cxx:2083
 AliAnalysisTaskPID.cxx:2084
 AliAnalysisTaskPID.cxx:2085
 AliAnalysisTaskPID.cxx:2086
 AliAnalysisTaskPID.cxx:2087
 AliAnalysisTaskPID.cxx:2088
 AliAnalysisTaskPID.cxx:2089
 AliAnalysisTaskPID.cxx:2090
 AliAnalysisTaskPID.cxx:2091
 AliAnalysisTaskPID.cxx:2092
 AliAnalysisTaskPID.cxx:2093
 AliAnalysisTaskPID.cxx:2094
 AliAnalysisTaskPID.cxx:2095
 AliAnalysisTaskPID.cxx:2096
 AliAnalysisTaskPID.cxx:2097
 AliAnalysisTaskPID.cxx:2098
 AliAnalysisTaskPID.cxx:2099
 AliAnalysisTaskPID.cxx:2100
 AliAnalysisTaskPID.cxx:2101
 AliAnalysisTaskPID.cxx:2102
 AliAnalysisTaskPID.cxx:2103
 AliAnalysisTaskPID.cxx:2104
 AliAnalysisTaskPID.cxx:2105
 AliAnalysisTaskPID.cxx:2106
 AliAnalysisTaskPID.cxx:2107
 AliAnalysisTaskPID.cxx:2108
 AliAnalysisTaskPID.cxx:2109
 AliAnalysisTaskPID.cxx:2110
 AliAnalysisTaskPID.cxx:2111
 AliAnalysisTaskPID.cxx:2112
 AliAnalysisTaskPID.cxx:2113
 AliAnalysisTaskPID.cxx:2114
 AliAnalysisTaskPID.cxx:2115
 AliAnalysisTaskPID.cxx:2116
 AliAnalysisTaskPID.cxx:2117
 AliAnalysisTaskPID.cxx:2118
 AliAnalysisTaskPID.cxx:2119
 AliAnalysisTaskPID.cxx:2120
 AliAnalysisTaskPID.cxx:2121
 AliAnalysisTaskPID.cxx:2122
 AliAnalysisTaskPID.cxx:2123
 AliAnalysisTaskPID.cxx:2124
 AliAnalysisTaskPID.cxx:2125
 AliAnalysisTaskPID.cxx:2126
 AliAnalysisTaskPID.cxx:2127
 AliAnalysisTaskPID.cxx:2128
 AliAnalysisTaskPID.cxx:2129
 AliAnalysisTaskPID.cxx:2130
 AliAnalysisTaskPID.cxx:2131
 AliAnalysisTaskPID.cxx:2132
 AliAnalysisTaskPID.cxx:2133
 AliAnalysisTaskPID.cxx:2134
 AliAnalysisTaskPID.cxx:2135
 AliAnalysisTaskPID.cxx:2136
 AliAnalysisTaskPID.cxx:2137
 AliAnalysisTaskPID.cxx:2138
 AliAnalysisTaskPID.cxx:2139
 AliAnalysisTaskPID.cxx:2140
 AliAnalysisTaskPID.cxx:2141
 AliAnalysisTaskPID.cxx:2142
 AliAnalysisTaskPID.cxx:2143
 AliAnalysisTaskPID.cxx:2144
 AliAnalysisTaskPID.cxx:2145
 AliAnalysisTaskPID.cxx:2146
 AliAnalysisTaskPID.cxx:2147
 AliAnalysisTaskPID.cxx:2148
 AliAnalysisTaskPID.cxx:2149
 AliAnalysisTaskPID.cxx:2150
 AliAnalysisTaskPID.cxx:2151
 AliAnalysisTaskPID.cxx:2152
 AliAnalysisTaskPID.cxx:2153
 AliAnalysisTaskPID.cxx:2154
 AliAnalysisTaskPID.cxx:2155
 AliAnalysisTaskPID.cxx:2156
 AliAnalysisTaskPID.cxx:2157
 AliAnalysisTaskPID.cxx:2158
 AliAnalysisTaskPID.cxx:2159
 AliAnalysisTaskPID.cxx:2160
 AliAnalysisTaskPID.cxx:2161
 AliAnalysisTaskPID.cxx:2162
 AliAnalysisTaskPID.cxx:2163
 AliAnalysisTaskPID.cxx:2164
 AliAnalysisTaskPID.cxx:2165
 AliAnalysisTaskPID.cxx:2166
 AliAnalysisTaskPID.cxx:2167
 AliAnalysisTaskPID.cxx:2168
 AliAnalysisTaskPID.cxx:2169
 AliAnalysisTaskPID.cxx:2170
 AliAnalysisTaskPID.cxx:2171
 AliAnalysisTaskPID.cxx:2172
 AliAnalysisTaskPID.cxx:2173
 AliAnalysisTaskPID.cxx:2174
 AliAnalysisTaskPID.cxx:2175
 AliAnalysisTaskPID.cxx:2176
 AliAnalysisTaskPID.cxx:2177
 AliAnalysisTaskPID.cxx:2178
 AliAnalysisTaskPID.cxx:2179
 AliAnalysisTaskPID.cxx:2180
 AliAnalysisTaskPID.cxx:2181
 AliAnalysisTaskPID.cxx:2182
 AliAnalysisTaskPID.cxx:2183
 AliAnalysisTaskPID.cxx:2184
 AliAnalysisTaskPID.cxx:2185
 AliAnalysisTaskPID.cxx:2186
 AliAnalysisTaskPID.cxx:2187
 AliAnalysisTaskPID.cxx:2188
 AliAnalysisTaskPID.cxx:2189
 AliAnalysisTaskPID.cxx:2190
 AliAnalysisTaskPID.cxx:2191
 AliAnalysisTaskPID.cxx:2192
 AliAnalysisTaskPID.cxx:2193
 AliAnalysisTaskPID.cxx:2194
 AliAnalysisTaskPID.cxx:2195
 AliAnalysisTaskPID.cxx:2196
 AliAnalysisTaskPID.cxx:2197
 AliAnalysisTaskPID.cxx:2198
 AliAnalysisTaskPID.cxx:2199
 AliAnalysisTaskPID.cxx:2200
 AliAnalysisTaskPID.cxx:2201
 AliAnalysisTaskPID.cxx:2202
 AliAnalysisTaskPID.cxx:2203
 AliAnalysisTaskPID.cxx:2204
 AliAnalysisTaskPID.cxx:2205
 AliAnalysisTaskPID.cxx:2206
 AliAnalysisTaskPID.cxx:2207
 AliAnalysisTaskPID.cxx:2208
 AliAnalysisTaskPID.cxx:2209
 AliAnalysisTaskPID.cxx:2210
 AliAnalysisTaskPID.cxx:2211
 AliAnalysisTaskPID.cxx:2212
 AliAnalysisTaskPID.cxx:2213
 AliAnalysisTaskPID.cxx:2214
 AliAnalysisTaskPID.cxx:2215
 AliAnalysisTaskPID.cxx:2216
 AliAnalysisTaskPID.cxx:2217
 AliAnalysisTaskPID.cxx:2218
 AliAnalysisTaskPID.cxx:2219
 AliAnalysisTaskPID.cxx:2220
 AliAnalysisTaskPID.cxx:2221
 AliAnalysisTaskPID.cxx:2222
 AliAnalysisTaskPID.cxx:2223
 AliAnalysisTaskPID.cxx:2224
 AliAnalysisTaskPID.cxx:2225
 AliAnalysisTaskPID.cxx:2226
 AliAnalysisTaskPID.cxx:2227
 AliAnalysisTaskPID.cxx:2228
 AliAnalysisTaskPID.cxx:2229
 AliAnalysisTaskPID.cxx:2230
 AliAnalysisTaskPID.cxx:2231
 AliAnalysisTaskPID.cxx:2232
 AliAnalysisTaskPID.cxx:2233
 AliAnalysisTaskPID.cxx:2234
 AliAnalysisTaskPID.cxx:2235
 AliAnalysisTaskPID.cxx:2236
 AliAnalysisTaskPID.cxx:2237
 AliAnalysisTaskPID.cxx:2238
 AliAnalysisTaskPID.cxx:2239
 AliAnalysisTaskPID.cxx:2240
 AliAnalysisTaskPID.cxx:2241
 AliAnalysisTaskPID.cxx:2242
 AliAnalysisTaskPID.cxx:2243
 AliAnalysisTaskPID.cxx:2244
 AliAnalysisTaskPID.cxx:2245
 AliAnalysisTaskPID.cxx:2246
 AliAnalysisTaskPID.cxx:2247
 AliAnalysisTaskPID.cxx:2248
 AliAnalysisTaskPID.cxx:2249
 AliAnalysisTaskPID.cxx:2250
 AliAnalysisTaskPID.cxx:2251
 AliAnalysisTaskPID.cxx:2252
 AliAnalysisTaskPID.cxx:2253
 AliAnalysisTaskPID.cxx:2254
 AliAnalysisTaskPID.cxx:2255
 AliAnalysisTaskPID.cxx:2256
 AliAnalysisTaskPID.cxx:2257
 AliAnalysisTaskPID.cxx:2258
 AliAnalysisTaskPID.cxx:2259
 AliAnalysisTaskPID.cxx:2260
 AliAnalysisTaskPID.cxx:2261
 AliAnalysisTaskPID.cxx:2262
 AliAnalysisTaskPID.cxx:2263
 AliAnalysisTaskPID.cxx:2264
 AliAnalysisTaskPID.cxx:2265
 AliAnalysisTaskPID.cxx:2266
 AliAnalysisTaskPID.cxx:2267
 AliAnalysisTaskPID.cxx:2268
 AliAnalysisTaskPID.cxx:2269
 AliAnalysisTaskPID.cxx:2270
 AliAnalysisTaskPID.cxx:2271
 AliAnalysisTaskPID.cxx:2272
 AliAnalysisTaskPID.cxx:2273
 AliAnalysisTaskPID.cxx:2274
 AliAnalysisTaskPID.cxx:2275
 AliAnalysisTaskPID.cxx:2276
 AliAnalysisTaskPID.cxx:2277
 AliAnalysisTaskPID.cxx:2278
 AliAnalysisTaskPID.cxx:2279
 AliAnalysisTaskPID.cxx:2280
 AliAnalysisTaskPID.cxx:2281
 AliAnalysisTaskPID.cxx:2282
 AliAnalysisTaskPID.cxx:2283
 AliAnalysisTaskPID.cxx:2284
 AliAnalysisTaskPID.cxx:2285
 AliAnalysisTaskPID.cxx:2286
 AliAnalysisTaskPID.cxx:2287
 AliAnalysisTaskPID.cxx:2288
 AliAnalysisTaskPID.cxx:2289
 AliAnalysisTaskPID.cxx:2290
 AliAnalysisTaskPID.cxx:2291
 AliAnalysisTaskPID.cxx:2292
 AliAnalysisTaskPID.cxx:2293
 AliAnalysisTaskPID.cxx:2294
 AliAnalysisTaskPID.cxx:2295
 AliAnalysisTaskPID.cxx:2296
 AliAnalysisTaskPID.cxx:2297
 AliAnalysisTaskPID.cxx:2298
 AliAnalysisTaskPID.cxx:2299
 AliAnalysisTaskPID.cxx:2300
 AliAnalysisTaskPID.cxx:2301
 AliAnalysisTaskPID.cxx:2302
 AliAnalysisTaskPID.cxx:2303
 AliAnalysisTaskPID.cxx:2304
 AliAnalysisTaskPID.cxx:2305
 AliAnalysisTaskPID.cxx:2306
 AliAnalysisTaskPID.cxx:2307
 AliAnalysisTaskPID.cxx:2308
 AliAnalysisTaskPID.cxx:2309
 AliAnalysisTaskPID.cxx:2310
 AliAnalysisTaskPID.cxx:2311
 AliAnalysisTaskPID.cxx:2312
 AliAnalysisTaskPID.cxx:2313
 AliAnalysisTaskPID.cxx:2314
 AliAnalysisTaskPID.cxx:2315
 AliAnalysisTaskPID.cxx:2316
 AliAnalysisTaskPID.cxx:2317
 AliAnalysisTaskPID.cxx:2318
 AliAnalysisTaskPID.cxx:2319
 AliAnalysisTaskPID.cxx:2320
 AliAnalysisTaskPID.cxx:2321
 AliAnalysisTaskPID.cxx:2322
 AliAnalysisTaskPID.cxx:2323
 AliAnalysisTaskPID.cxx:2324
 AliAnalysisTaskPID.cxx:2325
 AliAnalysisTaskPID.cxx:2326
 AliAnalysisTaskPID.cxx:2327
 AliAnalysisTaskPID.cxx:2328
 AliAnalysisTaskPID.cxx:2329
 AliAnalysisTaskPID.cxx:2330
 AliAnalysisTaskPID.cxx:2331
 AliAnalysisTaskPID.cxx:2332
 AliAnalysisTaskPID.cxx:2333
 AliAnalysisTaskPID.cxx:2334
 AliAnalysisTaskPID.cxx:2335
 AliAnalysisTaskPID.cxx:2336
 AliAnalysisTaskPID.cxx:2337
 AliAnalysisTaskPID.cxx:2338
 AliAnalysisTaskPID.cxx:2339
 AliAnalysisTaskPID.cxx:2340
 AliAnalysisTaskPID.cxx:2341
 AliAnalysisTaskPID.cxx:2342
 AliAnalysisTaskPID.cxx:2343
 AliAnalysisTaskPID.cxx:2344
 AliAnalysisTaskPID.cxx:2345
 AliAnalysisTaskPID.cxx:2346
 AliAnalysisTaskPID.cxx:2347
 AliAnalysisTaskPID.cxx:2348
 AliAnalysisTaskPID.cxx:2349
 AliAnalysisTaskPID.cxx:2350
 AliAnalysisTaskPID.cxx:2351
 AliAnalysisTaskPID.cxx:2352
 AliAnalysisTaskPID.cxx:2353
 AliAnalysisTaskPID.cxx:2354
 AliAnalysisTaskPID.cxx:2355
 AliAnalysisTaskPID.cxx:2356
 AliAnalysisTaskPID.cxx:2357
 AliAnalysisTaskPID.cxx:2358
 AliAnalysisTaskPID.cxx:2359
 AliAnalysisTaskPID.cxx:2360
 AliAnalysisTaskPID.cxx:2361
 AliAnalysisTaskPID.cxx:2362
 AliAnalysisTaskPID.cxx:2363
 AliAnalysisTaskPID.cxx:2364
 AliAnalysisTaskPID.cxx:2365
 AliAnalysisTaskPID.cxx:2366
 AliAnalysisTaskPID.cxx:2367
 AliAnalysisTaskPID.cxx:2368
 AliAnalysisTaskPID.cxx:2369
 AliAnalysisTaskPID.cxx:2370
 AliAnalysisTaskPID.cxx:2371
 AliAnalysisTaskPID.cxx:2372
 AliAnalysisTaskPID.cxx:2373
 AliAnalysisTaskPID.cxx:2374
 AliAnalysisTaskPID.cxx:2375
 AliAnalysisTaskPID.cxx:2376
 AliAnalysisTaskPID.cxx:2377
 AliAnalysisTaskPID.cxx:2378
 AliAnalysisTaskPID.cxx:2379
 AliAnalysisTaskPID.cxx:2380
 AliAnalysisTaskPID.cxx:2381
 AliAnalysisTaskPID.cxx:2382
 AliAnalysisTaskPID.cxx:2383
 AliAnalysisTaskPID.cxx:2384
 AliAnalysisTaskPID.cxx:2385
 AliAnalysisTaskPID.cxx:2386
 AliAnalysisTaskPID.cxx:2387
 AliAnalysisTaskPID.cxx:2388
 AliAnalysisTaskPID.cxx:2389
 AliAnalysisTaskPID.cxx:2390
 AliAnalysisTaskPID.cxx:2391
 AliAnalysisTaskPID.cxx:2392
 AliAnalysisTaskPID.cxx:2393
 AliAnalysisTaskPID.cxx:2394
 AliAnalysisTaskPID.cxx:2395
 AliAnalysisTaskPID.cxx:2396
 AliAnalysisTaskPID.cxx:2397
 AliAnalysisTaskPID.cxx:2398
 AliAnalysisTaskPID.cxx:2399
 AliAnalysisTaskPID.cxx:2400
 AliAnalysisTaskPID.cxx:2401
 AliAnalysisTaskPID.cxx:2402
 AliAnalysisTaskPID.cxx:2403
 AliAnalysisTaskPID.cxx:2404
 AliAnalysisTaskPID.cxx:2405
 AliAnalysisTaskPID.cxx:2406
 AliAnalysisTaskPID.cxx:2407
 AliAnalysisTaskPID.cxx:2408
 AliAnalysisTaskPID.cxx:2409
 AliAnalysisTaskPID.cxx:2410
 AliAnalysisTaskPID.cxx:2411
 AliAnalysisTaskPID.cxx:2412
 AliAnalysisTaskPID.cxx:2413
 AliAnalysisTaskPID.cxx:2414
 AliAnalysisTaskPID.cxx:2415
 AliAnalysisTaskPID.cxx:2416
 AliAnalysisTaskPID.cxx:2417
 AliAnalysisTaskPID.cxx:2418
 AliAnalysisTaskPID.cxx:2419
 AliAnalysisTaskPID.cxx:2420
 AliAnalysisTaskPID.cxx:2421
 AliAnalysisTaskPID.cxx:2422
 AliAnalysisTaskPID.cxx:2423
 AliAnalysisTaskPID.cxx:2424
 AliAnalysisTaskPID.cxx:2425
 AliAnalysisTaskPID.cxx:2426
 AliAnalysisTaskPID.cxx:2427
 AliAnalysisTaskPID.cxx:2428
 AliAnalysisTaskPID.cxx:2429
 AliAnalysisTaskPID.cxx:2430
 AliAnalysisTaskPID.cxx:2431
 AliAnalysisTaskPID.cxx:2432
 AliAnalysisTaskPID.cxx:2433
 AliAnalysisTaskPID.cxx:2434
 AliAnalysisTaskPID.cxx:2435
 AliAnalysisTaskPID.cxx:2436
 AliAnalysisTaskPID.cxx:2437
 AliAnalysisTaskPID.cxx:2438
 AliAnalysisTaskPID.cxx:2439
 AliAnalysisTaskPID.cxx:2440
 AliAnalysisTaskPID.cxx:2441
 AliAnalysisTaskPID.cxx:2442
 AliAnalysisTaskPID.cxx:2443
 AliAnalysisTaskPID.cxx:2444
 AliAnalysisTaskPID.cxx:2445
 AliAnalysisTaskPID.cxx:2446
 AliAnalysisTaskPID.cxx:2447
 AliAnalysisTaskPID.cxx:2448
 AliAnalysisTaskPID.cxx:2449
 AliAnalysisTaskPID.cxx:2450
 AliAnalysisTaskPID.cxx:2451
 AliAnalysisTaskPID.cxx:2452
 AliAnalysisTaskPID.cxx:2453
 AliAnalysisTaskPID.cxx:2454
 AliAnalysisTaskPID.cxx:2455
 AliAnalysisTaskPID.cxx:2456
 AliAnalysisTaskPID.cxx:2457
 AliAnalysisTaskPID.cxx:2458
 AliAnalysisTaskPID.cxx:2459
 AliAnalysisTaskPID.cxx:2460
 AliAnalysisTaskPID.cxx:2461
 AliAnalysisTaskPID.cxx:2462
 AliAnalysisTaskPID.cxx:2463
 AliAnalysisTaskPID.cxx:2464
 AliAnalysisTaskPID.cxx:2465
 AliAnalysisTaskPID.cxx:2466
 AliAnalysisTaskPID.cxx:2467
 AliAnalysisTaskPID.cxx:2468
 AliAnalysisTaskPID.cxx:2469
 AliAnalysisTaskPID.cxx:2470
 AliAnalysisTaskPID.cxx:2471
 AliAnalysisTaskPID.cxx:2472
 AliAnalysisTaskPID.cxx:2473
 AliAnalysisTaskPID.cxx:2474
 AliAnalysisTaskPID.cxx:2475
 AliAnalysisTaskPID.cxx:2476
 AliAnalysisTaskPID.cxx:2477
 AliAnalysisTaskPID.cxx:2478
 AliAnalysisTaskPID.cxx:2479
 AliAnalysisTaskPID.cxx:2480
 AliAnalysisTaskPID.cxx:2481
 AliAnalysisTaskPID.cxx:2482
 AliAnalysisTaskPID.cxx:2483
 AliAnalysisTaskPID.cxx:2484
 AliAnalysisTaskPID.cxx:2485
 AliAnalysisTaskPID.cxx:2486
 AliAnalysisTaskPID.cxx:2487
 AliAnalysisTaskPID.cxx:2488
 AliAnalysisTaskPID.cxx:2489
 AliAnalysisTaskPID.cxx:2490
 AliAnalysisTaskPID.cxx:2491
 AliAnalysisTaskPID.cxx:2492
 AliAnalysisTaskPID.cxx:2493
 AliAnalysisTaskPID.cxx:2494
 AliAnalysisTaskPID.cxx:2495
 AliAnalysisTaskPID.cxx:2496
 AliAnalysisTaskPID.cxx:2497
 AliAnalysisTaskPID.cxx:2498
 AliAnalysisTaskPID.cxx:2499
 AliAnalysisTaskPID.cxx:2500
 AliAnalysisTaskPID.cxx:2501
 AliAnalysisTaskPID.cxx:2502
 AliAnalysisTaskPID.cxx:2503
 AliAnalysisTaskPID.cxx:2504
 AliAnalysisTaskPID.cxx:2505
 AliAnalysisTaskPID.cxx:2506
 AliAnalysisTaskPID.cxx:2507
 AliAnalysisTaskPID.cxx:2508
 AliAnalysisTaskPID.cxx:2509
 AliAnalysisTaskPID.cxx:2510
 AliAnalysisTaskPID.cxx:2511
 AliAnalysisTaskPID.cxx:2512
 AliAnalysisTaskPID.cxx:2513
 AliAnalysisTaskPID.cxx:2514
 AliAnalysisTaskPID.cxx:2515
 AliAnalysisTaskPID.cxx:2516
 AliAnalysisTaskPID.cxx:2517
 AliAnalysisTaskPID.cxx:2518
 AliAnalysisTaskPID.cxx:2519
 AliAnalysisTaskPID.cxx:2520
 AliAnalysisTaskPID.cxx:2521
 AliAnalysisTaskPID.cxx:2522
 AliAnalysisTaskPID.cxx:2523
 AliAnalysisTaskPID.cxx:2524
 AliAnalysisTaskPID.cxx:2525
 AliAnalysisTaskPID.cxx:2526
 AliAnalysisTaskPID.cxx:2527
 AliAnalysisTaskPID.cxx:2528
 AliAnalysisTaskPID.cxx:2529
 AliAnalysisTaskPID.cxx:2530
 AliAnalysisTaskPID.cxx:2531
 AliAnalysisTaskPID.cxx:2532
 AliAnalysisTaskPID.cxx:2533
 AliAnalysisTaskPID.cxx:2534
 AliAnalysisTaskPID.cxx:2535
 AliAnalysisTaskPID.cxx:2536
 AliAnalysisTaskPID.cxx:2537
 AliAnalysisTaskPID.cxx:2538
 AliAnalysisTaskPID.cxx:2539
 AliAnalysisTaskPID.cxx:2540
 AliAnalysisTaskPID.cxx:2541
 AliAnalysisTaskPID.cxx:2542
 AliAnalysisTaskPID.cxx:2543
 AliAnalysisTaskPID.cxx:2544
 AliAnalysisTaskPID.cxx:2545
 AliAnalysisTaskPID.cxx:2546
 AliAnalysisTaskPID.cxx:2547
 AliAnalysisTaskPID.cxx:2548
 AliAnalysisTaskPID.cxx:2549
 AliAnalysisTaskPID.cxx:2550
 AliAnalysisTaskPID.cxx:2551
 AliAnalysisTaskPID.cxx:2552
 AliAnalysisTaskPID.cxx:2553
 AliAnalysisTaskPID.cxx:2554
 AliAnalysisTaskPID.cxx:2555
 AliAnalysisTaskPID.cxx:2556
 AliAnalysisTaskPID.cxx:2557
 AliAnalysisTaskPID.cxx:2558
 AliAnalysisTaskPID.cxx:2559
 AliAnalysisTaskPID.cxx:2560
 AliAnalysisTaskPID.cxx:2561
 AliAnalysisTaskPID.cxx:2562
 AliAnalysisTaskPID.cxx:2563
 AliAnalysisTaskPID.cxx:2564
 AliAnalysisTaskPID.cxx:2565
 AliAnalysisTaskPID.cxx:2566
 AliAnalysisTaskPID.cxx:2567
 AliAnalysisTaskPID.cxx:2568
 AliAnalysisTaskPID.cxx:2569
 AliAnalysisTaskPID.cxx:2570
 AliAnalysisTaskPID.cxx:2571
 AliAnalysisTaskPID.cxx:2572
 AliAnalysisTaskPID.cxx:2573
 AliAnalysisTaskPID.cxx:2574
 AliAnalysisTaskPID.cxx:2575
 AliAnalysisTaskPID.cxx:2576
 AliAnalysisTaskPID.cxx:2577
 AliAnalysisTaskPID.cxx:2578
 AliAnalysisTaskPID.cxx:2579
 AliAnalysisTaskPID.cxx:2580
 AliAnalysisTaskPID.cxx:2581
 AliAnalysisTaskPID.cxx:2582
 AliAnalysisTaskPID.cxx:2583
 AliAnalysisTaskPID.cxx:2584
 AliAnalysisTaskPID.cxx:2585
 AliAnalysisTaskPID.cxx:2586
 AliAnalysisTaskPID.cxx:2587
 AliAnalysisTaskPID.cxx:2588
 AliAnalysisTaskPID.cxx:2589
 AliAnalysisTaskPID.cxx:2590
 AliAnalysisTaskPID.cxx:2591
 AliAnalysisTaskPID.cxx:2592
 AliAnalysisTaskPID.cxx:2593
 AliAnalysisTaskPID.cxx:2594
 AliAnalysisTaskPID.cxx:2595
 AliAnalysisTaskPID.cxx:2596
 AliAnalysisTaskPID.cxx:2597
 AliAnalysisTaskPID.cxx:2598
 AliAnalysisTaskPID.cxx:2599
 AliAnalysisTaskPID.cxx:2600
 AliAnalysisTaskPID.cxx:2601
 AliAnalysisTaskPID.cxx:2602
 AliAnalysisTaskPID.cxx:2603
 AliAnalysisTaskPID.cxx:2604
 AliAnalysisTaskPID.cxx:2605
 AliAnalysisTaskPID.cxx:2606
 AliAnalysisTaskPID.cxx:2607
 AliAnalysisTaskPID.cxx:2608
 AliAnalysisTaskPID.cxx:2609
 AliAnalysisTaskPID.cxx:2610
 AliAnalysisTaskPID.cxx:2611
 AliAnalysisTaskPID.cxx:2612
 AliAnalysisTaskPID.cxx:2613
 AliAnalysisTaskPID.cxx:2614
 AliAnalysisTaskPID.cxx:2615
 AliAnalysisTaskPID.cxx:2616
 AliAnalysisTaskPID.cxx:2617
 AliAnalysisTaskPID.cxx:2618
 AliAnalysisTaskPID.cxx:2619
 AliAnalysisTaskPID.cxx:2620
 AliAnalysisTaskPID.cxx:2621
 AliAnalysisTaskPID.cxx:2622
 AliAnalysisTaskPID.cxx:2623
 AliAnalysisTaskPID.cxx:2624
 AliAnalysisTaskPID.cxx:2625
 AliAnalysisTaskPID.cxx:2626
 AliAnalysisTaskPID.cxx:2627
 AliAnalysisTaskPID.cxx:2628
 AliAnalysisTaskPID.cxx:2629
 AliAnalysisTaskPID.cxx:2630
 AliAnalysisTaskPID.cxx:2631
 AliAnalysisTaskPID.cxx:2632
 AliAnalysisTaskPID.cxx:2633
 AliAnalysisTaskPID.cxx:2634
 AliAnalysisTaskPID.cxx:2635
 AliAnalysisTaskPID.cxx:2636
 AliAnalysisTaskPID.cxx:2637
 AliAnalysisTaskPID.cxx:2638
 AliAnalysisTaskPID.cxx:2639
 AliAnalysisTaskPID.cxx:2640
 AliAnalysisTaskPID.cxx:2641
 AliAnalysisTaskPID.cxx:2642
 AliAnalysisTaskPID.cxx:2643
 AliAnalysisTaskPID.cxx:2644
 AliAnalysisTaskPID.cxx:2645
 AliAnalysisTaskPID.cxx:2646
 AliAnalysisTaskPID.cxx:2647
 AliAnalysisTaskPID.cxx:2648
 AliAnalysisTaskPID.cxx:2649
 AliAnalysisTaskPID.cxx:2650
 AliAnalysisTaskPID.cxx:2651
 AliAnalysisTaskPID.cxx:2652
 AliAnalysisTaskPID.cxx:2653
 AliAnalysisTaskPID.cxx:2654
 AliAnalysisTaskPID.cxx:2655
 AliAnalysisTaskPID.cxx:2656
 AliAnalysisTaskPID.cxx:2657
 AliAnalysisTaskPID.cxx:2658
 AliAnalysisTaskPID.cxx:2659
 AliAnalysisTaskPID.cxx:2660
 AliAnalysisTaskPID.cxx:2661
 AliAnalysisTaskPID.cxx:2662
 AliAnalysisTaskPID.cxx:2663
 AliAnalysisTaskPID.cxx:2664
 AliAnalysisTaskPID.cxx:2665
 AliAnalysisTaskPID.cxx:2666
 AliAnalysisTaskPID.cxx:2667
 AliAnalysisTaskPID.cxx:2668
 AliAnalysisTaskPID.cxx:2669
 AliAnalysisTaskPID.cxx:2670
 AliAnalysisTaskPID.cxx:2671
 AliAnalysisTaskPID.cxx:2672
 AliAnalysisTaskPID.cxx:2673
 AliAnalysisTaskPID.cxx:2674
 AliAnalysisTaskPID.cxx:2675
 AliAnalysisTaskPID.cxx:2676
 AliAnalysisTaskPID.cxx:2677
 AliAnalysisTaskPID.cxx:2678
 AliAnalysisTaskPID.cxx:2679
 AliAnalysisTaskPID.cxx:2680
 AliAnalysisTaskPID.cxx:2681
 AliAnalysisTaskPID.cxx:2682
 AliAnalysisTaskPID.cxx:2683
 AliAnalysisTaskPID.cxx:2684
 AliAnalysisTaskPID.cxx:2685
 AliAnalysisTaskPID.cxx:2686
 AliAnalysisTaskPID.cxx:2687
 AliAnalysisTaskPID.cxx:2688
 AliAnalysisTaskPID.cxx:2689
 AliAnalysisTaskPID.cxx:2690
 AliAnalysisTaskPID.cxx:2691
 AliAnalysisTaskPID.cxx:2692
 AliAnalysisTaskPID.cxx:2693
 AliAnalysisTaskPID.cxx:2694
 AliAnalysisTaskPID.cxx:2695
 AliAnalysisTaskPID.cxx:2696
 AliAnalysisTaskPID.cxx:2697
 AliAnalysisTaskPID.cxx:2698
 AliAnalysisTaskPID.cxx:2699
 AliAnalysisTaskPID.cxx:2700
 AliAnalysisTaskPID.cxx:2701
 AliAnalysisTaskPID.cxx:2702
 AliAnalysisTaskPID.cxx:2703
 AliAnalysisTaskPID.cxx:2704
 AliAnalysisTaskPID.cxx:2705
 AliAnalysisTaskPID.cxx:2706
 AliAnalysisTaskPID.cxx:2707
 AliAnalysisTaskPID.cxx:2708
 AliAnalysisTaskPID.cxx:2709
 AliAnalysisTaskPID.cxx:2710
 AliAnalysisTaskPID.cxx:2711
 AliAnalysisTaskPID.cxx:2712
 AliAnalysisTaskPID.cxx:2713
 AliAnalysisTaskPID.cxx:2714
 AliAnalysisTaskPID.cxx:2715
 AliAnalysisTaskPID.cxx:2716
 AliAnalysisTaskPID.cxx:2717
 AliAnalysisTaskPID.cxx:2718
 AliAnalysisTaskPID.cxx:2719
 AliAnalysisTaskPID.cxx:2720
 AliAnalysisTaskPID.cxx:2721
 AliAnalysisTaskPID.cxx:2722
 AliAnalysisTaskPID.cxx:2723
 AliAnalysisTaskPID.cxx:2724
 AliAnalysisTaskPID.cxx:2725
 AliAnalysisTaskPID.cxx:2726
 AliAnalysisTaskPID.cxx:2727
 AliAnalysisTaskPID.cxx:2728
 AliAnalysisTaskPID.cxx:2729
 AliAnalysisTaskPID.cxx:2730
 AliAnalysisTaskPID.cxx:2731
 AliAnalysisTaskPID.cxx:2732
 AliAnalysisTaskPID.cxx:2733
 AliAnalysisTaskPID.cxx:2734
 AliAnalysisTaskPID.cxx:2735
 AliAnalysisTaskPID.cxx:2736
 AliAnalysisTaskPID.cxx:2737
 AliAnalysisTaskPID.cxx:2738
 AliAnalysisTaskPID.cxx:2739
 AliAnalysisTaskPID.cxx:2740
 AliAnalysisTaskPID.cxx:2741
 AliAnalysisTaskPID.cxx:2742
 AliAnalysisTaskPID.cxx:2743
 AliAnalysisTaskPID.cxx:2744
 AliAnalysisTaskPID.cxx:2745
 AliAnalysisTaskPID.cxx:2746
 AliAnalysisTaskPID.cxx:2747
 AliAnalysisTaskPID.cxx:2748
 AliAnalysisTaskPID.cxx:2749
 AliAnalysisTaskPID.cxx:2750
 AliAnalysisTaskPID.cxx:2751
 AliAnalysisTaskPID.cxx:2752
 AliAnalysisTaskPID.cxx:2753
 AliAnalysisTaskPID.cxx:2754
 AliAnalysisTaskPID.cxx:2755
 AliAnalysisTaskPID.cxx:2756
 AliAnalysisTaskPID.cxx:2757
 AliAnalysisTaskPID.cxx:2758
 AliAnalysisTaskPID.cxx:2759
 AliAnalysisTaskPID.cxx:2760
 AliAnalysisTaskPID.cxx:2761
 AliAnalysisTaskPID.cxx:2762
 AliAnalysisTaskPID.cxx:2763
 AliAnalysisTaskPID.cxx:2764
 AliAnalysisTaskPID.cxx:2765
 AliAnalysisTaskPID.cxx:2766
 AliAnalysisTaskPID.cxx:2767
 AliAnalysisTaskPID.cxx:2768
 AliAnalysisTaskPID.cxx:2769
 AliAnalysisTaskPID.cxx:2770
 AliAnalysisTaskPID.cxx:2771
 AliAnalysisTaskPID.cxx:2772
 AliAnalysisTaskPID.cxx:2773
 AliAnalysisTaskPID.cxx:2774
 AliAnalysisTaskPID.cxx:2775
 AliAnalysisTaskPID.cxx:2776
 AliAnalysisTaskPID.cxx:2777
 AliAnalysisTaskPID.cxx:2778
 AliAnalysisTaskPID.cxx:2779
 AliAnalysisTaskPID.cxx:2780
 AliAnalysisTaskPID.cxx:2781
 AliAnalysisTaskPID.cxx:2782
 AliAnalysisTaskPID.cxx:2783
 AliAnalysisTaskPID.cxx:2784
 AliAnalysisTaskPID.cxx:2785
 AliAnalysisTaskPID.cxx:2786
 AliAnalysisTaskPID.cxx:2787
 AliAnalysisTaskPID.cxx:2788
 AliAnalysisTaskPID.cxx:2789
 AliAnalysisTaskPID.cxx:2790
 AliAnalysisTaskPID.cxx:2791
 AliAnalysisTaskPID.cxx:2792
 AliAnalysisTaskPID.cxx:2793
 AliAnalysisTaskPID.cxx:2794
 AliAnalysisTaskPID.cxx:2795
 AliAnalysisTaskPID.cxx:2796
 AliAnalysisTaskPID.cxx:2797
 AliAnalysisTaskPID.cxx:2798
 AliAnalysisTaskPID.cxx:2799
 AliAnalysisTaskPID.cxx:2800
 AliAnalysisTaskPID.cxx:2801
 AliAnalysisTaskPID.cxx:2802
 AliAnalysisTaskPID.cxx:2803
 AliAnalysisTaskPID.cxx:2804
 AliAnalysisTaskPID.cxx:2805
 AliAnalysisTaskPID.cxx:2806
 AliAnalysisTaskPID.cxx:2807
 AliAnalysisTaskPID.cxx:2808
 AliAnalysisTaskPID.cxx:2809
 AliAnalysisTaskPID.cxx:2810
 AliAnalysisTaskPID.cxx:2811
 AliAnalysisTaskPID.cxx:2812
 AliAnalysisTaskPID.cxx:2813
 AliAnalysisTaskPID.cxx:2814
 AliAnalysisTaskPID.cxx:2815
 AliAnalysisTaskPID.cxx:2816
 AliAnalysisTaskPID.cxx:2817
 AliAnalysisTaskPID.cxx:2818
 AliAnalysisTaskPID.cxx:2819
 AliAnalysisTaskPID.cxx:2820
 AliAnalysisTaskPID.cxx:2821
 AliAnalysisTaskPID.cxx:2822
 AliAnalysisTaskPID.cxx:2823
 AliAnalysisTaskPID.cxx:2824
 AliAnalysisTaskPID.cxx:2825
 AliAnalysisTaskPID.cxx:2826
 AliAnalysisTaskPID.cxx:2827
 AliAnalysisTaskPID.cxx:2828
 AliAnalysisTaskPID.cxx:2829
 AliAnalysisTaskPID.cxx:2830
 AliAnalysisTaskPID.cxx:2831
 AliAnalysisTaskPID.cxx:2832
 AliAnalysisTaskPID.cxx:2833
 AliAnalysisTaskPID.cxx:2834
 AliAnalysisTaskPID.cxx:2835
 AliAnalysisTaskPID.cxx:2836
 AliAnalysisTaskPID.cxx:2837
 AliAnalysisTaskPID.cxx:2838
 AliAnalysisTaskPID.cxx:2839
 AliAnalysisTaskPID.cxx:2840
 AliAnalysisTaskPID.cxx:2841
 AliAnalysisTaskPID.cxx:2842
 AliAnalysisTaskPID.cxx:2843
 AliAnalysisTaskPID.cxx:2844
 AliAnalysisTaskPID.cxx:2845
 AliAnalysisTaskPID.cxx:2846
 AliAnalysisTaskPID.cxx:2847
 AliAnalysisTaskPID.cxx:2848
 AliAnalysisTaskPID.cxx:2849
 AliAnalysisTaskPID.cxx:2850
 AliAnalysisTaskPID.cxx:2851
 AliAnalysisTaskPID.cxx:2852
 AliAnalysisTaskPID.cxx:2853
 AliAnalysisTaskPID.cxx:2854
 AliAnalysisTaskPID.cxx:2855
 AliAnalysisTaskPID.cxx:2856
 AliAnalysisTaskPID.cxx:2857
 AliAnalysisTaskPID.cxx:2858
 AliAnalysisTaskPID.cxx:2859
 AliAnalysisTaskPID.cxx:2860
 AliAnalysisTaskPID.cxx:2861
 AliAnalysisTaskPID.cxx:2862
 AliAnalysisTaskPID.cxx:2863
 AliAnalysisTaskPID.cxx:2864
 AliAnalysisTaskPID.cxx:2865
 AliAnalysisTaskPID.cxx:2866
 AliAnalysisTaskPID.cxx:2867
 AliAnalysisTaskPID.cxx:2868
 AliAnalysisTaskPID.cxx:2869
 AliAnalysisTaskPID.cxx:2870
 AliAnalysisTaskPID.cxx:2871
 AliAnalysisTaskPID.cxx:2872
 AliAnalysisTaskPID.cxx:2873
 AliAnalysisTaskPID.cxx:2874
 AliAnalysisTaskPID.cxx:2875
 AliAnalysisTaskPID.cxx:2876
 AliAnalysisTaskPID.cxx:2877
 AliAnalysisTaskPID.cxx:2878
 AliAnalysisTaskPID.cxx:2879
 AliAnalysisTaskPID.cxx:2880
 AliAnalysisTaskPID.cxx:2881
 AliAnalysisTaskPID.cxx:2882
 AliAnalysisTaskPID.cxx:2883
 AliAnalysisTaskPID.cxx:2884
 AliAnalysisTaskPID.cxx:2885
 AliAnalysisTaskPID.cxx:2886
 AliAnalysisTaskPID.cxx:2887
 AliAnalysisTaskPID.cxx:2888
 AliAnalysisTaskPID.cxx:2889
 AliAnalysisTaskPID.cxx:2890
 AliAnalysisTaskPID.cxx:2891
 AliAnalysisTaskPID.cxx:2892
 AliAnalysisTaskPID.cxx:2893
 AliAnalysisTaskPID.cxx:2894
 AliAnalysisTaskPID.cxx:2895
 AliAnalysisTaskPID.cxx:2896
 AliAnalysisTaskPID.cxx:2897
 AliAnalysisTaskPID.cxx:2898
 AliAnalysisTaskPID.cxx:2899
 AliAnalysisTaskPID.cxx:2900
 AliAnalysisTaskPID.cxx:2901
 AliAnalysisTaskPID.cxx:2902
 AliAnalysisTaskPID.cxx:2903
 AliAnalysisTaskPID.cxx:2904
 AliAnalysisTaskPID.cxx:2905
 AliAnalysisTaskPID.cxx:2906
 AliAnalysisTaskPID.cxx:2907
 AliAnalysisTaskPID.cxx:2908
 AliAnalysisTaskPID.cxx:2909
 AliAnalysisTaskPID.cxx:2910
 AliAnalysisTaskPID.cxx:2911
 AliAnalysisTaskPID.cxx:2912
 AliAnalysisTaskPID.cxx:2913
 AliAnalysisTaskPID.cxx:2914
 AliAnalysisTaskPID.cxx:2915
 AliAnalysisTaskPID.cxx:2916
 AliAnalysisTaskPID.cxx:2917
 AliAnalysisTaskPID.cxx:2918
 AliAnalysisTaskPID.cxx:2919
 AliAnalysisTaskPID.cxx:2920
 AliAnalysisTaskPID.cxx:2921
 AliAnalysisTaskPID.cxx:2922
 AliAnalysisTaskPID.cxx:2923
 AliAnalysisTaskPID.cxx:2924
 AliAnalysisTaskPID.cxx:2925
 AliAnalysisTaskPID.cxx:2926
 AliAnalysisTaskPID.cxx:2927
 AliAnalysisTaskPID.cxx:2928
 AliAnalysisTaskPID.cxx:2929
 AliAnalysisTaskPID.cxx:2930
 AliAnalysisTaskPID.cxx:2931
 AliAnalysisTaskPID.cxx:2932
 AliAnalysisTaskPID.cxx:2933
 AliAnalysisTaskPID.cxx:2934
 AliAnalysisTaskPID.cxx:2935
 AliAnalysisTaskPID.cxx:2936
 AliAnalysisTaskPID.cxx:2937
 AliAnalysisTaskPID.cxx:2938
 AliAnalysisTaskPID.cxx:2939
 AliAnalysisTaskPID.cxx:2940
 AliAnalysisTaskPID.cxx:2941
 AliAnalysisTaskPID.cxx:2942
 AliAnalysisTaskPID.cxx:2943
 AliAnalysisTaskPID.cxx:2944
 AliAnalysisTaskPID.cxx:2945
 AliAnalysisTaskPID.cxx:2946
 AliAnalysisTaskPID.cxx:2947
 AliAnalysisTaskPID.cxx:2948
 AliAnalysisTaskPID.cxx:2949
 AliAnalysisTaskPID.cxx:2950
 AliAnalysisTaskPID.cxx:2951
 AliAnalysisTaskPID.cxx:2952
 AliAnalysisTaskPID.cxx:2953
 AliAnalysisTaskPID.cxx:2954
 AliAnalysisTaskPID.cxx:2955
 AliAnalysisTaskPID.cxx:2956
 AliAnalysisTaskPID.cxx:2957
 AliAnalysisTaskPID.cxx:2958
 AliAnalysisTaskPID.cxx:2959
 AliAnalysisTaskPID.cxx:2960
 AliAnalysisTaskPID.cxx:2961
 AliAnalysisTaskPID.cxx:2962
 AliAnalysisTaskPID.cxx:2963
 AliAnalysisTaskPID.cxx:2964
 AliAnalysisTaskPID.cxx:2965
 AliAnalysisTaskPID.cxx:2966
 AliAnalysisTaskPID.cxx:2967
 AliAnalysisTaskPID.cxx:2968
 AliAnalysisTaskPID.cxx:2969
 AliAnalysisTaskPID.cxx:2970
 AliAnalysisTaskPID.cxx:2971
 AliAnalysisTaskPID.cxx:2972
 AliAnalysisTaskPID.cxx:2973
 AliAnalysisTaskPID.cxx:2974
 AliAnalysisTaskPID.cxx:2975
 AliAnalysisTaskPID.cxx:2976
 AliAnalysisTaskPID.cxx:2977
 AliAnalysisTaskPID.cxx:2978
 AliAnalysisTaskPID.cxx:2979
 AliAnalysisTaskPID.cxx:2980
 AliAnalysisTaskPID.cxx:2981
 AliAnalysisTaskPID.cxx:2982
 AliAnalysisTaskPID.cxx:2983
 AliAnalysisTaskPID.cxx:2984
 AliAnalysisTaskPID.cxx:2985
 AliAnalysisTaskPID.cxx:2986
 AliAnalysisTaskPID.cxx:2987
 AliAnalysisTaskPID.cxx:2988
 AliAnalysisTaskPID.cxx:2989
 AliAnalysisTaskPID.cxx:2990
 AliAnalysisTaskPID.cxx:2991
 AliAnalysisTaskPID.cxx:2992
 AliAnalysisTaskPID.cxx:2993
 AliAnalysisTaskPID.cxx:2994
 AliAnalysisTaskPID.cxx:2995
 AliAnalysisTaskPID.cxx:2996
 AliAnalysisTaskPID.cxx:2997
 AliAnalysisTaskPID.cxx:2998
 AliAnalysisTaskPID.cxx:2999
 AliAnalysisTaskPID.cxx:3000
 AliAnalysisTaskPID.cxx:3001
 AliAnalysisTaskPID.cxx:3002
 AliAnalysisTaskPID.cxx:3003
 AliAnalysisTaskPID.cxx:3004
 AliAnalysisTaskPID.cxx:3005
 AliAnalysisTaskPID.cxx:3006
 AliAnalysisTaskPID.cxx:3007
 AliAnalysisTaskPID.cxx:3008
 AliAnalysisTaskPID.cxx:3009
 AliAnalysisTaskPID.cxx:3010
 AliAnalysisTaskPID.cxx:3011
 AliAnalysisTaskPID.cxx:3012
 AliAnalysisTaskPID.cxx:3013
 AliAnalysisTaskPID.cxx:3014
 AliAnalysisTaskPID.cxx:3015
 AliAnalysisTaskPID.cxx:3016
 AliAnalysisTaskPID.cxx:3017
 AliAnalysisTaskPID.cxx:3018
 AliAnalysisTaskPID.cxx:3019
 AliAnalysisTaskPID.cxx:3020
 AliAnalysisTaskPID.cxx:3021
 AliAnalysisTaskPID.cxx:3022
 AliAnalysisTaskPID.cxx:3023
 AliAnalysisTaskPID.cxx:3024
 AliAnalysisTaskPID.cxx:3025
 AliAnalysisTaskPID.cxx:3026
 AliAnalysisTaskPID.cxx:3027
 AliAnalysisTaskPID.cxx:3028
 AliAnalysisTaskPID.cxx:3029
 AliAnalysisTaskPID.cxx:3030
 AliAnalysisTaskPID.cxx:3031
 AliAnalysisTaskPID.cxx:3032
 AliAnalysisTaskPID.cxx:3033
 AliAnalysisTaskPID.cxx:3034
 AliAnalysisTaskPID.cxx:3035
 AliAnalysisTaskPID.cxx:3036
 AliAnalysisTaskPID.cxx:3037
 AliAnalysisTaskPID.cxx:3038
 AliAnalysisTaskPID.cxx:3039
 AliAnalysisTaskPID.cxx:3040
 AliAnalysisTaskPID.cxx:3041
 AliAnalysisTaskPID.cxx:3042
 AliAnalysisTaskPID.cxx:3043
 AliAnalysisTaskPID.cxx:3044
 AliAnalysisTaskPID.cxx:3045
 AliAnalysisTaskPID.cxx:3046
 AliAnalysisTaskPID.cxx:3047
 AliAnalysisTaskPID.cxx:3048
 AliAnalysisTaskPID.cxx:3049
 AliAnalysisTaskPID.cxx:3050
 AliAnalysisTaskPID.cxx:3051
 AliAnalysisTaskPID.cxx:3052
 AliAnalysisTaskPID.cxx:3053
 AliAnalysisTaskPID.cxx:3054
 AliAnalysisTaskPID.cxx:3055
 AliAnalysisTaskPID.cxx:3056
 AliAnalysisTaskPID.cxx:3057
 AliAnalysisTaskPID.cxx:3058
 AliAnalysisTaskPID.cxx:3059
 AliAnalysisTaskPID.cxx:3060
 AliAnalysisTaskPID.cxx:3061
 AliAnalysisTaskPID.cxx:3062
 AliAnalysisTaskPID.cxx:3063
 AliAnalysisTaskPID.cxx:3064
 AliAnalysisTaskPID.cxx:3065
 AliAnalysisTaskPID.cxx:3066
 AliAnalysisTaskPID.cxx:3067
 AliAnalysisTaskPID.cxx:3068
 AliAnalysisTaskPID.cxx:3069
 AliAnalysisTaskPID.cxx:3070
 AliAnalysisTaskPID.cxx:3071
 AliAnalysisTaskPID.cxx:3072
 AliAnalysisTaskPID.cxx:3073
 AliAnalysisTaskPID.cxx:3074
 AliAnalysisTaskPID.cxx:3075
 AliAnalysisTaskPID.cxx:3076
 AliAnalysisTaskPID.cxx:3077
 AliAnalysisTaskPID.cxx:3078
 AliAnalysisTaskPID.cxx:3079
 AliAnalysisTaskPID.cxx:3080
 AliAnalysisTaskPID.cxx:3081
 AliAnalysisTaskPID.cxx:3082
 AliAnalysisTaskPID.cxx:3083
 AliAnalysisTaskPID.cxx:3084
 AliAnalysisTaskPID.cxx:3085
 AliAnalysisTaskPID.cxx:3086
 AliAnalysisTaskPID.cxx:3087
 AliAnalysisTaskPID.cxx:3088
 AliAnalysisTaskPID.cxx:3089
 AliAnalysisTaskPID.cxx:3090
 AliAnalysisTaskPID.cxx:3091
 AliAnalysisTaskPID.cxx:3092
 AliAnalysisTaskPID.cxx:3093
 AliAnalysisTaskPID.cxx:3094
 AliAnalysisTaskPID.cxx:3095
 AliAnalysisTaskPID.cxx:3096
 AliAnalysisTaskPID.cxx:3097
 AliAnalysisTaskPID.cxx:3098
 AliAnalysisTaskPID.cxx:3099
 AliAnalysisTaskPID.cxx:3100
 AliAnalysisTaskPID.cxx:3101
 AliAnalysisTaskPID.cxx:3102
 AliAnalysisTaskPID.cxx:3103
 AliAnalysisTaskPID.cxx:3104
 AliAnalysisTaskPID.cxx:3105
 AliAnalysisTaskPID.cxx:3106
 AliAnalysisTaskPID.cxx:3107
 AliAnalysisTaskPID.cxx:3108
 AliAnalysisTaskPID.cxx:3109
 AliAnalysisTaskPID.cxx:3110
 AliAnalysisTaskPID.cxx:3111
 AliAnalysisTaskPID.cxx:3112
 AliAnalysisTaskPID.cxx:3113
 AliAnalysisTaskPID.cxx:3114
 AliAnalysisTaskPID.cxx:3115
 AliAnalysisTaskPID.cxx:3116
 AliAnalysisTaskPID.cxx:3117
 AliAnalysisTaskPID.cxx:3118
 AliAnalysisTaskPID.cxx:3119
 AliAnalysisTaskPID.cxx:3120
 AliAnalysisTaskPID.cxx:3121
 AliAnalysisTaskPID.cxx:3122
 AliAnalysisTaskPID.cxx:3123
 AliAnalysisTaskPID.cxx:3124
 AliAnalysisTaskPID.cxx:3125
 AliAnalysisTaskPID.cxx:3126
 AliAnalysisTaskPID.cxx:3127
 AliAnalysisTaskPID.cxx:3128
 AliAnalysisTaskPID.cxx:3129
 AliAnalysisTaskPID.cxx:3130
 AliAnalysisTaskPID.cxx:3131
 AliAnalysisTaskPID.cxx:3132
 AliAnalysisTaskPID.cxx:3133
 AliAnalysisTaskPID.cxx:3134
 AliAnalysisTaskPID.cxx:3135
 AliAnalysisTaskPID.cxx:3136
 AliAnalysisTaskPID.cxx:3137
 AliAnalysisTaskPID.cxx:3138
 AliAnalysisTaskPID.cxx:3139
 AliAnalysisTaskPID.cxx:3140
 AliAnalysisTaskPID.cxx:3141
 AliAnalysisTaskPID.cxx:3142
 AliAnalysisTaskPID.cxx:3143
 AliAnalysisTaskPID.cxx:3144
 AliAnalysisTaskPID.cxx:3145
 AliAnalysisTaskPID.cxx:3146
 AliAnalysisTaskPID.cxx:3147
 AliAnalysisTaskPID.cxx:3148
 AliAnalysisTaskPID.cxx:3149
 AliAnalysisTaskPID.cxx:3150
 AliAnalysisTaskPID.cxx:3151
 AliAnalysisTaskPID.cxx:3152
 AliAnalysisTaskPID.cxx:3153
 AliAnalysisTaskPID.cxx:3154
 AliAnalysisTaskPID.cxx:3155
 AliAnalysisTaskPID.cxx:3156
 AliAnalysisTaskPID.cxx:3157
 AliAnalysisTaskPID.cxx:3158
 AliAnalysisTaskPID.cxx:3159
 AliAnalysisTaskPID.cxx:3160
 AliAnalysisTaskPID.cxx:3161
 AliAnalysisTaskPID.cxx:3162
 AliAnalysisTaskPID.cxx:3163
 AliAnalysisTaskPID.cxx:3164
 AliAnalysisTaskPID.cxx:3165
 AliAnalysisTaskPID.cxx:3166
 AliAnalysisTaskPID.cxx:3167
 AliAnalysisTaskPID.cxx:3168
 AliAnalysisTaskPID.cxx:3169
 AliAnalysisTaskPID.cxx:3170
 AliAnalysisTaskPID.cxx:3171
 AliAnalysisTaskPID.cxx:3172
 AliAnalysisTaskPID.cxx:3173
 AliAnalysisTaskPID.cxx:3174
 AliAnalysisTaskPID.cxx:3175
 AliAnalysisTaskPID.cxx:3176
 AliAnalysisTaskPID.cxx:3177
 AliAnalysisTaskPID.cxx:3178
 AliAnalysisTaskPID.cxx:3179
 AliAnalysisTaskPID.cxx:3180
 AliAnalysisTaskPID.cxx:3181
 AliAnalysisTaskPID.cxx:3182
 AliAnalysisTaskPID.cxx:3183
 AliAnalysisTaskPID.cxx:3184
 AliAnalysisTaskPID.cxx:3185
 AliAnalysisTaskPID.cxx:3186
 AliAnalysisTaskPID.cxx:3187
 AliAnalysisTaskPID.cxx:3188
 AliAnalysisTaskPID.cxx:3189
 AliAnalysisTaskPID.cxx:3190
 AliAnalysisTaskPID.cxx:3191
 AliAnalysisTaskPID.cxx:3192
 AliAnalysisTaskPID.cxx:3193
 AliAnalysisTaskPID.cxx:3194
 AliAnalysisTaskPID.cxx:3195
 AliAnalysisTaskPID.cxx:3196
 AliAnalysisTaskPID.cxx:3197
 AliAnalysisTaskPID.cxx:3198
 AliAnalysisTaskPID.cxx:3199
 AliAnalysisTaskPID.cxx:3200
 AliAnalysisTaskPID.cxx:3201
 AliAnalysisTaskPID.cxx:3202
 AliAnalysisTaskPID.cxx:3203
 AliAnalysisTaskPID.cxx:3204
 AliAnalysisTaskPID.cxx:3205
 AliAnalysisTaskPID.cxx:3206
 AliAnalysisTaskPID.cxx:3207
 AliAnalysisTaskPID.cxx:3208
 AliAnalysisTaskPID.cxx:3209
 AliAnalysisTaskPID.cxx:3210
 AliAnalysisTaskPID.cxx:3211
 AliAnalysisTaskPID.cxx:3212
 AliAnalysisTaskPID.cxx:3213
 AliAnalysisTaskPID.cxx:3214
 AliAnalysisTaskPID.cxx:3215
 AliAnalysisTaskPID.cxx:3216
 AliAnalysisTaskPID.cxx:3217
 AliAnalysisTaskPID.cxx:3218
 AliAnalysisTaskPID.cxx:3219
 AliAnalysisTaskPID.cxx:3220
 AliAnalysisTaskPID.cxx:3221
 AliAnalysisTaskPID.cxx:3222
 AliAnalysisTaskPID.cxx:3223
 AliAnalysisTaskPID.cxx:3224
 AliAnalysisTaskPID.cxx:3225
 AliAnalysisTaskPID.cxx:3226
 AliAnalysisTaskPID.cxx:3227
 AliAnalysisTaskPID.cxx:3228
 AliAnalysisTaskPID.cxx:3229
 AliAnalysisTaskPID.cxx:3230
 AliAnalysisTaskPID.cxx:3231
 AliAnalysisTaskPID.cxx:3232
 AliAnalysisTaskPID.cxx:3233
 AliAnalysisTaskPID.cxx:3234
 AliAnalysisTaskPID.cxx:3235
 AliAnalysisTaskPID.cxx:3236
 AliAnalysisTaskPID.cxx:3237
 AliAnalysisTaskPID.cxx:3238
 AliAnalysisTaskPID.cxx:3239
 AliAnalysisTaskPID.cxx:3240
 AliAnalysisTaskPID.cxx:3241
 AliAnalysisTaskPID.cxx:3242
 AliAnalysisTaskPID.cxx:3243
 AliAnalysisTaskPID.cxx:3244
 AliAnalysisTaskPID.cxx:3245
 AliAnalysisTaskPID.cxx:3246
 AliAnalysisTaskPID.cxx:3247
 AliAnalysisTaskPID.cxx:3248
 AliAnalysisTaskPID.cxx:3249
 AliAnalysisTaskPID.cxx:3250
 AliAnalysisTaskPID.cxx:3251
 AliAnalysisTaskPID.cxx:3252
 AliAnalysisTaskPID.cxx:3253
 AliAnalysisTaskPID.cxx:3254
 AliAnalysisTaskPID.cxx:3255
 AliAnalysisTaskPID.cxx:3256
 AliAnalysisTaskPID.cxx:3257
 AliAnalysisTaskPID.cxx:3258
 AliAnalysisTaskPID.cxx:3259
 AliAnalysisTaskPID.cxx:3260
 AliAnalysisTaskPID.cxx:3261
 AliAnalysisTaskPID.cxx:3262
 AliAnalysisTaskPID.cxx:3263
 AliAnalysisTaskPID.cxx:3264
 AliAnalysisTaskPID.cxx:3265
 AliAnalysisTaskPID.cxx:3266
 AliAnalysisTaskPID.cxx:3267
 AliAnalysisTaskPID.cxx:3268
 AliAnalysisTaskPID.cxx:3269
 AliAnalysisTaskPID.cxx:3270
 AliAnalysisTaskPID.cxx:3271
 AliAnalysisTaskPID.cxx:3272
 AliAnalysisTaskPID.cxx:3273
 AliAnalysisTaskPID.cxx:3274
 AliAnalysisTaskPID.cxx:3275
 AliAnalysisTaskPID.cxx:3276
 AliAnalysisTaskPID.cxx:3277
 AliAnalysisTaskPID.cxx:3278
 AliAnalysisTaskPID.cxx:3279
 AliAnalysisTaskPID.cxx:3280
 AliAnalysisTaskPID.cxx:3281
 AliAnalysisTaskPID.cxx:3282
 AliAnalysisTaskPID.cxx:3283
 AliAnalysisTaskPID.cxx:3284
 AliAnalysisTaskPID.cxx:3285
 AliAnalysisTaskPID.cxx:3286
 AliAnalysisTaskPID.cxx:3287
 AliAnalysisTaskPID.cxx:3288
 AliAnalysisTaskPID.cxx:3289
 AliAnalysisTaskPID.cxx:3290
 AliAnalysisTaskPID.cxx:3291
 AliAnalysisTaskPID.cxx:3292
 AliAnalysisTaskPID.cxx:3293
 AliAnalysisTaskPID.cxx:3294
 AliAnalysisTaskPID.cxx:3295
 AliAnalysisTaskPID.cxx:3296
 AliAnalysisTaskPID.cxx:3297
 AliAnalysisTaskPID.cxx:3298
 AliAnalysisTaskPID.cxx:3299
 AliAnalysisTaskPID.cxx:3300
 AliAnalysisTaskPID.cxx:3301
 AliAnalysisTaskPID.cxx:3302
 AliAnalysisTaskPID.cxx:3303
 AliAnalysisTaskPID.cxx:3304
 AliAnalysisTaskPID.cxx:3305
 AliAnalysisTaskPID.cxx:3306
 AliAnalysisTaskPID.cxx:3307
 AliAnalysisTaskPID.cxx:3308
 AliAnalysisTaskPID.cxx:3309
 AliAnalysisTaskPID.cxx:3310
 AliAnalysisTaskPID.cxx:3311
 AliAnalysisTaskPID.cxx:3312
 AliAnalysisTaskPID.cxx:3313
 AliAnalysisTaskPID.cxx:3314
 AliAnalysisTaskPID.cxx:3315
 AliAnalysisTaskPID.cxx:3316
 AliAnalysisTaskPID.cxx:3317
 AliAnalysisTaskPID.cxx:3318
 AliAnalysisTaskPID.cxx:3319
 AliAnalysisTaskPID.cxx:3320
 AliAnalysisTaskPID.cxx:3321
 AliAnalysisTaskPID.cxx:3322
 AliAnalysisTaskPID.cxx:3323
 AliAnalysisTaskPID.cxx:3324
 AliAnalysisTaskPID.cxx:3325
 AliAnalysisTaskPID.cxx:3326
 AliAnalysisTaskPID.cxx:3327
 AliAnalysisTaskPID.cxx:3328
 AliAnalysisTaskPID.cxx:3329
 AliAnalysisTaskPID.cxx:3330
 AliAnalysisTaskPID.cxx:3331
 AliAnalysisTaskPID.cxx:3332
 AliAnalysisTaskPID.cxx:3333
 AliAnalysisTaskPID.cxx:3334
 AliAnalysisTaskPID.cxx:3335
 AliAnalysisTaskPID.cxx:3336
 AliAnalysisTaskPID.cxx:3337
 AliAnalysisTaskPID.cxx:3338
 AliAnalysisTaskPID.cxx:3339
 AliAnalysisTaskPID.cxx:3340
 AliAnalysisTaskPID.cxx:3341
 AliAnalysisTaskPID.cxx:3342
 AliAnalysisTaskPID.cxx:3343
 AliAnalysisTaskPID.cxx:3344
 AliAnalysisTaskPID.cxx:3345
 AliAnalysisTaskPID.cxx:3346
 AliAnalysisTaskPID.cxx:3347
 AliAnalysisTaskPID.cxx:3348
 AliAnalysisTaskPID.cxx:3349
 AliAnalysisTaskPID.cxx:3350
 AliAnalysisTaskPID.cxx:3351
 AliAnalysisTaskPID.cxx:3352
 AliAnalysisTaskPID.cxx:3353
 AliAnalysisTaskPID.cxx:3354
 AliAnalysisTaskPID.cxx:3355
 AliAnalysisTaskPID.cxx:3356
 AliAnalysisTaskPID.cxx:3357
 AliAnalysisTaskPID.cxx:3358
 AliAnalysisTaskPID.cxx:3359
 AliAnalysisTaskPID.cxx:3360
 AliAnalysisTaskPID.cxx:3361
 AliAnalysisTaskPID.cxx:3362
 AliAnalysisTaskPID.cxx:3363
 AliAnalysisTaskPID.cxx:3364
 AliAnalysisTaskPID.cxx:3365
 AliAnalysisTaskPID.cxx:3366
 AliAnalysisTaskPID.cxx:3367
 AliAnalysisTaskPID.cxx:3368
 AliAnalysisTaskPID.cxx:3369
 AliAnalysisTaskPID.cxx:3370
 AliAnalysisTaskPID.cxx:3371
 AliAnalysisTaskPID.cxx:3372
 AliAnalysisTaskPID.cxx:3373
 AliAnalysisTaskPID.cxx:3374
 AliAnalysisTaskPID.cxx:3375
 AliAnalysisTaskPID.cxx:3376
 AliAnalysisTaskPID.cxx:3377
 AliAnalysisTaskPID.cxx:3378
 AliAnalysisTaskPID.cxx:3379
 AliAnalysisTaskPID.cxx:3380
 AliAnalysisTaskPID.cxx:3381
 AliAnalysisTaskPID.cxx:3382
 AliAnalysisTaskPID.cxx:3383
 AliAnalysisTaskPID.cxx:3384
 AliAnalysisTaskPID.cxx:3385
 AliAnalysisTaskPID.cxx:3386
 AliAnalysisTaskPID.cxx:3387
 AliAnalysisTaskPID.cxx:3388
 AliAnalysisTaskPID.cxx:3389
 AliAnalysisTaskPID.cxx:3390
 AliAnalysisTaskPID.cxx:3391
 AliAnalysisTaskPID.cxx:3392
 AliAnalysisTaskPID.cxx:3393
 AliAnalysisTaskPID.cxx:3394
 AliAnalysisTaskPID.cxx:3395
 AliAnalysisTaskPID.cxx:3396
 AliAnalysisTaskPID.cxx:3397
 AliAnalysisTaskPID.cxx:3398
 AliAnalysisTaskPID.cxx:3399
 AliAnalysisTaskPID.cxx:3400
 AliAnalysisTaskPID.cxx:3401
 AliAnalysisTaskPID.cxx:3402
 AliAnalysisTaskPID.cxx:3403
 AliAnalysisTaskPID.cxx:3404
 AliAnalysisTaskPID.cxx:3405
 AliAnalysisTaskPID.cxx:3406
 AliAnalysisTaskPID.cxx:3407
 AliAnalysisTaskPID.cxx:3408
 AliAnalysisTaskPID.cxx:3409
 AliAnalysisTaskPID.cxx:3410
 AliAnalysisTaskPID.cxx:3411
 AliAnalysisTaskPID.cxx:3412
 AliAnalysisTaskPID.cxx:3413
 AliAnalysisTaskPID.cxx:3414
 AliAnalysisTaskPID.cxx:3415
 AliAnalysisTaskPID.cxx:3416
 AliAnalysisTaskPID.cxx:3417
 AliAnalysisTaskPID.cxx:3418
 AliAnalysisTaskPID.cxx:3419
 AliAnalysisTaskPID.cxx:3420
 AliAnalysisTaskPID.cxx:3421
 AliAnalysisTaskPID.cxx:3422
 AliAnalysisTaskPID.cxx:3423
 AliAnalysisTaskPID.cxx:3424
 AliAnalysisTaskPID.cxx:3425
 AliAnalysisTaskPID.cxx:3426
 AliAnalysisTaskPID.cxx:3427
 AliAnalysisTaskPID.cxx:3428
 AliAnalysisTaskPID.cxx:3429
 AliAnalysisTaskPID.cxx:3430
 AliAnalysisTaskPID.cxx:3431
 AliAnalysisTaskPID.cxx:3432
 AliAnalysisTaskPID.cxx:3433
 AliAnalysisTaskPID.cxx:3434
 AliAnalysisTaskPID.cxx:3435
 AliAnalysisTaskPID.cxx:3436
 AliAnalysisTaskPID.cxx:3437
 AliAnalysisTaskPID.cxx:3438
 AliAnalysisTaskPID.cxx:3439
 AliAnalysisTaskPID.cxx:3440
 AliAnalysisTaskPID.cxx:3441
 AliAnalysisTaskPID.cxx:3442
 AliAnalysisTaskPID.cxx:3443
 AliAnalysisTaskPID.cxx:3444
 AliAnalysisTaskPID.cxx:3445
 AliAnalysisTaskPID.cxx:3446
 AliAnalysisTaskPID.cxx:3447
 AliAnalysisTaskPID.cxx:3448
 AliAnalysisTaskPID.cxx:3449
 AliAnalysisTaskPID.cxx:3450
 AliAnalysisTaskPID.cxx:3451
 AliAnalysisTaskPID.cxx:3452
 AliAnalysisTaskPID.cxx:3453
 AliAnalysisTaskPID.cxx:3454
 AliAnalysisTaskPID.cxx:3455
 AliAnalysisTaskPID.cxx:3456
 AliAnalysisTaskPID.cxx:3457
 AliAnalysisTaskPID.cxx:3458
 AliAnalysisTaskPID.cxx:3459
 AliAnalysisTaskPID.cxx:3460
 AliAnalysisTaskPID.cxx:3461
 AliAnalysisTaskPID.cxx:3462
 AliAnalysisTaskPID.cxx:3463
 AliAnalysisTaskPID.cxx:3464
 AliAnalysisTaskPID.cxx:3465
 AliAnalysisTaskPID.cxx:3466
 AliAnalysisTaskPID.cxx:3467
 AliAnalysisTaskPID.cxx:3468
 AliAnalysisTaskPID.cxx:3469
 AliAnalysisTaskPID.cxx:3470
 AliAnalysisTaskPID.cxx:3471
 AliAnalysisTaskPID.cxx:3472
 AliAnalysisTaskPID.cxx:3473
 AliAnalysisTaskPID.cxx:3474
 AliAnalysisTaskPID.cxx:3475
 AliAnalysisTaskPID.cxx:3476
 AliAnalysisTaskPID.cxx:3477
 AliAnalysisTaskPID.cxx:3478
 AliAnalysisTaskPID.cxx:3479
 AliAnalysisTaskPID.cxx:3480
 AliAnalysisTaskPID.cxx:3481
 AliAnalysisTaskPID.cxx:3482
 AliAnalysisTaskPID.cxx:3483
 AliAnalysisTaskPID.cxx:3484
 AliAnalysisTaskPID.cxx:3485
 AliAnalysisTaskPID.cxx:3486
 AliAnalysisTaskPID.cxx:3487
 AliAnalysisTaskPID.cxx:3488
 AliAnalysisTaskPID.cxx:3489
 AliAnalysisTaskPID.cxx:3490
 AliAnalysisTaskPID.cxx:3491
 AliAnalysisTaskPID.cxx:3492
 AliAnalysisTaskPID.cxx:3493
 AliAnalysisTaskPID.cxx:3494
 AliAnalysisTaskPID.cxx:3495
 AliAnalysisTaskPID.cxx:3496
 AliAnalysisTaskPID.cxx:3497
 AliAnalysisTaskPID.cxx:3498
 AliAnalysisTaskPID.cxx:3499
 AliAnalysisTaskPID.cxx:3500
 AliAnalysisTaskPID.cxx:3501
 AliAnalysisTaskPID.cxx:3502
 AliAnalysisTaskPID.cxx:3503
 AliAnalysisTaskPID.cxx:3504
 AliAnalysisTaskPID.cxx:3505
 AliAnalysisTaskPID.cxx:3506
 AliAnalysisTaskPID.cxx:3507
 AliAnalysisTaskPID.cxx:3508
 AliAnalysisTaskPID.cxx:3509
 AliAnalysisTaskPID.cxx:3510
 AliAnalysisTaskPID.cxx:3511
 AliAnalysisTaskPID.cxx:3512
 AliAnalysisTaskPID.cxx:3513
 AliAnalysisTaskPID.cxx:3514
 AliAnalysisTaskPID.cxx:3515
 AliAnalysisTaskPID.cxx:3516
 AliAnalysisTaskPID.cxx:3517
 AliAnalysisTaskPID.cxx:3518
 AliAnalysisTaskPID.cxx:3519
 AliAnalysisTaskPID.cxx:3520
 AliAnalysisTaskPID.cxx:3521
 AliAnalysisTaskPID.cxx:3522
 AliAnalysisTaskPID.cxx:3523
 AliAnalysisTaskPID.cxx:3524
 AliAnalysisTaskPID.cxx:3525
 AliAnalysisTaskPID.cxx:3526
 AliAnalysisTaskPID.cxx:3527
 AliAnalysisTaskPID.cxx:3528
 AliAnalysisTaskPID.cxx:3529
 AliAnalysisTaskPID.cxx:3530
 AliAnalysisTaskPID.cxx:3531
 AliAnalysisTaskPID.cxx:3532
 AliAnalysisTaskPID.cxx:3533
 AliAnalysisTaskPID.cxx:3534
 AliAnalysisTaskPID.cxx:3535
 AliAnalysisTaskPID.cxx:3536
 AliAnalysisTaskPID.cxx:3537
 AliAnalysisTaskPID.cxx:3538
 AliAnalysisTaskPID.cxx:3539
 AliAnalysisTaskPID.cxx:3540
 AliAnalysisTaskPID.cxx:3541
 AliAnalysisTaskPID.cxx:3542
 AliAnalysisTaskPID.cxx:3543
 AliAnalysisTaskPID.cxx:3544
 AliAnalysisTaskPID.cxx:3545
 AliAnalysisTaskPID.cxx:3546
 AliAnalysisTaskPID.cxx:3547
 AliAnalysisTaskPID.cxx:3548
 AliAnalysisTaskPID.cxx:3549
 AliAnalysisTaskPID.cxx:3550
 AliAnalysisTaskPID.cxx:3551
 AliAnalysisTaskPID.cxx:3552
 AliAnalysisTaskPID.cxx:3553
 AliAnalysisTaskPID.cxx:3554
 AliAnalysisTaskPID.cxx:3555
 AliAnalysisTaskPID.cxx:3556
 AliAnalysisTaskPID.cxx:3557
 AliAnalysisTaskPID.cxx:3558
 AliAnalysisTaskPID.cxx:3559
 AliAnalysisTaskPID.cxx:3560
 AliAnalysisTaskPID.cxx:3561
 AliAnalysisTaskPID.cxx:3562
 AliAnalysisTaskPID.cxx:3563
 AliAnalysisTaskPID.cxx:3564
 AliAnalysisTaskPID.cxx:3565
 AliAnalysisTaskPID.cxx:3566
 AliAnalysisTaskPID.cxx:3567
 AliAnalysisTaskPID.cxx:3568
 AliAnalysisTaskPID.cxx:3569
 AliAnalysisTaskPID.cxx:3570
 AliAnalysisTaskPID.cxx:3571
 AliAnalysisTaskPID.cxx:3572
 AliAnalysisTaskPID.cxx:3573
 AliAnalysisTaskPID.cxx:3574
 AliAnalysisTaskPID.cxx:3575
 AliAnalysisTaskPID.cxx:3576
 AliAnalysisTaskPID.cxx:3577
 AliAnalysisTaskPID.cxx:3578
 AliAnalysisTaskPID.cxx:3579
 AliAnalysisTaskPID.cxx:3580
 AliAnalysisTaskPID.cxx:3581
 AliAnalysisTaskPID.cxx:3582
 AliAnalysisTaskPID.cxx:3583
 AliAnalysisTaskPID.cxx:3584
 AliAnalysisTaskPID.cxx:3585
 AliAnalysisTaskPID.cxx:3586
 AliAnalysisTaskPID.cxx:3587
 AliAnalysisTaskPID.cxx:3588
 AliAnalysisTaskPID.cxx:3589
 AliAnalysisTaskPID.cxx:3590
 AliAnalysisTaskPID.cxx:3591
 AliAnalysisTaskPID.cxx:3592
 AliAnalysisTaskPID.cxx:3593
 AliAnalysisTaskPID.cxx:3594
 AliAnalysisTaskPID.cxx:3595
 AliAnalysisTaskPID.cxx:3596
 AliAnalysisTaskPID.cxx:3597
 AliAnalysisTaskPID.cxx:3598
 AliAnalysisTaskPID.cxx:3599
 AliAnalysisTaskPID.cxx:3600
 AliAnalysisTaskPID.cxx:3601
 AliAnalysisTaskPID.cxx:3602
 AliAnalysisTaskPID.cxx:3603
 AliAnalysisTaskPID.cxx:3604
 AliAnalysisTaskPID.cxx:3605
 AliAnalysisTaskPID.cxx:3606
 AliAnalysisTaskPID.cxx:3607
 AliAnalysisTaskPID.cxx:3608
 AliAnalysisTaskPID.cxx:3609
 AliAnalysisTaskPID.cxx:3610
 AliAnalysisTaskPID.cxx:3611
 AliAnalysisTaskPID.cxx:3612
 AliAnalysisTaskPID.cxx:3613
 AliAnalysisTaskPID.cxx:3614
 AliAnalysisTaskPID.cxx:3615
 AliAnalysisTaskPID.cxx:3616
 AliAnalysisTaskPID.cxx:3617
 AliAnalysisTaskPID.cxx:3618
 AliAnalysisTaskPID.cxx:3619
 AliAnalysisTaskPID.cxx:3620
 AliAnalysisTaskPID.cxx:3621
 AliAnalysisTaskPID.cxx:3622
 AliAnalysisTaskPID.cxx:3623
 AliAnalysisTaskPID.cxx:3624
 AliAnalysisTaskPID.cxx:3625
 AliAnalysisTaskPID.cxx:3626
 AliAnalysisTaskPID.cxx:3627
 AliAnalysisTaskPID.cxx:3628
 AliAnalysisTaskPID.cxx:3629
 AliAnalysisTaskPID.cxx:3630
 AliAnalysisTaskPID.cxx:3631
 AliAnalysisTaskPID.cxx:3632
 AliAnalysisTaskPID.cxx:3633
 AliAnalysisTaskPID.cxx:3634
 AliAnalysisTaskPID.cxx:3635
 AliAnalysisTaskPID.cxx:3636
 AliAnalysisTaskPID.cxx:3637
 AliAnalysisTaskPID.cxx:3638
 AliAnalysisTaskPID.cxx:3639
 AliAnalysisTaskPID.cxx:3640
 AliAnalysisTaskPID.cxx:3641
 AliAnalysisTaskPID.cxx:3642
 AliAnalysisTaskPID.cxx:3643
 AliAnalysisTaskPID.cxx:3644
 AliAnalysisTaskPID.cxx:3645
 AliAnalysisTaskPID.cxx:3646
 AliAnalysisTaskPID.cxx:3647
 AliAnalysisTaskPID.cxx:3648
 AliAnalysisTaskPID.cxx:3649
 AliAnalysisTaskPID.cxx:3650
 AliAnalysisTaskPID.cxx:3651
 AliAnalysisTaskPID.cxx:3652
 AliAnalysisTaskPID.cxx:3653
 AliAnalysisTaskPID.cxx:3654
 AliAnalysisTaskPID.cxx:3655
 AliAnalysisTaskPID.cxx:3656
 AliAnalysisTaskPID.cxx:3657
 AliAnalysisTaskPID.cxx:3658
 AliAnalysisTaskPID.cxx:3659
 AliAnalysisTaskPID.cxx:3660
 AliAnalysisTaskPID.cxx:3661
 AliAnalysisTaskPID.cxx:3662
 AliAnalysisTaskPID.cxx:3663
 AliAnalysisTaskPID.cxx:3664
 AliAnalysisTaskPID.cxx:3665
 AliAnalysisTaskPID.cxx:3666
 AliAnalysisTaskPID.cxx:3667
 AliAnalysisTaskPID.cxx:3668
 AliAnalysisTaskPID.cxx:3669
 AliAnalysisTaskPID.cxx:3670
 AliAnalysisTaskPID.cxx:3671
 AliAnalysisTaskPID.cxx:3672
 AliAnalysisTaskPID.cxx:3673
 AliAnalysisTaskPID.cxx:3674
 AliAnalysisTaskPID.cxx:3675
 AliAnalysisTaskPID.cxx:3676
 AliAnalysisTaskPID.cxx:3677
 AliAnalysisTaskPID.cxx:3678
 AliAnalysisTaskPID.cxx:3679
 AliAnalysisTaskPID.cxx:3680
 AliAnalysisTaskPID.cxx:3681
 AliAnalysisTaskPID.cxx:3682
 AliAnalysisTaskPID.cxx:3683
 AliAnalysisTaskPID.cxx:3684
 AliAnalysisTaskPID.cxx:3685
 AliAnalysisTaskPID.cxx:3686
 AliAnalysisTaskPID.cxx:3687
 AliAnalysisTaskPID.cxx:3688
 AliAnalysisTaskPID.cxx:3689
 AliAnalysisTaskPID.cxx:3690
 AliAnalysisTaskPID.cxx:3691
 AliAnalysisTaskPID.cxx:3692
 AliAnalysisTaskPID.cxx:3693
 AliAnalysisTaskPID.cxx:3694
 AliAnalysisTaskPID.cxx:3695
 AliAnalysisTaskPID.cxx:3696
 AliAnalysisTaskPID.cxx:3697
 AliAnalysisTaskPID.cxx:3698
 AliAnalysisTaskPID.cxx:3699
 AliAnalysisTaskPID.cxx:3700
 AliAnalysisTaskPID.cxx:3701
 AliAnalysisTaskPID.cxx:3702
 AliAnalysisTaskPID.cxx:3703
 AliAnalysisTaskPID.cxx:3704
 AliAnalysisTaskPID.cxx:3705
 AliAnalysisTaskPID.cxx:3706
 AliAnalysisTaskPID.cxx:3707
 AliAnalysisTaskPID.cxx:3708
 AliAnalysisTaskPID.cxx:3709
 AliAnalysisTaskPID.cxx:3710
 AliAnalysisTaskPID.cxx:3711
 AliAnalysisTaskPID.cxx:3712
 AliAnalysisTaskPID.cxx:3713
 AliAnalysisTaskPID.cxx:3714
 AliAnalysisTaskPID.cxx:3715
 AliAnalysisTaskPID.cxx:3716
 AliAnalysisTaskPID.cxx:3717
 AliAnalysisTaskPID.cxx:3718
 AliAnalysisTaskPID.cxx:3719
 AliAnalysisTaskPID.cxx:3720
 AliAnalysisTaskPID.cxx:3721
 AliAnalysisTaskPID.cxx:3722
 AliAnalysisTaskPID.cxx:3723
 AliAnalysisTaskPID.cxx:3724
 AliAnalysisTaskPID.cxx:3725
 AliAnalysisTaskPID.cxx:3726
 AliAnalysisTaskPID.cxx:3727
 AliAnalysisTaskPID.cxx:3728
 AliAnalysisTaskPID.cxx:3729
 AliAnalysisTaskPID.cxx:3730
 AliAnalysisTaskPID.cxx:3731
 AliAnalysisTaskPID.cxx:3732
 AliAnalysisTaskPID.cxx:3733
 AliAnalysisTaskPID.cxx:3734
 AliAnalysisTaskPID.cxx:3735
 AliAnalysisTaskPID.cxx:3736
 AliAnalysisTaskPID.cxx:3737
 AliAnalysisTaskPID.cxx:3738
 AliAnalysisTaskPID.cxx:3739
 AliAnalysisTaskPID.cxx:3740
 AliAnalysisTaskPID.cxx:3741
 AliAnalysisTaskPID.cxx:3742
 AliAnalysisTaskPID.cxx:3743
 AliAnalysisTaskPID.cxx:3744
 AliAnalysisTaskPID.cxx:3745
 AliAnalysisTaskPID.cxx:3746
 AliAnalysisTaskPID.cxx:3747
 AliAnalysisTaskPID.cxx:3748
 AliAnalysisTaskPID.cxx:3749
 AliAnalysisTaskPID.cxx:3750
 AliAnalysisTaskPID.cxx:3751
 AliAnalysisTaskPID.cxx:3752
 AliAnalysisTaskPID.cxx:3753
 AliAnalysisTaskPID.cxx:3754
 AliAnalysisTaskPID.cxx:3755
 AliAnalysisTaskPID.cxx:3756
 AliAnalysisTaskPID.cxx:3757
 AliAnalysisTaskPID.cxx:3758
 AliAnalysisTaskPID.cxx:3759
 AliAnalysisTaskPID.cxx:3760
 AliAnalysisTaskPID.cxx:3761
 AliAnalysisTaskPID.cxx:3762
 AliAnalysisTaskPID.cxx:3763
 AliAnalysisTaskPID.cxx:3764
 AliAnalysisTaskPID.cxx:3765
 AliAnalysisTaskPID.cxx:3766
 AliAnalysisTaskPID.cxx:3767
 AliAnalysisTaskPID.cxx:3768
 AliAnalysisTaskPID.cxx:3769
 AliAnalysisTaskPID.cxx:3770
 AliAnalysisTaskPID.cxx:3771
 AliAnalysisTaskPID.cxx:3772
 AliAnalysisTaskPID.cxx:3773
 AliAnalysisTaskPID.cxx:3774
 AliAnalysisTaskPID.cxx:3775
 AliAnalysisTaskPID.cxx:3776
 AliAnalysisTaskPID.cxx:3777
 AliAnalysisTaskPID.cxx:3778
 AliAnalysisTaskPID.cxx:3779
 AliAnalysisTaskPID.cxx:3780
 AliAnalysisTaskPID.cxx:3781
 AliAnalysisTaskPID.cxx:3782
 AliAnalysisTaskPID.cxx:3783
 AliAnalysisTaskPID.cxx:3784
 AliAnalysisTaskPID.cxx:3785
 AliAnalysisTaskPID.cxx:3786
 AliAnalysisTaskPID.cxx:3787
 AliAnalysisTaskPID.cxx:3788
 AliAnalysisTaskPID.cxx:3789
 AliAnalysisTaskPID.cxx:3790
 AliAnalysisTaskPID.cxx:3791
 AliAnalysisTaskPID.cxx:3792
 AliAnalysisTaskPID.cxx:3793
 AliAnalysisTaskPID.cxx:3794
 AliAnalysisTaskPID.cxx:3795
 AliAnalysisTaskPID.cxx:3796
 AliAnalysisTaskPID.cxx:3797
 AliAnalysisTaskPID.cxx:3798
 AliAnalysisTaskPID.cxx:3799
 AliAnalysisTaskPID.cxx:3800
 AliAnalysisTaskPID.cxx:3801
 AliAnalysisTaskPID.cxx:3802
 AliAnalysisTaskPID.cxx:3803
 AliAnalysisTaskPID.cxx:3804
 AliAnalysisTaskPID.cxx:3805
 AliAnalysisTaskPID.cxx:3806
 AliAnalysisTaskPID.cxx:3807
 AliAnalysisTaskPID.cxx:3808
 AliAnalysisTaskPID.cxx:3809
 AliAnalysisTaskPID.cxx:3810
 AliAnalysisTaskPID.cxx:3811
 AliAnalysisTaskPID.cxx:3812
 AliAnalysisTaskPID.cxx:3813
 AliAnalysisTaskPID.cxx:3814
 AliAnalysisTaskPID.cxx:3815
 AliAnalysisTaskPID.cxx:3816
 AliAnalysisTaskPID.cxx:3817
 AliAnalysisTaskPID.cxx:3818
 AliAnalysisTaskPID.cxx:3819
 AliAnalysisTaskPID.cxx:3820
 AliAnalysisTaskPID.cxx:3821
 AliAnalysisTaskPID.cxx:3822
 AliAnalysisTaskPID.cxx:3823
 AliAnalysisTaskPID.cxx:3824