ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, proviyaded that the above copyright notice appears in all *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purapose. It is         *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

///////////////////////////////////////////////////////////////////////////
//                                                                       //
//                                                                       //
// Analysis for identified charged hadron spectra.                       //
//                                                                       //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include "Riostream.h"
#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TList.h"
#include "TMath.h"
#include "TCanvas.h"
#include "TObjArray.h"
#include "TF1.h"
#include "TFile.h"

#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"

#include "AliHeader.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenCocktailEventHeader.h"

#include "AliPID.h"
#include "AliESDtrackCuts.h"
#include "AliESDVertex.h"
#include "AliESDEvent.h"
#include "AliESDInputHandler.h"
#include "AliESDtrack.h"
#include "AliESDpid.h"
#include "AliCentrality.h"
#include "AliESDUtils.h"
#include "AliMultiplicity.h"

#include "AliMCEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"

#include "AliLog.h"

#include "AliAnalysisDeuteronpA.h"

#include "AliAnalysisUtils.h"


ClassImp(AliAnalysisDeuteronpA)

//________________________________________________________________________
AliAnalysisDeuteronpA::AliAnalysisDeuteronpA() 
: AliAnalysisTaskSE("TaskChargedHadron"), fESD(0), fListHist(0), fESDtrackCuts(0),fESDTrackCutsMult(0),fESDpid(0),
  fMCtrue(0),
  fRapCMSpA(0),
  fAlephParameters(),
  fUtils(0),
  fHistRealTracks(0),
  fHistMCparticles(0),
  fHistPidQA(0),
  fHistTofQA(0),
  fHistMult(0),
  fHistCentrality(0),
  fHistMomCorr(0),
  fHistEtaPtGen(0),
  fHistVertex(0),
  fHistVertexRes(0),
  fHistVertexResTracks(0)
{
  // default Constructor
  /* fast compilation test
     gSystem->Load("libANALYSIS");
     gSystem->Load("libANALYSISalice");
     .L AliAnalysisDeuteronpA.cxx++
   */
}


//________________________________________________________________________
AliAnalysisDeuteronpA::AliAnalysisDeuteronpA(const char *name) 
  : AliAnalysisTaskSE(name), fESD(0), fListHist(0), fESDtrackCuts(0),fESDTrackCutsMult(0),fESDpid(0),
    fMCtrue(0),
    fRapCMSpA(0),
    fAlephParameters(),
    fUtils(0),
    fHistRealTracks(0),
    fHistMCparticles(0),
    fHistPidQA(0),
    fHistTofQA(0),
    fHistMult(0),
    fHistCentrality(0),
    fHistMomCorr(0),
    fHistEtaPtGen(0),
    fHistVertex(0),
    fHistVertexRes(0),
    fHistVertexResTracks(0)
{
  //
  // standard constructur which should be used
  //
  Printf("*** CONSTRUCTOR CALLED ****");
  //
  fMCtrue = kTRUE; 
  fRapCMSpA = kTRUE;
  /* real */
  fAlephParameters[0] = 0.0283086;
  fAlephParameters[1] = 2.63394e+01;
  fAlephParameters[2] = 5.04114e-11;
  fAlephParameters[3] = 2.12543e+00;
  fAlephParameters[4] = 4.88663e+00;
  //
  // initialize PID object
  //
  //fESDpid = new AliESDpid();
  //
  // create track cuts
  //
  fESDtrackCuts = new AliESDtrackCuts("AliESDtrackCuts","AliESDtrackCuts");
  //
  Initialize();
  // Output slot #0 writes into a TList container
  DefineOutput(1, TList::Class());

}


//________________________________________________________________________
void AliAnalysisDeuteronpA::Initialize()
{
  //
  // updating parameters in case of changes
  //


  fESDtrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE,kTRUE);
  fESDtrackCuts->SetMaxDCAToVertexXY(3);
  fESDtrackCuts->SetMaxDCAToVertexZ(2);
  fESDtrackCuts->SetEtaRange(-0.9,0.9);
  //
  //

}


//________________________________________________________________________
void AliAnalysisDeuteronpA::UserCreateOutputObjects() 
{

  //Create analysis utils for event selection and pileup rejection
  fUtils = new AliAnalysisUtils();
  fUtils->SetCutOnZVertexSPD(kFALSE);
  //
  //
  // Create histograms
  // Called once
  fListHist = new TList();
  fListHist->SetOwner(kTRUE);
  //
  const Int_t kPtBins = 28;
  const Int_t kMultBins = 11;
  const Int_t kDcaBins = 38;


  //different binning for YCMS in pA to cover detector acceptance
  Double_t kYlowBorder = -0.6;
  Double_t kYhighBorder = 0.6;
  Double_t kYBins = 12;

  if (fRapCMSpA){
    kYlowBorder = -0.1;
    kYhighBorder = 1.1;
    kYBins = 12;
  }

  //
  // sort pT-bins ..
  //
  Double_t binsPt[kPtBins+1] = {0., 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6};
  //
  // provide a reasonable dca/binning
  //
  Double_t binsDca[kDcaBins+1];
  for(Int_t i = 0; i< kDcaBins+1; i++) {
    binsDca[i] = 1.5*(1./TMath::Exp(-TMath::Abs((i - kDcaBins/2.))/(kDcaBins/2)) -1);
    if ((i - kDcaBins/2.) < 0) binsDca[i] *= -1;
    //cout <<  binsDca[i] << endl;
  }
  //
  // create the histograms with all necessary information --> it is filled 4x for each particle assumption
  //
  // (0.) assumed particle: 0. deuteron, 1. triton, 2. He-3
  // (1.) multiplicity or centrality -- number of accepted ESD tracks per events (deprecated), but now classes from 1 to 10, 0: Min. Bias
  // (2.) pT
  // (3.) sign
  // (4.) rapidity --> filled 4x
  // (5.)  pull TPC dEx --> filled 4x
  // (6.) has valid TOF pid signal
  // (7.) nsigma TOF --> filled 4x XXXXXXXXX no mass*mass
  // (8..) dca_xy
  // (9.) CODE -- only MC 0-generated, 1-true rec. primaries, 2-misident prim, 3-second weak, 4-second material, 5-misident sec
  //
  //                              0,           1,           2,  3,      4,              5,    6,    7,       8
  Int_t    binsHistReal[9] = {   3,   kMultBins,     kPtBins,  2,      static_cast<Int_t>(kYBins)      ,   50,    2,  100, kDcaBins};
  Double_t xminHistReal[9] = {-0.5,        -0.5,           0, -2,      kYlowBorder ,   -5,- 0.5, -2.5,       -3};
  Double_t xmaxHistReal[9] = { 2.5,        10.5,           3,  2,      kYhighBorder,    5,  1.5,  2.5,        3};
  fHistRealTracks = new THnSparseF("fHistRealTracks","real tracks",9,binsHistReal,xminHistReal,xmaxHistReal);
  //
  fHistRealTracks->GetAxis(2)->Set(kPtBins, binsPt);
  fHistRealTracks->GetAxis(8)->Set(kDcaBins, binsDca);
  fListHist->Add(fHistRealTracks);
  //
  //
  fHistPidQA = new TH3F("fHistPidQA","PID QA",500,0.1,10,1000,0,1000,2,-2,2);
  BinLogAxis(fHistPidQA);
  fListHist->Add(fHistPidQA);
  //
  fHistTofQA = new TH2F("fHistTofQA","TOF-QA",200,-4.,4.,400,0,1.1);
  fListHist->Add(fHistTofQA);
  //                            0,            1,           2,  3,      4,            5,    6,    7,        8,    9
  Int_t    binsHistMC[10] = {   3,    kMultBins,     kPtBins,  2,    static_cast<Int_t>(kYBins)      ,  50,    2,  100, kDcaBins,    6};
  Double_t xminHistMC[10] = {-0.5,         -0.5,           0, -2,    kYlowBorder ,  -5,- 0.5, -2.5,       -3, -0.5};
  Double_t xmaxHistMC[10] = { 2.5,         10.5,           3,  2,    kYhighBorder,   5,  1.5,  2.5,        3,  5.5};
  //
  // different binning for CODE axis, if we want to save motherPDG
  //
  fHistMCparticles = new THnSparseF("fHistMCparticles","MC histogram",10,binsHistMC,xminHistMC,xmaxHistMC);
  fHistMCparticles->GetAxis(2)->Set(kPtBins, binsPt);
  fHistMCparticles->GetAxis(8)->Set(kDcaBins, binsDca);
  fListHist->Add(fHistMCparticles);
  //
  fHistMult = new TH2F("fHistMult", "control histogram to count number of events", 502, -2.5, 499.5,4,-0.5,3.5);
  fHistCentrality = new TH1F("fHistCentrality", "control histogram to count number of events", 22, -1.5, 20.5);
  fListHist->Add(fHistMult);
  fListHist->Add(fHistCentrality);
  //
  fHistMomCorr = new TH2F("fHistMomCorr","momentum correction; pT_{MCtrue}; rel. difference",200,0,3,200,-0.2,0.2);
  fListHist->Add(fHistMomCorr);
  //
  fHistEtaPtGen = new TH3F("fHistPtEtaGen","rapidity correction; p_{T} (GeV/c); rapidity y; pid",200,0,12, 200,-1.2,1.2, 3,-0.5,2.5);
  fListHist->Add(fHistEtaPtGen);
  //
  fHistVertex = new TH2F("fHistVertex","vertex position; V_{XY} (cm); V_{Z}",2000,-1.,1.,400,-20.,20.);
  fListHist->Add(fHistVertex);
  //
  fHistVertexRes = new TH1F("fHistVertexRes","vertex position difference MC truth and rec; V_{Z,rec} - V_{Z,truth} (cm)",2000,-0.5,0.5);
  fListHist->Add(fHistVertexRes);
  //
  fHistVertexResTracks = new TH2F("fHistVertexResTracks","vertex res vs no of tracks; no. of ch. primaries |#eta| < 0.9; V_{Z,rec} - V_{Z,truth} (cm)",50,-0.5,499.5,200,-0.05,0.05);
  fListHist->Add(fHistVertexResTracks);

  PostData(1, fListHist);

}

//________________________________________________________________________
void AliAnalysisDeuteronpA::UserExec(Option_t *) 
{
  //
  // main event loop
  //
  if (!fESDpid) fESDpid = ((AliESDInputHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->GetESDpid();
  if (!fESDpid) {
    fESDpid = new AliESDpid(); // HACK FOR MC PBPB --> PLEASE REMOVE AS SOON AS POSSIBLE
    fESDpid->GetTPCResponse().SetBetheBlochParameters(1.28778e+00/50., 3.13539e+01, TMath::Exp(-3.16327e+01), 1.87901e+00, 6.41583e+00);
  }
  //AliLog::SetGlobalLogLevel(AliLog::kError);
  //
  // Check Monte Carlo information and other access first:
  //
  AliMCEventHandler* eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
  if (!eventHandler) {
    //Printf("ERROR: Could not retrieve MC event handler");
    fMCtrue = kFALSE;
  }
  //
  AliMCEvent* mcEvent = 0x0;
  AliStack* stack = 0x0;
  if (eventHandler) mcEvent = eventHandler->MCEvent();
  if (!mcEvent) {
    //Printf("ERROR: Could not retrieve MC event");
    if (fMCtrue) return;
  }
  if (fMCtrue) {
    stack = mcEvent->Stack();
    if (!stack) return;
  }
  //
  fESD = dynamic_cast<AliESDEvent*>( InputEvent() );
  if (!fESD) {
    //Printf("ERROR: fESD not available");
    return;
  }
  
  //check with analysis utils
  //first event in chunck --> continue
  if(fUtils->IsFirstEventInChunk(fESD)) {
    PostData(1, fListHist);
    return;
  }
  //check for pileup
  if (fUtils->IsPileUpEvent(fESD)){
    PostData(1, fListHist);
    return;
  }
  //vetex cuts
  Bool_t isVtxOk = kTRUE;
  if(!fUtils->IsVertexSelected2013pA(fESD)) isVtxOk = kFALSE;
  //NEED TO PUT THIS IN ACTION SOMEWHERE


  if (!fESDtrackCuts) {
    Printf("ERROR: fESDtrackCuts not available");
    return;
  }
  //
  // check if event is selected by physics selection class
  //
  //
  // monitor vertex position
  //
  const AliESDVertex *vertex = fESD->GetPrimaryVertexTracks();
  if(vertex->GetNContributors()<1) {
    // SPD vertex
    vertex = fESD->GetPrimaryVertexSPD();
    if(vertex->GetNContributors()<1) vertex = 0x0;
  }  
  //
  // fill histogram to monitor vertex position
  if (vertex && isVtxOk) fHistVertex->Fill(TMath::Sqrt(vertex->GetX()*vertex->GetX() + vertex->GetY()*vertex->GetY()),vertex->GetZ());

  Float_t vertexRes = -100;
  Int_t nPrimaries = 0;


  if (fMCtrue && vertex && isVtxOk) {
    //
    //
    for(Int_t i = 0; i < stack->GetNtrack(); i++) {
      TParticle * trackMC = stack->Particle(i);
      
      if (!trackMC->IsPrimary()) continue;
      //
      //Double_t xv = trackMC->Vx();
      //Double_t yv = trackMC->Vy();
      Double_t zv = trackMC->Vz();

      vertexRes = vertex->GetZ() - zv;
      fHistVertexRes->Fill(vertex->GetZ() - zv);

      break;
    }

    for(Int_t i = 0; i < stack->GetNtrack(); i++) {
      TParticle * trackMC = stack->Particle(i);
      
      //      if (trackMC->IsPrimary()) {
      if (stack->IsPhysicalPrimary(i)) {
	if (trackMC->Eta() > -0.9 && trackMC->Eta() < 0.9 && trackMC->GetPDG()->Charge() != 0){
	  nPrimaries++;
	  //cout << nPrimaries << endl;
	}
      }
    }
  }

  fHistVertexResTracks->Fill(nPrimaries, vertexRes);




  //
  Float_t centrality = -1;
  //
  /*
  Int_t rootS = fESD->GetBeamEnergy() < 1000 ? 0 : 1;
  if (fESD->GetEventSpecie() == 4) { // PbPb
    rootS = 2;
    AliCentrality *esdCentrality = fESD->GetCentrality();
    centrality = esdCentrality->GetCentralityClass10("V0M") + 1; // centrality percentile determined with V0
    if (TMath::Abs(centrality - 1) < 1e-5) {
      centrality = esdCentrality->GetCentralityClass5("V0M");
    }
  }
  */
  AliCentrality *esdCentrality = fESD->GetCentrality();
  centrality = esdCentrality->GetCentralityClass10("V0A") + 1; // centrality percentile determined with V0A
  if (TMath::Abs(centrality - 1) < 1e-5) {
    centrality = esdCentrality->GetCentralityClass5("V0A");
  }


  //
  Int_t processCode = 0;
  //
  // important change: fill generated only after vertex cut in case of heavy-ions
  //
  if ( fESD->GetEventSpecie() == 4) {
    if (!vertex || !isVtxOk) {
      fHistMult->Fill(-1, processCode);
      PostData(1, fListHist);
      return;
    } else {
      if (TMath::Abs(vertex->GetZ()) > 10) {
	fHistMult->Fill(-1, processCode);
	PostData(1, fListHist);
	return;
      }
    }
  }
  //
  if (fMCtrue) {
    //
    //
    for(Int_t i = 0; i < stack->GetNtrack(); i++) {
      TParticle * trackMC = stack->Particle(i);
      Int_t pdg = trackMC->GetPdgCode();
      //
      Double_t xv = trackMC->Vx();
      Double_t yv = trackMC->Vy();
      //Double_t zv = trackMC->Vz();
      Double_t dxy = 0;
      dxy = TMath::Sqrt(xv*xv + yv*yv); // so stupid to avoid warnings
      //Double_t dz = 0;
      //dz = TMath::Abs(zv); // so stupid to avoid warnings
      //
      // vertex cut - selection of primaries
      //
      //if (dxy > 3 || dz > 10) continue; // fixed cut at 3cm in r
      //
      if (!stack->IsPhysicalPrimary(i)) continue;
      //
      // fill MC histograms here...
      // 
      Double_t rap = trackMC->Y();
      if (fRapCMSpA) rap = rap + 0.465;
      Double_t pT  = trackMC->Pt();
      Int_t sign = pdg < 0 ? -1 : 1; // only works for charged pi,K,p !!
      //      Double_t transMass = TMath::Sqrt(trackMC->Pt()*trackMC->Pt() + trackMC->GetMass()*trackMC->GetMass()) - trackMC->GetMass();
      //
      Int_t iPart = -1;
      if (TMath::Abs(pdg) == 1000010020)  iPart = 0; // select d+/d- only
      if (TMath::Abs(pdg) == 1000010030)  iPart = 1; // select t+/t- only
      if (TMath::Abs(pdg) == 1000020030)  iPart = 2; // select He+/He- only
      if (iPart == -1) continue;
      //
      Double_t vecHistMC[10] = {static_cast<Double_t>(iPart), centrality,  pT, static_cast<Double_t>(sign), rap, 0, 1, 0, dxy, 0};
      fHistMCparticles->Fill(vecHistMC);
      //
      if (iPart == 0) fHistEtaPtGen->Fill(pT, trackMC->Y(), 0.);
      if (iPart == 1) fHistEtaPtGen->Fill(pT, trackMC->Y(), 1.);
      if (iPart == 2) fHistEtaPtGen->Fill(pT, trackMC->Y(), 2.);
    }
  }
  //
  // check vertex
  //
  if (!vertex) {
    fHistMult->Fill(-1, processCode);
    PostData(1, fListHist);
    return;
  } else {
    if (TMath::Abs(vertex->GetZ()) > 10) {
      fHistMult->Fill(-1, processCode);
      PostData(1, fListHist);
      return;
    }
  }
  //
  // count events after physics selection and after vertex selection
  //
  fHistMult->Fill(fESDtrackCuts->CountAcceptedTracks(fESD), 0);
  fHistMult->Fill(fESD->GetNumberOfTracks(), 1);
  fHistCentrality->Fill(centrality);
  //
  //***************************************************
  // track loop
  //***************************************************
  //const Float_t kNsigmaCut = 3;
  //const Float_t k2sigmaCorr = 1/(0.5*(TMath::Erf(kNsigmaCut/sqrt(2))-TMath::Erf(-kNsigmaCut/sqrt(2))))/*1/0.9545*/;
  //
  Float_t dca[2], cov[3]; // dca_xy, dca_z, sigma_xy, sigma_xy_z, sigma_z for the vertex cut
  //
  for (Int_t i=0;i<fESD->GetNumberOfTracks();++i) {
    //
    AliESDtrack *track  =fESD->GetTrack(i); 
    if (!track->GetInnerParam()) continue;
    //
    Double_t ptot = track->GetInnerParam()->GetP(); // momentum for dEdx determination
    //
    // momentum correction for different mass assumption in tracking
    //
    Double_t pT = track->Pt()/(1 - 0.333303/TMath::Power(track->Pt() + 0.651111, 5.27268));
    // -[0]/TMath::Power(x - [1],[2])
    //
    track->GetImpactParameters(dca, cov);
    //
    // cut for dead regions in the detector
    // if (track->Eta() > 0.1 && (track->Eta() < 0.2 && track->Phi() > 0.1 && track->Phi() < 0.1) continue;
    //
    // 2.a) apply some standard track cuts according to general recommendations
    //
    if (!fESDtrackCuts->AcceptTrack(track)) continue;
    //
    UInt_t status = track->GetStatus();
    //
    Bool_t hasTOFout  = status&AliESDtrack::kTOFout; 
    Bool_t hasTOFtime = status&AliESDtrack::kTIME;
    Bool_t hasTOF     = kFALSE;
    if (hasTOFout) hasTOF = kTRUE;
    Float_t length = track->GetIntegratedLength(); 
    if (length < 350.) hasTOF = kFALSE;
    //
    // calculate rapidities and kinematics
    // 
    //
    Double_t pvec[3];
    track->GetPxPyPz(pvec);
    Double_t energyDeuteron = TMath::Sqrt(pT*pT + pvec[2]*pvec[2] +
					  AliPID::ParticleMass(AliPID::kDeuteron)*AliPID::ParticleMass(AliPID::kDeuteron));
    Double_t energyTriton = TMath::Sqrt(track->GetP()*track->GetP() + 
					AliPID::ParticleMass(AliPID::kTriton)*AliPID::ParticleMass(AliPID::kTriton));
    Double_t energyHe3 = TMath::Sqrt(track->GetP()*2*track->GetP()*2 + 
					  AliPID::ParticleMass(AliPID::kHe3)*AliPID::ParticleMass(AliPID::kHe3));
    //
    Double_t rapDeuteron = 0.5*TMath::Log((energyDeuteron + pvec[2])/(energyDeuteron - pvec[2]));
    Double_t rapTriton = 0.5*TMath::Log((energyTriton + pvec[2])/(energyTriton - pvec[2]));
    Double_t rapHe3 = 0.5*TMath::Log((energyHe3 + pvec[2]*2)/(energyHe3 - pvec[2]*2));
    //
    if (fRapCMSpA) {
      rapDeuteron = rapDeuteron + 0.465;
      rapTriton = rapTriton + 0.465;
      rapHe3 = rapHe3 + 0.465;
    }
    //
    //
    // 3. make the PID
    //
    Double_t sign = track->GetSign();   
    Double_t tpcSignal = track->GetTPCsignal();
    //
    //
    // 3.a. calculate expected signals in nsigma
    //
    //  
    // (0.) assumed particle: 0. pion, 1. kaon, 2. proton, 3. deuteron
    // (1.) multiplicity or centrality -- number of accepted ESD tracks per events (deprecated), but now classes from 1 to 10, 0: Min. Bias
    // (2.) pT
    // (3.) sign
    // (4.) rapidity --> filled 4x
    // (5.)  pull TPC dEx --> filled 4x
    // (6.) has valid TOF pid signal
    // (7.) nsigma TOF --> filled 4x
    // (8..) dca_xy
    // (9.) CODE -- only MC 0-generated, 1-true rec. primaries, 2-misident, 3-second weak, 4-second material
    //
    //
    Float_t deutExp = AliExternalTrackParam::BetheBlochAleph(ptot/(0.938*2),1.45802,27.4992,4.00313e-15,2.48485,8.31768);
    Float_t tritExp = AliExternalTrackParam::BetheBlochAleph(ptot/(0.938*3),1.45802,27.4992,4.00313e-15,2.48485,8.31768);
    Float_t hel3Exp = 4*AliExternalTrackParam::BetheBlochAleph(2*ptot/(0.938*3),1.74962,27.4992,4.00313e-15,2.42485,8.31768);
    if (fMCtrue && ptot > 0.3) {
      //Double_t parMC[5] = {1.17329, 27.4992, 4.00313e-15, 2.35563, 9.47569}; // OLD FOR LHC11b9_1 !!
      //Double_t parMC[5] = {1.17329, 27.4992, 4.00313e-15, 2.1204316, 4.1373729};  // NEW!!! PbPb
      Double_t parMC[5] = {20.1533, 2.58127, 0.00114169, 2.0373, 0.502123}; //for LHC13b2efix enhanced
      deutExp = AliExternalTrackParam::BetheBlochAleph(ptot/(0.938*2),parMC[0],parMC[1],parMC[2],parMC[3],parMC[4]);
      tritExp = AliExternalTrackParam::BetheBlochAleph(ptot/(0.938*3),parMC[0],parMC[1],parMC[2],parMC[3],parMC[4]);
      hel3Exp = 4*AliExternalTrackParam::BetheBlochAleph(2*ptot/(0.938*3),parMC[0],parMC[1],parMC[2],parMC[3],parMC[4]);
    }
    //
    //
    Double_t rap[4] = {rapDeuteron, rapTriton, rapHe3,0};
    Double_t pullsTPC[4] = {(tpcSignal - deutExp)/(0.07*deutExp),
			    (tpcSignal - tritExp)/(0.07*tritExp),
			    (tpcSignal - hel3Exp)/(0.07*hel3Exp),
			    0};
    //
    // Process TOF information
    //
    //Float_t time0 = fESDpid->GetTOFResponse().GetTimeZero();
    Float_t time0 = fESDpid->GetTOFResponse().GetStartTime(track->P());//fESDpid->GetTOFResponse().GetTimeZero();
    Float_t mass = 0;
    Float_t time = -1; 
    Float_t beta = 0;
    //
    if (length > 350.) {
      time = track->GetTOFsignal() - time0;
      if (time > 0) {
	beta = length / (2.99792457999999984e-02 * time);
	Float_t gamma = 1/TMath::Sqrt(1 - beta*beta);
	mass = ptot/TMath::Sqrt(gamma*gamma - 1); // using inner TPC mom. as approx.
      }
    }
    //
    /*
    Double_t timeDeuteron = (length/2.99792457999999984e-02) * TMath::Sqrt(1 + 1.876*1.876/(ptot*ptot));
    Double_t timeTriton   = (length/2.99792457999999984e-02) * TMath::Sqrt(1 + 2.809*2.809/(ptot*ptot));
    Double_t timeHe3      = (length/2.99792457999999984e-02) * TMath::Sqrt(1 + 2.809*2.809/(2*ptot*2*ptot));
    */
    //
    Double_t pullsTOF[4] ={0.,0.,0.,0.};
    pullsTOF[0] = mass*mass - 1.876*1.876; // assuming 130.ps time resolution
    pullsTOF[1] = mass*mass - 2.809*2.809;
    pullsTOF[2] = mass*mass - 2.809*2.809;
    pullsTOF[3] = 0;
    //
    //
    if (hasTOFout && hasTOFtime && TMath::Abs(pullsTPC[1]) < 3) fHistTofQA->Fill(ptot*sign, beta);
    //
    //
    for(Int_t iPart = 0; iPart < 3; iPart++) { // loop over assumed particle type
      //
      // temporary measure to reduce memory: fill only deuterons
      //
      if (iPart != 0) continue;
      //                              0,           1,    2,    3,           4,               5,      6,              7,     8
      Double_t vecHistReal[9]  = {static_cast<Double_t>(iPart),  centrality,   pT, static_cast<Double_t>(sign),  rap[iPart], pullsTPC[iPart], static_cast<Double_t>(hasTOF), pullsTOF[iPart], dca[0]};
      fHistRealTracks->Fill(vecHistReal);
      if (TMath::Abs(rap[1]) < 0.5) fHistPidQA->Fill(ptot,tpcSignal,sign); // has to be used for the very difficult deuterons.
      //
      // using MC truth for precise efficiencies...
      //
      if (fMCtrue) {
	Int_t code = 9; // code: 0-generated, 1-true rec. primaries, 2-misident, 3-second weak, 4-second material
	Int_t assumedPdg = 0;//2212(proton); 321(Kaon); 211(pion);
	//
	if (iPart == 0) assumedPdg = 1000010020;
	if (iPart == 1) assumedPdg = 1000010030;
	if (iPart == 2) assumedPdg = 1000020030;
	//
	//
	TParticle *trackMC = stack->Particle(TMath::Abs(track->GetLabel()));
	Int_t pdg = TMath::Abs(trackMC->GetPdgCode());
	//
	if (pdg != assumedPdg && stack->IsPhysicalPrimary(TMath::Abs(track->GetLabel()))) code = 2;
	if (pdg != assumedPdg && stack->IsSecondaryFromWeakDecay(TMath::Abs(track->GetLabel()))) code = 5;
	if (pdg == assumedPdg && stack->IsPhysicalPrimary(TMath::Abs(track->GetLabel()))) code = 1;
	if (pdg == assumedPdg && stack->IsSecondaryFromWeakDecay(TMath::Abs(track->GetLabel()))) {
	  code = 3;
	}
	if (pdg == assumedPdg && stack->IsSecondaryFromMaterial(TMath::Abs(track->GetLabel()))) code = 4;
	//
	// fill momentum correction histogram
	//
	if (code == 1) fHistMomCorr->Fill(trackMC->Pt(), (pT - trackMC->Pt())/trackMC->Pt());
	//
	//here cout rap[ipart] and trackMC->Y() and pT
	//if (trackMC->Pt()>1.5 && TMath::Abs(rap[iPart] - trackMC->Y()) > 0.1) {
	//    printf("Y_rec: %4.3f    Y_MC: %4.3f    p_T: %5.3f \n", rap[iPart], trackMC->Y(), trackMC->Pt());
	//}
	 //
	// check TOF mismatch on MC basis with TOF label
	//
	Int_t tofLabel[3] = {0,0,0};
	track->GetTOFLabel(tofLabel);
	//	
	//
	if (TMath::Abs(track->GetLabel()) != TMath::Abs(tofLabel[0]) || tofLabel[1] > 0) {
	  hasTOF = kFALSE;
	  if (TMath::Abs(trackMC->GetFirstMother()) == TMath::Abs(tofLabel[0])) hasTOF = kTRUE;
	}
	//
	// IMPORTANT BIG PROBLEM HERE THE PROBABLILITY TO HAVE A PID SIGNAL MUST BE IN !!!!!!!!!!!!
	//
	//                              0,           1,   2,    3,           4,               5,      6,               7,      8,   9
	Double_t vectorHistMC[10] = {static_cast<Double_t>(iPart),  centrality,  pT, static_cast<Double_t>(sign),  rap[iPart], pullsTPC[iPart], static_cast<Double_t>(hasTOF), pullsTOF[iPart], dca[0], static_cast<Double_t>(code)};
	fHistMCparticles->Fill(vectorHistMC);

      }
      //
      //
    } // end loop over assumed particle type


  } // end of track loop
  
  // Post output data  
  PostData(1, fListHist);
  
}      


//________________________________________________________________________
void AliAnalysisDeuteronpA::Terminate(Option_t *) 
{
  // Draw result to the screen
  // Called once at the end of the query
  Printf("*** CONSTRUCTOR CALLED ****");

}


//________________________________________________________________________
void AliAnalysisDeuteronpA::BinLogAxis(const TH1 *h) {
  //
  // Method for the correct logarithmic binning of histograms
  //
  TAxis *axis = const_cast<TAxis*>(h->GetXaxis());
  int bins = axis->GetNbins();

  Double_t from = axis->GetXmin();
  Double_t to = axis->GetXmax();
  Double_t *newBins = new Double_t[bins + 1];
   
  newBins[0] = from;
  Double_t factor = pow(to/from, 1./bins);
  
  for (int i = 1; i <= bins; i++) {
   newBins[i] = factor * newBins[i-1];
  }
  axis->Set(bins, newBins);
  delete [] newBins;
  
}

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