ROOT logo
#include "AliLog.h"
#include "TH1D.h"
#include "TH2D.h"
#include "TTree.h"
#include "TAxis.h"
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "TMath.h"
#include "TString.h"

#include "AliAnalysisTaskDiMuonCorrelations.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "AliEventPoolManager.h"

ClassImp(AliAnalysisTaskDiMuonCorrelations)

//====================================================================================================================================================

AliAnalysisTaskDiMuonCorrelations::AliAnalysisTaskDiMuonCorrelations() : 
  AliAnalysisTaskSE(), 
  fAOD(0x0),
  fPoolMgr(0x0),
  fLikeSign(kTRUE),
  fMaxChi2Muon(5.), 
  fMinEtaMuon(-4.0), 
  fMaxEtaMuon(-2.5),
  fTriggerMatchLevelMuon(0),
  fNbinsCent(1), 
  fNbinsPt(1),
  fCentAxis(0x0), 
  fPtAxis(0x0),
  fEtaAxis(0x0),
  fHistV0Multiplicity(0x0), 
  fHistITSMultiplicity(0x0),
  fHistCentrality(0x0),
  fHistEvStat(0x0),
  fCentMethod(0),
  fOutputList(0x0)
{

  // Default constructor

  fMuonTrack[0] = NULL;
  fMuonTrack[1] = NULL;

  for (Int_t iCent=0; iCent<fNMaxBinsCentrality; iCent++) {
    for (Int_t iPtBinMuon1=0; iPtBinMuon1<fNMaxBinsPt; iPtBinMuon1++) {
      for (Int_t iPtBinMuon2=0; iPtBinMuon2<fNMaxBinsPt; iPtBinMuon2++) {
	fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]       = NULL;
	fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2]    = NULL;
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    = NULL;
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] = NULL;
      }
    }
    fHistNMuons_vs_NMuons[iCent]         = NULL;
    fHistNMuons_vs_NMuons_Mixed[iCent]   = NULL;
    fHistTracksEtavsEta[iCent]           = NULL;
    fHistTracksEtavsEta_Mixed[iCent]     = NULL;
    fHistSingleMuonsPt[iCent]            = NULL;
    fHistSingleMuonsPt_Mixed[iCent]      = NULL;
    fHistSingleMuonsEtaPt[iCent]         = NULL;
    fHistSingleMuonsEtaPt_Mixed[iCent]   = NULL;
  }  
  
}


//====================================================================================================================================================

AliAnalysisTaskDiMuonCorrelations::AliAnalysisTaskDiMuonCorrelations(const char *name) : 
  AliAnalysisTaskSE(name), 
  fAOD(0x0),
  fPoolMgr(0x0),
  fLikeSign(kTRUE),
  fMaxChi2Muon(5.), 
  fMinEtaMuon(-4.0), 
  fMaxEtaMuon(-2.5),
  fTriggerMatchLevelMuon(0),
  fNbinsCent(1), 
  fNbinsPt(1),
  fCentAxis(0x0), 
  fPtAxis(0x0),
  fEtaAxis(0x0),
  fHistV0Multiplicity(0x0), 
  fHistITSMultiplicity(0x0),
  fHistCentrality(0x0),
  fHistEvStat(0x0),
  fCentMethod(0),
  fOutputList(0x0)
{

  // Constructor

  fMuonTrack[0] = NULL;
  fMuonTrack[1] = NULL;

  for (Int_t iCent=0; iCent<fNMaxBinsCentrality; iCent++) {
    for (Int_t iPtBinMuon1=0; iPtBinMuon1<fNMaxBinsPt; iPtBinMuon1++) {
      for (Int_t iPtBinMuon2=0; iPtBinMuon2<fNMaxBinsPt; iPtBinMuon2++) {
	fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    = NULL;
	fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] = NULL;
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    = NULL;
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] = NULL;
      }
    }
    fHistNMuons_vs_NMuons[iCent]         = NULL;
    fHistNMuons_vs_NMuons_Mixed[iCent]   = NULL;
    fHistTracksEtavsEta[iCent]           = NULL;
    fHistTracksEtavsEta_Mixed[iCent]     = NULL;
    fHistSingleMuonsPt[iCent]            = NULL;
    fHistSingleMuonsPt_Mixed[iCent]      = NULL;
    fHistSingleMuonsEtaPt[iCent]         = NULL;
    fHistSingleMuonsEtaPt_Mixed[iCent]   = NULL;
  }  
  
  // Define input and output slots here
  DefineOutput(1, TList::Class());
  
}

//====================================================================================================================================================

AliAnalysisTaskDiMuonCorrelations::~AliAnalysisTaskDiMuonCorrelations() {
  
  delete fCentAxis;
  delete fPtAxis;
  delete fEtaAxis;

  if (fOutputList  && !AliAnalysisManager::GetAnalysisManager()->IsProofMode()) delete fOutputList;

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::UserCreateOutputObjects() {
  
  fOutputList = new TList();
  fOutputList->SetOwner(kTRUE);

  for (Int_t iCent=0; iCent<fNbinsCent; iCent++) {
    for (Int_t iPtBinMuon1=0; iPtBinMuon1<fNbinsPt; iPtBinMuon1++) {
      for (Int_t iPtBinMuon2=0; iPtBinMuon2<fNbinsPt; iPtBinMuon2++) {
	
	fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    = new TH1D(Form("fHistDeltaPhi_Cent%02d_PtBin%02d_%02d",iCent,iPtBinMuon1,iPtBinMuon2), 
								     Form("%d-%d %%, %3.1f<p_{T}^{#mu1}<%3.1f, %3.1f<p_{T}^{#mu2}<%3.1f",
									  Int_t(fCentAxis->GetBinLowEdge(iCent+1)),
									  Int_t(fCentAxis->GetBinUpEdge(iCent+1)),
									  fPtAxis->GetBinLowEdge(iPtBinMuon1+1),
									  fPtAxis->GetBinUpEdge(iPtBinMuon1+1),
									  fPtAxis->GetBinLowEdge(iPtBinMuon2+1),
									  fPtAxis->GetBinUpEdge(iPtBinMuon2+1)),
								     100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi());
	
	fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2]    = new TH1D(Form("fHistDeltaPhiMix_Cent%02d_PtBin%02d_%02d",iCent,iPtBinMuon1,iPtBinMuon2), 
									Form("%d-%d %%, %3.1f<p_{T}^{#mu1}<%3.1f, %3.1f<p_{T}^{#mu2}<%3.1f MIXED",
									     Int_t(fCentAxis->GetBinLowEdge(iCent+1)),
									     Int_t(fCentAxis->GetBinUpEdge(iCent+1)),
									     fPtAxis->GetBinLowEdge(iPtBinMuon1+1),
									     fPtAxis->GetBinUpEdge(iPtBinMuon1+1),
									     fPtAxis->GetBinLowEdge(iPtBinMuon2+1),
									     fPtAxis->GetBinUpEdge(iPtBinMuon2+1)),
									100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi());
	
	fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    -> SetXTitle("#Delta#varphi  [degrees]");
	fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] -> SetXTitle("#Delta#varphi  [degrees]");
	
	fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    -> Sumw2();
	fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] -> Sumw2();
	
	fOutputList -> Add(fHistDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]);
	fOutputList -> Add(fHistDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2]);
	
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    = new TH2D(Form("fHistEtaDeltaPhi_Cent%02d_PtBin%02d_%02d",iCent,iPtBinMuon1,iPtBinMuon2), 
									Form("%d-%d %%, %3.1f<p_{T}^{#mu1}<%3.1f, %3.1f<p_{T}^{#mu2}<%3.1f",
									     Int_t(fCentAxis->GetBinLowEdge(iCent+1)),
									     Int_t(fCentAxis->GetBinUpEdge(iCent+1)),
									     fPtAxis->GetBinLowEdge(iPtBinMuon1+1),
									     fPtAxis->GetBinUpEdge(iPtBinMuon1+1),
									     fPtAxis->GetBinLowEdge(iPtBinMuon2+1),
									     fPtAxis->GetBinUpEdge(iPtBinMuon2+1)),
									100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi(),
									fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray());
	
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2]    = new TH2D(Form("fHistEtaDeltaPhiMix_Cent%02d_PtBin%02d_%02d",iCent,iPtBinMuon1,iPtBinMuon2), 
									   Form("%d-%d %%, %3.1f<p_{T}^{#mu1}<%3.1f, %3.1f<p_{T}^{#mu2}<%3.1f MIXED",
										Int_t(fCentAxis->GetBinLowEdge(iCent+1)),
										Int_t(fCentAxis->GetBinUpEdge(iCent+1)),
										fPtAxis->GetBinLowEdge(iPtBinMuon1+1),
										fPtAxis->GetBinUpEdge(iPtBinMuon1+1),
										fPtAxis->GetBinLowEdge(iPtBinMuon2+1),
										fPtAxis->GetBinUpEdge(iPtBinMuon2+1)),
									   100, -0.5*TMath::RadToDeg()*TMath::Pi(), 1.5*TMath::RadToDeg()*TMath::Pi(),
									   fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray());
	
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    -> SetXTitle("#Delta#varphi  [degrees]");
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] -> SetXTitle("#Delta#varphi  [degrees]");
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    -> SetYTitle("#eta");
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] -> SetYTitle("#eta");
	
	fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]    -> Sumw2();
	fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2] -> Sumw2();
	
	fOutputList -> Add(fHistEtaDeltaPhi[iCent][iPtBinMuon1][iPtBinMuon2]);
	fOutputList -> Add(fHistEtaDeltaPhiMix[iCent][iPtBinMuon1][iPtBinMuon2]);

      }
    }

    fHistNMuons_vs_NMuons[iCent] = new TH2D(Form("fHistNMuons_vs_NMuons_Cent%02d",iCent),
						  Form("%d-%d %%",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))),
						  20, 0, 20, 20, 0, 20);
    fHistNMuons_vs_NMuons[iCent] -> SetXTitle("N_{tracks} Muon Arm");
    fHistNMuons_vs_NMuons[iCent] -> SetYTitle("N_{tracks} Muon Arm");
    fHistNMuons_vs_NMuons[iCent] -> Sumw2();

    fHistNMuons_vs_NMuons_Mixed[iCent] = new TH2D(Form("fHistNMuons_vs_NMuons_Mixed_Cent%02d",iCent),
						  Form("%d-%d %% MIXED",Int_t(fCentAxis->GetBinLowEdge(iCent+1)),Int_t(fCentAxis->GetBinUpEdge(iCent+1))),
						  20, 0, 20, 20, 0, 20);
    fHistNMuons_vs_NMuons_Mixed[iCent] -> SetXTitle("N_{tracks} Muon Arm");
    fHistNMuons_vs_NMuons_Mixed[iCent] -> SetYTitle("N_{tracks} Muon Arm");
    fHistNMuons_vs_NMuons_Mixed[iCent] -> Sumw2();

    fHistTracksEtavsEta[iCent]       = new TH2D(Form("fHistTracksEtavsEta_%02d",iCent),       "#eta 1st muon vs #eta 2nd muon", 100,-4.5,-2.,100,-4.5,-2.);
    fHistTracksEtavsEta_Mixed[iCent] = new TH2D(Form("fHistTracksEtavsEta_Mixed_%02d",iCent), "#eta 1st muon vs #eta 2nd muon", 100,-4.5,-2.,100,-4.5,-2.);

    fOutputList -> Add(fHistNMuons_vs_NMuons[iCent]);
    fOutputList -> Add(fHistNMuons_vs_NMuons_Mixed[iCent]);
    fOutputList -> Add(fHistTracksEtavsEta[iCent]);
    fOutputList -> Add(fHistTracksEtavsEta_Mixed[iCent]);

    fHistSingleMuonsPt[iCent]       = new TH1D(Form("fHistSingleMuonPt_Cent%02d",iCent),      "p_{T} for single muons", fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray());
    fHistSingleMuonsPt_Mixed[iCent] = new TH1D(Form("fHistSingleMuonPtmixed_Cent%02d",iCent), "p_{T} for single muons", fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray());
    fOutputList -> Add(fHistSingleMuonsPt[iCent]);
    fOutputList -> Add(fHistSingleMuonsPt_Mixed[iCent]);

    fHistSingleMuonsEtaPt[iCent] = new TH2D(Form("fHistSingleMuonEtaPt_Cent%02d",iCent), "#eta vs p_{T} for single muons",
					    fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray(),
					    fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray());
    fHistSingleMuonsEtaPt_Mixed[iCent] = new TH2D(Form("fHistSingleMuonEtaPtmixed_Cent%02d",iCent), "#eta vs p_{T} for single muons",
						  fNbinsPt, (Double_t*)fPtAxis->GetXbins()->GetArray(),
						  fEtaAxis->GetNbins(),(Double_t*)fEtaAxis->GetXbins()->GetArray());
    fOutputList -> Add(fHistSingleMuonsEtaPt[iCent]);
    fOutputList -> Add(fHistSingleMuonsEtaPt_Mixed[iCent]);

  }
  
  fHistV0Multiplicity = new TH1D("fHistV0Multiplicity", "V0 Multiplicity", 500, 0, 1000);
  fHistV0Multiplicity -> SetXTitle("Multiplicity");
  fHistV0Multiplicity -> Sumw2();

  fHistITSMultiplicity = new TH1D("fHistITSMultiplicity", "ITS Multiplicity", 500, 0, 500);
  fHistITSMultiplicity -> SetXTitle("N_{Clusters}");
  fHistITSMultiplicity -> Sumw2();

  fHistCentrality = new TH1D("fHistCentrality", Form("%s Centrality",fCentMethod.Data()), 300, -100, 200);
  fHistCentrality -> SetXTitle("Centrality  [%]");
  fHistCentrality -> Sumw2();

  fOutputList -> Add(fHistV0Multiplicity);
  fOutputList -> Add(fHistITSMultiplicity);
  fOutputList -> Add(fHistCentrality);

  fHistEvStat = new TH1D("fHistEvStat","Event cuts statistics",20,-0.5,19.5);
  fHistEvStat->SetXTitle("Cut index");
  fOutputList->Add(fHistEvStat);

  const Int_t kNZvtxBins  = 10;
  // bins for further buffers are shifted by 100 cm
  Double_t vertexBins[kNZvtxBins+1] = { -10,   -8,  -6,  -4,  -2,   0,   2,   4,   6,   8,  10 };
  Int_t nZvtxBins  = kNZvtxBins;
  Double_t* zvtxbin = vertexBins;

  fPoolMgr = new AliEventPoolManager(1000, 20000, fNbinsCent, (Double_t*)fCentAxis->GetXbins()->GetArray(), nZvtxBins, zvtxbin);

  PostData(1, fOutputList); 

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::UserExec(Option_t *) {

  fAOD = dynamic_cast<AliAODEvent *>(InputEvent());  
  if (!fAOD) return;  

  Int_t cutIndex = 0;
  fHistEvStat->Fill(cutIndex++);
  // Trigger selection
  if (!(IsTriggerFired())) return;
  fHistEvStat->Fill(cutIndex++);
  
  fHistV0Multiplicity  -> Fill(GetV0Multiplicity());
  fHistITSMultiplicity -> Fill(GetITSMultiplicity());

  Int_t centBin = GetCentBin();
  if (centBin<0) return;
  fHistEvStat->Fill(cutIndex++);
  Double_t percentile = fAOD->GetCentrality()->GetCentralityPercentile(fCentMethod.Data());
  fHistCentrality->Fill(percentile);

  // Vertex selection
  const AliAODVertex* spdVtx = fAOD->GetPrimaryVertexSPD();
  if (spdVtx->GetNContributors()<=0) return;
  fHistEvStat->Fill(cutIndex++);
  TString vtxTyp = spdVtx->GetTitle();
  Double_t cov[6]={0};
  spdVtx->GetCovarianceMatrix(cov);
  Double_t zRes = TMath::Sqrt(cov[5]);
  if (vtxTyp.Contains("vertexer:Z") && (zRes>0.25)) return;
  fHistEvStat->Fill(cutIndex++);

  Double_t zvtx = spdVtx->GetZ();
  if (TMath::Abs(zvtx) > 10.) return;
  fHistEvStat->Fill(cutIndex++);

  TObjArray *tracksMuonArm = GetAcceptedTracksMuonArm(fAOD);
  if (tracksMuonArm->GetEntriesFast() == 0) {
    delete tracksMuonArm;
    return;
  }
  fHistEvStat->Fill(cutIndex++);
  
  fHistNMuons_vs_NMuons[centBin] -> Fill(tracksMuonArm->GetEntries(), tracksMuonArm->GetEntries());

  AliDebug(1, Form("Single Event analysis : nTracksMuonArm = %4d", tracksMuonArm->GetEntries()));

  // Same event  
  for (Int_t iTrMuon1=0; iTrMuon1<tracksMuonArm->GetEntriesFast(); iTrMuon1++) {
    fMuonTrack[0] = (AliAODTrack*) tracksMuonArm->At(iTrMuon1);
    fHistSingleMuonsPt[centBin]->Fill(fMuonTrack[0]->Pt());
    fHistSingleMuonsEtaPt[centBin]->Fill(fMuonTrack[0]->Pt(),fMuonTrack[0]->Eta());
    for (Int_t iTrMuon2=0; iTrMuon2<tracksMuonArm->GetEntriesFast(); iTrMuon2++) {
      if (iTrMuon2 == iTrMuon1) continue;
      fMuonTrack[1] = (AliAODTrack*) tracksMuonArm -> At(iTrMuon2);
      FillHistograms(centBin, kSingleEvent);
    }
  }

  // Mixed event
  AliEventPool* pool = fPoolMgr->GetEventPool(percentile, zvtx);
  //pool->PrintInfo();
  if (pool->IsReady() || pool->NTracksInPool() > 2000 || pool->GetCurrentNEvents() >= 5) {
    for (Int_t jMix=0; jMix<pool->GetCurrentNEvents(); jMix++) {
      TObjArray *mixedTracks = pool->GetEvent(jMix);
      fHistNMuons_vs_NMuons_Mixed[centBin]->Fill(mixedTracks->GetEntriesFast(), tracksMuonArm->GetEntriesFast());
      for (Int_t iTrMuon1=0; iTrMuon1<tracksMuonArm->GetEntriesFast(); iTrMuon1++) {
	fMuonTrack[0] = (AliAODTrack*) tracksMuonArm->At(iTrMuon1);
	fHistSingleMuonsPt_Mixed[centBin]->Fill(fMuonTrack[0]->Pt());
	fHistSingleMuonsEtaPt_Mixed[centBin]->Fill(fMuonTrack[0]->Pt(),fMuonTrack[0]->Eta());
	for (Int_t iTrMuon2=0; iTrMuon2<mixedTracks->GetEntriesFast(); iTrMuon2++) {
	  fMuonTrack[1] = (AliAODTrack*) mixedTracks -> At(iTrMuon2);
	  FillHistograms(centBin, kMixedEvent);
	}
      }
    }
  }
  pool->UpdatePool(tracksMuonArm);

  PostData(1, fOutputList); 

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::FillHistograms(Int_t centrality, Int_t option) {

  if (fLikeSign) {
    if ((fMuonTrack[0]->Charge()*fMuonTrack[1]->Charge()) <= 0) return;
  }
  else {
    if ((fMuonTrack[0]->Charge()*fMuonTrack[1]->Charge()) >= 0) return;
  }

  Int_t ptBinTrackMuon1 = fPtAxis -> FindBin(fMuonTrack[0]->Pt());
  Int_t ptBinTrackMuon2 = fPtAxis -> FindBin(fMuonTrack[1]->Pt());

  if (ptBinTrackMuon1<1 || ptBinTrackMuon1>fNbinsPt || ptBinTrackMuon2<1 || ptBinTrackMuon2>fNbinsPt) return;

  if (fMuonTrack[0]->Pt() < fMuonTrack[1]->Pt()) return;

  Double_t deltaPhi = fMuonTrack[0]->Phi() - fMuonTrack[1]->Phi();
  if (deltaPhi >  1.5*TMath::Pi()) deltaPhi -= TMath::TwoPi();
  if (deltaPhi < -0.5*TMath::Pi()) deltaPhi += TMath::TwoPi();

  if (option==kSingleEvent)     fHistDeltaPhi[centrality][ptBinTrackMuon1-1][ptBinTrackMuon2-1]    -> Fill(TMath::RadToDeg()*deltaPhi);
  else if (option==kMixedEvent) fHistDeltaPhiMix[centrality][ptBinTrackMuon1-1][ptBinTrackMuon2-1] -> Fill(TMath::RadToDeg()*deltaPhi);

  if (option==kSingleEvent)     fHistEtaDeltaPhi[centrality][ptBinTrackMuon1-1][ptBinTrackMuon2-1]    -> Fill(TMath::RadToDeg()*deltaPhi,fMuonTrack[0]->Eta());
  else if (option==kMixedEvent) fHistEtaDeltaPhiMix[centrality][ptBinTrackMuon1-1][ptBinTrackMuon2-1] -> Fill(TMath::RadToDeg()*deltaPhi,fMuonTrack[0]->Eta());

  if (option==kSingleEvent)     fHistTracksEtavsEta[centrality]->Fill(fMuonTrack[0]->Eta(),fMuonTrack[1]->Eta());
  else if (option==kMixedEvent) fHistTracksEtavsEta_Mixed[centrality]->Fill(fMuonTrack[0]->Eta(),fMuonTrack[1]->Eta());

}

//====================================================================================================================================================

Bool_t AliAnalysisTaskDiMuonCorrelations::IsTriggerFired() {
  
  Bool_t isSelected = ((((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMUL7) ||
		       (((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected() & AliVEvent::kMUU7));

  return isSelected;
}

//====================================================================================================================================================

Float_t AliAnalysisTaskDiMuonCorrelations::GetV0Multiplicity() {
  
  Float_t multiplicity=0;
  for (Int_t iChannel=0; iChannel<64; iChannel++) multiplicity += fAOD->GetVZEROData()->GetMultiplicity(iChannel);
  return multiplicity;

}

//====================================================================================================================================================

TObjArray* AliAnalysisTaskDiMuonCorrelations::GetAcceptedTracksMuonArm(AliAODEvent *aodEvent) {

  // fills the array of muon tracks that pass the cuts

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

  Int_t nTracks = aodEvent->GetNumberOfTracks();

  AliAODTrack *track = 0;
  
  for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
    track = dynamic_cast<AliAODTrack*>(aodEvent->GetTrack(iTrack));
    if(!track) AliFatal("Not a standard AOD");
    if (track->IsMuonTrack() && track->GetMatchTrigger()>=fTriggerMatchLevelMuon) {
      if (track->Chi2perNDF() < fMaxChi2Muon) {
	if (track->Eta() > fMinEtaMuon && track->Eta() < fMaxEtaMuon) {
	  tracks->Add(new AliAODTrack(*track));
	}
      }
    }
  }

  return tracks;

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::SetCentBinning(Int_t nBins, Double_t *limits) {

  if (nBins>fNMaxBinsCentrality) {
    AliInfo(Form("WARNING : only %d centrality bins (out of the %d proposed) will be considered",fNMaxBinsCentrality,nBins));
    nBins = fNMaxBinsCentrality;
  }
  if (nBins<=0) {
    AliInfo("WARNING : at least one centrality bin must be considered");
    nBins = 1;
  }
  
  fNbinsCent = nBins;
  fCentAxis  = new TAxis(fNbinsCent, limits);

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::SetPtBinning(Int_t nBins, Double_t *limits) {

  if (nBins>fNMaxBinsPt) {
    AliInfo(Form("WARNING : only %d pt bins (out of the %d proposed) will be considered",fNMaxBinsPt,nBins));
    nBins = fNMaxBinsPt;
  }
  if (nBins<=0) {
    AliInfo("WARNING : at least one pt bin must be considered");
    nBins = 1;
  }
  
  fNbinsPt = nBins;
  fPtAxis  = new TAxis(fNbinsPt, limits);

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::SetEtaBinning(Int_t nBins, Double_t *limits) {

  if (nBins>fNMaxBinsEta) {
    AliInfo(Form("WARNING : only %d pt bins (out of the %d proposed) will be considered",fNMaxBinsEta,nBins));
    nBins = fNMaxBinsEta;
  }
  if (nBins<=0) {
    AliInfo("WARNING : at least one pt bin must be considered");
    nBins = 1;
  }
  
  fEtaAxis  = new TAxis(nBins, limits);

}

//====================================================================================================================================================

Int_t AliAnalysisTaskDiMuonCorrelations::GetCentBin() {

  Double_t percentile = fAOD->GetCentrality()->GetCentralityPercentile(fCentMethod.Data());

  Int_t bin = fCentAxis->FindBin(percentile) - 1;
  if (bin >= fNbinsCent) bin = -1;
  return bin;
  
}

//====================================================================================================================================================

Double_t AliAnalysisTaskDiMuonCorrelations::GetITSMultiplicity() {

  Double_t multiplicity = ((AliVAODHeader*)fAOD->GetHeader())->GetNumberOfITSClusters(1);

  return multiplicity;

}

//====================================================================================================================================================

void AliAnalysisTaskDiMuonCorrelations::Terminate(Option_t *) {

  fOutputList = dynamic_cast<TList*> (GetOutputData(1));
  if (!fOutputList) {
    printf("ERROR: Output list not available\n");
    return;
  }  

}

//====================================================================================================================================================

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