ROOT logo
#include "AliAnalysisMuMuGlobal.h"

/**
 * \ingroup pwg-muon-mumu
 *
 * \class AliAnalysisMuMuGlobal
 *
 * Very simple histogramming analysis for global event properties, like vertex, bunch-crossing,
 * background, etc...
 *
 * Warning : not really ready for prime-time
 *
 */

#include "TH1.h"
#include "AliVVertex.h"
#include "AliVEvent.h"
#include "AliAODEvent.h"
#include "AliAnalysisMuonUtility.h"
#include "AliAODTZERO.h"
#include "AliESDEvent.h"
#include "AliAnalysisMuMuBinning.h"
#include <set>
#include "AliMergeableCollection.h"
#include "AliAnalysisMuonUtility.h"
#include "AliESDUtils.h"

ClassImp(AliAnalysisMuMuGlobal)

//_____________________________________________________________________________
AliAnalysisMuMuGlobal::AliAnalysisMuMuGlobal() : AliAnalysisMuMuBase()
{
  /// ctor
}

//_____________________________________________________________________________
Bool_t AliAnalysisMuMuGlobal::SelectAnyTriggerClass(const TString& firedTriggerClasses, TString& acceptedTriggerClasses) const
{
  if ( firedTriggerClasses.Length()>0)
  {
    acceptedTriggerClasses = "NOTRIGGERSELECTION";
    return kTRUE;
  }
  return kFALSE;
}

//_____________________________________________________________________________
void AliAnalysisMuMuGlobal::FillHistosForEvent(const char* eventSelection,
                                               const char* triggerClassName,
                                               const char* centrality)
{
  // Fill event-wise histograms
  
  if (!IsHistogramDisabled("BCX"))
  {
    Histo(eventSelection,triggerClassName,centrality,"BCX")->Fill(1.0*Event()->GetBunchCrossNumber());
  }
  if (!IsHistogramDisabled("Nevents"))
  {
    Histo(eventSelection,triggerClassName,centrality,"Nevents")->Fill(1.0);
  }
  
  if (!IsHistogramDisabled("EventsWOL0inputs"))
  {
    UInt_t l0 = AliAnalysisMuonUtility::GetL0TriggerInputs(Event());
    
    if ( l0 == 0 ) Histo(eventSelection,triggerClassName,centrality,"EventsWOL0inputs")->Fill(1.);
  }
  
  const AliVVertex* vertex = Event()->GetPrimaryVertex();
  const AliVVertex* vertexFromSPD = AliAnalysisMuonUtility::GetVertexSPD(Event());
  
  if ( vertex )
  {
    if ( vertex->GetNContributors() > 0 )
    {
      if (!IsHistogramDisabled("Xvertex"))
      {
        Histo(eventSelection,triggerClassName,centrality,"Xvertex")->Fill(vertex->GetX());
      }
      if (!IsHistogramDisabled("Yvertex"))
      {
        Histo(eventSelection,triggerClassName,centrality,"Yvertex")->Fill(vertex->GetY());
      }
      if (!IsHistogramDisabled("Zvertex"))
      {
        Histo(eventSelection,triggerClassName,centrality,"Zvertex")->Fill(vertex->GetZ());
      }
      if ( vertexFromSPD )
      {
        if (!IsHistogramDisabled("ZvertexMinusZvertexSPD"))
        {
          Histo(eventSelection,triggerClassName,centrality,"ZvertexMinusZvertexSPD")->Fill(vertexFromSPD->GetZ()-vertex->GetZ());
        }
        if (!IsHistogramDisabled("SPDXvertex"))
        {
          Histo(eventSelection,triggerClassName,centrality,"SPDXvertex")->Fill(vertexFromSPD->GetX());
        }
        if (!IsHistogramDisabled("SPDYvertex"))
        {
          Histo(eventSelection,triggerClassName,centrality,"SPDYvertex")->Fill(vertexFromSPD->GetY());
        }
        if (!IsHistogramDisabled("SPDZvertex"))
        {
          Histo(eventSelection,triggerClassName,centrality,"SPDZvertex")->Fill(vertexFromSPD->GetZ());
        }
        if (!IsHistogramDisabled("SPDZvertexNContributors"))
        {
          Histo(eventSelection,triggerClassName,centrality,"SPDZvertexNContributors")->Fill(vertexFromSPD->GetNContributors());
        }
        if (!IsHistogramDisabled("ZvertexMinusSPDZvertexNContributors"))
        {
          Histo(eventSelection,triggerClassName,centrality,"ZvertexMinusSPDZvertexNContributors")->Fill(vertexFromSPD->GetNContributors(),vertex->GetZ() - vertexFromSPD->GetZ());
        }
        if (!IsHistogramDisabled("SPDZvertexResolutionNContributors"))
        {
          Double_t cov[6]={0};
          static_cast<const AliAODVertex*>(vertexFromSPD)->GetCovarianceMatrix(cov);
          
          Histo(eventSelection,triggerClassName,centrality,"SPDZvertexResolutionNContributors")->Fill(vertexFromSPD->GetNContributors(),TMath::Sqrt(cov[5]));
        }

      }
      if (!IsHistogramDisabled("VertexType"))
      {
        Histo(eventSelection,triggerClassName,centrality,"VertexType")->Fill(vertex->GetTitle(),1.0);
      }
      if (!IsHistogramDisabled("VertexClass"))
      {
        Histo(eventSelection,triggerClassName,centrality,"VertexClass")->Fill(static_cast<const AliAODVertex*>(vertex)->GetType(),1.0);
      }
    }
    if (!IsHistogramDisabled("ZvertexNContributors"))
    {
      Histo(eventSelection,triggerClassName,centrality,"ZvertexNContributors")->Fill(vertex->GetNContributors());
    }
  }
  
  if ( AliAnalysisMuonUtility::IsAODEvent(Event()) )
  {
    const AliAODTZERO* tzero = static_cast<const AliAODEvent*>(Event())->GetTZEROData();
    
    if (tzero && !IsHistogramDisabled("T0Zvertex"))
    {
      Histo(eventSelection,triggerClassName,centrality,"T0Zvertex")->Fill(tzero->GetT0VertexRaw());
    }
  }
  else
  {
    const AliESDTZERO* tzero = static_cast<const AliESDEvent*>(Event())->GetESDTZERO();
    
    if (tzero && !IsHistogramDisabled("T0Zvertex"))
    {
      Histo(eventSelection,triggerClassName,centrality,"T0Zvertex")->Fill(tzero->GetT0zVertex());
    }
  }
  
  AliVVZERO* vzero = Event()->GetVZEROData();
  
  if (vzero)
  {
    Float_t v0a = vzero->GetV0ATime();
    Float_t v0c = vzero->GetV0CTime();
    
    Float_t x = v0a-v0c;
    Float_t y = v0a+v0c;
    
    if( vertexFromSPD )
    {
      Float_t multV0A = vzero->GetMTotV0A();
      Float_t multV0C = vzero->GetMTotV0C();
      Float_t multV0 = multV0A + multV0C; //Corrected V0 tot mult?
      
      Float_t v0aMult = AliESDUtils::GetCorrV0A(multV0A,vertexFromSPD->GetZ());
      Float_t v0cMult = AliESDUtils::GetCorrV0C(multV0C,vertexFromSPD->GetZ());
    
      if (!IsHistogramDisabled("V0AMult"))
      {
        Histo(eventSelection,triggerClassName,centrality,"V0AMult")->Fill(v0aMult);
      }
      if (!IsHistogramDisabled("V0CMult"))
      {
        Histo(eventSelection,triggerClassName,centrality,"V0CMult")->Fill(v0cMult);
      }
      if (!IsHistogramDisabled("V0Mult"))
      {
        Histo(eventSelection,triggerClassName,centrality,"V0Mult")->Fill(multV0);
      }
    }
    
    
    if (!IsHistogramDisabled("V02D"))
    {
      Histo(eventSelection,triggerClassName,centrality,"V02D")->Fill(x,y);
    }
    
    Bool_t background,pileup,satellite;
    
    Bool_t tzero = AliAnalysisMuonUtility::EAGetTZEROFlags(Event(),background,pileup,satellite);
    
    if (tzero)
    {
      if ( background )
      {
        if (!IsHistogramDisabled("V02DwT0BG"))
        {
          Histo(eventSelection,triggerClassName,centrality,"V02DwT0BG")->Fill(x,y);
        }
      }
      
      if ( pileup )
      {
        if (!IsHistogramDisabled("V02DwT0PU"))
        {
          Histo(eventSelection,triggerClassName,centrality,"V02DwT0PU")->Fill(x,y);
        }
        
        if ( !IsHistogramDisabled("PileUpEstimators") )
        {
          Histo(eventSelection,triggerClassName,centrality,"PileUpEstimators")->Fill("TZERO",1.0);
        }
      }
      
      if ( satellite )
      {
        if (!IsHistogramDisabled("V02DwT0SAT"))
        {
          Histo(eventSelection,triggerClassName,centrality,"V02DwT0SAT")->Fill(x,y);
        }
      }
      
      if ( !background && !pileup && !satellite )
      {
        if (!IsHistogramDisabled("V02DwT0BB"))
        {
          Histo(eventSelection,triggerClassName,centrality,"V02DwT0BB")->Fill(x,y);
        }
      }
    }
  }
  
  //  /* FIXME : how to properly get multiplicity from AOD and ESD consistently ?
  //   is is doable at all ?
  
  TH1* hpileup = Histo(eventSelection,triggerClassName,centrality,"PileUpEstimators");
  
  
  //  virtual Bool_t  IsPileupFromSPD(Int_t minContributors=3, Double_t minZdist=0.8, Double_t nSigmaZdist=3., Double_t nSigmaDiamXY=2., Double_t nSigmaDiamZ=5.) const;
  
  const Double_t nSigmaZdist=3.0;
  const Double_t nSigmaDiamXY=2.0;
  const Double_t nSigmaDiamZ=5.0;
  
  for ( Int_t minContributors = 3; minContributors <= 6; ++minContributors )
  {
    for ( double minZdist = 0.6; minZdist <= 0.8; minZdist += 0.2 )
    {
      if ( Event()->IsPileupFromSPD(minContributors,minZdist,nSigmaZdist,nSigmaDiamXY,nSigmaDiamZ) )
      {
        hpileup->Fill(Form("SPD:n%dd%d",minContributors,static_cast<Int_t>(10*minZdist)),1);
      }
    }
  }
  
  
}

//_____________________________________________________________________________
void AliAnalysisMuMuGlobal::FillHistosForMCEvent(const char* eventSelection,
                                                 const char* triggerClassName,
                                                 const char* centrality)
{
  // Fill MCEvent-wise histograms
  
  Double_t Zvertex = AliAnalysisMuonUtility::GetMCVertexZ(Event(),MCEvent());
  
  if (!IsHistogramDisabled("Zvertex"))
  {
    MCHisto(eventSelection,triggerClassName,centrality,"Zvertex")->Fill(Zvertex);
  }

  if (!IsHistogramDisabled("RecZvertexVsMCZvertex"))
  {
    const AliVVertex* vertex = Event()->GetPrimaryVertex();
    if  (vertex && vertex->GetNContributors()>0)
    {
      MCHisto(eventSelection,triggerClassName,centrality,"RecZvertexVsMCZvertex")->Fill(Zvertex,vertex->GetZ());
    }
    
    const AliVVertex* vertexFromSPD = AliAnalysisMuonUtility::GetVertexSPD(Event());
    if  (vertexFromSPD && vertexFromSPD->GetNContributors()>0)
    {
      MCHisto(eventSelection,triggerClassName,centrality,"RecSPDZvertexVsMCZvertex")->Fill(Zvertex,vertexFromSPD->GetZ());
      MCHisto(eventSelection,triggerClassName,centrality,"NofEvWSPDZvertexVsMCZvertex")->Fill(Zvertex,1);
    }
    else MCHisto(eventSelection,triggerClassName,centrality,"NofEvWOSPDZvertexVsMCZvertex")->Fill(Zvertex,1);
  }
  
}

//_____________________________________________________________________________
void AliAnalysisMuMuGlobal::DefineHistogramCollection(const char* eventSelection,
                                                      const char* triggerClassName,
                                                      const char* centrality)
{
  /// Actually create the histograms for phyics/triggerClassName
  
//  AliInfo(Form("%s %s %s %d",eventSelection,triggerClassName,centrality,hasMC));
  
  if (HistogramCollection()->Histo(Form("/%s/%s/%s/Zvertex",eventSelection,triggerClassName,centrality)))
  {
    return;
  }

  Double_t xmin = -40;
  Double_t xmax = +40;
  Int_t nbins = GetNbins(xmin,xmax,0.5);
  
  CreateEventHistos(kHistoForData | kHistoForMCInput,eventSelection,triggerClassName,centrality,"Zvertex","z vertex",nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"SPDZvertex","SPD z vertex",nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"T0Zvertex","T0 zvertex",nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForMCInput,eventSelection,triggerClassName,centrality,
                    "RecZvertexVsMCZvertex","Reconstructed vertex (w/ Ncontrib>=1) vs MC vertex",nbins,xmin,xmax,nbins,xmin,xmax);
  CreateEventHistos(kHistoForMCInput,eventSelection,triggerClassName,centrality,
                    "RecSPDZvertexVsMCZvertex","Reconstructed SPD vertex (w/ Ncontrib>=1) vs MC vertex",nbins,xmin,xmax,nbins,xmin,xmax);
  CreateEventHistos(kHistoForMCInput,eventSelection,triggerClassName,centrality,
                    "NofEvWSPDZvertexVsMCZvertex","Number of events with SPD vertex (w/ Ncontrib>=1) vs MC vertex",nbins,xmin,xmax);
  CreateEventHistos(kHistoForMCInput,eventSelection,triggerClassName,centrality,
                    "NofEvWOSPDZvertexVsMCZvertex","Number of events with SPD vertex (w/ Ncontrib>=1) vs MC vertex",nbins,xmin,xmax);
  

  xmin = -5;
  xmax = 5;
  nbins = GetNbins(xmin,xmax,0.01);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"ZvertexMinusZvertexSPD","Primary vertex z - SPD vertex",nbins,xmin,xmax);
  
  xmin = -1;
  xmax = 50;
  nbins = GetNbins(xmin,xmax,1);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"ZvertexNContributors","z vertex vs nof contributors",nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"SPDZvertexNContributors","SPD z vertex vs nof contributors",nbins,xmin,xmax);
  
  Double_t ymin = -10;
  Double_t ymax = 10;
  Int_t nbinsy = GetNbins(ymin,ymax,0.01);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"ZvertexMinusSPDZvertexNContributors","Primary vertex z - SPD vertex vs nof contributors",nbins,xmin,xmax,nbinsy,ymin,ymax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"SPDZvertexResolutionNContributors","SPD vertex resolution vs nof contributors",nbins,xmin,xmax,nbinsy,ymin,ymax);
  
  xmin = -2;
  xmax = 2;
  nbins = GetNbins(xmin,xmax,0.01);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"Xvertex","x vertex",nbins,xmin,xmax);
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"Yvertex","y vertex",nbins,xmin,xmax);
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"SPDXvertex","SPD x vertex",nbins,xmin,xmax);
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"SPDYvertex","SPD y vertex",nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"Nevents","number of events",2,-0.5,1.5);
   CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"EventsWOL0inputs","number of events w/o L0 inputs",2,-0.5,1.5);
  
  CreateEventHistos(kHistoForMCInput | kHistoForData,eventSelection,triggerClassName,centrality,
                    "VertexType","Type of vertexer used",10,0,10);
  
  CreateEventHistos(kHistoForMCInput | kHistoForData,eventSelection,triggerClassName,centrality,
                    "VertexClass","Type of vertex used",10,0,10);


  xmin = 0;
  xmax = 3564;
  nbins = GetNbins(xmin,xmax,1.0);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"BCX","bunch-crossing ids",nbins,xmin-0.5,xmax-0.5);
  
  
  xmin = -30;
  xmax = +30;
  nbins = GetNbins(xmin,xmax,0.1);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V02D","V0C+V0A versus V0A-V0C;Time V0A - V0C (ns);Time V0A+V0C (ns)",nbins,xmin,xmax,nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V02DwT0BB","V0C+V0A versus V0A-V0C with T0 BB;Time V0A - V0C (ns);Time V0A+V0C (ns)",nbins,xmin,xmax,nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V02DwT0BG","V0C+V0A versus V0A-V0C with T0 background flag on;Time V0A - V0C (ns);Time V0A+V0C (ns)",nbins,xmin,xmax,nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V02DwT0PU","V0C+V0A versus V0A-V0C with T0 pile up flag on;Time V0A - V0C (ns);Time V0A+V0C (ns)",nbins,xmin,xmax,nbins,xmin,xmax);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V02DwT0SAT","V0C+V0A versus V0A-V0C with T0 satellite flag on;Time V0A - V0C (ns);Time V0A+V0C (ns)",nbins,xmin,xmax,nbins,xmin,xmax);
  
  xmin = 0;
  xmax = 600;
  nbins = GetNbins(xmin,xmax,1);
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V0AMult","V0A multiplicity;V0A mult;N_{events}",nbins,xmin,xmax);
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V0CMult","V0C multiplicity;V0C mult;N_{events}",nbins,xmin,xmax);
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"V0Mult","V0 multiplicity;V0 mult;N_{events}",nbins,xmin,xmax);
  
  if ( !IsHistogramDisabled("Centrality") )
  {
    TObjArray* centralities = Binning()->CreateBinObjArray("centrality");
    TIter next(centralities);
    AliAnalysisMuMuBinning::Range* r;
    std::set<std::string> estimators;
    
    while ( ( r = static_cast<AliAnalysisMuMuBinning::Range*>(next())) )
    {
      estimators.insert(r->Quantity().Data());
    }
    
    std::set<std::string>::const_iterator it;
    
    for ( it = estimators.begin(); it != estimators.end(); ++it )
    {
      TH1* h = new TH1F("Centrality","Centrality",12,-10,110);
      HistogramCollection()->Adopt(Form("/%s/%s/%s",eventSelection,triggerClassName,it->c_str()),h);
    }
    
    delete centralities;
  }
  
  CreateEventHistos(kHistoForData,eventSelection,triggerClassName,centrality,"PileUpEstimators","pile up estimators",10,0,10);
}

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