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, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//-----------------------------------------------------------------------
// Efficiency between different steps of the procedure.
// The ouptut of the task is a AliCFContainer from which the efficiencies
// can be calculated
//-----------------------------------------------------------------------
// Author : Marta Verweij - UU
//-----------------------------------------------------------------------


#ifndef ALIPWG4HIGHPTSPECTRA_CXX
#define ALIPWG4HIGHPTSPECTRA_CXX

#include "AliPWG4HighPtSpectra.h"

#include "TVector3.h"
#include <iostream>
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TProfile.h"
#include "TList.h"
#include "TChain.h"
#include "TKey.h"
#include "TSystem.h"
#include "TFile.h"

#include "AliAnalysisManager.h"
#include "AliESDInputHandler.h"
#include "AliAODInputHandler.h"
#include "AliESDtrack.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliESDtrackCuts.h"
#include "AliExternalTrackParam.h"
#include "AliCentrality.h"

#include "AliLog.h"

#include "AliStack.h"
#include "TParticle.h"
#include "AliMCEvent.h"
#include "AliMCEventHandler.h"
#include "AliCFContainer.h"
#include "AliGenPythiaEventHeader.h"
#include "AliGenHijingEventHeader.h"
#include "AliGenCocktailEventHeader.h"
#include "AliAODMCHeader.h"
#include "AliESDVertex.h"
//#include "$ALICE_ROOT/PWG4/JetTasks/AliAnalysisHelperJetTasks.h"

//#include <iostream>
using namespace std; //required for resolving the 'cout' symbol

ClassImp(AliPWG4HighPtSpectra)

//__________________________________________________________________________
AliPWG4HighPtSpectra::AliPWG4HighPtSpectra() : AliAnalysisTask("AliPWG4HighPtSpectra", ""), 
  fReadAODData(0),
  fNoPythiaInfo(0),
  fCFManagerPos(0x0),
  fCFManagerNeg(0x0),
  fESD(0x0),
  fAOD(0x0),
  fMC(0x0),
  fStack(0x0),
  fArrayMCAOD(0x0),
  fVtx(0x0),
  fTriggerMask(AliVEvent::kMB),
  fIsPbPb(0),
  fCentClass(10),
  fTrackType(0),
  fTrackCuts(0x0),
  fTrackCutsReject(0x0),
  fFilterMask(0),
  fbSelectHIJING(kFALSE),
  fSigmaConstrainedMax(100.),
  fAvgTrials(1),
  fHistList(0),
  fNEventAll(0),
  fNEventSel(0),
  fNEventReject(0),
  fh1Centrality(0x0),
  fh1Xsec(0),
  fh1Trials(0),
  fh1PtHard(0),
  fh1PtHardTrials(0),
  fPtRelUncertainty1PtPrim(0x0),
  fPtRelUncertainty1PtSec(0x0)
{
  //
  //Default ctor
  //
}

//___________________________________________________________________________
AliPWG4HighPtSpectra::AliPWG4HighPtSpectra(const Char_t* name) :
  AliAnalysisTask(name,""),
  fReadAODData(0),
  fNoPythiaInfo(0),
  fCFManagerPos(0x0),
  fCFManagerNeg(0x0),
  fESD(0x0),
  fAOD(0x0),
  fMC(0x0),
  fStack(0x0),
  fArrayMCAOD(0x0),
  fVtx(0x0),
  fTriggerMask(AliVEvent::kMB),
  fIsPbPb(0),
  fCentClass(10),
  fTrackType(0),
  fTrackCuts(0x0),
  fTrackCutsReject(0x0),
  fFilterMask(0),
  fbSelectHIJING(kFALSE),
  fSigmaConstrainedMax(100.),
  fAvgTrials(1),
  fHistList(0),
  fNEventAll(0),
  fNEventSel(0),
  fNEventReject(0),
  fh1Centrality(0x0),
  fh1Xsec(0),
  fh1Trials(0),
  fh1PtHard(0),
  fh1PtHardTrials(0),
  fPtRelUncertainty1PtPrim(0x0),
  fPtRelUncertainty1PtSec(0x0)
{
  //
  // Constructor. Initialization of Inputs and Outputs
  //
  AliDebug(2,Form("AliPWG4HighPtSpectra Calling Constructor"));
  // Input slot #0 works with a TChain ESD
  DefineInput(0, TChain::Class());
  // Output slot #0 writes into a TList
  DefineOutput(0,TList::Class());
  // Output slot #1, #2 writes into a AliCFContainer
  DefineOutput(1,AliCFContainer::Class());
  DefineOutput(2,AliCFContainer::Class());
  // Output slot #3 writes into a AliESDtrackCuts
  DefineOutput(3, AliESDtrackCuts::Class());
  DefineOutput(4, AliESDtrackCuts::Class());
}

//________________________________________________________________________
void AliPWG4HighPtSpectra::LocalInit()
{
  //
  // Only called once at beginning
  //
  PostData(3,fTrackCuts);
}

//________________________________________________________________________
void AliPWG4HighPtSpectra::ConnectInputData(Option_t *) 
{
  // Connect ESD here
  // Called once
  AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));

  TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
  if (!tree) {
    AliDebug(2,Form( "ERROR: Could not read chain from input slot 0 \n"));
    return;
  }

  if(fReadAODData) {
    AliAODInputHandler *aodH = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  
    if (!aodH) {
      AliDebug(2,Form("ERROR: Could not get AODInputHandler"));
      return;
    } else
      fAOD = aodH->GetEvent();
  } else {
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
  
    if (!esdH) {
      AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
      return;
    } else
      fESD = esdH->GetEvent();
  }

  AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
  if (!eventHandler) {
    AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
  }
  else
    fMC = eventHandler->MCEvent();

}

//________________________________________________________________________
Bool_t AliPWG4HighPtSpectra::SelectEvent()
{
  //
  // Decide if event should be selected for analysis
  //

  // Checks following requirements:
  // - fESD available
  // - trigger info from AliPhysicsSelection
  // - number of reconstructed tracks > 1
  // - primary vertex reconstructed
  // - z-vertex < 10 cm

  Bool_t selectEvent = kTRUE;

  //fESD or fAOD object available?
  if (!fESD && !fAOD) {
    AliDebug(2,Form("ERROR: fInputEvent not available\n"));
    fNEventReject->Fill("noESD/AOD",1);
    selectEvent = kFALSE;
    return selectEvent;
  }

  //Trigger
  UInt_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
  if(fTriggerMask != AliVEvent::kAny && !(isSelected&fTriggerMask)) { //Select collison candidates
    AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
    fNEventReject->Fill("Trigger",1);
    selectEvent = kFALSE;
    return selectEvent;
  }

  //Check if number of reconstructed tracks is larger than 1
  if(!fReadAODData) {
    if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2)  {
      fNEventReject->Fill("NTracks<2",1);
      selectEvent = kFALSE;
      return selectEvent;
    }
  }

  //Check if vertex is reconstructed
  if(fESD)
    fVtx = fESD->GetPrimaryVertexSPD();
  if(fAOD)
    fVtx = fAOD->GetPrimaryVertex();

  if(!fVtx) {
    fNEventReject->Fill("noVTX",1);
    selectEvent = kFALSE;
    return selectEvent;
  }

  if(!fReadAODData){
    const AliESDVertex* esdVtx = fESD->GetPrimaryVertexSPD();
    if(!esdVtx->GetStatus()) {
      fNEventReject->Fill("VtxStatus",1);
      selectEvent = kFALSE;
      return selectEvent;
    }
  }

  // Need vertex cut
  //  TString vtxName(fVtx->GetName());
  if(fVtx->GetNContributors()<2) {
    fNEventReject->Fill("NCont<2",1);
    selectEvent = kFALSE;
    return selectEvent;
  }

  //Check if z-vertex < 10 cm
  double primVtx[3];
  fVtx->GetXYZ(primVtx);
  if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
    fNEventReject->Fill("ZVTX>10",1);
    selectEvent = kFALSE;
    return selectEvent;
  }

  //Centrality selection should only be done in case of PbPb
  if(IsPbPb()) {
    Float_t cent = 0.;
    Int_t calccent = 0;
    if(fReadAODData)
      calccent = CalculateCentrality(fAOD);
    else
      calccent = CalculateCentrality(fESD);
    if(fCentClass!=calccent && fCentClass!=10) {
      fNEventReject->Fill("cent",1);
      selectEvent = kFALSE;
      return selectEvent;
    }
    else {
      if(fReadAODData) {
        if(dynamic_cast<AliAODEvent*>(fAOD)->GetCentrality()) {
          cent = dynamic_cast<AliAODEvent*>(fAOD)->GetCentrality()->GetCentralityPercentile("V0M");
        }
      }
      else {
        if(dynamic_cast<AliESDEvent*>(fESD)->GetCentrality()) {
          cent = dynamic_cast<AliESDEvent*>(fESD)->GetCentrality()->GetCentralityPercentile("V0M");
        }
      }

      if(cent>90.) {
	fNEventReject->Fill("cent>90",1);
	selectEvent = kFALSE;
	return selectEvent;
      }
      fh1Centrality->Fill(cent);
    }
  }

  return selectEvent;

}

//________________________________________________________________________
Int_t AliPWG4HighPtSpectra::CalculateCentrality(AliVEvent *event)
{
  Float_t cent = 999;

  if(event){
    if(event->GetCentrality()){
      cent = event->GetCentrality()->GetCentralityPercentile("V0M");
    }
  }

  if(cent<0) return 5;
  if(cent>80)return 4;
  if(cent>50)return 3;
  if(cent>30)return 2;
  if(cent>10)return 1;
  return 0;
}

//_________________________________________________
void AliPWG4HighPtSpectra::Exec(Option_t *)
{
  //
  // Main loop function
  //
  AliDebug(2,Form(">> AliPWG4HighPtSpectra::Exec \n"));  

  AliVEvent* event;
  if(fReadAODData)
    event = fAOD;
  else {
    event = fESD;
    if(!fMC) {
      AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
      if (!eventHandler) {
        AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
      }
      else
        fMC = eventHandler->MCEvent();
    }
  }

  // All events without selection
  fNEventAll->Fill(0.);

  if(!SelectEvent()) {
    // Post output data
    PostData(0,fHistList);
    PostData(1,fCFManagerPos->GetParticleContainer());
    PostData(2,fCFManagerNeg->GetParticleContainer());
    return;
  }

  if(fReadAODData){
    //Open the MC particles in the case of AODanalysis
    fArrayMCAOD = (TClonesArray*) fAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName());
  }
  else {
    //In case of ESD event: MCEvent available? if yes: get MC particles stack
    if(fMC) {
      AliDebug(2,Form("MC particles: %d", fMC->GetNumberOfTracks()));
      fStack = fMC->Stack();                //Particles Stack
      AliDebug(2,Form("MC particles stack: %d", fStack->GetNtrack()));
    }
  }

  Int_t nTracks = event->GetNumberOfTracks();
  AliDebug(2,Form("nTracks %d", nTracks));

  if((!fTrackCuts && !fReadAODData) || (fFilterMask==0 && fReadAODData)) { //if the TrackCuts are missing in ESD analysis or the FilterBit is missing in AOD analysis
    fNEventReject->Fill("noTrackCuts",1);
    // Post output data
    PostData(0,fHistList);
    PostData(1,fCFManagerPos->GetParticleContainer());
    PostData(2,fCFManagerNeg->GetParticleContainer());
    return;
  }

  // Selected events for analysis
  fNEventSel->Fill(0.);
  
  const Int_t nvar = 4;
  
  Double_t containerInputRec[nvar]       = {0.,0.,0.,0.};
  Double_t containerInputMC[nvar]        = {0.,0.,0.,0.};
  Double_t containerInputRecMC[nvar]     = {0.,0.,0.,0.}; //reconstructed yield as function of MC variable

  //Now go to rec level
  if(fReadAODData) {//AOD analysis
    for (Int_t iTrack = 0; iTrack<nTracks; iTrack++) 
    {
      //Get track for analysis
      AliVTrack *track = 0x0;

      AliAODTrack *aodtrack = dynamic_cast<AliAODTrack*>(fAOD->GetTrack(iTrack));
      if(!aodtrack) AliFatal("Not a standard AOD");
      if(!aodtrack)
        continue;
      if((!aodtrack->TestFilterBit(fFilterMask)) || 
         ((!fCFManagerPos->CheckParticleCuts(kStepReconstructed,aodtrack)) && (aodtrack->Charge()>0.)) ||
         ((!fCFManagerNeg->CheckParticleCuts(kStepReconstructed,aodtrack)) && (aodtrack->Charge()<0))    )
        continue;
      else {
        track = static_cast<AliVTrack*>(aodtrack);
      }
      //fill the container
      containerInputRec[0] = track->Pt();
      containerInputRec[1] = track->Phi();
      containerInputRec[2] = track->Eta();
      containerInputRec[3] = track->GetTPCNcls();

      if(track->Charge()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputRec,kStepReconstructed);
      if(track->Charge()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputRec,kStepReconstructed);

      if(fArrayMCAOD) {
        Int_t label = TMath::Abs(track->GetLabel());
	if(label>fArrayMCAOD->GetEntries()) {
	  continue;
	}
	AliAODMCParticle *particle = (AliAODMCParticle*) fArrayMCAOD->At(label);
	if(!particle) {
	  continue;
	}
	//Only select particles generated by HIJING if requested
	if(fbSelectHIJING) {
	  if(!IsHIJINGParticle(label)) {
	    continue;
	  }
	}
	containerInputRecMC[0] = particle->Pt();      
	containerInputRecMC[1] = particle->Phi();      
	containerInputRecMC[2] = particle->Eta();  
	containerInputRecMC[3] = track->GetTPCNcls();

	//Container with primaries
	if(particle->IsPhysicalPrimary()) {
	  if(particle->Charge()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputRecMC,kStepReconstructedMC);
	  if(particle->Charge()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputRecMC,kStepReconstructedMC);
	  //Fill pT resolution plots for primaries
	  //fPtRelUncertainty1PtPrim->Fill(containerInputRec[0],containerInputRec[0]*TMath::Sqrt(track->GetSigma1Pt2())); //This has not been implemented in AOD analysis, since they are also produced by the AddTaskPWG4HighPtTrackQA.C macro
	}

	//Container with secondaries
	if (!particle->IsPhysicalPrimary() ) {
	  if(particle->Charge()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputRecMC,kStepSecondaries);
	  if(particle->Charge()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputRecMC,kStepSecondaries);
	  //Fill pT resolution plots for primaries
	  //fPtRelUncertainty1PtSec->Fill(containerInputRec[0],containerInputRec[0]*TMath::Sqrt(track->GetSigma1Pt2())); //This has not been implemented in AOD analysis, since they are also produced by the AddTaskPWG4HighPtTrackQA.C macro
	}
      }
    }//track loop

    //Fill MC containers if particles are findable
    if(fArrayMCAOD) {
      int noPart = fArrayMCAOD->GetEntriesFast();

      for(int iPart = 1; iPart<noPart; iPart++) {
	AliAODMCParticle *mcPart = (AliAODMCParticle*) fArrayMCAOD->At(iPart);
        if(!mcPart) continue;

        //Only select particles generated by HIJING if requested
        if(fbSelectHIJING) {
	  if(!IsHIJINGParticle(iPart))
	    continue;
        }

        Int_t pdg = mcPart->PdgCode();

        // select charged pions, protons, kaons , electrons, muons
        if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) ==
	   321 || TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
  
	  //fill the container
	  containerInputMC[0] = mcPart->Pt();
	  containerInputMC[1] = mcPart->Phi();      
	  containerInputMC[2] = mcPart->Eta();  
	  //      AliESDtrack *esdtrack = fESD->GetTrack(mcPart->GetLabel());
	  containerInputMC[3] = 159.;
	  
	  if(mcPart->IsPhysicalPrimary()) {
	    if(mcPart->Charge()>0. && fCFManagerPos->CheckParticleCuts(kStepMCAcceptance,mcPart)) fCFManagerPos->GetParticleContainer()->Fill(containerInputMC,kStepMCAcceptance);
	    if(mcPart->Charge()<0. && fCFManagerNeg->CheckParticleCuts(kStepMCAcceptance,mcPart)) fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepMCAcceptance);
	  }
        }
      }
    }

  }//end of AOD analysis
  else {//ESD analysis
    for (Int_t iTrack = 0; iTrack<nTracks; iTrack++) 
    {
      //Get track for analysis
      AliESDtrack *track = 0x0;
      AliESDtrack *esdtrack = fESD->GetTrack(iTrack);
      if(!esdtrack)
	continue;
      

      if(fTrackType==4) {
	if (!(fTrackCuts->AcceptTrack(esdtrack)))
	  continue;
      }

      if(fTrackType==1)
	track = AliESDtrackCuts::GetTPCOnlyTrack(fESD,esdtrack->GetID());
      else if(fTrackType==2 || fTrackType==4) {
	track = AliESDtrackCuts::GetTPCOnlyTrack(const_cast<AliESDEvent*>(fESD),esdtrack->GetID());
	if(!track)
	  continue;
	
	AliExternalTrackParam exParam;
	Bool_t relate = track->RelateToVertexTPC(fESD->GetPrimaryVertexSPD(),fESD->GetMagneticField(),kVeryBig,&exParam);
	if( !relate ) {
	  if(track) delete track;
	  continue;
	}
	track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
      }
      else if(fTrackType==5 || fTrackType==6) {
	if(fTrackCuts->AcceptTrack(esdtrack)) {
	  continue;
	}
	else {
	  if( !(fTrackCutsReject->AcceptTrack(esdtrack)) && fTrackCuts->AcceptTrack(esdtrack) ) {

	    if(fTrackType==5) {
	      //use TPConly constrained track
	      track = AliESDtrackCuts::GetTPCOnlyTrack(fESD,esdtrack->GetID());
	      if(!track)
		continue;
	      
	      AliExternalTrackParam exParam;
	      Bool_t relate = track->RelateToVertexTPC(fESD->GetPrimaryVertexSPD(),fESD->GetMagneticField(),kVeryBig,&exParam);
	      if( !relate ) {
		if(track) delete track;
		continue;
	      }
	      track->Set(exParam.GetX(),exParam.GetAlpha(),exParam.GetParameter(),exParam.GetCovariance());
	    }
	    else if(fTrackType==6) {
	      //use global constrained track
	      track = new AliESDtrack(*esdtrack);
	      track->Set(esdtrack->GetConstrainedParam()->GetX(),esdtrack->GetConstrainedParam()->GetAlpha(),esdtrack->GetConstrainedParam()->GetParameter(),esdtrack->GetConstrainedParam()->GetCovariance());
	    }
	  }
	}
      }
      else if(fTrackType==7) {
	//use global constrained track
	track = new AliESDtrack(*esdtrack);
      }
      else
	track = esdtrack;
    
      if(!track)
	continue;
      

      if(fTrackType==2 || fTrackType==4 || fTrackType==5) {
	//Cut on chi2 of constrained fit
	if(track->GetConstrainedChi2TPC() > fSigmaConstrainedMax*fSigmaConstrainedMax && fSigmaConstrainedMax>0.) {
	  if(track) delete track;
	  continue;
	}
      }
      if (!(fTrackCuts->AcceptTrack(track)) && fTrackType!=4 && fTrackType!=5 && fTrackType!=6) {
	if(fTrackType==1 || fTrackType==2 || fTrackType==7) {
	  if(track) delete track;
	}
	continue;
      }

      if(fTrackType==7) {
	if(fTrackCutsReject ) {
	  if(fTrackCutsReject->AcceptTrack(track) ) {
	    if(track) delete track;
	    continue;
	  }
	}
	if(esdtrack->GetConstrainedParam()) 
	  track->Set(esdtrack->GetConstrainedParam()->GetX(),esdtrack->GetConstrainedParam()->GetAlpha(),esdtrack->GetConstrainedParam()->GetParameter(),esdtrack->GetConstrainedParam()->GetCovariance());
      }

      if(!track) {
	if(fTrackType==1 || fTrackType==2 || fTrackType==4 || fTrackType==5 || fTrackType==6 || fTrackType==7) {
	  if(track) delete track;
	}
	continue;
      }

      //fill the container
      containerInputRec[0] = track->Pt();
      containerInputRec[1] = track->Phi();
      containerInputRec[2] = track->Eta();
      containerInputRec[3] = track->GetTPCNclsIter1();

      if(track->GetSign()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputRec,kStepReconstructed);
      if(track->GetSign()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputRec,kStepReconstructed);

  	
      //Only fill the MC containers if MC information is available
      if(fMC) {
	Int_t label = TMath::Abs(track->GetLabel());
	if(label>fStack->GetNtrack()) {
	  if(fTrackType==1 || fTrackType==2 || fTrackType==7)
	    delete track;
	  continue;
	}
	//Only select particles generated by HIJING if requested
	if(fbSelectHIJING) {
	  if(!IsHIJINGParticle(label)) {
	    if(fTrackType==1 || fTrackType==2 || fTrackType==7)
	      delete track;
	    continue;
	  }
	}
	TParticle *particle = fStack->Particle(label) ;
	if(!particle) {
	  if(fTrackType==1 || fTrackType==2 || fTrackType==7)
	    delete track;
	  continue;
	}
	containerInputRecMC[0] = particle->Pt();      
	containerInputRecMC[1] = particle->Phi();      
	containerInputRecMC[2] = particle->Eta();  
	containerInputRecMC[3] = track->GetTPCNclsIter1();

	//Container with primaries
	if(fStack->IsPhysicalPrimary(label)) {
	  if(particle->GetPDG()->Charge()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputRecMC,kStepReconstructedMC);
	  if(particle->GetPDG()->Charge()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputRecMC,kStepReconstructedMC);
	  //Fill pT resolution plots for primaries
	  fPtRelUncertainty1PtPrim->Fill(containerInputRec[0],containerInputRec[0]*TMath::Sqrt(track->GetSigma1Pt2()));
	}

	//Container with secondaries
	if (!fStack->IsPhysicalPrimary(label) ) {
	  if(particle->GetPDG()->Charge()>0.) fCFManagerPos->GetParticleContainer()->Fill(containerInputMC,kStepSecondaries);
	  if(particle->GetPDG()->Charge()<0.) fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepSecondaries);
	  //Fill pT resolution plots for primaries
	  fPtRelUncertainty1PtSec->Fill(containerInputRec[0],containerInputRec[0]*TMath::Sqrt(track->GetSigma1Pt2()));
	}
      }

      if(fTrackType==1  || fTrackType==2 || fTrackType==4 || fTrackType==5 || fTrackType==6 || fTrackType==7) {
	if(track) delete track;
      }
    }//track loop

    //Fill MC containers if particles are findable
    if(fMC) {
      for(int iPart = 1; iPart<(fMC->GetNumberOfPrimaries()); iPart++) {
        AliMCParticle *mcPart  = (AliMCParticle*)fMC->GetTrack(iPart);
        if(!mcPart) continue;
  
        //Only select particles generated by HIJING if requested
        if(fbSelectHIJING) {
	  if(!IsHIJINGParticle(iPart))
	    continue;
        }
  
        Int_t pdg = mcPart->PdgCode();
        
        // select charged pions, protons, kaons , electrons, muons
        if(TMath::Abs(pdg) == 211 || TMath::Abs(pdg) == 2212 || TMath::Abs(pdg) ==
	   321 || TMath::Abs(pdg) == 11 || TMath::Abs(pdg) == 13){
  
	  //fill the container
	  containerInputMC[0] = mcPart->Pt();
	  containerInputMC[1] = mcPart->Phi();      
	  containerInputMC[2] = mcPart->Eta();  
	  //      AliESDtrack *esdtrack = fESD->GetTrack(mcPart->GetLabel());
	  containerInputMC[3] = 159.;
	  
	  if(fStack->IsPhysicalPrimary(iPart)) {
	    if(mcPart->Charge()>0. && fCFManagerPos->CheckParticleCuts(kStepMCAcceptance,mcPart)) fCFManagerPos->GetParticleContainer()->Fill(containerInputMC,kStepMCAcceptance);
	    if(mcPart->Charge()<0. && fCFManagerNeg->CheckParticleCuts(kStepMCAcceptance,mcPart)) fCFManagerNeg->GetParticleContainer()->Fill(containerInputMC,kStepMCAcceptance);
	  }
        }
      }
    }
  }//end of ESD analysis

  PostData(0,fHistList);
  PostData(1,fCFManagerPos->GetParticleContainer());
  PostData(2,fCFManagerNeg->GetParticleContainer());
  
}

//________________________________________________________________________
Bool_t AliPWG4HighPtSpectra::PythiaInfoFromFile(const char* currFile,Float_t &fXsec,Float_t &fTrials)
{
  //
  // get the cross section and the trails either from pyxsec.root or from pysec_hists.root
  // This is to called in Notify and should provide the path to the AOD/ESD file
  // Copied from AliAnalysisTaskJetSpectrum2
  //

  TString file(currFile);  
  fXsec = 0;
  fTrials = 1;

  if(file.Contains("root_archive.zip#")){
    Ssiz_t pos1 = file.Index("root_archive",12,TString::kExact);
    Ssiz_t pos = file.Index("#",1,pos1,TString::kExact);
    file.Replace(pos+1,20,"");
  }
  else {
    // not an archive take the basename....
    file.ReplaceAll(gSystem->BaseName(file.Data()),"");
  }
  //  Printf("%s",file.Data());
   
  TFile *fxsec = TFile::Open(Form("%s%s",file.Data(),"pyxsec.root")); // problem that we cannot really test the existance of a file in a archive so we have to lvie with open error message from root
  if(!fxsec){
    // next trial fetch the histgram file
    fxsec = TFile::Open(Form("%s%s",file.Data(),"pyxsec_hists.root"));
    if(!fxsec){
      // not a severe condition but indicates that we have no information
      return kFALSE;
    }
    else{
      // find the tlist we want to be independtent of the name so use the Tkey
      TKey* key = (TKey*)fxsec->GetListOfKeys()->At(0); 
      if(!key){
	fxsec->Close();
	return kFALSE;
      }
      TList *list = dynamic_cast<TList*>(key->ReadObj());
      if(!list){
	fxsec->Close();
	return kFALSE;
      }
      fXsec = ((TProfile*)list->FindObject("h1Xsec"))->GetBinContent(1);
      fTrials  = ((TH1F*)list->FindObject("h1Trials"))->GetBinContent(1);
      fxsec->Close();
    }
  } // no tree pyxsec.root
  else {
    TTree *xtree = (TTree*)fxsec->Get("Xsection");
    if(!xtree){
      fxsec->Close();
      return kFALSE;
    }
    UInt_t   ntrials  = 0;
    Double_t  xsection  = 0;
    xtree->SetBranchAddress("xsection",&xsection);
    xtree->SetBranchAddress("ntrials",&ntrials);
    xtree->GetEntry(0);
    fTrials = ntrials;
    fXsec = xsection;
    fxsec->Close();
  }
  return kTRUE;
}

//________________________________________________________________________
Bool_t AliPWG4HighPtSpectra::Notify()
{
  //
  // Implemented Notify() to read the cross sections
  // and number of trials from pyxsec.root
  // Copied from AliAnalysisTaskJetSpectrum2
  // 

  if(fNoPythiaInfo)
    return kTRUE;

  TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
  Float_t xsection = 0;
  Float_t ftrials  = 1;

  if(tree){
    TFile *curfile = tree->GetCurrentFile();
    if (!curfile) {
      Error("Notify","No current file");
      return kFALSE;
    }
    if(!fh1Xsec||!fh1Trials){
      //      Printf("%s%d No Histogram fh1Xsec",(char*)__FILE__,__LINE__);
      return kFALSE;
    }
    PythiaInfoFromFile(curfile->GetName(),xsection,ftrials);
    fh1Xsec->Fill("<#sigma>",xsection);
    fh1Trials->Fill("#sum{ntrials}",ftrials);
  } 
  return kTRUE;
}

//________________________________________________________________________
AliGenPythiaEventHeader*  AliPWG4HighPtSpectra::GetPythiaEventHeader(AliMCEvent *mcEvent)
{
  
  if(!mcEvent)return 0;
  AliGenEventHeader* genHeader = mcEvent->GenEventHeader();
  AliGenPythiaEventHeader* pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(genHeader);
  if(!pythiaGenHeader){
    // cocktail ??
    AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast<AliGenCocktailEventHeader*>(genHeader);
    
    if (!genCocktailHeader) {
      //      AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Unknown header type (not Pythia or Cocktail)");
      //      AliWarning(Form("%s %d: Unknown header type (not Pythia or Cocktail)",(char*)__FILE__,__LINE__));
      return 0;
    }
    TList* headerList = genCocktailHeader->GetHeaders();
    for (Int_t i=0; i<headerList->GetEntries(); i++) {
      pythiaGenHeader = dynamic_cast<AliGenPythiaEventHeader*>(headerList->At(i));
      if (pythiaGenHeader)
        break;
    }
    if(!pythiaGenHeader){
      AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Pythia event header not found");
      return 0;
    }
  }
  return pythiaGenHeader;

}

//________________________________________________________________________
AliGenHijingEventHeader*  AliPWG4HighPtSpectra::GetHijingEventHeader(AliMCEvent *mcEvent)
{
  
  if(!mcEvent)return 0;
  AliGenEventHeader* genHeader = mcEvent->GenEventHeader();
  AliGenHijingEventHeader* hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(genHeader);
  if(!hijingGenHeader){
    // cocktail ??
    AliGenCocktailEventHeader* genCocktailHeader = dynamic_cast<AliGenCocktailEventHeader*>(genHeader);
    
    if (!genCocktailHeader) {
      AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Unknown header type (not Pythia or Cocktail)");
      //      AliWarning(Form("%s %d: Unknown header type (not Pythia or Cocktail)",(char*)__FILE__,__LINE__));
      return 0;
    }
    TList* headerList = genCocktailHeader->GetHeaders();
    for (Int_t i=0; i<headerList->GetEntries(); i++) {
      hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(headerList->At(i));
      if (hijingGenHeader)
        break;
    }
    if(!hijingGenHeader){
      AliWarningGeneral(Form(" %s:%d",(char*)__FILE__,__LINE__),"Hijing event header not found");
      return 0;
    }
  }
  return hijingGenHeader;

}

//________________________________________________________________________
AliGenHijingEventHeader*  AliPWG4HighPtSpectra::GetHijingEventHeaderAOD(AliAODEvent *aodEvent)
{
  AliGenHijingEventHeader* hijingGenHeader = 0x0;
  if(aodEvent) {
    AliAODMCHeader* mcHeader = (AliAODMCHeader*) aodEvent->GetList()->FindObject(AliAODMCHeader::StdBranchName());
    TList* headerList = mcHeader->GetCocktailHeaders();
    for (Int_t i=0; i<headerList->GetEntries(); i++) {
      hijingGenHeader = dynamic_cast<AliGenHijingEventHeader*>(headerList->At(i));
      if (hijingGenHeader)
        break;
    }
  }
  return hijingGenHeader;
}

//___________________________________________________________________________
void AliPWG4HighPtSpectra::Terminate(Option_t*)
{
  // The Terminate() function is the last function to be called during
  // a query. It always runs on the client, it can be used to present
  // the results graphically or save the results to file.

}

//___________________________________________________________________________
void AliPWG4HighPtSpectra::CreateOutputObjects() 
{
  //HERE ONE CAN CREATE OUTPUT OBJECTS, IN PARTICULAR IF THE OBJECT PARAMETERS DON'T NEED
  //TO BE SET BEFORE THE EXECUTION OF THE TASK
  //
  AliDebug(2,Form("CreateOutputObjects CreateOutputObjects of task %s", GetName()));

  Bool_t oldStatus = TH1::AddDirectoryStatus();
  TH1::AddDirectory(kFALSE); 

  //slot #1
  OpenFile(0);
  fHistList = new TList();
  fHistList->SetOwner(kTRUE);
  fNEventAll = new TH1F("fNEventAll","NEventAll",1,-0.5,0.5);
  fHistList->Add(fNEventAll);
  fNEventSel = new TH1F("fNEventSel","NEvent Selected for analysis",1,-0.5,0.5);
  fHistList->Add(fNEventSel);

  fNEventReject = new TH1F("fNEventReject","Reason events are rejectected for analysis",20,0,20);
  //Set labels
  fNEventReject->Fill("noESD/AOD",0);
  fNEventReject->Fill("Trigger",0);
  fNEventReject->Fill("NTracks<2",0);
  fNEventReject->Fill("noVTX",0);
  fNEventReject->Fill("VtxStatus",0);
  fNEventReject->Fill("NCont<2",0);
  fNEventReject->Fill("ZVTX>10",0);
  fNEventReject->Fill("cent",0);
  fNEventReject->Fill("cent>90",0);
  fHistList->Add(fNEventReject);

  fh1Centrality = new TH1F("fh1Centrality","fh1Centrality; Centrality %",100,0,100);
  fHistList->Add(fh1Centrality);

  fh1Xsec = new TProfile("fh1Xsec","xsec from pyxsec.root",1,0,1);
  fh1Xsec->GetXaxis()->SetBinLabel(1,"<#sigma>");
  fHistList->Add(fh1Xsec);

  fh1Trials = new TH1F("fh1Trials","trials root file",1,0,1);
  fh1Trials->GetXaxis()->SetBinLabel(1,"#sum{ntrials}");
  fHistList->Add(fh1Trials);

  fh1PtHard       = new TH1F("fh1PtHard","PYTHIA Pt hard;p_{T,hard}",350,-.5,349.5);
  fHistList->Add(fh1PtHard);
  fh1PtHardTrials = new TH1F("fh1PtHardTrials","PYTHIA Pt hard weight with trials;p_{T,hard}",350,-.5,349.5);
  fHistList->Add(fh1PtHardTrials);

  Int_t fgkNPtBins = 100;
  Float_t kMinPt   = 0.;
  Float_t kMaxPt   = 100.;
  Double_t *binsPt = new Double_t[fgkNPtBins+1];
  for(Int_t i=0; i<=fgkNPtBins; i++) binsPt[i]=(Double_t)kMinPt + (kMaxPt-kMinPt)/fgkNPtBins*(Double_t)i ;

  Int_t fgkNRel1PtUncertaintyBins=50;
  Float_t fgkRel1PtUncertaintyMin = 0.;
  Float_t fgkRel1PtUncertaintyMax = 1.;

  Double_t *binsRel1PtUncertainty=new Double_t[fgkNRel1PtUncertaintyBins+1];
  for(Int_t i=0; i<=fgkNRel1PtUncertaintyBins; i++) binsRel1PtUncertainty[i]=(Double_t)fgkRel1PtUncertaintyMin + (fgkRel1PtUncertaintyMax-fgkRel1PtUncertaintyMin)/fgkNRel1PtUncertaintyBins*(Double_t)i ;

  fPtRelUncertainty1PtPrim = new TH2F("fPtRelUncertainty1PtPrim","fPtRelUncertainty1PtPrim",fgkNPtBins,binsPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
  fHistList->Add(fPtRelUncertainty1PtPrim);

  fPtRelUncertainty1PtSec = new TH2F("fPtRelUncertainty1PtSec","fPtRelUncertainty1PtSec",fgkNPtBins,binsPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
  fHistList->Add(fPtRelUncertainty1PtSec);

  TH1::AddDirectory(oldStatus);   

  OpenFile(1);
  OpenFile(2);

  PostData(0,fHistList);
  PostData(1,fCFManagerPos->GetParticleContainer());
  PostData(2,fCFManagerNeg->GetParticleContainer());

  if(binsPt)                delete [] binsPt;
  if(binsRel1PtUncertainty) delete [] binsRel1PtUncertainty;

}

//________________________________________________________________________
Bool_t AliPWG4HighPtSpectra::IsHIJINGParticle(Int_t label)
{
  //
  // Return kTRUE in case particle is from HIJING event
  //

  AliGenHijingEventHeader* hijingHeader;
  if(fReadAODData)
    hijingHeader = GetHijingEventHeaderAOD(fAOD);
  else
    hijingHeader = GetHijingEventHeader(fMC);

  Int_t nproduced = hijingHeader->NProduced();

  if(fReadAODData) {
    AliAODMCParticle* mom = (AliAODMCParticle*) fArrayMCAOD->At(label);
    Int_t iMom = label;
    Int_t iParent = mom->GetMother();
    while(iParent!=-1){
      iMom = iParent;
      mom = (AliAODMCParticle*) fArrayMCAOD->At(iMom);
      iParent = mom->GetMother();
    }

    if(iMom<nproduced) {
      return kTRUE;
    } else {
      return kFALSE;
    }
  }
  else { //ESD analysis
    TParticle * mom = fStack->Particle(label);
    Int_t iMom = label;
    Int_t iParent = mom->GetFirstMother();
    while(iParent!=-1){
      iMom = iParent;
      mom = fStack->Particle(iMom);
      iParent = mom->GetFirstMother();
    }
  
    if(iMom<nproduced) {
      return kTRUE;
    } else {
      return kFALSE;
    }
  }
}

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