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: AliAnalysisTaskMuonCuts.cxx 47782 2011-02-24 18:37:31Z martinez $ */

/// Task for tuning cuts for single muons in the spectrometer.
/// The output is a list of histograms.
/// Task need to be run in steps:
/// Step 1: find <DCAx> and <DCAy> in MC
/// Step 2: find signal sigma_pDCA in MC
/// Step 3: find <DCAx> and <DCAy> in data
/// Step 4: apply sigma_pDCA cut on simulations and check the
///         resulting kinematic variables
///
/// \author Diego Stocco

#define AliAnalysisTaskMuonCuts_cxx

#include "AliAnalysisTaskMuonCuts.h"

// ROOT includes
#include "TROOT.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TAxis.h"
#include "TCanvas.h"
#include "TLegend.h"
#include "TMath.h"
#include "TObjString.h"
#include "TObjArray.h"
#include "TF1.h"
#include "TStyle.h"
#include "TArrayI.h"
//#include "TMCProcess.h"

// STEER includes
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODMCParticle.h"
#include "AliMCEvent.h"
#include "AliMCParticle.h"
//#include "AliStack.h"
#include "AliESDEvent.h"
#include "AliESDMuonTrack.h"
#include "AliInputEventHandler.h"

#include "AliAnalysisManager.h"

// PWG includes
#include "AliMergeableCollection.h"
#include "AliMuonEventCuts.h"
#include "AliMuonTrackCuts.h"
#include "AliAnalysisMuonUtility.h"


/// \cond CLASSIMP
ClassImp(AliAnalysisTaskMuonCuts) // Class implementation in ROOT context
/// \endcond


//________________________________________________________________________
AliAnalysisTaskMuonCuts::AliAnalysisTaskMuonCuts() :
  AliVAnalysisMuon(),
  fHistoTypeKeys(0x0),
  fThetaAbsKeys(0x0),
  fSigmaCuts(TArrayD())
{
  /// Default ctor.
}

//________________________________________________________________________
AliAnalysisTaskMuonCuts::AliAnalysisTaskMuonCuts(const char *name, const AliMuonTrackCuts& cuts) :
  AliVAnalysisMuon(name, cuts),
  fHistoTypeKeys(0x0),
  fThetaAbsKeys(0x0),
  fSigmaCuts(TArrayD())
{
  //
  /// Constructor.
  //
  TString histoTypeKeys = "hDCAxVsP hDCAyVsP hPdcaVsP hPDCAVsPCheck hDCAVsPCheck hChiProbVsP hSigmaVsPt hSigmaVsEta";
  fHistoTypeKeys = histoTypeKeys.Tokenize(" ");

  TString thetaAbsKeys = "ThetaAbs23 ThetaAbs310";
  fThetaAbsKeys = thetaAbsKeys.Tokenize(" ");

  SetSigmaCuts();
}


//________________________________________________________________________
AliAnalysisTaskMuonCuts::~AliAnalysisTaskMuonCuts()
{
  //
  /// Destructor
  //

  delete fHistoTypeKeys;
  delete fThetaAbsKeys;
}

//___________________________________________________________________________
void AliAnalysisTaskMuonCuts::MyUserCreateOutputObjects()
{
  TH1* histo = 0x0;
  TString histoName = "";
  for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
    for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
      histoName = GetHistoName(kDCAxVsP, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 50, 0., 200., 100, -50., 50.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("DCA_{x} (cm)");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kDCAyVsP, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 50, 0., 200., 100, -50., 50.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("DCA_{y} (cm)");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kPdcaVsP, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 100, 0., 400., 50, 0., 500.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("p#timesDCA (cm #times GeV/c)");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kPDCAVsPCheck, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 100, 0., 800., 100, 0., 5000.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("p#timesDCA (cm #times GeV/c)");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kDCAVsPCheck, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 100, 0., 800., 400, 0., 200.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("DCA (cm)");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kChiProbVsP, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 50, 0., 200., 50, 0., 1.);
      histo->SetXTitle("p (GeV/c)");
      histo->SetYTitle("Chisquare prob.");
      AddObjectToCollection(histo);

      histoName = GetHistoName(kSigmaVsPt, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 100, 0., 100., fSigmaCuts.GetSize(), 0.5, 0.5+(Double_t)fSigmaCuts.GetSize());
      histo->SetXTitle("p_{t} (GeV/c)");
      histo->SetYTitle("#sigma_{p#timesDCA}");
      for ( Int_t ibin=0; ibin<fSigmaCuts.GetSize(); ++ibin ) {
        histo->GetYaxis()->SetBinLabel(ibin+1,Form("%g", fSigmaCuts[ibin]));
      }
      AddObjectToCollection(histo);

      histoName = GetHistoName(kSigmaVsEta, itheta, isrc);
      histo = new TH2F(histoName.Data(), histoName.Data(), 25, -4.5, -2., fSigmaCuts.GetSize(), 0.5, 0.5+(Double_t)fSigmaCuts.GetSize());
      histo->SetXTitle("#eta");
      histo->SetYTitle("#sigma_{p#timesDCA}");
      for ( Int_t ibin=0; ibin<fSigmaCuts.GetSize(); ++ibin ) {
        histo->GetYaxis()->SetBinLabel(ibin+1,Form("%g", fSigmaCuts[ibin]));
      }
      AddObjectToCollection(histo);
    } // loop on track sources
  } // loop on theta abs

  fMuonTrackCuts->Print();

}

//________________________________________________________________________
TString AliAnalysisTaskMuonCuts::GetHistoName(Int_t histoTypeIndex, Int_t thetaAbsIndex, Int_t srcIndex)
{
  /// Get local histogram name
  TString histoName = Form("%s%s%s", fHistoTypeKeys->At(histoTypeIndex)->GetName(), fThetaAbsKeys->At(thetaAbsIndex)->GetName(), fSrcKeys->At(srcIndex)->GetName());

  return histoName;
}

//________________________________________________________________________
void AliAnalysisTaskMuonCuts::ProcessEvent(TString physSel, const TObjArray& selectTrigClasses, TString centrality)
{
  //
  /// Fill histogram
  //

  TString histoName = "";
  AliVParticle* track = 0x0;
  Int_t nTracks = AliAnalysisMuonUtility::GetNTracks(InputEvent());
  for (Int_t itrack = 0; itrack < nTracks; itrack++) {
    track = AliAnalysisMuonUtility::GetTrack(itrack, InputEvent());
    fMuonTrackCuts->CustomParam()->SetNSigmaPdca(1.e10);
    if ( ! fMuonTrackCuts->IsSelected(track) ) continue;

    Double_t thetaAbsEndDeg = AliAnalysisMuonUtility::GetThetaAbsDeg(track);
    Int_t thetaAbsBin = ( thetaAbsEndDeg < 3. ) ? kThetaAbs23 : kThetaAbs310;

    Int_t trackSrc = GetParticleType(track);

    TVector3 dcaAtVz = fMuonTrackCuts->GetCorrectedDCA(track);
    Double_t pTotMean = fMuonTrackCuts->GetAverageMomentum(track);
    Double_t dca = dcaAtVz.Mag();
    Double_t pDca = pTotMean * dca;

    Double_t sigmaPdca = fMuonTrackCuts->IsThetaAbs23(track) ? fMuonTrackCuts->GetMuonTrackCutsParam().GetSigmaPdca23() : fMuonTrackCuts->GetMuonTrackCutsParam().GetSigmaPdca310();
    Double_t chi2 = pDca / sigmaPdca;
    chi2 *= chi2;
    Double_t chiProb = TMath::Prob(chi2, 2);

    Double_t pTot = track->P();
    Double_t pt = track->Pt();
    Double_t eta = track->Eta();

    for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
      TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
      histoName = GetHistoName(kDCAxVsP, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, dcaAtVz.X());

      histoName = GetHistoName(kDCAyVsP, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, dcaAtVz.Y());
  
      histoName = GetHistoName(kPdcaVsP, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, pDca);

      histoName = GetHistoName(kPDCAVsPCheck, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, pDca);

      histoName = GetHistoName(kDCAVsPCheck, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, dca);

      histoName = GetHistoName(kChiProbVsP, thetaAbsBin, trackSrc);
      ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pTot, chiProb);
    } // loop on selected trigger classes

    for ( Int_t isigma=0; isigma<fSigmaCuts.GetSize(); ++isigma) {
      fMuonTrackCuts->CustomParam()->SetNSigmaPdca(fSigmaCuts[isigma]);
      if ( ! fMuonTrackCuts->IsSelected(track) ) continue;
      for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
        TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
        histoName = GetHistoName(kSigmaVsPt, thetaAbsBin, trackSrc);
        ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(pt, isigma+1);
        histoName = GetHistoName(kSigmaVsEta, thetaAbsBin, trackSrc);
        ((TH2*)GetMergeableObject(physSel, trigClassName, centrality, histoName))->Fill(eta, isigma+1);
      } // loop on selected trigger classes 
    } // loop on sigmas
  }
}

//________________________________________________________________________
void AliAnalysisTaskMuonCuts::SetSigmaCuts(Int_t nSigmaCuts, Double_t* sigmaCuts)
{
  /// Set number of sigmas
  if ( ! sigmaCuts || nSigmaCuts < 0 ) {
//     if ( defaultChiSquare ) {
//       Double_t cuts[] = {0.3, 0.1, 0.05, 0.03, 0.01, 0.005, 0.003, 0.001, 0.0005, 0.0003, 0.0001, 0.};
//       Int_t nCuts = sizeof(cuts)/sizeof(cuts[0]);
//       fSigmaCuts.Set(nCuts, cuts);
//     }
//     else {
      Double_t cuts[] = {2., 3., 4., 5., 6., 7., 10., 15., 20., 25., 30., 1.e10};
      Int_t nCuts = sizeof(cuts)/sizeof(cuts[0]);
      fSigmaCuts.Set(nCuts, cuts);
      //    }
  }
  else {
    fSigmaCuts.Set(nSigmaCuts, sigmaCuts);
  }
}

//________________________________________________________________________
void AliAnalysisTaskMuonCuts::Terminate(Option_t *) {
  //
  /// Draw some histogram at the end.
  //

  AliVAnalysisMuon::Terminate("");

  if ( ! fMergeableCollection ) return;

  TString physSel = fTerminateOptions->At(0)->GetName();
  TString trigClassName = fTerminateOptions->At(1)->GetName();
  TString centralityRange = fTerminateOptions->At(2)->GetName();
  TString furtherOpt = fTerminateOptions->At(3)->GetName();
  furtherOpt.ToUpper();

  furtherOpt.ReplaceAll("  ", " ");
  furtherOpt.ReplaceAll(" =", "=");
  furtherOpt.ReplaceAll("= ", "=");
  TObjArray* optArray = furtherOpt.Tokenize(" ");
  Double_t refSigmaCut = 6.;
  for ( Int_t iopt=0; iopt<optArray->GetEntries(); ++iopt ) {
    TString currOpt = optArray->At(iopt)->GetName();
    if ( currOpt.Contains("REFSIGMA") ) {
      currOpt.Remove(0,currOpt.Index("=")+1);
      refSigmaCut = currOpt.Atof();
    }
  }
  delete optArray;
  
  fMuonTrackCuts->Print("param");

  Int_t srcColors[kNtrackSources] = {kBlack, kRed, kSpring, kTeal, kBlue, kViolet, kMagenta, kOrange, kGray};

  TCanvas* can = 0x0;
  Int_t xshift = 100;
  Int_t yshift = 100;
  Int_t igroup1 = -1;
  Int_t igroup2 = 0;

  //////////////
  // Reco DCA //
  //////////////
  igroup1++;
  igroup2 = 0;
  TString histoName = "", currName = "", histoPattern = "", drawOpt = "";
  currName = Form("%s_recoDCA", GetName());
  can = new TCanvas(currName.Data(),"Reco DCA",igroup1*xshift,igroup2*yshift,600,600);
  can->Divide(2,2);
  igroup2++;
  Int_t recoDcaHisto[2] = {kDCAxVsP, kDCAyVsP};
  TString dcaName[2] = {"DCAx", "DCAy"};
  Double_t averageDca[4] = {0., 0.};
  printf("\nAverage reconstructed DCA:\n");
  TF1* fitFuncMeanDca = new TF1("fitFuncMeanDca","gausn",-20.,20.);
  fitFuncMeanDca->SetParNames("Norm", "Mean", "Sigma");
  for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
    for ( Int_t ihisto=0; ihisto<2; ++ihisto ) {
      TH2* histo = 0x0;
      histoPattern = "";
      histoPattern = Form("%s%s*", fHistoTypeKeys->At(recoDcaHisto[ihisto])->GetName(), fThetaAbsKeys->At(itheta)->GetName());
      histo = (TH2*)GetSum(physSel, trigClassName, centralityRange, histoPattern);
      if ( ! histo ) continue;

      TH1* meanDcaVsP = histo->ProjectionX(Form("mean%sVsP_%s", dcaName[ihisto].Data(), fThetaAbsKeys->At(itheta)->GetName()));
      meanDcaVsP->Reset();
      meanDcaVsP->SetTitle(Form("Mean %s vs. p %s", dcaName[ihisto].Data(), fThetaAbsKeys->At(itheta)->GetName()));
      meanDcaVsP->SetYTitle(Form("<%s> (cm)", dcaName[ihisto].Data()));
      meanDcaVsP->SetStats(kFALSE);

      Int_t nPbins = histo->GetXaxis()->GetNbins();
      //Int_t nPadX = (Int_t)TMath::Sqrt(nPbins);
      //Int_t nPadY = nPadX;
      //if ( nPadX * nPadY < nPbins ) nPadX++;
      TCanvas* meanDcaFitCan = 0x0;
      Int_t nPadX = 5;
      Int_t nPadY = 5;
      Int_t ipad = 0;
      Int_t ican = 0;

      for ( Int_t ibin=2; ibin<=nPbins; ++ibin ) {
        currName = Form("hMean%s_%s_%s", dcaName[ihisto].Data(), physSel.Data(), trigClassName.Data());
        Int_t minBin = ( ibin == 0 ) ? 1 : ibin;
        Int_t maxBin = ( ibin == 0 ) ? nPbins : ibin;
        if ( ibin > 0 ) currName += Form("_pBin%i", ibin);
        TH1* projHisto = histo->ProjectionY(currName.Data(), minBin, maxBin, "e");
        projHisto->SetTitle(Form("%s %s %g < p < %g (GeV/c)", dcaName[ihisto].Data(), fThetaAbsKeys->At(itheta)->GetName(), meanDcaVsP->GetXaxis()->GetBinLowEdge(minBin), meanDcaVsP->GetXaxis()->GetBinUpEdge(maxBin)));

        if ( projHisto->GetEntries() == 0 ) continue;
        if ( ipad % (nPadX*nPadY) == 0 ) {
          currName = histo->GetName();
          currName += Form("Fit_can_%i", ican++);
          meanDcaFitCan = new TCanvas(currName.Data(), currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
          meanDcaFitCan->Divide(nPadX,nPadY);
          ipad = 0;
        }
        meanDcaFitCan->cd(++ipad);
        gPad->SetLogy();
        if ( projHisto->Integral() > 50 ) {
          fitFuncMeanDca->SetParameter(0, projHisto->Integral());
          fitFuncMeanDca->SetParameter(1, projHisto->GetMean());
          fitFuncMeanDca->SetParameter(2, projHisto->GetRMS());
          Double_t fitDcaLim = ( ibin == 0 ) ?  40. :  40./((Double_t)ibin);
          fitDcaLim = TMath::Max(5., fitDcaLim);
          projHisto->Fit(fitFuncMeanDca, "RQ", "e", -fitDcaLim, fitDcaLim);
          Double_t chi2 = fitFuncMeanDca->GetChisquare();
          Double_t ndf = fitFuncMeanDca->GetNDF();
          if ( ndf <= 0.) continue;
          if ( chi2 / ndf > 100. ) continue;
          Double_t meanDca = fitFuncMeanDca->GetParameter(1);
          Double_t meanDcaErr = fitFuncMeanDca->GetParError(1);
          meanDcaVsP->SetBinContent(ibin, meanDca);
          meanDcaVsP->SetBinError(ibin, meanDcaErr);
          //if ( ibin == 0 ) printf("%s  meanDca = %g +- %g\n", fThetaAbsKeys->At(itheta)->GetName(),  meanDca, meanDcaErr);
        }
        else projHisto->Draw("e");
      } // loop on momentum bins
      can->cd(2*itheta+ihisto+1);
      //meanDcaVsP->SetLineColor(srcColors[isrc]);
      //meanDcaVsP->SetMarkerColor(srcColors[isrc]);
      //meanDcaVsP->SetMarkerStyle(20+isrc);
      meanDcaVsP->Fit("pol0","Q");
      TF1* trendFit = (TF1*)meanDcaVsP->GetListOfFunctions()->FindObject("pol0");
      if ( trendFit ) {
        averageDca[2*itheta+ihisto] = trendFit->GetParameter(0);
        printf("  %s: mean %s = %g +- %g  (chi2/%i = %g)\n",  fThetaAbsKeys->At(itheta)->GetName(), dcaName[ihisto].Data(), trendFit->GetParameter(0), trendFit->GetParError(0), trendFit->GetNDF(), trendFit->GetChisquare()/((Double_t)trendFit->GetNDF()));
      }
        //drawOpt = "esame";
      //leg->AddEntry(meanDcaVsP, fSrcKeys->At(isrc)->GetName(), "lp");
      //} // loop on src
    //can->cd(itheta+1);
    //leg->Draw("same");

      //can->cd(ipad++);
      //histo->Draw();
      //meanDca[ihisto] = histo->GetMean();
    } // loop on histo type
  } // loop on theta abs

  for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {  
    printf("muonCuts->SetMeanDCA(%g, %g, 0.); // %s\n", averageDca[2*itheta], averageDca[2*itheta+1], fThetaAbsKeys->At(itheta)->GetName());
  }

  //////////////
  // Fit pDCA //
  //////////////
  Double_t nSigmaCut = fMuonTrackCuts->GetMuonTrackCutsParam().GetNSigmaPdca(); //6.;
  Double_t sigmaMeasCut[2] = { fMuonTrackCuts->GetMuonTrackCutsParam().GetSigmaPdca23(), fMuonTrackCuts->GetMuonTrackCutsParam().GetSigmaPdca310()}; //{99., 54.}; //{120., 63.};
  Double_t relPResolution = fMuonTrackCuts->GetMuonTrackCutsParam().GetRelPResolution(); //4.5e-4; //6.e-3;//8.e-4;
  Double_t angleResolution = 535.*fMuonTrackCuts->GetMuonTrackCutsParam().GetSlopeResolution(); //6.e-4;
  Double_t pMinCut = 0.1;
  Double_t pMaxCut =  800.;
  const Int_t kNCutFuncs = 2;
  Int_t nShowFuncs = 1;
  TString cutFormula = "[1]*TMath::Sqrt( ( [0] / ( 1. - [1]*[2]*x / ( 1.+[1]*[2]*x ) ) ) * ( [0] / ( 1. - [1]*[2]*x / ( 1.+[1]*[2]*x ) ) ) + [3]*[3]*x*x)";
  Double_t cutParam[kNCutFuncs][4] = {{sigmaMeasCut[0], nSigmaCut, relPResolution, angleResolution}, {sigmaMeasCut[0], nSigmaCut, 0., 0.32}};
  Int_t cutColor[kNCutFuncs] = {kBlack, kRed};
  igroup1++;
  igroup2 = 0;
  can = new TCanvas("pdcaSigmaFit","Sigma vs P fit",igroup1*xshift,igroup2*yshift,600,600);
  can->Divide(2,1);
  igroup2++;
  TF1* fitFunc = new TF1("fitFunc", "x*gausn", 0., 400.);
  fitFunc->SetParNames("Norm", "Mean", "Sigma");
  gStyle->SetOptFit(1111);
  Double_t xMinFit[2] = {0., 0.};
  Double_t xMaxFit[2] = {260., 150.}; //{320., 150.}; // {360., 180.};
  printf("\nSigma p x DCA:\n");
  Double_t averageSigmaPdca[kNtrackSources*kNthetaAbs] = {0.};
  for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
    TLegend* leg = new TLegend(0.7, 0.7, 0.9, 0.9);
    leg->SetBorderSize(1);
    for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
      histoPattern = GetHistoName(kPdcaVsP, itheta, isrc);
      TH2* histo = (TH2*)GetSum(physSel, trigClassName, centralityRange, histoPattern);
      if ( ! histo ) continue;
      if ( histo->Integral() < 200 ) {
        delete histo;
        continue;
      }

      TH1* sigmaVsP = histo->ProjectionX(Form("sigma%s_%s_%s", fHistoTypeKeys->At(kPdcaVsP)->GetName(), fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName()));
      sigmaVsP->Reset();
      sigmaVsP->SetTitle(Form("#sigma_{p#timesDCA} vs. p %s %s", fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName()));
      sigmaVsP->SetYTitle("#sigma_{p#timesDCA} (cm #times GeV/c)");
      sigmaVsP->SetStats(kFALSE);

      Int_t nPbins = histo->GetXaxis()->GetNbins();
      //Int_t nPadX = (Int_t)TMath::Sqrt(nPbins);
      //Int_t nPadY = nPadX;
      //if ( nPadX * nPadY < nPbins ) nPadX++;
      TCanvas* pdcaFitCan = 0x0;
      Int_t nPadX = 5;
      Int_t nPadY = 5;
      Int_t ipad = 0;
      Int_t ican = 0;

      for ( Int_t ibin=2; ibin<=nPbins; ++ibin ) {
        currName = Form("hPDCA_%s_%s_%s_%s", fSrcKeys->At(isrc)->GetName(), physSel.Data(), trigClassName.Data(), fThetaAbsKeys->At(itheta)->GetName());
        Int_t minBin = ( ibin == 0 ) ? 1 : ibin;
        Int_t maxBin = ( ibin == 0 ) ? nPbins : ibin;
        if ( ibin > 0 ) currName += Form("_pBin%i", ibin);
        TH1* projHisto = histo->ProjectionY(currName.Data(), minBin, maxBin, "e");
        if ( projHisto->GetEntries() == 0 ) continue;
        projHisto->SetTitle(Form("P DCA %s %s %g < p < %g (GeV/c)", fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName(), sigmaVsP->GetXaxis()->GetBinLowEdge(minBin), sigmaVsP->GetXaxis()->GetBinUpEdge(maxBin)));
        if ( ipad % (nPadX*nPadY) == 0 ) {
          currName = histo->GetName();
          currName += Form("Fit_can_%i", ican++);
          pdcaFitCan = new TCanvas(currName.Data(), currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
          pdcaFitCan->Divide(nPadX,nPadY);
          ipad = 0;
        }
        pdcaFitCan->cd(++ipad);
        if ( projHisto->Integral() > 0.) projHisto->Scale(1./projHisto->Integral());
        gPad->SetLogy();
        if ( projHisto->GetEntries() > 50 ) {
          fitFunc->SetParameter(0, projHisto->Integral());
          fitFunc->SetParameter(1, projHisto->GetMean());
          fitFunc->SetParameter(2, projHisto->GetRMS());
          projHisto->Fit(fitFunc, "RQ", "e", xMinFit[itheta], xMaxFit[itheta]);
          Double_t chi2 = fitFunc->GetChisquare();
          Double_t ndf = fitFunc->GetNDF();
          if ( ndf <= 0.) continue;
          if ( chi2 / ndf > 100. ) continue;
          Double_t sigma = TMath::Abs(fitFunc->GetParameter(2));
          Double_t sigmaErr = fitFunc->GetParError(2);
          sigmaVsP->SetBinContent(ibin, sigma);
          sigmaVsP->SetBinError(ibin, sigmaErr);
          //if ( ibin == 0 ) printf("%s %s  sigma = %g +- %g\n", fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName(), sigma, sigmaErr);
        }
        else projHisto->Draw("e");
      } // loop on momentum bins
      can->cd(itheta+1);
      sigmaVsP->SetLineColor(srcColors[isrc]);
      sigmaVsP->SetMarkerColor(srcColors[isrc]);
      sigmaVsP->SetMarkerStyle(20+isrc);
      drawOpt = "e";
      if ( gPad->GetListOfPrimitives()->GetEntries() != 0 ) drawOpt += "same";
      sigmaVsP->Draw(drawOpt.Data());
      sigmaVsP->Fit("pol0","Q",drawOpt.Data());
      TF1* trendFit = (TF1*)sigmaVsP->GetListOfFunctions()->FindObject("pol0");
      if ( trendFit ) {
        averageSigmaPdca[kNtrackSources*itheta+isrc] = trendFit->GetParameter(0);
        printf("  %s %s: Sigma = %g +- %g  (chi2/%i = %g)\n",  fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName(), trendFit->GetParameter(0), trendFit->GetParError(0), trendFit->GetNDF(), trendFit->GetChisquare()/((Double_t)trendFit->GetNDF()));
      }
      leg->AddEntry(sigmaVsP, fSrcKeys->At(isrc)->GetName(), "lp");
    } // loop on src
    can->cd(itheta+1);
    leg->Draw("same");

    for ( Int_t icut=0; icut<nShowFuncs; ++icut ) {
      currName = Form("sigmaCut_%s_%i", fThetaAbsKeys->At(itheta)->GetName(), icut);
      TF1* cutFunction = new TF1(currName.Data(), cutFormula.Data(), pMinCut, pMaxCut);
      cutParam[icut][0] = sigmaMeasCut[itheta];
      cutParam[icut][1] = 1.;
      cutFunction->SetParameters(cutParam[icut]);
      cutFunction->SetLineColor(cutColor[icut]);
      cutFunction->SetLineWidth(2);
      cutFunction->Draw("same");
    }
  } // loop on theta abs

  for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
    printf("muonCuts->SetSigmaPdca(%g, %g); // %s\n", averageSigmaPdca[isrc], averageSigmaPdca[kNtrackSources+isrc], fSrcKeys->At(isrc)->GetName());
  }
  printf("\n");

  igroup2++;
  for ( Int_t icheck=0; icheck<2; icheck++ ) {
    Int_t hDraw = ( icheck == 0 ) ? kPDCAVsPCheck : kDCAVsPCheck;
    for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
      for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
        histoPattern = GetHistoName(hDraw, itheta, isrc);
        TH2* histoCheck = (TH2*)GetSum(physSel, trigClassName, centralityRange, histoPattern);
        if ( ! histoCheck ) continue;
        currName = histoCheck->GetName();
        currName.Append("_plotCut");
        TCanvas* pdcaVsPcan = new TCanvas(currName.Data(), currName.Data(), igroup1*xshift,(igroup2+icheck)*yshift,600,600);
        pdcaVsPcan->SetRightMargin(0.12);
        pdcaVsPcan->SetLogy();
        pdcaVsPcan->SetLogz();
        histoCheck->Draw("COLZ");

        for ( Int_t icut=0; icut<nShowFuncs; ++icut ) {
          currName = histoCheck->GetName();
          currName.Append(Form("_cutFunc%i",icut));
          TString currFormula = cutFormula;
          if ( icheck == 1 ) currFormula.Append("/x");
          TF1* cutFunction = new TF1(currName.Data(),currFormula.Data(), pMinCut, pMaxCut);
          cutParam[icut][0] = sigmaMeasCut[itheta];
          cutParam[icut][1] = nSigmaCut;
          cutFunction->SetParameters(cutParam[icut]);
          cutFunction->SetLineWidth(2);
          cutFunction->SetLineColor(cutColor[icut]);
          cutFunction->Draw("same");
        } // loop on cut functions
      } // loop on src
    } //loop on theta
  } // loop on check


  ///////////////////////////
  // Check Chi square prob //
  ///////////////////////////
  igroup1++;
  igroup2 = 0;
  for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
    for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
      histoPattern = GetHistoName(kChiProbVsP, itheta, isrc);
      TH2* histo = (TH2*)GetSum(physSel, trigClassName, centralityRange, histoPattern);
      if ( ! histo ) continue;

      Int_t nPbins = histo->GetXaxis()->GetNbins();
      //Int_t nPadX = (Int_t)TMath::Sqrt(nPbins);
      //Int_t nPadY = nPadX;
      //if ( nPadX * nPadY < nPbins ) nPadX++;
      TCanvas* chi2probCan = 0x0;
      Int_t nPadX = 5;
      Int_t nPadY = 5;
      Int_t ipad = 0;
      Int_t ican = 0;

      for ( Int_t ibin=0; ibin<=nPbins; ++ibin ) {
        currName = Form("hChiProb_%s_%s_%s_%s", fSrcKeys->At(isrc)->GetName(), physSel.Data(), trigClassName.Data(), fThetaAbsKeys->At(itheta)->GetName());
        Int_t minBin = ( ibin == 0 ) ? 1 : ibin;
        Int_t maxBin = ( ibin == 0 ) ? nPbins : ibin;
        if ( ibin > 0 ) currName += Form("_pBin%i", ibin);
        TH1* projHisto = histo->ProjectionY(currName.Data(), minBin, maxBin);
        projHisto->SetTitle(Form("Chisquare prob %s %s %g < p < %g (GeV/c)", fThetaAbsKeys->At(itheta)->GetName(), fSrcKeys->At(isrc)->GetName(), histo->GetXaxis()->GetBinLowEdge(minBin), histo->GetXaxis()->GetBinUpEdge(maxBin)));
        if ( projHisto->GetEntries() == 0 ) continue;
        if ( ipad % (nPadX*nPadY) == 0 ) {
          currName = histo->GetName();
          currName += Form("Fit_can_%i", ican++);
          chi2probCan = new TCanvas(currName.Data(), currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
          chi2probCan->Divide(nPadX,nPadY);
          ipad = 0;
        }
        chi2probCan->cd(++ipad);
        gPad->SetLogy();
        projHisto->Draw("e");
      } // loop on momentum bins
    } // loop on src
  } // loop on theta abs


  //////////////////////
  // Check sigma cuts //
  //////////////////////
  printf("\nReference sigma cut %g\n", refSigmaCut);

  Float_t fracOfHeight = 0.35;
  Float_t rightMargin = 0.03;
  Int_t cutColors[14] = {kBlack, kRed, kBlue, kGreen, kCyan, kMagenta, kOrange, kViolet, kSpring, kGray, kSpring, kAzure, kPink, kYellow};
  TArrayI orderCuts;
  Int_t checkHistos[2] = {kSigmaVsPt, kSigmaVsEta};
  Bool_t useCustomSigma = furtherOpt.Contains("CUSTOMSIGMA");

  igroup1++;
  igroup2 = 0;

  for ( Int_t ihisto=0; ihisto<2; ++ihisto ) {
    for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
      can = 0x0;
      for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
        histoPattern = GetHistoName(checkHistos[ihisto], itheta, isrc);
        TH2* histo = (TH2*)GetSum(physSel, trigClassName, centralityRange, histoPattern);
        if ( ! histo ) continue;
        if ( histo->Integral() == 0. ) {
          delete histo;
          continue;
        }
        if ( orderCuts.GetSize() == 0 ) {
          // Re-order axis
          TAxis* axis = histo->GetYaxis();
          Int_t nSigmaCuts = ( useCustomSigma ) ? fSigmaCuts.GetSize() : axis->GetNbins();
          orderCuts.Set(nSigmaCuts);
          Int_t countBin = 0;
          for ( Int_t isigma=0; isigma<axis->GetNbins(); ++isigma ) {
            TString currLabel = axis->GetBinLabel(isigma+1);
            Double_t currSigma = currLabel.Atof();
            if ( useCustomSigma ) {
              Bool_t foundMatch = kFALSE;
              for ( Int_t jsigma=0; jsigma<fSigmaCuts.GetSize(); ++jsigma ) {
                if ( TMath::Abs(currSigma - fSigmaCuts[jsigma]) < 1e-4 ) {
                  foundMatch = kTRUE;
                  break;
                }
              }
              if ( ! foundMatch ) continue; 
            }
            Int_t currBin = ( TMath::Abs(currSigma - refSigmaCut) < 1e-4) ? 0 : ++countBin;
            orderCuts[currBin] = isigma+1;
          }
        }
        currName = histo->GetName();
        currName.Append("_can");
        can = new TCanvas(currName.Data(), currName.Data(), igroup1*xshift,igroup2*yshift, 600, 600);
        TLegend* leg = new TLegend(0.6,0.6,0.9,0.9);
        leg->SetBorderSize(1);
        can->Divide(1,2,0,0);
        can->cd(1);
        gPad->SetPad(0., fracOfHeight, 0.99, 0.99);
        //gPad->SetTopMargin(0.08);
        gPad->SetTopMargin(0.03);
        gPad->SetRightMargin(rightMargin);
        gPad->SetLogy();

        can->cd(2);
        gPad->SetPad(0., 0., 0.99, fracOfHeight);
        gPad->SetRightMargin(rightMargin);
        gPad->SetBottomMargin(0.08/fracOfHeight);

        TH1* refCutHisto = 0x0;
        TString legTitle = "";
        for ( Int_t isigma=0; isigma<orderCuts.GetSize(); ++isigma ) {
          currName = histo->GetName();
          currName.Append(Form("_sigma%i", isigma));
          Int_t currBin = orderCuts[isigma];
          TH1* projectHisto = histo->ProjectionX(currName.Data(), currBin, currBin);
          projectHisto->SetLineColor(cutColors[isigma]);
          projectHisto->SetMarkerColor(cutColors[isigma]);
          projectHisto->SetMarkerStyle(20+isigma);
          projectHisto->SetStats(kFALSE);
          projectHisto->SetTitle("");
          can->cd(1);
          drawOpt = "e";
          if ( gPad->GetListOfPrimitives()->GetEntries() != 0 ) drawOpt += "same";
          projectHisto->Draw(drawOpt.Data());
          TString currLabel = histo->GetYaxis()->GetBinLabel(currBin);
          TString cutName = ( TMath::Abs(currLabel.Atof() ) > 1000. ) ? "Total" :  Form("%s #sigma cut", currLabel.Data());
          leg->AddEntry(projectHisto, cutName.Data(), "lp");
          if ( ! refCutHisto ) {
            refCutHisto = projectHisto;
            legTitle = Form("(pass n #sigma) / (pass %s #sigma)", currLabel.Data());
            continue;
          }
          currName.Append("_ratio");
          TH1* histoRatio = (TH1*)projectHisto->Clone(currName.Data());
          histoRatio->Sumw2();
          TH1* auxNum = projectHisto;
          TH1* auxDen = refCutHisto;
          Bool_t mustInvert = kFALSE;
          if ( auxNum->Integral()>auxDen->Integral() ) {
            auxNum = refCutHisto;
            auxDen = projectHisto;
            mustInvert = kTRUE;
          }
          histoRatio->Divide(auxNum,auxDen,1.,1.,"B");
          if ( mustInvert ) {
            TH1* auxHistoOne = static_cast<TH1*>(histoRatio->Clone("auxHistoOne"));
            for ( Int_t ibin=1; ibin<=auxHistoOne->GetXaxis()->GetNbins(); ibin++ ) {
              auxHistoOne->SetBinContent(ibin,1.);
              auxHistoOne->SetBinError(ibin,0.);
            }
            histoRatio->Divide(auxHistoOne,histoRatio);
            delete auxHistoOne;
          }
          histoRatio->SetTitle("");
          histoRatio->GetYaxis()->SetTitle(legTitle.Data());
          histoRatio->GetXaxis()->SetLabelSize(0.04/fracOfHeight);
          histoRatio->GetXaxis()->SetTitleSize(0.035/fracOfHeight);
          histoRatio->GetYaxis()->SetLabelSize(0.03/fracOfHeight);
          histoRatio->GetYaxis()->SetTitleSize(0.03/fracOfHeight);
          histoRatio->GetXaxis()->SetTitleOffset(1.);
          histoRatio->GetYaxis()->SetTitleOffset(0.6);
          histoRatio->GetYaxis()->SetRangeUser(0.5,1.5);

          can->cd(2);
          drawOpt = "e";
          if ( gPad->GetListOfPrimitives()->GetEntries() != 0 ) drawOpt += "same";
          histoRatio->Draw(drawOpt.Data());
        }// loop on sigma cuts
        can->cd(1);
        leg->Draw("same");
      } // loop on theta abs
    } // loop on src
  } // loop on histo type

  igroup1++;
  igroup2=0;
  Double_t ptMin[] = {0., 2., 4., 15., 60.};
  Int_t nPtMins = sizeof(ptMin)/sizeof(ptMin[0]);
  for ( Int_t iptmin=0; iptmin<nPtMins; ++iptmin) {
    for ( Int_t isrc=0; isrc<kNtrackSources; ++isrc ) {
      can = 0x0;
      for ( Int_t itheta=0; itheta<kNthetaAbs; ++itheta ) {
        TLegend* leg = 0x0;
        histoName = GetHistoName(kSigmaVsPt, itheta, isrc);
        for ( Int_t icent=1; icent<=GetCentralityClasses()->GetNbins(); ++icent ) {
          TH2* histo = (TH2*)GetSum(physSel, trigClassName, GetCentralityClasses()->GetBinLabel(icent), histoName);
          if ( ! histo ) continue;
          Int_t ptMinBin = histo->GetXaxis()->FindBin(ptMin[iptmin]);
          Int_t ptMaxBin = histo->GetXaxis()->GetNbins()+1;
          currName = histo->GetName();
          currName += Form("_%s_ptMin%i", GetCentralityClasses()->GetBinLabel(icent), TMath::Nint(ptMin[iptmin]));
          TH1* projectHisto = histo->ProjectionY(currName.Data(), ptMinBin, ptMaxBin);
          if ( projectHisto->GetMaximum() < 50. ) {
            delete projectHisto;
            continue;
          }
          if ( ! can ) {
            currName = Form("CutEffect_%s_ptMin%i", fSrcKeys->At(isrc)->GetName(), TMath::Nint(ptMin[iptmin]));
            can = new TCanvas(currName.Data(), currName.Data(), igroup1*xshift,igroup2*yshift, 600, 600);
            can->Divide(2,1);
          }
          if ( ! leg ) {
            leg = new TLegend(0.6,0.6,0.9,0.9);
            leg->SetBorderSize(1);
          }
          can->cd(itheta+1);
          projectHisto->SetTitle(Form("Cut effect %s %s %g < p_{t} < %g (GeV/c)", fSrcKeys->At(isrc)->GetName(), fThetaAbsKeys->At(itheta)->GetName(), histo->GetXaxis()->GetBinLowEdge(ptMinBin), histo->GetXaxis()->GetBinUpEdge(ptMaxBin)));
          projectHisto->SetLineColor(cutColors[icent-1]);
          projectHisto->SetMarkerColor(cutColors[icent-1]);
          projectHisto->SetMarkerStyle(19+icent);
          projectHisto->SetStats(0);
          drawOpt = "e";
          if ( gPad->GetListOfPrimitives()->GetEntries() != 0 ) drawOpt += "same";
          projectHisto->Draw(drawOpt.Data());
          leg->AddEntry(projectHisto, GetCentralityClasses()->GetBinLabel(icent), "lp");
          Double_t keptEvents = projectHisto->GetBinContent(orderCuts[0]);
          Double_t totalEvents = projectHisto->GetBinContent(orderCuts[orderCuts.GetSize()-1]);
          Double_t accepted = ( totalEvents > 0. ) ? keptEvents / totalEvents : 1.;
          Double_t acceptedErr = ( totalEvents > 0. ) ? TMath::Sqrt(accepted*(1.-accepted)/totalEvents) : 1.;
          printf("%12s %11s %6s (pt>%g) rejected evts : %6.2f +- %6.3f %%\n", fSrcKeys->At(isrc)->GetName(), fThetaAbsKeys->At(itheta)->GetName(), GetCentralityClasses()->GetBinLabel(icent), ptMin[iptmin], (1.-accepted)*100., acceptedErr*100.);
          //printf("  rejected %g  total %g   (%s vs %s)\n",totalEvents-keptEvents,totalEvents,projectHisto->GetXaxis()->GetBinLabel(orderCuts[0]),projectHisto->GetXaxis()->GetBinLabel(orderCuts[orderCuts.GetSize()-1]));
        } // loop on centrality
        if ( leg ) leg->Draw("same");
      } // loop on theta abs
    } // loop on sources
  } // loop on pt min
}
 AliAnalysisTaskMuonCuts.cxx:1
 AliAnalysisTaskMuonCuts.cxx:2
 AliAnalysisTaskMuonCuts.cxx:3
 AliAnalysisTaskMuonCuts.cxx:4
 AliAnalysisTaskMuonCuts.cxx:5
 AliAnalysisTaskMuonCuts.cxx:6
 AliAnalysisTaskMuonCuts.cxx:7
 AliAnalysisTaskMuonCuts.cxx:8
 AliAnalysisTaskMuonCuts.cxx:9
 AliAnalysisTaskMuonCuts.cxx:10
 AliAnalysisTaskMuonCuts.cxx:11
 AliAnalysisTaskMuonCuts.cxx:12
 AliAnalysisTaskMuonCuts.cxx:13
 AliAnalysisTaskMuonCuts.cxx:14
 AliAnalysisTaskMuonCuts.cxx:15
 AliAnalysisTaskMuonCuts.cxx:16
 AliAnalysisTaskMuonCuts.cxx:17
 AliAnalysisTaskMuonCuts.cxx:18
 AliAnalysisTaskMuonCuts.cxx:19
 AliAnalysisTaskMuonCuts.cxx:20
 AliAnalysisTaskMuonCuts.cxx:21
 AliAnalysisTaskMuonCuts.cxx:22
 AliAnalysisTaskMuonCuts.cxx:23
 AliAnalysisTaskMuonCuts.cxx:24
 AliAnalysisTaskMuonCuts.cxx:25
 AliAnalysisTaskMuonCuts.cxx:26
 AliAnalysisTaskMuonCuts.cxx:27
 AliAnalysisTaskMuonCuts.cxx:28
 AliAnalysisTaskMuonCuts.cxx:29
 AliAnalysisTaskMuonCuts.cxx:30
 AliAnalysisTaskMuonCuts.cxx:31
 AliAnalysisTaskMuonCuts.cxx:32
 AliAnalysisTaskMuonCuts.cxx:33
 AliAnalysisTaskMuonCuts.cxx:34
 AliAnalysisTaskMuonCuts.cxx:35
 AliAnalysisTaskMuonCuts.cxx:36
 AliAnalysisTaskMuonCuts.cxx:37
 AliAnalysisTaskMuonCuts.cxx:38
 AliAnalysisTaskMuonCuts.cxx:39
 AliAnalysisTaskMuonCuts.cxx:40
 AliAnalysisTaskMuonCuts.cxx:41
 AliAnalysisTaskMuonCuts.cxx:42
 AliAnalysisTaskMuonCuts.cxx:43
 AliAnalysisTaskMuonCuts.cxx:44
 AliAnalysisTaskMuonCuts.cxx:45
 AliAnalysisTaskMuonCuts.cxx:46
 AliAnalysisTaskMuonCuts.cxx:47
 AliAnalysisTaskMuonCuts.cxx:48
 AliAnalysisTaskMuonCuts.cxx:49
 AliAnalysisTaskMuonCuts.cxx:50
 AliAnalysisTaskMuonCuts.cxx:51
 AliAnalysisTaskMuonCuts.cxx:52
 AliAnalysisTaskMuonCuts.cxx:53
 AliAnalysisTaskMuonCuts.cxx:54
 AliAnalysisTaskMuonCuts.cxx:55
 AliAnalysisTaskMuonCuts.cxx:56
 AliAnalysisTaskMuonCuts.cxx:57
 AliAnalysisTaskMuonCuts.cxx:58
 AliAnalysisTaskMuonCuts.cxx:59
 AliAnalysisTaskMuonCuts.cxx:60
 AliAnalysisTaskMuonCuts.cxx:61
 AliAnalysisTaskMuonCuts.cxx:62
 AliAnalysisTaskMuonCuts.cxx:63
 AliAnalysisTaskMuonCuts.cxx:64
 AliAnalysisTaskMuonCuts.cxx:65
 AliAnalysisTaskMuonCuts.cxx:66
 AliAnalysisTaskMuonCuts.cxx:67
 AliAnalysisTaskMuonCuts.cxx:68
 AliAnalysisTaskMuonCuts.cxx:69
 AliAnalysisTaskMuonCuts.cxx:70
 AliAnalysisTaskMuonCuts.cxx:71
 AliAnalysisTaskMuonCuts.cxx:72
 AliAnalysisTaskMuonCuts.cxx:73
 AliAnalysisTaskMuonCuts.cxx:74
 AliAnalysisTaskMuonCuts.cxx:75
 AliAnalysisTaskMuonCuts.cxx:76
 AliAnalysisTaskMuonCuts.cxx:77
 AliAnalysisTaskMuonCuts.cxx:78
 AliAnalysisTaskMuonCuts.cxx:79
 AliAnalysisTaskMuonCuts.cxx:80
 AliAnalysisTaskMuonCuts.cxx:81
 AliAnalysisTaskMuonCuts.cxx:82
 AliAnalysisTaskMuonCuts.cxx:83
 AliAnalysisTaskMuonCuts.cxx:84
 AliAnalysisTaskMuonCuts.cxx:85
 AliAnalysisTaskMuonCuts.cxx:86
 AliAnalysisTaskMuonCuts.cxx:87
 AliAnalysisTaskMuonCuts.cxx:88
 AliAnalysisTaskMuonCuts.cxx:89
 AliAnalysisTaskMuonCuts.cxx:90
 AliAnalysisTaskMuonCuts.cxx:91
 AliAnalysisTaskMuonCuts.cxx:92
 AliAnalysisTaskMuonCuts.cxx:93
 AliAnalysisTaskMuonCuts.cxx:94
 AliAnalysisTaskMuonCuts.cxx:95
 AliAnalysisTaskMuonCuts.cxx:96
 AliAnalysisTaskMuonCuts.cxx:97
 AliAnalysisTaskMuonCuts.cxx:98
 AliAnalysisTaskMuonCuts.cxx:99
 AliAnalysisTaskMuonCuts.cxx:100
 AliAnalysisTaskMuonCuts.cxx:101
 AliAnalysisTaskMuonCuts.cxx:102
 AliAnalysisTaskMuonCuts.cxx:103
 AliAnalysisTaskMuonCuts.cxx:104
 AliAnalysisTaskMuonCuts.cxx:105
 AliAnalysisTaskMuonCuts.cxx:106
 AliAnalysisTaskMuonCuts.cxx:107
 AliAnalysisTaskMuonCuts.cxx:108
 AliAnalysisTaskMuonCuts.cxx:109
 AliAnalysisTaskMuonCuts.cxx:110
 AliAnalysisTaskMuonCuts.cxx:111
 AliAnalysisTaskMuonCuts.cxx:112
 AliAnalysisTaskMuonCuts.cxx:113
 AliAnalysisTaskMuonCuts.cxx:114
 AliAnalysisTaskMuonCuts.cxx:115
 AliAnalysisTaskMuonCuts.cxx:116
 AliAnalysisTaskMuonCuts.cxx:117
 AliAnalysisTaskMuonCuts.cxx:118
 AliAnalysisTaskMuonCuts.cxx:119
 AliAnalysisTaskMuonCuts.cxx:120
 AliAnalysisTaskMuonCuts.cxx:121
 AliAnalysisTaskMuonCuts.cxx:122
 AliAnalysisTaskMuonCuts.cxx:123
 AliAnalysisTaskMuonCuts.cxx:124
 AliAnalysisTaskMuonCuts.cxx:125
 AliAnalysisTaskMuonCuts.cxx:126
 AliAnalysisTaskMuonCuts.cxx:127
 AliAnalysisTaskMuonCuts.cxx:128
 AliAnalysisTaskMuonCuts.cxx:129
 AliAnalysisTaskMuonCuts.cxx:130
 AliAnalysisTaskMuonCuts.cxx:131
 AliAnalysisTaskMuonCuts.cxx:132
 AliAnalysisTaskMuonCuts.cxx:133
 AliAnalysisTaskMuonCuts.cxx:134
 AliAnalysisTaskMuonCuts.cxx:135
 AliAnalysisTaskMuonCuts.cxx:136
 AliAnalysisTaskMuonCuts.cxx:137
 AliAnalysisTaskMuonCuts.cxx:138
 AliAnalysisTaskMuonCuts.cxx:139
 AliAnalysisTaskMuonCuts.cxx:140
 AliAnalysisTaskMuonCuts.cxx:141
 AliAnalysisTaskMuonCuts.cxx:142
 AliAnalysisTaskMuonCuts.cxx:143
 AliAnalysisTaskMuonCuts.cxx:144
 AliAnalysisTaskMuonCuts.cxx:145
 AliAnalysisTaskMuonCuts.cxx:146
 AliAnalysisTaskMuonCuts.cxx:147
 AliAnalysisTaskMuonCuts.cxx:148
 AliAnalysisTaskMuonCuts.cxx:149
 AliAnalysisTaskMuonCuts.cxx:150
 AliAnalysisTaskMuonCuts.cxx:151
 AliAnalysisTaskMuonCuts.cxx:152
 AliAnalysisTaskMuonCuts.cxx:153
 AliAnalysisTaskMuonCuts.cxx:154
 AliAnalysisTaskMuonCuts.cxx:155
 AliAnalysisTaskMuonCuts.cxx:156
 AliAnalysisTaskMuonCuts.cxx:157
 AliAnalysisTaskMuonCuts.cxx:158
 AliAnalysisTaskMuonCuts.cxx:159
 AliAnalysisTaskMuonCuts.cxx:160
 AliAnalysisTaskMuonCuts.cxx:161
 AliAnalysisTaskMuonCuts.cxx:162
 AliAnalysisTaskMuonCuts.cxx:163
 AliAnalysisTaskMuonCuts.cxx:164
 AliAnalysisTaskMuonCuts.cxx:165
 AliAnalysisTaskMuonCuts.cxx:166
 AliAnalysisTaskMuonCuts.cxx:167
 AliAnalysisTaskMuonCuts.cxx:168
 AliAnalysisTaskMuonCuts.cxx:169
 AliAnalysisTaskMuonCuts.cxx:170
 AliAnalysisTaskMuonCuts.cxx:171
 AliAnalysisTaskMuonCuts.cxx:172
 AliAnalysisTaskMuonCuts.cxx:173
 AliAnalysisTaskMuonCuts.cxx:174
 AliAnalysisTaskMuonCuts.cxx:175
 AliAnalysisTaskMuonCuts.cxx:176
 AliAnalysisTaskMuonCuts.cxx:177
 AliAnalysisTaskMuonCuts.cxx:178
 AliAnalysisTaskMuonCuts.cxx:179
 AliAnalysisTaskMuonCuts.cxx:180
 AliAnalysisTaskMuonCuts.cxx:181
 AliAnalysisTaskMuonCuts.cxx:182
 AliAnalysisTaskMuonCuts.cxx:183
 AliAnalysisTaskMuonCuts.cxx:184
 AliAnalysisTaskMuonCuts.cxx:185
 AliAnalysisTaskMuonCuts.cxx:186
 AliAnalysisTaskMuonCuts.cxx:187
 AliAnalysisTaskMuonCuts.cxx:188
 AliAnalysisTaskMuonCuts.cxx:189
 AliAnalysisTaskMuonCuts.cxx:190
 AliAnalysisTaskMuonCuts.cxx:191
 AliAnalysisTaskMuonCuts.cxx:192
 AliAnalysisTaskMuonCuts.cxx:193
 AliAnalysisTaskMuonCuts.cxx:194
 AliAnalysisTaskMuonCuts.cxx:195
 AliAnalysisTaskMuonCuts.cxx:196
 AliAnalysisTaskMuonCuts.cxx:197
 AliAnalysisTaskMuonCuts.cxx:198
 AliAnalysisTaskMuonCuts.cxx:199
 AliAnalysisTaskMuonCuts.cxx:200
 AliAnalysisTaskMuonCuts.cxx:201
 AliAnalysisTaskMuonCuts.cxx:202
 AliAnalysisTaskMuonCuts.cxx:203
 AliAnalysisTaskMuonCuts.cxx:204
 AliAnalysisTaskMuonCuts.cxx:205
 AliAnalysisTaskMuonCuts.cxx:206
 AliAnalysisTaskMuonCuts.cxx:207
 AliAnalysisTaskMuonCuts.cxx:208
 AliAnalysisTaskMuonCuts.cxx:209
 AliAnalysisTaskMuonCuts.cxx:210
 AliAnalysisTaskMuonCuts.cxx:211
 AliAnalysisTaskMuonCuts.cxx:212
 AliAnalysisTaskMuonCuts.cxx:213
 AliAnalysisTaskMuonCuts.cxx:214
 AliAnalysisTaskMuonCuts.cxx:215
 AliAnalysisTaskMuonCuts.cxx:216
 AliAnalysisTaskMuonCuts.cxx:217
 AliAnalysisTaskMuonCuts.cxx:218
 AliAnalysisTaskMuonCuts.cxx:219
 AliAnalysisTaskMuonCuts.cxx:220
 AliAnalysisTaskMuonCuts.cxx:221
 AliAnalysisTaskMuonCuts.cxx:222
 AliAnalysisTaskMuonCuts.cxx:223
 AliAnalysisTaskMuonCuts.cxx:224
 AliAnalysisTaskMuonCuts.cxx:225
 AliAnalysisTaskMuonCuts.cxx:226
 AliAnalysisTaskMuonCuts.cxx:227
 AliAnalysisTaskMuonCuts.cxx:228
 AliAnalysisTaskMuonCuts.cxx:229
 AliAnalysisTaskMuonCuts.cxx:230
 AliAnalysisTaskMuonCuts.cxx:231
 AliAnalysisTaskMuonCuts.cxx:232
 AliAnalysisTaskMuonCuts.cxx:233
 AliAnalysisTaskMuonCuts.cxx:234
 AliAnalysisTaskMuonCuts.cxx:235
 AliAnalysisTaskMuonCuts.cxx:236
 AliAnalysisTaskMuonCuts.cxx:237
 AliAnalysisTaskMuonCuts.cxx:238
 AliAnalysisTaskMuonCuts.cxx:239
 AliAnalysisTaskMuonCuts.cxx:240
 AliAnalysisTaskMuonCuts.cxx:241
 AliAnalysisTaskMuonCuts.cxx:242
 AliAnalysisTaskMuonCuts.cxx:243
 AliAnalysisTaskMuonCuts.cxx:244
 AliAnalysisTaskMuonCuts.cxx:245
 AliAnalysisTaskMuonCuts.cxx:246
 AliAnalysisTaskMuonCuts.cxx:247
 AliAnalysisTaskMuonCuts.cxx:248
 AliAnalysisTaskMuonCuts.cxx:249
 AliAnalysisTaskMuonCuts.cxx:250
 AliAnalysisTaskMuonCuts.cxx:251
 AliAnalysisTaskMuonCuts.cxx:252
 AliAnalysisTaskMuonCuts.cxx:253
 AliAnalysisTaskMuonCuts.cxx:254
 AliAnalysisTaskMuonCuts.cxx:255
 AliAnalysisTaskMuonCuts.cxx:256
 AliAnalysisTaskMuonCuts.cxx:257
 AliAnalysisTaskMuonCuts.cxx:258
 AliAnalysisTaskMuonCuts.cxx:259
 AliAnalysisTaskMuonCuts.cxx:260
 AliAnalysisTaskMuonCuts.cxx:261
 AliAnalysisTaskMuonCuts.cxx:262
 AliAnalysisTaskMuonCuts.cxx:263
 AliAnalysisTaskMuonCuts.cxx:264
 AliAnalysisTaskMuonCuts.cxx:265
 AliAnalysisTaskMuonCuts.cxx:266
 AliAnalysisTaskMuonCuts.cxx:267
 AliAnalysisTaskMuonCuts.cxx:268
 AliAnalysisTaskMuonCuts.cxx:269
 AliAnalysisTaskMuonCuts.cxx:270
 AliAnalysisTaskMuonCuts.cxx:271
 AliAnalysisTaskMuonCuts.cxx:272
 AliAnalysisTaskMuonCuts.cxx:273
 AliAnalysisTaskMuonCuts.cxx:274
 AliAnalysisTaskMuonCuts.cxx:275
 AliAnalysisTaskMuonCuts.cxx:276
 AliAnalysisTaskMuonCuts.cxx:277
 AliAnalysisTaskMuonCuts.cxx:278
 AliAnalysisTaskMuonCuts.cxx:279
 AliAnalysisTaskMuonCuts.cxx:280
 AliAnalysisTaskMuonCuts.cxx:281
 AliAnalysisTaskMuonCuts.cxx:282
 AliAnalysisTaskMuonCuts.cxx:283
 AliAnalysisTaskMuonCuts.cxx:284
 AliAnalysisTaskMuonCuts.cxx:285
 AliAnalysisTaskMuonCuts.cxx:286
 AliAnalysisTaskMuonCuts.cxx:287
 AliAnalysisTaskMuonCuts.cxx:288
 AliAnalysisTaskMuonCuts.cxx:289
 AliAnalysisTaskMuonCuts.cxx:290
 AliAnalysisTaskMuonCuts.cxx:291
 AliAnalysisTaskMuonCuts.cxx:292
 AliAnalysisTaskMuonCuts.cxx:293
 AliAnalysisTaskMuonCuts.cxx:294
 AliAnalysisTaskMuonCuts.cxx:295
 AliAnalysisTaskMuonCuts.cxx:296
 AliAnalysisTaskMuonCuts.cxx:297
 AliAnalysisTaskMuonCuts.cxx:298
 AliAnalysisTaskMuonCuts.cxx:299
 AliAnalysisTaskMuonCuts.cxx:300
 AliAnalysisTaskMuonCuts.cxx:301
 AliAnalysisTaskMuonCuts.cxx:302
 AliAnalysisTaskMuonCuts.cxx:303
 AliAnalysisTaskMuonCuts.cxx:304
 AliAnalysisTaskMuonCuts.cxx:305
 AliAnalysisTaskMuonCuts.cxx:306
 AliAnalysisTaskMuonCuts.cxx:307
 AliAnalysisTaskMuonCuts.cxx:308
 AliAnalysisTaskMuonCuts.cxx:309
 AliAnalysisTaskMuonCuts.cxx:310
 AliAnalysisTaskMuonCuts.cxx:311
 AliAnalysisTaskMuonCuts.cxx:312
 AliAnalysisTaskMuonCuts.cxx:313
 AliAnalysisTaskMuonCuts.cxx:314
 AliAnalysisTaskMuonCuts.cxx:315
 AliAnalysisTaskMuonCuts.cxx:316
 AliAnalysisTaskMuonCuts.cxx:317
 AliAnalysisTaskMuonCuts.cxx:318
 AliAnalysisTaskMuonCuts.cxx:319
 AliAnalysisTaskMuonCuts.cxx:320
 AliAnalysisTaskMuonCuts.cxx:321
 AliAnalysisTaskMuonCuts.cxx:322
 AliAnalysisTaskMuonCuts.cxx:323
 AliAnalysisTaskMuonCuts.cxx:324
 AliAnalysisTaskMuonCuts.cxx:325
 AliAnalysisTaskMuonCuts.cxx:326
 AliAnalysisTaskMuonCuts.cxx:327
 AliAnalysisTaskMuonCuts.cxx:328
 AliAnalysisTaskMuonCuts.cxx:329
 AliAnalysisTaskMuonCuts.cxx:330
 AliAnalysisTaskMuonCuts.cxx:331
 AliAnalysisTaskMuonCuts.cxx:332
 AliAnalysisTaskMuonCuts.cxx:333
 AliAnalysisTaskMuonCuts.cxx:334
 AliAnalysisTaskMuonCuts.cxx:335
 AliAnalysisTaskMuonCuts.cxx:336
 AliAnalysisTaskMuonCuts.cxx:337
 AliAnalysisTaskMuonCuts.cxx:338
 AliAnalysisTaskMuonCuts.cxx:339
 AliAnalysisTaskMuonCuts.cxx:340
 AliAnalysisTaskMuonCuts.cxx:341
 AliAnalysisTaskMuonCuts.cxx:342
 AliAnalysisTaskMuonCuts.cxx:343
 AliAnalysisTaskMuonCuts.cxx:344
 AliAnalysisTaskMuonCuts.cxx:345
 AliAnalysisTaskMuonCuts.cxx:346
 AliAnalysisTaskMuonCuts.cxx:347
 AliAnalysisTaskMuonCuts.cxx:348
 AliAnalysisTaskMuonCuts.cxx:349
 AliAnalysisTaskMuonCuts.cxx:350
 AliAnalysisTaskMuonCuts.cxx:351
 AliAnalysisTaskMuonCuts.cxx:352
 AliAnalysisTaskMuonCuts.cxx:353
 AliAnalysisTaskMuonCuts.cxx:354
 AliAnalysisTaskMuonCuts.cxx:355
 AliAnalysisTaskMuonCuts.cxx:356
 AliAnalysisTaskMuonCuts.cxx:357
 AliAnalysisTaskMuonCuts.cxx:358
 AliAnalysisTaskMuonCuts.cxx:359
 AliAnalysisTaskMuonCuts.cxx:360
 AliAnalysisTaskMuonCuts.cxx:361
 AliAnalysisTaskMuonCuts.cxx:362
 AliAnalysisTaskMuonCuts.cxx:363
 AliAnalysisTaskMuonCuts.cxx:364
 AliAnalysisTaskMuonCuts.cxx:365
 AliAnalysisTaskMuonCuts.cxx:366
 AliAnalysisTaskMuonCuts.cxx:367
 AliAnalysisTaskMuonCuts.cxx:368
 AliAnalysisTaskMuonCuts.cxx:369
 AliAnalysisTaskMuonCuts.cxx:370
 AliAnalysisTaskMuonCuts.cxx:371
 AliAnalysisTaskMuonCuts.cxx:372
 AliAnalysisTaskMuonCuts.cxx:373
 AliAnalysisTaskMuonCuts.cxx:374
 AliAnalysisTaskMuonCuts.cxx:375
 AliAnalysisTaskMuonCuts.cxx:376
 AliAnalysisTaskMuonCuts.cxx:377
 AliAnalysisTaskMuonCuts.cxx:378
 AliAnalysisTaskMuonCuts.cxx:379
 AliAnalysisTaskMuonCuts.cxx:380
 AliAnalysisTaskMuonCuts.cxx:381
 AliAnalysisTaskMuonCuts.cxx:382
 AliAnalysisTaskMuonCuts.cxx:383
 AliAnalysisTaskMuonCuts.cxx:384
 AliAnalysisTaskMuonCuts.cxx:385
 AliAnalysisTaskMuonCuts.cxx:386
 AliAnalysisTaskMuonCuts.cxx:387
 AliAnalysisTaskMuonCuts.cxx:388
 AliAnalysisTaskMuonCuts.cxx:389
 AliAnalysisTaskMuonCuts.cxx:390
 AliAnalysisTaskMuonCuts.cxx:391
 AliAnalysisTaskMuonCuts.cxx:392
 AliAnalysisTaskMuonCuts.cxx:393
 AliAnalysisTaskMuonCuts.cxx:394
 AliAnalysisTaskMuonCuts.cxx:395
 AliAnalysisTaskMuonCuts.cxx:396
 AliAnalysisTaskMuonCuts.cxx:397
 AliAnalysisTaskMuonCuts.cxx:398
 AliAnalysisTaskMuonCuts.cxx:399
 AliAnalysisTaskMuonCuts.cxx:400
 AliAnalysisTaskMuonCuts.cxx:401
 AliAnalysisTaskMuonCuts.cxx:402
 AliAnalysisTaskMuonCuts.cxx:403
 AliAnalysisTaskMuonCuts.cxx:404
 AliAnalysisTaskMuonCuts.cxx:405
 AliAnalysisTaskMuonCuts.cxx:406
 AliAnalysisTaskMuonCuts.cxx:407
 AliAnalysisTaskMuonCuts.cxx:408
 AliAnalysisTaskMuonCuts.cxx:409
 AliAnalysisTaskMuonCuts.cxx:410
 AliAnalysisTaskMuonCuts.cxx:411
 AliAnalysisTaskMuonCuts.cxx:412
 AliAnalysisTaskMuonCuts.cxx:413
 AliAnalysisTaskMuonCuts.cxx:414
 AliAnalysisTaskMuonCuts.cxx:415
 AliAnalysisTaskMuonCuts.cxx:416
 AliAnalysisTaskMuonCuts.cxx:417
 AliAnalysisTaskMuonCuts.cxx:418
 AliAnalysisTaskMuonCuts.cxx:419
 AliAnalysisTaskMuonCuts.cxx:420
 AliAnalysisTaskMuonCuts.cxx:421
 AliAnalysisTaskMuonCuts.cxx:422
 AliAnalysisTaskMuonCuts.cxx:423
 AliAnalysisTaskMuonCuts.cxx:424
 AliAnalysisTaskMuonCuts.cxx:425
 AliAnalysisTaskMuonCuts.cxx:426
 AliAnalysisTaskMuonCuts.cxx:427
 AliAnalysisTaskMuonCuts.cxx:428
 AliAnalysisTaskMuonCuts.cxx:429
 AliAnalysisTaskMuonCuts.cxx:430
 AliAnalysisTaskMuonCuts.cxx:431
 AliAnalysisTaskMuonCuts.cxx:432
 AliAnalysisTaskMuonCuts.cxx:433
 AliAnalysisTaskMuonCuts.cxx:434
 AliAnalysisTaskMuonCuts.cxx:435
 AliAnalysisTaskMuonCuts.cxx:436
 AliAnalysisTaskMuonCuts.cxx:437
 AliAnalysisTaskMuonCuts.cxx:438
 AliAnalysisTaskMuonCuts.cxx:439
 AliAnalysisTaskMuonCuts.cxx:440
 AliAnalysisTaskMuonCuts.cxx:441
 AliAnalysisTaskMuonCuts.cxx:442
 AliAnalysisTaskMuonCuts.cxx:443
 AliAnalysisTaskMuonCuts.cxx:444
 AliAnalysisTaskMuonCuts.cxx:445
 AliAnalysisTaskMuonCuts.cxx:446
 AliAnalysisTaskMuonCuts.cxx:447
 AliAnalysisTaskMuonCuts.cxx:448
 AliAnalysisTaskMuonCuts.cxx:449
 AliAnalysisTaskMuonCuts.cxx:450
 AliAnalysisTaskMuonCuts.cxx:451
 AliAnalysisTaskMuonCuts.cxx:452
 AliAnalysisTaskMuonCuts.cxx:453
 AliAnalysisTaskMuonCuts.cxx:454
 AliAnalysisTaskMuonCuts.cxx:455
 AliAnalysisTaskMuonCuts.cxx:456
 AliAnalysisTaskMuonCuts.cxx:457
 AliAnalysisTaskMuonCuts.cxx:458
 AliAnalysisTaskMuonCuts.cxx:459
 AliAnalysisTaskMuonCuts.cxx:460
 AliAnalysisTaskMuonCuts.cxx:461
 AliAnalysisTaskMuonCuts.cxx:462
 AliAnalysisTaskMuonCuts.cxx:463
 AliAnalysisTaskMuonCuts.cxx:464
 AliAnalysisTaskMuonCuts.cxx:465
 AliAnalysisTaskMuonCuts.cxx:466
 AliAnalysisTaskMuonCuts.cxx:467
 AliAnalysisTaskMuonCuts.cxx:468
 AliAnalysisTaskMuonCuts.cxx:469
 AliAnalysisTaskMuonCuts.cxx:470
 AliAnalysisTaskMuonCuts.cxx:471
 AliAnalysisTaskMuonCuts.cxx:472
 AliAnalysisTaskMuonCuts.cxx:473
 AliAnalysisTaskMuonCuts.cxx:474
 AliAnalysisTaskMuonCuts.cxx:475
 AliAnalysisTaskMuonCuts.cxx:476
 AliAnalysisTaskMuonCuts.cxx:477
 AliAnalysisTaskMuonCuts.cxx:478
 AliAnalysisTaskMuonCuts.cxx:479
 AliAnalysisTaskMuonCuts.cxx:480
 AliAnalysisTaskMuonCuts.cxx:481
 AliAnalysisTaskMuonCuts.cxx:482
 AliAnalysisTaskMuonCuts.cxx:483
 AliAnalysisTaskMuonCuts.cxx:484
 AliAnalysisTaskMuonCuts.cxx:485
 AliAnalysisTaskMuonCuts.cxx:486
 AliAnalysisTaskMuonCuts.cxx:487
 AliAnalysisTaskMuonCuts.cxx:488
 AliAnalysisTaskMuonCuts.cxx:489
 AliAnalysisTaskMuonCuts.cxx:490
 AliAnalysisTaskMuonCuts.cxx:491
 AliAnalysisTaskMuonCuts.cxx:492
 AliAnalysisTaskMuonCuts.cxx:493
 AliAnalysisTaskMuonCuts.cxx:494
 AliAnalysisTaskMuonCuts.cxx:495
 AliAnalysisTaskMuonCuts.cxx:496
 AliAnalysisTaskMuonCuts.cxx:497
 AliAnalysisTaskMuonCuts.cxx:498
 AliAnalysisTaskMuonCuts.cxx:499
 AliAnalysisTaskMuonCuts.cxx:500
 AliAnalysisTaskMuonCuts.cxx:501
 AliAnalysisTaskMuonCuts.cxx:502
 AliAnalysisTaskMuonCuts.cxx:503
 AliAnalysisTaskMuonCuts.cxx:504
 AliAnalysisTaskMuonCuts.cxx:505
 AliAnalysisTaskMuonCuts.cxx:506
 AliAnalysisTaskMuonCuts.cxx:507
 AliAnalysisTaskMuonCuts.cxx:508
 AliAnalysisTaskMuonCuts.cxx:509
 AliAnalysisTaskMuonCuts.cxx:510
 AliAnalysisTaskMuonCuts.cxx:511
 AliAnalysisTaskMuonCuts.cxx:512
 AliAnalysisTaskMuonCuts.cxx:513
 AliAnalysisTaskMuonCuts.cxx:514
 AliAnalysisTaskMuonCuts.cxx:515
 AliAnalysisTaskMuonCuts.cxx:516
 AliAnalysisTaskMuonCuts.cxx:517
 AliAnalysisTaskMuonCuts.cxx:518
 AliAnalysisTaskMuonCuts.cxx:519
 AliAnalysisTaskMuonCuts.cxx:520
 AliAnalysisTaskMuonCuts.cxx:521
 AliAnalysisTaskMuonCuts.cxx:522
 AliAnalysisTaskMuonCuts.cxx:523
 AliAnalysisTaskMuonCuts.cxx:524
 AliAnalysisTaskMuonCuts.cxx:525
 AliAnalysisTaskMuonCuts.cxx:526
 AliAnalysisTaskMuonCuts.cxx:527
 AliAnalysisTaskMuonCuts.cxx:528
 AliAnalysisTaskMuonCuts.cxx:529
 AliAnalysisTaskMuonCuts.cxx:530
 AliAnalysisTaskMuonCuts.cxx:531
 AliAnalysisTaskMuonCuts.cxx:532
 AliAnalysisTaskMuonCuts.cxx:533
 AliAnalysisTaskMuonCuts.cxx:534
 AliAnalysisTaskMuonCuts.cxx:535
 AliAnalysisTaskMuonCuts.cxx:536
 AliAnalysisTaskMuonCuts.cxx:537
 AliAnalysisTaskMuonCuts.cxx:538
 AliAnalysisTaskMuonCuts.cxx:539
 AliAnalysisTaskMuonCuts.cxx:540
 AliAnalysisTaskMuonCuts.cxx:541
 AliAnalysisTaskMuonCuts.cxx:542
 AliAnalysisTaskMuonCuts.cxx:543
 AliAnalysisTaskMuonCuts.cxx:544
 AliAnalysisTaskMuonCuts.cxx:545
 AliAnalysisTaskMuonCuts.cxx:546
 AliAnalysisTaskMuonCuts.cxx:547
 AliAnalysisTaskMuonCuts.cxx:548
 AliAnalysisTaskMuonCuts.cxx:549
 AliAnalysisTaskMuonCuts.cxx:550
 AliAnalysisTaskMuonCuts.cxx:551
 AliAnalysisTaskMuonCuts.cxx:552
 AliAnalysisTaskMuonCuts.cxx:553
 AliAnalysisTaskMuonCuts.cxx:554
 AliAnalysisTaskMuonCuts.cxx:555
 AliAnalysisTaskMuonCuts.cxx:556
 AliAnalysisTaskMuonCuts.cxx:557
 AliAnalysisTaskMuonCuts.cxx:558
 AliAnalysisTaskMuonCuts.cxx:559
 AliAnalysisTaskMuonCuts.cxx:560
 AliAnalysisTaskMuonCuts.cxx:561
 AliAnalysisTaskMuonCuts.cxx:562
 AliAnalysisTaskMuonCuts.cxx:563
 AliAnalysisTaskMuonCuts.cxx:564
 AliAnalysisTaskMuonCuts.cxx:565
 AliAnalysisTaskMuonCuts.cxx:566
 AliAnalysisTaskMuonCuts.cxx:567
 AliAnalysisTaskMuonCuts.cxx:568
 AliAnalysisTaskMuonCuts.cxx:569
 AliAnalysisTaskMuonCuts.cxx:570
 AliAnalysisTaskMuonCuts.cxx:571
 AliAnalysisTaskMuonCuts.cxx:572
 AliAnalysisTaskMuonCuts.cxx:573
 AliAnalysisTaskMuonCuts.cxx:574
 AliAnalysisTaskMuonCuts.cxx:575
 AliAnalysisTaskMuonCuts.cxx:576
 AliAnalysisTaskMuonCuts.cxx:577
 AliAnalysisTaskMuonCuts.cxx:578
 AliAnalysisTaskMuonCuts.cxx:579
 AliAnalysisTaskMuonCuts.cxx:580
 AliAnalysisTaskMuonCuts.cxx:581
 AliAnalysisTaskMuonCuts.cxx:582
 AliAnalysisTaskMuonCuts.cxx:583
 AliAnalysisTaskMuonCuts.cxx:584
 AliAnalysisTaskMuonCuts.cxx:585
 AliAnalysisTaskMuonCuts.cxx:586
 AliAnalysisTaskMuonCuts.cxx:587
 AliAnalysisTaskMuonCuts.cxx:588
 AliAnalysisTaskMuonCuts.cxx:589
 AliAnalysisTaskMuonCuts.cxx:590
 AliAnalysisTaskMuonCuts.cxx:591
 AliAnalysisTaskMuonCuts.cxx:592
 AliAnalysisTaskMuonCuts.cxx:593
 AliAnalysisTaskMuonCuts.cxx:594
 AliAnalysisTaskMuonCuts.cxx:595
 AliAnalysisTaskMuonCuts.cxx:596
 AliAnalysisTaskMuonCuts.cxx:597
 AliAnalysisTaskMuonCuts.cxx:598
 AliAnalysisTaskMuonCuts.cxx:599
 AliAnalysisTaskMuonCuts.cxx:600
 AliAnalysisTaskMuonCuts.cxx:601
 AliAnalysisTaskMuonCuts.cxx:602
 AliAnalysisTaskMuonCuts.cxx:603
 AliAnalysisTaskMuonCuts.cxx:604
 AliAnalysisTaskMuonCuts.cxx:605
 AliAnalysisTaskMuonCuts.cxx:606
 AliAnalysisTaskMuonCuts.cxx:607
 AliAnalysisTaskMuonCuts.cxx:608
 AliAnalysisTaskMuonCuts.cxx:609
 AliAnalysisTaskMuonCuts.cxx:610
 AliAnalysisTaskMuonCuts.cxx:611
 AliAnalysisTaskMuonCuts.cxx:612
 AliAnalysisTaskMuonCuts.cxx:613
 AliAnalysisTaskMuonCuts.cxx:614
 AliAnalysisTaskMuonCuts.cxx:615
 AliAnalysisTaskMuonCuts.cxx:616
 AliAnalysisTaskMuonCuts.cxx:617
 AliAnalysisTaskMuonCuts.cxx:618
 AliAnalysisTaskMuonCuts.cxx:619
 AliAnalysisTaskMuonCuts.cxx:620
 AliAnalysisTaskMuonCuts.cxx:621
 AliAnalysisTaskMuonCuts.cxx:622
 AliAnalysisTaskMuonCuts.cxx:623
 AliAnalysisTaskMuonCuts.cxx:624
 AliAnalysisTaskMuonCuts.cxx:625
 AliAnalysisTaskMuonCuts.cxx:626
 AliAnalysisTaskMuonCuts.cxx:627
 AliAnalysisTaskMuonCuts.cxx:628
 AliAnalysisTaskMuonCuts.cxx:629
 AliAnalysisTaskMuonCuts.cxx:630
 AliAnalysisTaskMuonCuts.cxx:631
 AliAnalysisTaskMuonCuts.cxx:632
 AliAnalysisTaskMuonCuts.cxx:633
 AliAnalysisTaskMuonCuts.cxx:634
 AliAnalysisTaskMuonCuts.cxx:635
 AliAnalysisTaskMuonCuts.cxx:636
 AliAnalysisTaskMuonCuts.cxx:637
 AliAnalysisTaskMuonCuts.cxx:638
 AliAnalysisTaskMuonCuts.cxx:639
 AliAnalysisTaskMuonCuts.cxx:640
 AliAnalysisTaskMuonCuts.cxx:641
 AliAnalysisTaskMuonCuts.cxx:642
 AliAnalysisTaskMuonCuts.cxx:643
 AliAnalysisTaskMuonCuts.cxx:644
 AliAnalysisTaskMuonCuts.cxx:645
 AliAnalysisTaskMuonCuts.cxx:646
 AliAnalysisTaskMuonCuts.cxx:647
 AliAnalysisTaskMuonCuts.cxx:648
 AliAnalysisTaskMuonCuts.cxx:649
 AliAnalysisTaskMuonCuts.cxx:650
 AliAnalysisTaskMuonCuts.cxx:651
 AliAnalysisTaskMuonCuts.cxx:652
 AliAnalysisTaskMuonCuts.cxx:653
 AliAnalysisTaskMuonCuts.cxx:654
 AliAnalysisTaskMuonCuts.cxx:655
 AliAnalysisTaskMuonCuts.cxx:656
 AliAnalysisTaskMuonCuts.cxx:657
 AliAnalysisTaskMuonCuts.cxx:658
 AliAnalysisTaskMuonCuts.cxx:659
 AliAnalysisTaskMuonCuts.cxx:660
 AliAnalysisTaskMuonCuts.cxx:661
 AliAnalysisTaskMuonCuts.cxx:662
 AliAnalysisTaskMuonCuts.cxx:663
 AliAnalysisTaskMuonCuts.cxx:664
 AliAnalysisTaskMuonCuts.cxx:665
 AliAnalysisTaskMuonCuts.cxx:666
 AliAnalysisTaskMuonCuts.cxx:667
 AliAnalysisTaskMuonCuts.cxx:668
 AliAnalysisTaskMuonCuts.cxx:669
 AliAnalysisTaskMuonCuts.cxx:670
 AliAnalysisTaskMuonCuts.cxx:671
 AliAnalysisTaskMuonCuts.cxx:672
 AliAnalysisTaskMuonCuts.cxx:673
 AliAnalysisTaskMuonCuts.cxx:674
 AliAnalysisTaskMuonCuts.cxx:675
 AliAnalysisTaskMuonCuts.cxx:676
 AliAnalysisTaskMuonCuts.cxx:677
 AliAnalysisTaskMuonCuts.cxx:678
 AliAnalysisTaskMuonCuts.cxx:679
 AliAnalysisTaskMuonCuts.cxx:680
 AliAnalysisTaskMuonCuts.cxx:681
 AliAnalysisTaskMuonCuts.cxx:682
 AliAnalysisTaskMuonCuts.cxx:683
 AliAnalysisTaskMuonCuts.cxx:684
 AliAnalysisTaskMuonCuts.cxx:685
 AliAnalysisTaskMuonCuts.cxx:686
 AliAnalysisTaskMuonCuts.cxx:687
 AliAnalysisTaskMuonCuts.cxx:688
 AliAnalysisTaskMuonCuts.cxx:689
 AliAnalysisTaskMuonCuts.cxx:690
 AliAnalysisTaskMuonCuts.cxx:691
 AliAnalysisTaskMuonCuts.cxx:692
 AliAnalysisTaskMuonCuts.cxx:693
 AliAnalysisTaskMuonCuts.cxx:694
 AliAnalysisTaskMuonCuts.cxx:695
 AliAnalysisTaskMuonCuts.cxx:696
 AliAnalysisTaskMuonCuts.cxx:697
 AliAnalysisTaskMuonCuts.cxx:698
 AliAnalysisTaskMuonCuts.cxx:699
 AliAnalysisTaskMuonCuts.cxx:700
 AliAnalysisTaskMuonCuts.cxx:701
 AliAnalysisTaskMuonCuts.cxx:702
 AliAnalysisTaskMuonCuts.cxx:703
 AliAnalysisTaskMuonCuts.cxx:704
 AliAnalysisTaskMuonCuts.cxx:705
 AliAnalysisTaskMuonCuts.cxx:706
 AliAnalysisTaskMuonCuts.cxx:707
 AliAnalysisTaskMuonCuts.cxx:708
 AliAnalysisTaskMuonCuts.cxx:709
 AliAnalysisTaskMuonCuts.cxx:710
 AliAnalysisTaskMuonCuts.cxx:711
 AliAnalysisTaskMuonCuts.cxx:712
 AliAnalysisTaskMuonCuts.cxx:713
 AliAnalysisTaskMuonCuts.cxx:714
 AliAnalysisTaskMuonCuts.cxx:715
 AliAnalysisTaskMuonCuts.cxx:716
 AliAnalysisTaskMuonCuts.cxx:717
 AliAnalysisTaskMuonCuts.cxx:718
 AliAnalysisTaskMuonCuts.cxx:719
 AliAnalysisTaskMuonCuts.cxx:720
 AliAnalysisTaskMuonCuts.cxx:721
 AliAnalysisTaskMuonCuts.cxx:722
 AliAnalysisTaskMuonCuts.cxx:723
 AliAnalysisTaskMuonCuts.cxx:724
 AliAnalysisTaskMuonCuts.cxx:725
 AliAnalysisTaskMuonCuts.cxx:726
 AliAnalysisTaskMuonCuts.cxx:727
 AliAnalysisTaskMuonCuts.cxx:728
 AliAnalysisTaskMuonCuts.cxx:729
 AliAnalysisTaskMuonCuts.cxx:730
 AliAnalysisTaskMuonCuts.cxx:731
 AliAnalysisTaskMuonCuts.cxx:732
 AliAnalysisTaskMuonCuts.cxx:733
 AliAnalysisTaskMuonCuts.cxx:734
 AliAnalysisTaskMuonCuts.cxx:735
 AliAnalysisTaskMuonCuts.cxx:736
 AliAnalysisTaskMuonCuts.cxx:737
 AliAnalysisTaskMuonCuts.cxx:738
 AliAnalysisTaskMuonCuts.cxx:739
 AliAnalysisTaskMuonCuts.cxx:740
 AliAnalysisTaskMuonCuts.cxx:741
 AliAnalysisTaskMuonCuts.cxx:742
 AliAnalysisTaskMuonCuts.cxx:743
 AliAnalysisTaskMuonCuts.cxx:744
 AliAnalysisTaskMuonCuts.cxx:745
 AliAnalysisTaskMuonCuts.cxx:746
 AliAnalysisTaskMuonCuts.cxx:747
 AliAnalysisTaskMuonCuts.cxx:748
 AliAnalysisTaskMuonCuts.cxx:749
 AliAnalysisTaskMuonCuts.cxx:750
 AliAnalysisTaskMuonCuts.cxx:751
 AliAnalysisTaskMuonCuts.cxx:752
 AliAnalysisTaskMuonCuts.cxx:753
 AliAnalysisTaskMuonCuts.cxx:754
 AliAnalysisTaskMuonCuts.cxx:755
 AliAnalysisTaskMuonCuts.cxx:756
 AliAnalysisTaskMuonCuts.cxx:757
 AliAnalysisTaskMuonCuts.cxx:758
 AliAnalysisTaskMuonCuts.cxx:759
 AliAnalysisTaskMuonCuts.cxx:760
 AliAnalysisTaskMuonCuts.cxx:761
 AliAnalysisTaskMuonCuts.cxx:762
 AliAnalysisTaskMuonCuts.cxx:763
 AliAnalysisTaskMuonCuts.cxx:764
 AliAnalysisTaskMuonCuts.cxx:765
 AliAnalysisTaskMuonCuts.cxx:766
 AliAnalysisTaskMuonCuts.cxx:767
 AliAnalysisTaskMuonCuts.cxx:768
 AliAnalysisTaskMuonCuts.cxx:769
 AliAnalysisTaskMuonCuts.cxx:770
 AliAnalysisTaskMuonCuts.cxx:771
 AliAnalysisTaskMuonCuts.cxx:772
 AliAnalysisTaskMuonCuts.cxx:773
 AliAnalysisTaskMuonCuts.cxx:774
 AliAnalysisTaskMuonCuts.cxx:775
 AliAnalysisTaskMuonCuts.cxx:776
 AliAnalysisTaskMuonCuts.cxx:777
 AliAnalysisTaskMuonCuts.cxx:778
 AliAnalysisTaskMuonCuts.cxx:779
 AliAnalysisTaskMuonCuts.cxx:780
 AliAnalysisTaskMuonCuts.cxx:781
 AliAnalysisTaskMuonCuts.cxx:782
 AliAnalysisTaskMuonCuts.cxx:783
 AliAnalysisTaskMuonCuts.cxx:784
 AliAnalysisTaskMuonCuts.cxx:785
 AliAnalysisTaskMuonCuts.cxx:786
 AliAnalysisTaskMuonCuts.cxx:787
 AliAnalysisTaskMuonCuts.cxx:788
 AliAnalysisTaskMuonCuts.cxx:789
 AliAnalysisTaskMuonCuts.cxx:790
 AliAnalysisTaskMuonCuts.cxx:791
 AliAnalysisTaskMuonCuts.cxx:792
 AliAnalysisTaskMuonCuts.cxx:793
 AliAnalysisTaskMuonCuts.cxx:794
 AliAnalysisTaskMuonCuts.cxx:795
 AliAnalysisTaskMuonCuts.cxx:796
 AliAnalysisTaskMuonCuts.cxx:797
 AliAnalysisTaskMuonCuts.cxx:798
 AliAnalysisTaskMuonCuts.cxx:799
 AliAnalysisTaskMuonCuts.cxx:800
 AliAnalysisTaskMuonCuts.cxx:801
 AliAnalysisTaskMuonCuts.cxx:802
 AliAnalysisTaskMuonCuts.cxx:803
 AliAnalysisTaskMuonCuts.cxx:804
 AliAnalysisTaskMuonCuts.cxx:805
 AliAnalysisTaskMuonCuts.cxx:806
 AliAnalysisTaskMuonCuts.cxx:807
 AliAnalysisTaskMuonCuts.cxx:808
 AliAnalysisTaskMuonCuts.cxx:809
 AliAnalysisTaskMuonCuts.cxx:810
 AliAnalysisTaskMuonCuts.cxx:811