ROOT logo
/**************************************************************************
 * Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id: AliAnalysisTaskFlowSingleMu.cxx 55545 2012-04-04 07:16:39Z pcrochet $ */

//-----------------------------------------------------------------------------
/// \class AliAnalysisTaskFlowSingleMu
/// Analysis task for flow of single muons in the spectrometer.
/// The output is a list of histograms and CF containers.
/// The macro class can run on AODs or ESDs.
/// If Monte Carlo information is present, some basics checks are performed.
///
/// \author Diego Stocco
//-----------------------------------------------------------------------------

#define AliAnalysisTaskFlowSingleMu_cxx

#include "AliAnalysisTaskFlowSingleMu.h"

// ROOT includes
#include "TROOT.h"
#include "TH1.h"
#include "TH2.h"
#include "TGraphErrors.h"
#include "TAxis.h"
#include "TCanvas.h"
#include "TLegend.h"
#include "TMath.h"
#include "TObjString.h"
#include "TObjArray.h"
#include "TF1.h"
#include "TStyle.h"
//#include "TMCProcess.h"
#include "TFitResultPtr.h"
#include "TFile.h"
#include "TArrayI.h"
#include "TArrayD.h"
#include "TSystem.h"
#include "TGraphErrors.h"
#include "TLatex.h"

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

// ANALYSIS includes
#include "AliAnalysisManager.h"

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

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


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

using std::ifstream;

//________________________________________________________________________
AliAnalysisTaskFlowSingleMu::AliAnalysisTaskFlowSingleMu() :
  AliVAnalysisMuon(),
  fEPKeys(0x0),
  fRandom(0x0)
{
  /// Default ctor.
}

//________________________________________________________________________
AliAnalysisTaskFlowSingleMu::AliAnalysisTaskFlowSingleMu(const char *name, const AliMuonTrackCuts& cuts) :
  AliVAnalysisMuon(name, cuts),
  fEPKeys(0x0),
  fRandom(0x0)
{
  //
  /// Constructor.
  //
  TString epMethods = "V0A V0C TPC V0Cr1 V0Cr4";
  fEPKeys = epMethods.Tokenize(" ");
}


//________________________________________________________________________
AliAnalysisTaskFlowSingleMu::~AliAnalysisTaskFlowSingleMu()
{
  //
  /// Destructor
  //
  delete fEPKeys;
  delete fRandom;
}

//___________________________________________________________________________
void AliAnalysisTaskFlowSingleMu::MyUserCreateOutputObjects()
{
  //
  /// Create outputs
  //

  if ( ! fRandom ) fRandom = new TRandom3();
  // Set seed here, to avoid having the same seed for all jobs in grid
  fRandom->SetSeed(0);

  Int_t nPtBins = 160;
  Double_t ptMin = 0., ptMax = 80.;
  TString ptName("Pt"), ptTitle("p_{t}"), ptUnits("GeV/c");
  
  Int_t nEtaBins = 25;
  Double_t etaMin = -4.5, etaMax = -2.;
  TString etaName("Eta"), etaTitle("#eta"), etaUnits("");
  
  Int_t nPhiBins = 36;
  Double_t phiMin = 0.; Double_t phiMax = 2.*TMath::Pi();
  TString phiName("Phi"), phiTitle("#phi"), phiUnits("rad");

  Int_t nDeltaPhiBins = 18;
  Double_t deltaPhiMin = 0.; Double_t deltaPhiMax = TMath::Pi();
  TString deltaPhiName("DeltaPhi"), deltaPhiTitle("#phi_{#mu} - #psi_{plane}"), deltaPhiUnits("rad");
    
  Int_t nChargeBins = 2;
  Double_t chargeMin = -2, chargeMax = 2.;
  TString chargeName("Charge"), chargeTitle("charge"), chargeUnits("e");
  
  Int_t nMotherTypeBins = kNtrackSources;
  Double_t motherTypeMin = -0.5, motherTypeMax = (Double_t)kNtrackSources - 0.5;
  TString motherType("MotherType"), motherTypeTitle("motherType"), motherTypeUnits("");

  Int_t nbins[kNvars] = {nPtBins, nEtaBins, nPhiBins, nDeltaPhiBins, nChargeBins, nMotherTypeBins};
  Double_t xmin[kNvars] = {ptMin, etaMin, phiMin, deltaPhiMin, chargeMin, motherTypeMin};
  Double_t xmax[kNvars] = {ptMax, etaMax, phiMax, deltaPhiMax, chargeMax, motherTypeMax};
  TString axisTitle[kNvars] = {ptTitle, etaTitle, phiTitle, deltaPhiTitle, chargeTitle, motherTypeTitle};
  TString axisUnits[kNvars] = {ptUnits, etaUnits, phiUnits, deltaPhiUnits, chargeUnits, motherTypeUnits};

  Int_t iobj=0;
  TH1* histo = 0x0;
  TString currTitle = "";
  for ( Int_t iep=0; iep<fEPKeys->GetEntries(); iep++ ) {
    TString currEP = fEPKeys->At(iep)->GetName();
    AliCFContainer* cfContainer = new AliCFContainer(Form("FlowSingleMuContainer%s", currEP.Data()),"Container for tracks",kNsteps,kNvars,nbins);
  
    TString currName = "";
    for ( Int_t idim = 0; idim<kNvars; idim++){
      currName = Form("%s (%s)", axisTitle[idim].Data(), axisUnits[idim].Data());
      currName.ReplaceAll("()","");

      cfContainer->SetVarTitle(idim, currName.Data());
      cfContainer->SetBinLimits(idim, xmin[idim], xmax[idim]);
    }
    
    TString stepTitle[kNsteps] = {"reconstructed", "generated"};

    TAxis* currAxis = 0x0;
    for (Int_t istep=0; istep<kNsteps; istep++){
      cfContainer->SetStepTitle(istep, stepTitle[istep].Data());
      AliCFGridSparse* gridSparse = cfContainer->GetGrid(istep);

      currAxis = gridSparse->GetAxis(kHvarMotherType);
      for ( Int_t ibin=0; ibin<fSrcKeys->GetEntries(); ibin++ ) {
        currAxis->SetBinLabel(ibin+1, fSrcKeys->At(ibin)->GetName());
      }
    }

    AddObjectToCollection(cfContainer, iobj++);

    Bool_t isTPC = currEP.Contains("TPC");
    Double_t minPsiPlane = ( isTPC ) ? 0. : -TMath::Pi()/2.;
    Double_t maxPsiPlane = ( isTPC ) ? TMath::Pi() : TMath::Pi()/2.;
    
    histo = new TH1D(Form("hEventPlane%s", currEP.Data()), Form("Event plane distribution: %s", currEP.Data()), 18, minPsiPlane, maxPsiPlane);
    histo->GetXaxis()->SetTitle(Form("#psi_{%s} (rad)", currEP.Data()));
    AddObjectToCollection(histo, iobj++);

    for ( Int_t jep=iep+1; jep<fEPKeys->GetEntries(); jep++ ) {
      TString auxEP = fEPKeys->At(jep)->GetName();
      currTitle = Form("cos(#psi_{%s} - #psi_{%s})",currEP.Data(),auxEP.Data());
      histo = new TH1D(Form("hResoSub3%s%s",currEP.Data(),auxEP.Data()), currTitle.Data(), 100, -1.,1.);
      histo->GetXaxis()->SetTitle(currTitle.Data());
      AddObjectToCollection(histo, iobj++);
    }

    currTitle = Form("cos(#psi_{1} - #psi_{2})");
    histo = new TH1D(Form("hResoSub2%s",currEP.Data()), Form("%s: %s", currEP.Data(), currTitle.Data()), 100, -1.,1.);
    histo->GetXaxis()->SetTitle(currTitle.Data());

    AddObjectToCollection(histo, iobj++);
  } // loop on EPs

  fMuonTrackCuts->Print("mask");
}

//________________________________________________________________________
void AliAnalysisTaskFlowSingleMu::ProcessEvent(TString physSel, const TObjArray& selectTrigClasses, TString centrality)
{
  //
  /// Fill output objects
  //

  //
  // Base event cuts
  //
  //Bool_t isPileupFromSPD = ( fAODEvent && ! fAODEvent->GetTracklets() ) ? InputEvent()->IsPileupFromSPD(3, 0.8, 3., 2., 5.) : InputEvent()->IsPileupFromSPDInMultBins(); // Avoid break when reading Muon AODs (tracklet info is not present and IsPileupFromSPDInMultBins crashes
  //if ( isPileupFromSPD ) return;

  TArrayD psiPlane(fEPKeys->GetEntriesFast());
  psiPlane.Reset(-999.);
  const Double_t kLowestVal = -10.;
  Int_t harmonic = 2;

  //
  // Fill EP info
  //
  AliEventplane* eventPlane = InputEvent()->GetEventplane();
  psiPlane[0] = eventPlane->GetEventplane("V0A",InputEvent(),harmonic);
  psiPlane[1] = eventPlane->GetEventplane("V0C",InputEvent(),harmonic);
  psiPlane[2] = eventPlane->GetEventplane("Q");
  if ( psiPlane[2] < 0.) psiPlane[2] = -999.;
  Double_t qx = 0., qy = 0.;
  psiPlane[3] = eventPlane->CalculateVZEROEventPlane(InputEvent(),0,harmonic,qx,qy); // V0C ring 1
  psiPlane[4] = eventPlane->CalculateVZEROEventPlane(InputEvent(),3,harmonic,qx,qy); // V0C ring 3
  //psiPlane[3] = fRandom->Uniform(-TMath::Pi()/2., TMath::Pi()/2.);

  Bool_t noValidEP = kTRUE;
  TArrayD psiPlaneCalc(fEPKeys->GetEntriesFast());
  for ( Int_t iep=0; iep<fEPKeys->GetEntriesFast(); iep++ ) {
    psiPlaneCalc[iep] = psiPlane[iep];
    if ( psiPlane[iep] < kLowestVal ) continue;
    if ( psiPlane[iep] < 0. ) psiPlaneCalc[iep] += TMath::Pi();
    noValidEP = kFALSE;
  }
  if ( noValidEP ) return;

  for ( Int_t iep=0; iep<fEPKeys->GetEntriesFast(); iep++ ) {
    if ( psiPlane[iep] < kLowestVal ) continue; 
    for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
      TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
      TString currEP = fEPKeys->At(iep)->GetName();
      ((TH1*)GetMergeableObject(physSel, trigClassName, centrality, Form("hEventPlane%s",currEP.Data())))->Fill(psiPlane[iep]);
      for ( Int_t jep=iep+1; jep<fEPKeys->GetEntriesFast(); jep++ ) {
        if ( psiPlane[jep] < kLowestVal ) continue; 
        ((TH1*)GetMergeableObject(physSel, trigClassName, centrality, Form("hResoSub3%s%s",currEP.Data(), fEPKeys->At(jep)->GetName())))->Fill(TMath::Cos(2.*(psiPlaneCalc[iep]-psiPlaneCalc[jep])));
      } // loop on auxialiary EP
      if ( iep == 2 ) {
        TVector2* qsub1 = eventPlane->GetQsub1();
        TVector2* qsub2 = eventPlane->GetQsub2();
        if ( qsub1 && qsub2 )
          ((TH1*)GetMergeableObject(physSel, trigClassName, centrality, Form("hResoSub2%s",currEP.Data())))->Fill(TMath::Cos(qsub1->Phi()/2.-qsub2->Phi()/2.));
      }
      //else ((TH1*)GetMergeableObject(physSel, trigClassName, centrality, Form("hResoSub2%s",currEP.Data())))->Fill(TMath::Cos(2.*psiPlane[iep])); // REMEMBER TO CUT
    } // loop on trigger
  } // loop on EP

  //
  // Fill track info
  //
  Double_t containerInput[kNvars];
  AliVParticle* track = 0x0;
  Int_t nSteps = MCEvent() ? 2 : 1;
  for ( Int_t istep = 0; istep<nSteps; ++istep ) {
    Int_t nTracks = ( istep == kStepReconstructed ) ? AliAnalysisMuonUtility::GetNTracks(InputEvent()) : MCEvent()->GetNumberOfTracks();
    for (Int_t itrack = 0; itrack < nTracks; itrack++) {
      track = ( istep == kStepReconstructed ) ? AliAnalysisMuonUtility::GetTrack(itrack,InputEvent()) : MCEvent()->GetTrack(itrack);
      
      Bool_t isSelected = ( istep == kStepReconstructed ) ? fMuonTrackCuts->IsSelected(track) : ( TMath::Abs(track->PdgCode()) == 13 );
      if ( ! isSelected ) continue;
      
      Int_t trackSrc = GetParticleType(track);
 

      containerInput[kHvarPt]         = track->Pt();
      containerInput[kHvarEta]        = track->Eta();
      containerInput[kHvarPhi]        = track->Phi();
      containerInput[kHvarCharge]     = track->Charge()/3.;
      containerInput[kHvarMotherType] = (Double_t)trackSrc;

      for ( Int_t iep=0; iep<fEPKeys->GetEntriesFast(); iep++ ) {
        if ( psiPlane[iep] < kLowestVal ) continue; 
        TString currEP = fEPKeys->At(iep)->GetName();
        Double_t deltaPhi = containerInput[kHvarPhi] - psiPlane[iep];

        // The difference between phi - psiPlane must be between (0, pi)
        // Since the reaction plain is symmetric in pi,
        // we can do in such a way that:
        // -pi < delta_phi + N*pi < pi
        // We choose N accrodingly
        Double_t nPi = TMath::Floor( 1. - deltaPhi / TMath::Pi() );
        deltaPhi += nPi * TMath::Pi();
        containerInput[kHvarDeltaPhi] = deltaPhi;

        for ( Int_t itrig=0; itrig<selectTrigClasses.GetEntries(); ++itrig ) {
          TString trigClassName = ((TObjString*)selectTrigClasses.At(itrig))->GetString();
          if ( istep == kStepReconstructed && ! fMuonTrackCuts->TrackPtCutMatchTrigClass(track, fMuonEventCuts->GetTrigClassPtCutLevel(trigClassName)) ) continue;
          ((AliCFContainer*)GetMergeableObject(physSel, trigClassName, centrality, Form("FlowSingleMuContainer%s",currEP.Data())))->Fill(containerInput,istep);
        } // loop on selected trigger classes
      } // loop on event plane
    } // loop on tracks
  } // loop on container steps
}


//________________________________________________________________________
TArrayD AliAnalysisTaskFlowSingleMu::GetCentralityRange(TString sRange)
{
  //
  /// Get the range from string
  //
  TArrayD centralityRange(2);
  centralityRange.Reset(-999.);
  TObjArray* array = sRange.Tokenize("_");
  if ( array->GetEntries() == 2 ) {
    for ( Int_t ientry=0; ientry<2; ientry++ ) {
      centralityRange[ientry] = ((TObjString*)array->At(ientry))->GetString().Atof();
    }
  }
  delete array;
  return centralityRange;
}

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

  AliVAnalysisMuon::Terminate("");

  if ( ! fMergeableCollection ) return;
  
  TString physSel = fTerminateOptions->At(0)->GetName();
  TString trigClassName = fTerminateOptions->At(1)->GetName();
  TString centralityRange = fTerminateOptions->At(2)->GetName();
  TString furtherOpt = fTerminateOptions->At(3)->GetName();

  TObjArray* centralityClasses = centralityRange.Tokenize(",");
  TArrayD centralityArray(centralityClasses->GetEntries()+1);
  Int_t ib = 0;
  for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
    TArrayD range = GetCentralityRange(centralityClasses->At(icent)->GetName());
    if ( icent == 0 ) centralityArray.AddAt(range[0],ib++);
    centralityArray.AddAt(range[1],ib++);
  }
  
  TString selectEP = "";
  TObjArray resoEParray;
  resoEParray.SetOwner();
  
  TString outFilename = "";
  TObjArray* optArr = furtherOpt.Tokenize(" ");
  TString currName = "";
  TString resoFilename = "";
  for ( Int_t iopt=0; iopt<optArr->GetEntries(); iopt++ ) {
    currName = optArr->At(iopt)->GetName();
    if ( currName.Contains(".root") ) outFilename = currName;
    else if ( currName.Contains(".txt") ) resoFilename = currName;
    else {
      for ( Int_t iep=0; iep<fEPKeys->GetEntries(); iep++ ) {
        if ( ! currName.CompareTo(fEPKeys->At(iep)->GetName()) ) resoEParray.Add(new TObjString(currName.Data()));
      }
    }
  }
  delete optArr;

  if ( resoEParray.At(0) ) selectEP = resoEParray.At(0)->GetName();

  furtherOpt.ToUpper();

  Bool_t v2only = furtherOpt.Contains("V2ONLY");

  TAxis* customBins = 0x0;
  
  //Double_t myBins[] = {0., 0.5, 1., 1.5, 2., 3., 4., 5., 6., 8., 10.};
  //Double_t myBins[] = {4., 5., 6., 8., 10.}; // REMEMBER TO CHOOSE
  //Double_t myBins[] = {6., 8., 10.};
  Double_t myBins[] = {2., 3., 4., 5., 6., 8., 10.};
  //Double_t myBins[] = {0., 0.5, 1., 1.5, 2., 3., 4., 10.};
  //Double_t myBins[] = {2., 3., 4., 5., 6., 8., 10., 80.};
  Int_t nMyBins = sizeof(myBins)/sizeof(myBins[0])-1;
  customBins = new TAxis(nMyBins, myBins); // REMEMBER TO CHOOSE

  TCanvas *can = 0x0, *showCan = 0x0;
  Int_t xshift = 100;
  Int_t yshift = 20;
  Int_t igroup1 = 0;
  Int_t igroup2 = 0;
  
  TList outList;

  //
  /// Read plane resolution file (if present)
  //
  TObjArray resoCentrality;
  resoCentrality.SetOwner();
  TArrayD resolution[3];
  for ( Int_t ires=0; ires<3; ires++ ) {
    resolution[ires].Set(50);
  }

  Bool_t externalReso = ( ! resoFilename.IsNull() && ! gSystem->AccessPathName(resoFilename.Data()) );
  Bool_t internalReso = kTRUE;
  if ( externalReso ) {
    // If plane resolution file exists, fill resolution
    TString currLine = "";
    std::ifstream inFile(resoFilename.Data());
    if (inFile.is_open()) {
      ib = 0;
      while (! inFile.eof() ) {
        currLine.ReadLine(inFile,kFALSE);
        if ( currLine.BeginsWith("#") || currLine.Length() < 3 ) continue;
        TObjArray* array = currLine.Tokenize(" ");
        resoCentrality.Add(new TObjString(array->At(0)->GetName()));
        for ( Int_t ires=0; ires<3; ires++ ) {
          resolution[ires].AddAt(((TObjString*)array->At(ires+1))->GetString().Atof(),ib);
        }
        delete array;
        ib++;
      } // ! EOF
    } // file is open
    for ( Int_t ires=0; ires<3; ires++ ) {
      resolution[ires].Set(ib);
    }
  } // file exists
  else {
    // If no plane resolution file exist,
    // use the centralities in terminateOption
    // and set the resolution to 1 and errors to 0.

    for ( Int_t ires=0; ires<3; ires++ ) {
      resolution[ires].Set(centralityClasses->GetEntries());
      Double_t resetVal = ( ires == 0 ) ? 1. : 0.;
      resolution[ires].Reset(resetVal);
    }
    TArrayD currCos(3);
    for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
      resoCentrality.Add(new TObjString(centralityClasses->At(icent)->GetName()));
      Int_t icos = 0;
      Double_t sumRelErrSquare = 0.;
      TString hResoTitle = "";
      for ( Int_t isub=0; isub<resoEParray.GetEntries(); isub++ ) {
        TString resoDet1 = resoEParray.At(isub)->GetName();
        for ( Int_t jsub=isub+1; jsub<resoEParray.GetEntries(); jsub++ ) {
          TString resoDet2 = resoEParray.At(jsub)->GetName();
          TH1* histo = 0x0;
          // Try both combinations: we want the first two values to contain the selectedEP!
          TString resoDet = "";
          for ( Int_t icomb=0; icomb<2; icomb++ ) {
            TString hName = "hResoSub3";
            resoDet = ( icomb == 0 ) ? resoDet1 + resoDet2 : resoDet2 + resoDet1;
            hName += resoDet;
            histo = static_cast<TH1*>(GetSum(physSel,trigClassName,resoCentrality.At(icent)->GetName(),hName));
            if ( histo ) break;
          }
          if ( ! histo || histo->Integral() == 0 ) continue;
          currCos[icos] = histo->GetMean();
          if ( currCos[icos] <= 0. ) continue;
          Double_t relErr = histo->GetMeanError() / currCos[icos];
          sumRelErrSquare += relErr * relErr;
          icos++;
          hResoTitle += Form("%s ", resoDet.Data());
        } // loop on sub events
      } // loop on sub events
      if ( icos != 3  ) {
        printf("Warning: resolution cannot be estimated for %s\n", resoCentrality.At(icent)->GetName());
        internalReso = kFALSE;
        continue;
      }
      resolution[0][icent] = TMath::Sqrt((currCos[0]*currCos[1]/currCos[2]));
      resolution[1][icent] = resolution[0][icent]/2.*TMath::Sqrt(sumRelErrSquare);
      printf("Resolution (%s) %s  %g +- %g\n", hResoTitle.Data(), centralityClasses->At(icent)->GetName(), resolution[0][icent], resolution[1][icent]);
    }
  }

  Bool_t hasResolution = ( externalReso || internalReso );


  TArrayD resoCentrArray(resoCentrality.GetEntries()+1);
  ib = 0;
  for ( Int_t icent=0; icent<resoCentrality.GetEntries(); icent++ ) {
    TArrayD range = GetCentralityRange(resoCentrality.At(icent)->GetName());
    if ( icent == 0 ) resoCentrArray.AddAt(range[0],ib++);
    resoCentrArray.AddAt(range[1], ib++);
  }
  
  const Int_t kNresoCentr = resoCentrality.GetEntries();

  //
  // Create gridSparse array
  //
  AliCFGridSparse* gridSparseArray[kNsteps*kNresoCentr];
  TString stepName[2];
  for ( Int_t icent=0; icent<kNresoCentr; icent++ ) {
    for ( Int_t istep=0; istep<kNsteps; istep++ ) {
      gridSparseArray[istep*kNresoCentr+icent] = 0x0;
    }

    AliCFContainer* cfContainer = static_cast<AliCFContainer*> ( GetSum(physSel,trigClassName,resoCentrality.At(icent)->GetName(),Form("FlowSingleMuContainer%s", selectEP.Data())) );
    if ( ! cfContainer ) continue;
    for ( Int_t istep=0; istep<kNsteps; istep++ ) {
      stepName[istep] = cfContainer->GetStepTitle(istep);
      gridSparseArray[istep*kNresoCentr+icent] = cfContainer->GetGrid(istep);
      if ( ! customBins ) customBins = gridSparseArray[istep*kNresoCentr+icent]->GetAxis(kHvarPt);
    } // loop on step
  } // loop on centrality
  
  
  Bool_t isMC = furtherOpt.Contains("MC");
  Int_t firstSrc = ( isMC ) ? 0 : kUnidentified;
  Int_t lastSrc  = ( isMC ) ? kNtrackSources - 1 : kUnidentified;
  Int_t srcColors[kNtrackSources] = {kBlack, kRed, kSpring, kTeal, kBlue, kViolet, kMagenta, kOrange};
  if ( ! isMC ) srcColors[kUnidentified] = 1;
  
  
  //
  // Get histograms
  //
  const Int_t kNcentralities = centralityClasses->GetEntries();
  const Int_t kNhistos = kNsteps*kNtrackSources*kNcentralities;
  TObjArray ptVsDeltaPhiList(kNhistos);
  TObjArray ptVsPhiList(kNhistos);
  TArrayD wgtReso[3];
  for ( Int_t ires=0; ires<3; ires++ ) {
    wgtReso[ires].Set(kNhistos);
    wgtReso[ires].Reset(0.);
  }
  for ( Int_t istep=0; istep<kNsteps; istep++ ) {
    for ( Int_t isrc = firstSrc; isrc <= lastSrc; ++isrc ) {
      TString baseName = Form("%s_%s", stepName[istep].Data(), fSrcKeys->At(isrc)->GetName());
      for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
        Int_t idx = kNcentralities * kNtrackSources * istep + kNcentralities * isrc + icent;
        TH1* hPtVsDeltaPhi = 0x0;
        TH1* hPtVsPhi = 0x0;
        TString baseNameCent = Form("%s_%s", baseName.Data(), centralityClasses->At(icent)->GetName());
        Double_t nMuons = 0.;
        TString debugString = Form("\n%s", centralityClasses->At(icent)->GetName());
        for ( Int_t rcent=0; rcent<kNresoCentr; rcent++ ) {
          if ( resoCentrArray[rcent] < centralityArray[icent] ||
              resoCentrArray[rcent+1] > centralityArray[icent+1] ) continue;
          AliCFGridSparse* gridSparse = gridSparseArray[istep*kNresoCentr+rcent];
          if ( ! gridSparse ||  gridSparse->GetEntries() == 0. ) continue;
          
          SetSparseRange(gridSparse, kHvarEta, "", -3.999, -2.501);
          SetSparseRange(gridSparse, kHvarMotherType, "", isrc+1, isrc+1, "USEBIN");
          TH1* auxHisto = gridSparse->Project(kHvarDeltaPhi,kHvarPt);
          
          Double_t currYield = auxHisto->Integral();
          if ( currYield == 0. ) continue;
          nMuons += currYield;
          debugString += Form("\nAdding %s  yield %g  reso", resoCentrality.At(rcent)->GetName(), currYield);
          for ( Int_t ires=0; ires<3; ires++ ) {
            wgtReso[ires][idx] += resolution[ires][rcent] * currYield;
            debugString += Form("  %g", resolution[ires][rcent]);
          }
          if ( ! hPtVsDeltaPhi ) hPtVsDeltaPhi = static_cast<TH1*>(auxHisto->Clone(Form("ptVsDeltaPhi_%s", baseNameCent.Data())));
          else hPtVsDeltaPhi->Add(auxHisto);
          delete auxHisto;
          
          auxHisto = gridSparse->Project(kHvarPhi,kHvarPt);
          if ( ! hPtVsPhi ) hPtVsPhi = static_cast<TH1*>(auxHisto->Clone(Form("ptVsPhi_%s", baseNameCent.Data())));
          else hPtVsPhi->Add(auxHisto);
          delete auxHisto;
          
        } // loop on resolution centralities
        
        if ( nMuons == 0. ) continue;
        debugString += Form("\nWeighted reso ");
        for ( Int_t ires=0; ires<3; ires++ ) {
          wgtReso[ires][idx] = wgtReso[ires][idx]/nMuons;
          debugString += Form("  %g", wgtReso[ires][idx]);
        }
        AliDebug(1,debugString.Data());
        
        ptVsDeltaPhiList.AddAt(hPtVsDeltaPhi,idx);
        ptVsPhiList.AddAt(hPtVsPhi,idx);
      } // loop on centralities
    } // loop on sources
  } // loop on steps
  
  
  
  /////////////////////
  // Plot resolution //
  /////////////////////
  if ( hasResolution ) {
    currName = Form("reso_%s", selectEP.Data());
    currName += externalReso ? Form("_external") : Form("_sub_%s_%s_%s", resoEParray.At(0)->GetName(), resoEParray.At(1)->GetName(), resoEParray.At(2)->GetName());
    TGraphErrors* resoGraph = new TGraphErrors(kNresoCentr);
    resoGraph->SetName(currName.Data());
    currName.Append("_can");
    can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
    can->cd();
    
    for ( Int_t icent=0; icent<kNresoCentr; icent++ ) {
      resoGraph->SetPoint(icent, 0.5*(resoCentrArray[icent+1] + resoCentrArray[icent]), resolution[0][icent]);
      resoGraph->SetPointError(icent, 0.5*(resoCentrArray[icent+1] - resoCentrArray[icent]), resolution[1][icent]);
    }
    resoGraph->SetTitle(Form("Resolution %s", selectEP.Data()));
    resoGraph->GetXaxis()->SetTitle("Centrality");
    resoGraph->GetYaxis()->SetTitle("Resolution");
    resoGraph->Draw("apz");
    outList.Add(resoGraph);
    
    for ( Int_t istep=0; istep<kNsteps; istep++ ) {
      for ( Int_t isrc = firstSrc; isrc <= lastSrc; ++isrc ) {
        currName = Form("wgtReso_%s_%s", stepName[istep].Data(), fSrcKeys->At(isrc)->GetName());
        resoGraph = new TGraphErrors();
        resoGraph->SetName(currName.Data());
        for ( Int_t icent=0; icent<kNcentralities; icent++ ) {
          Int_t idx = kNcentralities * kNtrackSources * istep + kNcentralities * isrc + icent;
          if ( wgtReso[0][idx] == 0. ) continue;
          resoGraph->SetPoint(icent, 0.5*(centralityArray[icent+1] + centralityArray[icent]), wgtReso[0][idx]);
          resoGraph->SetPointError(icent, 0.5*(centralityArray[icent+1] - centralityArray[icent]), wgtReso[1][idx]);
        } // loop on centralities
        if ( resoGraph->GetN() == 0 ) continue;
        printf("New reso %s\n", resoGraph->GetName());
        resoGraph->SetTitle(Form("Resolution %s", selectEP.Data()));
        resoGraph->GetXaxis()->SetTitle("Centrality");
        resoGraph->GetYaxis()->SetTitle("Resolution");
        resoGraph->Draw("pz");
        outList.Add(resoGraph);
      } // loop on sources
    } // loop on steps
  }
  
  
  
  TString graphTypeName[3] = {"raw","correctStat","correctSyst"};
  Int_t drawOrder[3] = {0, 2, 1};
  TString drawOpt[3] = {"apz","pz","a2"};
  Int_t nTypes = ( hasResolution ) ? 3 : 1;

  TString histoName = "", histoPattern = "";
  ///////////
  // Flow  //
  ///////////
  
  gStyle->SetOptFit(1111);
  TString funcFormula = ( v2only ) ? "[0] * (1. + 2.*[1]*TMath::Cos(2*x))" : "[0] * (1. + 2.*([1]*TMath::Cos(x) + [2]*TMath::Cos(2*x) + [3]*TMath::Cos(3*x)))";
  //
  TF1* func = new TF1("funcFlow",funcFormula.Data(), 0., TMath::Pi());
  if  ( v2only ) func->SetParNames("scale", "v2");
  else func->SetParNames("scale","v1", "v2", "v3");
  Int_t v2par = ( v2only ) ? 1 : 2;
  
  for ( Int_t istep=0; istep<kNsteps; istep++ ) {
    for ( Int_t isrc = firstSrc; isrc <= lastSrc; ++isrc ) {
      TString baseName = Form("%s_%s", stepName[istep].Data(), fSrcKeys->At(isrc)->GetName());
      TGraphErrors* flowVsCentrality[3];
      for ( Int_t itype=0; itype<nTypes; itype++ ) {
        histoName = Form("v2VsCentrality_%s_%s", baseName.Data(), graphTypeName[itype].Data());
        flowVsCentrality[itype] = new TGraphErrors();
        flowVsCentrality[itype]->SetName(histoName.Data());
        flowVsCentrality[itype]->SetTitle(histoName.Data());
      }
      for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
        Int_t idx = kNcentralities * kNtrackSources * istep + kNcentralities * isrc + icent;
        TH2* histo2D = static_cast<TH2*> (ptVsDeltaPhiList.At(idx));
        if ( ! histo2D ) continue;
        TString baseNameCent = Form("%s_%s", baseName.Data(), centralityClasses->At(icent)->GetName());

        TAxis* ptAxis = histo2D->GetYaxis();
        
        Int_t ipad = 0;
        TGraphErrors* flowVsPt[3];
        for ( Int_t itype=0; itype<nTypes; itype++ ) {
          histoName = Form("v2VsPt_%s_%s", baseNameCent.Data(), graphTypeName[itype].Data());
          flowVsPt[itype] = new TGraphErrors();
          flowVsPt[itype]->SetName(histoName.Data());
          flowVsPt[itype]->SetTitle(histoName.Data());
        }
        
        for ( Int_t ipt=0; ipt<=customBins->GetNbins(); ipt++ ) {
          Int_t minCustomBin = ( ipt == 0 ) ? 1 : ipt;
          Int_t maxCustomBin = ( ipt == 0 ) ? customBins->GetNbins() : ipt;
          Int_t ptMinBin = ptAxis->FindBin(customBins->GetBinLowEdge(minCustomBin)+1.e-4);
          Int_t ptMaxBin = ptAxis->FindBin(customBins->GetBinUpEdge(maxCustomBin)-1.e-4);
          Double_t ptMin = ptAxis->GetBinLowEdge(ptMinBin);
          Double_t ptMax = ptAxis->GetBinUpEdge(ptMaxBin);
          TH1* projHisto = histo2D->ProjectionX(Form("%s_%s_ptBin%i", baseName.Data(), histo2D->GetName(), ipt), ptMinBin, ptMaxBin);
          projHisto->SetTitle(Form("%g < p_{t} (GeV/c) < %g", ptMin, ptMax));
          if ( projHisto->Integral() < 50 ) break;
          if ( ipad%4 == 0 ) {
            currName = projHisto->GetName();
            currName.Append("_can");
            showCan = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
            showCan->Divide(2,2);
            ipad = 0;
          }
          showCan->cd(++ipad);
          if ( v2only ) func->SetParameters(projHisto->Integral(), 0.01);
          else {
            func->SetParameters(projHisto->Integral(), 0., 0.01, 0.);
            func->FixParameter(1,0.);
          }
          projHisto->Fit(func,"R");
          for ( Int_t itype=0; itype<nTypes; itype++ ) {
            TGraphErrors* currGraph = ( ipt == 0 ) ? flowVsCentrality[itype] : flowVsPt[itype];
            Double_t resoVal = ( itype == 0 ) ? 1. : wgtReso[0][idx];
            Double_t resoErr = ( itype == 0 ) ? 0. : wgtReso[itype][idx];
            Double_t rawVal = func->GetParameter(v2par);
            Double_t rawErr = (itype == 2 ) ? 0. : func->GetParError(v2par);
            Double_t yVal = rawVal/resoVal;
            Double_t xVal = ( ipt == 0 ) ? 0.5*(centralityArray[icent+1] + centralityArray[icent]) : 0.5*(ptMax + ptMin);
            Double_t xErr = ( ipt == 0 ) ? 0.5*(centralityArray[icent+1] - centralityArray[icent]) : 0.5*(ptMax - ptMin);
            Int_t ipoint = currGraph->GetN();
            currGraph->SetPoint(ipoint,xVal,yVal);
            if ( itype > 0 && ipt != 0 ) {
              // For the plot vs. pt the resolution error is fully correlated.
              // Hence we do not use add it bin by bin, but rather write it
              // on the title
              resoErr = 0.;
              TString graphTitle = currGraph->GetTitle();
              if ( ! graphTitle.Contains("|") ) {
                graphTitle += Form(" | Rel. error on EP resolution: %.2g (stat.) %.2g (syst.)", wgtReso[1][idx]/wgtReso[0][idx], wgtReso[2][idx]/wgtReso[0][idx]);
                currGraph->SetTitle(graphTitle.Data());
              }
            }
            Double_t rawErrRel = ( rawVal != 0. ) ? rawErr/rawVal : 0.;
            Double_t resoErrRel = ( resoVal != 0. ) ? resoErr/resoVal : 0.;
            Double_t yErr = TMath::Abs(yVal) * TMath::Sqrt(rawErrRel*rawErrRel+resoErrRel*resoErrRel);
            currGraph->SetPointError(ipoint,xErr,yErr);
          } // loop on type
        } // loop on pt bins
        for ( Int_t itype=0; itype<nTypes; itype++ ) {
          Int_t currType = drawOrder[itype];
          if ( itype < 2 ) {
            currName = flowVsPt[currType]->GetName();
            currName.Append("Can");
            can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
            igroup2++;
            can->cd();
          }
          flowVsPt[currType]->GetXaxis()->SetTitle(ptAxis->GetTitle());
          flowVsPt[currType]->GetYaxis()->SetTitle("v2");
          flowVsPt[currType]->GetYaxis()->SetRangeUser(0., 0.25);
          flowVsPt[currType]->SetFillStyle(0);
          flowVsPt[currType]->Draw(drawOpt[currType].Data());
          outList.Add(flowVsPt[currType]);
        } // loop on types
      } // loop on centrality
      for ( Int_t itype=0; itype<nTypes; itype++ ) {
        Int_t currType = drawOrder[itype];
        if ( flowVsCentrality[currType]->GetN() == 0 ) continue;
        if ( itype < 2 ) {
          currName = flowVsCentrality[currType]->GetName();
          currName.Append("Can");
          can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
          can->cd();
        }
        flowVsCentrality[currType]->GetXaxis()->SetTitle("Centrality");
        flowVsCentrality[currType]->GetYaxis()->SetTitle("v2");
        flowVsCentrality[currType]->SetFillStyle(0);
        flowVsCentrality[currType]->GetYaxis()->SetRangeUser(0., 0.25);
        flowVsCentrality[currType]->Draw(drawOpt[currType].Data());
        outList.Add(flowVsCentrality[currType]);
        igroup2++;
      } // loop on type
      igroup1++;
      igroup2 = 0;
    } // loop on track sources
  } // loop on steps

  ///////////////////////
  // Event plane check //
  ///////////////////////
  igroup1++;
  igroup2 = 0;
  Int_t icolor=0;
  currName ="eventPlaneDistrib";
  can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
  can->SetGridy();
  igroup2++;

  const Int_t kNfits = 2;
  TString fitTypeName[kNfits] = {"Cos","Sin"};

  Bool_t addOffsetToCentrality = kFALSE;
  Double_t offsetStep = 0.1;

  TLegend* leg = new TLegend(0.7,0.7,0.92,0.92);
  leg->SetBorderSize(1);
  
  TGraphErrors* epCheck[kNfits];
  for ( Int_t itype=0; itype<kNfits; itype++ ) {
    histoName = Form("checkFourier_%s",fitTypeName[itype].Data());
    epCheck[itype] = new TGraphErrors();
    epCheck[itype]->SetName(histoName.Data());
//    epCheck[itype]->SetTitle(histoName.Data());
  }
  for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
    TH1* histo = static_cast<TH1*> ( GetSum(physSel,trigClassName,centralityClasses->At(icent)->GetName(),Form("hEventPlane%s", selectEP.Data())) );
    if ( ! histo ) continue;
    histo->SetName(Form("%s_%s", histo->GetName(), centralityClasses->At(icent)->GetName()));
    if ( histo->Integral() < 50. ) continue;
    if ( histo->GetSumw2N() == 0 ) histo->Sumw2();
    
    for ( Int_t itype=0; itype<kNfits; itype++ ) {
      TString checkFormula = Form("[0]*(1.+2.*[1]*TMath::%s(2.*x))",fitTypeName[itype].Data());
      TF1* checkFunc = new TF1(Form("checkFunc_%s", fitTypeName[itype].Data()), checkFormula.Data(), histo->GetXaxis()->GetBinLowEdge(1), histo->GetXaxis()->GetBinUpEdge(histo->GetXaxis()->GetNbins()));
      checkFunc->SetParameters(histo->Integral(), 0.);
      histo->Fit(checkFunc,"R0");
      TGraphErrors* currGraph = epCheck[itype];
      Double_t yVal = checkFunc->GetParameter(1);
      Double_t yErr = checkFunc->GetParError(1);
      Double_t xVal = 0.5*(centralityArray[icent+1] + centralityArray[icent]);
      Double_t xErr = 0.5*(centralityArray[icent+1] - centralityArray[icent]);
      Int_t ipoint = currGraph->GetN();
      currGraph->SetPoint(ipoint,xVal,yVal);
      currGraph->SetPointError(ipoint,xErr,yErr);
    } // loop on type
    histo->Fit("pol0","R0");
    TF1* pol0 = histo->GetFunction("pol0");
    histo->Scale(1./pol0->GetParameter(0));
    Double_t offset = ( addOffsetToCentrality ) ? offsetStep*(Double_t)icolor : 0.;
    TGraphErrors* graph = new TGraphErrors();
    graph->SetTitle(Form("%s %s", histo->GetTitle(), trigClassName.Data()));
    for ( Int_t ipoint=0; ipoint<histo->GetXaxis()->GetNbins(); ipoint++ ) {
      Int_t ibin = ipoint+1;
      graph->SetPoint(ipoint, histo->GetXaxis()->GetBinCenter(ibin), histo->GetBinContent(ibin) + offset);
      graph->SetPointError(ipoint, histo->GetXaxis()->GetBinWidth(ibin)/2., histo->GetBinError(ibin));
    }
    graph->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
    graph->GetYaxis()->SetTitle("Data/Fit (pol0)");
    TString legTitle = Form("%s %%", centralityClasses->At(icent)->GetName());
    if ( addOffsetToCentrality ) {
      graph->GetYaxis()->SetRangeUser(1.-offsetStep, 1.+1.5*offsetStep*(Double_t)centralityClasses->GetEntries());
      graph->GetYaxis()->SetNdivisions(2*centralityClasses->GetEntries(),0,0);
      legTitle += Form(" ( + %g)", offset);
    }
    Int_t currColor = ( icolor < kNtrackSources ) ? srcColors[icolor] : 20+icolor;
    graph->SetLineColor(currColor);
    graph->SetMarkerColor(currColor);
    graph->SetMarkerStyle(20+icolor);
    TString currDrawOpt = "pz";
    if ( icolor == 0 ) currDrawOpt += "a";
    graph->Draw(currDrawOpt.Data());
    legTitle.ReplaceAll("_"," - ");
    leg->AddEntry(graph,legTitle.Data(),"lp");
    if ( addOffsetToCentrality ) {
      TLatex* latex = new TLatex(histo->GetXaxis()->GetXmax()+0.5*histo->GetXaxis()->GetBinWidth(1), 1.+(Double_t)offset, Form("#chi^{2}/NDF = %.3g", pol0->GetChisquare()/(Double_t)pol0->GetNDF()));
      latex->SetTextColor(currColor);
      latex->SetTextSize(0.025);
      latex->Draw("same");
    }
    icolor++;
  }
  leg->Draw("same");
  
  currName = "epCheckCan";
  can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
  can->SetGridy();
  igroup2++;
  leg = new TLegend(0.7,0.7,0.95,0.95);
  leg->SetBorderSize(1);
  for ( Int_t itype=0; itype<kNfits; itype++ ) {
    epCheck[itype]->SetLineColor(srcColors[itype]);
    epCheck[itype]->SetMarkerColor(srcColors[itype]);
    epCheck[itype]->SetMarkerStyle(20+itype);
    epCheck[itype]->GetXaxis()->SetTitle("Centrality (%)");
    TString currDrawOpt = "pz";
    if ( can->GetListOfPrimitives()->GetEntries() == 0 ) currDrawOpt.Prepend("a");
    epCheck[itype]->Draw(currDrawOpt.Data());
    leg->AddEntry(epCheck[itype],Form("<%s(2 #psi_{%s})>", fitTypeName[itype].Data(), selectEP.Data()),"lp");
  }
  leg->Draw("same");
  
  for ( Int_t istep=0; istep<kNsteps; istep++ ) {
    for ( Int_t isrc = firstSrc; isrc <= lastSrc; ++isrc ) {
      TString baseName = Form("%s_%s", stepName[istep].Data(), fSrcKeys->At(isrc)->GetName());
      for ( Int_t icent=0; icent<centralityClasses->GetEntries(); icent++ ) {
        Int_t idx = kNcentralities * kNtrackSources * istep + kNcentralities * isrc + icent;
        TH2* histo2D = static_cast<TH2*> (ptVsPhiList.At(idx));
        if ( ! histo2D ) continue;
        TString baseNameCent = Form("%s_%s", baseName.Data(), centralityClasses->At(icent)->GetName());
        
        TAxis* ptAxis = histo2D->GetYaxis();
        
        Int_t ipad = 0;
        TGraphErrors* detEffect[kNfits];
        for ( Int_t itype=0; itype<kNfits; itype++ ) {
          histoName = Form("checkResoVsPt_%s_%s", baseNameCent.Data(), fitTypeName[itype].Data());
          detEffect[itype] = new TGraphErrors();
          detEffect[itype]->SetName(histoName.Data());
          detEffect[itype]->SetTitle(histoName.Data());
        }
        
        for ( Int_t ipt=0; ipt<=customBins->GetNbins(); ipt++ ) {
          Int_t minCustomBin = ( ipt == 0 ) ? 1 : ipt;
          Int_t maxCustomBin = ( ipt == 0 ) ? customBins->GetNbins() : ipt;
          Int_t ptMinBin = ptAxis->FindBin(customBins->GetBinLowEdge(minCustomBin)+1.e-4);
          Int_t ptMaxBin = ptAxis->FindBin(customBins->GetBinUpEdge(maxCustomBin)-1.e-4);
          Double_t ptMin = ptAxis->GetBinLowEdge(ptMinBin);
          Double_t ptMax = ptAxis->GetBinUpEdge(ptMaxBin);
          TH1* projHisto = histo2D->ProjectionX(Form("checkReso_%s_%s_ptBin%i", baseName.Data(), histo2D->GetName(), ipt), ptMinBin, ptMaxBin);
          projHisto->SetTitle(Form("%g < p_{t} (GeV/c) < %g", ptMin, ptMax));
          if ( projHisto->Integral() < 50 ) break;
          if ( ipad%4 == 0 ) {
            currName = projHisto->GetName();
            currName.Append("_can");
            showCan = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
            showCan->Divide(2,2);
            ipad = 0;
          }
          showCan->cd(++ipad);
          for ( Int_t itype=0; itype<kNfits; itype++ ) {
            TString checkFormula = Form("[0]*(1.+2.*[1]*TMath::%s(2.*x))",fitTypeName[itype].Data());
            TF1* checkFunc = new TF1(Form("checkFunc_%s", fitTypeName[itype].Data()), checkFormula.Data(), projHisto->GetXaxis()->GetBinLowEdge(1), projHisto->GetXaxis()->GetBinUpEdge(projHisto->GetXaxis()->GetNbins()));
            checkFunc->SetParameters(projHisto->Integral(), 0.);
            projHisto->Fit(checkFunc,"R");
            TGraphErrors* currGraph = detEffect[itype];
            Double_t yVal = checkFunc->GetParameter(1);
            Double_t yErr = checkFunc->GetParError(1);
            Double_t xVal = 0.5*(ptMax + ptMin);
            Double_t xErr = 0.5*(ptMax - ptMin);
            Int_t ipoint = currGraph->GetN();
            currGraph->SetPoint(ipoint,xVal,yVal);
            currGraph->SetPointError(ipoint,xErr,yErr);
          } // loop on type
        } // loop on pt bins
        for ( Int_t itype=0; itype<kNfits; itype++ ) {
          currName = detEffect[itype]->GetName();
          currName.Append("Can");
          can = new TCanvas(currName.Data(),currName.Data(),igroup1*xshift,igroup2*yshift,600,600);
          igroup2++;
          can->cd();
          detEffect[itype]->GetXaxis()->SetTitle(ptAxis->GetTitle());
          detEffect[itype]->GetYaxis()->SetTitle("v2");
//          detEffect[itype]->GetYaxis()->SetRangeUser(0., 0.25);
          detEffect[itype]->SetFillStyle(0);
          detEffect[itype]->Draw("ap");
//          outList.Add(detEffect[itype]);
        } // loop on types
      } // loop on centrality
    } // loop on track sources
  } // loop on steps

  delete centralityClasses;

  //////////////////////
  // Event statistics //
  //////////////////////
  printf("\nTotal analyzed events:\n");
  TString evtSel = Form("trigger:%s", trigClassName.Data());
  fEventCounters->PrintSum(evtSel.Data());
  printf("Physics selected analyzed events:\n");
  evtSel = Form("trigger:%s/selected:yes", trigClassName.Data());
  fEventCounters->PrintSum(evtSel.Data());
  
  TString countPhysSel = "any";
  if ( physSel.Contains(fPhysSelKeys->At(kPhysSelPass)->GetName()) ) countPhysSel = "yes";
  else if ( physSel.Contains(fPhysSelKeys->At(kPhysSelReject)->GetName()) ) countPhysSel="no";
  countPhysSel.Prepend("selected:");
  printf("Analyzed events vs. centrality:\n");
  evtSel = Form("trigger:%s/%s", trigClassName.Data(), countPhysSel.Data());
  fEventCounters->Print("centrality",evtSel.Data(),kTRUE);

  if ( ! outFilename.IsNull() ) {
    printf("\nWriting output file %s\n", outFilename.Data());
    TFile* file = TFile::Open(outFilename.Data(), "RECREATE");
    outList.Write();
    file->Close();
  }
  
  delete customBins;
}
 AliAnalysisTaskFlowSingleMu.cxx:1
 AliAnalysisTaskFlowSingleMu.cxx:2
 AliAnalysisTaskFlowSingleMu.cxx:3
 AliAnalysisTaskFlowSingleMu.cxx:4
 AliAnalysisTaskFlowSingleMu.cxx:5
 AliAnalysisTaskFlowSingleMu.cxx:6
 AliAnalysisTaskFlowSingleMu.cxx:7
 AliAnalysisTaskFlowSingleMu.cxx:8
 AliAnalysisTaskFlowSingleMu.cxx:9
 AliAnalysisTaskFlowSingleMu.cxx:10
 AliAnalysisTaskFlowSingleMu.cxx:11
 AliAnalysisTaskFlowSingleMu.cxx:12
 AliAnalysisTaskFlowSingleMu.cxx:13
 AliAnalysisTaskFlowSingleMu.cxx:14
 AliAnalysisTaskFlowSingleMu.cxx:15
 AliAnalysisTaskFlowSingleMu.cxx:16
 AliAnalysisTaskFlowSingleMu.cxx:17
 AliAnalysisTaskFlowSingleMu.cxx:18
 AliAnalysisTaskFlowSingleMu.cxx:19
 AliAnalysisTaskFlowSingleMu.cxx:20
 AliAnalysisTaskFlowSingleMu.cxx:21
 AliAnalysisTaskFlowSingleMu.cxx:22
 AliAnalysisTaskFlowSingleMu.cxx:23
 AliAnalysisTaskFlowSingleMu.cxx:24
 AliAnalysisTaskFlowSingleMu.cxx:25
 AliAnalysisTaskFlowSingleMu.cxx:26
 AliAnalysisTaskFlowSingleMu.cxx:27
 AliAnalysisTaskFlowSingleMu.cxx:28
 AliAnalysisTaskFlowSingleMu.cxx:29
 AliAnalysisTaskFlowSingleMu.cxx:30
 AliAnalysisTaskFlowSingleMu.cxx:31
 AliAnalysisTaskFlowSingleMu.cxx:32
 AliAnalysisTaskFlowSingleMu.cxx:33
 AliAnalysisTaskFlowSingleMu.cxx:34
 AliAnalysisTaskFlowSingleMu.cxx:35
 AliAnalysisTaskFlowSingleMu.cxx:36
 AliAnalysisTaskFlowSingleMu.cxx:37
 AliAnalysisTaskFlowSingleMu.cxx:38
 AliAnalysisTaskFlowSingleMu.cxx:39
 AliAnalysisTaskFlowSingleMu.cxx:40
 AliAnalysisTaskFlowSingleMu.cxx:41
 AliAnalysisTaskFlowSingleMu.cxx:42
 AliAnalysisTaskFlowSingleMu.cxx:43
 AliAnalysisTaskFlowSingleMu.cxx:44
 AliAnalysisTaskFlowSingleMu.cxx:45
 AliAnalysisTaskFlowSingleMu.cxx:46
 AliAnalysisTaskFlowSingleMu.cxx:47
 AliAnalysisTaskFlowSingleMu.cxx:48
 AliAnalysisTaskFlowSingleMu.cxx:49
 AliAnalysisTaskFlowSingleMu.cxx:50
 AliAnalysisTaskFlowSingleMu.cxx:51
 AliAnalysisTaskFlowSingleMu.cxx:52
 AliAnalysisTaskFlowSingleMu.cxx:53
 AliAnalysisTaskFlowSingleMu.cxx:54
 AliAnalysisTaskFlowSingleMu.cxx:55
 AliAnalysisTaskFlowSingleMu.cxx:56
 AliAnalysisTaskFlowSingleMu.cxx:57
 AliAnalysisTaskFlowSingleMu.cxx:58
 AliAnalysisTaskFlowSingleMu.cxx:59
 AliAnalysisTaskFlowSingleMu.cxx:60
 AliAnalysisTaskFlowSingleMu.cxx:61
 AliAnalysisTaskFlowSingleMu.cxx:62
 AliAnalysisTaskFlowSingleMu.cxx:63
 AliAnalysisTaskFlowSingleMu.cxx:64
 AliAnalysisTaskFlowSingleMu.cxx:65
 AliAnalysisTaskFlowSingleMu.cxx:66
 AliAnalysisTaskFlowSingleMu.cxx:67
 AliAnalysisTaskFlowSingleMu.cxx:68
 AliAnalysisTaskFlowSingleMu.cxx:69
 AliAnalysisTaskFlowSingleMu.cxx:70
 AliAnalysisTaskFlowSingleMu.cxx:71
 AliAnalysisTaskFlowSingleMu.cxx:72
 AliAnalysisTaskFlowSingleMu.cxx:73
 AliAnalysisTaskFlowSingleMu.cxx:74
 AliAnalysisTaskFlowSingleMu.cxx:75
 AliAnalysisTaskFlowSingleMu.cxx:76
 AliAnalysisTaskFlowSingleMu.cxx:77
 AliAnalysisTaskFlowSingleMu.cxx:78
 AliAnalysisTaskFlowSingleMu.cxx:79
 AliAnalysisTaskFlowSingleMu.cxx:80
 AliAnalysisTaskFlowSingleMu.cxx:81
 AliAnalysisTaskFlowSingleMu.cxx:82
 AliAnalysisTaskFlowSingleMu.cxx:83
 AliAnalysisTaskFlowSingleMu.cxx:84
 AliAnalysisTaskFlowSingleMu.cxx:85
 AliAnalysisTaskFlowSingleMu.cxx:86
 AliAnalysisTaskFlowSingleMu.cxx:87
 AliAnalysisTaskFlowSingleMu.cxx:88
 AliAnalysisTaskFlowSingleMu.cxx:89
 AliAnalysisTaskFlowSingleMu.cxx:90
 AliAnalysisTaskFlowSingleMu.cxx:91
 AliAnalysisTaskFlowSingleMu.cxx:92
 AliAnalysisTaskFlowSingleMu.cxx:93
 AliAnalysisTaskFlowSingleMu.cxx:94
 AliAnalysisTaskFlowSingleMu.cxx:95
 AliAnalysisTaskFlowSingleMu.cxx:96
 AliAnalysisTaskFlowSingleMu.cxx:97
 AliAnalysisTaskFlowSingleMu.cxx:98
 AliAnalysisTaskFlowSingleMu.cxx:99
 AliAnalysisTaskFlowSingleMu.cxx:100
 AliAnalysisTaskFlowSingleMu.cxx:101
 AliAnalysisTaskFlowSingleMu.cxx:102
 AliAnalysisTaskFlowSingleMu.cxx:103
 AliAnalysisTaskFlowSingleMu.cxx:104
 AliAnalysisTaskFlowSingleMu.cxx:105
 AliAnalysisTaskFlowSingleMu.cxx:106
 AliAnalysisTaskFlowSingleMu.cxx:107
 AliAnalysisTaskFlowSingleMu.cxx:108
 AliAnalysisTaskFlowSingleMu.cxx:109
 AliAnalysisTaskFlowSingleMu.cxx:110
 AliAnalysisTaskFlowSingleMu.cxx:111
 AliAnalysisTaskFlowSingleMu.cxx:112
 AliAnalysisTaskFlowSingleMu.cxx:113
 AliAnalysisTaskFlowSingleMu.cxx:114
 AliAnalysisTaskFlowSingleMu.cxx:115
 AliAnalysisTaskFlowSingleMu.cxx:116
 AliAnalysisTaskFlowSingleMu.cxx:117
 AliAnalysisTaskFlowSingleMu.cxx:118
 AliAnalysisTaskFlowSingleMu.cxx:119
 AliAnalysisTaskFlowSingleMu.cxx:120
 AliAnalysisTaskFlowSingleMu.cxx:121
 AliAnalysisTaskFlowSingleMu.cxx:122
 AliAnalysisTaskFlowSingleMu.cxx:123
 AliAnalysisTaskFlowSingleMu.cxx:124
 AliAnalysisTaskFlowSingleMu.cxx:125
 AliAnalysisTaskFlowSingleMu.cxx:126
 AliAnalysisTaskFlowSingleMu.cxx:127
 AliAnalysisTaskFlowSingleMu.cxx:128
 AliAnalysisTaskFlowSingleMu.cxx:129
 AliAnalysisTaskFlowSingleMu.cxx:130
 AliAnalysisTaskFlowSingleMu.cxx:131
 AliAnalysisTaskFlowSingleMu.cxx:132
 AliAnalysisTaskFlowSingleMu.cxx:133
 AliAnalysisTaskFlowSingleMu.cxx:134
 AliAnalysisTaskFlowSingleMu.cxx:135
 AliAnalysisTaskFlowSingleMu.cxx:136
 AliAnalysisTaskFlowSingleMu.cxx:137
 AliAnalysisTaskFlowSingleMu.cxx:138
 AliAnalysisTaskFlowSingleMu.cxx:139
 AliAnalysisTaskFlowSingleMu.cxx:140
 AliAnalysisTaskFlowSingleMu.cxx:141
 AliAnalysisTaskFlowSingleMu.cxx:142
 AliAnalysisTaskFlowSingleMu.cxx:143
 AliAnalysisTaskFlowSingleMu.cxx:144
 AliAnalysisTaskFlowSingleMu.cxx:145
 AliAnalysisTaskFlowSingleMu.cxx:146
 AliAnalysisTaskFlowSingleMu.cxx:147
 AliAnalysisTaskFlowSingleMu.cxx:148
 AliAnalysisTaskFlowSingleMu.cxx:149
 AliAnalysisTaskFlowSingleMu.cxx:150
 AliAnalysisTaskFlowSingleMu.cxx:151
 AliAnalysisTaskFlowSingleMu.cxx:152
 AliAnalysisTaskFlowSingleMu.cxx:153
 AliAnalysisTaskFlowSingleMu.cxx:154
 AliAnalysisTaskFlowSingleMu.cxx:155
 AliAnalysisTaskFlowSingleMu.cxx:156
 AliAnalysisTaskFlowSingleMu.cxx:157
 AliAnalysisTaskFlowSingleMu.cxx:158
 AliAnalysisTaskFlowSingleMu.cxx:159
 AliAnalysisTaskFlowSingleMu.cxx:160
 AliAnalysisTaskFlowSingleMu.cxx:161
 AliAnalysisTaskFlowSingleMu.cxx:162
 AliAnalysisTaskFlowSingleMu.cxx:163
 AliAnalysisTaskFlowSingleMu.cxx:164
 AliAnalysisTaskFlowSingleMu.cxx:165
 AliAnalysisTaskFlowSingleMu.cxx:166
 AliAnalysisTaskFlowSingleMu.cxx:167
 AliAnalysisTaskFlowSingleMu.cxx:168
 AliAnalysisTaskFlowSingleMu.cxx:169
 AliAnalysisTaskFlowSingleMu.cxx:170
 AliAnalysisTaskFlowSingleMu.cxx:171
 AliAnalysisTaskFlowSingleMu.cxx:172
 AliAnalysisTaskFlowSingleMu.cxx:173
 AliAnalysisTaskFlowSingleMu.cxx:174
 AliAnalysisTaskFlowSingleMu.cxx:175
 AliAnalysisTaskFlowSingleMu.cxx:176
 AliAnalysisTaskFlowSingleMu.cxx:177
 AliAnalysisTaskFlowSingleMu.cxx:178
 AliAnalysisTaskFlowSingleMu.cxx:179
 AliAnalysisTaskFlowSingleMu.cxx:180
 AliAnalysisTaskFlowSingleMu.cxx:181
 AliAnalysisTaskFlowSingleMu.cxx:182
 AliAnalysisTaskFlowSingleMu.cxx:183
 AliAnalysisTaskFlowSingleMu.cxx:184
 AliAnalysisTaskFlowSingleMu.cxx:185
 AliAnalysisTaskFlowSingleMu.cxx:186
 AliAnalysisTaskFlowSingleMu.cxx:187
 AliAnalysisTaskFlowSingleMu.cxx:188
 AliAnalysisTaskFlowSingleMu.cxx:189
 AliAnalysisTaskFlowSingleMu.cxx:190
 AliAnalysisTaskFlowSingleMu.cxx:191
 AliAnalysisTaskFlowSingleMu.cxx:192
 AliAnalysisTaskFlowSingleMu.cxx:193
 AliAnalysisTaskFlowSingleMu.cxx:194
 AliAnalysisTaskFlowSingleMu.cxx:195
 AliAnalysisTaskFlowSingleMu.cxx:196
 AliAnalysisTaskFlowSingleMu.cxx:197
 AliAnalysisTaskFlowSingleMu.cxx:198
 AliAnalysisTaskFlowSingleMu.cxx:199
 AliAnalysisTaskFlowSingleMu.cxx:200
 AliAnalysisTaskFlowSingleMu.cxx:201
 AliAnalysisTaskFlowSingleMu.cxx:202
 AliAnalysisTaskFlowSingleMu.cxx:203
 AliAnalysisTaskFlowSingleMu.cxx:204
 AliAnalysisTaskFlowSingleMu.cxx:205
 AliAnalysisTaskFlowSingleMu.cxx:206
 AliAnalysisTaskFlowSingleMu.cxx:207
 AliAnalysisTaskFlowSingleMu.cxx:208
 AliAnalysisTaskFlowSingleMu.cxx:209
 AliAnalysisTaskFlowSingleMu.cxx:210
 AliAnalysisTaskFlowSingleMu.cxx:211
 AliAnalysisTaskFlowSingleMu.cxx:212
 AliAnalysisTaskFlowSingleMu.cxx:213
 AliAnalysisTaskFlowSingleMu.cxx:214
 AliAnalysisTaskFlowSingleMu.cxx:215
 AliAnalysisTaskFlowSingleMu.cxx:216
 AliAnalysisTaskFlowSingleMu.cxx:217
 AliAnalysisTaskFlowSingleMu.cxx:218
 AliAnalysisTaskFlowSingleMu.cxx:219
 AliAnalysisTaskFlowSingleMu.cxx:220
 AliAnalysisTaskFlowSingleMu.cxx:221
 AliAnalysisTaskFlowSingleMu.cxx:222
 AliAnalysisTaskFlowSingleMu.cxx:223
 AliAnalysisTaskFlowSingleMu.cxx:224
 AliAnalysisTaskFlowSingleMu.cxx:225
 AliAnalysisTaskFlowSingleMu.cxx:226
 AliAnalysisTaskFlowSingleMu.cxx:227
 AliAnalysisTaskFlowSingleMu.cxx:228
 AliAnalysisTaskFlowSingleMu.cxx:229
 AliAnalysisTaskFlowSingleMu.cxx:230
 AliAnalysisTaskFlowSingleMu.cxx:231
 AliAnalysisTaskFlowSingleMu.cxx:232
 AliAnalysisTaskFlowSingleMu.cxx:233
 AliAnalysisTaskFlowSingleMu.cxx:234
 AliAnalysisTaskFlowSingleMu.cxx:235
 AliAnalysisTaskFlowSingleMu.cxx:236
 AliAnalysisTaskFlowSingleMu.cxx:237
 AliAnalysisTaskFlowSingleMu.cxx:238
 AliAnalysisTaskFlowSingleMu.cxx:239
 AliAnalysisTaskFlowSingleMu.cxx:240
 AliAnalysisTaskFlowSingleMu.cxx:241
 AliAnalysisTaskFlowSingleMu.cxx:242
 AliAnalysisTaskFlowSingleMu.cxx:243
 AliAnalysisTaskFlowSingleMu.cxx:244
 AliAnalysisTaskFlowSingleMu.cxx:245
 AliAnalysisTaskFlowSingleMu.cxx:246
 AliAnalysisTaskFlowSingleMu.cxx:247
 AliAnalysisTaskFlowSingleMu.cxx:248
 AliAnalysisTaskFlowSingleMu.cxx:249
 AliAnalysisTaskFlowSingleMu.cxx:250
 AliAnalysisTaskFlowSingleMu.cxx:251
 AliAnalysisTaskFlowSingleMu.cxx:252
 AliAnalysisTaskFlowSingleMu.cxx:253
 AliAnalysisTaskFlowSingleMu.cxx:254
 AliAnalysisTaskFlowSingleMu.cxx:255
 AliAnalysisTaskFlowSingleMu.cxx:256
 AliAnalysisTaskFlowSingleMu.cxx:257
 AliAnalysisTaskFlowSingleMu.cxx:258
 AliAnalysisTaskFlowSingleMu.cxx:259
 AliAnalysisTaskFlowSingleMu.cxx:260
 AliAnalysisTaskFlowSingleMu.cxx:261
 AliAnalysisTaskFlowSingleMu.cxx:262
 AliAnalysisTaskFlowSingleMu.cxx:263
 AliAnalysisTaskFlowSingleMu.cxx:264
 AliAnalysisTaskFlowSingleMu.cxx:265
 AliAnalysisTaskFlowSingleMu.cxx:266
 AliAnalysisTaskFlowSingleMu.cxx:267
 AliAnalysisTaskFlowSingleMu.cxx:268
 AliAnalysisTaskFlowSingleMu.cxx:269
 AliAnalysisTaskFlowSingleMu.cxx:270
 AliAnalysisTaskFlowSingleMu.cxx:271
 AliAnalysisTaskFlowSingleMu.cxx:272
 AliAnalysisTaskFlowSingleMu.cxx:273
 AliAnalysisTaskFlowSingleMu.cxx:274
 AliAnalysisTaskFlowSingleMu.cxx:275
 AliAnalysisTaskFlowSingleMu.cxx:276
 AliAnalysisTaskFlowSingleMu.cxx:277
 AliAnalysisTaskFlowSingleMu.cxx:278
 AliAnalysisTaskFlowSingleMu.cxx:279
 AliAnalysisTaskFlowSingleMu.cxx:280
 AliAnalysisTaskFlowSingleMu.cxx:281
 AliAnalysisTaskFlowSingleMu.cxx:282
 AliAnalysisTaskFlowSingleMu.cxx:283
 AliAnalysisTaskFlowSingleMu.cxx:284
 AliAnalysisTaskFlowSingleMu.cxx:285
 AliAnalysisTaskFlowSingleMu.cxx:286
 AliAnalysisTaskFlowSingleMu.cxx:287
 AliAnalysisTaskFlowSingleMu.cxx:288
 AliAnalysisTaskFlowSingleMu.cxx:289
 AliAnalysisTaskFlowSingleMu.cxx:290
 AliAnalysisTaskFlowSingleMu.cxx:291
 AliAnalysisTaskFlowSingleMu.cxx:292
 AliAnalysisTaskFlowSingleMu.cxx:293
 AliAnalysisTaskFlowSingleMu.cxx:294
 AliAnalysisTaskFlowSingleMu.cxx:295
 AliAnalysisTaskFlowSingleMu.cxx:296
 AliAnalysisTaskFlowSingleMu.cxx:297
 AliAnalysisTaskFlowSingleMu.cxx:298
 AliAnalysisTaskFlowSingleMu.cxx:299
 AliAnalysisTaskFlowSingleMu.cxx:300
 AliAnalysisTaskFlowSingleMu.cxx:301
 AliAnalysisTaskFlowSingleMu.cxx:302
 AliAnalysisTaskFlowSingleMu.cxx:303
 AliAnalysisTaskFlowSingleMu.cxx:304
 AliAnalysisTaskFlowSingleMu.cxx:305
 AliAnalysisTaskFlowSingleMu.cxx:306
 AliAnalysisTaskFlowSingleMu.cxx:307
 AliAnalysisTaskFlowSingleMu.cxx:308
 AliAnalysisTaskFlowSingleMu.cxx:309
 AliAnalysisTaskFlowSingleMu.cxx:310
 AliAnalysisTaskFlowSingleMu.cxx:311
 AliAnalysisTaskFlowSingleMu.cxx:312
 AliAnalysisTaskFlowSingleMu.cxx:313
 AliAnalysisTaskFlowSingleMu.cxx:314
 AliAnalysisTaskFlowSingleMu.cxx:315
 AliAnalysisTaskFlowSingleMu.cxx:316
 AliAnalysisTaskFlowSingleMu.cxx:317
 AliAnalysisTaskFlowSingleMu.cxx:318
 AliAnalysisTaskFlowSingleMu.cxx:319
 AliAnalysisTaskFlowSingleMu.cxx:320
 AliAnalysisTaskFlowSingleMu.cxx:321
 AliAnalysisTaskFlowSingleMu.cxx:322
 AliAnalysisTaskFlowSingleMu.cxx:323
 AliAnalysisTaskFlowSingleMu.cxx:324
 AliAnalysisTaskFlowSingleMu.cxx:325
 AliAnalysisTaskFlowSingleMu.cxx:326
 AliAnalysisTaskFlowSingleMu.cxx:327
 AliAnalysisTaskFlowSingleMu.cxx:328
 AliAnalysisTaskFlowSingleMu.cxx:329
 AliAnalysisTaskFlowSingleMu.cxx:330
 AliAnalysisTaskFlowSingleMu.cxx:331
 AliAnalysisTaskFlowSingleMu.cxx:332
 AliAnalysisTaskFlowSingleMu.cxx:333
 AliAnalysisTaskFlowSingleMu.cxx:334
 AliAnalysisTaskFlowSingleMu.cxx:335
 AliAnalysisTaskFlowSingleMu.cxx:336
 AliAnalysisTaskFlowSingleMu.cxx:337
 AliAnalysisTaskFlowSingleMu.cxx:338
 AliAnalysisTaskFlowSingleMu.cxx:339
 AliAnalysisTaskFlowSingleMu.cxx:340
 AliAnalysisTaskFlowSingleMu.cxx:341
 AliAnalysisTaskFlowSingleMu.cxx:342
 AliAnalysisTaskFlowSingleMu.cxx:343
 AliAnalysisTaskFlowSingleMu.cxx:344
 AliAnalysisTaskFlowSingleMu.cxx:345
 AliAnalysisTaskFlowSingleMu.cxx:346
 AliAnalysisTaskFlowSingleMu.cxx:347
 AliAnalysisTaskFlowSingleMu.cxx:348
 AliAnalysisTaskFlowSingleMu.cxx:349
 AliAnalysisTaskFlowSingleMu.cxx:350
 AliAnalysisTaskFlowSingleMu.cxx:351
 AliAnalysisTaskFlowSingleMu.cxx:352
 AliAnalysisTaskFlowSingleMu.cxx:353
 AliAnalysisTaskFlowSingleMu.cxx:354
 AliAnalysisTaskFlowSingleMu.cxx:355
 AliAnalysisTaskFlowSingleMu.cxx:356
 AliAnalysisTaskFlowSingleMu.cxx:357
 AliAnalysisTaskFlowSingleMu.cxx:358
 AliAnalysisTaskFlowSingleMu.cxx:359
 AliAnalysisTaskFlowSingleMu.cxx:360
 AliAnalysisTaskFlowSingleMu.cxx:361
 AliAnalysisTaskFlowSingleMu.cxx:362
 AliAnalysisTaskFlowSingleMu.cxx:363
 AliAnalysisTaskFlowSingleMu.cxx:364
 AliAnalysisTaskFlowSingleMu.cxx:365
 AliAnalysisTaskFlowSingleMu.cxx:366
 AliAnalysisTaskFlowSingleMu.cxx:367
 AliAnalysisTaskFlowSingleMu.cxx:368
 AliAnalysisTaskFlowSingleMu.cxx:369
 AliAnalysisTaskFlowSingleMu.cxx:370
 AliAnalysisTaskFlowSingleMu.cxx:371
 AliAnalysisTaskFlowSingleMu.cxx:372
 AliAnalysisTaskFlowSingleMu.cxx:373
 AliAnalysisTaskFlowSingleMu.cxx:374
 AliAnalysisTaskFlowSingleMu.cxx:375
 AliAnalysisTaskFlowSingleMu.cxx:376
 AliAnalysisTaskFlowSingleMu.cxx:377
 AliAnalysisTaskFlowSingleMu.cxx:378
 AliAnalysisTaskFlowSingleMu.cxx:379
 AliAnalysisTaskFlowSingleMu.cxx:380
 AliAnalysisTaskFlowSingleMu.cxx:381
 AliAnalysisTaskFlowSingleMu.cxx:382
 AliAnalysisTaskFlowSingleMu.cxx:383
 AliAnalysisTaskFlowSingleMu.cxx:384
 AliAnalysisTaskFlowSingleMu.cxx:385
 AliAnalysisTaskFlowSingleMu.cxx:386
 AliAnalysisTaskFlowSingleMu.cxx:387
 AliAnalysisTaskFlowSingleMu.cxx:388
 AliAnalysisTaskFlowSingleMu.cxx:389
 AliAnalysisTaskFlowSingleMu.cxx:390
 AliAnalysisTaskFlowSingleMu.cxx:391
 AliAnalysisTaskFlowSingleMu.cxx:392
 AliAnalysisTaskFlowSingleMu.cxx:393
 AliAnalysisTaskFlowSingleMu.cxx:394
 AliAnalysisTaskFlowSingleMu.cxx:395
 AliAnalysisTaskFlowSingleMu.cxx:396
 AliAnalysisTaskFlowSingleMu.cxx:397
 AliAnalysisTaskFlowSingleMu.cxx:398
 AliAnalysisTaskFlowSingleMu.cxx:399
 AliAnalysisTaskFlowSingleMu.cxx:400
 AliAnalysisTaskFlowSingleMu.cxx:401
 AliAnalysisTaskFlowSingleMu.cxx:402
 AliAnalysisTaskFlowSingleMu.cxx:403
 AliAnalysisTaskFlowSingleMu.cxx:404
 AliAnalysisTaskFlowSingleMu.cxx:405
 AliAnalysisTaskFlowSingleMu.cxx:406
 AliAnalysisTaskFlowSingleMu.cxx:407
 AliAnalysisTaskFlowSingleMu.cxx:408
 AliAnalysisTaskFlowSingleMu.cxx:409
 AliAnalysisTaskFlowSingleMu.cxx:410
 AliAnalysisTaskFlowSingleMu.cxx:411
 AliAnalysisTaskFlowSingleMu.cxx:412
 AliAnalysisTaskFlowSingleMu.cxx:413
 AliAnalysisTaskFlowSingleMu.cxx:414
 AliAnalysisTaskFlowSingleMu.cxx:415
 AliAnalysisTaskFlowSingleMu.cxx:416
 AliAnalysisTaskFlowSingleMu.cxx:417
 AliAnalysisTaskFlowSingleMu.cxx:418
 AliAnalysisTaskFlowSingleMu.cxx:419
 AliAnalysisTaskFlowSingleMu.cxx:420
 AliAnalysisTaskFlowSingleMu.cxx:421
 AliAnalysisTaskFlowSingleMu.cxx:422
 AliAnalysisTaskFlowSingleMu.cxx:423
 AliAnalysisTaskFlowSingleMu.cxx:424
 AliAnalysisTaskFlowSingleMu.cxx:425
 AliAnalysisTaskFlowSingleMu.cxx:426
 AliAnalysisTaskFlowSingleMu.cxx:427
 AliAnalysisTaskFlowSingleMu.cxx:428
 AliAnalysisTaskFlowSingleMu.cxx:429
 AliAnalysisTaskFlowSingleMu.cxx:430
 AliAnalysisTaskFlowSingleMu.cxx:431
 AliAnalysisTaskFlowSingleMu.cxx:432
 AliAnalysisTaskFlowSingleMu.cxx:433
 AliAnalysisTaskFlowSingleMu.cxx:434
 AliAnalysisTaskFlowSingleMu.cxx:435
 AliAnalysisTaskFlowSingleMu.cxx:436
 AliAnalysisTaskFlowSingleMu.cxx:437
 AliAnalysisTaskFlowSingleMu.cxx:438
 AliAnalysisTaskFlowSingleMu.cxx:439
 AliAnalysisTaskFlowSingleMu.cxx:440
 AliAnalysisTaskFlowSingleMu.cxx:441
 AliAnalysisTaskFlowSingleMu.cxx:442
 AliAnalysisTaskFlowSingleMu.cxx:443
 AliAnalysisTaskFlowSingleMu.cxx:444
 AliAnalysisTaskFlowSingleMu.cxx:445
 AliAnalysisTaskFlowSingleMu.cxx:446
 AliAnalysisTaskFlowSingleMu.cxx:447
 AliAnalysisTaskFlowSingleMu.cxx:448
 AliAnalysisTaskFlowSingleMu.cxx:449
 AliAnalysisTaskFlowSingleMu.cxx:450
 AliAnalysisTaskFlowSingleMu.cxx:451
 AliAnalysisTaskFlowSingleMu.cxx:452
 AliAnalysisTaskFlowSingleMu.cxx:453
 AliAnalysisTaskFlowSingleMu.cxx:454
 AliAnalysisTaskFlowSingleMu.cxx:455
 AliAnalysisTaskFlowSingleMu.cxx:456
 AliAnalysisTaskFlowSingleMu.cxx:457
 AliAnalysisTaskFlowSingleMu.cxx:458
 AliAnalysisTaskFlowSingleMu.cxx:459
 AliAnalysisTaskFlowSingleMu.cxx:460
 AliAnalysisTaskFlowSingleMu.cxx:461
 AliAnalysisTaskFlowSingleMu.cxx:462
 AliAnalysisTaskFlowSingleMu.cxx:463
 AliAnalysisTaskFlowSingleMu.cxx:464
 AliAnalysisTaskFlowSingleMu.cxx:465
 AliAnalysisTaskFlowSingleMu.cxx:466
 AliAnalysisTaskFlowSingleMu.cxx:467
 AliAnalysisTaskFlowSingleMu.cxx:468
 AliAnalysisTaskFlowSingleMu.cxx:469
 AliAnalysisTaskFlowSingleMu.cxx:470
 AliAnalysisTaskFlowSingleMu.cxx:471
 AliAnalysisTaskFlowSingleMu.cxx:472
 AliAnalysisTaskFlowSingleMu.cxx:473
 AliAnalysisTaskFlowSingleMu.cxx:474
 AliAnalysisTaskFlowSingleMu.cxx:475
 AliAnalysisTaskFlowSingleMu.cxx:476
 AliAnalysisTaskFlowSingleMu.cxx:477
 AliAnalysisTaskFlowSingleMu.cxx:478
 AliAnalysisTaskFlowSingleMu.cxx:479
 AliAnalysisTaskFlowSingleMu.cxx:480
 AliAnalysisTaskFlowSingleMu.cxx:481
 AliAnalysisTaskFlowSingleMu.cxx:482
 AliAnalysisTaskFlowSingleMu.cxx:483
 AliAnalysisTaskFlowSingleMu.cxx:484
 AliAnalysisTaskFlowSingleMu.cxx:485
 AliAnalysisTaskFlowSingleMu.cxx:486
 AliAnalysisTaskFlowSingleMu.cxx:487
 AliAnalysisTaskFlowSingleMu.cxx:488
 AliAnalysisTaskFlowSingleMu.cxx:489
 AliAnalysisTaskFlowSingleMu.cxx:490
 AliAnalysisTaskFlowSingleMu.cxx:491
 AliAnalysisTaskFlowSingleMu.cxx:492
 AliAnalysisTaskFlowSingleMu.cxx:493
 AliAnalysisTaskFlowSingleMu.cxx:494
 AliAnalysisTaskFlowSingleMu.cxx:495
 AliAnalysisTaskFlowSingleMu.cxx:496
 AliAnalysisTaskFlowSingleMu.cxx:497
 AliAnalysisTaskFlowSingleMu.cxx:498
 AliAnalysisTaskFlowSingleMu.cxx:499
 AliAnalysisTaskFlowSingleMu.cxx:500
 AliAnalysisTaskFlowSingleMu.cxx:501
 AliAnalysisTaskFlowSingleMu.cxx:502
 AliAnalysisTaskFlowSingleMu.cxx:503
 AliAnalysisTaskFlowSingleMu.cxx:504
 AliAnalysisTaskFlowSingleMu.cxx:505
 AliAnalysisTaskFlowSingleMu.cxx:506
 AliAnalysisTaskFlowSingleMu.cxx:507
 AliAnalysisTaskFlowSingleMu.cxx:508
 AliAnalysisTaskFlowSingleMu.cxx:509
 AliAnalysisTaskFlowSingleMu.cxx:510
 AliAnalysisTaskFlowSingleMu.cxx:511
 AliAnalysisTaskFlowSingleMu.cxx:512
 AliAnalysisTaskFlowSingleMu.cxx:513
 AliAnalysisTaskFlowSingleMu.cxx:514
 AliAnalysisTaskFlowSingleMu.cxx:515
 AliAnalysisTaskFlowSingleMu.cxx:516
 AliAnalysisTaskFlowSingleMu.cxx:517
 AliAnalysisTaskFlowSingleMu.cxx:518
 AliAnalysisTaskFlowSingleMu.cxx:519
 AliAnalysisTaskFlowSingleMu.cxx:520
 AliAnalysisTaskFlowSingleMu.cxx:521
 AliAnalysisTaskFlowSingleMu.cxx:522
 AliAnalysisTaskFlowSingleMu.cxx:523
 AliAnalysisTaskFlowSingleMu.cxx:524
 AliAnalysisTaskFlowSingleMu.cxx:525
 AliAnalysisTaskFlowSingleMu.cxx:526
 AliAnalysisTaskFlowSingleMu.cxx:527
 AliAnalysisTaskFlowSingleMu.cxx:528
 AliAnalysisTaskFlowSingleMu.cxx:529
 AliAnalysisTaskFlowSingleMu.cxx:530
 AliAnalysisTaskFlowSingleMu.cxx:531
 AliAnalysisTaskFlowSingleMu.cxx:532
 AliAnalysisTaskFlowSingleMu.cxx:533
 AliAnalysisTaskFlowSingleMu.cxx:534
 AliAnalysisTaskFlowSingleMu.cxx:535
 AliAnalysisTaskFlowSingleMu.cxx:536
 AliAnalysisTaskFlowSingleMu.cxx:537
 AliAnalysisTaskFlowSingleMu.cxx:538
 AliAnalysisTaskFlowSingleMu.cxx:539
 AliAnalysisTaskFlowSingleMu.cxx:540
 AliAnalysisTaskFlowSingleMu.cxx:541
 AliAnalysisTaskFlowSingleMu.cxx:542
 AliAnalysisTaskFlowSingleMu.cxx:543
 AliAnalysisTaskFlowSingleMu.cxx:544
 AliAnalysisTaskFlowSingleMu.cxx:545
 AliAnalysisTaskFlowSingleMu.cxx:546
 AliAnalysisTaskFlowSingleMu.cxx:547
 AliAnalysisTaskFlowSingleMu.cxx:548
 AliAnalysisTaskFlowSingleMu.cxx:549
 AliAnalysisTaskFlowSingleMu.cxx:550
 AliAnalysisTaskFlowSingleMu.cxx:551
 AliAnalysisTaskFlowSingleMu.cxx:552
 AliAnalysisTaskFlowSingleMu.cxx:553
 AliAnalysisTaskFlowSingleMu.cxx:554
 AliAnalysisTaskFlowSingleMu.cxx:555
 AliAnalysisTaskFlowSingleMu.cxx:556
 AliAnalysisTaskFlowSingleMu.cxx:557
 AliAnalysisTaskFlowSingleMu.cxx:558
 AliAnalysisTaskFlowSingleMu.cxx:559
 AliAnalysisTaskFlowSingleMu.cxx:560
 AliAnalysisTaskFlowSingleMu.cxx:561
 AliAnalysisTaskFlowSingleMu.cxx:562
 AliAnalysisTaskFlowSingleMu.cxx:563
 AliAnalysisTaskFlowSingleMu.cxx:564
 AliAnalysisTaskFlowSingleMu.cxx:565
 AliAnalysisTaskFlowSingleMu.cxx:566
 AliAnalysisTaskFlowSingleMu.cxx:567
 AliAnalysisTaskFlowSingleMu.cxx:568
 AliAnalysisTaskFlowSingleMu.cxx:569
 AliAnalysisTaskFlowSingleMu.cxx:570
 AliAnalysisTaskFlowSingleMu.cxx:571
 AliAnalysisTaskFlowSingleMu.cxx:572
 AliAnalysisTaskFlowSingleMu.cxx:573
 AliAnalysisTaskFlowSingleMu.cxx:574
 AliAnalysisTaskFlowSingleMu.cxx:575
 AliAnalysisTaskFlowSingleMu.cxx:576
 AliAnalysisTaskFlowSingleMu.cxx:577
 AliAnalysisTaskFlowSingleMu.cxx:578
 AliAnalysisTaskFlowSingleMu.cxx:579
 AliAnalysisTaskFlowSingleMu.cxx:580
 AliAnalysisTaskFlowSingleMu.cxx:581
 AliAnalysisTaskFlowSingleMu.cxx:582
 AliAnalysisTaskFlowSingleMu.cxx:583
 AliAnalysisTaskFlowSingleMu.cxx:584
 AliAnalysisTaskFlowSingleMu.cxx:585
 AliAnalysisTaskFlowSingleMu.cxx:586
 AliAnalysisTaskFlowSingleMu.cxx:587
 AliAnalysisTaskFlowSingleMu.cxx:588
 AliAnalysisTaskFlowSingleMu.cxx:589
 AliAnalysisTaskFlowSingleMu.cxx:590
 AliAnalysisTaskFlowSingleMu.cxx:591
 AliAnalysisTaskFlowSingleMu.cxx:592
 AliAnalysisTaskFlowSingleMu.cxx:593
 AliAnalysisTaskFlowSingleMu.cxx:594
 AliAnalysisTaskFlowSingleMu.cxx:595
 AliAnalysisTaskFlowSingleMu.cxx:596
 AliAnalysisTaskFlowSingleMu.cxx:597
 AliAnalysisTaskFlowSingleMu.cxx:598
 AliAnalysisTaskFlowSingleMu.cxx:599
 AliAnalysisTaskFlowSingleMu.cxx:600
 AliAnalysisTaskFlowSingleMu.cxx:601
 AliAnalysisTaskFlowSingleMu.cxx:602
 AliAnalysisTaskFlowSingleMu.cxx:603
 AliAnalysisTaskFlowSingleMu.cxx:604
 AliAnalysisTaskFlowSingleMu.cxx:605
 AliAnalysisTaskFlowSingleMu.cxx:606
 AliAnalysisTaskFlowSingleMu.cxx:607
 AliAnalysisTaskFlowSingleMu.cxx:608
 AliAnalysisTaskFlowSingleMu.cxx:609
 AliAnalysisTaskFlowSingleMu.cxx:610
 AliAnalysisTaskFlowSingleMu.cxx:611
 AliAnalysisTaskFlowSingleMu.cxx:612
 AliAnalysisTaskFlowSingleMu.cxx:613
 AliAnalysisTaskFlowSingleMu.cxx:614
 AliAnalysisTaskFlowSingleMu.cxx:615
 AliAnalysisTaskFlowSingleMu.cxx:616
 AliAnalysisTaskFlowSingleMu.cxx:617
 AliAnalysisTaskFlowSingleMu.cxx:618
 AliAnalysisTaskFlowSingleMu.cxx:619
 AliAnalysisTaskFlowSingleMu.cxx:620
 AliAnalysisTaskFlowSingleMu.cxx:621
 AliAnalysisTaskFlowSingleMu.cxx:622
 AliAnalysisTaskFlowSingleMu.cxx:623
 AliAnalysisTaskFlowSingleMu.cxx:624
 AliAnalysisTaskFlowSingleMu.cxx:625
 AliAnalysisTaskFlowSingleMu.cxx:626
 AliAnalysisTaskFlowSingleMu.cxx:627
 AliAnalysisTaskFlowSingleMu.cxx:628
 AliAnalysisTaskFlowSingleMu.cxx:629
 AliAnalysisTaskFlowSingleMu.cxx:630
 AliAnalysisTaskFlowSingleMu.cxx:631
 AliAnalysisTaskFlowSingleMu.cxx:632
 AliAnalysisTaskFlowSingleMu.cxx:633
 AliAnalysisTaskFlowSingleMu.cxx:634
 AliAnalysisTaskFlowSingleMu.cxx:635
 AliAnalysisTaskFlowSingleMu.cxx:636
 AliAnalysisTaskFlowSingleMu.cxx:637
 AliAnalysisTaskFlowSingleMu.cxx:638
 AliAnalysisTaskFlowSingleMu.cxx:639
 AliAnalysisTaskFlowSingleMu.cxx:640
 AliAnalysisTaskFlowSingleMu.cxx:641
 AliAnalysisTaskFlowSingleMu.cxx:642
 AliAnalysisTaskFlowSingleMu.cxx:643
 AliAnalysisTaskFlowSingleMu.cxx:644
 AliAnalysisTaskFlowSingleMu.cxx:645
 AliAnalysisTaskFlowSingleMu.cxx:646
 AliAnalysisTaskFlowSingleMu.cxx:647
 AliAnalysisTaskFlowSingleMu.cxx:648
 AliAnalysisTaskFlowSingleMu.cxx:649
 AliAnalysisTaskFlowSingleMu.cxx:650
 AliAnalysisTaskFlowSingleMu.cxx:651
 AliAnalysisTaskFlowSingleMu.cxx:652
 AliAnalysisTaskFlowSingleMu.cxx:653
 AliAnalysisTaskFlowSingleMu.cxx:654
 AliAnalysisTaskFlowSingleMu.cxx:655
 AliAnalysisTaskFlowSingleMu.cxx:656
 AliAnalysisTaskFlowSingleMu.cxx:657
 AliAnalysisTaskFlowSingleMu.cxx:658
 AliAnalysisTaskFlowSingleMu.cxx:659
 AliAnalysisTaskFlowSingleMu.cxx:660
 AliAnalysisTaskFlowSingleMu.cxx:661
 AliAnalysisTaskFlowSingleMu.cxx:662
 AliAnalysisTaskFlowSingleMu.cxx:663
 AliAnalysisTaskFlowSingleMu.cxx:664
 AliAnalysisTaskFlowSingleMu.cxx:665
 AliAnalysisTaskFlowSingleMu.cxx:666
 AliAnalysisTaskFlowSingleMu.cxx:667
 AliAnalysisTaskFlowSingleMu.cxx:668
 AliAnalysisTaskFlowSingleMu.cxx:669
 AliAnalysisTaskFlowSingleMu.cxx:670
 AliAnalysisTaskFlowSingleMu.cxx:671
 AliAnalysisTaskFlowSingleMu.cxx:672
 AliAnalysisTaskFlowSingleMu.cxx:673
 AliAnalysisTaskFlowSingleMu.cxx:674
 AliAnalysisTaskFlowSingleMu.cxx:675
 AliAnalysisTaskFlowSingleMu.cxx:676
 AliAnalysisTaskFlowSingleMu.cxx:677
 AliAnalysisTaskFlowSingleMu.cxx:678
 AliAnalysisTaskFlowSingleMu.cxx:679
 AliAnalysisTaskFlowSingleMu.cxx:680
 AliAnalysisTaskFlowSingleMu.cxx:681
 AliAnalysisTaskFlowSingleMu.cxx:682
 AliAnalysisTaskFlowSingleMu.cxx:683
 AliAnalysisTaskFlowSingleMu.cxx:684
 AliAnalysisTaskFlowSingleMu.cxx:685
 AliAnalysisTaskFlowSingleMu.cxx:686
 AliAnalysisTaskFlowSingleMu.cxx:687
 AliAnalysisTaskFlowSingleMu.cxx:688
 AliAnalysisTaskFlowSingleMu.cxx:689
 AliAnalysisTaskFlowSingleMu.cxx:690
 AliAnalysisTaskFlowSingleMu.cxx:691
 AliAnalysisTaskFlowSingleMu.cxx:692
 AliAnalysisTaskFlowSingleMu.cxx:693
 AliAnalysisTaskFlowSingleMu.cxx:694
 AliAnalysisTaskFlowSingleMu.cxx:695
 AliAnalysisTaskFlowSingleMu.cxx:696
 AliAnalysisTaskFlowSingleMu.cxx:697
 AliAnalysisTaskFlowSingleMu.cxx:698
 AliAnalysisTaskFlowSingleMu.cxx:699
 AliAnalysisTaskFlowSingleMu.cxx:700
 AliAnalysisTaskFlowSingleMu.cxx:701
 AliAnalysisTaskFlowSingleMu.cxx:702
 AliAnalysisTaskFlowSingleMu.cxx:703
 AliAnalysisTaskFlowSingleMu.cxx:704
 AliAnalysisTaskFlowSingleMu.cxx:705
 AliAnalysisTaskFlowSingleMu.cxx:706
 AliAnalysisTaskFlowSingleMu.cxx:707
 AliAnalysisTaskFlowSingleMu.cxx:708
 AliAnalysisTaskFlowSingleMu.cxx:709
 AliAnalysisTaskFlowSingleMu.cxx:710
 AliAnalysisTaskFlowSingleMu.cxx:711
 AliAnalysisTaskFlowSingleMu.cxx:712
 AliAnalysisTaskFlowSingleMu.cxx:713
 AliAnalysisTaskFlowSingleMu.cxx:714
 AliAnalysisTaskFlowSingleMu.cxx:715
 AliAnalysisTaskFlowSingleMu.cxx:716
 AliAnalysisTaskFlowSingleMu.cxx:717
 AliAnalysisTaskFlowSingleMu.cxx:718
 AliAnalysisTaskFlowSingleMu.cxx:719
 AliAnalysisTaskFlowSingleMu.cxx:720
 AliAnalysisTaskFlowSingleMu.cxx:721
 AliAnalysisTaskFlowSingleMu.cxx:722
 AliAnalysisTaskFlowSingleMu.cxx:723
 AliAnalysisTaskFlowSingleMu.cxx:724
 AliAnalysisTaskFlowSingleMu.cxx:725
 AliAnalysisTaskFlowSingleMu.cxx:726
 AliAnalysisTaskFlowSingleMu.cxx:727
 AliAnalysisTaskFlowSingleMu.cxx:728
 AliAnalysisTaskFlowSingleMu.cxx:729
 AliAnalysisTaskFlowSingleMu.cxx:730
 AliAnalysisTaskFlowSingleMu.cxx:731
 AliAnalysisTaskFlowSingleMu.cxx:732
 AliAnalysisTaskFlowSingleMu.cxx:733
 AliAnalysisTaskFlowSingleMu.cxx:734
 AliAnalysisTaskFlowSingleMu.cxx:735
 AliAnalysisTaskFlowSingleMu.cxx:736
 AliAnalysisTaskFlowSingleMu.cxx:737
 AliAnalysisTaskFlowSingleMu.cxx:738
 AliAnalysisTaskFlowSingleMu.cxx:739
 AliAnalysisTaskFlowSingleMu.cxx:740
 AliAnalysisTaskFlowSingleMu.cxx:741
 AliAnalysisTaskFlowSingleMu.cxx:742
 AliAnalysisTaskFlowSingleMu.cxx:743
 AliAnalysisTaskFlowSingleMu.cxx:744
 AliAnalysisTaskFlowSingleMu.cxx:745
 AliAnalysisTaskFlowSingleMu.cxx:746
 AliAnalysisTaskFlowSingleMu.cxx:747
 AliAnalysisTaskFlowSingleMu.cxx:748
 AliAnalysisTaskFlowSingleMu.cxx:749
 AliAnalysisTaskFlowSingleMu.cxx:750
 AliAnalysisTaskFlowSingleMu.cxx:751
 AliAnalysisTaskFlowSingleMu.cxx:752
 AliAnalysisTaskFlowSingleMu.cxx:753
 AliAnalysisTaskFlowSingleMu.cxx:754
 AliAnalysisTaskFlowSingleMu.cxx:755
 AliAnalysisTaskFlowSingleMu.cxx:756
 AliAnalysisTaskFlowSingleMu.cxx:757
 AliAnalysisTaskFlowSingleMu.cxx:758
 AliAnalysisTaskFlowSingleMu.cxx:759
 AliAnalysisTaskFlowSingleMu.cxx:760
 AliAnalysisTaskFlowSingleMu.cxx:761
 AliAnalysisTaskFlowSingleMu.cxx:762
 AliAnalysisTaskFlowSingleMu.cxx:763
 AliAnalysisTaskFlowSingleMu.cxx:764
 AliAnalysisTaskFlowSingleMu.cxx:765
 AliAnalysisTaskFlowSingleMu.cxx:766
 AliAnalysisTaskFlowSingleMu.cxx:767
 AliAnalysisTaskFlowSingleMu.cxx:768
 AliAnalysisTaskFlowSingleMu.cxx:769
 AliAnalysisTaskFlowSingleMu.cxx:770
 AliAnalysisTaskFlowSingleMu.cxx:771
 AliAnalysisTaskFlowSingleMu.cxx:772
 AliAnalysisTaskFlowSingleMu.cxx:773
 AliAnalysisTaskFlowSingleMu.cxx:774
 AliAnalysisTaskFlowSingleMu.cxx:775
 AliAnalysisTaskFlowSingleMu.cxx:776
 AliAnalysisTaskFlowSingleMu.cxx:777
 AliAnalysisTaskFlowSingleMu.cxx:778
 AliAnalysisTaskFlowSingleMu.cxx:779
 AliAnalysisTaskFlowSingleMu.cxx:780
 AliAnalysisTaskFlowSingleMu.cxx:781
 AliAnalysisTaskFlowSingleMu.cxx:782
 AliAnalysisTaskFlowSingleMu.cxx:783
 AliAnalysisTaskFlowSingleMu.cxx:784
 AliAnalysisTaskFlowSingleMu.cxx:785
 AliAnalysisTaskFlowSingleMu.cxx:786
 AliAnalysisTaskFlowSingleMu.cxx:787
 AliAnalysisTaskFlowSingleMu.cxx:788
 AliAnalysisTaskFlowSingleMu.cxx:789
 AliAnalysisTaskFlowSingleMu.cxx:790
 AliAnalysisTaskFlowSingleMu.cxx:791
 AliAnalysisTaskFlowSingleMu.cxx:792
 AliAnalysisTaskFlowSingleMu.cxx:793
 AliAnalysisTaskFlowSingleMu.cxx:794
 AliAnalysisTaskFlowSingleMu.cxx:795
 AliAnalysisTaskFlowSingleMu.cxx:796
 AliAnalysisTaskFlowSingleMu.cxx:797
 AliAnalysisTaskFlowSingleMu.cxx:798
 AliAnalysisTaskFlowSingleMu.cxx:799
 AliAnalysisTaskFlowSingleMu.cxx:800
 AliAnalysisTaskFlowSingleMu.cxx:801
 AliAnalysisTaskFlowSingleMu.cxx:802
 AliAnalysisTaskFlowSingleMu.cxx:803
 AliAnalysisTaskFlowSingleMu.cxx:804
 AliAnalysisTaskFlowSingleMu.cxx:805
 AliAnalysisTaskFlowSingleMu.cxx:806
 AliAnalysisTaskFlowSingleMu.cxx:807
 AliAnalysisTaskFlowSingleMu.cxx:808
 AliAnalysisTaskFlowSingleMu.cxx:809
 AliAnalysisTaskFlowSingleMu.cxx:810
 AliAnalysisTaskFlowSingleMu.cxx:811
 AliAnalysisTaskFlowSingleMu.cxx:812
 AliAnalysisTaskFlowSingleMu.cxx:813
 AliAnalysisTaskFlowSingleMu.cxx:814
 AliAnalysisTaskFlowSingleMu.cxx:815
 AliAnalysisTaskFlowSingleMu.cxx:816
 AliAnalysisTaskFlowSingleMu.cxx:817
 AliAnalysisTaskFlowSingleMu.cxx:818
 AliAnalysisTaskFlowSingleMu.cxx:819
 AliAnalysisTaskFlowSingleMu.cxx:820
 AliAnalysisTaskFlowSingleMu.cxx:821
 AliAnalysisTaskFlowSingleMu.cxx:822
 AliAnalysisTaskFlowSingleMu.cxx:823
 AliAnalysisTaskFlowSingleMu.cxx:824
 AliAnalysisTaskFlowSingleMu.cxx:825
 AliAnalysisTaskFlowSingleMu.cxx:826
 AliAnalysisTaskFlowSingleMu.cxx:827
 AliAnalysisTaskFlowSingleMu.cxx:828
 AliAnalysisTaskFlowSingleMu.cxx:829
 AliAnalysisTaskFlowSingleMu.cxx:830
 AliAnalysisTaskFlowSingleMu.cxx:831
 AliAnalysisTaskFlowSingleMu.cxx:832
 AliAnalysisTaskFlowSingleMu.cxx:833
 AliAnalysisTaskFlowSingleMu.cxx:834
 AliAnalysisTaskFlowSingleMu.cxx:835
 AliAnalysisTaskFlowSingleMu.cxx:836
 AliAnalysisTaskFlowSingleMu.cxx:837
 AliAnalysisTaskFlowSingleMu.cxx:838
 AliAnalysisTaskFlowSingleMu.cxx:839
 AliAnalysisTaskFlowSingleMu.cxx:840
 AliAnalysisTaskFlowSingleMu.cxx:841
 AliAnalysisTaskFlowSingleMu.cxx:842
 AliAnalysisTaskFlowSingleMu.cxx:843
 AliAnalysisTaskFlowSingleMu.cxx:844
 AliAnalysisTaskFlowSingleMu.cxx:845
 AliAnalysisTaskFlowSingleMu.cxx:846
 AliAnalysisTaskFlowSingleMu.cxx:847
 AliAnalysisTaskFlowSingleMu.cxx:848
 AliAnalysisTaskFlowSingleMu.cxx:849
 AliAnalysisTaskFlowSingleMu.cxx:850
 AliAnalysisTaskFlowSingleMu.cxx:851
 AliAnalysisTaskFlowSingleMu.cxx:852
 AliAnalysisTaskFlowSingleMu.cxx:853
 AliAnalysisTaskFlowSingleMu.cxx:854
 AliAnalysisTaskFlowSingleMu.cxx:855
 AliAnalysisTaskFlowSingleMu.cxx:856
 AliAnalysisTaskFlowSingleMu.cxx:857
 AliAnalysisTaskFlowSingleMu.cxx:858
 AliAnalysisTaskFlowSingleMu.cxx:859
 AliAnalysisTaskFlowSingleMu.cxx:860
 AliAnalysisTaskFlowSingleMu.cxx:861
 AliAnalysisTaskFlowSingleMu.cxx:862
 AliAnalysisTaskFlowSingleMu.cxx:863
 AliAnalysisTaskFlowSingleMu.cxx:864
 AliAnalysisTaskFlowSingleMu.cxx:865
 AliAnalysisTaskFlowSingleMu.cxx:866
 AliAnalysisTaskFlowSingleMu.cxx:867
 AliAnalysisTaskFlowSingleMu.cxx:868
 AliAnalysisTaskFlowSingleMu.cxx:869
 AliAnalysisTaskFlowSingleMu.cxx:870
 AliAnalysisTaskFlowSingleMu.cxx:871
 AliAnalysisTaskFlowSingleMu.cxx:872
 AliAnalysisTaskFlowSingleMu.cxx:873
 AliAnalysisTaskFlowSingleMu.cxx:874
 AliAnalysisTaskFlowSingleMu.cxx:875
 AliAnalysisTaskFlowSingleMu.cxx:876
 AliAnalysisTaskFlowSingleMu.cxx:877
 AliAnalysisTaskFlowSingleMu.cxx:878
 AliAnalysisTaskFlowSingleMu.cxx:879
 AliAnalysisTaskFlowSingleMu.cxx:880
 AliAnalysisTaskFlowSingleMu.cxx:881
 AliAnalysisTaskFlowSingleMu.cxx:882
 AliAnalysisTaskFlowSingleMu.cxx:883
 AliAnalysisTaskFlowSingleMu.cxx:884
 AliAnalysisTaskFlowSingleMu.cxx:885
 AliAnalysisTaskFlowSingleMu.cxx:886
 AliAnalysisTaskFlowSingleMu.cxx:887
 AliAnalysisTaskFlowSingleMu.cxx:888
 AliAnalysisTaskFlowSingleMu.cxx:889
 AliAnalysisTaskFlowSingleMu.cxx:890
 AliAnalysisTaskFlowSingleMu.cxx:891
 AliAnalysisTaskFlowSingleMu.cxx:892
 AliAnalysisTaskFlowSingleMu.cxx:893
 AliAnalysisTaskFlowSingleMu.cxx:894
 AliAnalysisTaskFlowSingleMu.cxx:895
 AliAnalysisTaskFlowSingleMu.cxx:896
 AliAnalysisTaskFlowSingleMu.cxx:897
 AliAnalysisTaskFlowSingleMu.cxx:898
 AliAnalysisTaskFlowSingleMu.cxx:899
 AliAnalysisTaskFlowSingleMu.cxx:900
 AliAnalysisTaskFlowSingleMu.cxx:901
 AliAnalysisTaskFlowSingleMu.cxx:902
 AliAnalysisTaskFlowSingleMu.cxx:903
 AliAnalysisTaskFlowSingleMu.cxx:904
 AliAnalysisTaskFlowSingleMu.cxx:905
 AliAnalysisTaskFlowSingleMu.cxx:906
 AliAnalysisTaskFlowSingleMu.cxx:907
 AliAnalysisTaskFlowSingleMu.cxx:908
 AliAnalysisTaskFlowSingleMu.cxx:909
 AliAnalysisTaskFlowSingleMu.cxx:910
 AliAnalysisTaskFlowSingleMu.cxx:911
 AliAnalysisTaskFlowSingleMu.cxx:912
 AliAnalysisTaskFlowSingleMu.cxx:913
 AliAnalysisTaskFlowSingleMu.cxx:914
 AliAnalysisTaskFlowSingleMu.cxx:915
 AliAnalysisTaskFlowSingleMu.cxx:916
 AliAnalysisTaskFlowSingleMu.cxx:917
 AliAnalysisTaskFlowSingleMu.cxx:918
 AliAnalysisTaskFlowSingleMu.cxx:919
 AliAnalysisTaskFlowSingleMu.cxx:920
 AliAnalysisTaskFlowSingleMu.cxx:921
 AliAnalysisTaskFlowSingleMu.cxx:922
 AliAnalysisTaskFlowSingleMu.cxx:923
 AliAnalysisTaskFlowSingleMu.cxx:924
 AliAnalysisTaskFlowSingleMu.cxx:925
 AliAnalysisTaskFlowSingleMu.cxx:926
 AliAnalysisTaskFlowSingleMu.cxx:927
 AliAnalysisTaskFlowSingleMu.cxx:928
 AliAnalysisTaskFlowSingleMu.cxx:929
 AliAnalysisTaskFlowSingleMu.cxx:930
 AliAnalysisTaskFlowSingleMu.cxx:931
 AliAnalysisTaskFlowSingleMu.cxx:932
 AliAnalysisTaskFlowSingleMu.cxx:933
 AliAnalysisTaskFlowSingleMu.cxx:934
 AliAnalysisTaskFlowSingleMu.cxx:935
 AliAnalysisTaskFlowSingleMu.cxx:936
 AliAnalysisTaskFlowSingleMu.cxx:937
 AliAnalysisTaskFlowSingleMu.cxx:938
 AliAnalysisTaskFlowSingleMu.cxx:939
 AliAnalysisTaskFlowSingleMu.cxx:940
 AliAnalysisTaskFlowSingleMu.cxx:941
 AliAnalysisTaskFlowSingleMu.cxx:942
 AliAnalysisTaskFlowSingleMu.cxx:943
 AliAnalysisTaskFlowSingleMu.cxx:944
 AliAnalysisTaskFlowSingleMu.cxx:945
 AliAnalysisTaskFlowSingleMu.cxx:946
 AliAnalysisTaskFlowSingleMu.cxx:947
 AliAnalysisTaskFlowSingleMu.cxx:948
 AliAnalysisTaskFlowSingleMu.cxx:949
 AliAnalysisTaskFlowSingleMu.cxx:950
 AliAnalysisTaskFlowSingleMu.cxx:951
 AliAnalysisTaskFlowSingleMu.cxx:952
 AliAnalysisTaskFlowSingleMu.cxx:953
 AliAnalysisTaskFlowSingleMu.cxx:954
 AliAnalysisTaskFlowSingleMu.cxx:955
 AliAnalysisTaskFlowSingleMu.cxx:956
 AliAnalysisTaskFlowSingleMu.cxx:957
 AliAnalysisTaskFlowSingleMu.cxx:958
 AliAnalysisTaskFlowSingleMu.cxx:959
 AliAnalysisTaskFlowSingleMu.cxx:960
 AliAnalysisTaskFlowSingleMu.cxx:961
 AliAnalysisTaskFlowSingleMu.cxx:962
 AliAnalysisTaskFlowSingleMu.cxx:963
 AliAnalysisTaskFlowSingleMu.cxx:964
 AliAnalysisTaskFlowSingleMu.cxx:965
 AliAnalysisTaskFlowSingleMu.cxx:966
 AliAnalysisTaskFlowSingleMu.cxx:967
 AliAnalysisTaskFlowSingleMu.cxx:968
 AliAnalysisTaskFlowSingleMu.cxx:969
 AliAnalysisTaskFlowSingleMu.cxx:970
 AliAnalysisTaskFlowSingleMu.cxx:971
 AliAnalysisTaskFlowSingleMu.cxx:972
 AliAnalysisTaskFlowSingleMu.cxx:973
 AliAnalysisTaskFlowSingleMu.cxx:974
 AliAnalysisTaskFlowSingleMu.cxx:975
 AliAnalysisTaskFlowSingleMu.cxx:976
 AliAnalysisTaskFlowSingleMu.cxx:977
 AliAnalysisTaskFlowSingleMu.cxx:978
 AliAnalysisTaskFlowSingleMu.cxx:979
 AliAnalysisTaskFlowSingleMu.cxx:980
 AliAnalysisTaskFlowSingleMu.cxx:981
 AliAnalysisTaskFlowSingleMu.cxx:982
 AliAnalysisTaskFlowSingleMu.cxx:983
 AliAnalysisTaskFlowSingleMu.cxx:984
 AliAnalysisTaskFlowSingleMu.cxx:985
 AliAnalysisTaskFlowSingleMu.cxx:986
 AliAnalysisTaskFlowSingleMu.cxx:987
 AliAnalysisTaskFlowSingleMu.cxx:988
 AliAnalysisTaskFlowSingleMu.cxx:989
 AliAnalysisTaskFlowSingleMu.cxx:990
 AliAnalysisTaskFlowSingleMu.cxx:991
 AliAnalysisTaskFlowSingleMu.cxx:992