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.                  *
 **************************************************************************/

//-----------------------------------------------------------------------------
/// \class AliAnalysisTaskMuonPerformance
/// Analysis task to chek the tracker and trigger reconstruction
/// The output is a list of histograms.
///
/// \author Diego Stocco and Philippe Pillot
//-----------------------------------------------------------------------------

// ROOT includes
#include "TROOT.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "TF1.h"
#include "TLegend.h"
#include "TGraphErrors.h"
#include "TGraphAsymmErrors.h"
#include "TAxis.h"
#include "TObjArray.h"
#include "TCanvas.h"
#include "TMath.h"
#include "TMCProcess.h"
#include "TGeoGlobalMagField.h"
#include "TGeoManager.h"

// STEER includes
#include "AliMCEvent.h"
#include "AliMCParticle.h"
#include "AliMCEventHandler.h"
#include "AliESDEvent.h"
#include "AliESDMuonTrack.h"
#include "AliCDBManager.h"
#include "AliGeomManager.h"

// ANALYSIS includes
#include "AliAnalysisManager.h"
#include "AliAnalysisDataSlot.h"
#include "AliAnalysisDataContainer.h"
#include "AliCentrality.h"

// CORRFW includes
#include "AliCFContainer.h"
#include "AliCFGridSparse.h"
#include "AliCFEffGrid.h"

// MUON includes
#include "AliMUONConstants.h"
#include "AliMUONTrack.h"
#include "AliMUONTriggerTrack.h"
#include "AliMUONLocalTrigger.h"
#include "AliMUONVTrackStore.h"
#include "AliMUONVTriggerTrackStore.h"
#include "AliMUONESDInterface.h"
#include "AliMUONRecoParam.h"
#include "AliMUONCDB.h"
#include "AliMUONTrackExtrap.h"
#include "AliMUONTrackParam.h"
#include "AliMUONRecoCheck.h"
#include "AliMUONVCluster.h"
#include "AliMUONVTrackReconstructor.h"

// MUON mapping includes
#include "AliMpSegmentation.h"
#include "AliMpDEIterator.h"

#include "AliAnalysisTaskMuonPerformance.h"


using std::cout;
using std::endl;
using std::flush;

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


//________________________________________________________________________
AliAnalysisTaskMuonPerformance::AliAnalysisTaskMuonPerformance() :
AliAnalysisTaskSE(),
fDefaultStorage(""),
fAlignOCDBpath(""),
fRecoParamOCDBpath(""),
fNPBins(30),
fCorrectForSystematics(kFALSE),
fFitResiduals(kFALSE),
fEnforceTrkCriteria(kFALSE),
fUseMCKinematics(kFALSE),
fMCTrigLevelFromMatchTrk(kFALSE),
fRequestedStationMask(0),
fRequest2ChInSameSt45(0),
fSigmaCutTrig(-1.),
fNDE(0),
fCFContainer(0x0),
fEfficiencyList(0x0),
fTriggerList(0x0),
fTrackerList(0x0),
fPAtVtxList(0x0),
fSlopeAtVtxList(0x0),
fEtaAtVtxList(0x0),
fPhiAtVtxList(0x0),
fPAt1stClList(0x0),
fSlopeAt1stClList(0x0),
fDCAList(0x0),
fClusterList(0x0)
{
  //
  /// Default Constructor.
  //
  fPRange[0] = 0.;
  fPRange[1] = 0.;
  fClusterMaxRes[0] = 0.;
  fClusterMaxRes[1] = 0.;
  for (Int_t i = 0; i < 1100; i++) fDEIndices[i] = 0;
  for (Int_t i = 0; i < 200; i++) fDEIds[i] = 0;
}


//________________________________________________________________________
AliAnalysisTaskMuonPerformance::AliAnalysisTaskMuonPerformance(const char *name) :
AliAnalysisTaskSE(name),
fDefaultStorage("raw://"),
fAlignOCDBpath(""),
fRecoParamOCDBpath(""),
fNPBins(30),
fCorrectForSystematics(kFALSE),
fFitResiduals(kFALSE),
fEnforceTrkCriteria(kFALSE),
fUseMCKinematics(kFALSE),
fMCTrigLevelFromMatchTrk(kFALSE),
fRequestedStationMask(0),
fRequest2ChInSameSt45(0),
fSigmaCutTrig(-1.),
fNDE(0),
fCFContainer(0x0),
fEfficiencyList(0x0),
fTriggerList(0x0),
fTrackerList(0x0),
fPAtVtxList(0x0),
fSlopeAtVtxList(0x0),
fEtaAtVtxList(0x0),
fPhiAtVtxList(0x0),
fPAt1stClList(0x0),
fSlopeAt1stClList(0x0),
fDCAList(0x0),
fClusterList(0x0)
{
  //
  /// Constructor.
  //
  fPRange[0] = 0.;
  fPRange[1] = 300.;
  fClusterMaxRes[0] = 0.;
  fClusterMaxRes[1] = 0.;
  for (Int_t i = 0; i < 1100; i++) fDEIndices[i] = 0;
  for (Int_t i = 0; i < 200; i++) fDEIds[i] = 0;
  
  DefineOutput(1, AliCFContainer::Class());
  DefineOutput(2, TObjArray::Class());
  DefineOutput(3, TObjArray::Class());
  DefineOutput(4, TObjArray::Class());
  DefineOutput(5, TObjArray::Class());
  DefineOutput(6, TObjArray::Class());
  DefineOutput(7, TObjArray::Class());
  DefineOutput(8, TObjArray::Class());
  DefineOutput(9, TObjArray::Class());
  DefineOutput(10, TObjArray::Class());
  DefineOutput(11, TObjArray::Class());
  DefineOutput(12, TObjArray::Class());
}


//________________________________________________________________________
AliAnalysisTaskMuonPerformance::~AliAnalysisTaskMuonPerformance()
{
  //
  /// Destructor
  //
  if (!AliAnalysisManager::GetAnalysisManager()->IsProofMode()) {
    delete fCFContainer;
    delete fEfficiencyList;
    delete fTriggerList;
    delete fTrackerList;
    delete fPAtVtxList;
    delete fSlopeAtVtxList;
    delete fEtaAtVtxList;
    delete fPhiAtVtxList;
    delete fPAt1stClList;
    delete fSlopeAt1stClList;
    delete fDCAList;
    delete fClusterList;
  }
}


//___________________________________________________________________________
void AliAnalysisTaskMuonPerformance::NotifyRun()
{
  //
  /// Use the event handler information to correctly fill the analysis flags:
  /// - check if Monte Carlo information is present
  //
  
  // load OCDB objects only once
  if (fSigmaCutTrig > 0) return;
  
  // set OCDB location
  AliCDBManager* cdbm = AliCDBManager::Instance();
  if (cdbm->IsDefaultStorageSet()) printf("PerformanceTask: CDB default storage already set!\n");
  else {
    cdbm->SetDefaultStorage(fDefaultStorage.Data());
    if (!fAlignOCDBpath.IsNull()) cdbm->SetSpecificStorage("MUON/Align/Data",fAlignOCDBpath.Data());
    if (!fRecoParamOCDBpath.IsNull()) cdbm->SetSpecificStorage("MUON/Calib/RecoParam",fRecoParamOCDBpath.Data());
  }
  if (cdbm->GetRun() > -1) printf("PerformanceTask: run number already set!\n");
  else cdbm->SetRun(fCurrentRunNumber);
  
  // load magnetic field for track extrapolation
  if (!TGeoGlobalMagField::Instance()->GetField()) {
    if (!AliMUONCDB::LoadField()) return;
  }
  
  // load mapping
  if (!AliMpSegmentation::Instance(kFALSE)) {
    if (!AliMUONCDB::LoadMapping(kTRUE)) return;
  }

  // load geometry for track extrapolation to vertex and for checking hits are under pads in reconstructible tracks
  if (!AliGeomManager::GetGeometry()) {
    AliGeomManager::LoadGeometry();
    if (!AliGeomManager::GetGeometry()) return;  
    if (!AliGeomManager::ApplyAlignObjsFromCDB("MUON")) return;
  }
  
  // load recoParam
  const AliMUONRecoParam* recoParam = (AliMUONESDInterface::GetTracker())
  ? AliMUONESDInterface::GetTracker()->GetRecoParam()
  : AliMUONCDB::LoadRecoParam();
  
  if (!recoParam) {
    fRequestedStationMask = 0;
    fRequest2ChInSameSt45 = kFALSE;
    fSigmaCutTrig = -1.;
    AliError("--> skip this run");
    return;
  }
  
  // compute the mask of requested stations from recoParam
  fRequestedStationMask = 0;
  for (Int_t i = 0; i < 5; i++) if (recoParam->RequestStation(i)) fRequestedStationMask |= ( 1 << i );
  
  // get from recoParam whether a track need 2 chambers hit in the same station (4 or 5) or not to be reconstructible
  fRequest2ChInSameSt45 = !recoParam->MakeMoreTrackCandidates();
  
  // get sigma cut from recoParam to associate trigger track to triggerable track
  fSigmaCutTrig = recoParam->GetSigmaCutForTrigger();
  
  if (!AliMUONESDInterface::GetTracker()) AliMUONESDInterface::ResetTracker(recoParam);
  
  for (Int_t i = 0; i < AliMUONConstants::NTrackingCh(); i++) {
    
    // find the highest chamber resolution and set histogram bins
    if (recoParam->GetDefaultNonBendingReso(i) > fClusterMaxRes[0]) fClusterMaxRes[0] = recoParam->GetDefaultNonBendingReso(i);
    if (recoParam->GetDefaultBendingReso(i) > fClusterMaxRes[1]) fClusterMaxRes[1] = recoParam->GetDefaultBendingReso(i);
    
    // fill correspondence between DEId and indices for histo (starting from 1)
    AliMpDEIterator it;
    it.First(i);
    while (!it.IsDone()) {
      fNDE++;
      fDEIndices[it.CurrentDEId()] = fNDE;
      fDEIds[fNDE] = it.CurrentDEId();
      it.Next();
    }
    
  }
  
  UserCreateOutputObjects();
}


//___________________________________________________________________________
void AliAnalysisTaskMuonPerformance::UserCreateOutputObjects() 
{
  //
  /// Create output objects
  //

  // do it once the OCDB has been loaded (i.e. from NotifyRun())
  if (fSigmaCutTrig < 0) return;
  
  // ------ CFContainer ------
  
  // define axes of particle container
  Int_t nPtBins = 30;
  Double_t ptMin = 0., ptMax = 15.;
  TString ptTitle("p_{t}"), ptUnits("GeV/c");

  Int_t nEtaBins = 15;
  Double_t etaMin = -4., etaMax = -2.5;
  TString etaTitle("#eta"), etaUnits("a.u.");

  Int_t nPhiBins = 15;
  Double_t phiMin = 0.; Double_t phiMax = 2.*TMath::Pi();
  TString phiTitle("#phi"), phiUnits("rad");

  Int_t nThetaAbsEndBins = 4;
  Double_t thetaAbsEndMin = -0.5, thetaAbsEndMax = 3.5;
  TString thetaAbsEndTitle("#theta_{abs}"), thetaAbsEndUnits("a.u.");  

  Int_t nChargeBins = 2;
  Double_t chargeMin = -2, chargeMax = 2.;
  TString chargeTitle("charge"), chargeUnits("e");

  Int_t nHasTrackerBins = 2;
  Double_t hasTrackerMin = -0.5, hasTrackerMax = (Double_t)nHasTrackerBins - 0.5;
  TString hasTrackerTitle("Has tracker"), hasTrackerUnits("");
  
  Int_t nTriggerBins = kNtrigCuts;
  Double_t triggerMin = -0.5, triggerMax = (Double_t)nTriggerBins - 0.5;
  TString triggerTitle("Trigger match"), triggerUnits("");

  Int_t nMotherTypeBins = kNtrackSources;
  Double_t motherTypeMin = -0.5, motherTypeMax = (Double_t)kNtrackSources - 0.5;
  TString motherTypeTitle("motherType"), motherTypeUnits("");

  Int_t nMatchMCBins = kNMatchMC;
  Double_t matchMCMin = -0.5, matchMCMax = (Double_t)kNMatchMC - 0.5;
  TString matchMCTitle("MatchMC"), matchMCUnits("");
  
  Int_t nMCTriggerBins = kNtrigCuts;
  Double_t mcTriggerMin = -0.5, mcTriggerMax = (Double_t)nMCTriggerBins - 0.5;
  TString mcTriggerTitle("MC Trigger match"), mcTriggerUnits("");
  
  Int_t nCentBins = 22;
  Double_t centMin = -5., centMax = 105.;
  TString centTitle("centrality"), centUnits("%");
  
  Int_t nDupliTrgBins = 2;
  Double_t dupliTrgMin = -0.5, dupliTrgMax = 1.5;
  TString dupliTrgTitle("duplicate trigger"), dupliTrgUnits("");
  
  Int_t nbins[kNvars] = {nPtBins, nEtaBins, nPhiBins, nThetaAbsEndBins, nChargeBins, nHasTrackerBins, nTriggerBins, nMotherTypeBins, nMatchMCBins, nMCTriggerBins, nCentBins, nDupliTrgBins};
  Double_t xmin[kNvars] = {ptMin, etaMin, phiMin, thetaAbsEndMin, chargeMin, hasTrackerMin, triggerMin, motherTypeMin, matchMCMin, mcTriggerMin, centMin, dupliTrgMin};
  Double_t xmax[kNvars] = {ptMax, etaMax, phiMax, thetaAbsEndMax, chargeMax, hasTrackerMax, triggerMax, motherTypeMax, matchMCMax, mcTriggerMax, centMax, dupliTrgMax};
  TString axisTitle[kNvars] = {ptTitle, etaTitle, phiTitle, thetaAbsEndTitle, chargeTitle, hasTrackerTitle, triggerTitle, motherTypeTitle, matchMCTitle, mcTriggerTitle, centTitle, dupliTrgTitle};
  TString axisUnits[kNvars] = {ptUnits, etaUnits, phiUnits, thetaAbsEndUnits, chargeUnits, hasTrackerUnits, triggerUnits, motherTypeUnits, matchMCUnits, mcTriggerUnits, centUnits, dupliTrgUnits};
  
  // create particle container
  fCFContainer = new AliCFContainer(GetOutputSlot(1)->GetContainer()->GetName(),"container for tracks",kNsteps,kNvars,nbins);
  
  // set axes title and limits
  for ( Int_t idim = 0; idim<kNvars; idim++) {
    TString histoTitle = Form("%s (%s)", axisTitle[idim].Data(), axisUnits[idim].Data());
    histoTitle.ReplaceAll("()","");
    fCFContainer->SetVarTitle(idim, histoTitle.Data());
    fCFContainer->SetBinLimits(idim, xmin[idim], xmax[idim]);
  }
  
  // define histo names
  TString stepTitle[kNsteps] = {"reconstructed", "generated"};
  
  // define axes labels if any
  TString trigName[kNtrigCuts];
  trigName[kNoMatchTrig] = "NoMatch";
  trigName[kOtherTrig]   = "Other";
  trigName[kAllPtTrig]   = "AllPt";
  trigName[kLowPtTrig]   = "LowPt";
  trigName[kHighPtTrig]  = "HighPt";
  
  TString srcName[kNtrackSources];
  srcName[kCharmMu]     = "Charm";
  srcName[kBeautyMu]    = "Beauty";
  srcName[kPrimaryMu]   = "Decay";
  srcName[kSecondaryMu] = "Secondary";
  srcName[kRecoHadron]  = "Hadrons";
  srcName[kUnknownPart] = "Fakes";
  
  TString mMCName[kNMatchMC];
  mMCName[kNoMatch]     = "NoMatch";
  mMCName[kTrackerOnly] = "TrackerOnly";
  mMCName[kMatchedSame] = "MatchedSame";
  mMCName[kMatchedDiff] = "MatchedDiff";
  mMCName[kTriggerOnly] = "TriggerOnly";
  
  // set histo name and axis labels if any
  for (Int_t istep=0; istep<kNsteps; istep++) {
    
    // histo name
    fCFContainer->SetStepTitle(istep, stepTitle[istep].Data());
    AliCFGridSparse* gridSparse = fCFContainer->GetGrid(istep);
    
    // trigger info
    TAxis* triggerAxis =  gridSparse->GetAxis(kVarTrigger);
    for ( Int_t ibin=0; ibin<kNtrigCuts; ibin++ ) {
      triggerAxis->SetBinLabel(ibin+1,trigName[ibin]);
    }
    
    // mother type
    TAxis* motherTypeAxis = gridSparse->GetAxis(kVarMotherType);
    for ( Int_t ibin=0; ibin<kNtrackSources; ibin++ ) {
      motherTypeAxis->SetBinLabel(ibin+1,srcName[ibin]);
    }
    
    // MC matching flag
    TAxis* matchMCAxis = gridSparse->GetAxis(kVarMatchMC);
    for ( Int_t ibin=0; ibin<kNMatchMC; ibin++ ) {
      matchMCAxis->SetBinLabel(ibin+1,mMCName[ibin]);
    }
    
    // MC trigger info
    TAxis* mcTriggerAxis =  gridSparse->GetAxis(kVarMCTrigger);
    for ( Int_t ibin=0; ibin<kNtrigCuts; ibin++ ) {
      mcTriggerAxis->SetBinLabel(ibin+1,trigName[ibin]);
    }
    
  }
  
  // ------ trigger histograms ------
  
  fTriggerList = new TObjArray(100);
  fTriggerList->SetOwner();
  
  TH1F* h1 = new TH1F("hResTrigX11", "Residual X11;X11_{reco} - X11_{MC} (cm)", 100, -10., 10.);
  fTriggerList->AddAt(h1, kResTrigX11);
  h1 = new TH1F("hResTrigY11", "Residual Y11;Y11_{reco} - Y11_{MC} (cm)", 100, -10., 10.);
  fTriggerList->AddAt(h1, kResTrigY11);
  h1 = new TH1F("hResTrigSlopeY", "Residual slope y;ySlope_{reco} - ySlope_{MC} (rad)", 100, -0.1, 0.1);
  fTriggerList->AddAt(h1, kResTrigSlopeY);
  
  // ------ tracker histograms ------
  
  fTrackerList = new TObjArray(100);
  fTrackerList->SetOwner();
  
  // momentum resolution at vertex
  const Int_t deltaPAtVtxNBins = 250;
  Double_t deltaPAtVtxEdges[2];
  deltaPAtVtxEdges[0] = -20. - 0.05 * fPRange[1];
  deltaPAtVtxEdges[1] =   5. + 0.05 * fPRange[1];
  
  h1 = new TH1F("hResPAtVtx"," delta P at vertex;#Delta_{p} (GeV/c)",deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h1, kResPAtVtx);
  TH2F *h2 = new TH2F("hResPAtVtxVsP","#Delta_{p} at vertex versus p;p (GeV/c);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsP);
  h2 = new TH2F("hResPAtVtxVsPIn23deg","#Delta_{p} at vertex versus p for tracks between 2 and 3 degrees at absorber end;p (GeV/c);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPIn23deg);
  h2 = new TH2F("hResPAtVtxVsPIn310deg","#Delta_{p} at vertex versus p for tracks between 3 and 10 degrees at absorber end;p (GeV/c);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPIn310deg);
  h2 = new TH2F("hResPAtVtxVsPIn02degMC","#Delta_{p} at vertex versus p for tracks with MC angle below 2 degrees;p (GeV/c);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],deltaPAtVtxNBins/10,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPIn02degMC);
  h2 = new TH2F("hResPAtVtxVsPosAbsEndIn02degMC","#Delta_{p} at vertex versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);#Delta_{p} (GeV/c)",1000,0.,100.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPosAbsEndIn02degMC);
  h2 = new TH2F("hResPAtVtxVsPosAbsEndIn23degMC","#Delta_{p} at vertex versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);#Delta_{p} (GeV/c)",1000,0.,100.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPosAbsEndIn23degMC);
  h2 = new TH2F("hResPAtVtxVsPosAbsEndIn310degMC","#Delta_{p} at vertex versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);#Delta_{p} (GeV/c)",1000,0.,100.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsPosAbsEndIn310degMC);
  h2 = new TH2F("hResPAtVtxVsAngleAtAbsEnd","#Delta_{p} at vertex versus track position at absorber end converted to degrees;angle (Deg);#Delta_{p} (GeV/c)",10,0.,10.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsAngleAtAbsEnd);
  h2 = new TH2F("hResPAtVtxVsMCAngle","#Delta_{p} at vertex versus MC angle;MC angle (Deg);#Delta_{p} (GeV/c)",10,0.,10.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPAtVtxVsMCAngle);
  TH3F *h3 = new TH3F("hResPAtVtxVsAngleAtAbsEndVsP","#Delta_{p} at vertex versus track position at absorber end converted to degrees versus momentum;p (GeV/c);angle (Deg);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],100,0.,10.,deltaPAtVtxNBins,deltaPAtVtxEdges[0],deltaPAtVtxEdges[1]);
  fTrackerList->AddAt(h3, kResPAtVtxVsAngleAtAbsEndVsP);
  
  // transverse momentum resolution at vertex
  h2 = new TH2F("hResPtAtVtxVsPt","#Delta_{p_{t}} at vertex versus p_{t};p_{t} (GeV/c);#Delta_{p_{t}} (GeV/c)",2*fNPBins,fPRange[0]/10.,fPRange[1]/10.,deltaPAtVtxNBins,deltaPAtVtxEdges[0]/10.,deltaPAtVtxEdges[1]/10.);
  fTrackerList->AddAt(h2, kResPtAtVtxVsPt);
  
  // momentum resolution at first cluster
  const Int_t deltaPAtFirstClNBins = 500;
  Double_t deltaPAtFirstClEdges[2];
  deltaPAtFirstClEdges[0] = -5. - 0.05 * fPRange[1];
  deltaPAtFirstClEdges[1] =  5. + 0.05 * fPRange[1];
  
  h1 = new TH1F("hResPAt1stCl"," delta P at first cluster;#Delta_{p} (GeV/c)",deltaPAtFirstClNBins,deltaPAtFirstClEdges[0],deltaPAtFirstClEdges[1]);
  fTrackerList->AddAt(h1, kResPAt1stCl);
  h2 = new TH2F("hResPAt1stClVsP","#Delta_{p} at first cluster versus p;p (GeV/c);#Delta_{p} (GeV/c)",2*fNPBins,fPRange[0],fPRange[1],deltaPAtFirstClNBins,deltaPAtFirstClEdges[0],deltaPAtFirstClEdges[1]);
  fTrackerList->AddAt(h2, kResPAt1stClVsP);
  
  // transverse momentum resolution at first cluster
  h2 = new TH2F("hResPtAt1stClVsPt","#Delta_{p_{t}} at first cluster versus p_{t};p_{t} (GeV/c);#Delta_{p_{t}} (GeV/c)",2*fNPBins,fPRange[0]/10.,fPRange[1]/10.,deltaPAtFirstClNBins,deltaPAtFirstClEdges[0]/10.,deltaPAtFirstClEdges[1]/10.);
  fTrackerList->AddAt(h2, kResPtAt1stClVsPt);
  
  // angular resolution at vertex
  const Int_t deltaSlopeAtVtxNBins = 500;
  const Double_t deltaSlopeAtVtxEdges[2] = {-0.05, 0.05};
  
  h1 = new TH1F("hResSlopeXAtVtx","#Delta_{slope_{X}} at vertex;#Delta_{slope_{X}}", deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h1, kResSlopeXAtVtx);
  h1 = new TH1F("hResSlopeYAtVtx","#Delta_{slope_{Y}} at vertex;#Delta_{slope_{Y}}", deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h1, kResSlopeYAtVtx);
  h2 = new TH2F("hResSlopeXAtVtxVsP","#Delta_{slope_{X}} at vertex versus p;p (GeV/c);#Delta_{slope_{X}}",2*fNPBins,fPRange[0],fPRange[1], deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsP);
  h2 = new TH2F("hResSlopeYAtVtxVsP","#Delta_{slope_{Y}} at vertex versus p;p (GeV/c);#Delta_{slope_{Y}}",2*fNPBins,fPRange[0],fPRange[1], deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsP);
  h2 = new TH2F("hResSlopeXAtVtxVsPosAbsEndIn02degMC","#Delta_{slope_{X}} at vertex versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);#Delta_{slope_{X}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsPosAbsEndIn02degMC);
  h2 = new TH2F("hResSlopeYAtVtxVsPosAbsEndIn02degMC","#Delta_{slope_{Y}} at vertex versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);#Delta_{slope_{Y}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsPosAbsEndIn02degMC);
  h2 = new TH2F("hResSlopeXAtVtxVsPosAbsEndIn23degMC","#Delta_{slope_{X}} at vertex versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);#Delta_{slope_{X}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsPosAbsEndIn23degMC);
  h2 = new TH2F("hResSlopeYAtVtxVsPosAbsEndIn23degMC","#Delta_{slope_{Y}} at vertex versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);#Delta_{slope_{Y}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsPosAbsEndIn23degMC);
  h2 = new TH2F("hResSlopeXAtVtxVsPosAbsEndIn310degMC","#Delta_{slope_{X}} at vertex versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);#Delta_{slope_{X}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsPosAbsEndIn310degMC);
  h2 = new TH2F("hResSlopeYAtVtxVsPosAbsEndIn310degMC","#Delta_{slope_{Y}} at vertex versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);#Delta_{slope_{Y}}",1000,0.,100.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsPosAbsEndIn310degMC);
  h2 = new TH2F("hResSlopeXAtVtxVsAngleAtAbsEnd","#Delta_{slope_{X}} at vertex versus track position at absorber end converted to degrees;angle (Deg);#Delta_{slope_{X}}",10,0.,10.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsAngleAtAbsEnd);
  h2 = new TH2F("hResSlopeYAtVtxVsAngleAtAbsEnd","#Delta_{slope_{Y}} at vertex versus track position at absorber end converted to degrees;angle (Deg);#Delta_{slope_{Y}}",10,0.,10.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsAngleAtAbsEnd);
  h2 = new TH2F("hResSlopeXAtVtxVsMCAngle","#Delta_{slope_{X}} at vertex versus MC angle;MC angle (Deg);#Delta_{slope_{X}}",10,0.,10.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAtVtxVsMCAngle);
  h2 = new TH2F("hResSlopeYAtVtxVsMCAngle","#Delta_{slope_{Y}} at vertex versus MC angle;MC angle (Deg);#Delta_{slope_{Y}}",10,0.,10.,deltaSlopeAtVtxNBins, deltaSlopeAtVtxEdges[0], deltaSlopeAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAtVtxVsMCAngle);
  
  // angular resolution at first cluster
  const Int_t deltaSlopeAtFirstClNBins = 500;
  const Double_t deltaSlopeAtFirstClEdges[2] = {-0.01, 0.01};
  
  h1 = new TH1F("hResSlopeXAt1stCl","#Delta_{slope_{X}} at first cluster;#Delta_{slope_{X}}", deltaSlopeAtFirstClNBins, deltaSlopeAtFirstClEdges[0], deltaSlopeAtFirstClEdges[1]);
  fTrackerList->AddAt(h1, kResSlopeXAt1stCl);
  h1 = new TH1F("hResSlopeYAt1stCl","#Delta_{slope_{Y}} at first cluster;#Delta_{slope_{Y}}", deltaSlopeAtFirstClNBins, deltaSlopeAtFirstClEdges[0], deltaSlopeAtFirstClEdges[1]);
  fTrackerList->AddAt(h1, kResSlopeYAt1stCl);
  h2 = new TH2F("hResSlopeXAt1stClVsP","#Delta_{slope_{X}} at first cluster versus p;p (GeV/c);#Delta_{slope_{X}}",2*fNPBins,fPRange[0],fPRange[1], deltaSlopeAtFirstClNBins, deltaSlopeAtFirstClEdges[0], deltaSlopeAtFirstClEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeXAt1stClVsP);
  h2 = new TH2F("hResSlopeYAt1stClVsP","#Delta_{slope_{Y}} at first cluster versus p;p (GeV/c);#Delta_{slope_{Y}}",2*fNPBins,fPRange[0],fPRange[1], deltaSlopeAtFirstClNBins, deltaSlopeAtFirstClEdges[0], deltaSlopeAtFirstClEdges[1]);
  fTrackerList->AddAt(h2, kResSlopeYAt1stClVsP);
  
  // eta resolution at vertex
  const Int_t deltaEtaAtVtxNBins = 500;
  const Double_t deltaEtaAtVtxEdges[2] = {-0.5, 0.5};
  
  h1 = new TH1F("hResEtaAtVtx","#Delta_{eta} at vertex;#Delta_{eta}", deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h1, kResEtaAtVtx);
  h2 = new TH2F("hResEtaAtVtxVsP","#Delta_{eta} at vertex versus p;p (GeV/c);#Delta_{eta}",2*fNPBins,fPRange[0],fPRange[1], deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsP);
  h2 = new TH2F("hResEtaAtVtxVsPosAbsEndIn02degMC","#Delta_{eta} at vertex versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);#Delta_{eta}",1000,0.,100.,deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsPosAbsEndIn02degMC);
  h2 = new TH2F("hResEtaAtVtxVsPosAbsEndIn23degMC","#Delta_{eta} at vertex versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);#Delta_{eta}",1000,0.,100.,deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsPosAbsEndIn23degMC);
  h2 = new TH2F("hResEtaAtVtxVsPosAbsEndIn310degMC","#Delta_{eta} at vertex versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);#Delta_{eta}",1000,0.,100.,deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsPosAbsEndIn310degMC);
  h2 = new TH2F("hResEtaAtVtxVsAngleAtAbsEnd","#Delta_{eta} at vertex versus track position at absorber end converted to degrees;angle (Deg);#Delta_{eta}",10,0.,10.,deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsAngleAtAbsEnd);
  h2 = new TH2F("hResEtaAtVtxVsMCAngle","#Delta_{eta} at vertex versus MC angle;MC angle (Deg);#Delta_{eta}",10,0.,10.,deltaEtaAtVtxNBins, deltaEtaAtVtxEdges[0], deltaEtaAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResEtaAtVtxVsMCAngle);
  
  // phi resolution at vertex
  const Int_t deltaPhiAtVtxNBins = 500;
  const Double_t deltaPhiAtVtxEdges[2] = {-0.5, 0.5};
  
  h1 = new TH1F("hResPhiAtVtx","#Delta_{phi} at vertex;#Delta_{phi}", deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h1, kResPhiAtVtx);
  h2 = new TH2F("hResPhiAtVtxVsP","#Delta_{phi} at vertex versus p;p (GeV/c);#Delta_{phi}",2*fNPBins,fPRange[0],fPRange[1], deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsP);
  h2 = new TH2F("hResPhiAtVtxVsPosAbsEndIn02degMC","#Delta_{phi} at vertex versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);#Delta_{phi}",1000,0.,100.,deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsPosAbsEndIn02degMC);
  h2 = new TH2F("hResPhiAtVtxVsPosAbsEndIn23degMC","#Delta_{phi} at vertex versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);#Delta_{phi}",1000,0.,100.,deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsPosAbsEndIn23degMC);
  h2 = new TH2F("hResPhiAtVtxVsPosAbsEndIn310degMC","#Delta_{phi} at vertex versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);#Delta_{phi}",1000,0.,100.,deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsPosAbsEndIn310degMC);
  h2 = new TH2F("hResPhiAtVtxVsAngleAtAbsEnd","#Delta_{phi} at vertex versus track position at absorber end converted to degrees;angle (Deg);#Delta_{phi}",10,0.,10.,deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsAngleAtAbsEnd);
  h2 = new TH2F("hResPhiAtVtxVsMCAngle","#Delta_{phi} at vertex versus MC angle;MC angle (Deg);#Delta_{phi}",10,0.,10.,deltaPhiAtVtxNBins, deltaPhiAtVtxEdges[0], deltaPhiAtVtxEdges[1]);
  fTrackerList->AddAt(h2, kResPhiAtVtxVsMCAngle);
  
  // DCA resolution
  const Int_t deltaPDCANBins = 500;
  const Double_t deltaPDCAEdges[2] = {0., 1000.};
  const Double_t deltaPMCSAngEdges[2] = {-1.5, 1.5};
  
  h1 = new TH1F("hPDCA","p #times DCA at vertex;p #times DCA (GeV #times cm)", deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h1, kPDCA);
  h2 = new TH2F("hPDCAVsPIn23deg","p #times DCA versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);p #times DCA (GeV #times cm)",2*fNPBins,fPRange[0],fPRange[1], deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsPIn23deg);
  h2 = new TH2F("hPDCAVsPIn310deg","p #times DCA versus p for tracks within [3,10[ degrees at absorber end;p (GeV/c);p #times DCA (GeV #times cm)",2*fNPBins,fPRange[0],fPRange[1], deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsPIn310deg);
  h2 = new TH2F("hPDCAVsPosAbsEndIn02degMC","p #times DCA versus track position at absorber end for tracks with MC angle < 2 degrees;position (cm);p #times DCA (GeV #times cm)",1000,0.,100.,deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsPosAbsEndIn02degMC);
  h2 = new TH2F("hPDCAVsPosAbsEndIn23degMC","p #times DCA}versus track position at absorber end for tracks with MC angle in [2,3[ degrees;position (cm);p #times DCA (GeV #times cm)",1000,0.,100.,deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsPosAbsEndIn23degMC);
  h2 = new TH2F("hPDCAVsPosAbsEndIn310degMC","p #times DCA versus track position at absorber end for tracks with MC angle in [3,10[ degrees;position (cm);p #times DCA (GeV #times cm)",1000,0.,100.,deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsPosAbsEndIn310degMC);
  h2 = new TH2F("hPDCAVsAngleAtAbsEnd","p #times DCA versus track position at absorber end converted to degrees;angle (Deg);p #times DCA (GeV #times cm)",10,0.,10.,deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsAngleAtAbsEnd);
  h2 = new TH2F("hPDCAVsMCAngle","p #times DCA versus MC angle;MC angle (Deg);p #times DCA (GeV #times cm)",10,0.,10.,deltaPDCANBins, deltaPDCAEdges[0], deltaPDCAEdges[1]);
  fTrackerList->AddAt(h2, kPDCAVsMCAngle);
  
  // MCS angular dispersion
  h2 = new TH2F("hPMCSAngVsPIn23deg","p #times #Delta#theta_{MCS} versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);p #times #Delta#theta_{MCS} (GeV)",2*fNPBins,fPRange[0],fPRange[1], deltaPDCANBins, deltaPMCSAngEdges[0], deltaPMCSAngEdges[1]);
  fTrackerList->AddAt(h2, kPMCSAngVsPIn23deg);
  h2 = new TH2F("hPMCSAngVsPIn310deg","p #times #Delta#theta_{MCS} versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);p #times #Delta#theta_{MCS} (GeV)",2*fNPBins,fPRange[0],fPRange[1], deltaPDCANBins, deltaPMCSAngEdges[0], deltaPMCSAngEdges[1]);
  fTrackerList->AddAt(h2, kPMCSAngVsPIn310deg);
  
  // cluster resolution
  Int_t nCh = AliMUONConstants::NTrackingCh();
  const Int_t clusterResNBins = 5000;
  Double_t clusterResMaxX = 10.*fClusterMaxRes[0];
  Double_t clusterResMaxY = 10.*fClusterMaxRes[1];
  
  h2 = new TH2F("hResClXVsCh", "cluster-track residual-X distribution per chamber;chamber ID;#Delta_{X} (cm)", nCh, 0.5, nCh+0.5, clusterResNBins, -clusterResMaxX, clusterResMaxX);
  fTrackerList->AddAt(h2, kResClXVsCh);
  h2 = new TH2F("hResClYVsCh", "cluster-track residual-Y distribution per chamber;chamber ID;#Delta_{Y} (cm)", nCh, 0.5, nCh+0.5, clusterResNBins, -clusterResMaxY, clusterResMaxY);
  fTrackerList->AddAt(h2, kResClYVsCh);
  h2 = new TH2F("hResClXVsDE", "cluster-track residual-X distribution per DE;DE ID;#Delta_{X} (cm)", fNDE, 0.5, fNDE+0.5, clusterResNBins, -clusterResMaxX, clusterResMaxX);
  for (Int_t i = 1; i <= fNDE; i++) h2->GetXaxis()->SetBinLabel(i, Form("%d",fDEIds[i]));
  fTrackerList->AddAt(h2, kResClXVsDE);
  h2 = new TH2F("hResClYVsDE", "cluster-track residual-Y distribution per DE;DE ID;#Delta_{Y} (cm)", fNDE, 0.5, fNDE+0.5, clusterResNBins, -clusterResMaxY, clusterResMaxY);
  for (Int_t i = 1; i <= fNDE; i++) h2->GetXaxis()->SetBinLabel(i, Form("%d",fDEIds[i]));
  fTrackerList->AddAt(h2, kResClYVsDE);
  
  // Disable printout of AliMCEvent
  AliLog::SetClassDebugLevel("AliMCEvent",-1);
  
  PostData(1, fCFContainer);
  PostData(2, fTriggerList);
  PostData(3, fTrackerList);
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::UserExec(Option_t * /*option*/) 
{
  //
  /// Main loop
  /// Called for each event
  //

  // check that OCDB objects have been properly set
  if (fSigmaCutTrig < 0) return;
  
  // Load ESD event
  AliESDEvent* esd = dynamic_cast<AliESDEvent*>(InputEvent());
  if ( ! esd ) {
    AliError ("ESD event not found. Nothing done!");
    return;
  }

  // Load MC event 
  AliMCEventHandler* mcH = static_cast<AliMCEventHandler*>(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
  if ( ! mcH ) {
    AliError ("MCH event handler not found. Nothing done!");
    return;
  }
  
  // get centrality
  Double_t centrality = esd->GetCentrality()->GetCentralityPercentileUnchecked("V0M");
  
  // Get reference tracks
  AliMUONRecoCheck rc(esd,mcH);
  AliMUONVTriggerTrackStore* triggerTrackRefStore = rc.TriggerableTracks(-1);
  AliMUONVTrackStore* trackRefStore = rc.TrackRefs(-1);
  AliMUONVTrackStore* reconstructibleStore = rc.ReconstructibleTracks(-1, fRequestedStationMask, fRequest2ChInSameSt45);
  
  Double_t containerInput[kNvars];
  containerInput[kVarCent] = centrality;
  AliMUONTrackParam *trackParam;
  Double_t x1,y1,z1,slopex1,slopey1,pX1,pY1,pZ1,p1,pT1,eta1,phi1;
  Double_t x2,y2,z2,slopex2,slopey2,pX2,pY2,pZ2,p2,pT2,eta2,phi2;
  Double_t dPhi;
  Double_t xAbs,yAbs,dAbs,aAbs,aMCS,aMC;
  Double_t xDCA,yDCA,dca,pU;
  
  // ------ Loop over reconstructed tracks ------
  AliESDMuonTrack *esdTrack = 0x0;
  Int_t nMuTracks = esd->GetNumberOfMuonTracks();
  Int_t *loCircuit = new Int_t[nMuTracks];
  Int_t nTrgTracks = 0;
  for (Int_t iMuTrack = 0; iMuTrack < nMuTracks; ++iMuTrack) {
    
    esdTrack = esd->GetMuonTrack(iMuTrack);

    // Tracker
    AliMUONTrack* matchedTrackRef = 0x0;
    containerInput[kVarMatchMC] = static_cast<Double_t>(kNoMatch);
    Bool_t isValid = kFALSE;
    if (esdTrack->ContainTrackerData()) {
    
      // convert ESD track to MUON track (without recomputing track parameters at each clusters)
      AliMUONTrack muonTrack;
      AliMUONESDInterface::ESDToMUON(*esdTrack, muonTrack, kFALSE);
      
      // decide whether the track is valid for efficiency calculations
      isValid = (!fEnforceTrkCriteria || muonTrack.IsValid(fRequestedStationMask, fRequest2ChInSameSt45));
      
      // get the associated simulated track (discard decays)
      Int_t mcLabel = esdTrack->GetLabel();
      if (mcLabel >= 0 && !esdTrack->TestBit(BIT(22)))
	matchedTrackRef = static_cast<AliMUONTrack*>(trackRefStore->FindObject(mcLabel));
      if (matchedTrackRef && isValid) containerInput[kVarMatchMC] = static_cast<Double_t>(kTrackerOnly);
      
      // compute track resolution (discard not-reconstructible trackRef)
      if (matchedTrackRef && !esdTrack->TestBit(BIT(23))) {
	
	// simulated track parameters at vertex
        trackParam = matchedTrackRef->GetTrackParamAtVertex();
        x1 = trackParam->GetNonBendingCoor();
        y1 = trackParam->GetBendingCoor();
        z1 = trackParam->GetZ();
        slopex1 = trackParam->GetNonBendingSlope();
        slopey1 = trackParam->GetBendingSlope();
        pX1 = trackParam->Px();
        pY1 = trackParam->Py();
        pZ1 = trackParam->Pz();
        p1  = trackParam->P();
        pT1 = TMath::Sqrt(pX1*pX1 + pY1*pY1);
	aMC = TMath::ATan(-pT1/pZ1) * TMath::RadToDeg();
	eta1 = TMath::Log(TMath::Tan(0.5*TMath::ATan(-pT1/pZ1)));
	phi1 = TMath::Pi()+TMath::ATan2(-pY1, -pX1);
	
	// reconstructed track parameters at the end of the absorber
        AliMUONTrackParam trackParamAtAbsEnd(*((AliMUONTrackParam*)muonTrack.GetTrackParamAtCluster()->First()));
	AliMUONTrackExtrap::ExtrapToZ(&trackParamAtAbsEnd, AliMUONConstants::AbsZEnd());
        xAbs = trackParamAtAbsEnd.GetNonBendingCoor();
        yAbs = trackParamAtAbsEnd.GetBendingCoor();
	dAbs = TMath::Sqrt(xAbs*xAbs + yAbs*yAbs);
	aAbs = TMath::ATan(-dAbs/AliMUONConstants::AbsZEnd()) * TMath::RadToDeg();
        pX2 = trackParamAtAbsEnd.Px();
        pY2 = trackParamAtAbsEnd.Py();
        pZ2 = trackParamAtAbsEnd.Pz();
        pT2 = TMath::Sqrt(pX2*pX2 + pY2*pY2);
	aMCS = TMath::ATan(-pT2/pZ2) * TMath::RadToDeg();
	
	// reconstructed track parameters at vertex
	trackParam = muonTrack.GetTrackParamAtVertex();
        x2 = trackParam->GetNonBendingCoor();
        y2 = trackParam->GetBendingCoor();
        z2 = trackParam->GetZ();
        slopex2 = trackParam->GetNonBendingSlope();
        slopey2 = trackParam->GetBendingSlope();
        pX2 = trackParam->Px();
        pY2 = trackParam->Py();
        pZ2 = trackParam->Pz();
        p2  = trackParam->P();
        pT2 = TMath::Sqrt(pX2*pX2 + pY2*pY2);
	eta2 = TMath::Log(TMath::Tan(0.5*TMath::ATan(-pT2/pZ2)));
	phi2 = TMath::Pi()+TMath::ATan2(-pY2, -pX2);
        
	// reconstructed track parameters at DCA
        AliMUONTrackParam trackParamAtDCA(*((AliMUONTrackParam*) muonTrack.GetTrackParamAtCluster()->First()));
	pU = trackParamAtDCA.P();
	AliMUONTrackExtrap::ExtrapToVertexWithoutBranson(&trackParamAtDCA, z2);
        xDCA = trackParamAtDCA.GetNonBendingCoor();
        yDCA = trackParamAtDCA.GetBendingCoor();
	dca = TMath::Sqrt(xDCA*xDCA + yDCA*yDCA);
	
	dPhi = phi2-phi1;
	if (dPhi < -TMath::Pi()) dPhi += 2.*TMath::Pi();
	else if (dPhi > TMath::Pi()) dPhi -= 2.*TMath::Pi();
	
	// fill histograms
	static_cast<TH1*>(fTrackerList->At(kResPAtVtx))->Fill(p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsP))->Fill(p1,p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsAngleAtAbsEnd))->Fill(aAbs,p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsMCAngle))->Fill(aMC,p2-p1);
	static_cast<TH3*>(fTrackerList->At(kResPAtVtxVsAngleAtAbsEndVsP))->Fill(p1,aAbs,p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPtAtVtxVsPt))->Fill(pT1,pT2-pT1);
	
	static_cast<TH1*>(fTrackerList->At(kResSlopeXAtVtx))->Fill(slopex2-slopex1);
	static_cast<TH1*>(fTrackerList->At(kResSlopeYAtVtx))->Fill(slopey2-slopey1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsP))->Fill(p1,slopex2-slopex1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsP))->Fill(p1,slopey2-slopey1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsAngleAtAbsEnd))->Fill(aAbs,slopex2-slopex1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsAngleAtAbsEnd))->Fill(aAbs,slopey2-slopey1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsMCAngle))->Fill(aMC,slopex2-slopex1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsMCAngle))->Fill(aMC,slopey2-slopey1);
	
	static_cast<TH1*>(fTrackerList->At(kResEtaAtVtx))->Fill(eta2-eta1);
	static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsP))->Fill(p1,eta2-eta1);
	static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsAngleAtAbsEnd))->Fill(aAbs,eta2-eta1);
	static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsMCAngle))->Fill(aMC,eta2-eta1);
	
	static_cast<TH1*>(fTrackerList->At(kResPhiAtVtx))->Fill(dPhi);
	static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsP))->Fill(p1,dPhi);
	static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsAngleAtAbsEnd))->Fill(aAbs,dPhi);
	static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsMCAngle))->Fill(aMC,dPhi);
	
	static_cast<TH1*>(fTrackerList->At(kPDCA))->Fill(0.5*(p2+pU)*dca);
	static_cast<TH2*>(fTrackerList->At(kPDCAVsAngleAtAbsEnd))->Fill(aAbs,0.5*(p2+pU)*dca);
	static_cast<TH2*>(fTrackerList->At(kPDCAVsMCAngle))->Fill(aMC,0.5*(p2+pU)*dca);
	
	if (aAbs > 2. && aAbs < 3.) {
	  
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPIn23deg))->Fill(p1,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kPDCAVsPIn23deg))->Fill(p1,0.5*(p2+pU)*dca);
	  static_cast<TH2*>(fTrackerList->At(kPMCSAngVsPIn23deg))->Fill(p1,0.5*(p2+pU)*(aMCS-aMC)*TMath::DegToRad());
	  
	} else if (aAbs >= 3. && aAbs < 10.) {
	  
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPIn310deg))->Fill(p1,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kPDCAVsPIn310deg))->Fill(p1,0.5*(p2+pU)*dca);
	  static_cast<TH2*>(fTrackerList->At(kPMCSAngVsPIn310deg))->Fill(p1,0.5*(p2+pU)*(aMCS-aMC)*TMath::DegToRad());
	  
	}
	
	if (aMC < 2.) {
	  
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPIn02degMC))->Fill(p1,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPosAbsEndIn02degMC))->Fill(dAbs,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsPosAbsEndIn02degMC))->Fill(dAbs,slopex2-slopex1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsPosAbsEndIn02degMC))->Fill(dAbs,slopey2-slopey1);
	  static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsPosAbsEndIn02degMC))->Fill(dAbs,eta2-eta1);
	  static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsPosAbsEndIn02degMC))->Fill(dAbs,dPhi);
	  static_cast<TH2*>(fTrackerList->At(kPDCAVsPosAbsEndIn02degMC))->Fill(dAbs,0.5*(p2+pU)*dca);
	  
	} else if (aMC >= 2. && aMC < 3) {
	  
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPosAbsEndIn23degMC))->Fill(dAbs,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsPosAbsEndIn23degMC))->Fill(dAbs,slopex2-slopex1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsPosAbsEndIn23degMC))->Fill(dAbs,slopey2-slopey1);
	  static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsPosAbsEndIn23degMC))->Fill(dAbs,eta2-eta1);
	  static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsPosAbsEndIn23degMC))->Fill(dAbs,dPhi);
	  static_cast<TH2*>(fTrackerList->At(kPDCAVsPosAbsEndIn23degMC))->Fill(dAbs,0.5*(p2+pU)*dca);
	  
	} else if (aMC >= 3. && aMC < 10.) {
	  
	  static_cast<TH2*>(fTrackerList->At(kResPAtVtxVsPosAbsEndIn310degMC))->Fill(dAbs,p2-p1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeXAtVtxVsPosAbsEndIn310degMC))->Fill(dAbs,slopex2-slopex1);
	  static_cast<TH2*>(fTrackerList->At(kResSlopeYAtVtxVsPosAbsEndIn310degMC))->Fill(dAbs,slopey2-slopey1);
	  static_cast<TH2*>(fTrackerList->At(kResEtaAtVtxVsPosAbsEndIn310degMC))->Fill(dAbs,eta2-eta1);
	  static_cast<TH2*>(fTrackerList->At(kResPhiAtVtxVsPosAbsEndIn310degMC))->Fill(dAbs,dPhi);
	  static_cast<TH2*>(fTrackerList->At(kPDCAVsPosAbsEndIn310degMC))->Fill(dAbs,0.5*(p2+pU)*dca);
	  
	}
	
	// simulated track parameters at first cluster
        trackParam = (AliMUONTrackParam*) matchedTrackRef->GetTrackParamAtCluster()->First();
        x1 = trackParam->GetNonBendingCoor();
        y1 = trackParam->GetBendingCoor();
        z1 = trackParam->GetZ();
        slopex1 = trackParam->GetNonBendingSlope();
        slopey1 = trackParam->GetBendingSlope();
        pX1 = trackParam->Px();
        pY1 = trackParam->Py();
        pZ1 = trackParam->Pz();
        p1  = trackParam->P();
        pT1 = TMath::Sqrt(pX1*pX1 + pY1*pY1);
	
	// reconstructed track parameters at first cluster
        trackParam = (AliMUONTrackParam*) muonTrack.GetTrackParamAtCluster()->First();
        x2 = trackParam->GetNonBendingCoor();
        y2 = trackParam->GetBendingCoor();
        z2 = trackParam->GetZ();
        slopex2 = trackParam->GetNonBendingSlope();
        slopey2 = trackParam->GetBendingSlope();
        pX2 = trackParam->Px();
        pY2 = trackParam->Py();
        pZ2 = trackParam->Pz();
        p2  = trackParam->P();
        pT2 = TMath::Sqrt(pX2*pX2 + pY2*pY2);
        
	// fill histograms
	static_cast<TH1*>(fTrackerList->At(kResPAt1stCl))->Fill(p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPAt1stClVsP))->Fill(p1,p2-p1);
	static_cast<TH2*>(fTrackerList->At(kResPtAt1stClVsPt))->Fill(pT1,pT2-pT1);
	static_cast<TH1*>(fTrackerList->At(kResSlopeXAt1stCl))->Fill(slopex2-slopex1);
	static_cast<TH1*>(fTrackerList->At(kResSlopeYAt1stCl))->Fill(slopey2-slopey1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeXAt1stClVsP))->Fill(p1,slopex2-slopex1);
	static_cast<TH2*>(fTrackerList->At(kResSlopeYAt1stClVsP))->Fill(p1,slopey2-slopey1);
	
	// clusters residuals
	for (Int_t iCl1 = 0; iCl1 < muonTrack.GetNClusters(); iCl1++) {
	  
	  AliMUONVCluster* cluster1 = static_cast<AliMUONTrackParam*>(muonTrack.GetTrackParamAtCluster()->UncheckedAt(iCl1))->GetClusterPtr();
	  Int_t chId = cluster1->GetChamberId();
	  Int_t deId = cluster1->GetDetElemId();
	  
	  for (Int_t iCl2 = 0; iCl2 < matchedTrackRef->GetNClusters(); iCl2++) {
	    
	    AliMUONVCluster* cluster2 = static_cast<AliMUONTrackParam*>(matchedTrackRef->GetTrackParamAtCluster()->UncheckedAt(iCl2))->GetClusterPtr();
	    
	    if (cluster2->GetDetElemId() == deId) {
	      
	      // fill histograms
	      static_cast<TH2*>(fTrackerList->At(kResClXVsCh))->Fill(chId+1, cluster1->GetX()-cluster2->GetX());
	      static_cast<TH2*>(fTrackerList->At(kResClYVsCh))->Fill(chId+1, cluster1->GetY()-cluster2->GetY());
	      static_cast<TH2*>(fTrackerList->At(kResClXVsDE))->Fill(fDEIndices[deId], cluster1->GetX()-cluster2->GetX());
	      static_cast<TH2*>(fTrackerList->At(kResClYVsDE))->Fill(fDEIndices[deId], cluster1->GetY()-cluster2->GetY());
	      
	      break;
	      
	    }
	    
	  }
	  
	}
	
      } // end if (matchedTrackRef)
      
    } // end if (esdTrack->ContainTrackerData())
    
    // look for MC trigger associated to MC track
    AliMUONTriggerTrack* triggerTrackRef = (isValid && matchedTrackRef)
    ? static_cast<AliMUONTriggerTrack*>(triggerTrackRefStore->FindObject(matchedTrackRef->GetUniqueID()))
    : 0x0;
    
    // Trigger
    AliMUONTriggerTrack* matchedTrigTrackRef = 0x0;
    containerInput[kVarDupliTrg] = 0.;
    if (esdTrack->ContainTriggerData()) {

      // check if this track is not already accounted for and record it if not
      Bool_t trackExist = kFALSE;
      for (Int_t i=0; i<nTrgTracks; i++) if (esdTrack->LoCircuit() == loCircuit[i]) trackExist = kTRUE;
      if (trackExist) containerInput[kVarDupliTrg] = 1.;
      else loCircuit[nTrgTracks++] = esdTrack->LoCircuit();
      
      // Convert ESD track to trigger track
      AliMUONLocalTrigger locTrg;
      AliMUONESDInterface::ESDToMUON(*esdTrack, locTrg);
      AliMUONTriggerTrack trigTrack;
      rc.TriggerToTrack(locTrg, trigTrack);
      
      // try to match the trigger track with the same MC track if any
      if (triggerTrackRef && trigTrack.Match(*triggerTrackRef, fSigmaCutTrig)) matchedTrigTrackRef = triggerTrackRef;
      if (matchedTrigTrackRef) containerInput[kVarMatchMC] = static_cast<Double_t>(kMatchedSame);
      else { // or try to match with any triggerable track
	matchedTrigTrackRef = rc.FindCompatibleTrack(trigTrack, *triggerTrackRefStore, fSigmaCutTrig);
	if (matchedTrigTrackRef) {
	  if (isValid && matchedTrackRef) {
	    containerInput[kVarMatchMC] = static_cast<Double_t>(kMatchedDiff);
	    if (!fMCTrigLevelFromMatchTrk) triggerTrackRef = matchedTrigTrackRef;
	  } else {
	    containerInput[kVarMatchMC] = static_cast<Double_t>(kTriggerOnly);
	    triggerTrackRef = matchedTrigTrackRef;
	  }
	}
      }
      
      // fill histograms
      if (matchedTrigTrackRef) {
	static_cast<TH1*>(fTriggerList->At(kResTrigX11))->Fill(trigTrack.GetX11() - matchedTrigTrackRef->GetX11());
	static_cast<TH1*>(fTriggerList->At(kResTrigY11))->Fill(trigTrack.GetY11() - matchedTrigTrackRef->GetY11());
	static_cast<TH1*>(fTriggerList->At(kResTrigSlopeY))->Fill(trigTrack.GetSlopeY() - matchedTrigTrackRef->GetSlopeY());
      }
      
    }
    
    // fill container
    if (triggerTrackRef) {
      if (triggerTrackRef->GetPtCutLevel() == 0) containerInput[kVarMCTrigger] = static_cast<Double_t>(kOtherTrig);
      else if (triggerTrackRef->GetPtCutLevel() == 1) containerInput[kVarMCTrigger] = static_cast<Double_t>(kAllPtTrig);
      else if (triggerTrackRef->GetPtCutLevel() == 2) containerInput[kVarMCTrigger] = static_cast<Double_t>(kLowPtTrig);
      else if (triggerTrackRef->GetPtCutLevel() == 3) containerInput[kVarMCTrigger] = static_cast<Double_t>(kHighPtTrig);
    } else containerInput[kVarMCTrigger] = kNoMatchTrig;
    
    // get MC particle ID
    Int_t mcID = -1;
    if (isValid && matchedTrackRef) mcID = static_cast<Int_t>(matchedTrackRef->GetUniqueID());
    else if (matchedTrigTrackRef) mcID = static_cast<Int_t>(matchedTrigTrackRef->GetUniqueID());
    
    // fill particle container
    FillContainerInfoReco(containerInput, esdTrack, isValid, mcID);
    fCFContainer->Fill(containerInput, kStepReconstructed);

  }

  // clean memory
  delete[] loCircuit;
  containerInput[kVarDupliTrg] = 0.;
  
  // ------ Loop over reconstructible tracks ------
  AliMUONTrack* trackRef = 0x0;
  TIter next(reconstructibleStore->CreateIterator());
  while ((trackRef = static_cast<AliMUONTrack*>(next()))) {
    
    // find the corresponding triggerable track if any
    UInt_t mcID = trackRef->GetUniqueID();
    AliMUONTriggerTrack* trigTrackRef = static_cast<AliMUONTriggerTrack*>(triggerTrackRefStore->FindObject(mcID));
    
    // fill particle container
    FillContainerInfoMC(containerInput, static_cast<AliMCParticle*>(fMCEvent->GetTrack(static_cast<Int_t>(mcID))));
    containerInput[kVarHasTracker] = 1.;
    if (trigTrackRef) {
      if (trigTrackRef->GetPtCutLevel() == 0) containerInput[kVarTrigger] = static_cast<Double_t>(kOtherTrig);
      else if (trigTrackRef->GetPtCutLevel() == 1) containerInput[kVarTrigger] = static_cast<Double_t>(kAllPtTrig);
      else if (trigTrackRef->GetPtCutLevel() == 2) containerInput[kVarTrigger] = static_cast<Double_t>(kLowPtTrig);
      else if (trigTrackRef->GetPtCutLevel() == 3) containerInput[kVarTrigger] = static_cast<Double_t>(kHighPtTrig);
    } else containerInput[kVarTrigger] = static_cast<Double_t>(kNoMatchTrig);
    containerInput[kVarMatchMC] = static_cast<Double_t>(kNoMatch);
    containerInput[kVarMCTrigger] = static_cast<Double_t>(kNoMatchTrig);
    fCFContainer->Fill(containerInput, kStepGeneratedMC);
    
  }

  // ------ Loop over triggerable ghosts ------
  AliMUONTriggerTrack* trigTrackRef = 0x0;
  TIter nextTrig(triggerTrackRefStore->CreateIterator());
  while ((trigTrackRef = static_cast<AliMUONTriggerTrack*>(nextTrig()))) {
    
    // discard tracks also reconstructible
    UInt_t mcID = trigTrackRef->GetUniqueID();
    if (reconstructibleStore->FindObject(mcID)) continue;

    // fill particle container
    FillContainerInfoMC(containerInput, static_cast<AliMCParticle*>(fMCEvent->GetTrack(static_cast<Int_t>(mcID))));
    containerInput[kVarHasTracker] = 0.;
    if (trigTrackRef->GetPtCutLevel() == 0) containerInput[kVarTrigger] = static_cast<Double_t>(kOtherTrig);
    else if (trigTrackRef->GetPtCutLevel() == 1) containerInput[kVarTrigger] = static_cast<Double_t>(kAllPtTrig);
    else if (trigTrackRef->GetPtCutLevel() == 2) containerInput[kVarTrigger] = static_cast<Double_t>(kLowPtTrig);
    else if (trigTrackRef->GetPtCutLevel() == 3) containerInput[kVarTrigger] = static_cast<Double_t>(kHighPtTrig);
    containerInput[kVarMatchMC] = static_cast<Double_t>(kNoMatch);
    containerInput[kVarMCTrigger] = static_cast<Double_t>(kNoMatchTrig);
    fCFContainer->Fill(containerInput, kStepGeneratedMC);
    
  }
  
  // Post final data
  PostData(1, fCFContainer);
  PostData(2, fTriggerList);
  PostData(3, fTrackerList);
}

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

  // do it only locally
  //if (gROOT->IsBatch()) return;
  
  // get output containers
  fCFContainer = dynamic_cast<AliCFContainer*>(GetOutputData(1));
  fTriggerList = dynamic_cast<TObjArray*>(GetOutputData(2));
  fTrackerList = dynamic_cast<TObjArray*>(GetOutputData(3));
  if (!fCFContainer || !fTriggerList || !fTrackerList) {
    AliWarning("Output containers not found: summary histograms are not created"); 
    return;
  }
  
  // --- compute efficiencies ---
  fEfficiencyList = new TObjArray(100);
  fEfficiencyList->SetOwner();
  
  TObjArray* effAnyPt = new TObjArray(100);
  effAnyPt->SetName("effAnyPt");
  effAnyPt->SetOwner();
  fEfficiencyList->AddLast(effAnyPt);
  
  TObjArray* effAllPt = new TObjArray(100);
  effAllPt->SetName("effAllPt");
  effAllPt->SetOwner();
  fEfficiencyList->AddLast(effAllPt);
  
  TObjArray* effLowPt = new TObjArray(100);
  effLowPt->SetName("effLowPt");
  effLowPt->SetOwner();
  fEfficiencyList->AddLast(effLowPt);
  
  TObjArray* effHighPt = new TObjArray(100);
  effHighPt->SetName("effHighPt");
  effHighPt->SetOwner();
  fEfficiencyList->AddLast(effHighPt);
  
  TObjArray* notTrgable = new TObjArray(100);
  notTrgable->SetName("notTrgable");
  notTrgable->SetOwner();
  fEfficiencyList->AddLast(notTrgable);
  
  TObjArray* trgableNoPtOnly = new TObjArray(100);
  trgableNoPtOnly->SetName("trgableNoPtOnly");
  trgableNoPtOnly->SetOwner();
  fEfficiencyList->AddLast(trgableNoPtOnly);
  
  TObjArray* trgableAPtOnly = new TObjArray(100);
  trgableAPtOnly->SetName("trgableAPtOnly");
  trgableAPtOnly->SetOwner();
  fEfficiencyList->AddLast(trgableAPtOnly);
  
  TObjArray* trgableLPtOnly = new TObjArray(100);
  trgableLPtOnly->SetName("trgableLPtOnly");
  trgableLPtOnly->SetOwner();
  fEfficiencyList->AddLast(trgableLPtOnly);
  
  TObjArray* trgableHPtOnly = new TObjArray(100);
  trgableHPtOnly->SetName("trgableHPtOnly");
  trgableHPtOnly->SetOwner();
  fEfficiencyList->AddLast(trgableHPtOnly);
  
  AliCFEffGrid* efficiency = new AliCFEffGrid("eff","",*fCFContainer);
  efficiency->CalculateEfficiency(kStepReconstructed, kStepGeneratedMC);
  Double_t totalEff = 0., totalEffErr = 0.;
  Int_t sumEffBin = 0;
  
  // add histogram summarizing global efficiencies
  TH1D* effSummary = new TH1D("effSummary", "Efficiency summary", 1, 0., 0.);
  effSummary->GetYaxis()->SetTitle("Efficiency");
  fEfficiencyList->AddLast(effSummary);
  
  // ------ Tracker only ------
  
  // Tracker efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarHasTracker, 1., 1.);
  efficiency->GetDen()->SetRangeUser(kVarHasTracker, 1., 1.);
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "trackerTracks", fEfficiencyList);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Tracker_all", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Tracker efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Tracker efficiency using tracks matched with reconstructible ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  FillEffHistos(efficiency, "trackerTracksMatchMC", fEfficiencyList);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Tracker_MCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Tracker efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // ------ Tracker matched with any trigger ------
  
  // Matched efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kOtherTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  FillEffHistos(efficiency, "matchedTracks", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_all", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with reconstructible ones, triggerable or not
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  FillEffHistos(efficiency, "matchedTracksMatchMC", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_MCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with reconstructible ones triggerable
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCAnypt", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_MCIdAnypt", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching MC-anyPt = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with reconstructible ones not triggerable
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCNoTrig", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_MCIdNoTrig", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching MC-noTrig = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with same reconstructible & triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kMatchedSame);
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "matchedTracksMatchSameMC", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_SameMCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching same MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with different reconstructible & triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedDiff, kMatchedDiff);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMC", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_DiffMCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching different MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched efficiency using tracks matched with reconstructible ones only
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kTrackerOnly);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMC", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Matched_TrkMCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Matched efficiency using reconstructed tracks matching tracker MC = %f +- %f\n", totalEff, totalEffErr);
  
  // ------ Tracker matched with all pt trigger ------
  
  // Matched all pt efficiency using all reconstructed tracks
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kAllPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  FillEffHistos(efficiency, "matchedTracks", effAllPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Apt efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched all pt efficiency using tracks matched with reconstructible ones, triggerable or not
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  FillEffHistos(efficiency, "matchedTracksMatchMC", effAllPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Apt efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched all pt efficiency using tracks matched with reconstructible ones triggerable Apt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCApt", effAllPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Apt efficiency using reconstructed tracks matching MC-Apt = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched all pt efficiency using tracks matched with reconstructible ones triggerable other pt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kOtherTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCOther", effAllPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Apt efficiency using reconstructed tracks matching MC-other = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched all pt efficiency using tracks matched with reconstructible ones not triggerable
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCNoTrig", effAllPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Apt efficiency using reconstructed tracks matching MC-noTrig = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched all pt efficiency using tracks matched with same reconstructible & triggerable ones (all pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kMatchedSame);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCApt", effAllPt);
  
  // Matched all pt efficiency using tracks matched with same reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kOtherTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCOther", effAllPt);
  
  // Matched all pt efficiency using tracks matched with different reconstructible & triggerable ones (all pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedDiff, kMatchedDiff);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCApt", effAllPt);
  
  // Matched all pt efficiency using tracks matched with different reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kOtherTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCOther", effAllPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (all pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kTrackerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCApt", effAllPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kOtherTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCOther", effAllPt);
  
  // ------ Tracker matched with low pt trigger ------
  
  // Matched low pt efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kLowPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "matchedTracks", effLowPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Lpt efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched low pt efficiency using tracks matched with reconstructible ones, triggerable or not
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  FillEffHistos(efficiency, "matchedTracksMatchMC", effLowPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Lpt efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched low pt efficiency using tracks matched with reconstructible ones triggerable Lpt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCLpt", effLowPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Lpt efficiency using reconstructed tracks matching MC-Lpt = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched low pt efficiency using tracks matched with reconstructible ones triggerable other pt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kAllPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCOther", effLowPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Lpt efficiency using reconstructed tracks matching MC-other = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched low pt efficiency using tracks matched with reconstructible ones not triggerable
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCNoTrig", effLowPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Lpt efficiency using reconstructed tracks matching MC-noTrig = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched low pt efficiency using tracks matched with same reconstructible & triggerable ones (low pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kMatchedSame);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCLpt", effLowPt);
  
  // Matched low pt efficiency using tracks matched with same reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kAllPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCOther", effLowPt);
  
  // Matched low pt efficiency using tracks matched with different reconstructible & triggerable ones (low pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedDiff, kMatchedDiff);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCLpt", effLowPt);
  
  // Matched low pt efficiency using tracks matched with different reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kAllPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCOther", effLowPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (low pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kTrackerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCLpt", effLowPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kAllPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCOther", effLowPt);
  
  // ------ Tracker matched with high pt trigger ------
  
  // Matched high pt efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "matchedTracks", effHighPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Hpt efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched high pt efficiency using tracks matched with reconstructible ones, triggerable or not
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  FillEffHistos(efficiency, "matchedTracksMatchMC", effHighPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Hpt efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched high pt efficiency using tracks matched with reconstructible ones triggerable Hpt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCHpt", effHighPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Hpt efficiency using reconstructed tracks matching MC-Hpt = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched high pt efficiency using tracks matched with reconstructible ones triggerable other pt
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kLowPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCOther", effHighPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Hpt efficiency using reconstructed tracks matching MC-other = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched high pt efficiency using tracks matched with reconstructible ones not triggerable
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "matchedTracksMatchMCNoTrig", effHighPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  printf("Matched Hpt efficiency using reconstructed tracks matching MC-noTrig = %f +- %f\n", totalEff, totalEffErr);
  
  // Matched high pt efficiency using tracks matched with same reconstructible & triggerable ones (high pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kMatchedSame);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCHpt", effHighPt);
  
  // Matched high pt efficiency using tracks matched with same reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kLowPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchSameMCOther", effHighPt);
  
  // Matched high pt efficiency using tracks matched with different reconstructible & triggerable ones (high pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedDiff, kMatchedDiff);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCHpt", effHighPt);
  
  // Matched high pt efficiency using tracks matched with different reconstructible & triggerable ones (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kLowPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchDiffMCOther", effHighPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (high pt MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kTrackerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCHpt", effHighPt);
  
  // Matched efficiency using tracks matched with reconstructible ones only (other MC trig)
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kLowPtTrig);
  FillEffHistos(efficiency, "matchedTracksMatchTrkMCOther", effHighPt);
  
  // ------ Trigger only ------
  
  // Trigger efficiency using all reconstructed tracks
  efficiency->GetNum()->GetAxis(kVarHasTracker)->SetRange();
  efficiency->GetDen()->GetAxis(kVarHasTracker)->SetRange();
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kOtherTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  efficiency->GetNum()->SetRangeUser(kVarDupliTrg, 0., 0.);
  FillEffHistos(efficiency, "triggerTracks", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Trigger_all", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Trigger efficiency using all reconstructed tracks = %f +- %f\n", totalEff, totalEffErr);
  
  // Trigger efficiency using tracks matched with triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kTriggerOnly);
  FillEffHistos(efficiency, "triggerTracksMatchMC", effAnyPt);
  GetEfficiency(efficiency, totalEff, totalEffErr);
  effSummary->Fill("Trigger_MCId", totalEff);
  effSummary->SetBinError(++sumEffBin, totalEffErr);
  printf("Trigger efficiency using reconstructed tracks matching MC = %f +- %f\n", totalEff, totalEffErr);
  
  // ------ All pt trigger only ------
  
  // All pt trigger efficiency using all reconstructed tracks
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kAllPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  FillEffHistos(efficiency, "triggerTracks", effAllPt);
  
  // All pt trigger efficiency using tracks matched with all pt triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kTriggerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCApt", effAllPt);
  
  // All pt trigger efficiency using tracks matched with other triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kOtherTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCOther", effAllPt);
  
  // ------ Low pt trigger only ------
  
  // Low pt trigger efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kLowPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "triggerTracks", effLowPt);
  
  // Low pt trigger efficiency using tracks matched with Low pt triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kTriggerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCLpt", effLowPt);
  
  // Low pt trigger efficiency using tracks matched with other triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kAllPtTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCOther", effLowPt);
  
  // ------ High pt trigger only ------
  
  // High pt trigger efficiency using all reconstructed tracks
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  FillEffHistos(efficiency, "triggerTracks", effHighPt);
  
  // High pt trigger efficiency using tracks matched with High pt triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kMatchedSame, kTriggerOnly);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCHpt", effHighPt);
  
  // All pt trigger efficiency using tracks matched with other triggerable ones
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kLowPtTrig);
  FillEffHistos(efficiency, "triggerTracksMatchMCOther", effHighPt);
  
  // ------ Tracker reconstructible not triggerable ------
  
  // all tracker tracks
  efficiency->GetNum()->SetRangeUser(kVarHasTracker, 1., 1.);
  efficiency->GetDen()->SetRangeUser(kVarHasTracker, 1., 1.);
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  efficiency->GetNum()->SetRangeUser(kVarMatchMC, kTrackerOnly, kMatchedDiff);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kNoMatchTrig, kNoMatchTrig);
  efficiency->GetNum()->GetAxis(kVarDupliTrg)->SetRange();
  FillEffHistos(efficiency, "allTracks", notTrgable);
  
  // tracker not matched
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "notMatched", notTrgable);
  
  // tracker matched with all pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "MatchedApt", notTrgable);
  
  // tracker matched with low pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "MatchedLpt", notTrgable);
  
  // tracker matched with high pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "MatchedHpt", notTrgable);
  
  // ------ Tracker reconstructible triggerable no pt ------
  
  // all tracker tracks
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kOtherTrig, kOtherTrig);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kOtherTrig, kOtherTrig);
  FillEffHistos(efficiency, "allTracks", trgableNoPtOnly);
  
  // tracker not matched
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "notMatched", trgableNoPtOnly);
  
  // tracker matched with all pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "MatchedApt", trgableNoPtOnly);
  
  // tracker matched with low pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "MatchedLpt", trgableNoPtOnly);
  
  // tracker matched with high pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "MatchedHpt", trgableNoPtOnly);
  
  // ------ Tracker reconstructible triggerable Apt ------
  
  // all tracker tracks
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "allTracks", trgableAPtOnly);
  
  // tracker not matched
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "notMatched", trgableAPtOnly);
  
  // tracker matched with all pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "MatchedApt", trgableAPtOnly);
  
  // tracker matched with low pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "MatchedLpt", trgableAPtOnly);
  
  // tracker matched with high pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "MatchedHpt", trgableAPtOnly);
  
  // ------ Tracker reconstructible triggerable Lpt ------
  
  // all tracker tracks
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "allTracks", trgableLPtOnly);
  
  // tracker not matched
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "notMatched", trgableLPtOnly);
  
  // tracker matched with all pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "MatchedApt", trgableLPtOnly);
  
  // tracker matched with low pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "MatchedLpt", trgableLPtOnly);
  
  // tracker matched with high pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "MatchedHpt", trgableLPtOnly);
  
  // ------ Tracker reconstructible triggerable Hpt ------
  
  // all tracker tracks
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  efficiency->GetNum()->SetRangeUser(kVarMCTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "allTracks", trgableHPtOnly);
  
  // tracker not matched
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kNoMatchTrig, kNoMatchTrig);
  FillEffHistos(efficiency, "notMatched", trgableHPtOnly);
  
  // tracker matched with all pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kAllPtTrig, kAllPtTrig);
  FillEffHistos(efficiency, "MatchedApt", trgableHPtOnly);
  
  // tracker matched with low pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kLowPtTrig, kLowPtTrig);
  FillEffHistos(efficiency, "MatchedLpt", trgableHPtOnly);
  
  // tracker matched with high pt trigger
  efficiency->GetNum()->SetRangeUser(kVarTrigger, kHighPtTrig, kHighPtTrig);
  FillEffHistos(efficiency, "MatchedHpt", trgableHPtOnly);
  
  // ------ reset ranges before saving CF containers ------
  efficiency->GetNum()->GetAxis(kVarHasTracker)->SetRange();
  efficiency->GetDen()->GetAxis(kVarHasTracker)->SetRange();
  efficiency->GetNum()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetDen()->GetAxis(kVarTrigger)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMatchMC)->SetRange();
  efficiency->GetNum()->GetAxis(kVarMCTrigger)->SetRange();
  efficiency->GetNum()->GetAxis(kVarDupliTrg)->SetRange();
  
  // ------ Plot summary ------
  
  // plot histogram summarizing global efficiencies
  TCanvas* cEffSummary = new TCanvas("cEffSummary","Efficiency summary",20,20,310,310);
  cEffSummary->SetFillColor(10); cEffSummary->SetHighLightColor(10);
  cEffSummary->SetLeftMargin(0.15); cEffSummary->SetBottomMargin(0.15);
  effSummary->DrawCopy("etext");
  
  // --- plot trigger resolution ---
  TCanvas* cTriggerResolution = new TCanvas("cTriggerResolution","Trigger resolution",10,10,310,310);
  cTriggerResolution->SetFillColor(10); cTriggerResolution->SetHighLightColor(10);
  cTriggerResolution->SetLeftMargin(0.15); cTriggerResolution->SetBottomMargin(0.15);
  cTriggerResolution->Divide(2,2);
  cTriggerResolution->cd(1);
  static_cast<TH1*>(fTriggerList->UncheckedAt(kResTrigX11))->DrawCopy();
  cTriggerResolution->cd(2);
  static_cast<TH1*>(fTriggerList->UncheckedAt(kResTrigY11))->DrawCopy();
  cTriggerResolution->cd(3);
  static_cast<TH1*>(fTriggerList->UncheckedAt(kResTrigSlopeY))->DrawCopy();
  
  // --- compute momentum resolution at vertex ---
  fPAtVtxList = new TObjArray(100);
  fPAtVtxList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResPAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResPAtVtxVsP->SetName("gMeanResPAtVtxVsP");
  gMeanResPAtVtxVsP->SetTitle("<#Delta_{p}> at vertex versus p;p (GeV/c);<#Delta_{p}> (GeV/c)");
  fPAtVtxList->AddAt(gMeanResPAtVtxVsP, kMeanResPAtVtxVsP);
  TGraphAsymmErrors* gMostProbResPAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMostProbResPAtVtxVsP->SetName("gMostProbResPAtVtxVsP");
  gMostProbResPAtVtxVsP->SetTitle("Most probable #Delta_{p} at vertex versus p;p (GeV/c);Most prob. #Delta_{p} (GeV/c)");
  fPAtVtxList->AddAt(gMostProbResPAtVtxVsP, kMostProbResPAtVtxVsP);
  TGraphAsymmErrors* gSigmaResPAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResPAtVtxVsP->SetName("gSigmaResPAtVtxVsP");
  gSigmaResPAtVtxVsP->SetTitle("#sigma_{p}/p at vertex versus p;p (GeV/c);#sigma_{p}/p (%)");
  fPAtVtxList->AddAt(gSigmaResPAtVtxVsP, kSigmaResPAtVtxVsP);
  
  // fit histo and fill graphs
  TH2* h = static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsP));
  FitLandauGausResVsP(h, "momentum residuals at vertex", gMeanResPAtVtxVsP, gMostProbResPAtVtxVsP, gSigmaResPAtVtxVsP);
  
  // convert resolution into relative resolution
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/fNPBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    Double_t x,y;
    gSigmaResPAtVtxVsP->GetPoint(i/rebinFactorX-1, x, y);
    gSigmaResPAtVtxVsP->SetPoint(i/rebinFactorX-1, x, 100.*y/x);
    gSigmaResPAtVtxVsP->SetPointEYlow(i/rebinFactorX-1, 100.*gSigmaResPAtVtxVsP->GetErrorYlow(i/rebinFactorX-1)/x);
    gSigmaResPAtVtxVsP->SetPointEYhigh(i/rebinFactorX-1, 100.*gSigmaResPAtVtxVsP->GetErrorYhigh(i/rebinFactorX-1)/x);
  }
  
  // --- compute momentum resolution at first cluster ---
  fPAt1stClList = new TObjArray(100);
  fPAt1stClList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResPAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResPAt1stClVsP->SetName("gMeanResPAt1stClVsP");
  gMeanResPAt1stClVsP->SetTitle("<#Delta_{p}> at first cluster versus p;p (GeV/c);<#Delta_{p}> (GeV/c)");
  fPAt1stClList->AddAt(gMeanResPAt1stClVsP, kMeanResPAt1stClVsP);
  TGraphAsymmErrors* gSigmaResPAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResPAt1stClVsP->SetName("gSigmaResPAt1stClVsP");
  gSigmaResPAt1stClVsP->SetTitle("#sigma_{p}/p at first cluster versus p;p (GeV/c);#sigma_{p}/p (%)");
  fPAt1stClList->AddAt(gSigmaResPAt1stClVsP, kSigmaResPAt1stClVsP);
  
  // fit histo and fill graphs
  h = static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAt1stClVsP));
  FitGausResVsMom(h, 0., 1., "momentum residuals at first cluster", gMeanResPAt1stClVsP, gSigmaResPAt1stClVsP);
  
  // convert resolution into relative resolution
  rebinFactorX = TMath::Max(h->GetNbinsX()/fNPBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    Double_t x,y;
    gSigmaResPAt1stClVsP->GetPoint(i/rebinFactorX-1, x, y);
    gSigmaResPAt1stClVsP->SetPoint(i/rebinFactorX-1, x, 100.*y/x);
    gSigmaResPAt1stClVsP->SetPointEYlow(i/rebinFactorX-1, 100.*gSigmaResPAt1stClVsP->GetErrorYlow(i/rebinFactorX-1)/x);
    gSigmaResPAt1stClVsP->SetPointEYhigh(i/rebinFactorX-1, 100.*gSigmaResPAt1stClVsP->GetErrorYhigh(i/rebinFactorX-1)/x);
  }
  
  // --- compute slope resolution at vertex ---
  fSlopeAtVtxList = new TObjArray(100);
  fSlopeAtVtxList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResSlopeXAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResSlopeXAtVtxVsP->SetName("gMeanResSlopeXAtVtxVsP");
  gMeanResSlopeXAtVtxVsP->SetTitle("<#Delta_{slope_{X}}> at vertex versus p;p (GeV/c);<#Delta_{slope_{X}}>");
  fSlopeAtVtxList->AddAt(gMeanResSlopeXAtVtxVsP, kMeanResSlopeXAtVtxVsP);
  TGraphAsymmErrors* gMeanResSlopeYAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResSlopeYAtVtxVsP->SetName("gMeanResSlopeYAtVtxVsP");
  gMeanResSlopeYAtVtxVsP->SetTitle("<#Delta_{slope_{Y}}> at vertex versus p;p (GeV/c);<#Delta_{slope_{Y}}>");
  fSlopeAtVtxList->AddAt(gMeanResSlopeYAtVtxVsP, kMeanResSlopeYAtVtxVsP);
  TGraphAsymmErrors* gSigmaResSlopeXAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResSlopeXAtVtxVsP->SetName("gSigmaResSlopeXAtVtxVsP");
  gSigmaResSlopeXAtVtxVsP->SetTitle("#sigma_{slope_{X}} at vertex versus p;p (GeV/c);#sigma_{slope_{X}}");
  fSlopeAtVtxList->AddAt(gSigmaResSlopeXAtVtxVsP, kSigmaResSlopeXAtVtxVsP);
  TGraphAsymmErrors* gSigmaResSlopeYAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResSlopeYAtVtxVsP->SetName("gSigmaResSlopeYAtVtxVsP");
  gSigmaResSlopeYAtVtxVsP->SetTitle("#sigma_{slope_{Y}} at vertex versus p;p (GeV/c);#sigma_{slope_{Y}}");
  fSlopeAtVtxList->AddAt(gSigmaResSlopeYAtVtxVsP, kSigmaResSlopeYAtVtxVsP);
  
  // fit histo and fill graphs
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsP)), 0., 2.e-3,
		  "slopeX residuals at vertex", gMeanResSlopeXAtVtxVsP, gSigmaResSlopeXAtVtxVsP);
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsP)), 0., 2.e-3,
		  "slopeY residuals at vertex", gMeanResSlopeYAtVtxVsP, gSigmaResSlopeYAtVtxVsP);
  
  // --- compute slope resolution at first cluster ---
  fSlopeAt1stClList = new TObjArray(100);
  fSlopeAt1stClList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResSlopeXAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResSlopeXAt1stClVsP->SetName("gMeanResSlopeXAt1stClVsP");
  gMeanResSlopeXAt1stClVsP->SetTitle("<#Delta_{slope_{X}}> at first cluster versus p;p (GeV/c);<#Delta_{slope_{X}}>");
  fSlopeAt1stClList->AddAt(gMeanResSlopeXAt1stClVsP, kMeanResSlopeXAt1stClVsP);
  TGraphAsymmErrors* gMeanResSlopeYAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResSlopeYAt1stClVsP->SetName("gMeanResSlopeYAt1stClVsP");
  gMeanResSlopeYAt1stClVsP->SetTitle("<#Delta_{slope_{Y}}> at first cluster versus p;p (GeV/c);<#Delta_{slope_{Y}}>");
  fSlopeAt1stClList->AddAt(gMeanResSlopeYAt1stClVsP, kMeanResSlopeYAt1stClVsP);
  TGraphAsymmErrors* gSigmaResSlopeXAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResSlopeXAt1stClVsP->SetName("gSigmaResSlopeXAt1stClVsP");
  gSigmaResSlopeXAt1stClVsP->SetTitle("#sigma_{slope_{X}} at first cluster versus p;p (GeV/c);#sigma_{slope_{X}}");
  fSlopeAt1stClList->AddAt(gSigmaResSlopeXAt1stClVsP, kSigmaResSlopeXAt1stClVsP);
  TGraphAsymmErrors* gSigmaResSlopeYAt1stClVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResSlopeYAt1stClVsP->SetName("gSigmaResSlopeYAt1stClVsP");
  gSigmaResSlopeYAt1stClVsP->SetTitle("#sigma_{slope_{Y}} at first cluster versus p;p (GeV/c);#sigma_{slope_{Y}}");
  fSlopeAt1stClList->AddAt(gSigmaResSlopeYAt1stClVsP, kSigmaResSlopeYAt1stClVsP);
  
  // fit histo and fill graphs
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAt1stClVsP)), 0., 3.e-4,
		  "slopeX residuals at first cluster", gMeanResSlopeXAt1stClVsP, gSigmaResSlopeXAt1stClVsP);
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAt1stClVsP)), 0., 3.e-4,
		  "slopeY residuals at first cluster", gMeanResSlopeYAt1stClVsP, gSigmaResSlopeYAt1stClVsP);
  
  // --- compute eta resolution at vertex ---
  fEtaAtVtxList = new TObjArray(100);
  fEtaAtVtxList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResEtaAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResEtaAtVtxVsP->SetName("gMeanResEtaAtVtxVsP");
  gMeanResEtaAtVtxVsP->SetTitle("<#Delta_{eta}> at vertex versus p;p (GeV/c);<#Delta_{eta}>");
  fEtaAtVtxList->AddAt(gMeanResEtaAtVtxVsP, kMeanResEtaAtVtxVsP);
  TGraphAsymmErrors* gSigmaResEtaAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResEtaAtVtxVsP->SetName("gSigmaResEtaAtVtxVsP");
  gSigmaResEtaAtVtxVsP->SetTitle("#sigma_{eta} at vertex versus p;p (GeV/c);#sigma_{eta}");
  fEtaAtVtxList->AddAt(gSigmaResEtaAtVtxVsP, kSigmaResEtaAtVtxVsP);
  
  // fit histo and fill graphs
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsP)), 0., 0.1,
		  "eta residuals at vertex", gMeanResEtaAtVtxVsP, gSigmaResEtaAtVtxVsP);
  
  // --- compute phi resolution at vertex ---
  fPhiAtVtxList = new TObjArray(100);
  fPhiAtVtxList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanResPhiAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gMeanResPhiAtVtxVsP->SetName("gMeanResPhiAtVtxVsP");
  gMeanResPhiAtVtxVsP->SetTitle("<#Delta_{phi}> at vertex versus p;p (GeV/c);<#Delta_{phi}>");
  fPhiAtVtxList->AddAt(gMeanResPhiAtVtxVsP, kMeanResPhiAtVtxVsP);
  TGraphAsymmErrors* gSigmaResPhiAtVtxVsP = new TGraphAsymmErrors(fNPBins);
  gSigmaResPhiAtVtxVsP->SetName("gSigmaResPhiAtVtxVsP");
  gSigmaResPhiAtVtxVsP->SetTitle("#sigma_{phi} at vertex versus p;p (GeV/c);#sigma_{phi}");
  fPhiAtVtxList->AddAt(gSigmaResPhiAtVtxVsP, kSigmaResPhiAtVtxVsP);
  
  // fit histo and fill graphs
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsP)), 0., 0.01,
		  "phi residuals at vertex", gMeanResPhiAtVtxVsP, gSigmaResPhiAtVtxVsP);
  
  // --- compute DCA resolution and MCS dispersion ---
  fDCAList = new TObjArray(100);
  fDCAList->SetOwner();
  
  // define graphs
  TGraphAsymmErrors* gMeanPDCAVsPIn23deg = new TGraphAsymmErrors(fNPBins);
  gMeanPDCAVsPIn23deg->SetName("gMeanPDCAVsPIn23deg");
  gMeanPDCAVsPIn23deg->SetTitle("<p #times DCA> versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);<p #times DCA> (GeV #times cm)");
  fDCAList->AddAt(gMeanPDCAVsPIn23deg, kMeanPDCAVsPIn23deg);
  TGraphAsymmErrors* gSigmaPDCAVsPIn23deg = new TGraphAsymmErrors(fNPBins);
  gSigmaPDCAVsPIn23deg->SetName("gSigmaPDCAVsPIn23deg");
  gSigmaPDCAVsPIn23deg->SetTitle("#sigma_{p #times DCA} versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);#sigma_{p #times DCA} (GeV #times cm)");
  fDCAList->AddAt(gSigmaPDCAVsPIn23deg, kSigmaPDCAVsPIn23deg);
  TGraphAsymmErrors* gMeanPDCAVsPIn310deg = new TGraphAsymmErrors(fNPBins);
  gMeanPDCAVsPIn310deg->SetName("gMeanPDCAVsPIn310deg");
  gMeanPDCAVsPIn310deg->SetTitle("<p #times DCA> versus p for tracks within [3,10[ degrees at absorber end;p (GeV/c);<p #times DCA> (GeV #times cm)");
  fDCAList->AddAt(gMeanPDCAVsPIn310deg, kMeanPDCAVsPIn310deg);
  TGraphAsymmErrors* gSigmaPDCAVsPIn310deg = new TGraphAsymmErrors(fNPBins);
  gSigmaPDCAVsPIn310deg->SetName("gSigmaPDCAVsPIn310deg");
  gSigmaPDCAVsPIn310deg->SetTitle("#sigma_{p #times DCA} versus p for tracks within [3,10[ degrees at absorber end;p (GeV/c);#sigma_{p #times DCA} (GeV #times cm)");
  fDCAList->AddAt(gSigmaPDCAVsPIn310deg, kSigmaPDCAVsPIn310deg);
  
  TGraphAsymmErrors* gMeanPMCSAngVsPIn23deg = new TGraphAsymmErrors(fNPBins);
  gMeanPMCSAngVsPIn23deg->SetName("gMeanPMCSAngVsPIn23deg");
  gMeanPMCSAngVsPIn23deg->SetTitle("<p #times #Delta#theta_{MCS}> versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);<p #times #Delta#theta_{MCS}> (GeV)");
  fDCAList->AddAt(gMeanPMCSAngVsPIn23deg, kMeanPMCSAngVsPIn23deg);
  TGraphAsymmErrors* gSigmaPMCSAngVsPIn23deg = new TGraphAsymmErrors(fNPBins);
  gSigmaPMCSAngVsPIn23deg->SetName("gSigmaPMCSAngVsPIn23deg");
  gSigmaPMCSAngVsPIn23deg->SetTitle("#sigma_{p #times #Delta#theta_{MCS}} versus p for tracks within [2,3[ degrees at absorber end;p (GeV/c);#sigma_{p #times #Delta#theta_{MCS}} (GeV)");
  fDCAList->AddAt(gSigmaPMCSAngVsPIn23deg, kSigmaPMCSAngVsPIn23deg);
  TGraphAsymmErrors* gMeanPMCSAngVsPIn310deg = new TGraphAsymmErrors(fNPBins);
  gMeanPMCSAngVsPIn310deg->SetName("gMeanPMCSAngVsPIn310deg");
  gMeanPMCSAngVsPIn310deg->SetTitle("<p #times #Delta#theta_{MCS}> versus p for tracks within [3,10[ degrees at absorber end;p (GeV/c);<p #times #Delta#theta_{MCS}> (GeV)");
  fDCAList->AddAt(gMeanPMCSAngVsPIn310deg, kMeanPMCSAngVsPIn310deg);
  TGraphAsymmErrors* gSigmaPMCSAngVsPIn310deg = new TGraphAsymmErrors(fNPBins);
  gSigmaPMCSAngVsPIn310deg->SetName("gSigmaPMCSAngVsPIn310deg");
  gSigmaPMCSAngVsPIn310deg->SetTitle("#sigma_{p #times #Delta#theta_{MCS}} versus p for tracks within [3,10[ degrees at absorber end;p (GeV/c);#sigma_{p #times #Delta#theta_{MCS}} (GeV)");
  fDCAList->AddAt(gSigmaPMCSAngVsPIn310deg, kSigmaPMCSAngVsPIn310deg);
  
  // fit histo and fill graphs
  FitPDCAVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsPIn23deg)),
	       "p*DCA (tracks in [2,3] deg.)", gMeanPDCAVsPIn23deg, gSigmaPDCAVsPIn23deg);
  FitPDCAVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsPIn310deg)),
	       "p*DCA (tracks in [3,10] deg.)", gMeanPDCAVsPIn310deg, gSigmaPDCAVsPIn310deg);
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kPMCSAngVsPIn23deg)), 0., 2.e-3,
		  "p*MCSAngle (tracks in [2,3] deg.)", gMeanPMCSAngVsPIn23deg, gSigmaPMCSAngVsPIn23deg);
  FitGausResVsMom(static_cast<TH2*>(fTrackerList->UncheckedAt(kPMCSAngVsPIn310deg)), 0., 2.e-3,
		  "p*MCSAngle (tracks in [3,10] deg.)", gMeanPMCSAngVsPIn310deg, gSigmaPMCSAngVsPIn310deg);
  
  // --- compute cluster resolution ---
  fClusterList = new TObjArray(100);
  fClusterList->SetOwner();
  
  // define graphs per chamber
  TGraphErrors* gMeanResClXVsCh = new TGraphErrors(AliMUONConstants::NTrackingCh());
  gMeanResClXVsCh->SetName("gMeanResClXVsCh");
  gMeanResClXVsCh->SetTitle("cluster-trackRef residual-X per Ch: mean;chamber ID;<#Delta_{X}> (cm)");
  gMeanResClXVsCh->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gMeanResClXVsCh, kMeanResClXVsCh);
  TGraphErrors* gMeanResClYVsCh = new TGraphErrors(AliMUONConstants::NTrackingCh());
  gMeanResClYVsCh->SetName("gMeanResClYVsCh");
  gMeanResClYVsCh->SetTitle("cluster-trackRef residual-Y per Ch: mean;chamber ID;<#Delta_{Y}> (cm)");
  gMeanResClYVsCh->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gMeanResClYVsCh, kMeanResClYVsCh);
  TGraphErrors* gSigmaResClXVsCh = new TGraphErrors(AliMUONConstants::NTrackingCh());
  gSigmaResClXVsCh->SetName("gSigmaResClXVsCh");
  gSigmaResClXVsCh->SetTitle("cluster-trackRef residual-X per Ch: sigma;chamber ID;#sigma_{X} (cm)");
  gSigmaResClXVsCh->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gSigmaResClXVsCh, kSigmaResClXVsCh);
  TGraphErrors* gSigmaResClYVsCh = new TGraphErrors(AliMUONConstants::NTrackingCh());
  gSigmaResClYVsCh->SetName("gSigmaResClYVsCh");
  gSigmaResClYVsCh->SetTitle("cluster-trackRef residual-Y per Ch: sigma;chamber ID;#sigma_{Y} (cm)");
  gSigmaResClYVsCh->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gSigmaResClYVsCh, kSigmaResClYVsCh);
  
  // define graphs per DE
  TGraphErrors* gMeanResClXVsDE = new TGraphErrors(fNDE);
  gMeanResClXVsDE->SetName("gMeanResClXVsDE");
  gMeanResClXVsDE->SetTitle("cluster-trackRef residual-X per DE: mean;DE ID;<#Delta_{X}> (cm)");
  gMeanResClXVsDE->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gMeanResClXVsDE, kMeanResClXVsDE);
  TGraphErrors* gMeanResClYVsDE = new TGraphErrors(fNDE);
  gMeanResClYVsDE->SetName("gMeanResClYVsDE");
  gMeanResClYVsDE->SetTitle("cluster-trackRef residual-Y per dE: mean;DE ID;<#Delta_{Y}> (cm)");
  gMeanResClYVsDE->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gMeanResClYVsDE, kMeanResClYVsDE);
  TGraphErrors* gSigmaResClXVsDE = new TGraphErrors(fNDE);
  gSigmaResClXVsDE->SetName("gSigmaResClXVsDE");
  gSigmaResClXVsDE->SetTitle("cluster-trackRef residual-X per DE: sigma;DE ID;#sigma_{X} (cm)");
  gSigmaResClXVsDE->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gSigmaResClXVsDE, kSigmaResClXVsDE);
  TGraphErrors* gSigmaResClYVsDE = new TGraphErrors(fNDE);
  gSigmaResClYVsDE->SetName("gSigmaResClYVsDE");
  gSigmaResClYVsDE->SetTitle("cluster-trackRef residual-Y per DE: sigma;DE ID;#sigma_{Y} (cm)");
  gSigmaResClYVsDE->SetMarkerStyle(kFullDotLarge);
  fClusterList->AddAt(gSigmaResClYVsDE, kSigmaResClYVsDE);
  
  // fit histo and fill graphs per chamber
  Double_t clusterResPerCh[10][2];
  for (Int_t i = 0; i < AliMUONConstants::NTrackingCh(); i++) {
    TH1D *tmp = static_cast<TH2*>(fTrackerList->UncheckedAt(kResClXVsCh))->ProjectionY("tmp",i+1,i+1,"e");
    FitClusterResidual(tmp, i, clusterResPerCh[i][0], gMeanResClXVsCh, gSigmaResClXVsCh);
    delete tmp;
    tmp = static_cast<TH2*>(fTrackerList->UncheckedAt(kResClYVsCh))->ProjectionY("tmp",i+1,i+1,"e");
    FitClusterResidual(tmp, i, clusterResPerCh[i][1], gMeanResClYVsCh, gSigmaResClYVsCh);
    delete tmp;
  }
  
  // fit histo and fill graphs per DE
  Double_t clusterResPerDE[200][2];
  for (Int_t i = 0; i < fNDE; i++) {
    TH1D *tmp = static_cast<TH2*>(fTrackerList->UncheckedAt(kResClXVsDE))->ProjectionY("tmp",i+1,i+1,"e");
    FitClusterResidual(tmp, i, clusterResPerDE[i][0], gMeanResClXVsDE, gSigmaResClXVsDE);
    delete tmp;
    tmp = static_cast<TH2*>(fTrackerList->UncheckedAt(kResClYVsDE))->ProjectionY("tmp",i+1,i+1,"e");
    FitClusterResidual(tmp, i, clusterResPerDE[i][1], gMeanResClYVsDE, gSigmaResClYVsDE);
    delete tmp;
  }
  
  // set DE graph labels
  TAxis* xAxis = static_cast<TH2*>(fTrackerList->UncheckedAt(kResClXVsDE))->GetXaxis();
  gMeanResClXVsDE->GetXaxis()->Set(fNDE, 0.5, fNDE+0.5);
  gMeanResClYVsDE->GetXaxis()->Set(fNDE, 0.5, fNDE+0.5);
  gSigmaResClXVsDE->GetXaxis()->Set(fNDE, 0.5, fNDE+0.5);
  gSigmaResClYVsDE->GetXaxis()->Set(fNDE, 0.5, fNDE+0.5);
  for (Int_t i = 1; i <= fNDE; i++) {
    const char* label = xAxis->GetBinLabel(i);
    gMeanResClXVsDE->GetXaxis()->SetBinLabel(i, label);
    gMeanResClYVsDE->GetXaxis()->SetBinLabel(i, label);
    gSigmaResClXVsDE->GetXaxis()->SetBinLabel(i, label);
    gSigmaResClYVsDE->GetXaxis()->SetBinLabel(i, label);
  }
  
  // --- diplay momentum residuals at vertex ---
  TCanvas* cResPAtVtx = DrawVsAng("cResPAtVtx", "momentum residual at vertex in 3 angular regions",
				  static_cast<TH1*>(fTrackerList->UncheckedAt(kResPAtVtx)),
				  static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsAngleAtAbsEnd)));
  fPAtVtxList->AddAt(cResPAtVtx, kcResPAtVtx);
  TCanvas* cResPAtVtxMC = DrawVsAng("cResPAtVtxMC", "momentum residual at vertex in 3 MC angular regions",
				    static_cast<TH1*>(fTrackerList->UncheckedAt(kResPAtVtx)),
				    static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsMCAngle)));
  fPAtVtxList->AddAt(cResPAtVtxMC, kcResPAtVtxMC);
  TCanvas* cResPAtVtxVsPosAbsEndMC = DrawVsPos("cResPAtVtxVsPosAbsEndMC", "momentum residual at vertex versus position at absorber end in 3 MC angular regions",
					       static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPosAbsEndIn02degMC)),
					       static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPosAbsEndIn23degMC)),
					       static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPosAbsEndIn310degMC)));
  fPAtVtxList->AddAt(cResPAtVtxVsPosAbsEndMC, kcResPAtVtxVsPosAbsEndMC);
  TCanvas* cResPAtVtxVsPIn23deg = DrawFitLandauGausResPVsP("cResPAtVtxVsPIn23deg", "momentum residual for tracks between 2 and 3 degrees",
						      static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPIn23deg)),
						      10, "momentum residuals at vertex (tracks in [2,3] deg.)");
  fPAtVtxList->AddAt(cResPAtVtxVsPIn23deg, kcResPAtVtxVsPIn23deg);
  TCanvas* cResPAtVtxVsPIn310deg = DrawFitLandauGausResPVsP("cResPAtVtxVsPIn310deg", "momentum residual for tracks between 3 and 10 degrees",
						       static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPIn310deg)),
						       10, "momentum residuals at vertex (tracks in [3,10] deg.)");
  fPAtVtxList->AddAt(cResPAtVtxVsPIn310deg, kcResPAtVtxVsPIn310deg);
  TCanvas* cResPAtVtxVsPIn02degMC = DrawResPVsP("cResPAtVtxVsPIn02degMC", "momentum residuals for tracks with MC angle < 2 degrees",
					   static_cast<TH2*>(fTrackerList->UncheckedAt(kResPAtVtxVsPIn02degMC)), 5);
  fPAtVtxList->AddAt(cResPAtVtxVsPIn02degMC, kcResPAtVtxVsPIn02degMC);
  
  // --- diplay slopeX residuals at vertex ---
  TCanvas* cResSlopeXAtVtx = DrawVsAng("cResSlopeXAtVtx", "slope_{X} residual at vertex in 3 angular regions",
				       static_cast<TH1*>(fTrackerList->UncheckedAt(kResSlopeXAtVtx)),
				       static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsAngleAtAbsEnd)));
  fSlopeAtVtxList->AddAt(cResSlopeXAtVtx, kcResSlopeXAtVtx);
  TCanvas* cResSlopeYAtVtx = DrawVsAng("cResSlopeYAtVtx", "slope_{Y} residual at vertex in 3 angular regions",
				       static_cast<TH1*>(fTrackerList->UncheckedAt(kResSlopeYAtVtx)),
				       static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsAngleAtAbsEnd)));
  fSlopeAtVtxList->AddAt(cResSlopeYAtVtx, kcResSlopeYAtVtx);
  TCanvas* cResSlopeXAtVtxMC = DrawVsAng("cResSlopeXAtVtxMC", "slope_{X} residual at vertex in 3 MC angular regions",
					 static_cast<TH1*>(fTrackerList->UncheckedAt(kResSlopeXAtVtx)),
					 static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsMCAngle)));
  fSlopeAtVtxList->AddAt(cResSlopeXAtVtxMC, kcResSlopeXAtVtxMC);
  TCanvas* cResSlopeYAtVtxMC = DrawVsAng("cResSlopeYAtVtxMC", "slope_{Y} residual at vertex in 3 MC angular regions",
					 static_cast<TH1*>(fTrackerList->UncheckedAt(kResSlopeYAtVtx)),
					 static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsMCAngle)));
  fSlopeAtVtxList->AddAt(cResSlopeYAtVtxMC, kcResSlopeYAtVtxMC);
  TCanvas* cResSlopeXAtVtxVsPosAbsEndMC = DrawVsPos("cResSlopeXAtVtxVsPosAbsEndMC", "slope_{X} residual at vertex versus position at absorber end in 3 MC angular regions",
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsPosAbsEndIn02degMC)),
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsPosAbsEndIn23degMC)),
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeXAtVtxVsPosAbsEndIn310degMC)));
  fSlopeAtVtxList->AddAt(cResSlopeXAtVtxVsPosAbsEndMC, kcResSlopeXAtVtxVsPosAbsEndMC);
  TCanvas* cResSlopeYAtVtxVsPosAbsEndMC = DrawVsPos("cResSlopeYAtVtxVsPosAbsEndMC", "slope_{Y} residual at vertex versus position at absorber end in 3 MC angular regions",
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsPosAbsEndIn02degMC)),
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsPosAbsEndIn23degMC)),
						    static_cast<TH2*>(fTrackerList->UncheckedAt(kResSlopeYAtVtxVsPosAbsEndIn310degMC)));
  fSlopeAtVtxList->AddAt(cResSlopeYAtVtxVsPosAbsEndMC, kcResSlopeYAtVtxVsPosAbsEndMC);
  
  // --- diplay eta residuals at vertex ---
  TCanvas* cResEtaAtVtx = DrawVsAng("cResEtaAtVtx", "eta residual at vertex in 3 angular regions",
				    static_cast<TH1*>(fTrackerList->UncheckedAt(kResEtaAtVtx)),
				    static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsAngleAtAbsEnd)));
  fEtaAtVtxList->AddAt(cResEtaAtVtx, kcResEtaAtVtx);
  TCanvas* cResEtaAtVtxMC = DrawVsAng("cResEtaAtVtxMC", "eta residual at vertex in 3 MC angular regions",
				      static_cast<TH1*>(fTrackerList->UncheckedAt(kResEtaAtVtx)),
				      static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsMCAngle)));
  fEtaAtVtxList->AddAt(cResEtaAtVtxMC, kcResEtaAtVtxMC);
  TCanvas* cResEtaAtVtxVsPosAbsEndMC = DrawVsPos("cResEtaAtVtxVsPosAbsEndMC", "eta residual at vertex versus position at absorber end in 3 MC angular regions",
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsPosAbsEndIn02degMC)),
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsPosAbsEndIn23degMC)),
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResEtaAtVtxVsPosAbsEndIn310degMC)));
  fEtaAtVtxList->AddAt(cResEtaAtVtxVsPosAbsEndMC, kcResEtaAtVtxVsPosAbsEndMC);
  
  // --- diplay phi residuals at vertex ---
  TCanvas* cResPhiAtVtx = DrawVsAng("cResPhiAtVtx", "phi residual at vertex in 3 angular regions",
				    static_cast<TH1*>(fTrackerList->UncheckedAt(kResPhiAtVtx)),
				    static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsAngleAtAbsEnd)));
  fPhiAtVtxList->AddAt(cResPhiAtVtx, kcResPhiAtVtx);
  TCanvas* cResPhiAtVtxMC = DrawVsAng("cResPhiAtVtxMC", "phi residual at vertex in 3 MC angular regions",
				      static_cast<TH1*>(fTrackerList->UncheckedAt(kResPhiAtVtx)),
				      static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsMCAngle)));
  fPhiAtVtxList->AddAt(cResPhiAtVtxMC, kcResPhiAtVtxMC);
  TCanvas* cResPhiAtVtxVsPosAbsEndMC = DrawVsPos("cResPhiAtVtxVsPosAbsEndMC", "phi residual at vertex versus position at absorber end in 3 MC angular regions",
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsPosAbsEndIn02degMC)),
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsPosAbsEndIn23degMC)),
						 static_cast<TH2*>(fTrackerList->UncheckedAt(kResPhiAtVtxVsPosAbsEndIn310degMC)));
  fPhiAtVtxList->AddAt(cResPhiAtVtxVsPosAbsEndMC, kcResPhiAtVtxVsPosAbsEndMC);
  
  // --- diplay P*DCA ---
  TCanvas* cPDCA = DrawVsAng("cPDCA", "p #times DCA in 3 angular regions",
			     static_cast<TH1*>(fTrackerList->UncheckedAt(kPDCA)),
			     static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsAngleAtAbsEnd)));
  fDCAList->AddAt(cPDCA, kcPDCA);
  TCanvas* cPDCAMC = DrawVsAng("cPDCAMC", "p #times DCA in 3 MC angular regions",
			       static_cast<TH1*>(fTrackerList->UncheckedAt(kPDCA)),
			       static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsMCAngle)));
  fDCAList->AddAt(cPDCAMC, kcPDCAMC);
  TCanvas* cPDCAVsPosAbsEndMC = DrawVsPos("cPDCAVsPosAbsEndMC", "p #times DCA versus position at absorber end in 3 MC angular regions",
				  static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsPosAbsEndIn02degMC)),
				  static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsPosAbsEndIn23degMC)),
				  static_cast<TH2*>(fTrackerList->UncheckedAt(kPDCAVsPosAbsEndIn310degMC)));
  fDCAList->AddAt(cPDCAVsPosAbsEndMC, kcPDCAVsPosAbsEndMC);
  
  // post param containers
  PostData(4, fEfficiencyList);
  PostData(5, fPAtVtxList);
  PostData(6, fSlopeAtVtxList);
  PostData(7, fEtaAtVtxList);
  PostData(8, fPhiAtVtxList);
  PostData(9, fPAt1stClList);
  PostData(10, fSlopeAt1stClList);
  PostData(11, fDCAList);
  PostData(12, fClusterList);
}


//________________________________________________________________________
Bool_t AliAnalysisTaskMuonPerformance::GetEfficiency(AliCFEffGrid* efficiency, Double_t& calcEff, Double_t& calcEffErr)
{
  //
  /// Calculate the efficiency when cuts on the THnSparse are applied
  //

  Bool_t isGood = kTRUE;

  TH1* histo = 0x0;
  Double_t sum[2] = {0., 0.};
  for ( Int_t ihisto=0; ihisto<2; ihisto++ ) {
    histo = ( ihisto==0 ) ? efficiency->GetNum()->Project(kVarCharge) : efficiency->GetDen()->Project(kVarCharge);
    sum[ihisto] = histo->Integral();
    delete histo;
  }

  if ( sum[1] == 0. ) isGood = kFALSE;
  
  calcEff = ( isGood ) ? sum[0]/sum[1] : 0.;
  if ( calcEff > 1. ) isGood = kFALSE;

  calcEffErr = ( isGood ) ? TMath::Sqrt(calcEff*(1-calcEff)/sum[1]) : 0.;

  return isGood;
}

//________________________________________________________________________
Int_t AliAnalysisTaskMuonPerformance::RecoTrackMother(AliMCParticle* mcParticle)
{
  //
  /// Find track mother from kinematics
  //

  if ( ! mcParticle )
    return kUnknownPart;

  Int_t recoPdg = mcParticle->PdgCode();

  // Track is not a muon
  if ( TMath::Abs(recoPdg) != 13 ) return kRecoHadron;

  Int_t imother = mcParticle->GetMother();

  Bool_t isFirstMotherHF = kFALSE;
  Int_t step = 0;

  //printf("\n"); // REMEMBER TO CUT
  while ( imother >= 0 ) {
    TParticle* part = static_cast<AliMCParticle*>(fMCEvent->GetTrack(imother))->Particle();
    //printf("Particle %s  -> %s\n", part->GetName(), TMCProcessName[part->GetUniqueID()]); // REMEMBER TO CUT

    if ( part->GetUniqueID() == kPHadronic ) 
      return kSecondaryMu;

    Int_t absPdg = TMath::Abs(part->GetPdgCode());

    step++;
    if ( step == 1 ) // only for first mother
      isFirstMotherHF = ( ( absPdg >= 400  && absPdg < 600 ) || 
			  ( absPdg >= 4000 && absPdg < 6000 ) );
      
    if ( absPdg < 4 )
      return kPrimaryMu;

    if ( isFirstMotherHF) {
      if ( absPdg == 4 )
	return kCharmMu;
      else if ( absPdg == 5 )
	return kBeautyMu;
    }

    imother = part->GetFirstMother();
  }

  return kPrimaryMu;

}

//________________________________________________________________________
Float_t AliAnalysisTaskMuonPerformance::GetBinThetaAbsEnd(Float_t RAtAbsEnd, Bool_t isTheta)
{
  //
  /// Get bin of theta at absorber end region
  //
  Float_t thetaDeg = ( isTheta ) ? RAtAbsEnd : TMath::ATan( RAtAbsEnd / 505. );
  thetaDeg *= TMath::RadToDeg();
  if ( thetaDeg < 2. )
    return 0.;
  else if ( thetaDeg < 3. )
    return 1.;
  else if ( thetaDeg < 10. )
    return 2.;

  return 3.;
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FillContainerInfoReco(Double_t* containerInput, AliESDMuonTrack* esdTrack,
							   Bool_t isValid, Int_t mcID)
{
  //
  /// Fill container info (except kVarMatchMC, kVarMCTrigger, kVarCent, kVarDupliTrg) for reconstructed tracks
  //
  
  AliMCParticle* mcPart = (mcID >= 0) ? static_cast<AliMCParticle*>(fMCEvent->GetTrack(mcID)) : 0x0;
  
  if (fUseMCKinematics && mcPart) {
    containerInput[kVarPt] = mcPart->Pt();
    containerInput[kVarEta] = mcPart->Eta();
    containerInput[kVarPhi] = mcPart->Phi();
  } else {
    containerInput[kVarPt] = esdTrack->Pt();
    containerInput[kVarEta] = esdTrack->Eta();
    containerInput[kVarPhi] = esdTrack->Phi();
  }
  containerInput[kVarThetaZones] = GetBinThetaAbsEnd(esdTrack->GetRAtAbsorberEnd());
  containerInput[kVarCharge] = static_cast<Double_t>(esdTrack->Charge());
  containerInput[kVarHasTracker] = static_cast<Double_t>(esdTrack->ContainTrackerData() && isValid);
  if (esdTrack->GetMatchTrigger() == 0) containerInput[kVarTrigger] = static_cast<Double_t>(kNoMatchTrig);
  else if (esdTrack->GetMatchTrigger() == 1) containerInput[kVarTrigger] = static_cast<Double_t>(kAllPtTrig);
  else if (esdTrack->GetMatchTrigger() == 2) containerInput[kVarTrigger] = static_cast<Double_t>(kLowPtTrig);
  else if (esdTrack->GetMatchTrigger() == 3) containerInput[kVarTrigger] = static_cast<Double_t>(kHighPtTrig);
  containerInput[kVarMotherType] = static_cast<Double_t>(RecoTrackMother(mcPart));

}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FillContainerInfoMC(Double_t* containerInput, AliMCParticle* mcPart)
{
  //
  /// Fill container info (except kVarMatchMC, kVarMCTrigger, kVarHasTracker and kVarTrigger, kVarCent, kVarDupliTrg) for MC tracks
  //
  
  containerInput[kVarPt] = mcPart->Pt();
  containerInput[kVarEta] = mcPart->Eta();
  containerInput[kVarPhi] = mcPart->Phi();
  containerInput[kVarThetaZones] = GetBinThetaAbsEnd(TMath::Pi()-mcPart->Theta(),kTRUE);
  containerInput[kVarCharge] = static_cast<Double_t>(mcPart->Charge())/3.;
  containerInput[kVarMotherType] = static_cast<Double_t>(RecoTrackMother(mcPart));
  
}

//________________________________________________________________________
Double_t langaufun(Double_t *x, Double_t *par)
{
  //Fit parameters:
  //par[0]=Width (scale) parameter of Landau density
  //par[1]=Most Probable (MP, location) parameter of Landau density
  //par[2]=Total area (integral -inf to inf, normalization constant)
  //par[3]=Width (sigma) of convoluted Gaussian function
  //
  //In the Landau distribution (represented by the CERNLIB approximation), 
  //the maximum is located at x=-0.22278298 with the location parameter=0.
  //This shift is corrected within this function, so that the actual
  //maximum is identical to the MP parameter.
  
  // Numeric constants
  Double_t invsq2pi = 0.3989422804014;   // (2 pi)^(-1/2)
  Double_t mpshift  = -0.22278298;       // Landau maximum location
  
  // MP shift correction
  Double_t mpc = par[1] - mpshift * par[0];
  
  // Range of convolution integral
  Double_t xlow = x[0] - 5. * par[3];
  Double_t xupp = x[0] + 5. * par[3];
  Double_t step = TMath::Min(0.2*par[0],0.1*par[3]);
  
  // Convolution integral of Landau and Gaussian by sum
  Double_t xx = xlow + 0.5 * step;
  Double_t sum = 0.0;
  while (xx < xupp) {
    sum += TMath::Landau(-xx,mpc,par[0]) * TMath::Gaus(x[0],xx,par[3]);
    xx += step;
  }
  
  return (par[2] * step * sum * invsq2pi / par[3] / par[0]);
  
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FitLandauGausResVsP(TH2* h, const char* fitting, TGraphAsymmErrors* gMean,
							 TGraphAsymmErrors* gMostProb, TGraphAsymmErrors* gSigma)
{
  /// generic function to fit residuals versus momentum with a landau convoluted with a gaussian
  
  static TF1 *fGaus2 = 0x0;
  if (!fGaus2) fGaus2 = new TF1("fGaus2","gaus");
  static TF1* fLandauGaus = 0x0;
  if (!fLandauGaus) {
    fLandauGaus = new TF1("fLandauGaus",langaufun,h->GetYaxis()->GetBinLowEdge(1),h->GetYaxis()->GetBinLowEdge(h->GetNbinsY()+1),4);
    fLandauGaus->SetNpx(10000);
  }
  
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/fNPBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    
    cout<<Form("\rFitting %s... %d/%d",fitting,i/rebinFactorX,fNPBins)<<flush;
    
    TH1D *tmp = h->ProjectionY("tmp",i-rebinFactorX+1,i,"e");
    
    // first fit
    fGaus2->SetParameters((Double_t)tmp->GetEntries(), 0., 1.);
    tmp->Fit("fGaus2", "WWNQ");
    
    // rebin histo
    Double_t sigma = fGaus2->GetParameter(2);
    Int_t rebin = static_cast<Int_t>(TMath::Min(0.1*tmp->GetNbinsX(),TMath::Max(0.5*sigma/tmp->GetBinWidth(1),1.)));
    while (tmp->GetNbinsX()%rebin!=0) rebin--;
    tmp->Rebin(rebin);
    
    // second fit
    Double_t mean = fGaus2->GetParameter(1);
    fLandauGaus->SetParameters(0.25*sigma*TMath::Sqrt(8.*log(2.)), mean, tmp->GetEntries()*tmp->GetXaxis()->GetBinWidth(1), 0.5*sigma);
    fLandauGaus->SetParLimits(0, 0.0025*sigma*TMath::Sqrt(8.*log(2.)), 1000.);
    fLandauGaus->SetParLimits(3, 0., 2.*sigma);
    Double_t xMin = TMath::Max(mean-50.*sigma, tmp->GetXaxis()->GetXmin());
    Double_t xMax = TMath::Min(mean+10.*sigma, tmp->GetXaxis()->GetXmax());
    if (xMin < tmp->GetXaxis()->GetXmax() && xMax > tmp->GetXaxis()->GetXmin()) fLandauGaus->SetRange(xMin, xMax);
    tmp->Fit("fLandauGaus","RNQ");
    
    // get fit results and fill graph
    Double_t fwhm = 4.*fLandauGaus->GetParameter(0);
    sigma = fLandauGaus->GetParameter(3);
    Double_t sigmaP = TMath::Sqrt(sigma*sigma + fwhm*fwhm/(8.*log(2.)));
    Double_t fwhmErr = fLandauGaus->GetParError(0);
    Double_t sigmaErr = fLandauGaus->GetParError(3);
    Double_t sigmaPErr = TMath::Sqrt(sigma*sigma*sigmaErr*sigmaErr + fwhm*fwhm*fwhmErr*fwhmErr/(64.*log(2.)*log(2.))) / sigmaP;
    h->GetXaxis()->SetRange(i-rebinFactorX+1,i);
    Double_t p = (tmp->GetEntries() > 0) ? h->GetMean() : 0.5 * (h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1) + h->GetXaxis()->GetBinLowEdge(i+1));
    h->GetXaxis()->SetRange();
    Double_t pErr[2] = {p-h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1), h->GetXaxis()->GetBinLowEdge(i+1)-p};
    gMean->SetPoint(i/rebinFactorX-1, p, tmp->GetMean());
    gMean->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], tmp->GetMeanError(), tmp->GetMeanError());
    gMostProb->SetPoint(i/rebinFactorX-1, p, -fLandauGaus->GetParameter(1));
    gMostProb->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], fLandauGaus->GetParError(1), fLandauGaus->GetParError(1));
    gSigma->SetPoint(i/rebinFactorX-1, p, sigmaP);
    gSigma->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], sigmaPErr, sigmaPErr);
    
    // clean memory
    delete tmp;
  }
  
  cout<<Form("\rFitting %s... %d/%d",fitting,fNPBins,fNPBins)<<endl;
  
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FitGausResVsMom(TH2* h, const Double_t mean0,
						     const Double_t sigma0, const char* fitting,
						     TGraphAsymmErrors* gMean, TGraphAsymmErrors* gSigma)
{
  /// generic function to fit residuals versus momentum with a gaussian
  
  static TF1* fGaus = 0x0;
  if (!fGaus) fGaus = new TF1("fGaus","gaus");
  
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/fNPBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    
    cout<<Form("\rFitting %s... %d/%d",fitting,i/rebinFactorX,fNPBins)<<flush;
    
    TH1D *tmp = h->ProjectionY("tmp",i-rebinFactorX+1,i,"e");
    
    // first fit
    fGaus->SetParameters(tmp->GetEntries(), mean0, sigma0);
    tmp->Fit("fGaus","WWNQ");
    
    // rebin histo
    Int_t rebin = static_cast<Int_t>(TMath::Min(0.1*tmp->GetNbinsX(),TMath::Max(0.5*fGaus->GetParameter(2)/tmp->GetBinWidth(1),1.)));
    while (tmp->GetNbinsX()%rebin!=0) rebin--;
    tmp->Rebin(rebin);
    
    // second fit
    tmp->Fit("fGaus","NQ");
    
    // get fit results and fill histograms
    h->GetXaxis()->SetRange(i-rebinFactorX+1,i);
    Double_t p = (tmp->GetEntries() > 0) ? h->GetMean() : 0.5 * (h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1) + h->GetXaxis()->GetBinLowEdge(i+1));
    h->GetXaxis()->SetRange();
    Double_t pErr[2] = {p-h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1), h->GetXaxis()->GetBinLowEdge(i+1)-p};
    gMean->SetPoint(i/rebinFactorX-1, p, fGaus->GetParameter(1));
    gMean->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], fGaus->GetParError(1), fGaus->GetParError(1));
    gSigma->SetPoint(i/rebinFactorX-1, p, fGaus->GetParameter(2));
    gSigma->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], fGaus->GetParError(2), fGaus->GetParError(2));
    
    // clean memory
    delete tmp;
  }
  
  cout<<Form("\rFitting %s... %d/%d",fitting,fNPBins,fNPBins)<<endl;
  
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FitPDCAVsMom(TH2* h, const char* fitting,
						  TGraphAsymmErrors* gMean, TGraphAsymmErrors* gSigma)
{
  /// generic function to fit p*DCA distributions
  
  static TF1* fPGaus = 0x0;
  if (!fPGaus) fPGaus = new TF1("fPGaus","x*gaus");
  
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/fNPBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    
    cout<<Form("\rFitting %s... %d/%d",fitting,i/rebinFactorX,fNPBins)<<flush;
    
    TH1D *tmp = h->ProjectionY("tmp",i-rebinFactorX+1,i,"e");
    
    // rebin histo
    Int_t rebin = static_cast<Int_t>(25*(tmp->GetNbinsX()/(tmp->GetBinLowEdge(tmp->GetNbinsX()+1)-tmp->GetBinLowEdge(1))));
    while (tmp->GetNbinsX()%rebin!=0) rebin--;
    tmp->Rebin(rebin);
    
    // fit
    fPGaus->SetParameters(1.,0.,80.);
    tmp->Fit("fPGaus","NQ");
    
    // get fit results and fill histograms
    h->GetXaxis()->SetRange(i-rebinFactorX+1,i);
    Double_t p = (tmp->GetEntries() > 0) ? h->GetMean() : 0.5 * (h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1) + h->GetXaxis()->GetBinLowEdge(i+1));
    h->GetXaxis()->SetRange();
    Double_t pErr[2] = {p-h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1), h->GetXaxis()->GetBinLowEdge(i+1)-p};
    gMean->SetPoint(i/rebinFactorX-1, p, fPGaus->GetParameter(1));
    gMean->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], fPGaus->GetParError(1), fPGaus->GetParError(1));
    gSigma->SetPoint(i/rebinFactorX-1, p, fPGaus->GetParameter(2));
    gSigma->SetPointError(i/rebinFactorX-1, pErr[0], pErr[1], fPGaus->GetParError(2), fPGaus->GetParError(2));
    
    // clean memory
    delete tmp;
  }
  
  cout<<Form("\rFitting %s... %d/%d",fitting,fNPBins,fNPBins)<<endl;
  
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FitClusterResidual(TH1* h, Int_t i, Double_t& sigma,
							TGraphErrors* gMean, TGraphErrors* gSigma)
{
  /// fill graphs with residual mean and sigma
  
  static TF1* fRGaus = 0x0;
  Double_t mean, meanErr, sigmaErr;
  
  if (fFitResiduals) {
    
    if (!fRGaus) fRGaus = new TF1("fRGaus","gaus");
    
    // first fit
    Double_t xMin = h->GetXaxis()->GetXmin();
    Double_t xMax = h->GetXaxis()->GetXmax();
    fRGaus->SetRange(xMin, xMax);
    fRGaus->SetParameters(h->GetEntries(), 0., 0.1);
    fRGaus->SetParLimits(1, xMin, xMax);
    h->Fit("fRGaus", "WWNQ");
    
    // rebin histo
    Int_t rebin = static_cast<Int_t>(TMath::Min(0.1*h->GetNbinsX(),TMath::Max(0.3*fRGaus->GetParameter(2)/h->GetBinWidth(1),1.)));
    while (h->GetNbinsX()%rebin!=0) rebin--;
    h->Rebin(rebin);
    
    // second fit
    xMin = TMath::Max(fRGaus->GetParameter(1)-10.*fRGaus->GetParameter(2), h->GetXaxis()->GetXmin());
    xMax = TMath::Min(fRGaus->GetParameter(1)+10.*fRGaus->GetParameter(2), h->GetXaxis()->GetXmax());
    fRGaus->SetRange(xMin, xMax);
    fRGaus->SetParLimits(1, xMin, xMax);
    h->Fit("fRGaus","NQR");
    
    mean = fRGaus->GetParameter(1);
    meanErr = fRGaus->GetParError(1);
    sigma = fRGaus->GetParameter(2);
    sigmaErr = fRGaus->GetParError(2);
    
  } else {
    
    Zoom(h);
    mean = h->GetMean();
    meanErr = h->GetMeanError();
    sigma = h->GetRMS();
    sigmaErr = h->GetRMSError();
    h->GetXaxis()->SetRange(0,0);
    
  }
  
  gMean->SetPoint(i, i+1, mean);
  gMean->SetPointError(i, 0., meanErr);
  
  if (fCorrectForSystematics) {
    Double_t s = TMath::Sqrt(mean*mean + sigma*sigma);
    sigmaErr = (s>0.) ? TMath::Sqrt(sigma*sigma*sigmaErr*sigmaErr + mean*mean*meanErr*meanErr) / s : 0.;
    sigma = s;
  }
  
  gSigma->SetPoint(i, i+1, sigma);
  gSigma->SetPointError(i, 0., sigmaErr);
  
}

//________________________________________________________________________
TCanvas* AliAnalysisTaskMuonPerformance::DrawVsAng(const char* name, const char* title, TH1* h1, TH2* h2)
{
  /// generic function to draw histograms versus absorber angular region
  TCanvas* c = new TCanvas(name, title);
  c->cd();
  h1->DrawCopy();
  TH1D *proj1 = h2->ProjectionY(Form("%s_proj_0_2",h2->GetName()),1,2);
  proj1->SetLineColor(2);
  proj1->Draw("sames");
  TH1D *proj2 = h2->ProjectionY(Form("%s_proj_2_3",h2->GetName()),3,3);
  proj2->SetLineColor(4);
  proj2->Draw("sames");
  TH1D *proj3 = h2->ProjectionY(Form("%s__proj_3_10",h2->GetName()),4,10);
  proj3->SetLineColor(3);
  proj3->Draw("sames");
  return c;
}

//________________________________________________________________________
TCanvas* AliAnalysisTaskMuonPerformance::DrawVsPos(const char* name, const char* title, TH2* h1, TH2* h2, TH2* h3)
{
  /// generic function to draw histograms versus position at absorber end
  TCanvas* c = new TCanvas(name, title);
  c->cd();
  h1->SetMarkerColor(2);
  h1->DrawCopy();
  h2->SetMarkerColor(4);
  h2->DrawCopy("sames");
  h3->SetMarkerColor(3);
  h3->DrawCopy("sames");
  return c;
}

//________________________________________________________________________
TCanvas* AliAnalysisTaskMuonPerformance::DrawFitLandauGausResPVsP(const char* name, const char* title,
								  TH2* h, const Int_t nBins, const char* fitting)
{
  /// generic function to draw and fit momentum residuals versus momentum
  
  static TF1 *fGaus3 = 0x0;
  if (!fGaus3) fGaus3 = new TF1("fGaus3","gaus");
  static TF1* fLandauGaus2 = 0x0;
  if (!fLandauGaus2) {
    fLandauGaus2 = new TF1("fLandauGaus2",langaufun,h->GetYaxis()->GetBinLowEdge(1),h->GetYaxis()->GetBinLowEdge(h->GetNbinsY()+1),4);
    fLandauGaus2->SetNpx(10000);
  }
  
  TLegend* l = new TLegend(0.15,0.25,0.3,0.85);
  TCanvas* c = new TCanvas(name, title);
  c->cd();
  
  h->Sumw2();
  
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/nBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    
    cout<<Form("\rFitting %s... %d/%d",fitting,i/rebinFactorX,nBins)<<flush;
    
    // draw projection
    TH1D* proj = h->ProjectionY(Form("%s_%d",h->GetName(),i/rebinFactorX),i-rebinFactorX+1,i);
    if (proj->GetEntries() > 0) proj->Scale(1./proj->GetEntries());
    proj->Draw((i==rebinFactorX)?"hist":"histsames");
    proj->SetLineColor(i/rebinFactorX);
    
    if (proj->GetEntries() > 10) {
      
      // first fit
      fGaus3->SetParameters(1., 0., 1.);
      proj->Fit("fGaus3", "WWNQ");
      
      // rebin histo
      Double_t sigma = fGaus3->GetParameter(2);
      Int_t rebin = static_cast<Int_t>(TMath::Min(0.1*proj->GetNbinsX(),TMath::Max(0.5*sigma/proj->GetBinWidth(1),1.)));
      while (proj->GetNbinsX()%rebin!=0) rebin--;
      proj->Rebin(rebin);
      proj->Scale(1./rebin);
      
      // second fit
      Double_t mean = fGaus3->GetParameter(1);
      fLandauGaus2->SetParameters(0.25*sigma*TMath::Sqrt(8.*log(2.)), mean, proj->GetXaxis()->GetBinWidth(1), 0.5*sigma);
      fLandauGaus2->SetParLimits(0, 0.0025*sigma*TMath::Sqrt(8.*log(2.)), 1000.);
      fLandauGaus2->SetParLimits(3, 0., 2.*sigma);
      Double_t xMin = TMath::Max(mean-50.*sigma, proj->GetXaxis()->GetXmin());
      Double_t xMax = TMath::Min(mean+10.*sigma, proj->GetXaxis()->GetXmax());
      if (xMin < proj->GetXaxis()->GetXmax() && xMax > proj->GetXaxis()->GetXmin()) fLandauGaus2->SetRange(xMin, xMax);
      fLandauGaus2->SetLineColor(i/rebinFactorX);
      proj->Fit("fLandauGaus2","RQ","sames");
      
    }
    
    // set label
    Double_t p = 0.5 * (h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1) + h->GetXaxis()->GetBinLowEdge(i+1));
    l->AddEntry(proj,Form("%5.1f GeV",p));
    
  }
  
  cout<<Form("\rFitting %s... %d/%d",fitting,nBins,nBins)<<endl;
  
  l->Draw("same");
  
  return c;
  
}

//________________________________________________________________________
TCanvas* AliAnalysisTaskMuonPerformance::DrawResPVsP(const char* name, const char* title, TH2* h, const Int_t nBins)
{
  /// generic function to draw momentum residuals versus momentum
  
  TLegend* l = new TLegend(0.15,0.25,0.3,0.85);
  TCanvas* c = new TCanvas(name, title);
  c->cd();
  
  h->Sumw2();
  
  Int_t rebinFactorX = TMath::Max(h->GetNbinsX()/nBins, 1);
  for (Int_t i = rebinFactorX; i <= h->GetNbinsX(); i+=rebinFactorX) {
    
    // draw projection
    TH1D* proj = h->ProjectionY(Form("%s_%d",h->GetName(),i/rebinFactorX),i-rebinFactorX+1,i);
    if (proj->GetEntries() > 0) proj->Scale(1./proj->GetEntries());
    proj->Draw((i==rebinFactorX)?"hist":"histsames");
    proj->SetLineColor(i/rebinFactorX);
    proj->SetLineWidth(2);
    
    // set label
    Double_t p = 0.5 * (h->GetXaxis()->GetBinLowEdge(i-rebinFactorX+1) + h->GetXaxis()->GetBinLowEdge(i+1));
    l->AddEntry(proj,Form("%5.1f GeV",p));
    
  }
  
  l->Draw("same");
  
  return c;
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::Zoom(TH1* h, Double_t fractionCut)
{
  /// Reduce the range of the histogram by removing a given fration of the statistic at each edge
  
  Double_t maxEventsCut = fractionCut * h->GetEntries();
  Int_t nBins = h->GetNbinsX();
  
  // set low edge  
  Int_t minBin;
  Double_t eventsCut = 0.;
  for (minBin = 1; minBin <= nBins; minBin++) {
    eventsCut += h->GetBinContent(minBin);
    if (eventsCut > maxEventsCut) break;
  }
  
  // set high edge
  Int_t maxBin;
  eventsCut = 0.;
  for (maxBin = nBins; maxBin >= 1; maxBin--) {
    eventsCut += h->GetBinContent(maxBin);
    if (eventsCut > maxEventsCut) break;
  }
  
  // set new axis range
  h->GetXaxis()->SetRange(--minBin, ++maxBin);
}

//________________________________________________________________________
void AliAnalysisTaskMuonPerformance::FillEffHistos(AliCFEffGrid* efficiency, const char* suffix, TObjArray* list)
{
  /// Compute efficiency histograms and save them to the given list
  
  TH1* auxHisto = efficiency->Project(kVarPt);
  auxHisto->SetName(Form("effVsPt_%s",suffix));
  list->AddLast(auxHisto);
  
  auxHisto = efficiency->Project(kVarEta);
  auxHisto->SetName(Form("effVsEta_%s",suffix));
  list->AddLast(auxHisto);
  
  auxHisto = efficiency->Project(kVarPhi);
  auxHisto->SetName(Form("effVsPhi_%s",suffix));
  list->AddLast(auxHisto);
  
  auxHisto = efficiency->Project(kVarCent);
  auxHisto->SetName(Form("effVsCent_%s",suffix));
  list->AddLast(auxHisto);
  
}

 AliAnalysisTaskMuonPerformance.cxx:1
 AliAnalysisTaskMuonPerformance.cxx:2
 AliAnalysisTaskMuonPerformance.cxx:3
 AliAnalysisTaskMuonPerformance.cxx:4
 AliAnalysisTaskMuonPerformance.cxx:5
 AliAnalysisTaskMuonPerformance.cxx:6
 AliAnalysisTaskMuonPerformance.cxx:7
 AliAnalysisTaskMuonPerformance.cxx:8
 AliAnalysisTaskMuonPerformance.cxx:9
 AliAnalysisTaskMuonPerformance.cxx:10
 AliAnalysisTaskMuonPerformance.cxx:11
 AliAnalysisTaskMuonPerformance.cxx:12
 AliAnalysisTaskMuonPerformance.cxx:13
 AliAnalysisTaskMuonPerformance.cxx:14
 AliAnalysisTaskMuonPerformance.cxx:15
 AliAnalysisTaskMuonPerformance.cxx:16
 AliAnalysisTaskMuonPerformance.cxx:17
 AliAnalysisTaskMuonPerformance.cxx:18
 AliAnalysisTaskMuonPerformance.cxx:19
 AliAnalysisTaskMuonPerformance.cxx:20
 AliAnalysisTaskMuonPerformance.cxx:21
 AliAnalysisTaskMuonPerformance.cxx:22
 AliAnalysisTaskMuonPerformance.cxx:23
 AliAnalysisTaskMuonPerformance.cxx:24
 AliAnalysisTaskMuonPerformance.cxx:25
 AliAnalysisTaskMuonPerformance.cxx:26
 AliAnalysisTaskMuonPerformance.cxx:27
 AliAnalysisTaskMuonPerformance.cxx:28
 AliAnalysisTaskMuonPerformance.cxx:29
 AliAnalysisTaskMuonPerformance.cxx:30
 AliAnalysisTaskMuonPerformance.cxx:31
 AliAnalysisTaskMuonPerformance.cxx:32
 AliAnalysisTaskMuonPerformance.cxx:33
 AliAnalysisTaskMuonPerformance.cxx:34
 AliAnalysisTaskMuonPerformance.cxx:35
 AliAnalysisTaskMuonPerformance.cxx:36
 AliAnalysisTaskMuonPerformance.cxx:37
 AliAnalysisTaskMuonPerformance.cxx:38
 AliAnalysisTaskMuonPerformance.cxx:39
 AliAnalysisTaskMuonPerformance.cxx:40
 AliAnalysisTaskMuonPerformance.cxx:41
 AliAnalysisTaskMuonPerformance.cxx:42
 AliAnalysisTaskMuonPerformance.cxx:43
 AliAnalysisTaskMuonPerformance.cxx:44
 AliAnalysisTaskMuonPerformance.cxx:45
 AliAnalysisTaskMuonPerformance.cxx:46
 AliAnalysisTaskMuonPerformance.cxx:47
 AliAnalysisTaskMuonPerformance.cxx:48
 AliAnalysisTaskMuonPerformance.cxx:49
 AliAnalysisTaskMuonPerformance.cxx:50
 AliAnalysisTaskMuonPerformance.cxx:51
 AliAnalysisTaskMuonPerformance.cxx:52
 AliAnalysisTaskMuonPerformance.cxx:53
 AliAnalysisTaskMuonPerformance.cxx:54
 AliAnalysisTaskMuonPerformance.cxx:55
 AliAnalysisTaskMuonPerformance.cxx:56
 AliAnalysisTaskMuonPerformance.cxx:57
 AliAnalysisTaskMuonPerformance.cxx:58
 AliAnalysisTaskMuonPerformance.cxx:59
 AliAnalysisTaskMuonPerformance.cxx:60
 AliAnalysisTaskMuonPerformance.cxx:61
 AliAnalysisTaskMuonPerformance.cxx:62
 AliAnalysisTaskMuonPerformance.cxx:63
 AliAnalysisTaskMuonPerformance.cxx:64
 AliAnalysisTaskMuonPerformance.cxx:65
 AliAnalysisTaskMuonPerformance.cxx:66
 AliAnalysisTaskMuonPerformance.cxx:67
 AliAnalysisTaskMuonPerformance.cxx:68
 AliAnalysisTaskMuonPerformance.cxx:69
 AliAnalysisTaskMuonPerformance.cxx:70
 AliAnalysisTaskMuonPerformance.cxx:71
 AliAnalysisTaskMuonPerformance.cxx:72
 AliAnalysisTaskMuonPerformance.cxx:73
 AliAnalysisTaskMuonPerformance.cxx:74
 AliAnalysisTaskMuonPerformance.cxx:75
 AliAnalysisTaskMuonPerformance.cxx:76
 AliAnalysisTaskMuonPerformance.cxx:77
 AliAnalysisTaskMuonPerformance.cxx:78
 AliAnalysisTaskMuonPerformance.cxx:79
 AliAnalysisTaskMuonPerformance.cxx:80
 AliAnalysisTaskMuonPerformance.cxx:81
 AliAnalysisTaskMuonPerformance.cxx:82
 AliAnalysisTaskMuonPerformance.cxx:83
 AliAnalysisTaskMuonPerformance.cxx:84
 AliAnalysisTaskMuonPerformance.cxx:85
 AliAnalysisTaskMuonPerformance.cxx:86
 AliAnalysisTaskMuonPerformance.cxx:87
 AliAnalysisTaskMuonPerformance.cxx:88
 AliAnalysisTaskMuonPerformance.cxx:89
 AliAnalysisTaskMuonPerformance.cxx:90
 AliAnalysisTaskMuonPerformance.cxx:91
 AliAnalysisTaskMuonPerformance.cxx:92
 AliAnalysisTaskMuonPerformance.cxx:93
 AliAnalysisTaskMuonPerformance.cxx:94
 AliAnalysisTaskMuonPerformance.cxx:95
 AliAnalysisTaskMuonPerformance.cxx:96
 AliAnalysisTaskMuonPerformance.cxx:97
 AliAnalysisTaskMuonPerformance.cxx:98
 AliAnalysisTaskMuonPerformance.cxx:99
 AliAnalysisTaskMuonPerformance.cxx:100
 AliAnalysisTaskMuonPerformance.cxx:101
 AliAnalysisTaskMuonPerformance.cxx:102
 AliAnalysisTaskMuonPerformance.cxx:103
 AliAnalysisTaskMuonPerformance.cxx:104
 AliAnalysisTaskMuonPerformance.cxx:105
 AliAnalysisTaskMuonPerformance.cxx:106
 AliAnalysisTaskMuonPerformance.cxx:107
 AliAnalysisTaskMuonPerformance.cxx:108
 AliAnalysisTaskMuonPerformance.cxx:109
 AliAnalysisTaskMuonPerformance.cxx:110
 AliAnalysisTaskMuonPerformance.cxx:111
 AliAnalysisTaskMuonPerformance.cxx:112
 AliAnalysisTaskMuonPerformance.cxx:113
 AliAnalysisTaskMuonPerformance.cxx:114
 AliAnalysisTaskMuonPerformance.cxx:115
 AliAnalysisTaskMuonPerformance.cxx:116
 AliAnalysisTaskMuonPerformance.cxx:117
 AliAnalysisTaskMuonPerformance.cxx:118
 AliAnalysisTaskMuonPerformance.cxx:119
 AliAnalysisTaskMuonPerformance.cxx:120
 AliAnalysisTaskMuonPerformance.cxx:121
 AliAnalysisTaskMuonPerformance.cxx:122
 AliAnalysisTaskMuonPerformance.cxx:123
 AliAnalysisTaskMuonPerformance.cxx:124
 AliAnalysisTaskMuonPerformance.cxx:125
 AliAnalysisTaskMuonPerformance.cxx:126
 AliAnalysisTaskMuonPerformance.cxx:127
 AliAnalysisTaskMuonPerformance.cxx:128
 AliAnalysisTaskMuonPerformance.cxx:129
 AliAnalysisTaskMuonPerformance.cxx:130
 AliAnalysisTaskMuonPerformance.cxx:131
 AliAnalysisTaskMuonPerformance.cxx:132
 AliAnalysisTaskMuonPerformance.cxx:133
 AliAnalysisTaskMuonPerformance.cxx:134
 AliAnalysisTaskMuonPerformance.cxx:135
 AliAnalysisTaskMuonPerformance.cxx:136
 AliAnalysisTaskMuonPerformance.cxx:137
 AliAnalysisTaskMuonPerformance.cxx:138
 AliAnalysisTaskMuonPerformance.cxx:139
 AliAnalysisTaskMuonPerformance.cxx:140
 AliAnalysisTaskMuonPerformance.cxx:141
 AliAnalysisTaskMuonPerformance.cxx:142
 AliAnalysisTaskMuonPerformance.cxx:143
 AliAnalysisTaskMuonPerformance.cxx:144
 AliAnalysisTaskMuonPerformance.cxx:145
 AliAnalysisTaskMuonPerformance.cxx:146
 AliAnalysisTaskMuonPerformance.cxx:147
 AliAnalysisTaskMuonPerformance.cxx:148
 AliAnalysisTaskMuonPerformance.cxx:149
 AliAnalysisTaskMuonPerformance.cxx:150
 AliAnalysisTaskMuonPerformance.cxx:151
 AliAnalysisTaskMuonPerformance.cxx:152
 AliAnalysisTaskMuonPerformance.cxx:153
 AliAnalysisTaskMuonPerformance.cxx:154
 AliAnalysisTaskMuonPerformance.cxx:155
 AliAnalysisTaskMuonPerformance.cxx:156
 AliAnalysisTaskMuonPerformance.cxx:157
 AliAnalysisTaskMuonPerformance.cxx:158
 AliAnalysisTaskMuonPerformance.cxx:159
 AliAnalysisTaskMuonPerformance.cxx:160
 AliAnalysisTaskMuonPerformance.cxx:161
 AliAnalysisTaskMuonPerformance.cxx:162
 AliAnalysisTaskMuonPerformance.cxx:163
 AliAnalysisTaskMuonPerformance.cxx:164
 AliAnalysisTaskMuonPerformance.cxx:165
 AliAnalysisTaskMuonPerformance.cxx:166
 AliAnalysisTaskMuonPerformance.cxx:167
 AliAnalysisTaskMuonPerformance.cxx:168
 AliAnalysisTaskMuonPerformance.cxx:169
 AliAnalysisTaskMuonPerformance.cxx:170
 AliAnalysisTaskMuonPerformance.cxx:171
 AliAnalysisTaskMuonPerformance.cxx:172
 AliAnalysisTaskMuonPerformance.cxx:173
 AliAnalysisTaskMuonPerformance.cxx:174
 AliAnalysisTaskMuonPerformance.cxx:175
 AliAnalysisTaskMuonPerformance.cxx:176
 AliAnalysisTaskMuonPerformance.cxx:177
 AliAnalysisTaskMuonPerformance.cxx:178
 AliAnalysisTaskMuonPerformance.cxx:179
 AliAnalysisTaskMuonPerformance.cxx:180
 AliAnalysisTaskMuonPerformance.cxx:181
 AliAnalysisTaskMuonPerformance.cxx:182
 AliAnalysisTaskMuonPerformance.cxx:183
 AliAnalysisTaskMuonPerformance.cxx:184
 AliAnalysisTaskMuonPerformance.cxx:185
 AliAnalysisTaskMuonPerformance.cxx:186
 AliAnalysisTaskMuonPerformance.cxx:187
 AliAnalysisTaskMuonPerformance.cxx:188
 AliAnalysisTaskMuonPerformance.cxx:189
 AliAnalysisTaskMuonPerformance.cxx:190
 AliAnalysisTaskMuonPerformance.cxx:191
 AliAnalysisTaskMuonPerformance.cxx:192
 AliAnalysisTaskMuonPerformance.cxx:193
 AliAnalysisTaskMuonPerformance.cxx:194
 AliAnalysisTaskMuonPerformance.cxx:195
 AliAnalysisTaskMuonPerformance.cxx:196
 AliAnalysisTaskMuonPerformance.cxx:197
 AliAnalysisTaskMuonPerformance.cxx:198
 AliAnalysisTaskMuonPerformance.cxx:199
 AliAnalysisTaskMuonPerformance.cxx:200
 AliAnalysisTaskMuonPerformance.cxx:201
 AliAnalysisTaskMuonPerformance.cxx:202
 AliAnalysisTaskMuonPerformance.cxx:203
 AliAnalysisTaskMuonPerformance.cxx:204
 AliAnalysisTaskMuonPerformance.cxx:205
 AliAnalysisTaskMuonPerformance.cxx:206
 AliAnalysisTaskMuonPerformance.cxx:207
 AliAnalysisTaskMuonPerformance.cxx:208
 AliAnalysisTaskMuonPerformance.cxx:209
 AliAnalysisTaskMuonPerformance.cxx:210
 AliAnalysisTaskMuonPerformance.cxx:211
 AliAnalysisTaskMuonPerformance.cxx:212
 AliAnalysisTaskMuonPerformance.cxx:213
 AliAnalysisTaskMuonPerformance.cxx:214
 AliAnalysisTaskMuonPerformance.cxx:215
 AliAnalysisTaskMuonPerformance.cxx:216
 AliAnalysisTaskMuonPerformance.cxx:217
 AliAnalysisTaskMuonPerformance.cxx:218
 AliAnalysisTaskMuonPerformance.cxx:219
 AliAnalysisTaskMuonPerformance.cxx:220
 AliAnalysisTaskMuonPerformance.cxx:221
 AliAnalysisTaskMuonPerformance.cxx:222
 AliAnalysisTaskMuonPerformance.cxx:223
 AliAnalysisTaskMuonPerformance.cxx:224
 AliAnalysisTaskMuonPerformance.cxx:225
 AliAnalysisTaskMuonPerformance.cxx:226
 AliAnalysisTaskMuonPerformance.cxx:227
 AliAnalysisTaskMuonPerformance.cxx:228
 AliAnalysisTaskMuonPerformance.cxx:229
 AliAnalysisTaskMuonPerformance.cxx:230
 AliAnalysisTaskMuonPerformance.cxx:231
 AliAnalysisTaskMuonPerformance.cxx:232
 AliAnalysisTaskMuonPerformance.cxx:233
 AliAnalysisTaskMuonPerformance.cxx:234
 AliAnalysisTaskMuonPerformance.cxx:235
 AliAnalysisTaskMuonPerformance.cxx:236
 AliAnalysisTaskMuonPerformance.cxx:237
 AliAnalysisTaskMuonPerformance.cxx:238
 AliAnalysisTaskMuonPerformance.cxx:239
 AliAnalysisTaskMuonPerformance.cxx:240
 AliAnalysisTaskMuonPerformance.cxx:241
 AliAnalysisTaskMuonPerformance.cxx:242
 AliAnalysisTaskMuonPerformance.cxx:243
 AliAnalysisTaskMuonPerformance.cxx:244
 AliAnalysisTaskMuonPerformance.cxx:245
 AliAnalysisTaskMuonPerformance.cxx:246
 AliAnalysisTaskMuonPerformance.cxx:247
 AliAnalysisTaskMuonPerformance.cxx:248
 AliAnalysisTaskMuonPerformance.cxx:249
 AliAnalysisTaskMuonPerformance.cxx:250
 AliAnalysisTaskMuonPerformance.cxx:251
 AliAnalysisTaskMuonPerformance.cxx:252
 AliAnalysisTaskMuonPerformance.cxx:253
 AliAnalysisTaskMuonPerformance.cxx:254
 AliAnalysisTaskMuonPerformance.cxx:255
 AliAnalysisTaskMuonPerformance.cxx:256
 AliAnalysisTaskMuonPerformance.cxx:257
 AliAnalysisTaskMuonPerformance.cxx:258
 AliAnalysisTaskMuonPerformance.cxx:259
 AliAnalysisTaskMuonPerformance.cxx:260
 AliAnalysisTaskMuonPerformance.cxx:261
 AliAnalysisTaskMuonPerformance.cxx:262
 AliAnalysisTaskMuonPerformance.cxx:263
 AliAnalysisTaskMuonPerformance.cxx:264
 AliAnalysisTaskMuonPerformance.cxx:265
 AliAnalysisTaskMuonPerformance.cxx:266
 AliAnalysisTaskMuonPerformance.cxx:267
 AliAnalysisTaskMuonPerformance.cxx:268
 AliAnalysisTaskMuonPerformance.cxx:269
 AliAnalysisTaskMuonPerformance.cxx:270
 AliAnalysisTaskMuonPerformance.cxx:271
 AliAnalysisTaskMuonPerformance.cxx:272
 AliAnalysisTaskMuonPerformance.cxx:273
 AliAnalysisTaskMuonPerformance.cxx:274
 AliAnalysisTaskMuonPerformance.cxx:275
 AliAnalysisTaskMuonPerformance.cxx:276
 AliAnalysisTaskMuonPerformance.cxx:277
 AliAnalysisTaskMuonPerformance.cxx:278
 AliAnalysisTaskMuonPerformance.cxx:279
 AliAnalysisTaskMuonPerformance.cxx:280
 AliAnalysisTaskMuonPerformance.cxx:281
 AliAnalysisTaskMuonPerformance.cxx:282
 AliAnalysisTaskMuonPerformance.cxx:283
 AliAnalysisTaskMuonPerformance.cxx:284
 AliAnalysisTaskMuonPerformance.cxx:285
 AliAnalysisTaskMuonPerformance.cxx:286
 AliAnalysisTaskMuonPerformance.cxx:287
 AliAnalysisTaskMuonPerformance.cxx:288
 AliAnalysisTaskMuonPerformance.cxx:289
 AliAnalysisTaskMuonPerformance.cxx:290
 AliAnalysisTaskMuonPerformance.cxx:291
 AliAnalysisTaskMuonPerformance.cxx:292
 AliAnalysisTaskMuonPerformance.cxx:293
 AliAnalysisTaskMuonPerformance.cxx:294
 AliAnalysisTaskMuonPerformance.cxx:295
 AliAnalysisTaskMuonPerformance.cxx:296
 AliAnalysisTaskMuonPerformance.cxx:297
 AliAnalysisTaskMuonPerformance.cxx:298
 AliAnalysisTaskMuonPerformance.cxx:299
 AliAnalysisTaskMuonPerformance.cxx:300
 AliAnalysisTaskMuonPerformance.cxx:301
 AliAnalysisTaskMuonPerformance.cxx:302
 AliAnalysisTaskMuonPerformance.cxx:303
 AliAnalysisTaskMuonPerformance.cxx:304
 AliAnalysisTaskMuonPerformance.cxx:305
 AliAnalysisTaskMuonPerformance.cxx:306
 AliAnalysisTaskMuonPerformance.cxx:307
 AliAnalysisTaskMuonPerformance.cxx:308
 AliAnalysisTaskMuonPerformance.cxx:309
 AliAnalysisTaskMuonPerformance.cxx:310
 AliAnalysisTaskMuonPerformance.cxx:311
 AliAnalysisTaskMuonPerformance.cxx:312
 AliAnalysisTaskMuonPerformance.cxx:313
 AliAnalysisTaskMuonPerformance.cxx:314
 AliAnalysisTaskMuonPerformance.cxx:315
 AliAnalysisTaskMuonPerformance.cxx:316
 AliAnalysisTaskMuonPerformance.cxx:317
 AliAnalysisTaskMuonPerformance.cxx:318
 AliAnalysisTaskMuonPerformance.cxx:319
 AliAnalysisTaskMuonPerformance.cxx:320
 AliAnalysisTaskMuonPerformance.cxx:321
 AliAnalysisTaskMuonPerformance.cxx:322
 AliAnalysisTaskMuonPerformance.cxx:323
 AliAnalysisTaskMuonPerformance.cxx:324
 AliAnalysisTaskMuonPerformance.cxx:325
 AliAnalysisTaskMuonPerformance.cxx:326
 AliAnalysisTaskMuonPerformance.cxx:327
 AliAnalysisTaskMuonPerformance.cxx:328
 AliAnalysisTaskMuonPerformance.cxx:329
 AliAnalysisTaskMuonPerformance.cxx:330
 AliAnalysisTaskMuonPerformance.cxx:331
 AliAnalysisTaskMuonPerformance.cxx:332
 AliAnalysisTaskMuonPerformance.cxx:333
 AliAnalysisTaskMuonPerformance.cxx:334
 AliAnalysisTaskMuonPerformance.cxx:335
 AliAnalysisTaskMuonPerformance.cxx:336
 AliAnalysisTaskMuonPerformance.cxx:337
 AliAnalysisTaskMuonPerformance.cxx:338
 AliAnalysisTaskMuonPerformance.cxx:339
 AliAnalysisTaskMuonPerformance.cxx:340
 AliAnalysisTaskMuonPerformance.cxx:341
 AliAnalysisTaskMuonPerformance.cxx:342
 AliAnalysisTaskMuonPerformance.cxx:343
 AliAnalysisTaskMuonPerformance.cxx:344
 AliAnalysisTaskMuonPerformance.cxx:345
 AliAnalysisTaskMuonPerformance.cxx:346
 AliAnalysisTaskMuonPerformance.cxx:347
 AliAnalysisTaskMuonPerformance.cxx:348
 AliAnalysisTaskMuonPerformance.cxx:349
 AliAnalysisTaskMuonPerformance.cxx:350
 AliAnalysisTaskMuonPerformance.cxx:351
 AliAnalysisTaskMuonPerformance.cxx:352
 AliAnalysisTaskMuonPerformance.cxx:353
 AliAnalysisTaskMuonPerformance.cxx:354
 AliAnalysisTaskMuonPerformance.cxx:355
 AliAnalysisTaskMuonPerformance.cxx:356
 AliAnalysisTaskMuonPerformance.cxx:357
 AliAnalysisTaskMuonPerformance.cxx:358
 AliAnalysisTaskMuonPerformance.cxx:359
 AliAnalysisTaskMuonPerformance.cxx:360
 AliAnalysisTaskMuonPerformance.cxx:361
 AliAnalysisTaskMuonPerformance.cxx:362
 AliAnalysisTaskMuonPerformance.cxx:363
 AliAnalysisTaskMuonPerformance.cxx:364
 AliAnalysisTaskMuonPerformance.cxx:365
 AliAnalysisTaskMuonPerformance.cxx:366
 AliAnalysisTaskMuonPerformance.cxx:367
 AliAnalysisTaskMuonPerformance.cxx:368
 AliAnalysisTaskMuonPerformance.cxx:369
 AliAnalysisTaskMuonPerformance.cxx:370
 AliAnalysisTaskMuonPerformance.cxx:371
 AliAnalysisTaskMuonPerformance.cxx:372
 AliAnalysisTaskMuonPerformance.cxx:373
 AliAnalysisTaskMuonPerformance.cxx:374
 AliAnalysisTaskMuonPerformance.cxx:375
 AliAnalysisTaskMuonPerformance.cxx:376
 AliAnalysisTaskMuonPerformance.cxx:377
 AliAnalysisTaskMuonPerformance.cxx:378
 AliAnalysisTaskMuonPerformance.cxx:379
 AliAnalysisTaskMuonPerformance.cxx:380
 AliAnalysisTaskMuonPerformance.cxx:381
 AliAnalysisTaskMuonPerformance.cxx:382
 AliAnalysisTaskMuonPerformance.cxx:383
 AliAnalysisTaskMuonPerformance.cxx:384
 AliAnalysisTaskMuonPerformance.cxx:385
 AliAnalysisTaskMuonPerformance.cxx:386
 AliAnalysisTaskMuonPerformance.cxx:387
 AliAnalysisTaskMuonPerformance.cxx:388
 AliAnalysisTaskMuonPerformance.cxx:389
 AliAnalysisTaskMuonPerformance.cxx:390
 AliAnalysisTaskMuonPerformance.cxx:391
 AliAnalysisTaskMuonPerformance.cxx:392
 AliAnalysisTaskMuonPerformance.cxx:393
 AliAnalysisTaskMuonPerformance.cxx:394
 AliAnalysisTaskMuonPerformance.cxx:395
 AliAnalysisTaskMuonPerformance.cxx:396
 AliAnalysisTaskMuonPerformance.cxx:397
 AliAnalysisTaskMuonPerformance.cxx:398
 AliAnalysisTaskMuonPerformance.cxx:399
 AliAnalysisTaskMuonPerformance.cxx:400
 AliAnalysisTaskMuonPerformance.cxx:401
 AliAnalysisTaskMuonPerformance.cxx:402
 AliAnalysisTaskMuonPerformance.cxx:403
 AliAnalysisTaskMuonPerformance.cxx:404
 AliAnalysisTaskMuonPerformance.cxx:405
 AliAnalysisTaskMuonPerformance.cxx:406
 AliAnalysisTaskMuonPerformance.cxx:407
 AliAnalysisTaskMuonPerformance.cxx:408
 AliAnalysisTaskMuonPerformance.cxx:409
 AliAnalysisTaskMuonPerformance.cxx:410
 AliAnalysisTaskMuonPerformance.cxx:411
 AliAnalysisTaskMuonPerformance.cxx:412
 AliAnalysisTaskMuonPerformance.cxx:413
 AliAnalysisTaskMuonPerformance.cxx:414
 AliAnalysisTaskMuonPerformance.cxx:415
 AliAnalysisTaskMuonPerformance.cxx:416
 AliAnalysisTaskMuonPerformance.cxx:417
 AliAnalysisTaskMuonPerformance.cxx:418
 AliAnalysisTaskMuonPerformance.cxx:419
 AliAnalysisTaskMuonPerformance.cxx:420
 AliAnalysisTaskMuonPerformance.cxx:421
 AliAnalysisTaskMuonPerformance.cxx:422
 AliAnalysisTaskMuonPerformance.cxx:423
 AliAnalysisTaskMuonPerformance.cxx:424
 AliAnalysisTaskMuonPerformance.cxx:425
 AliAnalysisTaskMuonPerformance.cxx:426
 AliAnalysisTaskMuonPerformance.cxx:427
 AliAnalysisTaskMuonPerformance.cxx:428
 AliAnalysisTaskMuonPerformance.cxx:429
 AliAnalysisTaskMuonPerformance.cxx:430
 AliAnalysisTaskMuonPerformance.cxx:431
 AliAnalysisTaskMuonPerformance.cxx:432
 AliAnalysisTaskMuonPerformance.cxx:433
 AliAnalysisTaskMuonPerformance.cxx:434
 AliAnalysisTaskMuonPerformance.cxx:435
 AliAnalysisTaskMuonPerformance.cxx:436
 AliAnalysisTaskMuonPerformance.cxx:437
 AliAnalysisTaskMuonPerformance.cxx:438
 AliAnalysisTaskMuonPerformance.cxx:439
 AliAnalysisTaskMuonPerformance.cxx:440
 AliAnalysisTaskMuonPerformance.cxx:441
 AliAnalysisTaskMuonPerformance.cxx:442
 AliAnalysisTaskMuonPerformance.cxx:443
 AliAnalysisTaskMuonPerformance.cxx:444
 AliAnalysisTaskMuonPerformance.cxx:445
 AliAnalysisTaskMuonPerformance.cxx:446
 AliAnalysisTaskMuonPerformance.cxx:447
 AliAnalysisTaskMuonPerformance.cxx:448
 AliAnalysisTaskMuonPerformance.cxx:449
 AliAnalysisTaskMuonPerformance.cxx:450
 AliAnalysisTaskMuonPerformance.cxx:451
 AliAnalysisTaskMuonPerformance.cxx:452
 AliAnalysisTaskMuonPerformance.cxx:453
 AliAnalysisTaskMuonPerformance.cxx:454
 AliAnalysisTaskMuonPerformance.cxx:455
 AliAnalysisTaskMuonPerformance.cxx:456
 AliAnalysisTaskMuonPerformance.cxx:457
 AliAnalysisTaskMuonPerformance.cxx:458
 AliAnalysisTaskMuonPerformance.cxx:459
 AliAnalysisTaskMuonPerformance.cxx:460
 AliAnalysisTaskMuonPerformance.cxx:461
 AliAnalysisTaskMuonPerformance.cxx:462
 AliAnalysisTaskMuonPerformance.cxx:463
 AliAnalysisTaskMuonPerformance.cxx:464
 AliAnalysisTaskMuonPerformance.cxx:465
 AliAnalysisTaskMuonPerformance.cxx:466
 AliAnalysisTaskMuonPerformance.cxx:467
 AliAnalysisTaskMuonPerformance.cxx:468
 AliAnalysisTaskMuonPerformance.cxx:469
 AliAnalysisTaskMuonPerformance.cxx:470
 AliAnalysisTaskMuonPerformance.cxx:471
 AliAnalysisTaskMuonPerformance.cxx:472
 AliAnalysisTaskMuonPerformance.cxx:473
 AliAnalysisTaskMuonPerformance.cxx:474
 AliAnalysisTaskMuonPerformance.cxx:475
 AliAnalysisTaskMuonPerformance.cxx:476
 AliAnalysisTaskMuonPerformance.cxx:477
 AliAnalysisTaskMuonPerformance.cxx:478
 AliAnalysisTaskMuonPerformance.cxx:479
 AliAnalysisTaskMuonPerformance.cxx:480
 AliAnalysisTaskMuonPerformance.cxx:481
 AliAnalysisTaskMuonPerformance.cxx:482
 AliAnalysisTaskMuonPerformance.cxx:483
 AliAnalysisTaskMuonPerformance.cxx:484
 AliAnalysisTaskMuonPerformance.cxx:485
 AliAnalysisTaskMuonPerformance.cxx:486
 AliAnalysisTaskMuonPerformance.cxx:487
 AliAnalysisTaskMuonPerformance.cxx:488
 AliAnalysisTaskMuonPerformance.cxx:489
 AliAnalysisTaskMuonPerformance.cxx:490
 AliAnalysisTaskMuonPerformance.cxx:491
 AliAnalysisTaskMuonPerformance.cxx:492
 AliAnalysisTaskMuonPerformance.cxx:493
 AliAnalysisTaskMuonPerformance.cxx:494
 AliAnalysisTaskMuonPerformance.cxx:495
 AliAnalysisTaskMuonPerformance.cxx:496
 AliAnalysisTaskMuonPerformance.cxx:497
 AliAnalysisTaskMuonPerformance.cxx:498
 AliAnalysisTaskMuonPerformance.cxx:499
 AliAnalysisTaskMuonPerformance.cxx:500
 AliAnalysisTaskMuonPerformance.cxx:501
 AliAnalysisTaskMuonPerformance.cxx:502
 AliAnalysisTaskMuonPerformance.cxx:503
 AliAnalysisTaskMuonPerformance.cxx:504
 AliAnalysisTaskMuonPerformance.cxx:505
 AliAnalysisTaskMuonPerformance.cxx:506
 AliAnalysisTaskMuonPerformance.cxx:507
 AliAnalysisTaskMuonPerformance.cxx:508
 AliAnalysisTaskMuonPerformance.cxx:509
 AliAnalysisTaskMuonPerformance.cxx:510
 AliAnalysisTaskMuonPerformance.cxx:511
 AliAnalysisTaskMuonPerformance.cxx:512
 AliAnalysisTaskMuonPerformance.cxx:513
 AliAnalysisTaskMuonPerformance.cxx:514
 AliAnalysisTaskMuonPerformance.cxx:515
 AliAnalysisTaskMuonPerformance.cxx:516
 AliAnalysisTaskMuonPerformance.cxx:517
 AliAnalysisTaskMuonPerformance.cxx:518
 AliAnalysisTaskMuonPerformance.cxx:519
 AliAnalysisTaskMuonPerformance.cxx:520
 AliAnalysisTaskMuonPerformance.cxx:521
 AliAnalysisTaskMuonPerformance.cxx:522
 AliAnalysisTaskMuonPerformance.cxx:523
 AliAnalysisTaskMuonPerformance.cxx:524
 AliAnalysisTaskMuonPerformance.cxx:525
 AliAnalysisTaskMuonPerformance.cxx:526
 AliAnalysisTaskMuonPerformance.cxx:527
 AliAnalysisTaskMuonPerformance.cxx:528
 AliAnalysisTaskMuonPerformance.cxx:529
 AliAnalysisTaskMuonPerformance.cxx:530
 AliAnalysisTaskMuonPerformance.cxx:531
 AliAnalysisTaskMuonPerformance.cxx:532
 AliAnalysisTaskMuonPerformance.cxx:533
 AliAnalysisTaskMuonPerformance.cxx:534
 AliAnalysisTaskMuonPerformance.cxx:535
 AliAnalysisTaskMuonPerformance.cxx:536
 AliAnalysisTaskMuonPerformance.cxx:537
 AliAnalysisTaskMuonPerformance.cxx:538
 AliAnalysisTaskMuonPerformance.cxx:539
 AliAnalysisTaskMuonPerformance.cxx:540
 AliAnalysisTaskMuonPerformance.cxx:541
 AliAnalysisTaskMuonPerformance.cxx:542
 AliAnalysisTaskMuonPerformance.cxx:543
 AliAnalysisTaskMuonPerformance.cxx:544
 AliAnalysisTaskMuonPerformance.cxx:545
 AliAnalysisTaskMuonPerformance.cxx:546
 AliAnalysisTaskMuonPerformance.cxx:547
 AliAnalysisTaskMuonPerformance.cxx:548
 AliAnalysisTaskMuonPerformance.cxx:549
 AliAnalysisTaskMuonPerformance.cxx:550
 AliAnalysisTaskMuonPerformance.cxx:551
 AliAnalysisTaskMuonPerformance.cxx:552
 AliAnalysisTaskMuonPerformance.cxx:553
 AliAnalysisTaskMuonPerformance.cxx:554
 AliAnalysisTaskMuonPerformance.cxx:555
 AliAnalysisTaskMuonPerformance.cxx:556
 AliAnalysisTaskMuonPerformance.cxx:557
 AliAnalysisTaskMuonPerformance.cxx:558
 AliAnalysisTaskMuonPerformance.cxx:559
 AliAnalysisTaskMuonPerformance.cxx:560
 AliAnalysisTaskMuonPerformance.cxx:561
 AliAnalysisTaskMuonPerformance.cxx:562
 AliAnalysisTaskMuonPerformance.cxx:563
 AliAnalysisTaskMuonPerformance.cxx:564
 AliAnalysisTaskMuonPerformance.cxx:565
 AliAnalysisTaskMuonPerformance.cxx:566
 AliAnalysisTaskMuonPerformance.cxx:567
 AliAnalysisTaskMuonPerformance.cxx:568
 AliAnalysisTaskMuonPerformance.cxx:569
 AliAnalysisTaskMuonPerformance.cxx:570
 AliAnalysisTaskMuonPerformance.cxx:571
 AliAnalysisTaskMuonPerformance.cxx:572
 AliAnalysisTaskMuonPerformance.cxx:573
 AliAnalysisTaskMuonPerformance.cxx:574
 AliAnalysisTaskMuonPerformance.cxx:575
 AliAnalysisTaskMuonPerformance.cxx:576
 AliAnalysisTaskMuonPerformance.cxx:577
 AliAnalysisTaskMuonPerformance.cxx:578
 AliAnalysisTaskMuonPerformance.cxx:579
 AliAnalysisTaskMuonPerformance.cxx:580
 AliAnalysisTaskMuonPerformance.cxx:581
 AliAnalysisTaskMuonPerformance.cxx:582
 AliAnalysisTaskMuonPerformance.cxx:583
 AliAnalysisTaskMuonPerformance.cxx:584
 AliAnalysisTaskMuonPerformance.cxx:585
 AliAnalysisTaskMuonPerformance.cxx:586
 AliAnalysisTaskMuonPerformance.cxx:587
 AliAnalysisTaskMuonPerformance.cxx:588
 AliAnalysisTaskMuonPerformance.cxx:589
 AliAnalysisTaskMuonPerformance.cxx:590
 AliAnalysisTaskMuonPerformance.cxx:591
 AliAnalysisTaskMuonPerformance.cxx:592
 AliAnalysisTaskMuonPerformance.cxx:593
 AliAnalysisTaskMuonPerformance.cxx:594
 AliAnalysisTaskMuonPerformance.cxx:595
 AliAnalysisTaskMuonPerformance.cxx:596
 AliAnalysisTaskMuonPerformance.cxx:597
 AliAnalysisTaskMuonPerformance.cxx:598
 AliAnalysisTaskMuonPerformance.cxx:599
 AliAnalysisTaskMuonPerformance.cxx:600
 AliAnalysisTaskMuonPerformance.cxx:601
 AliAnalysisTaskMuonPerformance.cxx:602
 AliAnalysisTaskMuonPerformance.cxx:603
 AliAnalysisTaskMuonPerformance.cxx:604
 AliAnalysisTaskMuonPerformance.cxx:605
 AliAnalysisTaskMuonPerformance.cxx:606
 AliAnalysisTaskMuonPerformance.cxx:607
 AliAnalysisTaskMuonPerformance.cxx:608
 AliAnalysisTaskMuonPerformance.cxx:609
 AliAnalysisTaskMuonPerformance.cxx:610
 AliAnalysisTaskMuonPerformance.cxx:611
 AliAnalysisTaskMuonPerformance.cxx:612
 AliAnalysisTaskMuonPerformance.cxx:613
 AliAnalysisTaskMuonPerformance.cxx:614
 AliAnalysisTaskMuonPerformance.cxx:615
 AliAnalysisTaskMuonPerformance.cxx:616
 AliAnalysisTaskMuonPerformance.cxx:617
 AliAnalysisTaskMuonPerformance.cxx:618
 AliAnalysisTaskMuonPerformance.cxx:619
 AliAnalysisTaskMuonPerformance.cxx:620
 AliAnalysisTaskMuonPerformance.cxx:621
 AliAnalysisTaskMuonPerformance.cxx:622
 AliAnalysisTaskMuonPerformance.cxx:623
 AliAnalysisTaskMuonPerformance.cxx:624
 AliAnalysisTaskMuonPerformance.cxx:625
 AliAnalysisTaskMuonPerformance.cxx:626
 AliAnalysisTaskMuonPerformance.cxx:627
 AliAnalysisTaskMuonPerformance.cxx:628
 AliAnalysisTaskMuonPerformance.cxx:629
 AliAnalysisTaskMuonPerformance.cxx:630
 AliAnalysisTaskMuonPerformance.cxx:631
 AliAnalysisTaskMuonPerformance.cxx:632
 AliAnalysisTaskMuonPerformance.cxx:633
 AliAnalysisTaskMuonPerformance.cxx:634
 AliAnalysisTaskMuonPerformance.cxx:635
 AliAnalysisTaskMuonPerformance.cxx:636
 AliAnalysisTaskMuonPerformance.cxx:637
 AliAnalysisTaskMuonPerformance.cxx:638
 AliAnalysisTaskMuonPerformance.cxx:639
 AliAnalysisTaskMuonPerformance.cxx:640
 AliAnalysisTaskMuonPerformance.cxx:641
 AliAnalysisTaskMuonPerformance.cxx:642
 AliAnalysisTaskMuonPerformance.cxx:643
 AliAnalysisTaskMuonPerformance.cxx:644
 AliAnalysisTaskMuonPerformance.cxx:645
 AliAnalysisTaskMuonPerformance.cxx:646
 AliAnalysisTaskMuonPerformance.cxx:647
 AliAnalysisTaskMuonPerformance.cxx:648
 AliAnalysisTaskMuonPerformance.cxx:649
 AliAnalysisTaskMuonPerformance.cxx:650
 AliAnalysisTaskMuonPerformance.cxx:651
 AliAnalysisTaskMuonPerformance.cxx:652
 AliAnalysisTaskMuonPerformance.cxx:653
 AliAnalysisTaskMuonPerformance.cxx:654
 AliAnalysisTaskMuonPerformance.cxx:655
 AliAnalysisTaskMuonPerformance.cxx:656
 AliAnalysisTaskMuonPerformance.cxx:657
 AliAnalysisTaskMuonPerformance.cxx:658
 AliAnalysisTaskMuonPerformance.cxx:659
 AliAnalysisTaskMuonPerformance.cxx:660
 AliAnalysisTaskMuonPerformance.cxx:661
 AliAnalysisTaskMuonPerformance.cxx:662
 AliAnalysisTaskMuonPerformance.cxx:663
 AliAnalysisTaskMuonPerformance.cxx:664
 AliAnalysisTaskMuonPerformance.cxx:665
 AliAnalysisTaskMuonPerformance.cxx:666
 AliAnalysisTaskMuonPerformance.cxx:667
 AliAnalysisTaskMuonPerformance.cxx:668
 AliAnalysisTaskMuonPerformance.cxx:669
 AliAnalysisTaskMuonPerformance.cxx:670
 AliAnalysisTaskMuonPerformance.cxx:671
 AliAnalysisTaskMuonPerformance.cxx:672
 AliAnalysisTaskMuonPerformance.cxx:673
 AliAnalysisTaskMuonPerformance.cxx:674
 AliAnalysisTaskMuonPerformance.cxx:675
 AliAnalysisTaskMuonPerformance.cxx:676
 AliAnalysisTaskMuonPerformance.cxx:677
 AliAnalysisTaskMuonPerformance.cxx:678
 AliAnalysisTaskMuonPerformance.cxx:679
 AliAnalysisTaskMuonPerformance.cxx:680
 AliAnalysisTaskMuonPerformance.cxx:681
 AliAnalysisTaskMuonPerformance.cxx:682
 AliAnalysisTaskMuonPerformance.cxx:683
 AliAnalysisTaskMuonPerformance.cxx:684
 AliAnalysisTaskMuonPerformance.cxx:685
 AliAnalysisTaskMuonPerformance.cxx:686
 AliAnalysisTaskMuonPerformance.cxx:687
 AliAnalysisTaskMuonPerformance.cxx:688
 AliAnalysisTaskMuonPerformance.cxx:689
 AliAnalysisTaskMuonPerformance.cxx:690
 AliAnalysisTaskMuonPerformance.cxx:691
 AliAnalysisTaskMuonPerformance.cxx:692
 AliAnalysisTaskMuonPerformance.cxx:693
 AliAnalysisTaskMuonPerformance.cxx:694
 AliAnalysisTaskMuonPerformance.cxx:695
 AliAnalysisTaskMuonPerformance.cxx:696
 AliAnalysisTaskMuonPerformance.cxx:697
 AliAnalysisTaskMuonPerformance.cxx:698
 AliAnalysisTaskMuonPerformance.cxx:699
 AliAnalysisTaskMuonPerformance.cxx:700
 AliAnalysisTaskMuonPerformance.cxx:701
 AliAnalysisTaskMuonPerformance.cxx:702
 AliAnalysisTaskMuonPerformance.cxx:703
 AliAnalysisTaskMuonPerformance.cxx:704
 AliAnalysisTaskMuonPerformance.cxx:705
 AliAnalysisTaskMuonPerformance.cxx:706
 AliAnalysisTaskMuonPerformance.cxx:707
 AliAnalysisTaskMuonPerformance.cxx:708
 AliAnalysisTaskMuonPerformance.cxx:709
 AliAnalysisTaskMuonPerformance.cxx:710
 AliAnalysisTaskMuonPerformance.cxx:711
 AliAnalysisTaskMuonPerformance.cxx:712
 AliAnalysisTaskMuonPerformance.cxx:713
 AliAnalysisTaskMuonPerformance.cxx:714
 AliAnalysisTaskMuonPerformance.cxx:715
 AliAnalysisTaskMuonPerformance.cxx:716
 AliAnalysisTaskMuonPerformance.cxx:717
 AliAnalysisTaskMuonPerformance.cxx:718
 AliAnalysisTaskMuonPerformance.cxx:719
 AliAnalysisTaskMuonPerformance.cxx:720
 AliAnalysisTaskMuonPerformance.cxx:721
 AliAnalysisTaskMuonPerformance.cxx:722
 AliAnalysisTaskMuonPerformance.cxx:723
 AliAnalysisTaskMuonPerformance.cxx:724
 AliAnalysisTaskMuonPerformance.cxx:725
 AliAnalysisTaskMuonPerformance.cxx:726
 AliAnalysisTaskMuonPerformance.cxx:727
 AliAnalysisTaskMuonPerformance.cxx:728
 AliAnalysisTaskMuonPerformance.cxx:729
 AliAnalysisTaskMuonPerformance.cxx:730
 AliAnalysisTaskMuonPerformance.cxx:731
 AliAnalysisTaskMuonPerformance.cxx:732
 AliAnalysisTaskMuonPerformance.cxx:733
 AliAnalysisTaskMuonPerformance.cxx:734
 AliAnalysisTaskMuonPerformance.cxx:735
 AliAnalysisTaskMuonPerformance.cxx:736
 AliAnalysisTaskMuonPerformance.cxx:737
 AliAnalysisTaskMuonPerformance.cxx:738
 AliAnalysisTaskMuonPerformance.cxx:739
 AliAnalysisTaskMuonPerformance.cxx:740
 AliAnalysisTaskMuonPerformance.cxx:741
 AliAnalysisTaskMuonPerformance.cxx:742
 AliAnalysisTaskMuonPerformance.cxx:743
 AliAnalysisTaskMuonPerformance.cxx:744
 AliAnalysisTaskMuonPerformance.cxx:745
 AliAnalysisTaskMuonPerformance.cxx:746
 AliAnalysisTaskMuonPerformance.cxx:747
 AliAnalysisTaskMuonPerformance.cxx:748
 AliAnalysisTaskMuonPerformance.cxx:749
 AliAnalysisTaskMuonPerformance.cxx:750
 AliAnalysisTaskMuonPerformance.cxx:751
 AliAnalysisTaskMuonPerformance.cxx:752
 AliAnalysisTaskMuonPerformance.cxx:753
 AliAnalysisTaskMuonPerformance.cxx:754
 AliAnalysisTaskMuonPerformance.cxx:755
 AliAnalysisTaskMuonPerformance.cxx:756
 AliAnalysisTaskMuonPerformance.cxx:757
 AliAnalysisTaskMuonPerformance.cxx:758
 AliAnalysisTaskMuonPerformance.cxx:759
 AliAnalysisTaskMuonPerformance.cxx:760
 AliAnalysisTaskMuonPerformance.cxx:761
 AliAnalysisTaskMuonPerformance.cxx:762
 AliAnalysisTaskMuonPerformance.cxx:763
 AliAnalysisTaskMuonPerformance.cxx:764
 AliAnalysisTaskMuonPerformance.cxx:765
 AliAnalysisTaskMuonPerformance.cxx:766
 AliAnalysisTaskMuonPerformance.cxx:767
 AliAnalysisTaskMuonPerformance.cxx:768
 AliAnalysisTaskMuonPerformance.cxx:769
 AliAnalysisTaskMuonPerformance.cxx:770
 AliAnalysisTaskMuonPerformance.cxx:771
 AliAnalysisTaskMuonPerformance.cxx:772
 AliAnalysisTaskMuonPerformance.cxx:773
 AliAnalysisTaskMuonPerformance.cxx:774
 AliAnalysisTaskMuonPerformance.cxx:775
 AliAnalysisTaskMuonPerformance.cxx:776
 AliAnalysisTaskMuonPerformance.cxx:777
 AliAnalysisTaskMuonPerformance.cxx:778
 AliAnalysisTaskMuonPerformance.cxx:779
 AliAnalysisTaskMuonPerformance.cxx:780
 AliAnalysisTaskMuonPerformance.cxx:781
 AliAnalysisTaskMuonPerformance.cxx:782
 AliAnalysisTaskMuonPerformance.cxx:783
 AliAnalysisTaskMuonPerformance.cxx:784
 AliAnalysisTaskMuonPerformance.cxx:785
 AliAnalysisTaskMuonPerformance.cxx:786
 AliAnalysisTaskMuonPerformance.cxx:787
 AliAnalysisTaskMuonPerformance.cxx:788
 AliAnalysisTaskMuonPerformance.cxx:789
 AliAnalysisTaskMuonPerformance.cxx:790
 AliAnalysisTaskMuonPerformance.cxx:791
 AliAnalysisTaskMuonPerformance.cxx:792
 AliAnalysisTaskMuonPerformance.cxx:793
 AliAnalysisTaskMuonPerformance.cxx:794
 AliAnalysisTaskMuonPerformance.cxx:795
 AliAnalysisTaskMuonPerformance.cxx:796
 AliAnalysisTaskMuonPerformance.cxx:797
 AliAnalysisTaskMuonPerformance.cxx:798
 AliAnalysisTaskMuonPerformance.cxx:799
 AliAnalysisTaskMuonPerformance.cxx:800
 AliAnalysisTaskMuonPerformance.cxx:801
 AliAnalysisTaskMuonPerformance.cxx:802
 AliAnalysisTaskMuonPerformance.cxx:803
 AliAnalysisTaskMuonPerformance.cxx:804
 AliAnalysisTaskMuonPerformance.cxx:805
 AliAnalysisTaskMuonPerformance.cxx:806
 AliAnalysisTaskMuonPerformance.cxx:807
 AliAnalysisTaskMuonPerformance.cxx:808
 AliAnalysisTaskMuonPerformance.cxx:809
 AliAnalysisTaskMuonPerformance.cxx:810
 AliAnalysisTaskMuonPerformance.cxx:811
 AliAnalysisTaskMuonPerformance.cxx:812
 AliAnalysisTaskMuonPerformance.cxx:813
 AliAnalysisTaskMuonPerformance.cxx:814
 AliAnalysisTaskMuonPerformance.cxx:815
 AliAnalysisTaskMuonPerformance.cxx:816
 AliAnalysisTaskMuonPerformance.cxx:817
 AliAnalysisTaskMuonPerformance.cxx:818
 AliAnalysisTaskMuonPerformance.cxx:819
 AliAnalysisTaskMuonPerformance.cxx:820
 AliAnalysisTaskMuonPerformance.cxx:821
 AliAnalysisTaskMuonPerformance.cxx:822
 AliAnalysisTaskMuonPerformance.cxx:823
 AliAnalysisTaskMuonPerformance.cxx:824
 AliAnalysisTaskMuonPerformance.cxx:825
 AliAnalysisTaskMuonPerformance.cxx:826
 AliAnalysisTaskMuonPerformance.cxx:827
 AliAnalysisTaskMuonPerformance.cxx:828
 AliAnalysisTaskMuonPerformance.cxx:829
 AliAnalysisTaskMuonPerformance.cxx:830
 AliAnalysisTaskMuonPerformance.cxx:831
 AliAnalysisTaskMuonPerformance.cxx:832
 AliAnalysisTaskMuonPerformance.cxx:833
 AliAnalysisTaskMuonPerformance.cxx:834
 AliAnalysisTaskMuonPerformance.cxx:835
 AliAnalysisTaskMuonPerformance.cxx:836
 AliAnalysisTaskMuonPerformance.cxx:837
 AliAnalysisTaskMuonPerformance.cxx:838
 AliAnalysisTaskMuonPerformance.cxx:839
 AliAnalysisTaskMuonPerformance.cxx:840
 AliAnalysisTaskMuonPerformance.cxx:841
 AliAnalysisTaskMuonPerformance.cxx:842
 AliAnalysisTaskMuonPerformance.cxx:843
 AliAnalysisTaskMuonPerformance.cxx:844
 AliAnalysisTaskMuonPerformance.cxx:845
 AliAnalysisTaskMuonPerformance.cxx:846
 AliAnalysisTaskMuonPerformance.cxx:847
 AliAnalysisTaskMuonPerformance.cxx:848
 AliAnalysisTaskMuonPerformance.cxx:849
 AliAnalysisTaskMuonPerformance.cxx:850
 AliAnalysisTaskMuonPerformance.cxx:851
 AliAnalysisTaskMuonPerformance.cxx:852
 AliAnalysisTaskMuonPerformance.cxx:853
 AliAnalysisTaskMuonPerformance.cxx:854
 AliAnalysisTaskMuonPerformance.cxx:855
 AliAnalysisTaskMuonPerformance.cxx:856
 AliAnalysisTaskMuonPerformance.cxx:857
 AliAnalysisTaskMuonPerformance.cxx:858
 AliAnalysisTaskMuonPerformance.cxx:859
 AliAnalysisTaskMuonPerformance.cxx:860
 AliAnalysisTaskMuonPerformance.cxx:861
 AliAnalysisTaskMuonPerformance.cxx:862
 AliAnalysisTaskMuonPerformance.cxx:863
 AliAnalysisTaskMuonPerformance.cxx:864
 AliAnalysisTaskMuonPerformance.cxx:865
 AliAnalysisTaskMuonPerformance.cxx:866
 AliAnalysisTaskMuonPerformance.cxx:867
 AliAnalysisTaskMuonPerformance.cxx:868
 AliAnalysisTaskMuonPerformance.cxx:869
 AliAnalysisTaskMuonPerformance.cxx:870
 AliAnalysisTaskMuonPerformance.cxx:871
 AliAnalysisTaskMuonPerformance.cxx:872
 AliAnalysisTaskMuonPerformance.cxx:873
 AliAnalysisTaskMuonPerformance.cxx:874
 AliAnalysisTaskMuonPerformance.cxx:875
 AliAnalysisTaskMuonPerformance.cxx:876
 AliAnalysisTaskMuonPerformance.cxx:877
 AliAnalysisTaskMuonPerformance.cxx:878
 AliAnalysisTaskMuonPerformance.cxx:879
 AliAnalysisTaskMuonPerformance.cxx:880
 AliAnalysisTaskMuonPerformance.cxx:881
 AliAnalysisTaskMuonPerformance.cxx:882
 AliAnalysisTaskMuonPerformance.cxx:883
 AliAnalysisTaskMuonPerformance.cxx:884
 AliAnalysisTaskMuonPerformance.cxx:885
 AliAnalysisTaskMuonPerformance.cxx:886
 AliAnalysisTaskMuonPerformance.cxx:887
 AliAnalysisTaskMuonPerformance.cxx:888
 AliAnalysisTaskMuonPerformance.cxx:889
 AliAnalysisTaskMuonPerformance.cxx:890
 AliAnalysisTaskMuonPerformance.cxx:891
 AliAnalysisTaskMuonPerformance.cxx:892
 AliAnalysisTaskMuonPerformance.cxx:893
 AliAnalysisTaskMuonPerformance.cxx:894
 AliAnalysisTaskMuonPerformance.cxx:895
 AliAnalysisTaskMuonPerformance.cxx:896
 AliAnalysisTaskMuonPerformance.cxx:897
 AliAnalysisTaskMuonPerformance.cxx:898
 AliAnalysisTaskMuonPerformance.cxx:899
 AliAnalysisTaskMuonPerformance.cxx:900
 AliAnalysisTaskMuonPerformance.cxx:901
 AliAnalysisTaskMuonPerformance.cxx:902
 AliAnalysisTaskMuonPerformance.cxx:903
 AliAnalysisTaskMuonPerformance.cxx:904
 AliAnalysisTaskMuonPerformance.cxx:905
 AliAnalysisTaskMuonPerformance.cxx:906
 AliAnalysisTaskMuonPerformance.cxx:907
 AliAnalysisTaskMuonPerformance.cxx:908
 AliAnalysisTaskMuonPerformance.cxx:909
 AliAnalysisTaskMuonPerformance.cxx:910
 AliAnalysisTaskMuonPerformance.cxx:911
 AliAnalysisTaskMuonPerformance.cxx:912
 AliAnalysisTaskMuonPerformance.cxx:913
 AliAnalysisTaskMuonPerformance.cxx:914
 AliAnalysisTaskMuonPerformance.cxx:915
 AliAnalysisTaskMuonPerformance.cxx:916
 AliAnalysisTaskMuonPerformance.cxx:917
 AliAnalysisTaskMuonPerformance.cxx:918
 AliAnalysisTaskMuonPerformance.cxx:919
 AliAnalysisTaskMuonPerformance.cxx:920
 AliAnalysisTaskMuonPerformance.cxx:921
 AliAnalysisTaskMuonPerformance.cxx:922
 AliAnalysisTaskMuonPerformance.cxx:923
 AliAnalysisTaskMuonPerformance.cxx:924
 AliAnalysisTaskMuonPerformance.cxx:925
 AliAnalysisTaskMuonPerformance.cxx:926
 AliAnalysisTaskMuonPerformance.cxx:927
 AliAnalysisTaskMuonPerformance.cxx:928
 AliAnalysisTaskMuonPerformance.cxx:929
 AliAnalysisTaskMuonPerformance.cxx:930
 AliAnalysisTaskMuonPerformance.cxx:931
 AliAnalysisTaskMuonPerformance.cxx:932
 AliAnalysisTaskMuonPerformance.cxx:933
 AliAnalysisTaskMuonPerformance.cxx:934
 AliAnalysisTaskMuonPerformance.cxx:935
 AliAnalysisTaskMuonPerformance.cxx:936
 AliAnalysisTaskMuonPerformance.cxx:937
 AliAnalysisTaskMuonPerformance.cxx:938
 AliAnalysisTaskMuonPerformance.cxx:939
 AliAnalysisTaskMuonPerformance.cxx:940
 AliAnalysisTaskMuonPerformance.cxx:941
 AliAnalysisTaskMuonPerformance.cxx:942
 AliAnalysisTaskMuonPerformance.cxx:943
 AliAnalysisTaskMuonPerformance.cxx:944
 AliAnalysisTaskMuonPerformance.cxx:945
 AliAnalysisTaskMuonPerformance.cxx:946
 AliAnalysisTaskMuonPerformance.cxx:947
 AliAnalysisTaskMuonPerformance.cxx:948
 AliAnalysisTaskMuonPerformance.cxx:949
 AliAnalysisTaskMuonPerformance.cxx:950
 AliAnalysisTaskMuonPerformance.cxx:951
 AliAnalysisTaskMuonPerformance.cxx:952
 AliAnalysisTaskMuonPerformance.cxx:953
 AliAnalysisTaskMuonPerformance.cxx:954
 AliAnalysisTaskMuonPerformance.cxx:955
 AliAnalysisTaskMuonPerformance.cxx:956
 AliAnalysisTaskMuonPerformance.cxx:957
 AliAnalysisTaskMuonPerformance.cxx:958
 AliAnalysisTaskMuonPerformance.cxx:959
 AliAnalysisTaskMuonPerformance.cxx:960
 AliAnalysisTaskMuonPerformance.cxx:961
 AliAnalysisTaskMuonPerformance.cxx:962
 AliAnalysisTaskMuonPerformance.cxx:963
 AliAnalysisTaskMuonPerformance.cxx:964
 AliAnalysisTaskMuonPerformance.cxx:965
 AliAnalysisTaskMuonPerformance.cxx:966
 AliAnalysisTaskMuonPerformance.cxx:967
 AliAnalysisTaskMuonPerformance.cxx:968
 AliAnalysisTaskMuonPerformance.cxx:969
 AliAnalysisTaskMuonPerformance.cxx:970
 AliAnalysisTaskMuonPerformance.cxx:971
 AliAnalysisTaskMuonPerformance.cxx:972
 AliAnalysisTaskMuonPerformance.cxx:973
 AliAnalysisTaskMuonPerformance.cxx:974
 AliAnalysisTaskMuonPerformance.cxx:975
 AliAnalysisTaskMuonPerformance.cxx:976
 AliAnalysisTaskMuonPerformance.cxx:977
 AliAnalysisTaskMuonPerformance.cxx:978
 AliAnalysisTaskMuonPerformance.cxx:979
 AliAnalysisTaskMuonPerformance.cxx:980
 AliAnalysisTaskMuonPerformance.cxx:981
 AliAnalysisTaskMuonPerformance.cxx:982
 AliAnalysisTaskMuonPerformance.cxx:983
 AliAnalysisTaskMuonPerformance.cxx:984
 AliAnalysisTaskMuonPerformance.cxx:985
 AliAnalysisTaskMuonPerformance.cxx:986
 AliAnalysisTaskMuonPerformance.cxx:987
 AliAnalysisTaskMuonPerformance.cxx:988
 AliAnalysisTaskMuonPerformance.cxx:989
 AliAnalysisTaskMuonPerformance.cxx:990
 AliAnalysisTaskMuonPerformance.cxx:991
 AliAnalysisTaskMuonPerformance.cxx:992
 AliAnalysisTaskMuonPerformance.cxx:993
 AliAnalysisTaskMuonPerformance.cxx:994
 AliAnalysisTaskMuonPerformance.cxx:995
 AliAnalysisTaskMuonPerformance.cxx:996
 AliAnalysisTaskMuonPerformance.cxx:997
 AliAnalysisTaskMuonPerformance.cxx:998
 AliAnalysisTaskMuonPerformance.cxx:999
 AliAnalysisTaskMuonPerformance.cxx:1000
 AliAnalysisTaskMuonPerformance.cxx:1001
 AliAnalysisTaskMuonPerformance.cxx:1002
 AliAnalysisTaskMuonPerformance.cxx:1003
 AliAnalysisTaskMuonPerformance.cxx:1004
 AliAnalysisTaskMuonPerformance.cxx:1005
 AliAnalysisTaskMuonPerformance.cxx:1006
 AliAnalysisTaskMuonPerformance.cxx:1007
 AliAnalysisTaskMuonPerformance.cxx:1008
 AliAnalysisTaskMuonPerformance.cxx:1009
 AliAnalysisTaskMuonPerformance.cxx:1010
 AliAnalysisTaskMuonPerformance.cxx:1011
 AliAnalysisTaskMuonPerformance.cxx:1012
 AliAnalysisTaskMuonPerformance.cxx:1013
 AliAnalysisTaskMuonPerformance.cxx:1014
 AliAnalysisTaskMuonPerformance.cxx:1015
 AliAnalysisTaskMuonPerformance.cxx:1016
 AliAnalysisTaskMuonPerformance.cxx:1017
 AliAnalysisTaskMuonPerformance.cxx:1018
 AliAnalysisTaskMuonPerformance.cxx:1019
 AliAnalysisTaskMuonPerformance.cxx:1020
 AliAnalysisTaskMuonPerformance.cxx:1021
 AliAnalysisTaskMuonPerformance.cxx:1022
 AliAnalysisTaskMuonPerformance.cxx:1023
 AliAnalysisTaskMuonPerformance.cxx:1024
 AliAnalysisTaskMuonPerformance.cxx:1025
 AliAnalysisTaskMuonPerformance.cxx:1026
 AliAnalysisTaskMuonPerformance.cxx:1027
 AliAnalysisTaskMuonPerformance.cxx:1028
 AliAnalysisTaskMuonPerformance.cxx:1029
 AliAnalysisTaskMuonPerformance.cxx:1030
 AliAnalysisTaskMuonPerformance.cxx:1031
 AliAnalysisTaskMuonPerformance.cxx:1032
 AliAnalysisTaskMuonPerformance.cxx:1033
 AliAnalysisTaskMuonPerformance.cxx:1034
 AliAnalysisTaskMuonPerformance.cxx:1035
 AliAnalysisTaskMuonPerformance.cxx:1036
 AliAnalysisTaskMuonPerformance.cxx:1037
 AliAnalysisTaskMuonPerformance.cxx:1038
 AliAnalysisTaskMuonPerformance.cxx:1039
 AliAnalysisTaskMuonPerformance.cxx:1040
 AliAnalysisTaskMuonPerformance.cxx:1041
 AliAnalysisTaskMuonPerformance.cxx:1042
 AliAnalysisTaskMuonPerformance.cxx:1043
 AliAnalysisTaskMuonPerformance.cxx:1044
 AliAnalysisTaskMuonPerformance.cxx:1045
 AliAnalysisTaskMuonPerformance.cxx:1046
 AliAnalysisTaskMuonPerformance.cxx:1047
 AliAnalysisTaskMuonPerformance.cxx:1048
 AliAnalysisTaskMuonPerformance.cxx:1049
 AliAnalysisTaskMuonPerformance.cxx:1050
 AliAnalysisTaskMuonPerformance.cxx:1051
 AliAnalysisTaskMuonPerformance.cxx:1052
 AliAnalysisTaskMuonPerformance.cxx:1053
 AliAnalysisTaskMuonPerformance.cxx:1054
 AliAnalysisTaskMuonPerformance.cxx:1055
 AliAnalysisTaskMuonPerformance.cxx:1056
 AliAnalysisTaskMuonPerformance.cxx:1057
 AliAnalysisTaskMuonPerformance.cxx:1058
 AliAnalysisTaskMuonPerformance.cxx:1059
 AliAnalysisTaskMuonPerformance.cxx:1060
 AliAnalysisTaskMuonPerformance.cxx:1061
 AliAnalysisTaskMuonPerformance.cxx:1062
 AliAnalysisTaskMuonPerformance.cxx:1063
 AliAnalysisTaskMuonPerformance.cxx:1064
 AliAnalysisTaskMuonPerformance.cxx:1065
 AliAnalysisTaskMuonPerformance.cxx:1066
 AliAnalysisTaskMuonPerformance.cxx:1067
 AliAnalysisTaskMuonPerformance.cxx:1068
 AliAnalysisTaskMuonPerformance.cxx:1069
 AliAnalysisTaskMuonPerformance.cxx:1070
 AliAnalysisTaskMuonPerformance.cxx:1071
 AliAnalysisTaskMuonPerformance.cxx:1072
 AliAnalysisTaskMuonPerformance.cxx:1073
 AliAnalysisTaskMuonPerformance.cxx:1074
 AliAnalysisTaskMuonPerformance.cxx:1075
 AliAnalysisTaskMuonPerformance.cxx:1076
 AliAnalysisTaskMuonPerformance.cxx:1077
 AliAnalysisTaskMuonPerformance.cxx:1078
 AliAnalysisTaskMuonPerformance.cxx:1079
 AliAnalysisTaskMuonPerformance.cxx:1080
 AliAnalysisTaskMuonPerformance.cxx:1081
 AliAnalysisTaskMuonPerformance.cxx:1082
 AliAnalysisTaskMuonPerformance.cxx:1083
 AliAnalysisTaskMuonPerformance.cxx:1084
 AliAnalysisTaskMuonPerformance.cxx:1085
 AliAnalysisTaskMuonPerformance.cxx:1086
 AliAnalysisTaskMuonPerformance.cxx:1087
 AliAnalysisTaskMuonPerformance.cxx:1088
 AliAnalysisTaskMuonPerformance.cxx:1089
 AliAnalysisTaskMuonPerformance.cxx:1090
 AliAnalysisTaskMuonPerformance.cxx:1091
 AliAnalysisTaskMuonPerformance.cxx:1092
 AliAnalysisTaskMuonPerformance.cxx:1093
 AliAnalysisTaskMuonPerformance.cxx:1094
 AliAnalysisTaskMuonPerformance.cxx:1095
 AliAnalysisTaskMuonPerformance.cxx:1096
 AliAnalysisTaskMuonPerformance.cxx:1097
 AliAnalysisTaskMuonPerformance.cxx:1098
 AliAnalysisTaskMuonPerformance.cxx:1099
 AliAnalysisTaskMuonPerformance.cxx:1100
 AliAnalysisTaskMuonPerformance.cxx:1101
 AliAnalysisTaskMuonPerformance.cxx:1102
 AliAnalysisTaskMuonPerformance.cxx:1103
 AliAnalysisTaskMuonPerformance.cxx:1104
 AliAnalysisTaskMuonPerformance.cxx:1105
 AliAnalysisTaskMuonPerformance.cxx:1106
 AliAnalysisTaskMuonPerformance.cxx:1107
 AliAnalysisTaskMuonPerformance.cxx:1108
 AliAnalysisTaskMuonPerformance.cxx:1109
 AliAnalysisTaskMuonPerformance.cxx:1110
 AliAnalysisTaskMuonPerformance.cxx:1111
 AliAnalysisTaskMuonPerformance.cxx:1112
 AliAnalysisTaskMuonPerformance.cxx:1113
 AliAnalysisTaskMuonPerformance.cxx:1114
 AliAnalysisTaskMuonPerformance.cxx:1115
 AliAnalysisTaskMuonPerformance.cxx:1116
 AliAnalysisTaskMuonPerformance.cxx:1117
 AliAnalysisTaskMuonPerformance.cxx:1118
 AliAnalysisTaskMuonPerformance.cxx:1119
 AliAnalysisTaskMuonPerformance.cxx:1120
 AliAnalysisTaskMuonPerformance.cxx:1121
 AliAnalysisTaskMuonPerformance.cxx:1122
 AliAnalysisTaskMuonPerformance.cxx:1123
 AliAnalysisTaskMuonPerformance.cxx:1124
 AliAnalysisTaskMuonPerformance.cxx:1125
 AliAnalysisTaskMuonPerformance.cxx:1126
 AliAnalysisTaskMuonPerformance.cxx:1127
 AliAnalysisTaskMuonPerformance.cxx:1128
 AliAnalysisTaskMuonPerformance.cxx:1129
 AliAnalysisTaskMuonPerformance.cxx:1130
 AliAnalysisTaskMuonPerformance.cxx:1131
 AliAnalysisTaskMuonPerformance.cxx:1132
 AliAnalysisTaskMuonPerformance.cxx:1133
 AliAnalysisTaskMuonPerformance.cxx:1134
 AliAnalysisTaskMuonPerformance.cxx:1135
 AliAnalysisTaskMuonPerformance.cxx:1136
 AliAnalysisTaskMuonPerformance.cxx:1137
 AliAnalysisTaskMuonPerformance.cxx:1138
 AliAnalysisTaskMuonPerformance.cxx:1139
 AliAnalysisTaskMuonPerformance.cxx:1140
 AliAnalysisTaskMuonPerformance.cxx:1141
 AliAnalysisTaskMuonPerformance.cxx:1142
 AliAnalysisTaskMuonPerformance.cxx:1143
 AliAnalysisTaskMuonPerformance.cxx:1144
 AliAnalysisTaskMuonPerformance.cxx:1145
 AliAnalysisTaskMuonPerformance.cxx:1146
 AliAnalysisTaskMuonPerformance.cxx:1147
 AliAnalysisTaskMuonPerformance.cxx:1148
 AliAnalysisTaskMuonPerformance.cxx:1149
 AliAnalysisTaskMuonPerformance.cxx:1150
 AliAnalysisTaskMuonPerformance.cxx:1151
 AliAnalysisTaskMuonPerformance.cxx:1152
 AliAnalysisTaskMuonPerformance.cxx:1153
 AliAnalysisTaskMuonPerformance.cxx:1154
 AliAnalysisTaskMuonPerformance.cxx:1155
 AliAnalysisTaskMuonPerformance.cxx:1156
 AliAnalysisTaskMuonPerformance.cxx:1157
 AliAnalysisTaskMuonPerformance.cxx:1158
 AliAnalysisTaskMuonPerformance.cxx:1159
 AliAnalysisTaskMuonPerformance.cxx:1160
 AliAnalysisTaskMuonPerformance.cxx:1161
 AliAnalysisTaskMuonPerformance.cxx:1162
 AliAnalysisTaskMuonPerformance.cxx:1163
 AliAnalysisTaskMuonPerformance.cxx:1164
 AliAnalysisTaskMuonPerformance.cxx:1165
 AliAnalysisTaskMuonPerformance.cxx:1166
 AliAnalysisTaskMuonPerformance.cxx:1167
 AliAnalysisTaskMuonPerformance.cxx:1168
 AliAnalysisTaskMuonPerformance.cxx:1169
 AliAnalysisTaskMuonPerformance.cxx:1170
 AliAnalysisTaskMuonPerformance.cxx:1171
 AliAnalysisTaskMuonPerformance.cxx:1172
 AliAnalysisTaskMuonPerformance.cxx:1173
 AliAnalysisTaskMuonPerformance.cxx:1174
 AliAnalysisTaskMuonPerformance.cxx:1175
 AliAnalysisTaskMuonPerformance.cxx:1176
 AliAnalysisTaskMuonPerformance.cxx:1177
 AliAnalysisTaskMuonPerformance.cxx:1178
 AliAnalysisTaskMuonPerformance.cxx:1179
 AliAnalysisTaskMuonPerformance.cxx:1180
 AliAnalysisTaskMuonPerformance.cxx:1181
 AliAnalysisTaskMuonPerformance.cxx:1182
 AliAnalysisTaskMuonPerformance.cxx:1183
 AliAnalysisTaskMuonPerformance.cxx:1184
 AliAnalysisTaskMuonPerformance.cxx:1185
 AliAnalysisTaskMuonPerformance.cxx:1186
 AliAnalysisTaskMuonPerformance.cxx:1187
 AliAnalysisTaskMuonPerformance.cxx:1188
 AliAnalysisTaskMuonPerformance.cxx:1189
 AliAnalysisTaskMuonPerformance.cxx:1190
 AliAnalysisTaskMuonPerformance.cxx:1191
 AliAnalysisTaskMuonPerformance.cxx:1192
 AliAnalysisTaskMuonPerformance.cxx:1193
 AliAnalysisTaskMuonPerformance.cxx:1194
 AliAnalysisTaskMuonPerformance.cxx:1195
 AliAnalysisTaskMuonPerformance.cxx:1196
 AliAnalysisTaskMuonPerformance.cxx:1197
 AliAnalysisTaskMuonPerformance.cxx:1198
 AliAnalysisTaskMuonPerformance.cxx:1199
 AliAnalysisTaskMuonPerformance.cxx:1200
 AliAnalysisTaskMuonPerformance.cxx:1201
 AliAnalysisTaskMuonPerformance.cxx:1202
 AliAnalysisTaskMuonPerformance.cxx:1203
 AliAnalysisTaskMuonPerformance.cxx:1204
 AliAnalysisTaskMuonPerformance.cxx:1205
 AliAnalysisTaskMuonPerformance.cxx:1206
 AliAnalysisTaskMuonPerformance.cxx:1207
 AliAnalysisTaskMuonPerformance.cxx:1208
 AliAnalysisTaskMuonPerformance.cxx:1209
 AliAnalysisTaskMuonPerformance.cxx:1210
 AliAnalysisTaskMuonPerformance.cxx:1211
 AliAnalysisTaskMuonPerformance.cxx:1212
 AliAnalysisTaskMuonPerformance.cxx:1213
 AliAnalysisTaskMuonPerformance.cxx:1214
 AliAnalysisTaskMuonPerformance.cxx:1215
 AliAnalysisTaskMuonPerformance.cxx:1216
 AliAnalysisTaskMuonPerformance.cxx:1217
 AliAnalysisTaskMuonPerformance.cxx:1218
 AliAnalysisTaskMuonPerformance.cxx:1219
 AliAnalysisTaskMuonPerformance.cxx:1220
 AliAnalysisTaskMuonPerformance.cxx:1221
 AliAnalysisTaskMuonPerformance.cxx:1222
 AliAnalysisTaskMuonPerformance.cxx:1223
 AliAnalysisTaskMuonPerformance.cxx:1224
 AliAnalysisTaskMuonPerformance.cxx:1225
 AliAnalysisTaskMuonPerformance.cxx:1226
 AliAnalysisTaskMuonPerformance.cxx:1227
 AliAnalysisTaskMuonPerformance.cxx:1228
 AliAnalysisTaskMuonPerformance.cxx:1229
 AliAnalysisTaskMuonPerformance.cxx:1230
 AliAnalysisTaskMuonPerformance.cxx:1231
 AliAnalysisTaskMuonPerformance.cxx:1232
 AliAnalysisTaskMuonPerformance.cxx:1233
 AliAnalysisTaskMuonPerformance.cxx:1234
 AliAnalysisTaskMuonPerformance.cxx:1235
 AliAnalysisTaskMuonPerformance.cxx:1236
 AliAnalysisTaskMuonPerformance.cxx:1237
 AliAnalysisTaskMuonPerformance.cxx:1238
 AliAnalysisTaskMuonPerformance.cxx:1239
 AliAnalysisTaskMuonPerformance.cxx:1240
 AliAnalysisTaskMuonPerformance.cxx:1241
 AliAnalysisTaskMuonPerformance.cxx:1242
 AliAnalysisTaskMuonPerformance.cxx:1243
 AliAnalysisTaskMuonPerformance.cxx:1244
 AliAnalysisTaskMuonPerformance.cxx:1245
 AliAnalysisTaskMuonPerformance.cxx:1246
 AliAnalysisTaskMuonPerformance.cxx:1247
 AliAnalysisTaskMuonPerformance.cxx:1248
 AliAnalysisTaskMuonPerformance.cxx:1249
 AliAnalysisTaskMuonPerformance.cxx:1250
 AliAnalysisTaskMuonPerformance.cxx:1251
 AliAnalysisTaskMuonPerformance.cxx:1252
 AliAnalysisTaskMuonPerformance.cxx:1253
 AliAnalysisTaskMuonPerformance.cxx:1254
 AliAnalysisTaskMuonPerformance.cxx:1255
 AliAnalysisTaskMuonPerformance.cxx:1256
 AliAnalysisTaskMuonPerformance.cxx:1257
 AliAnalysisTaskMuonPerformance.cxx:1258
 AliAnalysisTaskMuonPerformance.cxx:1259
 AliAnalysisTaskMuonPerformance.cxx:1260
 AliAnalysisTaskMuonPerformance.cxx:1261
 AliAnalysisTaskMuonPerformance.cxx:1262
 AliAnalysisTaskMuonPerformance.cxx:1263
 AliAnalysisTaskMuonPerformance.cxx:1264
 AliAnalysisTaskMuonPerformance.cxx:1265
 AliAnalysisTaskMuonPerformance.cxx:1266
 AliAnalysisTaskMuonPerformance.cxx:1267
 AliAnalysisTaskMuonPerformance.cxx:1268
 AliAnalysisTaskMuonPerformance.cxx:1269
 AliAnalysisTaskMuonPerformance.cxx:1270
 AliAnalysisTaskMuonPerformance.cxx:1271
 AliAnalysisTaskMuonPerformance.cxx:1272
 AliAnalysisTaskMuonPerformance.cxx:1273
 AliAnalysisTaskMuonPerformance.cxx:1274
 AliAnalysisTaskMuonPerformance.cxx:1275
 AliAnalysisTaskMuonPerformance.cxx:1276
 AliAnalysisTaskMuonPerformance.cxx:1277
 AliAnalysisTaskMuonPerformance.cxx:1278
 AliAnalysisTaskMuonPerformance.cxx:1279
 AliAnalysisTaskMuonPerformance.cxx:1280
 AliAnalysisTaskMuonPerformance.cxx:1281
 AliAnalysisTaskMuonPerformance.cxx:1282
 AliAnalysisTaskMuonPerformance.cxx:1283
 AliAnalysisTaskMuonPerformance.cxx:1284
 AliAnalysisTaskMuonPerformance.cxx:1285
 AliAnalysisTaskMuonPerformance.cxx:1286
 AliAnalysisTaskMuonPerformance.cxx:1287
 AliAnalysisTaskMuonPerformance.cxx:1288
 AliAnalysisTaskMuonPerformance.cxx:1289
 AliAnalysisTaskMuonPerformance.cxx:1290
 AliAnalysisTaskMuonPerformance.cxx:1291
 AliAnalysisTaskMuonPerformance.cxx:1292
 AliAnalysisTaskMuonPerformance.cxx:1293
 AliAnalysisTaskMuonPerformance.cxx:1294
 AliAnalysisTaskMuonPerformance.cxx:1295
 AliAnalysisTaskMuonPerformance.cxx:1296
 AliAnalysisTaskMuonPerformance.cxx:1297
 AliAnalysisTaskMuonPerformance.cxx:1298
 AliAnalysisTaskMuonPerformance.cxx:1299
 AliAnalysisTaskMuonPerformance.cxx:1300
 AliAnalysisTaskMuonPerformance.cxx:1301
 AliAnalysisTaskMuonPerformance.cxx:1302
 AliAnalysisTaskMuonPerformance.cxx:1303
 AliAnalysisTaskMuonPerformance.cxx:1304
 AliAnalysisTaskMuonPerformance.cxx:1305
 AliAnalysisTaskMuonPerformance.cxx:1306
 AliAnalysisTaskMuonPerformance.cxx:1307
 AliAnalysisTaskMuonPerformance.cxx:1308
 AliAnalysisTaskMuonPerformance.cxx:1309
 AliAnalysisTaskMuonPerformance.cxx:1310
 AliAnalysisTaskMuonPerformance.cxx:1311
 AliAnalysisTaskMuonPerformance.cxx:1312
 AliAnalysisTaskMuonPerformance.cxx:1313
 AliAnalysisTaskMuonPerformance.cxx:1314
 AliAnalysisTaskMuonPerformance.cxx:1315
 AliAnalysisTaskMuonPerformance.cxx:1316
 AliAnalysisTaskMuonPerformance.cxx:1317
 AliAnalysisTaskMuonPerformance.cxx:1318
 AliAnalysisTaskMuonPerformance.cxx:1319
 AliAnalysisTaskMuonPerformance.cxx:1320
 AliAnalysisTaskMuonPerformance.cxx:1321
 AliAnalysisTaskMuonPerformance.cxx:1322
 AliAnalysisTaskMuonPerformance.cxx:1323
 AliAnalysisTaskMuonPerformance.cxx:1324
 AliAnalysisTaskMuonPerformance.cxx:1325
 AliAnalysisTaskMuonPerformance.cxx:1326
 AliAnalysisTaskMuonPerformance.cxx:1327
 AliAnalysisTaskMuonPerformance.cxx:1328
 AliAnalysisTaskMuonPerformance.cxx:1329
 AliAnalysisTaskMuonPerformance.cxx:1330
 AliAnalysisTaskMuonPerformance.cxx:1331
 AliAnalysisTaskMuonPerformance.cxx:1332
 AliAnalysisTaskMuonPerformance.cxx:1333
 AliAnalysisTaskMuonPerformance.cxx:1334
 AliAnalysisTaskMuonPerformance.cxx:1335
 AliAnalysisTaskMuonPerformance.cxx:1336
 AliAnalysisTaskMuonPerformance.cxx:1337
 AliAnalysisTaskMuonPerformance.cxx:1338
 AliAnalysisTaskMuonPerformance.cxx:1339
 AliAnalysisTaskMuonPerformance.cxx:1340
 AliAnalysisTaskMuonPerformance.cxx:1341
 AliAnalysisTaskMuonPerformance.cxx:1342
 AliAnalysisTaskMuonPerformance.cxx:1343
 AliAnalysisTaskMuonPerformance.cxx:1344
 AliAnalysisTaskMuonPerformance.cxx:1345
 AliAnalysisTaskMuonPerformance.cxx:1346
 AliAnalysisTaskMuonPerformance.cxx:1347
 AliAnalysisTaskMuonPerformance.cxx:1348
 AliAnalysisTaskMuonPerformance.cxx:1349
 AliAnalysisTaskMuonPerformance.cxx:1350
 AliAnalysisTaskMuonPerformance.cxx:1351
 AliAnalysisTaskMuonPerformance.cxx:1352
 AliAnalysisTaskMuonPerformance.cxx:1353
 AliAnalysisTaskMuonPerformance.cxx:1354
 AliAnalysisTaskMuonPerformance.cxx:1355
 AliAnalysisTaskMuonPerformance.cxx:1356
 AliAnalysisTaskMuonPerformance.cxx:1357
 AliAnalysisTaskMuonPerformance.cxx:1358
 AliAnalysisTaskMuonPerformance.cxx:1359
 AliAnalysisTaskMuonPerformance.cxx:1360
 AliAnalysisTaskMuonPerformance.cxx:1361
 AliAnalysisTaskMuonPerformance.cxx:1362
 AliAnalysisTaskMuonPerformance.cxx:1363
 AliAnalysisTaskMuonPerformance.cxx:1364
 AliAnalysisTaskMuonPerformance.cxx:1365
 AliAnalysisTaskMuonPerformance.cxx:1366
 AliAnalysisTaskMuonPerformance.cxx:1367
 AliAnalysisTaskMuonPerformance.cxx:1368
 AliAnalysisTaskMuonPerformance.cxx:1369
 AliAnalysisTaskMuonPerformance.cxx:1370
 AliAnalysisTaskMuonPerformance.cxx:1371
 AliAnalysisTaskMuonPerformance.cxx:1372
 AliAnalysisTaskMuonPerformance.cxx:1373
 AliAnalysisTaskMuonPerformance.cxx:1374
 AliAnalysisTaskMuonPerformance.cxx:1375
 AliAnalysisTaskMuonPerformance.cxx:1376
 AliAnalysisTaskMuonPerformance.cxx:1377
 AliAnalysisTaskMuonPerformance.cxx:1378
 AliAnalysisTaskMuonPerformance.cxx:1379
 AliAnalysisTaskMuonPerformance.cxx:1380
 AliAnalysisTaskMuonPerformance.cxx:1381
 AliAnalysisTaskMuonPerformance.cxx:1382
 AliAnalysisTaskMuonPerformance.cxx:1383
 AliAnalysisTaskMuonPerformance.cxx:1384
 AliAnalysisTaskMuonPerformance.cxx:1385
 AliAnalysisTaskMuonPerformance.cxx:1386
 AliAnalysisTaskMuonPerformance.cxx:1387
 AliAnalysisTaskMuonPerformance.cxx:1388
 AliAnalysisTaskMuonPerformance.cxx:1389
 AliAnalysisTaskMuonPerformance.cxx:1390
 AliAnalysisTaskMuonPerformance.cxx:1391
 AliAnalysisTaskMuonPerformance.cxx:1392
 AliAnalysisTaskMuonPerformance.cxx:1393
 AliAnalysisTaskMuonPerformance.cxx:1394
 AliAnalysisTaskMuonPerformance.cxx:1395
 AliAnalysisTaskMuonPerformance.cxx:1396
 AliAnalysisTaskMuonPerformance.cxx:1397
 AliAnalysisTaskMuonPerformance.cxx:1398
 AliAnalysisTaskMuonPerformance.cxx:1399
 AliAnalysisTaskMuonPerformance.cxx:1400
 AliAnalysisTaskMuonPerformance.cxx:1401
 AliAnalysisTaskMuonPerformance.cxx:1402
 AliAnalysisTaskMuonPerformance.cxx:1403
 AliAnalysisTaskMuonPerformance.cxx:1404
 AliAnalysisTaskMuonPerformance.cxx:1405
 AliAnalysisTaskMuonPerformance.cxx:1406
 AliAnalysisTaskMuonPerformance.cxx:1407
 AliAnalysisTaskMuonPerformance.cxx:1408
 AliAnalysisTaskMuonPerformance.cxx:1409
 AliAnalysisTaskMuonPerformance.cxx:1410
 AliAnalysisTaskMuonPerformance.cxx:1411
 AliAnalysisTaskMuonPerformance.cxx:1412
 AliAnalysisTaskMuonPerformance.cxx:1413
 AliAnalysisTaskMuonPerformance.cxx:1414
 AliAnalysisTaskMuonPerformance.cxx:1415
 AliAnalysisTaskMuonPerformance.cxx:1416
 AliAnalysisTaskMuonPerformance.cxx:1417
 AliAnalysisTaskMuonPerformance.cxx:1418
 AliAnalysisTaskMuonPerformance.cxx:1419
 AliAnalysisTaskMuonPerformance.cxx:1420
 AliAnalysisTaskMuonPerformance.cxx:1421
 AliAnalysisTaskMuonPerformance.cxx:1422
 AliAnalysisTaskMuonPerformance.cxx:1423
 AliAnalysisTaskMuonPerformance.cxx:1424
 AliAnalysisTaskMuonPerformance.cxx:1425
 AliAnalysisTaskMuonPerformance.cxx:1426
 AliAnalysisTaskMuonPerformance.cxx:1427
 AliAnalysisTaskMuonPerformance.cxx:1428
 AliAnalysisTaskMuonPerformance.cxx:1429
 AliAnalysisTaskMuonPerformance.cxx:1430
 AliAnalysisTaskMuonPerformance.cxx:1431
 AliAnalysisTaskMuonPerformance.cxx:1432
 AliAnalysisTaskMuonPerformance.cxx:1433
 AliAnalysisTaskMuonPerformance.cxx:1434
 AliAnalysisTaskMuonPerformance.cxx:1435
 AliAnalysisTaskMuonPerformance.cxx:1436
 AliAnalysisTaskMuonPerformance.cxx:1437
 AliAnalysisTaskMuonPerformance.cxx:1438
 AliAnalysisTaskMuonPerformance.cxx:1439
 AliAnalysisTaskMuonPerformance.cxx:1440
 AliAnalysisTaskMuonPerformance.cxx:1441
 AliAnalysisTaskMuonPerformance.cxx:1442
 AliAnalysisTaskMuonPerformance.cxx:1443
 AliAnalysisTaskMuonPerformance.cxx:1444
 AliAnalysisTaskMuonPerformance.cxx:1445
 AliAnalysisTaskMuonPerformance.cxx:1446
 AliAnalysisTaskMuonPerformance.cxx:1447
 AliAnalysisTaskMuonPerformance.cxx:1448
 AliAnalysisTaskMuonPerformance.cxx:1449
 AliAnalysisTaskMuonPerformance.cxx:1450
 AliAnalysisTaskMuonPerformance.cxx:1451
 AliAnalysisTaskMuonPerformance.cxx:1452
 AliAnalysisTaskMuonPerformance.cxx:1453
 AliAnalysisTaskMuonPerformance.cxx:1454
 AliAnalysisTaskMuonPerformance.cxx:1455
 AliAnalysisTaskMuonPerformance.cxx:1456
 AliAnalysisTaskMuonPerformance.cxx:1457
 AliAnalysisTaskMuonPerformance.cxx:1458
 AliAnalysisTaskMuonPerformance.cxx:1459
 AliAnalysisTaskMuonPerformance.cxx:1460
 AliAnalysisTaskMuonPerformance.cxx:1461
 AliAnalysisTaskMuonPerformance.cxx:1462
 AliAnalysisTaskMuonPerformance.cxx:1463
 AliAnalysisTaskMuonPerformance.cxx:1464
 AliAnalysisTaskMuonPerformance.cxx:1465
 AliAnalysisTaskMuonPerformance.cxx:1466
 AliAnalysisTaskMuonPerformance.cxx:1467
 AliAnalysisTaskMuonPerformance.cxx:1468
 AliAnalysisTaskMuonPerformance.cxx:1469
 AliAnalysisTaskMuonPerformance.cxx:1470
 AliAnalysisTaskMuonPerformance.cxx:1471
 AliAnalysisTaskMuonPerformance.cxx:1472
 AliAnalysisTaskMuonPerformance.cxx:1473
 AliAnalysisTaskMuonPerformance.cxx:1474
 AliAnalysisTaskMuonPerformance.cxx:1475
 AliAnalysisTaskMuonPerformance.cxx:1476
 AliAnalysisTaskMuonPerformance.cxx:1477
 AliAnalysisTaskMuonPerformance.cxx:1478
 AliAnalysisTaskMuonPerformance.cxx:1479
 AliAnalysisTaskMuonPerformance.cxx:1480
 AliAnalysisTaskMuonPerformance.cxx:1481
 AliAnalysisTaskMuonPerformance.cxx:1482
 AliAnalysisTaskMuonPerformance.cxx:1483
 AliAnalysisTaskMuonPerformance.cxx:1484
 AliAnalysisTaskMuonPerformance.cxx:1485
 AliAnalysisTaskMuonPerformance.cxx:1486
 AliAnalysisTaskMuonPerformance.cxx:1487
 AliAnalysisTaskMuonPerformance.cxx:1488
 AliAnalysisTaskMuonPerformance.cxx:1489
 AliAnalysisTaskMuonPerformance.cxx:1490
 AliAnalysisTaskMuonPerformance.cxx:1491
 AliAnalysisTaskMuonPerformance.cxx:1492
 AliAnalysisTaskMuonPerformance.cxx:1493
 AliAnalysisTaskMuonPerformance.cxx:1494
 AliAnalysisTaskMuonPerformance.cxx:1495
 AliAnalysisTaskMuonPerformance.cxx:1496
 AliAnalysisTaskMuonPerformance.cxx:1497
 AliAnalysisTaskMuonPerformance.cxx:1498
 AliAnalysisTaskMuonPerformance.cxx:1499
 AliAnalysisTaskMuonPerformance.cxx:1500
 AliAnalysisTaskMuonPerformance.cxx:1501
 AliAnalysisTaskMuonPerformance.cxx:1502
 AliAnalysisTaskMuonPerformance.cxx:1503
 AliAnalysisTaskMuonPerformance.cxx:1504
 AliAnalysisTaskMuonPerformance.cxx:1505
 AliAnalysisTaskMuonPerformance.cxx:1506
 AliAnalysisTaskMuonPerformance.cxx:1507
 AliAnalysisTaskMuonPerformance.cxx:1508
 AliAnalysisTaskMuonPerformance.cxx:1509
 AliAnalysisTaskMuonPerformance.cxx:1510
 AliAnalysisTaskMuonPerformance.cxx:1511
 AliAnalysisTaskMuonPerformance.cxx:1512
 AliAnalysisTaskMuonPerformance.cxx:1513
 AliAnalysisTaskMuonPerformance.cxx:1514
 AliAnalysisTaskMuonPerformance.cxx:1515
 AliAnalysisTaskMuonPerformance.cxx:1516
 AliAnalysisTaskMuonPerformance.cxx:1517
 AliAnalysisTaskMuonPerformance.cxx:1518
 AliAnalysisTaskMuonPerformance.cxx:1519
 AliAnalysisTaskMuonPerformance.cxx:1520
 AliAnalysisTaskMuonPerformance.cxx:1521
 AliAnalysisTaskMuonPerformance.cxx:1522
 AliAnalysisTaskMuonPerformance.cxx:1523
 AliAnalysisTaskMuonPerformance.cxx:1524
 AliAnalysisTaskMuonPerformance.cxx:1525
 AliAnalysisTaskMuonPerformance.cxx:1526
 AliAnalysisTaskMuonPerformance.cxx:1527
 AliAnalysisTaskMuonPerformance.cxx:1528
 AliAnalysisTaskMuonPerformance.cxx:1529
 AliAnalysisTaskMuonPerformance.cxx:1530
 AliAnalysisTaskMuonPerformance.cxx:1531
 AliAnalysisTaskMuonPerformance.cxx:1532
 AliAnalysisTaskMuonPerformance.cxx:1533
 AliAnalysisTaskMuonPerformance.cxx:1534
 AliAnalysisTaskMuonPerformance.cxx:1535
 AliAnalysisTaskMuonPerformance.cxx:1536
 AliAnalysisTaskMuonPerformance.cxx:1537
 AliAnalysisTaskMuonPerformance.cxx:1538
 AliAnalysisTaskMuonPerformance.cxx:1539
 AliAnalysisTaskMuonPerformance.cxx:1540
 AliAnalysisTaskMuonPerformance.cxx:1541
 AliAnalysisTaskMuonPerformance.cxx:1542
 AliAnalysisTaskMuonPerformance.cxx:1543
 AliAnalysisTaskMuonPerformance.cxx:1544
 AliAnalysisTaskMuonPerformance.cxx:1545
 AliAnalysisTaskMuonPerformance.cxx:1546
 AliAnalysisTaskMuonPerformance.cxx:1547
 AliAnalysisTaskMuonPerformance.cxx:1548
 AliAnalysisTaskMuonPerformance.cxx:1549
 AliAnalysisTaskMuonPerformance.cxx:1550
 AliAnalysisTaskMuonPerformance.cxx:1551
 AliAnalysisTaskMuonPerformance.cxx:1552
 AliAnalysisTaskMuonPerformance.cxx:1553
 AliAnalysisTaskMuonPerformance.cxx:1554
 AliAnalysisTaskMuonPerformance.cxx:1555
 AliAnalysisTaskMuonPerformance.cxx:1556
 AliAnalysisTaskMuonPerformance.cxx:1557
 AliAnalysisTaskMuonPerformance.cxx:1558
 AliAnalysisTaskMuonPerformance.cxx:1559
 AliAnalysisTaskMuonPerformance.cxx:1560
 AliAnalysisTaskMuonPerformance.cxx:1561
 AliAnalysisTaskMuonPerformance.cxx:1562
 AliAnalysisTaskMuonPerformance.cxx:1563
 AliAnalysisTaskMuonPerformance.cxx:1564
 AliAnalysisTaskMuonPerformance.cxx:1565
 AliAnalysisTaskMuonPerformance.cxx:1566
 AliAnalysisTaskMuonPerformance.cxx:1567
 AliAnalysisTaskMuonPerformance.cxx:1568
 AliAnalysisTaskMuonPerformance.cxx:1569
 AliAnalysisTaskMuonPerformance.cxx:1570
 AliAnalysisTaskMuonPerformance.cxx:1571
 AliAnalysisTaskMuonPerformance.cxx:1572
 AliAnalysisTaskMuonPerformance.cxx:1573
 AliAnalysisTaskMuonPerformance.cxx:1574
 AliAnalysisTaskMuonPerformance.cxx:1575
 AliAnalysisTaskMuonPerformance.cxx:1576
 AliAnalysisTaskMuonPerformance.cxx:1577
 AliAnalysisTaskMuonPerformance.cxx:1578
 AliAnalysisTaskMuonPerformance.cxx:1579
 AliAnalysisTaskMuonPerformance.cxx:1580
 AliAnalysisTaskMuonPerformance.cxx:1581
 AliAnalysisTaskMuonPerformance.cxx:1582
 AliAnalysisTaskMuonPerformance.cxx:1583
 AliAnalysisTaskMuonPerformance.cxx:1584
 AliAnalysisTaskMuonPerformance.cxx:1585
 AliAnalysisTaskMuonPerformance.cxx:1586
 AliAnalysisTaskMuonPerformance.cxx:1587
 AliAnalysisTaskMuonPerformance.cxx:1588
 AliAnalysisTaskMuonPerformance.cxx:1589
 AliAnalysisTaskMuonPerformance.cxx:1590
 AliAnalysisTaskMuonPerformance.cxx:1591
 AliAnalysisTaskMuonPerformance.cxx:1592
 AliAnalysisTaskMuonPerformance.cxx:1593
 AliAnalysisTaskMuonPerformance.cxx:1594
 AliAnalysisTaskMuonPerformance.cxx:1595
 AliAnalysisTaskMuonPerformance.cxx:1596
 AliAnalysisTaskMuonPerformance.cxx:1597
 AliAnalysisTaskMuonPerformance.cxx:1598
 AliAnalysisTaskMuonPerformance.cxx:1599
 AliAnalysisTaskMuonPerformance.cxx:1600
 AliAnalysisTaskMuonPerformance.cxx:1601
 AliAnalysisTaskMuonPerformance.cxx:1602
 AliAnalysisTaskMuonPerformance.cxx:1603
 AliAnalysisTaskMuonPerformance.cxx:1604
 AliAnalysisTaskMuonPerformance.cxx:1605
 AliAnalysisTaskMuonPerformance.cxx:1606
 AliAnalysisTaskMuonPerformance.cxx:1607
 AliAnalysisTaskMuonPerformance.cxx:1608
 AliAnalysisTaskMuonPerformance.cxx:1609
 AliAnalysisTaskMuonPerformance.cxx:1610
 AliAnalysisTaskMuonPerformance.cxx:1611
 AliAnalysisTaskMuonPerformance.cxx:1612
 AliAnalysisTaskMuonPerformance.cxx:1613
 AliAnalysisTaskMuonPerformance.cxx:1614
 AliAnalysisTaskMuonPerformance.cxx:1615
 AliAnalysisTaskMuonPerformance.cxx:1616
 AliAnalysisTaskMuonPerformance.cxx:1617
 AliAnalysisTaskMuonPerformance.cxx:1618
 AliAnalysisTaskMuonPerformance.cxx:1619
 AliAnalysisTaskMuonPerformance.cxx:1620
 AliAnalysisTaskMuonPerformance.cxx:1621
 AliAnalysisTaskMuonPerformance.cxx:1622
 AliAnalysisTaskMuonPerformance.cxx:1623
 AliAnalysisTaskMuonPerformance.cxx:1624
 AliAnalysisTaskMuonPerformance.cxx:1625
 AliAnalysisTaskMuonPerformance.cxx:1626
 AliAnalysisTaskMuonPerformance.cxx:1627
 AliAnalysisTaskMuonPerformance.cxx:1628
 AliAnalysisTaskMuonPerformance.cxx:1629
 AliAnalysisTaskMuonPerformance.cxx:1630
 AliAnalysisTaskMuonPerformance.cxx:1631
 AliAnalysisTaskMuonPerformance.cxx:1632
 AliAnalysisTaskMuonPerformance.cxx:1633
 AliAnalysisTaskMuonPerformance.cxx:1634
 AliAnalysisTaskMuonPerformance.cxx:1635
 AliAnalysisTaskMuonPerformance.cxx:1636
 AliAnalysisTaskMuonPerformance.cxx:1637
 AliAnalysisTaskMuonPerformance.cxx:1638
 AliAnalysisTaskMuonPerformance.cxx:1639
 AliAnalysisTaskMuonPerformance.cxx:1640
 AliAnalysisTaskMuonPerformance.cxx:1641
 AliAnalysisTaskMuonPerformance.cxx:1642
 AliAnalysisTaskMuonPerformance.cxx:1643
 AliAnalysisTaskMuonPerformance.cxx:1644
 AliAnalysisTaskMuonPerformance.cxx:1645
 AliAnalysisTaskMuonPerformance.cxx:1646
 AliAnalysisTaskMuonPerformance.cxx:1647
 AliAnalysisTaskMuonPerformance.cxx:1648
 AliAnalysisTaskMuonPerformance.cxx:1649
 AliAnalysisTaskMuonPerformance.cxx:1650
 AliAnalysisTaskMuonPerformance.cxx:1651
 AliAnalysisTaskMuonPerformance.cxx:1652
 AliAnalysisTaskMuonPerformance.cxx:1653
 AliAnalysisTaskMuonPerformance.cxx:1654
 AliAnalysisTaskMuonPerformance.cxx:1655
 AliAnalysisTaskMuonPerformance.cxx:1656
 AliAnalysisTaskMuonPerformance.cxx:1657
 AliAnalysisTaskMuonPerformance.cxx:1658
 AliAnalysisTaskMuonPerformance.cxx:1659
 AliAnalysisTaskMuonPerformance.cxx:1660
 AliAnalysisTaskMuonPerformance.cxx:1661
 AliAnalysisTaskMuonPerformance.cxx:1662
 AliAnalysisTaskMuonPerformance.cxx:1663
 AliAnalysisTaskMuonPerformance.cxx:1664
 AliAnalysisTaskMuonPerformance.cxx:1665
 AliAnalysisTaskMuonPerformance.cxx:1666
 AliAnalysisTaskMuonPerformance.cxx:1667
 AliAnalysisTaskMuonPerformance.cxx:1668
 AliAnalysisTaskMuonPerformance.cxx:1669
 AliAnalysisTaskMuonPerformance.cxx:1670
 AliAnalysisTaskMuonPerformance.cxx:1671
 AliAnalysisTaskMuonPerformance.cxx:1672
 AliAnalysisTaskMuonPerformance.cxx:1673
 AliAnalysisTaskMuonPerformance.cxx:1674
 AliAnalysisTaskMuonPerformance.cxx:1675
 AliAnalysisTaskMuonPerformance.cxx:1676
 AliAnalysisTaskMuonPerformance.cxx:1677
 AliAnalysisTaskMuonPerformance.cxx:1678
 AliAnalysisTaskMuonPerformance.cxx:1679
 AliAnalysisTaskMuonPerformance.cxx:1680
 AliAnalysisTaskMuonPerformance.cxx:1681
 AliAnalysisTaskMuonPerformance.cxx:1682
 AliAnalysisTaskMuonPerformance.cxx:1683
 AliAnalysisTaskMuonPerformance.cxx:1684
 AliAnalysisTaskMuonPerformance.cxx:1685
 AliAnalysisTaskMuonPerformance.cxx:1686
 AliAnalysisTaskMuonPerformance.cxx:1687
 AliAnalysisTaskMuonPerformance.cxx:1688
 AliAnalysisTaskMuonPerformance.cxx:1689
 AliAnalysisTaskMuonPerformance.cxx:1690
 AliAnalysisTaskMuonPerformance.cxx:1691
 AliAnalysisTaskMuonPerformance.cxx:1692
 AliAnalysisTaskMuonPerformance.cxx:1693
 AliAnalysisTaskMuonPerformance.cxx:1694
 AliAnalysisTaskMuonPerformance.cxx:1695
 AliAnalysisTaskMuonPerformance.cxx:1696
 AliAnalysisTaskMuonPerformance.cxx:1697
 AliAnalysisTaskMuonPerformance.cxx:1698
 AliAnalysisTaskMuonPerformance.cxx:1699
 AliAnalysisTaskMuonPerformance.cxx:1700
 AliAnalysisTaskMuonPerformance.cxx:1701
 AliAnalysisTaskMuonPerformance.cxx:1702
 AliAnalysisTaskMuonPerformance.cxx:1703
 AliAnalysisTaskMuonPerformance.cxx:1704
 AliAnalysisTaskMuonPerformance.cxx:1705
 AliAnalysisTaskMuonPerformance.cxx:1706
 AliAnalysisTaskMuonPerformance.cxx:1707
 AliAnalysisTaskMuonPerformance.cxx:1708
 AliAnalysisTaskMuonPerformance.cxx:1709
 AliAnalysisTaskMuonPerformance.cxx:1710
 AliAnalysisTaskMuonPerformance.cxx:1711
 AliAnalysisTaskMuonPerformance.cxx:1712
 AliAnalysisTaskMuonPerformance.cxx:1713
 AliAnalysisTaskMuonPerformance.cxx:1714
 AliAnalysisTaskMuonPerformance.cxx:1715
 AliAnalysisTaskMuonPerformance.cxx:1716
 AliAnalysisTaskMuonPerformance.cxx:1717
 AliAnalysisTaskMuonPerformance.cxx:1718
 AliAnalysisTaskMuonPerformance.cxx:1719
 AliAnalysisTaskMuonPerformance.cxx:1720
 AliAnalysisTaskMuonPerformance.cxx:1721
 AliAnalysisTaskMuonPerformance.cxx:1722
 AliAnalysisTaskMuonPerformance.cxx:1723
 AliAnalysisTaskMuonPerformance.cxx:1724
 AliAnalysisTaskMuonPerformance.cxx:1725
 AliAnalysisTaskMuonPerformance.cxx:1726
 AliAnalysisTaskMuonPerformance.cxx:1727
 AliAnalysisTaskMuonPerformance.cxx:1728
 AliAnalysisTaskMuonPerformance.cxx:1729
 AliAnalysisTaskMuonPerformance.cxx:1730
 AliAnalysisTaskMuonPerformance.cxx:1731
 AliAnalysisTaskMuonPerformance.cxx:1732
 AliAnalysisTaskMuonPerformance.cxx:1733
 AliAnalysisTaskMuonPerformance.cxx:1734
 AliAnalysisTaskMuonPerformance.cxx:1735
 AliAnalysisTaskMuonPerformance.cxx:1736
 AliAnalysisTaskMuonPerformance.cxx:1737
 AliAnalysisTaskMuonPerformance.cxx:1738
 AliAnalysisTaskMuonPerformance.cxx:1739
 AliAnalysisTaskMuonPerformance.cxx:1740
 AliAnalysisTaskMuonPerformance.cxx:1741
 AliAnalysisTaskMuonPerformance.cxx:1742
 AliAnalysisTaskMuonPerformance.cxx:1743
 AliAnalysisTaskMuonPerformance.cxx:1744
 AliAnalysisTaskMuonPerformance.cxx:1745
 AliAnalysisTaskMuonPerformance.cxx:1746
 AliAnalysisTaskMuonPerformance.cxx:1747
 AliAnalysisTaskMuonPerformance.cxx:1748
 AliAnalysisTaskMuonPerformance.cxx:1749
 AliAnalysisTaskMuonPerformance.cxx:1750
 AliAnalysisTaskMuonPerformance.cxx:1751
 AliAnalysisTaskMuonPerformance.cxx:1752
 AliAnalysisTaskMuonPerformance.cxx:1753
 AliAnalysisTaskMuonPerformance.cxx:1754
 AliAnalysisTaskMuonPerformance.cxx:1755
 AliAnalysisTaskMuonPerformance.cxx:1756
 AliAnalysisTaskMuonPerformance.cxx:1757
 AliAnalysisTaskMuonPerformance.cxx:1758
 AliAnalysisTaskMuonPerformance.cxx:1759
 AliAnalysisTaskMuonPerformance.cxx:1760
 AliAnalysisTaskMuonPerformance.cxx:1761
 AliAnalysisTaskMuonPerformance.cxx:1762
 AliAnalysisTaskMuonPerformance.cxx:1763
 AliAnalysisTaskMuonPerformance.cxx:1764
 AliAnalysisTaskMuonPerformance.cxx:1765
 AliAnalysisTaskMuonPerformance.cxx:1766
 AliAnalysisTaskMuonPerformance.cxx:1767
 AliAnalysisTaskMuonPerformance.cxx:1768
 AliAnalysisTaskMuonPerformance.cxx:1769
 AliAnalysisTaskMuonPerformance.cxx:1770
 AliAnalysisTaskMuonPerformance.cxx:1771
 AliAnalysisTaskMuonPerformance.cxx:1772
 AliAnalysisTaskMuonPerformance.cxx:1773
 AliAnalysisTaskMuonPerformance.cxx:1774
 AliAnalysisTaskMuonPerformance.cxx:1775
 AliAnalysisTaskMuonPerformance.cxx:1776
 AliAnalysisTaskMuonPerformance.cxx:1777
 AliAnalysisTaskMuonPerformance.cxx:1778
 AliAnalysisTaskMuonPerformance.cxx:1779
 AliAnalysisTaskMuonPerformance.cxx:1780
 AliAnalysisTaskMuonPerformance.cxx:1781
 AliAnalysisTaskMuonPerformance.cxx:1782
 AliAnalysisTaskMuonPerformance.cxx:1783
 AliAnalysisTaskMuonPerformance.cxx:1784
 AliAnalysisTaskMuonPerformance.cxx:1785
 AliAnalysisTaskMuonPerformance.cxx:1786
 AliAnalysisTaskMuonPerformance.cxx:1787
 AliAnalysisTaskMuonPerformance.cxx:1788
 AliAnalysisTaskMuonPerformance.cxx:1789
 AliAnalysisTaskMuonPerformance.cxx:1790
 AliAnalysisTaskMuonPerformance.cxx:1791
 AliAnalysisTaskMuonPerformance.cxx:1792
 AliAnalysisTaskMuonPerformance.cxx:1793
 AliAnalysisTaskMuonPerformance.cxx:1794
 AliAnalysisTaskMuonPerformance.cxx:1795
 AliAnalysisTaskMuonPerformance.cxx:1796
 AliAnalysisTaskMuonPerformance.cxx:1797
 AliAnalysisTaskMuonPerformance.cxx:1798
 AliAnalysisTaskMuonPerformance.cxx:1799
 AliAnalysisTaskMuonPerformance.cxx:1800
 AliAnalysisTaskMuonPerformance.cxx:1801
 AliAnalysisTaskMuonPerformance.cxx:1802
 AliAnalysisTaskMuonPerformance.cxx:1803
 AliAnalysisTaskMuonPerformance.cxx:1804
 AliAnalysisTaskMuonPerformance.cxx:1805
 AliAnalysisTaskMuonPerformance.cxx:1806
 AliAnalysisTaskMuonPerformance.cxx:1807
 AliAnalysisTaskMuonPerformance.cxx:1808
 AliAnalysisTaskMuonPerformance.cxx:1809
 AliAnalysisTaskMuonPerformance.cxx:1810
 AliAnalysisTaskMuonPerformance.cxx:1811
 AliAnalysisTaskMuonPerformance.cxx:1812
 AliAnalysisTaskMuonPerformance.cxx:1813
 AliAnalysisTaskMuonPerformance.cxx:1814
 AliAnalysisTaskMuonPerformance.cxx:1815
 AliAnalysisTaskMuonPerformance.cxx:1816
 AliAnalysisTaskMuonPerformance.cxx:1817
 AliAnalysisTaskMuonPerformance.cxx:1818
 AliAnalysisTaskMuonPerformance.cxx:1819
 AliAnalysisTaskMuonPerformance.cxx:1820
 AliAnalysisTaskMuonPerformance.cxx:1821
 AliAnalysisTaskMuonPerformance.cxx:1822
 AliAnalysisTaskMuonPerformance.cxx:1823
 AliAnalysisTaskMuonPerformance.cxx:1824
 AliAnalysisTaskMuonPerformance.cxx:1825
 AliAnalysisTaskMuonPerformance.cxx:1826
 AliAnalysisTaskMuonPerformance.cxx:1827
 AliAnalysisTaskMuonPerformance.cxx:1828
 AliAnalysisTaskMuonPerformance.cxx:1829
 AliAnalysisTaskMuonPerformance.cxx:1830
 AliAnalysisTaskMuonPerformance.cxx:1831
 AliAnalysisTaskMuonPerformance.cxx:1832
 AliAnalysisTaskMuonPerformance.cxx:1833
 AliAnalysisTaskMuonPerformance.cxx:1834
 AliAnalysisTaskMuonPerformance.cxx:1835
 AliAnalysisTaskMuonPerformance.cxx:1836
 AliAnalysisTaskMuonPerformance.cxx:1837
 AliAnalysisTaskMuonPerformance.cxx:1838
 AliAnalysisTaskMuonPerformance.cxx:1839
 AliAnalysisTaskMuonPerformance.cxx:1840
 AliAnalysisTaskMuonPerformance.cxx:1841
 AliAnalysisTaskMuonPerformance.cxx:1842
 AliAnalysisTaskMuonPerformance.cxx:1843
 AliAnalysisTaskMuonPerformance.cxx:1844
 AliAnalysisTaskMuonPerformance.cxx:1845
 AliAnalysisTaskMuonPerformance.cxx:1846
 AliAnalysisTaskMuonPerformance.cxx:1847
 AliAnalysisTaskMuonPerformance.cxx:1848
 AliAnalysisTaskMuonPerformance.cxx:1849
 AliAnalysisTaskMuonPerformance.cxx:1850
 AliAnalysisTaskMuonPerformance.cxx:1851
 AliAnalysisTaskMuonPerformance.cxx:1852
 AliAnalysisTaskMuonPerformance.cxx:1853
 AliAnalysisTaskMuonPerformance.cxx:1854
 AliAnalysisTaskMuonPerformance.cxx:1855
 AliAnalysisTaskMuonPerformance.cxx:1856
 AliAnalysisTaskMuonPerformance.cxx:1857
 AliAnalysisTaskMuonPerformance.cxx:1858
 AliAnalysisTaskMuonPerformance.cxx:1859
 AliAnalysisTaskMuonPerformance.cxx:1860
 AliAnalysisTaskMuonPerformance.cxx:1861
 AliAnalysisTaskMuonPerformance.cxx:1862
 AliAnalysisTaskMuonPerformance.cxx:1863
 AliAnalysisTaskMuonPerformance.cxx:1864
 AliAnalysisTaskMuonPerformance.cxx:1865
 AliAnalysisTaskMuonPerformance.cxx:1866
 AliAnalysisTaskMuonPerformance.cxx:1867
 AliAnalysisTaskMuonPerformance.cxx:1868
 AliAnalysisTaskMuonPerformance.cxx:1869
 AliAnalysisTaskMuonPerformance.cxx:1870
 AliAnalysisTaskMuonPerformance.cxx:1871
 AliAnalysisTaskMuonPerformance.cxx:1872
 AliAnalysisTaskMuonPerformance.cxx:1873
 AliAnalysisTaskMuonPerformance.cxx:1874
 AliAnalysisTaskMuonPerformance.cxx:1875
 AliAnalysisTaskMuonPerformance.cxx:1876
 AliAnalysisTaskMuonPerformance.cxx:1877
 AliAnalysisTaskMuonPerformance.cxx:1878
 AliAnalysisTaskMuonPerformance.cxx:1879
 AliAnalysisTaskMuonPerformance.cxx:1880
 AliAnalysisTaskMuonPerformance.cxx:1881
 AliAnalysisTaskMuonPerformance.cxx:1882
 AliAnalysisTaskMuonPerformance.cxx:1883
 AliAnalysisTaskMuonPerformance.cxx:1884
 AliAnalysisTaskMuonPerformance.cxx:1885
 AliAnalysisTaskMuonPerformance.cxx:1886
 AliAnalysisTaskMuonPerformance.cxx:1887
 AliAnalysisTaskMuonPerformance.cxx:1888
 AliAnalysisTaskMuonPerformance.cxx:1889
 AliAnalysisTaskMuonPerformance.cxx:1890
 AliAnalysisTaskMuonPerformance.cxx:1891
 AliAnalysisTaskMuonPerformance.cxx:1892
 AliAnalysisTaskMuonPerformance.cxx:1893
 AliAnalysisTaskMuonPerformance.cxx:1894
 AliAnalysisTaskMuonPerformance.cxx:1895
 AliAnalysisTaskMuonPerformance.cxx:1896
 AliAnalysisTaskMuonPerformance.cxx:1897
 AliAnalysisTaskMuonPerformance.cxx:1898
 AliAnalysisTaskMuonPerformance.cxx:1899
 AliAnalysisTaskMuonPerformance.cxx:1900
 AliAnalysisTaskMuonPerformance.cxx:1901
 AliAnalysisTaskMuonPerformance.cxx:1902
 AliAnalysisTaskMuonPerformance.cxx:1903
 AliAnalysisTaskMuonPerformance.cxx:1904
 AliAnalysisTaskMuonPerformance.cxx:1905
 AliAnalysisTaskMuonPerformance.cxx:1906
 AliAnalysisTaskMuonPerformance.cxx:1907
 AliAnalysisTaskMuonPerformance.cxx:1908
 AliAnalysisTaskMuonPerformance.cxx:1909
 AliAnalysisTaskMuonPerformance.cxx:1910
 AliAnalysisTaskMuonPerformance.cxx:1911
 AliAnalysisTaskMuonPerformance.cxx:1912
 AliAnalysisTaskMuonPerformance.cxx:1913
 AliAnalysisTaskMuonPerformance.cxx:1914
 AliAnalysisTaskMuonPerformance.cxx:1915
 AliAnalysisTaskMuonPerformance.cxx:1916
 AliAnalysisTaskMuonPerformance.cxx:1917
 AliAnalysisTaskMuonPerformance.cxx:1918
 AliAnalysisTaskMuonPerformance.cxx:1919
 AliAnalysisTaskMuonPerformance.cxx:1920
 AliAnalysisTaskMuonPerformance.cxx:1921
 AliAnalysisTaskMuonPerformance.cxx:1922
 AliAnalysisTaskMuonPerformance.cxx:1923
 AliAnalysisTaskMuonPerformance.cxx:1924
 AliAnalysisTaskMuonPerformance.cxx:1925
 AliAnalysisTaskMuonPerformance.cxx:1926
 AliAnalysisTaskMuonPerformance.cxx:1927
 AliAnalysisTaskMuonPerformance.cxx:1928
 AliAnalysisTaskMuonPerformance.cxx:1929
 AliAnalysisTaskMuonPerformance.cxx:1930
 AliAnalysisTaskMuonPerformance.cxx:1931
 AliAnalysisTaskMuonPerformance.cxx:1932
 AliAnalysisTaskMuonPerformance.cxx:1933
 AliAnalysisTaskMuonPerformance.cxx:1934
 AliAnalysisTaskMuonPerformance.cxx:1935
 AliAnalysisTaskMuonPerformance.cxx:1936
 AliAnalysisTaskMuonPerformance.cxx:1937
 AliAnalysisTaskMuonPerformance.cxx:1938
 AliAnalysisTaskMuonPerformance.cxx:1939
 AliAnalysisTaskMuonPerformance.cxx:1940
 AliAnalysisTaskMuonPerformance.cxx:1941
 AliAnalysisTaskMuonPerformance.cxx:1942
 AliAnalysisTaskMuonPerformance.cxx:1943
 AliAnalysisTaskMuonPerformance.cxx:1944
 AliAnalysisTaskMuonPerformance.cxx:1945
 AliAnalysisTaskMuonPerformance.cxx:1946
 AliAnalysisTaskMuonPerformance.cxx:1947
 AliAnalysisTaskMuonPerformance.cxx:1948
 AliAnalysisTaskMuonPerformance.cxx:1949
 AliAnalysisTaskMuonPerformance.cxx:1950
 AliAnalysisTaskMuonPerformance.cxx:1951
 AliAnalysisTaskMuonPerformance.cxx:1952
 AliAnalysisTaskMuonPerformance.cxx:1953
 AliAnalysisTaskMuonPerformance.cxx:1954
 AliAnalysisTaskMuonPerformance.cxx:1955
 AliAnalysisTaskMuonPerformance.cxx:1956
 AliAnalysisTaskMuonPerformance.cxx:1957
 AliAnalysisTaskMuonPerformance.cxx:1958
 AliAnalysisTaskMuonPerformance.cxx:1959
 AliAnalysisTaskMuonPerformance.cxx:1960
 AliAnalysisTaskMuonPerformance.cxx:1961
 AliAnalysisTaskMuonPerformance.cxx:1962
 AliAnalysisTaskMuonPerformance.cxx:1963
 AliAnalysisTaskMuonPerformance.cxx:1964
 AliAnalysisTaskMuonPerformance.cxx:1965
 AliAnalysisTaskMuonPerformance.cxx:1966
 AliAnalysisTaskMuonPerformance.cxx:1967
 AliAnalysisTaskMuonPerformance.cxx:1968
 AliAnalysisTaskMuonPerformance.cxx:1969
 AliAnalysisTaskMuonPerformance.cxx:1970
 AliAnalysisTaskMuonPerformance.cxx:1971
 AliAnalysisTaskMuonPerformance.cxx:1972
 AliAnalysisTaskMuonPerformance.cxx:1973
 AliAnalysisTaskMuonPerformance.cxx:1974
 AliAnalysisTaskMuonPerformance.cxx:1975
 AliAnalysisTaskMuonPerformance.cxx:1976
 AliAnalysisTaskMuonPerformance.cxx:1977
 AliAnalysisTaskMuonPerformance.cxx:1978
 AliAnalysisTaskMuonPerformance.cxx:1979
 AliAnalysisTaskMuonPerformance.cxx:1980
 AliAnalysisTaskMuonPerformance.cxx:1981
 AliAnalysisTaskMuonPerformance.cxx:1982
 AliAnalysisTaskMuonPerformance.cxx:1983
 AliAnalysisTaskMuonPerformance.cxx:1984
 AliAnalysisTaskMuonPerformance.cxx:1985
 AliAnalysisTaskMuonPerformance.cxx:1986
 AliAnalysisTaskMuonPerformance.cxx:1987
 AliAnalysisTaskMuonPerformance.cxx:1988
 AliAnalysisTaskMuonPerformance.cxx:1989
 AliAnalysisTaskMuonPerformance.cxx:1990
 AliAnalysisTaskMuonPerformance.cxx:1991
 AliAnalysisTaskMuonPerformance.cxx:1992
 AliAnalysisTaskMuonPerformance.cxx:1993
 AliAnalysisTaskMuonPerformance.cxx:1994
 AliAnalysisTaskMuonPerformance.cxx:1995
 AliAnalysisTaskMuonPerformance.cxx:1996
 AliAnalysisTaskMuonPerformance.cxx:1997
 AliAnalysisTaskMuonPerformance.cxx:1998
 AliAnalysisTaskMuonPerformance.cxx:1999
 AliAnalysisTaskMuonPerformance.cxx:2000
 AliAnalysisTaskMuonPerformance.cxx:2001
 AliAnalysisTaskMuonPerformance.cxx:2002
 AliAnalysisTaskMuonPerformance.cxx:2003
 AliAnalysisTaskMuonPerformance.cxx:2004
 AliAnalysisTaskMuonPerformance.cxx:2005
 AliAnalysisTaskMuonPerformance.cxx:2006
 AliAnalysisTaskMuonPerformance.cxx:2007
 AliAnalysisTaskMuonPerformance.cxx:2008
 AliAnalysisTaskMuonPerformance.cxx:2009
 AliAnalysisTaskMuonPerformance.cxx:2010
 AliAnalysisTaskMuonPerformance.cxx:2011
 AliAnalysisTaskMuonPerformance.cxx:2012
 AliAnalysisTaskMuonPerformance.cxx:2013
 AliAnalysisTaskMuonPerformance.cxx:2014
 AliAnalysisTaskMuonPerformance.cxx:2015
 AliAnalysisTaskMuonPerformance.cxx:2016
 AliAnalysisTaskMuonPerformance.cxx:2017
 AliAnalysisTaskMuonPerformance.cxx:2018
 AliAnalysisTaskMuonPerformance.cxx:2019
 AliAnalysisTaskMuonPerformance.cxx:2020
 AliAnalysisTaskMuonPerformance.cxx:2021
 AliAnalysisTaskMuonPerformance.cxx:2022
 AliAnalysisTaskMuonPerformance.cxx:2023
 AliAnalysisTaskMuonPerformance.cxx:2024
 AliAnalysisTaskMuonPerformance.cxx:2025
 AliAnalysisTaskMuonPerformance.cxx:2026
 AliAnalysisTaskMuonPerformance.cxx:2027
 AliAnalysisTaskMuonPerformance.cxx:2028
 AliAnalysisTaskMuonPerformance.cxx:2029
 AliAnalysisTaskMuonPerformance.cxx:2030
 AliAnalysisTaskMuonPerformance.cxx:2031
 AliAnalysisTaskMuonPerformance.cxx:2032
 AliAnalysisTaskMuonPerformance.cxx:2033
 AliAnalysisTaskMuonPerformance.cxx:2034
 AliAnalysisTaskMuonPerformance.cxx:2035
 AliAnalysisTaskMuonPerformance.cxx:2036
 AliAnalysisTaskMuonPerformance.cxx:2037
 AliAnalysisTaskMuonPerformance.cxx:2038
 AliAnalysisTaskMuonPerformance.cxx:2039
 AliAnalysisTaskMuonPerformance.cxx:2040
 AliAnalysisTaskMuonPerformance.cxx:2041
 AliAnalysisTaskMuonPerformance.cxx:2042
 AliAnalysisTaskMuonPerformance.cxx:2043
 AliAnalysisTaskMuonPerformance.cxx:2044
 AliAnalysisTaskMuonPerformance.cxx:2045
 AliAnalysisTaskMuonPerformance.cxx:2046
 AliAnalysisTaskMuonPerformance.cxx:2047
 AliAnalysisTaskMuonPerformance.cxx:2048
 AliAnalysisTaskMuonPerformance.cxx:2049
 AliAnalysisTaskMuonPerformance.cxx:2050
 AliAnalysisTaskMuonPerformance.cxx:2051
 AliAnalysisTaskMuonPerformance.cxx:2052
 AliAnalysisTaskMuonPerformance.cxx:2053
 AliAnalysisTaskMuonPerformance.cxx:2054
 AliAnalysisTaskMuonPerformance.cxx:2055
 AliAnalysisTaskMuonPerformance.cxx:2056
 AliAnalysisTaskMuonPerformance.cxx:2057
 AliAnalysisTaskMuonPerformance.cxx:2058
 AliAnalysisTaskMuonPerformance.cxx:2059
 AliAnalysisTaskMuonPerformance.cxx:2060
 AliAnalysisTaskMuonPerformance.cxx:2061
 AliAnalysisTaskMuonPerformance.cxx:2062
 AliAnalysisTaskMuonPerformance.cxx:2063
 AliAnalysisTaskMuonPerformance.cxx:2064
 AliAnalysisTaskMuonPerformance.cxx:2065
 AliAnalysisTaskMuonPerformance.cxx:2066
 AliAnalysisTaskMuonPerformance.cxx:2067
 AliAnalysisTaskMuonPerformance.cxx:2068
 AliAnalysisTaskMuonPerformance.cxx:2069
 AliAnalysisTaskMuonPerformance.cxx:2070
 AliAnalysisTaskMuonPerformance.cxx:2071
 AliAnalysisTaskMuonPerformance.cxx:2072
 AliAnalysisTaskMuonPerformance.cxx:2073
 AliAnalysisTaskMuonPerformance.cxx:2074
 AliAnalysisTaskMuonPerformance.cxx:2075
 AliAnalysisTaskMuonPerformance.cxx:2076
 AliAnalysisTaskMuonPerformance.cxx:2077
 AliAnalysisTaskMuonPerformance.cxx:2078
 AliAnalysisTaskMuonPerformance.cxx:2079
 AliAnalysisTaskMuonPerformance.cxx:2080
 AliAnalysisTaskMuonPerformance.cxx:2081
 AliAnalysisTaskMuonPerformance.cxx:2082
 AliAnalysisTaskMuonPerformance.cxx:2083
 AliAnalysisTaskMuonPerformance.cxx:2084
 AliAnalysisTaskMuonPerformance.cxx:2085
 AliAnalysisTaskMuonPerformance.cxx:2086
 AliAnalysisTaskMuonPerformance.cxx:2087
 AliAnalysisTaskMuonPerformance.cxx:2088
 AliAnalysisTaskMuonPerformance.cxx:2089
 AliAnalysisTaskMuonPerformance.cxx:2090
 AliAnalysisTaskMuonPerformance.cxx:2091
 AliAnalysisTaskMuonPerformance.cxx:2092
 AliAnalysisTaskMuonPerformance.cxx:2093
 AliAnalysisTaskMuonPerformance.cxx:2094
 AliAnalysisTaskMuonPerformance.cxx:2095
 AliAnalysisTaskMuonPerformance.cxx:2096
 AliAnalysisTaskMuonPerformance.cxx:2097
 AliAnalysisTaskMuonPerformance.cxx:2098
 AliAnalysisTaskMuonPerformance.cxx:2099
 AliAnalysisTaskMuonPerformance.cxx:2100
 AliAnalysisTaskMuonPerformance.cxx:2101
 AliAnalysisTaskMuonPerformance.cxx:2102
 AliAnalysisTaskMuonPerformance.cxx:2103
 AliAnalysisTaskMuonPerformance.cxx:2104
 AliAnalysisTaskMuonPerformance.cxx:2105
 AliAnalysisTaskMuonPerformance.cxx:2106
 AliAnalysisTaskMuonPerformance.cxx:2107
 AliAnalysisTaskMuonPerformance.cxx:2108
 AliAnalysisTaskMuonPerformance.cxx:2109
 AliAnalysisTaskMuonPerformance.cxx:2110
 AliAnalysisTaskMuonPerformance.cxx:2111
 AliAnalysisTaskMuonPerformance.cxx:2112
 AliAnalysisTaskMuonPerformance.cxx:2113
 AliAnalysisTaskMuonPerformance.cxx:2114
 AliAnalysisTaskMuonPerformance.cxx:2115
 AliAnalysisTaskMuonPerformance.cxx:2116
 AliAnalysisTaskMuonPerformance.cxx:2117
 AliAnalysisTaskMuonPerformance.cxx:2118
 AliAnalysisTaskMuonPerformance.cxx:2119
 AliAnalysisTaskMuonPerformance.cxx:2120
 AliAnalysisTaskMuonPerformance.cxx:2121
 AliAnalysisTaskMuonPerformance.cxx:2122
 AliAnalysisTaskMuonPerformance.cxx:2123
 AliAnalysisTaskMuonPerformance.cxx:2124
 AliAnalysisTaskMuonPerformance.cxx:2125
 AliAnalysisTaskMuonPerformance.cxx:2126
 AliAnalysisTaskMuonPerformance.cxx:2127
 AliAnalysisTaskMuonPerformance.cxx:2128
 AliAnalysisTaskMuonPerformance.cxx:2129
 AliAnalysisTaskMuonPerformance.cxx:2130
 AliAnalysisTaskMuonPerformance.cxx:2131
 AliAnalysisTaskMuonPerformance.cxx:2132
 AliAnalysisTaskMuonPerformance.cxx:2133
 AliAnalysisTaskMuonPerformance.cxx:2134
 AliAnalysisTaskMuonPerformance.cxx:2135
 AliAnalysisTaskMuonPerformance.cxx:2136
 AliAnalysisTaskMuonPerformance.cxx:2137
 AliAnalysisTaskMuonPerformance.cxx:2138
 AliAnalysisTaskMuonPerformance.cxx:2139
 AliAnalysisTaskMuonPerformance.cxx:2140
 AliAnalysisTaskMuonPerformance.cxx:2141
 AliAnalysisTaskMuonPerformance.cxx:2142
 AliAnalysisTaskMuonPerformance.cxx:2143
 AliAnalysisTaskMuonPerformance.cxx:2144
 AliAnalysisTaskMuonPerformance.cxx:2145
 AliAnalysisTaskMuonPerformance.cxx:2146
 AliAnalysisTaskMuonPerformance.cxx:2147
 AliAnalysisTaskMuonPerformance.cxx:2148
 AliAnalysisTaskMuonPerformance.cxx:2149
 AliAnalysisTaskMuonPerformance.cxx:2150
 AliAnalysisTaskMuonPerformance.cxx:2151
 AliAnalysisTaskMuonPerformance.cxx:2152
 AliAnalysisTaskMuonPerformance.cxx:2153
 AliAnalysisTaskMuonPerformance.cxx:2154
 AliAnalysisTaskMuonPerformance.cxx:2155
 AliAnalysisTaskMuonPerformance.cxx:2156
 AliAnalysisTaskMuonPerformance.cxx:2157
 AliAnalysisTaskMuonPerformance.cxx:2158
 AliAnalysisTaskMuonPerformance.cxx:2159
 AliAnalysisTaskMuonPerformance.cxx:2160
 AliAnalysisTaskMuonPerformance.cxx:2161
 AliAnalysisTaskMuonPerformance.cxx:2162
 AliAnalysisTaskMuonPerformance.cxx:2163
 AliAnalysisTaskMuonPerformance.cxx:2164
 AliAnalysisTaskMuonPerformance.cxx:2165
 AliAnalysisTaskMuonPerformance.cxx:2166
 AliAnalysisTaskMuonPerformance.cxx:2167
 AliAnalysisTaskMuonPerformance.cxx:2168
 AliAnalysisTaskMuonPerformance.cxx:2169
 AliAnalysisTaskMuonPerformance.cxx:2170
 AliAnalysisTaskMuonPerformance.cxx:2171
 AliAnalysisTaskMuonPerformance.cxx:2172
 AliAnalysisTaskMuonPerformance.cxx:2173
 AliAnalysisTaskMuonPerformance.cxx:2174
 AliAnalysisTaskMuonPerformance.cxx:2175
 AliAnalysisTaskMuonPerformance.cxx:2176
 AliAnalysisTaskMuonPerformance.cxx:2177
 AliAnalysisTaskMuonPerformance.cxx:2178
 AliAnalysisTaskMuonPerformance.cxx:2179
 AliAnalysisTaskMuonPerformance.cxx:2180
 AliAnalysisTaskMuonPerformance.cxx:2181
 AliAnalysisTaskMuonPerformance.cxx:2182
 AliAnalysisTaskMuonPerformance.cxx:2183
 AliAnalysisTaskMuonPerformance.cxx:2184
 AliAnalysisTaskMuonPerformance.cxx:2185
 AliAnalysisTaskMuonPerformance.cxx:2186
 AliAnalysisTaskMuonPerformance.cxx:2187
 AliAnalysisTaskMuonPerformance.cxx:2188
 AliAnalysisTaskMuonPerformance.cxx:2189
 AliAnalysisTaskMuonPerformance.cxx:2190
 AliAnalysisTaskMuonPerformance.cxx:2191
 AliAnalysisTaskMuonPerformance.cxx:2192
 AliAnalysisTaskMuonPerformance.cxx:2193
 AliAnalysisTaskMuonPerformance.cxx:2194
 AliAnalysisTaskMuonPerformance.cxx:2195
 AliAnalysisTaskMuonPerformance.cxx:2196
 AliAnalysisTaskMuonPerformance.cxx:2197
 AliAnalysisTaskMuonPerformance.cxx:2198
 AliAnalysisTaskMuonPerformance.cxx:2199
 AliAnalysisTaskMuonPerformance.cxx:2200
 AliAnalysisTaskMuonPerformance.cxx:2201
 AliAnalysisTaskMuonPerformance.cxx:2202
 AliAnalysisTaskMuonPerformance.cxx:2203
 AliAnalysisTaskMuonPerformance.cxx:2204
 AliAnalysisTaskMuonPerformance.cxx:2205
 AliAnalysisTaskMuonPerformance.cxx:2206
 AliAnalysisTaskMuonPerformance.cxx:2207
 AliAnalysisTaskMuonPerformance.cxx:2208
 AliAnalysisTaskMuonPerformance.cxx:2209
 AliAnalysisTaskMuonPerformance.cxx:2210
 AliAnalysisTaskMuonPerformance.cxx:2211
 AliAnalysisTaskMuonPerformance.cxx:2212
 AliAnalysisTaskMuonPerformance.cxx:2213
 AliAnalysisTaskMuonPerformance.cxx:2214
 AliAnalysisTaskMuonPerformance.cxx:2215
 AliAnalysisTaskMuonPerformance.cxx:2216
 AliAnalysisTaskMuonPerformance.cxx:2217
 AliAnalysisTaskMuonPerformance.cxx:2218
 AliAnalysisTaskMuonPerformance.cxx:2219
 AliAnalysisTaskMuonPerformance.cxx:2220
 AliAnalysisTaskMuonPerformance.cxx:2221
 AliAnalysisTaskMuonPerformance.cxx:2222
 AliAnalysisTaskMuonPerformance.cxx:2223
 AliAnalysisTaskMuonPerformance.cxx:2224
 AliAnalysisTaskMuonPerformance.cxx:2225
 AliAnalysisTaskMuonPerformance.cxx:2226
 AliAnalysisTaskMuonPerformance.cxx:2227
 AliAnalysisTaskMuonPerformance.cxx:2228
 AliAnalysisTaskMuonPerformance.cxx:2229
 AliAnalysisTaskMuonPerformance.cxx:2230
 AliAnalysisTaskMuonPerformance.cxx:2231
 AliAnalysisTaskMuonPerformance.cxx:2232
 AliAnalysisTaskMuonPerformance.cxx:2233
 AliAnalysisTaskMuonPerformance.cxx:2234
 AliAnalysisTaskMuonPerformance.cxx:2235
 AliAnalysisTaskMuonPerformance.cxx:2236
 AliAnalysisTaskMuonPerformance.cxx:2237
 AliAnalysisTaskMuonPerformance.cxx:2238
 AliAnalysisTaskMuonPerformance.cxx:2239
 AliAnalysisTaskMuonPerformance.cxx:2240
 AliAnalysisTaskMuonPerformance.cxx:2241
 AliAnalysisTaskMuonPerformance.cxx:2242
 AliAnalysisTaskMuonPerformance.cxx:2243
 AliAnalysisTaskMuonPerformance.cxx:2244
 AliAnalysisTaskMuonPerformance.cxx:2245
 AliAnalysisTaskMuonPerformance.cxx:2246
 AliAnalysisTaskMuonPerformance.cxx:2247
 AliAnalysisTaskMuonPerformance.cxx:2248
 AliAnalysisTaskMuonPerformance.cxx:2249
 AliAnalysisTaskMuonPerformance.cxx:2250
 AliAnalysisTaskMuonPerformance.cxx:2251
 AliAnalysisTaskMuonPerformance.cxx:2252
 AliAnalysisTaskMuonPerformance.cxx:2253
 AliAnalysisTaskMuonPerformance.cxx:2254
 AliAnalysisTaskMuonPerformance.cxx:2255
 AliAnalysisTaskMuonPerformance.cxx:2256
 AliAnalysisTaskMuonPerformance.cxx:2257
 AliAnalysisTaskMuonPerformance.cxx:2258
 AliAnalysisTaskMuonPerformance.cxx:2259
 AliAnalysisTaskMuonPerformance.cxx:2260
 AliAnalysisTaskMuonPerformance.cxx:2261
 AliAnalysisTaskMuonPerformance.cxx:2262
 AliAnalysisTaskMuonPerformance.cxx:2263
 AliAnalysisTaskMuonPerformance.cxx:2264
 AliAnalysisTaskMuonPerformance.cxx:2265
 AliAnalysisTaskMuonPerformance.cxx:2266
 AliAnalysisTaskMuonPerformance.cxx:2267
 AliAnalysisTaskMuonPerformance.cxx:2268
 AliAnalysisTaskMuonPerformance.cxx:2269
 AliAnalysisTaskMuonPerformance.cxx:2270
 AliAnalysisTaskMuonPerformance.cxx:2271
 AliAnalysisTaskMuonPerformance.cxx:2272
 AliAnalysisTaskMuonPerformance.cxx:2273
 AliAnalysisTaskMuonPerformance.cxx:2274
 AliAnalysisTaskMuonPerformance.cxx:2275
 AliAnalysisTaskMuonPerformance.cxx:2276
 AliAnalysisTaskMuonPerformance.cxx:2277
 AliAnalysisTaskMuonPerformance.cxx:2278
 AliAnalysisTaskMuonPerformance.cxx:2279
 AliAnalysisTaskMuonPerformance.cxx:2280
 AliAnalysisTaskMuonPerformance.cxx:2281
 AliAnalysisTaskMuonPerformance.cxx:2282
 AliAnalysisTaskMuonPerformance.cxx:2283
 AliAnalysisTaskMuonPerformance.cxx:2284
 AliAnalysisTaskMuonPerformance.cxx:2285
 AliAnalysisTaskMuonPerformance.cxx:2286
 AliAnalysisTaskMuonPerformance.cxx:2287
 AliAnalysisTaskMuonPerformance.cxx:2288
 AliAnalysisTaskMuonPerformance.cxx:2289
 AliAnalysisTaskMuonPerformance.cxx:2290
 AliAnalysisTaskMuonPerformance.cxx:2291
 AliAnalysisTaskMuonPerformance.cxx:2292
 AliAnalysisTaskMuonPerformance.cxx:2293
 AliAnalysisTaskMuonPerformance.cxx:2294
 AliAnalysisTaskMuonPerformance.cxx:2295
 AliAnalysisTaskMuonPerformance.cxx:2296
 AliAnalysisTaskMuonPerformance.cxx:2297
 AliAnalysisTaskMuonPerformance.cxx:2298
 AliAnalysisTaskMuonPerformance.cxx:2299
 AliAnalysisTaskMuonPerformance.cxx:2300
 AliAnalysisTaskMuonPerformance.cxx:2301
 AliAnalysisTaskMuonPerformance.cxx:2302
 AliAnalysisTaskMuonPerformance.cxx:2303
 AliAnalysisTaskMuonPerformance.cxx:2304
 AliAnalysisTaskMuonPerformance.cxx:2305
 AliAnalysisTaskMuonPerformance.cxx:2306
 AliAnalysisTaskMuonPerformance.cxx:2307
 AliAnalysisTaskMuonPerformance.cxx:2308
 AliAnalysisTaskMuonPerformance.cxx:2309
 AliAnalysisTaskMuonPerformance.cxx:2310
 AliAnalysisTaskMuonPerformance.cxx:2311
 AliAnalysisTaskMuonPerformance.cxx:2312
 AliAnalysisTaskMuonPerformance.cxx:2313
 AliAnalysisTaskMuonPerformance.cxx:2314
 AliAnalysisTaskMuonPerformance.cxx:2315
 AliAnalysisTaskMuonPerformance.cxx:2316
 AliAnalysisTaskMuonPerformance.cxx:2317
 AliAnalysisTaskMuonPerformance.cxx:2318
 AliAnalysisTaskMuonPerformance.cxx:2319
 AliAnalysisTaskMuonPerformance.cxx:2320
 AliAnalysisTaskMuonPerformance.cxx:2321
 AliAnalysisTaskMuonPerformance.cxx:2322
 AliAnalysisTaskMuonPerformance.cxx:2323
 AliAnalysisTaskMuonPerformance.cxx:2324
 AliAnalysisTaskMuonPerformance.cxx:2325
 AliAnalysisTaskMuonPerformance.cxx:2326
 AliAnalysisTaskMuonPerformance.cxx:2327
 AliAnalysisTaskMuonPerformance.cxx:2328
 AliAnalysisTaskMuonPerformance.cxx:2329
 AliAnalysisTaskMuonPerformance.cxx:2330
 AliAnalysisTaskMuonPerformance.cxx:2331
 AliAnalysisTaskMuonPerformance.cxx:2332
 AliAnalysisTaskMuonPerformance.cxx:2333
 AliAnalysisTaskMuonPerformance.cxx:2334
 AliAnalysisTaskMuonPerformance.cxx:2335
 AliAnalysisTaskMuonPerformance.cxx:2336
 AliAnalysisTaskMuonPerformance.cxx:2337
 AliAnalysisTaskMuonPerformance.cxx:2338
 AliAnalysisTaskMuonPerformance.cxx:2339
 AliAnalysisTaskMuonPerformance.cxx:2340
 AliAnalysisTaskMuonPerformance.cxx:2341
 AliAnalysisTaskMuonPerformance.cxx:2342
 AliAnalysisTaskMuonPerformance.cxx:2343
 AliAnalysisTaskMuonPerformance.cxx:2344
 AliAnalysisTaskMuonPerformance.cxx:2345
 AliAnalysisTaskMuonPerformance.cxx:2346
 AliAnalysisTaskMuonPerformance.cxx:2347
 AliAnalysisTaskMuonPerformance.cxx:2348
 AliAnalysisTaskMuonPerformance.cxx:2349
 AliAnalysisTaskMuonPerformance.cxx:2350
 AliAnalysisTaskMuonPerformance.cxx:2351
 AliAnalysisTaskMuonPerformance.cxx:2352
 AliAnalysisTaskMuonPerformance.cxx:2353
 AliAnalysisTaskMuonPerformance.cxx:2354
 AliAnalysisTaskMuonPerformance.cxx:2355
 AliAnalysisTaskMuonPerformance.cxx:2356
 AliAnalysisTaskMuonPerformance.cxx:2357
 AliAnalysisTaskMuonPerformance.cxx:2358
 AliAnalysisTaskMuonPerformance.cxx:2359
 AliAnalysisTaskMuonPerformance.cxx:2360
 AliAnalysisTaskMuonPerformance.cxx:2361
 AliAnalysisTaskMuonPerformance.cxx:2362
 AliAnalysisTaskMuonPerformance.cxx:2363
 AliAnalysisTaskMuonPerformance.cxx:2364
 AliAnalysisTaskMuonPerformance.cxx:2365
 AliAnalysisTaskMuonPerformance.cxx:2366
 AliAnalysisTaskMuonPerformance.cxx:2367
 AliAnalysisTaskMuonPerformance.cxx:2368
 AliAnalysisTaskMuonPerformance.cxx:2369
 AliAnalysisTaskMuonPerformance.cxx:2370
 AliAnalysisTaskMuonPerformance.cxx:2371
 AliAnalysisTaskMuonPerformance.cxx:2372
 AliAnalysisTaskMuonPerformance.cxx:2373
 AliAnalysisTaskMuonPerformance.cxx:2374
 AliAnalysisTaskMuonPerformance.cxx:2375
 AliAnalysisTaskMuonPerformance.cxx:2376
 AliAnalysisTaskMuonPerformance.cxx:2377
 AliAnalysisTaskMuonPerformance.cxx:2378
 AliAnalysisTaskMuonPerformance.cxx:2379
 AliAnalysisTaskMuonPerformance.cxx:2380
 AliAnalysisTaskMuonPerformance.cxx:2381
 AliAnalysisTaskMuonPerformance.cxx:2382
 AliAnalysisTaskMuonPerformance.cxx:2383
 AliAnalysisTaskMuonPerformance.cxx:2384
 AliAnalysisTaskMuonPerformance.cxx:2385
 AliAnalysisTaskMuonPerformance.cxx:2386
 AliAnalysisTaskMuonPerformance.cxx:2387
 AliAnalysisTaskMuonPerformance.cxx:2388
 AliAnalysisTaskMuonPerformance.cxx:2389
 AliAnalysisTaskMuonPerformance.cxx:2390
 AliAnalysisTaskMuonPerformance.cxx:2391
 AliAnalysisTaskMuonPerformance.cxx:2392
 AliAnalysisTaskMuonPerformance.cxx:2393
 AliAnalysisTaskMuonPerformance.cxx:2394
 AliAnalysisTaskMuonPerformance.cxx:2395
 AliAnalysisTaskMuonPerformance.cxx:2396
 AliAnalysisTaskMuonPerformance.cxx:2397
 AliAnalysisTaskMuonPerformance.cxx:2398
 AliAnalysisTaskMuonPerformance.cxx:2399
 AliAnalysisTaskMuonPerformance.cxx:2400
 AliAnalysisTaskMuonPerformance.cxx:2401
 AliAnalysisTaskMuonPerformance.cxx:2402
 AliAnalysisTaskMuonPerformance.cxx:2403
 AliAnalysisTaskMuonPerformance.cxx:2404
 AliAnalysisTaskMuonPerformance.cxx:2405
 AliAnalysisTaskMuonPerformance.cxx:2406
 AliAnalysisTaskMuonPerformance.cxx:2407
 AliAnalysisTaskMuonPerformance.cxx:2408
 AliAnalysisTaskMuonPerformance.cxx:2409
 AliAnalysisTaskMuonPerformance.cxx:2410
 AliAnalysisTaskMuonPerformance.cxx:2411
 AliAnalysisTaskMuonPerformance.cxx:2412
 AliAnalysisTaskMuonPerformance.cxx:2413
 AliAnalysisTaskMuonPerformance.cxx:2414
 AliAnalysisTaskMuonPerformance.cxx:2415
 AliAnalysisTaskMuonPerformance.cxx:2416
 AliAnalysisTaskMuonPerformance.cxx:2417
 AliAnalysisTaskMuonPerformance.cxx:2418
 AliAnalysisTaskMuonPerformance.cxx:2419
 AliAnalysisTaskMuonPerformance.cxx:2420
 AliAnalysisTaskMuonPerformance.cxx:2421
 AliAnalysisTaskMuonPerformance.cxx:2422
 AliAnalysisTaskMuonPerformance.cxx:2423
 AliAnalysisTaskMuonPerformance.cxx:2424
 AliAnalysisTaskMuonPerformance.cxx:2425
 AliAnalysisTaskMuonPerformance.cxx:2426
 AliAnalysisTaskMuonPerformance.cxx:2427
 AliAnalysisTaskMuonPerformance.cxx:2428
 AliAnalysisTaskMuonPerformance.cxx:2429
 AliAnalysisTaskMuonPerformance.cxx:2430
 AliAnalysisTaskMuonPerformance.cxx:2431
 AliAnalysisTaskMuonPerformance.cxx:2432
 AliAnalysisTaskMuonPerformance.cxx:2433
 AliAnalysisTaskMuonPerformance.cxx:2434
 AliAnalysisTaskMuonPerformance.cxx:2435
 AliAnalysisTaskMuonPerformance.cxx:2436
 AliAnalysisTaskMuonPerformance.cxx:2437
 AliAnalysisTaskMuonPerformance.cxx:2438
 AliAnalysisTaskMuonPerformance.cxx:2439
 AliAnalysisTaskMuonPerformance.cxx:2440
 AliAnalysisTaskMuonPerformance.cxx:2441
 AliAnalysisTaskMuonPerformance.cxx:2442
 AliAnalysisTaskMuonPerformance.cxx:2443
 AliAnalysisTaskMuonPerformance.cxx:2444
 AliAnalysisTaskMuonPerformance.cxx:2445
 AliAnalysisTaskMuonPerformance.cxx:2446
 AliAnalysisTaskMuonPerformance.cxx:2447
 AliAnalysisTaskMuonPerformance.cxx:2448
 AliAnalysisTaskMuonPerformance.cxx:2449
 AliAnalysisTaskMuonPerformance.cxx:2450
 AliAnalysisTaskMuonPerformance.cxx:2451
 AliAnalysisTaskMuonPerformance.cxx:2452
 AliAnalysisTaskMuonPerformance.cxx:2453
 AliAnalysisTaskMuonPerformance.cxx:2454
 AliAnalysisTaskMuonPerformance.cxx:2455
 AliAnalysisTaskMuonPerformance.cxx:2456
 AliAnalysisTaskMuonPerformance.cxx:2457
 AliAnalysisTaskMuonPerformance.cxx:2458
 AliAnalysisTaskMuonPerformance.cxx:2459
 AliAnalysisTaskMuonPerformance.cxx:2460
 AliAnalysisTaskMuonPerformance.cxx:2461
 AliAnalysisTaskMuonPerformance.cxx:2462
 AliAnalysisTaskMuonPerformance.cxx:2463
 AliAnalysisTaskMuonPerformance.cxx:2464
 AliAnalysisTaskMuonPerformance.cxx:2465
 AliAnalysisTaskMuonPerformance.cxx:2466
 AliAnalysisTaskMuonPerformance.cxx:2467
 AliAnalysisTaskMuonPerformance.cxx:2468
 AliAnalysisTaskMuonPerformance.cxx:2469
 AliAnalysisTaskMuonPerformance.cxx:2470
 AliAnalysisTaskMuonPerformance.cxx:2471
 AliAnalysisTaskMuonPerformance.cxx:2472
 AliAnalysisTaskMuonPerformance.cxx:2473
 AliAnalysisTaskMuonPerformance.cxx:2474
 AliAnalysisTaskMuonPerformance.cxx:2475
 AliAnalysisTaskMuonPerformance.cxx:2476
 AliAnalysisTaskMuonPerformance.cxx:2477
 AliAnalysisTaskMuonPerformance.cxx:2478
 AliAnalysisTaskMuonPerformance.cxx:2479
 AliAnalysisTaskMuonPerformance.cxx:2480
 AliAnalysisTaskMuonPerformance.cxx:2481
 AliAnalysisTaskMuonPerformance.cxx:2482
 AliAnalysisTaskMuonPerformance.cxx:2483
 AliAnalysisTaskMuonPerformance.cxx:2484
 AliAnalysisTaskMuonPerformance.cxx:2485
 AliAnalysisTaskMuonPerformance.cxx:2486
 AliAnalysisTaskMuonPerformance.cxx:2487
 AliAnalysisTaskMuonPerformance.cxx:2488
 AliAnalysisTaskMuonPerformance.cxx:2489
 AliAnalysisTaskMuonPerformance.cxx:2490
 AliAnalysisTaskMuonPerformance.cxx:2491
 AliAnalysisTaskMuonPerformance.cxx:2492
 AliAnalysisTaskMuonPerformance.cxx:2493
 AliAnalysisTaskMuonPerformance.cxx:2494
 AliAnalysisTaskMuonPerformance.cxx:2495
 AliAnalysisTaskMuonPerformance.cxx:2496
 AliAnalysisTaskMuonPerformance.cxx:2497
 AliAnalysisTaskMuonPerformance.cxx:2498
 AliAnalysisTaskMuonPerformance.cxx:2499
 AliAnalysisTaskMuonPerformance.cxx:2500
 AliAnalysisTaskMuonPerformance.cxx:2501
 AliAnalysisTaskMuonPerformance.cxx:2502
 AliAnalysisTaskMuonPerformance.cxx:2503
 AliAnalysisTaskMuonPerformance.cxx:2504
 AliAnalysisTaskMuonPerformance.cxx:2505
 AliAnalysisTaskMuonPerformance.cxx:2506
 AliAnalysisTaskMuonPerformance.cxx:2507
 AliAnalysisTaskMuonPerformance.cxx:2508
 AliAnalysisTaskMuonPerformance.cxx:2509
 AliAnalysisTaskMuonPerformance.cxx:2510
 AliAnalysisTaskMuonPerformance.cxx:2511
 AliAnalysisTaskMuonPerformance.cxx:2512
 AliAnalysisTaskMuonPerformance.cxx:2513
 AliAnalysisTaskMuonPerformance.cxx:2514
 AliAnalysisTaskMuonPerformance.cxx:2515
 AliAnalysisTaskMuonPerformance.cxx:2516
 AliAnalysisTaskMuonPerformance.cxx:2517
 AliAnalysisTaskMuonPerformance.cxx:2518
 AliAnalysisTaskMuonPerformance.cxx:2519
 AliAnalysisTaskMuonPerformance.cxx:2520
 AliAnalysisTaskMuonPerformance.cxx:2521
 AliAnalysisTaskMuonPerformance.cxx:2522
 AliAnalysisTaskMuonPerformance.cxx:2523
 AliAnalysisTaskMuonPerformance.cxx:2524
 AliAnalysisTaskMuonPerformance.cxx:2525
 AliAnalysisTaskMuonPerformance.cxx:2526
 AliAnalysisTaskMuonPerformance.cxx:2527
 AliAnalysisTaskMuonPerformance.cxx:2528
 AliAnalysisTaskMuonPerformance.cxx:2529
 AliAnalysisTaskMuonPerformance.cxx:2530
 AliAnalysisTaskMuonPerformance.cxx:2531
 AliAnalysisTaskMuonPerformance.cxx:2532
 AliAnalysisTaskMuonPerformance.cxx:2533
 AliAnalysisTaskMuonPerformance.cxx:2534
 AliAnalysisTaskMuonPerformance.cxx:2535
 AliAnalysisTaskMuonPerformance.cxx:2536
 AliAnalysisTaskMuonPerformance.cxx:2537
 AliAnalysisTaskMuonPerformance.cxx:2538
 AliAnalysisTaskMuonPerformance.cxx:2539
 AliAnalysisTaskMuonPerformance.cxx:2540
 AliAnalysisTaskMuonPerformance.cxx:2541
 AliAnalysisTaskMuonPerformance.cxx:2542
 AliAnalysisTaskMuonPerformance.cxx:2543
 AliAnalysisTaskMuonPerformance.cxx:2544
 AliAnalysisTaskMuonPerformance.cxx:2545
 AliAnalysisTaskMuonPerformance.cxx:2546
 AliAnalysisTaskMuonPerformance.cxx:2547
 AliAnalysisTaskMuonPerformance.cxx:2548
 AliAnalysisTaskMuonPerformance.cxx:2549
 AliAnalysisTaskMuonPerformance.cxx:2550
 AliAnalysisTaskMuonPerformance.cxx:2551
 AliAnalysisTaskMuonPerformance.cxx:2552
 AliAnalysisTaskMuonPerformance.cxx:2553
 AliAnalysisTaskMuonPerformance.cxx:2554
 AliAnalysisTaskMuonPerformance.cxx:2555
 AliAnalysisTaskMuonPerformance.cxx:2556
 AliAnalysisTaskMuonPerformance.cxx:2557
 AliAnalysisTaskMuonPerformance.cxx:2558
 AliAnalysisTaskMuonPerformance.cxx:2559
 AliAnalysisTaskMuonPerformance.cxx:2560
 AliAnalysisTaskMuonPerformance.cxx:2561
 AliAnalysisTaskMuonPerformance.cxx:2562
 AliAnalysisTaskMuonPerformance.cxx:2563
 AliAnalysisTaskMuonPerformance.cxx:2564
 AliAnalysisTaskMuonPerformance.cxx:2565
 AliAnalysisTaskMuonPerformance.cxx:2566
 AliAnalysisTaskMuonPerformance.cxx:2567
 AliAnalysisTaskMuonPerformance.cxx:2568
 AliAnalysisTaskMuonPerformance.cxx:2569
 AliAnalysisTaskMuonPerformance.cxx:2570
 AliAnalysisTaskMuonPerformance.cxx:2571
 AliAnalysisTaskMuonPerformance.cxx:2572
 AliAnalysisTaskMuonPerformance.cxx:2573
 AliAnalysisTaskMuonPerformance.cxx:2574
 AliAnalysisTaskMuonPerformance.cxx:2575
 AliAnalysisTaskMuonPerformance.cxx:2576
 AliAnalysisTaskMuonPerformance.cxx:2577
 AliAnalysisTaskMuonPerformance.cxx:2578
 AliAnalysisTaskMuonPerformance.cxx:2579
 AliAnalysisTaskMuonPerformance.cxx:2580
 AliAnalysisTaskMuonPerformance.cxx:2581
 AliAnalysisTaskMuonPerformance.cxx:2582
 AliAnalysisTaskMuonPerformance.cxx:2583
 AliAnalysisTaskMuonPerformance.cxx:2584
 AliAnalysisTaskMuonPerformance.cxx:2585
 AliAnalysisTaskMuonPerformance.cxx:2586
 AliAnalysisTaskMuonPerformance.cxx:2587
 AliAnalysisTaskMuonPerformance.cxx:2588
 AliAnalysisTaskMuonPerformance.cxx:2589