ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, 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$ */

#include "AliAnalysisManager.h"
#include "AliAnalysisTaskSE.h"
#include "AliAnalysisTaskPHOSPbPbQA.h"
#include "AliCaloPhoton.h"
#include "AliPHOSGeometry.h"
#include "AliESDEvent.h"
#include "AliESDCaloCells.h"
#include "AliCentrality.h"
#include "AliLog.h"
#include "TObjArray.h"
#include "TList.h"
#include "TH1.h"
#include "TH2.h"

// Stripped-down version of Dmitri Peressounko' AliAnalysisTaskPi0Flow class
// used for the fast QA of PbPb data.
//...
// Author: Boris Polishchuk 
// Date   : 19.10.2011

ClassImp(AliAnalysisTaskPHOSPbPbQA)

//________________________________________________________________________
AliAnalysisTaskPHOSPbPbQA::AliAnalysisTaskPHOSPbPbQA() : AliAnalysisTaskSE(),
  fOutputContainer(0),fPHOSEvent(0),fCentrality(0),fCenBin(0),
  fPHOSGeo(0),fEventCounter(0)
{
  //Default constructor
  
  for(Int_t i=0;i<1;i++){
    for(Int_t j=0;j<2;j++)
      fPHOSEvents[i][j]=0 ;
  }
  
  // Initialize the PHOS geometry 
  fPHOSGeo = AliPHOSGeometry::GetInstance("IHEP") ;
  
}

//________________________________________________________________________
AliAnalysisTaskPHOSPbPbQA::AliAnalysisTaskPHOSPbPbQA(const char *name) 
: AliAnalysisTaskSE(name),
  fOutputContainer(0),
  fPHOSEvent(0),
  fCentrality(0),fCenBin(0),
  fPHOSGeo(0),
  fEventCounter(0)
{
  // Constructor
  for(Int_t i=0;i<1;i++){
    for(Int_t j=0;j<2;j++)
	fPHOSEvents[i][j]=0 ;
  }
  
  // Output slots #0 write into a TH1 container
  DefineOutput(1,TList::Class());

  // Initialize the PHOS geometry
  fPHOSGeo = AliPHOSGeometry::GetInstance("IHEP") ;

}

//________________________________________________________________________
void AliAnalysisTaskPHOSPbPbQA::UserCreateOutputObjects()
{
  // Create histograms
  // Called once
  
  // ESD histograms
  if(fOutputContainer != NULL){
    delete fOutputContainer;
  }

  fOutputContainer = new TList();
  fOutputContainer->SetOwner(kTRUE);
  

  fOutputContainer->Add(new TH2F("hCenPHOS","Centrality vs PHOSclusters", 100,0.,100.,200,0.,200.)) ;
  fOutputContainer->Add(new TH2F("hCenPHOSCells","Centrality vs PHOS cells", 100,0.,100.,100,0.,1000.)) ;
  fOutputContainer->Add(new TH2F("hCenTrack","Centrality vs tracks", 100,0.,100.,100,0.,15000.)) ;  
  
  //pi0 spectrum
  Int_t nPtPhot = 300 ;
  Double_t ptPhotMax = 30 ;
  Int_t nM       = 500;
  Double_t mMin  = 0.0;
  Double_t mMax  = 1.0;
  char key[55] ;

  for(Int_t cent=0; cent<2; cent++){
    
    snprintf(key,55,"hPi0All_cen%d",cent) ;
    fOutputContainer->Add(new TH2F(key,"All clusters",nM,mMin,mMax,nPtPhot,0.,ptPhotMax));
    
    snprintf(key,55,"hMiPi0All_cen%d",cent) ;
    fOutputContainer->Add(new TH2F(key,"All clusters",nM,mMin,mMax,nPtPhot,0.,ptPhotMax));
  }

  //per module
  for(Int_t cent=0; cent<2; cent++){
    for(Int_t sm=1; sm<4; sm++) {
      
      snprintf(key,55,"hPi0AllSM%d_cen%d",sm,cent) ;
      fOutputContainer->Add(new TH2F(key,"All clusters",nM,mMin,mMax,nPtPhot,0.,ptPhotMax));
      
      snprintf(key,55,"hMiPi0AllSM%d_cen%d",sm,cent) ;
      fOutputContainer->Add(new TH2F(key,"All clusters",nM,mMin,mMax,nPtPhot,0.,ptPhotMax));
    }
  }
    
  PostData(1, fOutputContainer);
  
}

//________________________________________________________________________
void AliAnalysisTaskPHOSPbPbQA::UserExec(Option_t *) 
{
  // Main loop, called for each event
  // Analyze ESD/AOD  
  
  AliESDEvent *event = dynamic_cast<AliESDEvent*>(InputEvent());

  if (!event) {
    Printf("ERROR: Could not retrieve event");
    PostData(1, fOutputContainer);
    return;
  }
  
  // Get PHOS rotation matrices from ESD and set them to the PHOS geometry
  char key[55] ;  
  
  if(fEventCounter == 0) {
    for(Int_t mod=0; mod<5; mod++) {
      if(!event->GetPHOSMatrix(mod)) continue;
      fPHOSGeo->SetMisalMatrix(event->GetPHOSMatrix(mod),mod) ;
    }
    fEventCounter++ ;
  }
   
  Int_t zvtx=0 ;

  AliCentrality *centrality = event->GetCentrality(); 
  fCentrality=centrality->GetCentralityPercentile("V0M");

  if( fCentrality < 0. ){
    PostData(1, fOutputContainer);
    return;
  }

  if(fCentrality < 20.) fCenBin = 0;
  else fCenBin = 1;
  
  printf("centrality %.3f [%d]\n",fCentrality,fCenBin);
  
  if(!fPHOSEvents[zvtx][fCenBin]) 
    fPHOSEvents[zvtx][fCenBin]=new TList() ;
 
  TList * prevPHOS = fPHOSEvents[zvtx][fCenBin] ;
  
  if(fPHOSEvent)
    fPHOSEvent->Clear() ;
  else
    fPHOSEvent = new TClonesArray("AliCaloPhoton",200) ;
  
  Int_t multClust = event->GetNumberOfCaloClusters();
  AliESDCaloCells * cells = event->GetPHOSCells() ;

  FillHistogram("hCenPHOSCells",fCentrality,cells->GetNumberOfCells()) ;
  FillHistogram("hCenTrack",fCentrality,event->GetNumberOfTracks()) ;
  
  Int_t inPHOS = 0;
  Double_t vtx0[3] = {0,0,0}; // vertex

  for (Int_t i=0; i<multClust; i++) {

    AliESDCaloCluster *clu = event->GetCaloCluster(i);

    if ( !clu->IsPHOS() || clu->E()<0.3) continue;
    if(clu->GetNCells()<3) continue;
    
    Float_t  position[3];
    clu->GetPosition(position);
    TVector3 global(position) ;
    Int_t relId[4] ;
    fPHOSGeo->GlobalPos2RelId(global,relId) ;
    Int_t mod  = relId[0] ;
    Int_t cellX = relId[2];
    Int_t cellZ = relId[3] ;   
    
    TLorentzVector pv1 ;
    clu->GetMomentum(pv1 ,vtx0);
    
    if(inPHOS>=fPHOSEvent->GetSize()){
      fPHOSEvent->Expand(inPHOS+50) ;
    }

    new((*fPHOSEvent)[inPHOS]) AliCaloPhoton(pv1.X(),pv1.Py(),pv1.Z(),pv1.E()) ;
    AliCaloPhoton * ph = (AliCaloPhoton*)fPHOSEvent->At(inPHOS) ;
    ph->SetModule(mod) ;
    ph->SetMomV2(&pv1) ;
    ph->SetNCells(clu->GetNCells());
  
    ph->SetEMCx(float(cellX)) ;
    ph->SetEMCz(float(cellZ)) ;
    
    inPHOS++ ;
  }
  
  FillHistogram("hCenPHOS",fCentrality,inPHOS) ;
  
  //pi0
  for (Int_t i1=0; i1<inPHOS-1; i1++) {
    AliCaloPhoton * ph1=(AliCaloPhoton*)fPHOSEvent->At(i1) ;
    Int_t sm1 = ph1->Module();

    for (Int_t i2=i1+1; i2<inPHOS; i2++) {
      AliCaloPhoton * ph2=(AliCaloPhoton*)fPHOSEvent->At(i2) ;

      Int_t sm2 = ph2->Module();      
      TLorentzVector p12  = *ph1  + *ph2;
      
      snprintf(key,55,"hPi0All_cen%d",fCenBin) ;
      FillHistogram(key,p12.M() ,p12.Pt()) ; 

      if(sm1==sm2) {
	snprintf(key,55,"hPi0AllSM%d_cen%d",sm1,fCenBin) ;
	 FillHistogram(key,p12.M() ,p12.Pt()) ; 
      }
      
    } // end of loop i2
  } // end of loop i1
  
  //now mixed
  for (Int_t i1=0; i1<inPHOS; i1++) {
    AliCaloPhoton * ph1=(AliCaloPhoton*)fPHOSEvent->At(i1) ;
    Int_t sm1 = ph1->Module();

    for(Int_t ev=0; ev<prevPHOS->GetSize();ev++){
      TClonesArray * mixPHOS = static_cast<TClonesArray*>(prevPHOS->At(ev)) ;

      for(Int_t i2=0; i2<mixPHOS->GetEntriesFast();i2++){
	AliCaloPhoton * ph2=(AliCaloPhoton*)mixPHOS->At(i2) ;

	Int_t sm2 = ph2->Module();
	TLorentzVector p12  = *ph1  + *ph2;
	
	snprintf(key,55,"hMiPi0All_cen%d",fCenBin) ;
	FillHistogram(key,p12.M() ,p12.Pt()) ;

	if(sm1==sm2) {
	  snprintf(key,55,"hMiPi0AllSM%d_cen%d",sm1,fCenBin) ;
	  FillHistogram(key,p12.M() ,p12.Pt()) ; 
	}

      } // end of loop i2
    }
  } // end of loop i1
  
  
  //Now we either add current events to stack or remove
  //If no photons in current event - no need to add it to mixed
  if(fPHOSEvent->GetEntriesFast()>0){
    prevPHOS->AddFirst(fPHOSEvent) ;
    fPHOSEvent=0;
    if(prevPHOS->GetSize()>100){//Remove redundant events
      TClonesArray * tmp = static_cast<TClonesArray*>(prevPHOS->Last()) ;
      prevPHOS->RemoveLast() ;
      delete tmp ;
    }
  }
  // Post output data.
  PostData(1, fOutputContainer);
  fEventCounter++;
}

//_____________________________________________________________________________
void AliAnalysisTaskPHOSPbPbQA::FillHistogram(const char * key,Double_t x)const{
  //FillHistogram
  TH1I * tmpI = dynamic_cast<TH1I*>(fOutputContainer->FindObject(key)) ;
  if(tmpI){
    tmpI->Fill(x) ;
    return ;
  }
  TH1F * tmpF = dynamic_cast<TH1F*>(fOutputContainer->FindObject(key)) ;
  if(tmpF){
    tmpF->Fill(x) ;
    return ;
  }
  TH1D * tmpD = dynamic_cast<TH1D*>(fOutputContainer->FindObject(key)) ;
  if(tmpD){
    tmpD->Fill(x) ;
    return ;
  }
  AliInfo(Form("can not find histogram <%s> ",key)) ;
}
//_____________________________________________________________________________
void AliAnalysisTaskPHOSPbPbQA::FillHistogram(const char * key,Double_t x,Double_t y)const{
  //FillHistogram
  TObject * tmp = fOutputContainer->FindObject(key) ;
  if(!tmp){
    AliInfo(Form("can not find histogram <%s> ",key)) ;
    return ;
  }
  if(tmp->IsA() == TClass::GetClass("TH1F")){
    ((TH1F*)tmp)->Fill(x,y) ;
    return ;
  }
  if(tmp->IsA() == TClass::GetClass("TH2F")){
    ((TH2F*)tmp)->Fill(x,y) ;
    return ;
  }
  AliError(Form("Calling FillHistogram with 2 parameters for histo <%s> of type %s",key,tmp->IsA()->GetName())) ;
}
 AliAnalysisTaskPHOSPbPbQA.cxx:1
 AliAnalysisTaskPHOSPbPbQA.cxx:2
 AliAnalysisTaskPHOSPbPbQA.cxx:3
 AliAnalysisTaskPHOSPbPbQA.cxx:4
 AliAnalysisTaskPHOSPbPbQA.cxx:5
 AliAnalysisTaskPHOSPbPbQA.cxx:6
 AliAnalysisTaskPHOSPbPbQA.cxx:7
 AliAnalysisTaskPHOSPbPbQA.cxx:8
 AliAnalysisTaskPHOSPbPbQA.cxx:9
 AliAnalysisTaskPHOSPbPbQA.cxx:10
 AliAnalysisTaskPHOSPbPbQA.cxx:11
 AliAnalysisTaskPHOSPbPbQA.cxx:12
 AliAnalysisTaskPHOSPbPbQA.cxx:13
 AliAnalysisTaskPHOSPbPbQA.cxx:14
 AliAnalysisTaskPHOSPbPbQA.cxx:15
 AliAnalysisTaskPHOSPbPbQA.cxx:16
 AliAnalysisTaskPHOSPbPbQA.cxx:17
 AliAnalysisTaskPHOSPbPbQA.cxx:18
 AliAnalysisTaskPHOSPbPbQA.cxx:19
 AliAnalysisTaskPHOSPbPbQA.cxx:20
 AliAnalysisTaskPHOSPbPbQA.cxx:21
 AliAnalysisTaskPHOSPbPbQA.cxx:22
 AliAnalysisTaskPHOSPbPbQA.cxx:23
 AliAnalysisTaskPHOSPbPbQA.cxx:24
 AliAnalysisTaskPHOSPbPbQA.cxx:25
 AliAnalysisTaskPHOSPbPbQA.cxx:26
 AliAnalysisTaskPHOSPbPbQA.cxx:27
 AliAnalysisTaskPHOSPbPbQA.cxx:28
 AliAnalysisTaskPHOSPbPbQA.cxx:29
 AliAnalysisTaskPHOSPbPbQA.cxx:30
 AliAnalysisTaskPHOSPbPbQA.cxx:31
 AliAnalysisTaskPHOSPbPbQA.cxx:32
 AliAnalysisTaskPHOSPbPbQA.cxx:33
 AliAnalysisTaskPHOSPbPbQA.cxx:34
 AliAnalysisTaskPHOSPbPbQA.cxx:35
 AliAnalysisTaskPHOSPbPbQA.cxx:36
 AliAnalysisTaskPHOSPbPbQA.cxx:37
 AliAnalysisTaskPHOSPbPbQA.cxx:38
 AliAnalysisTaskPHOSPbPbQA.cxx:39
 AliAnalysisTaskPHOSPbPbQA.cxx:40
 AliAnalysisTaskPHOSPbPbQA.cxx:41
 AliAnalysisTaskPHOSPbPbQA.cxx:42
 AliAnalysisTaskPHOSPbPbQA.cxx:43
 AliAnalysisTaskPHOSPbPbQA.cxx:44
 AliAnalysisTaskPHOSPbPbQA.cxx:45
 AliAnalysisTaskPHOSPbPbQA.cxx:46
 AliAnalysisTaskPHOSPbPbQA.cxx:47
 AliAnalysisTaskPHOSPbPbQA.cxx:48
 AliAnalysisTaskPHOSPbPbQA.cxx:49
 AliAnalysisTaskPHOSPbPbQA.cxx:50
 AliAnalysisTaskPHOSPbPbQA.cxx:51
 AliAnalysisTaskPHOSPbPbQA.cxx:52
 AliAnalysisTaskPHOSPbPbQA.cxx:53
 AliAnalysisTaskPHOSPbPbQA.cxx:54
 AliAnalysisTaskPHOSPbPbQA.cxx:55
 AliAnalysisTaskPHOSPbPbQA.cxx:56
 AliAnalysisTaskPHOSPbPbQA.cxx:57
 AliAnalysisTaskPHOSPbPbQA.cxx:58
 AliAnalysisTaskPHOSPbPbQA.cxx:59
 AliAnalysisTaskPHOSPbPbQA.cxx:60
 AliAnalysisTaskPHOSPbPbQA.cxx:61
 AliAnalysisTaskPHOSPbPbQA.cxx:62
 AliAnalysisTaskPHOSPbPbQA.cxx:63
 AliAnalysisTaskPHOSPbPbQA.cxx:64
 AliAnalysisTaskPHOSPbPbQA.cxx:65
 AliAnalysisTaskPHOSPbPbQA.cxx:66
 AliAnalysisTaskPHOSPbPbQA.cxx:67
 AliAnalysisTaskPHOSPbPbQA.cxx:68
 AliAnalysisTaskPHOSPbPbQA.cxx:69
 AliAnalysisTaskPHOSPbPbQA.cxx:70
 AliAnalysisTaskPHOSPbPbQA.cxx:71
 AliAnalysisTaskPHOSPbPbQA.cxx:72
 AliAnalysisTaskPHOSPbPbQA.cxx:73
 AliAnalysisTaskPHOSPbPbQA.cxx:74
 AliAnalysisTaskPHOSPbPbQA.cxx:75
 AliAnalysisTaskPHOSPbPbQA.cxx:76
 AliAnalysisTaskPHOSPbPbQA.cxx:77
 AliAnalysisTaskPHOSPbPbQA.cxx:78
 AliAnalysisTaskPHOSPbPbQA.cxx:79
 AliAnalysisTaskPHOSPbPbQA.cxx:80
 AliAnalysisTaskPHOSPbPbQA.cxx:81
 AliAnalysisTaskPHOSPbPbQA.cxx:82
 AliAnalysisTaskPHOSPbPbQA.cxx:83
 AliAnalysisTaskPHOSPbPbQA.cxx:84
 AliAnalysisTaskPHOSPbPbQA.cxx:85
 AliAnalysisTaskPHOSPbPbQA.cxx:86
 AliAnalysisTaskPHOSPbPbQA.cxx:87
 AliAnalysisTaskPHOSPbPbQA.cxx:88
 AliAnalysisTaskPHOSPbPbQA.cxx:89
 AliAnalysisTaskPHOSPbPbQA.cxx:90
 AliAnalysisTaskPHOSPbPbQA.cxx:91
 AliAnalysisTaskPHOSPbPbQA.cxx:92
 AliAnalysisTaskPHOSPbPbQA.cxx:93
 AliAnalysisTaskPHOSPbPbQA.cxx:94
 AliAnalysisTaskPHOSPbPbQA.cxx:95
 AliAnalysisTaskPHOSPbPbQA.cxx:96
 AliAnalysisTaskPHOSPbPbQA.cxx:97
 AliAnalysisTaskPHOSPbPbQA.cxx:98
 AliAnalysisTaskPHOSPbPbQA.cxx:99
 AliAnalysisTaskPHOSPbPbQA.cxx:100
 AliAnalysisTaskPHOSPbPbQA.cxx:101
 AliAnalysisTaskPHOSPbPbQA.cxx:102
 AliAnalysisTaskPHOSPbPbQA.cxx:103
 AliAnalysisTaskPHOSPbPbQA.cxx:104
 AliAnalysisTaskPHOSPbPbQA.cxx:105
 AliAnalysisTaskPHOSPbPbQA.cxx:106
 AliAnalysisTaskPHOSPbPbQA.cxx:107
 AliAnalysisTaskPHOSPbPbQA.cxx:108
 AliAnalysisTaskPHOSPbPbQA.cxx:109
 AliAnalysisTaskPHOSPbPbQA.cxx:110
 AliAnalysisTaskPHOSPbPbQA.cxx:111
 AliAnalysisTaskPHOSPbPbQA.cxx:112
 AliAnalysisTaskPHOSPbPbQA.cxx:113
 AliAnalysisTaskPHOSPbPbQA.cxx:114
 AliAnalysisTaskPHOSPbPbQA.cxx:115
 AliAnalysisTaskPHOSPbPbQA.cxx:116
 AliAnalysisTaskPHOSPbPbQA.cxx:117
 AliAnalysisTaskPHOSPbPbQA.cxx:118
 AliAnalysisTaskPHOSPbPbQA.cxx:119
 AliAnalysisTaskPHOSPbPbQA.cxx:120
 AliAnalysisTaskPHOSPbPbQA.cxx:121
 AliAnalysisTaskPHOSPbPbQA.cxx:122
 AliAnalysisTaskPHOSPbPbQA.cxx:123
 AliAnalysisTaskPHOSPbPbQA.cxx:124
 AliAnalysisTaskPHOSPbPbQA.cxx:125
 AliAnalysisTaskPHOSPbPbQA.cxx:126
 AliAnalysisTaskPHOSPbPbQA.cxx:127
 AliAnalysisTaskPHOSPbPbQA.cxx:128
 AliAnalysisTaskPHOSPbPbQA.cxx:129
 AliAnalysisTaskPHOSPbPbQA.cxx:130
 AliAnalysisTaskPHOSPbPbQA.cxx:131
 AliAnalysisTaskPHOSPbPbQA.cxx:132
 AliAnalysisTaskPHOSPbPbQA.cxx:133
 AliAnalysisTaskPHOSPbPbQA.cxx:134
 AliAnalysisTaskPHOSPbPbQA.cxx:135
 AliAnalysisTaskPHOSPbPbQA.cxx:136
 AliAnalysisTaskPHOSPbPbQA.cxx:137
 AliAnalysisTaskPHOSPbPbQA.cxx:138
 AliAnalysisTaskPHOSPbPbQA.cxx:139
 AliAnalysisTaskPHOSPbPbQA.cxx:140
 AliAnalysisTaskPHOSPbPbQA.cxx:141
 AliAnalysisTaskPHOSPbPbQA.cxx:142
 AliAnalysisTaskPHOSPbPbQA.cxx:143
 AliAnalysisTaskPHOSPbPbQA.cxx:144
 AliAnalysisTaskPHOSPbPbQA.cxx:145
 AliAnalysisTaskPHOSPbPbQA.cxx:146
 AliAnalysisTaskPHOSPbPbQA.cxx:147
 AliAnalysisTaskPHOSPbPbQA.cxx:148
 AliAnalysisTaskPHOSPbPbQA.cxx:149
 AliAnalysisTaskPHOSPbPbQA.cxx:150
 AliAnalysisTaskPHOSPbPbQA.cxx:151
 AliAnalysisTaskPHOSPbPbQA.cxx:152
 AliAnalysisTaskPHOSPbPbQA.cxx:153
 AliAnalysisTaskPHOSPbPbQA.cxx:154
 AliAnalysisTaskPHOSPbPbQA.cxx:155
 AliAnalysisTaskPHOSPbPbQA.cxx:156
 AliAnalysisTaskPHOSPbPbQA.cxx:157
 AliAnalysisTaskPHOSPbPbQA.cxx:158
 AliAnalysisTaskPHOSPbPbQA.cxx:159
 AliAnalysisTaskPHOSPbPbQA.cxx:160
 AliAnalysisTaskPHOSPbPbQA.cxx:161
 AliAnalysisTaskPHOSPbPbQA.cxx:162
 AliAnalysisTaskPHOSPbPbQA.cxx:163
 AliAnalysisTaskPHOSPbPbQA.cxx:164
 AliAnalysisTaskPHOSPbPbQA.cxx:165
 AliAnalysisTaskPHOSPbPbQA.cxx:166
 AliAnalysisTaskPHOSPbPbQA.cxx:167
 AliAnalysisTaskPHOSPbPbQA.cxx:168
 AliAnalysisTaskPHOSPbPbQA.cxx:169
 AliAnalysisTaskPHOSPbPbQA.cxx:170
 AliAnalysisTaskPHOSPbPbQA.cxx:171
 AliAnalysisTaskPHOSPbPbQA.cxx:172
 AliAnalysisTaskPHOSPbPbQA.cxx:173
 AliAnalysisTaskPHOSPbPbQA.cxx:174
 AliAnalysisTaskPHOSPbPbQA.cxx:175
 AliAnalysisTaskPHOSPbPbQA.cxx:176
 AliAnalysisTaskPHOSPbPbQA.cxx:177
 AliAnalysisTaskPHOSPbPbQA.cxx:178
 AliAnalysisTaskPHOSPbPbQA.cxx:179
 AliAnalysisTaskPHOSPbPbQA.cxx:180
 AliAnalysisTaskPHOSPbPbQA.cxx:181
 AliAnalysisTaskPHOSPbPbQA.cxx:182
 AliAnalysisTaskPHOSPbPbQA.cxx:183
 AliAnalysisTaskPHOSPbPbQA.cxx:184
 AliAnalysisTaskPHOSPbPbQA.cxx:185
 AliAnalysisTaskPHOSPbPbQA.cxx:186
 AliAnalysisTaskPHOSPbPbQA.cxx:187
 AliAnalysisTaskPHOSPbPbQA.cxx:188
 AliAnalysisTaskPHOSPbPbQA.cxx:189
 AliAnalysisTaskPHOSPbPbQA.cxx:190
 AliAnalysisTaskPHOSPbPbQA.cxx:191
 AliAnalysisTaskPHOSPbPbQA.cxx:192
 AliAnalysisTaskPHOSPbPbQA.cxx:193
 AliAnalysisTaskPHOSPbPbQA.cxx:194
 AliAnalysisTaskPHOSPbPbQA.cxx:195
 AliAnalysisTaskPHOSPbPbQA.cxx:196
 AliAnalysisTaskPHOSPbPbQA.cxx:197
 AliAnalysisTaskPHOSPbPbQA.cxx:198
 AliAnalysisTaskPHOSPbPbQA.cxx:199
 AliAnalysisTaskPHOSPbPbQA.cxx:200
 AliAnalysisTaskPHOSPbPbQA.cxx:201
 AliAnalysisTaskPHOSPbPbQA.cxx:202
 AliAnalysisTaskPHOSPbPbQA.cxx:203
 AliAnalysisTaskPHOSPbPbQA.cxx:204
 AliAnalysisTaskPHOSPbPbQA.cxx:205
 AliAnalysisTaskPHOSPbPbQA.cxx:206
 AliAnalysisTaskPHOSPbPbQA.cxx:207
 AliAnalysisTaskPHOSPbPbQA.cxx:208
 AliAnalysisTaskPHOSPbPbQA.cxx:209
 AliAnalysisTaskPHOSPbPbQA.cxx:210
 AliAnalysisTaskPHOSPbPbQA.cxx:211
 AliAnalysisTaskPHOSPbPbQA.cxx:212
 AliAnalysisTaskPHOSPbPbQA.cxx:213
 AliAnalysisTaskPHOSPbPbQA.cxx:214
 AliAnalysisTaskPHOSPbPbQA.cxx:215
 AliAnalysisTaskPHOSPbPbQA.cxx:216
 AliAnalysisTaskPHOSPbPbQA.cxx:217
 AliAnalysisTaskPHOSPbPbQA.cxx:218
 AliAnalysisTaskPHOSPbPbQA.cxx:219
 AliAnalysisTaskPHOSPbPbQA.cxx:220
 AliAnalysisTaskPHOSPbPbQA.cxx:221
 AliAnalysisTaskPHOSPbPbQA.cxx:222
 AliAnalysisTaskPHOSPbPbQA.cxx:223
 AliAnalysisTaskPHOSPbPbQA.cxx:224
 AliAnalysisTaskPHOSPbPbQA.cxx:225
 AliAnalysisTaskPHOSPbPbQA.cxx:226
 AliAnalysisTaskPHOSPbPbQA.cxx:227
 AliAnalysisTaskPHOSPbPbQA.cxx:228
 AliAnalysisTaskPHOSPbPbQA.cxx:229
 AliAnalysisTaskPHOSPbPbQA.cxx:230
 AliAnalysisTaskPHOSPbPbQA.cxx:231
 AliAnalysisTaskPHOSPbPbQA.cxx:232
 AliAnalysisTaskPHOSPbPbQA.cxx:233
 AliAnalysisTaskPHOSPbPbQA.cxx:234
 AliAnalysisTaskPHOSPbPbQA.cxx:235
 AliAnalysisTaskPHOSPbPbQA.cxx:236
 AliAnalysisTaskPHOSPbPbQA.cxx:237
 AliAnalysisTaskPHOSPbPbQA.cxx:238
 AliAnalysisTaskPHOSPbPbQA.cxx:239
 AliAnalysisTaskPHOSPbPbQA.cxx:240
 AliAnalysisTaskPHOSPbPbQA.cxx:241
 AliAnalysisTaskPHOSPbPbQA.cxx:242
 AliAnalysisTaskPHOSPbPbQA.cxx:243
 AliAnalysisTaskPHOSPbPbQA.cxx:244
 AliAnalysisTaskPHOSPbPbQA.cxx:245
 AliAnalysisTaskPHOSPbPbQA.cxx:246
 AliAnalysisTaskPHOSPbPbQA.cxx:247
 AliAnalysisTaskPHOSPbPbQA.cxx:248
 AliAnalysisTaskPHOSPbPbQA.cxx:249
 AliAnalysisTaskPHOSPbPbQA.cxx:250
 AliAnalysisTaskPHOSPbPbQA.cxx:251
 AliAnalysisTaskPHOSPbPbQA.cxx:252
 AliAnalysisTaskPHOSPbPbQA.cxx:253
 AliAnalysisTaskPHOSPbPbQA.cxx:254
 AliAnalysisTaskPHOSPbPbQA.cxx:255
 AliAnalysisTaskPHOSPbPbQA.cxx:256
 AliAnalysisTaskPHOSPbPbQA.cxx:257
 AliAnalysisTaskPHOSPbPbQA.cxx:258
 AliAnalysisTaskPHOSPbPbQA.cxx:259
 AliAnalysisTaskPHOSPbPbQA.cxx:260
 AliAnalysisTaskPHOSPbPbQA.cxx:261
 AliAnalysisTaskPHOSPbPbQA.cxx:262
 AliAnalysisTaskPHOSPbPbQA.cxx:263
 AliAnalysisTaskPHOSPbPbQA.cxx:264
 AliAnalysisTaskPHOSPbPbQA.cxx:265
 AliAnalysisTaskPHOSPbPbQA.cxx:266
 AliAnalysisTaskPHOSPbPbQA.cxx:267
 AliAnalysisTaskPHOSPbPbQA.cxx:268
 AliAnalysisTaskPHOSPbPbQA.cxx:269
 AliAnalysisTaskPHOSPbPbQA.cxx:270
 AliAnalysisTaskPHOSPbPbQA.cxx:271
 AliAnalysisTaskPHOSPbPbQA.cxx:272
 AliAnalysisTaskPHOSPbPbQA.cxx:273
 AliAnalysisTaskPHOSPbPbQA.cxx:274
 AliAnalysisTaskPHOSPbPbQA.cxx:275
 AliAnalysisTaskPHOSPbPbQA.cxx:276
 AliAnalysisTaskPHOSPbPbQA.cxx:277
 AliAnalysisTaskPHOSPbPbQA.cxx:278
 AliAnalysisTaskPHOSPbPbQA.cxx:279
 AliAnalysisTaskPHOSPbPbQA.cxx:280
 AliAnalysisTaskPHOSPbPbQA.cxx:281
 AliAnalysisTaskPHOSPbPbQA.cxx:282
 AliAnalysisTaskPHOSPbPbQA.cxx:283
 AliAnalysisTaskPHOSPbPbQA.cxx:284
 AliAnalysisTaskPHOSPbPbQA.cxx:285
 AliAnalysisTaskPHOSPbPbQA.cxx:286
 AliAnalysisTaskPHOSPbPbQA.cxx:287
 AliAnalysisTaskPHOSPbPbQA.cxx:288
 AliAnalysisTaskPHOSPbPbQA.cxx:289
 AliAnalysisTaskPHOSPbPbQA.cxx:290
 AliAnalysisTaskPHOSPbPbQA.cxx:291
 AliAnalysisTaskPHOSPbPbQA.cxx:292
 AliAnalysisTaskPHOSPbPbQA.cxx:293
 AliAnalysisTaskPHOSPbPbQA.cxx:294
 AliAnalysisTaskPHOSPbPbQA.cxx:295
 AliAnalysisTaskPHOSPbPbQA.cxx:296
 AliAnalysisTaskPHOSPbPbQA.cxx:297
 AliAnalysisTaskPHOSPbPbQA.cxx:298
 AliAnalysisTaskPHOSPbPbQA.cxx:299
 AliAnalysisTaskPHOSPbPbQA.cxx:300
 AliAnalysisTaskPHOSPbPbQA.cxx:301
 AliAnalysisTaskPHOSPbPbQA.cxx:302
 AliAnalysisTaskPHOSPbPbQA.cxx:303
 AliAnalysisTaskPHOSPbPbQA.cxx:304
 AliAnalysisTaskPHOSPbPbQA.cxx:305
 AliAnalysisTaskPHOSPbPbQA.cxx:306
 AliAnalysisTaskPHOSPbPbQA.cxx:307
 AliAnalysisTaskPHOSPbPbQA.cxx:308
 AliAnalysisTaskPHOSPbPbQA.cxx:309
 AliAnalysisTaskPHOSPbPbQA.cxx:310
 AliAnalysisTaskPHOSPbPbQA.cxx:311
 AliAnalysisTaskPHOSPbPbQA.cxx:312
 AliAnalysisTaskPHOSPbPbQA.cxx:313
 AliAnalysisTaskPHOSPbPbQA.cxx:314
 AliAnalysisTaskPHOSPbPbQA.cxx:315
 AliAnalysisTaskPHOSPbPbQA.cxx:316
 AliAnalysisTaskPHOSPbPbQA.cxx:317
 AliAnalysisTaskPHOSPbPbQA.cxx:318
 AliAnalysisTaskPHOSPbPbQA.cxx:319
 AliAnalysisTaskPHOSPbPbQA.cxx:320
 AliAnalysisTaskPHOSPbPbQA.cxx:321
 AliAnalysisTaskPHOSPbPbQA.cxx:322
 AliAnalysisTaskPHOSPbPbQA.cxx:323
 AliAnalysisTaskPHOSPbPbQA.cxx:324
 AliAnalysisTaskPHOSPbPbQA.cxx:325
 AliAnalysisTaskPHOSPbPbQA.cxx:326
 AliAnalysisTaskPHOSPbPbQA.cxx:327
 AliAnalysisTaskPHOSPbPbQA.cxx:328
 AliAnalysisTaskPHOSPbPbQA.cxx:329