ROOT logo
// -*- C++ -*-
/**************************************************************************
 * Copyright(c) 2012,      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.                  *
 **************************************************************************/
// $Id: AliAnalysisTaskLongRangeCorrelations.cxx 407 2014-03-21 11:55:57Z cmayer $

#include <numeric>
#include <functional>
#include <set>

#include <TChain.h>
#include <THashList.h>
#include <THnSparse.h>
#include <TH1.h>
#include <TH2.h>
#include <TH3.h>

#include "AliEventPoolManager.h"
#include "AliAnalysisManager.h"
#include "AliAODEvent.h"
#include "AliAODMCHeader.h"
#include "AliAODMCParticle.h"
#include "AliMCEvent.h"
#include "AliInputEventHandler.h"
#include "AliLog.h"
#include "AliTHn.h"

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


ClassImp(AliAnalysisTaskLongRangeCorrelations);
ClassImp(LRCParticle);

AliAnalysisTaskLongRangeCorrelations::AliAnalysisTaskLongRangeCorrelations(const char *name)
  : AliAnalysisTaskSE(name)
  , fOutputList(NULL)
  , fVertexZ(NULL)
  , fRunMixing(kFALSE)
  , fPoolMgr(NULL)
  , fMixingTracks(50000)
  , fTrackFilter(128)
  , fCentMin(0), fCentMax(20)
  , fPtMin(0.2), fPtMax(1e10)
  , fPhiMin(0.), fPhiMax(TMath::TwoPi())
  , fMaxAbsVertexZ(10.)
  , fSelectPrimaryMCParticles(0)
  , fSelectPrimaryMCDataParticles(0)
  , fNMin(-1)
  , fNMax(-1)
  , fDeltaEta(-1)
  , fnBinsCent( 220), fnBinsPt(400), fnBinsPhi(4),              fnBinsEta(120)
  , fxMinCent( -5.0), fxMinPt( 0.0), fxMinPhi( 0.0),            fxMinEta(-1.5)
  , fxMaxCent(105.0), fxMaxPt( 4.0), fxMaxPhi( TMath::TwoPi()), fxMaxEta( 1.5) {
  DefineInput(0, TChain::Class());
  DefineOutput(1, TList::Class());
}

AliAnalysisTaskLongRangeCorrelations::~AliAnalysisTaskLongRangeCorrelations() {
  if (NULL != fOutputList) {
    delete fOutputList;
    fOutputList = NULL;
  }
}

void AliAnalysisTaskLongRangeCorrelations::UserCreateOutputObjects() {
  fOutputList = new THashList;
  fOutputList->SetOwner(kTRUE);
  fOutputList->SetName(GetOutputListName());

  const Double_t vertexBins[] = {  // Zvtx bins
    -10., -7., -5., -3., -1., 1., 3., 5., 7., 10.
  };
  const Int_t nVertexBins(sizeof(vertexBins)/sizeof(Double_t)-1);
  fVertexZ = new TAxis(nVertexBins, vertexBins);
  fVertexZ->SetName("VertexZAxis");
  fOutputList->Add(fVertexZ);

  fOutputList->Add(new TH1D("histVertexZ", ";vertex Z (cm)", nVertexBins, vertexBins));

  // Event statistics
  const char* eventStatLabels[] = { 
    "All Events",
    "Physics Selection",
    "Centrality Selection",
    "Vertex Selection",
    "Analyzed Events"
  };
  const size_t nEventStat(sizeof(eventStatLabels)/sizeof(const char*));
  TH1* hStats(new TH1D("histEventStats", "histEventStats", nEventStat, -0.5, nEventStat-0.5));
  for (size_t i(0); i<nEventStat; ++i)
    hStats->GetXaxis()->SetBinLabel(1+i, eventStatLabels[i]);
  fOutputList->Add(hStats);

  // QA histograms
  fOutputList->Add(new TH2D("histQACentrality", ";centrality V0M(%);selected;",
			    fnBinsCent,fxMinCent,fxMaxCent, 2, -0.5, 1.5));
  fOutputList->Add(new TH2D("histQAVertexZ", ";vertex-z (cm);selected;",
			    800, -40., 40., 2, -0.5, 1.5));
  fOutputList->Add(new TH1D("histQAMultiplicityBeforeCuts",
			    ";tracks", 10000, 0, 10000));
  fOutputList->Add(new TH1D("histQAMultiplicityAfterCuts",
			    ";selected tracks", 10000, 0, 10000));
  fOutputList->Add(new TH3D("histQACentPt", ";charge;centrality V0M(%);p_{T} (GeV/c)",
			    2, -0.5, 1.5, fnBinsCent, fxMinCent, fxMaxCent, fnBinsPt, fxMinPt, fxMaxPt));
  fOutputList->Add(new TH3D("histQAPhiEta", ";charge;#phi (rad);#eta",
			    2, -0.5, 1.5, 200, 0.0, TMath::TwoPi(), 300, -1.5, 1.5));

  // N(eta) distributions with different binnings
  fOutputList->Add(new TH2D("histNEta_120", ";#eta;N", 120, -1.5, 1.5, 1000, -.5, 1000-.5));  // 0.025
  fOutputList->Add(new TH2D("histNEta__60", ";#eta;N",  60, -1.5, 1.5, 1000, -.5, 1000-.5));  // 0.05
  fOutputList->Add(new TH2D("histNEta__30", ";#eta;N",  30, -1.5, 1.5, 1000, -.5, 1000-.5));  // 0.1
  fOutputList->Add(new TH2D("histNEta__15", ";#eta;N",  15, -1.5, 1.5, 1000, -.5, 1000-.5));  // 0.2

  // Moments
  fOutputList->Add(MakeHistPhiEta("histMoment1PhiEta_1"));
  if (fRunMixing)
    fOutputList->Add(MakeHistPhiEta("histMoment1PhiEta_2"));
  fOutputList->Add(MakeHistPhiEtaPhiEta("histMoment2PhiEtaPhiEta_11"));
  if (fRunMixing) {
    fOutputList->Add(MakeHistPhiEtaPhiEta("histMoment2PhiEtaPhiEta_12"));
    fOutputList->Add(MakeHistPhiEtaPhiEta("histMoment2PhiEtaPhiEta_22"));
  }
  
  // add MC Histograms
  const Int_t N(fOutputList->GetEntries());
  for (Int_t i(0); i<N; ++i)
    fOutputList->Add(fOutputList->At(i)->Clone(TString("MC_") + fOutputList->At(i)->GetName()));

  if (fRunMixing)
    SetupForMixing();

  PostData(1, fOutputList);
}

void AliAnalysisTaskLongRangeCorrelations::UserExec(Option_t* ) {
  AliAnalysisManager* pManager(AliAnalysisManager::GetAnalysisManager());
  if (NULL == pManager) return;

  AliInputEventHandler* pInputHandler(dynamic_cast<AliInputEventHandler*>(pManager->GetInputEventHandler()));
  if (NULL == pInputHandler) return;

  AliAODEvent* pAOD(dynamic_cast<AliAODEvent*>(InputEvent()));
  if (NULL == pAOD) return;

  AliAODHeader *pAODHeader = dynamic_cast<AliAODHeader*>(pAOD->GetHeader());
  if(!pAODHeader) AliFatal("Not a standard AOD");
  if (NULL == pAODHeader) return;

  AliAODMCHeader *pAODMCHeader(dynamic_cast<AliAODMCHeader*>(pAOD->FindListObject(AliAODMCHeader::StdBranchName())));
  const Bool_t isMC(NULL != pAODMCHeader);

  TClonesArray *arrayMC(NULL);
  if (isMC) {
    arrayMC = dynamic_cast<TClonesArray*>(pAOD->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
    if (NULL == arrayMC) return;
  }

  // --- event cuts MC ---
  if (isMC) {
    Fill("MC_histEventStats", 0.); // all events
    Fill("MC_histEventStats", 1.); // events passing physics selection
  }

  // --- event cuts data ---
  Fill("histEventStats", 0.); // all events

  // physics selection
  if (!pInputHandler->IsEventSelected()) return;
  Fill("histEventStats", 1.); // events passing physics selection

  // centrality selection
  const Double_t centrality(pAODHeader->GetCentralityP()->GetCentralityPercentile("V0M"));
  AliDebug(3, Form("centrality=%f", centrality));
  const Bool_t centralitySelected(centrality > fCentMin && centrality < fCentMax);
  Fill("histQACentrality", centrality, centralitySelected);
  if (!centralitySelected) return;
  Fill("histEventStats", 2.); // events passing centrality selection
  if (isMC)
    Fill("MC_histEventStats", 2.); // events passing centrality selection

  // vertex selection -- data
  const Int_t nVertex(pAOD->GetNumberOfVertices());
  if (0 == nVertex) return;
  const AliAODVertex* pVertex(pAOD->GetPrimaryVertex());
  if (NULL == pVertex) return;
  const Int_t nTracksPrimary(pVertex->GetNContributors());
  if (nTracksPrimary < 1) return;

  const Double_t zVertex(pVertex->GetZ());
  const Bool_t vertexSelectedData(TMath::Abs(zVertex) < fMaxAbsVertexZ);

  // vertex selection -- MC
  Bool_t vertexSelectedMC(kTRUE);
  if (isMC)
    vertexSelectedMC = (TMath::Abs(pAODMCHeader->GetVtxZ()) < fMaxAbsVertexZ);

  // combined vertex selection (data and MC)
  const Bool_t vertexSelected(vertexSelectedData && vertexSelectedMC);
  Fill("histQAVertexZ", zVertex, vertexSelected);
  if (isMC)
    Fill("MC_histQAVertexZ", pAODMCHeader->GetVtxZ(), vertexSelected);
  if (!vertexSelected) return;
  Fill("histEventStats",    3.); // events passing vertex selection
  if (isMC)
    Fill("MC_histEventStats", 3.); // events passing vertex selection

  // ------------------
  // event is accepted
  // ------------------

  TObjArray* tracksMain(GetAcceptedTracks(pAOD, arrayMC, centrality));
  Fill("histQAMultiplicityBeforeCuts", pAOD->GetNumberOfTracks());
  Fill("histQAMultiplicityAfterCuts", tracksMain->GetEntriesFast());
  
  if (fRunMixing) {  
    AliEventPool* pEventPool(fPoolMgr->GetEventPool(centrality, pAOD->GetPrimaryVertex()->GetZ()));
    if (NULL == pEventPool)
      AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centrality, pAOD->GetPrimaryVertex()->GetZ()));
    
//     pEventPool->PrintInfo();
    if (pEventPool->IsReady()
	|| pEventPool->NTracksInPool()     > fMixingTracks/10
	|| pEventPool->GetCurrentNEvents() >= 5) {
      Fill("histEventStats", 4.); // analyzed events
      Fill("histVertexZ", zVertex);
      const Int_t nMix(pEventPool->GetCurrentNEvents());
      for (Int_t i(0); i<nMix; ++i) {
 	TObjArray* tracksMixed(pEventPool->GetEvent(i));
 	CalculateMoments("", tracksMain, tracksMixed, zVertex, 1./nMix);
      }
    }
    // Update the Event pool
    pEventPool->UpdatePool(tracksMain);
  } else { // no mixing
    Fill("histEventStats", 4.); // analyzed events
    Fill("histVertexZ", zVertex);
    CalculateMoments("", tracksMain, tracksMain, zVertex, 1.);
    delete tracksMain;
  }
  
  if (isMC) {
    TObjArray* tracksMC(GetAcceptedTracks(arrayMC, centrality));
    const Double_t x[2] = {
      static_cast<Double_t>(arrayMC->GetEntriesFast()),
      static_cast<Double_t>(tracksMC->GetEntriesFast())
    };
    Fill("MC_histQAMultiplicity", x);
    Fill("MC_histEventStats", 4.); // analyzed MC events
    Fill("MC_histVertexZ", pAOD->GetPrimaryVertex()->GetZ());
    CalculateMoments("MC_", tracksMC, tracksMC, zVertex, 1.);
    delete tracksMC;
  }
}

void AliAnalysisTaskLongRangeCorrelations::Terminate(Option_t* ) {
  //
  fOutputList = dynamic_cast<TList*>(GetOutputData(1));
  if (NULL == fOutputList) {
    AliFatal("NULL == fOutputList");
    return; // needed to avoid coverity warning
  }
}

TString AliAnalysisTaskLongRangeCorrelations::GetOutputListName() const {
  TString listName("listLRC");
  listName += TString::Format("_%smix",         fRunMixing ? "" : "no");
  listName += TString::Format("_trackFilt%d",   fTrackFilter);
  listName += TString::Format("_cent%.0fT%.0f", fCentMin, fCentMax);
  listName += TString::Format("_ptMin%.0fMeV",  1e3*fPtMin);
  listName += TString::Format("_phi%.0fT%.0f",  TMath::RadToDeg()*fPhiMin, TMath::RadToDeg()*fPhiMax);
  if ( 1 == fSelectPrimaryMCParticles)
    listName += "_selPrimMC";
  if (-1 == fSelectPrimaryMCParticles)
    listName += "_selNonPrimMC";
  if ( 1 == fSelectPrimaryMCDataParticles)
    listName += "_selPrimMCData";
  if (-1 == fSelectPrimaryMCDataParticles)
    listName += "_selNonPrimMCData";
  if (-1 != fNMin)
    listName += TString::Format("_nMin%d", fNMin);
  if (-1 != fNMax)
    listName += TString::Format("_nMax%d", fNMax);
  if (fDeltaEta >= 0)
    listName += TString::Format("_deltaEta%02.0f", 10*fDeltaEta);
  return listName;
}

void AliAnalysisTaskLongRangeCorrelations::SetupForMixing() {
  const Int_t trackDepth(fMixingTracks);
  const Int_t poolsize(1000); // Maximum number of events

  Double_t centralityBins[] = { fCentMin, fCentMax };
  const Int_t nCentralityBins(sizeof(centralityBins)/sizeof(Double_t) - 1);

  fPoolMgr = new AliEventPoolManager(poolsize, trackDepth,
				     nCentralityBins, centralityBins,
				     fVertexZ->GetNbins()+1, 
				     const_cast<Double_t*>(fVertexZ->GetXbins()->GetArray()));
}

THnSparse* AliAnalysisTaskLongRangeCorrelations::MakeHistSparsePhiEta(const char* name) const {
  const Int_t nVertexZBins=fVertexZ->GetNbins();
  const Int_t   nBinsM1[] = { fnBinsPhi, fnBinsEta, nVertexZBins     };
  const Double_t xMinM1[] = {  fxMinPhi,  fxMinEta, 0.5              };
  const Double_t xMaxM1[] = {  fxMaxPhi,  fxMaxEta, nVertexZBins+0.5 };
  const TString title(TString(name)
		      +";#phi;#eta;vertex Z (bin);");
  return new THnSparseD(name, title.Data(), 3, nBinsM1, xMinM1, xMaxM1);
}

AliTHn* AliAnalysisTaskLongRangeCorrelations::MakeHistPhiEta(const char* name) const {
  const Int_t nVertexZBins=fVertexZ->GetNbins();
  const Int_t   nBinsM1[] = { fnBinsPhi, fnBinsEta, nVertexZBins     };
  const Double_t xMinM1[] = {  fxMinPhi,  fxMinEta, 0.5              };
  const Double_t xMaxM1[] = {  fxMaxPhi,  fxMaxEta, nVertexZBins+0.5 };
  const TString title(TString(name)
		      +";#phi;#eta;vertex Z (bin);");
  AliTHn* h(new AliTHn(name, title.Data(), 1, 3, nBinsM1));
  for (Int_t i=0; i<3; ++i)
    h->SetBinLimits(i, xMinM1[i], xMaxM1[i]);
  return h;
}

AliTHn* AliAnalysisTaskLongRangeCorrelations::MakeHistPhiEtaPhiEta(const char* name) const {
  const Int_t nVertexZBins=fVertexZ->GetNbins();
  const Int_t   nBinsM2[] = {  fnBinsPhi, fnBinsEta,  fnBinsPhi, fnBinsEta, nVertexZBins     };
  const Double_t xMinM2[] = {  fxMinPhi,  fxMinEta,   fxMinPhi,  fxMinEta,  0.5              };
  const Double_t xMaxM2[] = {  fxMaxPhi,  fxMaxEta,   fxMaxPhi,  fxMaxEta,  nVertexZBins+0.5 };
  const TString title(TString(name)
		      +";#phi_{1};#eta_{1}"
		      +";#phi_{2};#eta_{2};vertex Z (bin);");
  AliTHn* h(new AliTHn(name, title.Data(), 1, 5, nBinsM2));
  for (Int_t i=0; i<5; ++i)
    h->SetBinLimits(i, xMinM2[i], xMaxM2[i]);
  return h;
}

TObjArray* AliAnalysisTaskLongRangeCorrelations::GetAcceptedTracks(AliAODEvent*  pAOD,
								   TClonesArray* arrayMC,
								   Double_t      centrality) {
  TObjArray* tracks= new TObjArray;
  tracks->SetOwner(kTRUE);

  const Long64_t N(pAOD->GetNumberOfTracks());
  AliDebug(5, Form("#tracks= %6lld %f", N, centrality));
  for (Long64_t i(0); i<N; ++i) {
    AliAODTrack* pAODTrack(dynamic_cast<AliAODTrack*>(pAOD->GetTrack(i)));
    if (NULL == pAODTrack) continue;

    // track filter selection
    if (!pAODTrack->TestFilterBit(fTrackFilter)) continue;

    // select only primary tracks
    if (pAODTrack->GetType() != AliAODTrack::kPrimary) continue;

    if (NULL != arrayMC) {
      const Int_t label(pAODTrack->GetLabel());
      AliAODMCParticle* mcParticle((label >= 0) 
				   ? static_cast<AliAODMCParticle*>(arrayMC->At(label))
				   : NULL);
      if (label >=0 && NULL == mcParticle)
	AliFatal("MC particle not found");

//       const Bool_t isPhysicalPrimary(mcParticle->IsPhysicalPrimary());
//       Printf("mcParticle->IsPhysicalPrimary() %d", isPhysicalPrimary);

      switch (fSelectPrimaryMCDataParticles) {
      case -1:
	if (label < 0) continue;
	if (kTRUE  == mcParticle->IsPhysicalPrimary()) continue;
	break;
      case  0:
	// NOP, take all tracks
	break;
      case  1:
	if (label < 0) continue;
	if (kFALSE == mcParticle->IsPhysicalPrimary()) continue;
	break;
      default:
	AliFatal("fSelectPrimaryMCDataParticles != {-1,0,1}");
      }            
    }

    // select only charged tracks
    if (pAODTrack->Charge() == 0) continue;
    
    Fill("histQACentPt", pAODTrack->Charge()>0, centrality,       pAODTrack->Pt());
    Fill("histQAPhiEta", pAODTrack->Charge()>0, pAODTrack->Phi(), pAODTrack->Eta());
    if (pAODTrack->Phi() < fPhiMin || pAODTrack->Phi() > fPhiMax) continue;
    if (pAODTrack->Pt()  < fPtMin  || pAODTrack->Pt()  > fPtMax)  continue;

    tracks->Add(new LRCParticle(pAODTrack->Eta(), pAODTrack->Phi()));
  } // next track
  return tracks;
}

TObjArray* AliAnalysisTaskLongRangeCorrelations::GetAcceptedTracks(TClonesArray* tracksMC,
								   Double_t centrality) {
  // for keeping track of MC labels
  std::set<Int_t> labelSet;

  TObjArray* tracks= new TObjArray;
  tracks->SetOwner(kTRUE);

  const Long64_t N(tracksMC->GetEntriesFast());
  AliDebug(5, Form("#tracks= %6lld %f", N, centrality));
  for (Long64_t i(0); i<N; ++i) {
    AliAODMCParticle* pMCTrack(dynamic_cast<AliAODMCParticle*>(tracksMC->At(i)));
    if (NULL == pMCTrack) continue;    

    // no track filter selection for MC tracks    

    if (labelSet.find(pMCTrack->Label()) != labelSet.end()) {
      Printf("Duplicate Label= %3d", pMCTrack->Label());
      continue;
    }
    labelSet.insert(pMCTrack->Label());    
    
//     Printf("isPrim = %d", pMCTrack->IsPhysicalPrimary());

    switch (fSelectPrimaryMCParticles) {
    case -1:
      if (kTRUE == pMCTrack->IsPhysicalPrimary()) continue;
      break;
    case  0:
      // NOP, take all MC tracks
      break;
    case  1:
      if (kFALSE == pMCTrack->IsPhysicalPrimary()) continue;
      break;
    default:
      AliFatal("fSelectPrimaryMCParticles != {-1,0,1}");
    }

    // select only charged tracks
    if (pMCTrack->Charge() == 0) continue;

    Fill("MC_histQACentPt", pMCTrack->Charge()>0, centrality,      pMCTrack->Pt());
    Fill("MC_histQAPhiEta", pMCTrack->Charge()>0, pMCTrack->Phi(), pMCTrack->Eta());

    if (pMCTrack->Phi() < fPhiMin || pMCTrack->Phi() > fPhiMax) continue;
    if (pMCTrack->Pt()  < fPtMin  || pMCTrack->Pt()  > fPtMax)  continue;

    tracks->Add(new LRCParticle(pMCTrack->Eta(), pMCTrack->Phi()));
  } // next track
  return tracks;
}

Bool_t AddTHnSparseToAliTHn(AliTHn* h, THnSparse* hs, Double_t weight) {
  if (h->GetNVar() != hs->GetNdimensions())
    return kFALSE;

  const size_t nDim(hs->GetNdimensions());
  
  Int_t    *coord = new Int_t[nDim];
  Double_t *x     = new Double_t[nDim];

  const Long64_t N(hs->GetNbins());
  for (Long64_t i(0); i<N; ++i) {
    const Double_t n(hs->GetBinContent(i, coord));
    for (size_t j=0; j<nDim; ++j) 
      x[j] = hs->GetAxis(j)->GetBinCenter(coord[j]);
    h->Fill(x, 0, n*weight);
  }

  delete[] coord;
  delete[] x;

  return kTRUE;
}

void AliAnalysisTaskLongRangeCorrelations::CalculateMoments(TString prefix,
							    TObjArray* tracks1,
							    TObjArray* tracks2,
							    Double_t vertexZ,
							    Double_t weight) {
  THnSparse* hN1ForThisEvent(ComputeNForThisEvent(tracks1, "hN1", vertexZ));

  if (fDeltaEta >= 0) {
    hN1ForThisEvent->GetAxis(1)->SetRangeUser( fDeltaEta/2+0.00001,  fDeltaEta/2+0.19999);
    TH1 *hTemp = hN1ForThisEvent->Projection(0);
    const Long64_t ncPlus = Long64_t(hTemp->GetEntries());
    delete hTemp;
    
    hN1ForThisEvent->GetAxis(1)->SetRangeUser(-fDeltaEta/2-0.19999, -fDeltaEta/2-0.00001);
    hTemp = hN1ForThisEvent->Projection(0);
    const Long64_t ncMinus = Long64_t(hTemp->GetEntries());
    delete hTemp;
    
    // restore full axis range
    hN1ForThisEvent->GetAxis(1)->SetRange(0, -1);

    if (fNMin != -1 && ncPlus < fNMin) return;
    if (fNMax != -1 && ncPlus > fNMax) return;
    
    if (fNMin != -1 && ncMinus < fNMin) return;
    if (fNMax != -1 && ncMinus > fNMax) return;
  }

  AliTHn* hN1(dynamic_cast<AliTHn*>(fOutputList->FindObject(prefix+"histMoment1PhiEta_1")));
  if (NULL == hN1) return;

  // <n_1>
  AddTHnSparseToAliTHn(hN1,hN1ForThisEvent, weight); 
//   hN1->GetGrid(0)->GetGrid()->Add(hN1ForThisEvent, weight);

  // n(eta) distributions
  FillNEtaHist(prefix+"histNEta_300", hN1ForThisEvent, weight);
  FillNEtaHist(prefix+"histNEta_120", hN1ForThisEvent, weight);
  FillNEtaHist(prefix+"histNEta__30", hN1ForThisEvent, weight);
  FillNEtaHist(prefix+"histNEta__15", hN1ForThisEvent, weight);

  TObjArray* hNs(new TObjArray);

  // <n_1 n_1>
  hNs->AddAt(hN1ForThisEvent, 0);
  hNs->AddAt(hN1ForThisEvent, 1);

  ComputeNXForThisEvent(hNs, prefix+"histMoment2PhiEtaPhiEta_11", vertexZ, weight);

  if (fRunMixing) {
    AliTHn* hN2(dynamic_cast<AliTHn*>(fOutputList->FindObject(prefix+"histMoment1PhiEta_2")));
    if (NULL == hN2) return;
    // <n_2>
    THnSparse* hN2ForThisEvent(ComputeNForThisEvent(tracks2, "hN2", vertexZ));
    AddTHnSparseToAliTHn(hN2,hN2ForThisEvent, weight); 
//     hN2->GetGrid(0)->GetGrid()->Add(hN2ForThisEvent, weight);

    // <n_1 n_2>
    hNs->AddAt(hN2ForThisEvent, 1);
    ComputeNXForThisEvent(hNs, prefix+"histMoment2PhiEtaPhiEta_12", vertexZ, weight);
    
    // <n_2 n_2>
    hNs->AddAt(hN2ForThisEvent, 0);
    ComputeNXForThisEvent(hNs, prefix+"histMoment2PhiEtaPhiEta_22", vertexZ, weight);

    // clean up
    delete hN2ForThisEvent;
  }

  // clean up
  delete hNs;
  delete hN1ForThisEvent;
}

void AliAnalysisTaskLongRangeCorrelations::FillNEtaHist(TString name,
							THnSparse* hs,
							Double_t weight) {

  TH2* hSum(dynamic_cast<TH2*>(fOutputList->FindObject(name)));
  if (NULL == hSum) return;

  TH2* hPerEvent(dynamic_cast<TH2*>(hSum->Clone("hPerEvent")));
  if (NULL == hPerEvent) return;
  hPerEvent->Reset();  

  TH1* h1PerEvent(hPerEvent->ProjectionX());

  // fill h1PerEvent
  const Long64_t N(hs->GetNbins());
  for (Long64_t i(0); i<N; ++i) {
    Int_t coord[2] = { 0, 0 };
    const Double_t n(hs->GetBinContent(i, coord));
    const Double_t eta(hs->GetAxis(1)->GetBinCenter(coord[1]));
    h1PerEvent->Fill(eta, n);
  }
 
  for (Int_t i(1); i<=h1PerEvent->GetNbinsX(); ++i)
    hPerEvent->Fill(h1PerEvent->GetXaxis()->GetBinCenter(i),
		    h1PerEvent->GetBinContent(i));

  hSum->Add(hPerEvent, weight);

  delete hPerEvent;
  delete h1PerEvent;
}

THnSparse* AliAnalysisTaskLongRangeCorrelations::ComputeNForThisEvent(TObjArray* tracks,
								      const char* histName,
								      Double_t vertexZ) const {
  const Double_t vertexZBin(fVertexZ->FindBin(vertexZ));
  THnSparse* hN(MakeHistSparsePhiEta(histName));
  const Long64_t nTracks(tracks->GetEntriesFast());
  for (Long64_t i(0); i<nTracks; ++i) {
    const LRCParticle* p(dynamic_cast<LRCParticle*>(tracks->At(i)));
    if (NULL == p) continue;
    const Double_t x[] = { p->Phi(), p->Eta(), vertexZBin };
    hN->Fill(x);
  }
  return hN;
}

class MultiDimIterator {
public:
  MultiDimIterator(TObjArray* _fHs, Double_t vertexZBin)
    : fHs(_fHs)
    , fN(fHs->GetEntriesFast())
    , fDims(fN,  0)
    , fIdxs(fN,  0)
    , fNs  (fN,  0)
    , fX (2*fN+1, 0)
    , fj(0) {
    for (Long64_t i=0; i<fN; ++i) {
      THnSparse* hNi(reinterpret_cast<THnSparse*>(fHs->At(i)));
      if (NULL == hNi)
	AliFatal("NULL == hNi");
      fDims[i] = hNi->GetNbins();
      AliDebug(3, Form("%lld %s %lld", i, hNi->GetName(), fDims[i]));
      update(i);
    }
    fX[2*fN] = vertexZBin;
  }

  const char* ClassName() const { return "MultiDimIterator"; }
  const Double_t* GetX() const { return &fX.front(); }
  Double_t        GetN() const { // returns the product of all multiplicities
    return std::accumulate(fNs.begin(), fNs.end(), Double_t(1), std::multiplies<Double_t>());
  }
  Bool_t end() const { return fj == fN; }

  MultiDimIterator& operator++() {
    Long64_t j(0);
    for (; j<fN; ++j) {
      ++fIdxs[j];
      update(j);
      if (fIdxs[j] < fDims[j]) break;
      fIdxs[j] = 0;
      update(j);
    }
    fj = j;
    return *this;
  }

protected:
  void update(Long64_t j) {
    THnSparse* hs(reinterpret_cast<THnSparse*>(fHs->At(j)));
    Int_t coord[] = { 0, 0 };
    fNs[j] = hs->GetBinContent(fIdxs[j], coord);
    for (Int_t k(0); k<2; ++k)
      fX[2*j+k] = hs->GetAxis(k)->GetBinCenter(coord[k]);
  }
private:
  MultiDimIterator(const MultiDimIterator&);
  MultiDimIterator& operator=(const MultiDimIterator&);

  TObjArray*            fHs;   // array of THnSparse histograms
  const Long64_t        fN;    // number of histograms
  std::vector<Long64_t> fDims; // number of filled bins for each THnSparse
  std::vector<Long64_t> fIdxs; // indices
  std::vector<Double_t> fNs;   // number of tracks
  std::vector<Double_t> fX;    // coordinate
  Long64_t              fj;    // state
} ;

void AliAnalysisTaskLongRangeCorrelations::ComputeNXForThisEvent(TObjArray* hNs,
								 const char* histName,
								 Double_t vertexZ,
								 Double_t weight) {
  if (NULL == fOutputList) return;

  AliTHn* hs(dynamic_cast<AliTHn*>(fOutputList->FindObject(histName)));
  if (hs == NULL) return;

  for (MultiDimIterator mdi(hNs, fVertexZ->FindBin(vertexZ)); !mdi.end(); ++mdi)
    hs->Fill(mdi.GetX(), 0, mdi.GetN()*weight);

//   hs->FillParent();
}

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