ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, 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$ */

//-----------------------------------------------------------------------------
// Analysis task to compute muon/dimuon kinematic distributions
// The output is a list of histograms.
// The macro class can run on AOD or in the train with the ESD filter.
// R. Arnaldi
//
//-----------------------------------------------------------------------------

//#ifndef ALIANALYSISTASKMUONDISTRIBUTIONS_CXX
//#define ALIANALYSISTASKMUONDISTRIBUTIONS_CXX

#include <TCanvas.h>
#include <TF1.h>
#include <TH1.h>
#include <TLatex.h>
#include <TList.h>
#include <TStyle.h>

#include "AliAnalysisTaskMuonDistributions.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliESD.h"
#include "AliVEvent.h"
#include "AliMCEventHandler.h"
#include "AliInputEventHandler.h"
#include "AliMCEvent.h"
#include "AliStack.h"
#include "AliLog.h"
#include "AliHeader.h"
#include "AliESDHeader.h"
#include "AliStack.h"
#include "TParticle.h"
#include "TLorentzVector.h"
#include "AliESDMuonTrack.h"
#include "AliESDInputHandler.h"
#include "AliAODEvent.h"
#include "AliAODHeader.h"
#include "AliAODHandler.h"
#include "AliAODInputHandler.h"

ClassImp(AliAnalysisTaskMuonDistributions)

//__________________________________________________________________________
AliAnalysisTaskMuonDistributions::AliAnalysisTaskMuonDistributions() :
  fBeamEnergy(0.),
  fInvMassFitLimitMin(2.),
  fInvMassFitLimitMax(5.),
  fPsiFitLimitMin(2.9),
  fPsiFitLimitMax(3.3),
  fPsiPFitLimitMin(3.3),
  fPsiPFitLimitMax(4.),
  fBckFitLimitMin(2.2),
  fBckFitLimitMax(2.85),
  fInvariantMassFit(kFALSE),
  fkAnalysisType(0x0),
  fOutput(0x0)
{
}
//___________________________________________________________________________
AliAnalysisTaskMuonDistributions::AliAnalysisTaskMuonDistributions(const Char_t* name) :
  AliAnalysisTaskSE(name),
  fBeamEnergy(0.),
  fInvMassFitLimitMin(2.),
  fInvMassFitLimitMax(5.),
  fPsiFitLimitMin(2.9),
  fPsiFitLimitMax(3.3),
  fPsiPFitLimitMin(3.3),
  fPsiPFitLimitMax(4.),
  fBckFitLimitMin(2.2),
  fBckFitLimitMax(2.85),
  fInvariantMassFit(kFALSE),
  fkAnalysisType(0x0),
  fOutput(0x0)
{
  //
  // Constructor. Initialization of Inputs and Outputs
  //
  Info("AliAnalysisTaskMuonDistributions","Calling Constructor");
  
  DefineOutput(1,TList::Class());

}

//___________________________________________________________________________
AliAnalysisTaskMuonDistributions& AliAnalysisTaskMuonDistributions::operator=(const AliAnalysisTaskMuonDistributions& c) 
{
  //
  // Assignment operator
  //
  if (this!=&c) {
    AliAnalysisTaskSE::operator=(c) ;
  }
  return *this;
}

//___________________________________________________________________________
AliAnalysisTaskMuonDistributions::AliAnalysisTaskMuonDistributions(const AliAnalysisTaskMuonDistributions& c) :
  AliAnalysisTaskSE(c),
  fBeamEnergy(c.fBeamEnergy),
  fInvMassFitLimitMin(c.fInvMassFitLimitMin),
  fInvMassFitLimitMax(c.fInvMassFitLimitMax),
  fPsiFitLimitMin(c.fPsiFitLimitMin),
  fPsiFitLimitMax(c.fPsiFitLimitMax),
  fPsiPFitLimitMin(c.fPsiPFitLimitMin),
  fPsiPFitLimitMax(c.fPsiPFitLimitMax),
  fBckFitLimitMin(c.fBckFitLimitMin),
  fBckFitLimitMax(c.fBckFitLimitMax),
  fInvariantMassFit(c.fInvariantMassFit),
  fkAnalysisType(c.fkAnalysisType),
  fOutput(c.fOutput)
 {
  //
  // Copy Constructor										
  //
}

//___________________________________________________________________________
AliAnalysisTaskMuonDistributions::~AliAnalysisTaskMuonDistributions() {
  //
  //destructor
  //
  Info("~AliAnalysisTaskMuonDistributions","Calling Destructor");

  if (fOutput){
    delete fOutput;
    fOutput = 0;
  }
}

//___________________________________________________________________________
void AliAnalysisTaskMuonDistributions::UserCreateOutputObjects(){
 //
 // output objects creation
 //	 
 fOutput = new TList();
 fOutput->SetOwner(); 
 //
 // various histos
 //
 TH1D *hNumberMuonTracks = new TH1D("hNumberMuonTracks","hNumberMuonTracks;N_{#mu tracks}",10,0.,10.);
 //
 // dimuon histos
 //
 TH1D *hMassDimu   = new TH1D("hMassDimu","hMassDimu;M_{#mu#mu} (GeV/c^{2})",180,0,9.);	
 TH1D *hPtDimu  = new TH1D("hPtDimu","hPtDimu;p_{T} (GeV/c)",100,0,20);	
 TH1D *hRapidityDimu  = new TH1D("hRapidityDimu","hRapidityDimu;y",100,-5,-2);	
 TH1D *hCosThetaCSDimu  = new TH1D("hCosThetaCSDimu","hCosThetaCSDimu;cos#theta_{CS}",100,-1.,1.);	
 TH1D *hCosThetaHEDimu  = new TH1D("hCosThetaHEDimu","hCosThetaHEDimu;cos#theta_{HE}",100,-1.,1.);	
 //
 // muon histos
 //
 TH1D *hP  = new TH1D("hP","hP;p (GeV/c)",100,0,500);	
 TH1D *hPt  = new TH1D("hPt","hPt;p_{T} (GeV/c)",100,0,20);	
 TH1D *hRapidity  = new TH1D("hRapidity","hRapidity;y",100,-5,-2);	
	
 fOutput->Add(hNumberMuonTracks); 	
 fOutput->Add(hMassDimu); 	
 fOutput->Add(hPtDimu); 	
 fOutput->Add(hRapidityDimu); 	
 fOutput->Add(hCosThetaCSDimu); 	
 fOutput->Add(hCosThetaHEDimu); 	
 fOutput->Add(hP); 	
 fOutput->Add(hPt); 	
 fOutput->Add(hRapidity); 	
 fOutput->ls(); 
} 

//_________________________________________________
void AliAnalysisTaskMuonDistributions::UserExec(Option_t *)
{
//
// Execute analysis for current event
//
  AliESDEvent *esd=0x0;
  AliAODEvent *aod=0x0;
  
  if(strcmp(fkAnalysisType,"ESD")==0){
    AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*>
        (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
    if ( ! esdH ) {
      AliError("Cannot get input event handler");
      return;    
    }    
    esd = esdH->GetEvent();
  } else if(strcmp(fkAnalysisType,"AOD")==0){
    aod = dynamic_cast<AliAODEvent*> (InputEvent());
    if ( ! aod ) {
      AliError("Cannot get AOD event");
      return;    
    }    
  }
  
  Int_t ntracks=-999;
  if(strcmp(fkAnalysisType,"ESD")==0) ntracks=esd->GetNumberOfMuonTracks();
  else if(strcmp(fkAnalysisType,"AOD")==0) ntracks=aod->GetNumberOfTracks();
  Int_t nmuontracks=0;
  
  for (Int_t j = 0; j<ntracks; j++) {
    Float_t pxmu1=-999; Float_t pymu1=-999; Float_t pzmu1=-999; Float_t ptmu1=-999; Float_t pmu1=-999;
    Float_t emu1=-999; Float_t rapiditymu1=-999;  Float_t chargemu1=-999; 
    if(strcmp(fkAnalysisType,"ESD")==0){ 
      AliESDMuonTrack* mu1 = new AliESDMuonTrack(*(esd->GetMuonTrack(j)));
      if (!mu1->ContainTrackerData()) continue;
      chargemu1 = mu1->Charge();
      pxmu1 = mu1->Px();
      pymu1 = mu1->Py();
      pzmu1 = mu1->Pz();
      emu1 = mu1->E();
      pmu1 = mu1->P();
      ptmu1 = mu1->Pt();
      rapiditymu1 = Rapidity(emu1,pzmu1);
    } else if(strcmp(fkAnalysisType,"AOD")==0){
      AliAODTrack *mu1 = dynamic_cast<AliAODTrack*>(aod->GetTrack(j));
      if(!mu1) AliFatal("Not a standard AOD");
      if(!mu1->IsMuonTrack()) continue;
      chargemu1 = mu1->Charge();
      pxmu1 = mu1->Px();
      pymu1 = mu1->Py();
      pzmu1 = mu1->Pz();
      emu1 = mu1->E();
      pmu1 = mu1->P();
      ptmu1 = mu1->Pt();
      rapiditymu1 = Rapidity(emu1,pzmu1);
    }
    ((TH1D*)(fOutput->FindObject("hP")))->Fill(pmu1);    
    ((TH1D*)(fOutput->FindObject("hPt")))->Fill(ptmu1);    
    ((TH1D*)(fOutput->FindObject("hRapidity")))->Fill(rapiditymu1);	  
    nmuontracks++;
    if(chargemu1<0){
      for (Int_t jj = 0; jj<ntracks; jj++) {
        Float_t pxmu2=-999; Float_t pymu2=-999; Float_t pzmu2=-999;
        Float_t emu2=-999;Float_t chargemu2=-999; 
        if(strcmp(fkAnalysisType,"ESD")==0){ 
          AliESDMuonTrack* mu2 = new AliESDMuonTrack(*(esd->GetMuonTrack(jj)));
          if (!mu2->ContainTrackerData()) continue;
	  chargemu2 = mu2->Charge();
          pxmu2 = mu2->Px();
          pymu2 = mu2->Py();
          pzmu2 = mu2->Pz();
	  emu2 = mu2->E();
        } else if(strcmp(fkAnalysisType,"AOD")==0){
          AliAODTrack *mu2 = dynamic_cast<AliAODTrack*>(aod->GetTrack(jj));
          if(!mu2) AliFatal("Not a standard AOD");
          if(!mu2->IsMuonTrack()) continue; 
	  chargemu2 = mu2->Charge();
          pxmu2 = mu2->Px();
          pymu2 = mu2->Py();
          pzmu2 = mu2->Pz();
	  emu2 = mu2->E();
        }
        if(chargemu2>0){
	  Float_t ptdimu = TMath::Sqrt((pxmu1+pxmu2)*(pxmu1+pxmu2)+(pymu1+pymu2)*(pymu1+pymu2));
 	  Float_t massdimu = InvMass(emu1,pxmu1,pymu1,pzmu1,emu2,pxmu2,pymu2,pzmu2);
 	  Float_t rapiditydimu = Rapidity((emu1+emu2),(pzmu1+pzmu2));
	  Double_t costhetaCSdimu = CostCS((Double_t) pxmu1,(Double_t) pymu1,(Double_t)pzmu1,(Double_t) emu1,(Double_t)chargemu1,(Double_t) pxmu2,(Double_t) pymu2,(Double_t)pzmu2,(Double_t) emu2);
	  Double_t costhetaHEdimu = CostHE((Double_t) pxmu1,(Double_t) pymu1,(Double_t)pzmu1,(Double_t) emu1,(Double_t)chargemu1,(Double_t) pxmu2,(Double_t) pymu2,(Double_t)pzmu2,(Double_t) emu2);
	  ((TH1D*)(fOutput->FindObject("hMassDimu")))->Fill(massdimu);
	  ((TH1D*)(fOutput->FindObject("hPtDimu")))->Fill(ptdimu);	
	  ((TH1D*)(fOutput->FindObject("hRapidityDimu")))->Fill(rapiditydimu);	
	  ((TH1D*)(fOutput->FindObject("hCosThetaCSDimu")))->Fill(costhetaCSdimu);	
	  ((TH1D*)(fOutput->FindObject("hCosThetaHEDimu")))->Fill(costhetaHEdimu);	
        }
        //delete mu2;
      }      // second mu Loop
    }          // mu- Selection
    //delete mu1;
  }        
  ((TH1D*)(fOutput->FindObject("hNumberMuonTracks")))->Fill(nmuontracks); 
  
  PostData(1,fOutput);
  }


//________________________________________________________________________
void AliAnalysisTaskMuonDistributions::Terminate(Option_t *) 
{
//
// Draw histos
//
  gStyle->SetCanvasColor(10);
  gStyle->SetFrameFillColor(10);
  Int_t xmin=20; 
  Int_t ymin=20;
  
  printf("Using beam Energy=%f \n",fBeamEnergy);

  fOutput = static_cast<TList*> (GetOutputData(1));
  TH1D *hNumberMuonTracks = static_cast<TH1D*> (fOutput->FindObject("hNumberMuonTracks"));  
  TH1D *hMassDimu = static_cast<TH1D*> (fOutput->FindObject("hMassDimu"));  
  TH1D *hPtDimu = static_cast<TH1D*> (fOutput->FindObject("hPtDimu"));  
  TH1D *hRapidityDimu = static_cast<TH1D*> (fOutput->FindObject("hRapidityDimu"));  
  TH1D *hCosThetaCSDimu = static_cast<TH1D*> (fOutput->FindObject("hCosThetaCSDimu"));  
  TH1D *hCosThetaHEDimu = static_cast<TH1D*> (fOutput->FindObject("hCosThetaHEDimu"));  
  TH1D *hP = static_cast<TH1D*> (fOutput->FindObject("hP"));  
  TH1D *hPt = static_cast<TH1D*> (fOutput->FindObject("hPt"));  
  TH1D *hRapidity = static_cast<TH1D*> (fOutput->FindObject("hRapidity"));  
  
 
  TCanvas *c0_MuonDistributions = new TCanvas("c0_MuonDistributions","Plots",xmin,ymin,600,600);
  c0_MuonDistributions->Divide(2,2);
  c0_MuonDistributions->cd(1);
  hNumberMuonTracks->SetFillColor(2);
  hNumberMuonTracks->Draw();
  
  xmin+=20; ymin+=20;
  TCanvas *c1_MuonDistributions = new TCanvas("c1_MuonDistributions","Muon kinematic distributions Plots",xmin,ymin,600,600);
  c1_MuonDistributions->Divide(2,2);  
  c1_MuonDistributions->cd(1);
  gPad->SetLogy(1);
  hP->SetLineColor(4);
  hP->Draw();
  c1_MuonDistributions->cd(2);
  gPad->SetLogy(1);
  hPt->SetLineColor(4);
  hPt->Draw();
  c1_MuonDistributions->cd(3);
  hRapidity->SetLineColor(4);
  hRapidity->Draw();
  
  xmin+=20; ymin+=20;
  TCanvas *c2_MuonDistributions = new TCanvas("c2_MuonDistributions","Dimuon kinematic distributions Plots",xmin,ymin,600,600);
  c2_MuonDistributions->Divide(2,2);  
  c2_MuonDistributions->cd(1);
  gPad->SetLogy(1);
  hPtDimu->SetLineColor(2);
  hPtDimu->Draw();
  c2_MuonDistributions->cd(2);
  hRapidityDimu->SetLineColor(2);
  hRapidityDimu->Draw();
  c2_MuonDistributions->cd(3);
  hCosThetaCSDimu->SetLineColor(2);
  hCosThetaCSDimu->Draw();
  c2_MuonDistributions->cd(4);
  hCosThetaHEDimu->SetLineColor(2);
  hCosThetaHEDimu->Draw();
  
  xmin+=20; ymin+=20;
  TCanvas *c3_MuonDistributions = new TCanvas("c3_MuonDistributions","Invariant Mass Plots",xmin,ymin,600,600);
  gPad->SetLogy(1);
  hMassDimu->Draw();  
  if(fInvariantMassFit && hMassDimu->GetEntries()>100) FitInvMass(hMassDimu);
  c3_MuonDistributions->Update();
}

//________________________________________________________________________
Float_t AliAnalysisTaskMuonDistributions::InvMass(Float_t e1, Float_t px1, Float_t py1, Float_t pz1,
				   Float_t e2, Float_t px2, Float_t py2, Float_t pz2) const 
{
//
// invariant mass calculation
//
    Float_t imassrec = TMath::Sqrt((e1+e2)*(e1+e2)-((px1+px2)*(px1+px2)+
                                    (py1+py2)*(py1+py2)+(pz1+pz2)*(pz1+pz2)));
    return imassrec;
}
//________________________________________________________________________
Float_t AliAnalysisTaskMuonDistributions::Rapidity(Float_t e, Float_t pz) const 
{
//
// calculate rapidity
//
    Float_t rap;
    if(TMath::Abs(e-pz)>1e-7){
      rap = 0.5*TMath::Log((e+pz)/(e-pz));
      return rap;
    } else {
      rap = -200;
      return rap;
    }
}
//________________________________________________________________________
Double_t AliAnalysisTaskMuonDistributions::CostCS(Double_t px1, Double_t py1, Double_t pz1, Double_t e1,
Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2)
{
// 
// costCS calculation
//
  TLorentzVector pMu1CM, pMu2CM, pProjCM, pTargCM, pDimuCM; // In the CM. frame
  TLorentzVector pMu1Dimu, pMu2Dimu, pProjDimu, pTargDimu; // In the dimuon rest frame
  TVector3 beta,zaxisCS;
  Double_t mp=0.93827231;
  //
  // --- Fill the Lorentz vector for projectile and target in the CM frame
  //
  pProjCM.SetPxPyPzE(0.,0.,-fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+mp*mp)); 
  pTargCM.SetPxPyPzE(0.,0.,fBeamEnergy,TMath::Sqrt(fBeamEnergy*fBeamEnergy+mp*mp)); 
  //
  // --- Get the muons parameters in the CM frame 
  //
  pMu1CM.SetPxPyPzE(px1,py1,pz1,e1);
  pMu2CM.SetPxPyPzE(px2,py2,pz2,e2);
  //
  // --- Obtain the dimuon parameters in the CM frame
  //
  pDimuCM=pMu1CM+pMu2CM;
  //
  // --- Translate the dimuon parameters in the dimuon rest frame
  //
  beta=(-1./pDimuCM.E())*pDimuCM.Vect();
  pMu1Dimu=pMu1CM;
  pMu2Dimu=pMu2CM;
  pProjDimu=pProjCM;
  pTargDimu=pTargCM;
  pMu1Dimu.Boost(beta);
  pMu2Dimu.Boost(beta);
  pProjDimu.Boost(beta);
  pTargDimu.Boost(beta);
  //
  // --- Determine the z axis for the CS angle 
  //
  zaxisCS=(((pProjDimu.Vect()).Unit())-((pTargDimu.Vect()).Unit())).Unit();
  //				     
  // --- Determine the CS angle (angle between mu+ and the z axis defined above)
  Double_t cost;
  
  if(charge1>0) {cost = zaxisCS.Dot((pMu1Dimu.Vect()).Unit());}
  else {cost = zaxisCS.Dot((pMu2Dimu.Vect()).Unit());}
  return cost;
}

//________________________________________________________________________
Double_t AliAnalysisTaskMuonDistributions::CostHE(Double_t px1, Double_t py1, Double_t pz1, Double_t e1,
Double_t charge1, Double_t px2, Double_t py2, Double_t pz2, Double_t e2)
{
//
// costHE calculation
//
  TLorentzVector pMu1CM, pMu2CM, pDimuCM; // In the CM frame 
  TLorentzVector pMu1Dimu, pMu2Dimu; // In the dimuon rest frame
  TVector3 beta,zaxisCS;
  //
  // --- Get the muons parameters in the CM frame
  //
  pMu1CM.SetPxPyPzE(px1,py1,pz1,e1);
  pMu2CM.SetPxPyPzE(px2,py2,pz2,e2);
  //
  // --- Obtain the dimuon parameters in the CM frame
  //
  pDimuCM=pMu1CM+pMu2CM;
  //
  // --- Translate the muon parameters in the dimuon rest frame
  //
  beta=(-1./pDimuCM.E())*pDimuCM.Vect();
  pMu1Dimu=pMu1CM;
  pMu2Dimu=pMu2CM;
  pMu1Dimu.Boost(beta);
  pMu2Dimu.Boost(beta);
  //
  // --- Determine the z axis for the calculation of the polarization angle (i.e. the direction of the dimuon in the CM system)
  //
  TVector3 zaxis;
  zaxis=(pDimuCM.Vect()).Unit();
  
  // --- Calculation of the polarization angle (angle between mu+ and the z axis defined above)
  Double_t cost;
  if(charge1>0) {cost = zaxis.Dot((pMu1Dimu.Vect()).Unit());} 
  else {cost = zaxis.Dot((pMu2Dimu.Vect()).Unit());} 
  return cost;
}  

//________________________________________________________________________
void AliAnalysisTaskMuonDistributions::FitInvMass(TH1D *histo)
{
//
// Fit to the Invariant Mass Spectrum
//
  TF1 *gaupsi = new TF1("gaupsi","gaus",fPsiFitLimitMin,fPsiFitLimitMax);
  TF1 *gaupsip = new TF1("gaupsip","gaus",fPsiPFitLimitMin,fPsiPFitLimitMax);
  TF1 *ex = new TF1("ex","expo",fBckFitLimitMin,fBckFitLimitMax);    
  TF1 *tot = new TF1("mtot","gaus(0)+expo(3)+gaus(5)",fInvMassFitLimitMin,fInvMassFitLimitMax);
  Double_t par[8];
  Double_t binWidth= histo->GetBinWidth(1);
  gaupsi->SetLineColor(kGreen);
  gaupsi->SetLineWidth(2);
  histo->Fit(gaupsi,"Rl0"); 
  ex->SetLineColor(kBlue);
  ex->SetLineWidth(2);
  histo->Fit(ex,"Rl+");
  gaupsip->SetLineColor(kAzure-9);
  gaupsip->SetLineWidth(2);
  gaupsip->SetParLimits(1,3.6,3.75);
  gaupsip->SetParLimits(2,0.8*gaupsi->GetParameter(2),1.2*gaupsi->GetParameter(2));
  histo->Fit(gaupsip,"Rl0+"); 
  gaupsi->GetParameters(&par[0]);
  ex->GetParameters(&par[3]);
  gaupsip->GetParameters(&par[5]);
  tot->SetParameters(par);   
  tot->SetLineColor(2);
  tot->SetLineWidth(2);
  tot->SetParLimits(6,3.6,3.75);   //limit for the psi(2S) parameters
  tot->SetParLimits(7,0.8*gaupsi->GetParameter(2),1.2*gaupsi->GetParameter(2)); //limit for the psi(2S) parameters
  histo->Fit(tot,"Rl+");
  histo->Draw("e");
  Double_t chi2 = tot->GetChisquare();
  Double_t ndf = tot->GetNDF();
  
  Float_t meanPsi= tot->GetParameter(1);
  Float_t sigPsi= tot->GetParameter(2)*1000.;
  Double_t nPsiFit = TMath::Sqrt(2*3.1415)*tot->GetParameter(0)*tot->GetParameter(2)/binWidth;
  TF1 *psifix = new TF1("psifix","gaus",2.,5.);  
  psifix->SetParameter(0,tot->GetParameter(0));  
  psifix->SetParameter(1,tot->GetParameter(1));  
  psifix->SetParameter(2,tot->GetParameter(2));  
  psifix->SetLineColor(kGreen);
  psifix->Draw("same");
  Double_t nPsi2933 = psifix->Integral(2.9,3.3)/binWidth;
  
  TF1 *exfix = new TF1("exfix","expo",2.,5.);  
  exfix->SetParameter(0,tot->GetParameter(3));  
  exfix->SetParameter(1,tot->GetParameter(4));  
  Double_t nBck = exfix->Integral(2.9,3.3)/binWidth;
  
  Float_t meanPsiP= tot->GetParameter(6);
  Float_t sigPsiP= tot->GetParameter(7)*1000.;
  Double_t nPsiPFit = TMath::Sqrt(2*3.1415)*tot->GetParameter(5)*tot->GetParameter(7)/binWidth;
  TF1 *psipfix = new TF1("psipfix","gaus",3.,5.);  
  psipfix->SetParameter(0,tot->GetParameter(5));  
  psipfix->SetParameter(1,tot->GetParameter(6));  
  psipfix->SetParameter(2,tot->GetParameter(7));  
  psipfix->SetLineColor(kAzure-9);
  psipfix->Draw("same");
  
  printf("\n\n****************************************************************************\n");
  char psitext[100];
  if(nPsiFit<0) nPsiFit = 0;  
  snprintf(psitext,100,"N. J/#psi = %10.0f",nPsiFit);
  printf("\nN. J/psi = %10.0f\n",nPsiFit);
  TLatex *psilatex = new TLatex(4.,0.85*histo->GetMaximum(),psitext);
  psilatex->SetTextColor(2);
  psilatex->SetTextSize(0.03);
  psilatex->SetTextAlign(2);
  psilatex->Draw();
  
  char psi2text[100];
  snprintf(psi2text,100,"J/#psi m=%4.3f GeV   #sigma= %4.2f MeV",meanPsi,sigPsi);
  printf("J/psi m= %4.3f GeV sigma= %4.2f MeV\n",meanPsi,sigPsi);
  TLatex *psi2latex = new TLatex(4.,0.425*histo->GetMaximum(),psi2text);
  psi2latex->SetTextColor(2);
  psi2latex->SetTextSize(0.03);
  psi2latex->SetTextAlign(2);
  psi2latex->Draw();
  
  char sbtext[100];
  snprintf(sbtext,100,"S/B (2.9-3.3)= %4.2f ",nPsi2933/nBck);
  printf("S/B (2.9-3.3)= %4.2f\n",nPsi2933/nBck);
  TLatex *sblatex = new TLatex(4.,0.212*histo->GetMaximum(),sbtext);
  sblatex->SetTextColor(2);
  sblatex->SetTextSize(0.03);
  sblatex->SetTextAlign(2);
  sblatex->Draw();
  
  char psiptext[100];
  if(nPsiPFit<0) nPsiPFit = 0;  
  snprintf(psiptext,100,"N. #psi(2S) = %10.0f",nPsiPFit);
  printf("\npsi(2S) = %10.0f\n",nPsiPFit);
  TLatex *psiplatex = new TLatex(4.,0.106*histo->GetMaximum(),psiptext);
  psiplatex->SetTextColor(2);
  psiplatex->SetTextSize(0.03);
  psiplatex->SetTextAlign(2);
  psiplatex->Draw();
  
  char psip2text[100];
  snprintf(psip2text,100,"#psi(2S) m=%4.3f GeV   #sigma= %4.2f MeV",meanPsiP,sigPsiP);
  printf("psi(2S) m= %4.3f GeV sigma= %4.2f MeV\n",meanPsiP,sigPsiP);
  TLatex *psip2latex = new TLatex(4.,0.053*histo->GetMaximum(),psip2text);
  psip2latex->SetTextColor(2);
  psip2latex->SetTextSize(0.03);
  psip2latex->SetTextAlign(2);
  psip2latex->Draw();
  
  char chi2text[100];
  snprintf(chi2text,100,"#chi^2/ndf = %4.2f ",chi2/ndf);
  printf("chi^2/ndf = %4.2f\n",chi2/ndf);
  TLatex *chi2latex = new TLatex(4.,0.026*histo->GetMaximum(),chi2text);
  chi2latex->SetTextColor(2);
  chi2latex->SetTextSize(0.03);
  chi2latex->SetTextAlign(2);
  chi2latex->Draw();
  printf("\n****************************************************************************\n");
  
}


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