ROOT logo

/**************************************************************************
 *  Authors : Iouri Belikov, Antonin Maire
 * 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.                  *
 **************************************************************************/

//-----------------------------------------------------------------
//                 AliAnalysisTaskGlobalQA class
// This task is for running the GlobalQA over already existing ESDs
//          Origin:  I.Belikov, Iouri.Belikov@cern.ch, June 2009
//-----------------------------------------------------------------

#include <TPDGCode.h>

#include "TChain.h"
#include "TTree.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TCanvas.h"

#include "AliAnalysisManager.h"

#include "AliESDEvent.h"
#include "AliESDv0.h"
#include "AliESDInputHandler.h"
#include "AliESDVZERO.h"
#include "AliMultiplicity.h" 
#include "AliPID.h" 


#include "AliAnalysisTaskGlobalQA.h"

//
// Run the GlobalQA analysis over already existing ESDs
// Origin: Iouri.Belikov@cern.ch
//

ClassImp(AliAnalysisTaskGlobalQA)

//________________________________________________________________________
AliAnalysisTaskGlobalQA::AliAnalysisTaskGlobalQA() : 
 AliAnalysisTaskSE("GlobalQA"), 
 fArrayQA(0)
{
  // Default Constructor

  DefineOutput(1, TObjArray::Class());
}

//________________________________________________________________________
void AliAnalysisTaskGlobalQA::UserCreateOutputObjects()
{
  // Create the histograms
  // Called once

  fArrayQA = new TObjArray(kLast);


  {// Event related QA
    const Char_t *name[]={
      "hGlobalPrimaryVertex"
    };
    const Char_t *title[]={
      "Z-distribution of the primary vertex"
    };
    Add2ESDsList(new TH1F(name[0],title[0],100,-20.,20.),kEvt0);
  }
 
  {// Cluster related QA
    const Char_t *name[]={
      "hGlobalFractionAssignedClustersITS",
      "hGlobalFractionAssignedClustersTPC",
      "hGlobalFractionAssignedClustersTRD",
      "hGlobalClustersPerITSModule"
     };
  const Char_t *title[]={
    "Fraction of the assigned clusters in ITS",
    "Fraction of the assigned clusters in TPC",
    "Fraction of the assigned clusters in TRD",
    "Number of clusters per an ITS module"
  };
  Add2ESDsList(new TH1F(name[0],title[0],100,0.,2.),kClr0);
  Add2ESDsList(new TH1F(name[1],title[1],100,0.,2.),kClr1);
  Add2ESDsList(new TH1F(name[2],title[2],100,0.,2.),kClr2);
  Add2ESDsList(new TH1F(name[3],title[3],2201,-0.5,2200.5),kClr3);
  }

  {// Track related QA
    const Char_t *name[]={
      "hGlobalTrackAzimuthe",                               // kTrk0
      "hGlobalTrackEta",                                    // kTrk1
      "hGlobalTPCTrackpT",                                  // kTrk2
      "hGlobalTPCITSMatchedpT",                             // kTrk3
      "hGlobalTPCTOFMatchedpT",                             // kTrk4
      "hGlobalTPCITSMatchingProbability",                   // kTrk5
      "hGlobalTPCTOFMatchingProbability",                   // kTrk6
      "hGlobalTPCsideAposDCA",                              // kTrk7
      "hGlobalTPCsideAnegDCA",                              // kTrk8
      "hGlobalTPCsideCposDCA",                              // kTrk9
      "hGlobalTPCsideCnegDCA"                               // kTrk10
  };
  const Char_t *title[]={
    "Track azimuthal distribution (rad)",                   // kTrk0
    "Track pseudo-rapidity distribution",                   // kTrk1
    "TPC: track momentum distribution (GeV)",               // kTrk2
    "TPC-ITS matched: track momentum distribution (GeV)",   // kTrk3
    "TPC-TOF matched: track momentum distribution (GeV)",   // kTrk4
    "TPC-ITS track-matching probability",                   // kTrk5
    "TPC-TOF track-matching probability",                   // kTrk6
    "TPC side A: DCA for the positive tracks (mm)",         // kTrk7
    "TPC side A: DCA for the negative tracks (mm)",         // kTrk8
    "TPC side C: DCA for the positive tracks (mm)",         // kTrk9
    "TPC side C: DCA for the negative tracks (mm)"          // kTrk10
  };
  Add2ESDsList(new TH1F(name[0],title[0],100, 0.,TMath::TwoPi()),kTrk0);
  Add2ESDsList(new TH1F(name[1],title[1],100,-2.00,2.00),kTrk1);
  Add2ESDsList(new TH1F(name[2],title[2],50,  0.20,5.00),kTrk2);
  Add2ESDsList(new TH1F(name[3],title[3],50,  0.20,5.00),kTrk3);
  Add2ESDsList(new TH1F(name[4],title[4],50,  0.20,5.00),kTrk4);
  Add2ESDsList(new TH1F(name[5],title[5],50,  0.20,5.00),kTrk5);
  Add2ESDsList(new TH1F(name[6],title[6],50,  0.20,5.00),kTrk6);
  Add2ESDsList(new TH1F(name[7],title[7],50, -25.0,25.0),kTrk7);
  Add2ESDsList(new TH1F(name[8],title[8],50, -25.0,25.0),kTrk8);
  Add2ESDsList(new TH1F(name[9],title[9],50, -25.0,25.0),kTrk9);
  Add2ESDsList(new TH1F(name[10],title[10],50, -25.0,25.0),kTrk10);
  }

  {// V0 related QA
    const Char_t *name[]={
      "hGlobalPromptK0sMass",
      "hGlobalOfflineK0sMass",
      "hGlobalPromptLambda0Lambda0BarMass",
      "hGlobalOfflineLambda0Lambda0BarMass"
    };
  const Char_t *title[]={
    "On-the-fly K0s mass (GeV)",
    "Offline K0s mass (GeV)",
    "On-the-fly Lambda0 + Lambda0Bar mass (GeV)",
    "Offline Lambda0 + Lambda0Bar mass (GeV)"
  };
  Add2ESDsList(new TH1F(name[0],title[0],50,  0.4477,0.5477),kK0on);
  Add2ESDsList(new TH1F(name[1],title[1],50,  0.4477,0.5477),kK0off);
  Add2ESDsList(new TH1F(name[2],title[2],50,  1.0657,1.1657),kL0on);
  Add2ESDsList(new TH1F(name[3],title[3],50,  1.0657,1.1657),kL0off);
  }

  {// PID related QA
  const Char_t *name[]={
    "hGlobalITSdEdx",
    "hGlobalTPCdEdx",
    "hGlobalTOFTrackingvsMeasured",
    "hGlobalTPCdEdxvsMomentum"
  };
  const Char_t *title[]={
    "ITS: dEdx (A.U.) for particles with momentum 0.4 - 0.5 (GeV)",
    "TPC: dEdx (A.U.) for particles with momentum 0.4 - 0.5 (GeV)",
    "TOF: tracking - measured (ps)",
    "TPC: dEdx (A.U.) vs momentum (GeV)"
  };
  Add2ESDsList(new TH1F(name[0],title[0],50,0.00,200.),kPid0);
  Add2ESDsList(new TH1F(name[1],title[1],50,0.00,100.),kPid1);
  Add2ESDsList(new TH1F(name[2],title[2],50,-3500.,3500.),kPid2);
  Add2ESDsList(new TH2F(name[3],title[3],1500,0.05,15.,700,0.,700.),kPid3);
  }

  {// Multiplicity related QA
    const Char_t *name[]={
      "hGlobalV0AvsITS",
      "hGlobalV0CvsITS"
    };
    const Char_t *title[]={
      "Multiplicity: V0A vs ITS",
      "Multiplicity: V0C vs ITS"
    };
    TH2F *h0=new TH2F(name[0],title[0],41,-0.5,40.5, 33,-0.5,32.5);
    Add2ESDsList(h0,kMlt0);
    TH2F *h1=new TH2F(name[1],title[1],41,-0.5,40.5, 33,-0.5,32.5);
    Add2ESDsList(h1,kMlt1);
  }

}

//________________________________________________________________________
void AliAnalysisTaskGlobalQA::UserExec(Option_t *) 
{
  // Main loop
  // Called for each event
  
  const AliESDEvent *esd=(const AliESDEvent *)InputEvent();

  if (!esd) {
    Printf("ERROR: ESD is not available");
    return;
  }

  // Event related QA
  const AliESDVertex *vtx=esd->GetPrimaryVertex();
  if (!vtx->GetStatus()) return;

  Double_t xv=vtx->GetX();
  Double_t yv=vtx->GetY();
  Double_t zv=vtx->GetZ();
  GetESDsData(kEvt0)->Fill(zv);


  for (Int_t iTracks = 0; iTracks < esd->GetNumberOfTracks(); iTracks++) {
      AliESDtrack* track = esd->GetTrack(iTracks);
      if (!track) {
         Printf("ERROR: Could not receive track %d", iTracks);
         continue;
      }


    // Cluster related QA
    if (track->IsOn(AliESDtrack::kITSrefit)) {
      Int_t n=track->GetITSclusters(0);
      GetESDsData(kClr0)->Fill(Float_t(n)/6.); //6 is the number of ITS layers
    }

    for (Int_t i=0; i<6; i++) {
      Int_t idet, sts;
      Float_t xloc,zloc;
      if (!track->GetITSModuleIndexInfo(i,idet,sts,xloc,zloc)) continue;
      if (i>=2) idet+=240;
      if (i>=4) idet+=260;
      if ((sts==1)||(sts==2)||(sts==4)) GetESDsData(kClr3)->Fill(idet);
    }

    if (track->IsOn(AliESDtrack::kTPCrefit)) {
      Int_t n =track->GetTPCNcls();
      Int_t nf=track->GetTPCNclsF();      // number of crossed TPC pad rows
      if (nf>0) {
        Double_t val = n*1.0/nf; 
        GetESDsData(kClr1)->Fill(val); 
      }
    }

    if (track->IsOn(AliESDtrack::kTRDrefit)) {
      Int_t n=track->GetTRDclusters(0);
      GetESDsData(kClr2)->Fill(Float_t(n)/(6*24));//(6*24) is the number of TRD time bins
    }

    Double_t p=track->GetP();

    // Track related QA
    if (track->IsOn(AliESDtrack::kTPCrefit)) {
      Float_t dz[2]; 
      track->GetDZ(xv,yv,zv,esd->GetMagneticField(),dz); 
      if ((TMath::Abs(dz[0])<3.) && (TMath::Abs(dz[1])<3.)) { // beam pipe
        Double_t phi=track->Phi();
	GetESDsData(kTrk0)->Fill(phi);
	Double_t y=track->Eta();
	GetESDsData(kTrk1)->Fill(y);

        if (TMath::Abs(y)<0.9) {
	   GetESDsData(kTrk2)->Fill(p);
	   if (track->IsOn(AliESDtrack::kITSrefit)) GetESDsData(kTrk3)->Fill(p);
	  //if (track->IsOn(AliESDtrack::kTOFout)) GetESDsData(kTrk4)->Fill(p);
	   if (track->GetTOFsignal()>0) GetESDsData(kTrk4)->Fill(p);
	}
      }
    }
    const AliExternalTrackParam *tpcTrack=track->GetTPCInnerParam();
    const AliExternalTrackParam *innTrack=track->GetInnerParam();
    if (tpcTrack)
    if (innTrack) {
       Float_t dz[2];
       tpcTrack->GetDZ(xv,yv,zv,esd->GetMagneticField(),dz);
       dz[0]*=10.; // in mm
       if (innTrack->GetZ()  > 0)
       if (innTrack->GetTgl()> 0) { // TPC side A
          if (tpcTrack->GetSign() > 0) GetESDsData(kTrk7)->Fill(dz[0]);
          else                         GetESDsData(kTrk8)->Fill(dz[0]);
       }
       if (innTrack->GetZ()  < 0)
       if (innTrack->GetTgl()< 0) { // TPC side C
          if (tpcTrack->GetSign() > 0) GetESDsData(kTrk9)->Fill(dz[0]);
          else                         GetESDsData(kTrk10)->Fill(dz[0]);
       }
    }

    // PID related QA
    if ((p>0.4) && (p<0.5)) {
      if (track->IsOn(AliESDtrack::kITSpid)) {
	Double_t dedx=track->GetITSsignal();
        GetESDsData(kPid0)->Fill(dedx);
      }
      if (track->IsOn(AliESDtrack::kTPCpid)) {
	Double_t dedx=track->GetTPCsignal();
        GetESDsData(kPid1)->Fill(dedx);
      }
    }
    if (p>1.0) {
      if (track->IsOn(AliESDtrack::kITSrefit))
      if (track->IsOn(AliESDtrack::kTPCrefit))
      if (track->IsOn(AliESDtrack::kTOFout)) {
         Float_t dz[2];
         track->GetDZ(xv,yv,zv,esd->GetMagneticField(),dz);
         if (dz[1]<3.) {
	   Double_t times[AliPID::kSPECIESC];
	   track->GetIntegratedTimes(times,AliPID::kSPECIESC);
	   Double_t tof=track->GetTOFsignal()/*-847055 -1771207*/;
	   GetESDsData(kPid2)->Fill(times[2]-tof);
	 }
      }
    }
    const AliExternalTrackParam *par=track->GetInnerParam();
    if (par) {
      Double_t pp=par->GetP();
      Double_t dedx=track->GetTPCsignal();
      TH2F *h = dynamic_cast<TH2F*>(GetESDsData(kPid3));
      if (h) h->Fill(pp,dedx);
    }
  }

  // Multiplicity related QA
  AliESDVZERO     *mltV0 =esd->GetVZEROData();
  const AliMultiplicity *mltITS=esd->GetMultiplicity();
  if (mltV0)
    if (mltITS) {
       Short_t nv0a=mltV0->GetNbPMV0A();
       Short_t nv0c=mltV0->GetNbPMV0C();
       Int_t   nits=mltITS->GetNumberOfTracklets();
       TH2F *h0=dynamic_cast<TH2F*>(GetESDsData(kMlt0));
       if (h0) h0->Fill(nits,nv0a);
       TH2F *h1=dynamic_cast<TH2F*>(GetESDsData(kMlt1));
       if (h1) h1->Fill(nits,nv0c);
    }

  // V0 related QA
  Int_t nV0=esd->GetNumberOfV0s();
  for (Int_t i=0; i<nV0; i++) {
    Double_t mass;
    AliESDv0 v0(*esd->GetV0(i));

    Int_t nidx=TMath::Abs(v0.GetNindex());
    AliESDtrack *ntrack1=esd->GetTrack(nidx);
    if (!ntrack1->IsOn(AliESDtrack::kTPCrefit)) continue;

    Int_t pidx=TMath::Abs(v0.GetPindex());
    AliESDtrack *ptrack1=esd->GetTrack(pidx);
    if (!ptrack1->IsOn(AliESDtrack::kTPCrefit)) continue;

    v0.ChangeMassHypothesis(kK0Short);
    mass=v0.GetEffMass();
    if (v0.GetOnFlyStatus())
       GetESDsData(kK0on)->Fill(mass);
    else
       GetESDsData(kK0off)->Fill(mass);

    v0.ChangeMassHypothesis(kLambda0);
    mass=v0.GetEffMass();
    if (v0.GetOnFlyStatus())
       GetESDsData(kL0on)->Fill(mass);
    else
       GetESDsData(kL0off)->Fill(mass);

    v0.ChangeMassHypothesis(kLambda0Bar);
    mass=v0.GetEffMass();
    if (v0.GetOnFlyStatus())
       GetESDsData(kL0on)->Fill(mass);
    else
       GetESDsData(kL0off)->Fill(mass);
  }

  // Post output data.
  PostData(1, fArrayQA);
}      

//________________________________________________________________________
void AliAnalysisTaskGlobalQA::Terminate(Option_t *) 
{
  // Draw the results on the screen
  // Called once at the end of the query

  fArrayQA=(TObjArray*)GetOutputData(1);

  TH1 *tpc=GetESDsData(kTrk2); tpc->Sumw2();
  TH1 *its=GetESDsData(kTrk3); its->Sumw2();
  TH1 *tof=GetESDsData(kTrk4); tof->Sumw2();
  GetESDsData(kTrk5)->Divide(its,tpc,1,1.,"b");
  GetESDsData(kTrk6)->Divide(tof,tpc,1,1.,"b");

  TH1 *hTPCdEdxMIP = GetESDsData(kPid1);
  if (!hTPCdEdxMIP) {
    Printf("ERROR: hTPCdEdxMIP not available");
    return;
  }

  TH2 *hTPCdEdxVsP = dynamic_cast<TH2*>(GetESDsData(kPid3));
  if (!hTPCdEdxVsP) {
    Printf("ERROR: hTPCdEdxVsP not available");
    return;
  }

  TCanvas *c2=new TCanvas("c2","",320,32,530,590);

  TPad *p6=new TPad("p6","",0.,0.,1.,.5); p6->Draw(); p6->cd(); 
  p6->SetFillColor(42); p6->SetFrameFillColor(10);
  hTPCdEdxMIP->SetFillColor(2); hTPCdEdxMIP->SetFillStyle(3005);
  if (hTPCdEdxMIP->GetEntries()<333) 
      hTPCdEdxMIP->DrawCopy("E"); 
  else 
      hTPCdEdxMIP->Fit("gaus"); 
  c2->cd();

  TPad *p7=new TPad("p7","",0.,0.5,1.,1.); p7->Draw(); p7->cd(); p7->SetLogx();
  p7->SetFillColor(42); p7->SetFrameFillColor(10);
  hTPCdEdxVsP->DrawCopy();

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