ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: Satyajit Jena.                                                 *
 * 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.                  *
 **************************************************************************/


//=========================================================================//
//             AliEbyE Analysis for Particle Ratio Fluctuation             //
//                   Deepika Rathee  | Satyajit Jena                       //
//                   drathee@cern.ch | sjena@cern.ch                       //
//
//             V0.1 2013/03/25 Using THnSparse
//             V0.2 2013/04/03 Cleanup
//             V1.0 2013/04/10 Cleanup Bins for Less Memory
//             V1.1 2013/04/15 Bins Added 
//   Todo: pp and pA, Mix Events
//=========================================================================//

#include "TChain.h"
#include "TList.h"
#include "TFile.h"
#include "TTree.h"
#include "TH1D.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TCanvas.h"
#include "AliAnalysisTask.h"
#include "AliAnalysisManager.h"
#include "AliVEvent.h"
#include "AliESD.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliAODMCParticle.h"
#include "AliAODMCHeader.h"
#include "AliPIDResponse.h"
#include "AliAODHeader.h"
#include "AliAODpidUtil.h"
#include "AliHelperPID.h"
using std::endl;
using std::cout;
#include "AliEbyEParticleRatioFluctuationTask.h"

ClassImp(AliEbyEParticleRatioFluctuationTask)

//-----------------------------------------------------------------------
AliEbyEParticleRatioFluctuationTask::AliEbyEParticleRatioFluctuationTask( const char *name ) : AliAnalysisTaskSE( name ), 
  fThnList(NULL), 
  fAnalysisType("AOD"), 
  fAnalysisData("PbPb"), 
  fCentralityEstimator("V0M"), 
  fVxMax(3.), 
  fVyMax(3.), 
  fVzMax(10.), 
  fDCAxy(2.4),  
  fDCAz(3.2), 
  fPtLowerLimit(0.2), 
  fPtHigherLimit(5.), 
  fEtaLowerLimit(-1.), 
  fEtaHigherLimit(1.), 
  fTPCNClus(80),
  fAODtrackCutBit(128), 
  isQA(kFALSE), 
  fDebug(kFALSE), 
  fHelperPID(0x0),
  fEventCounter(NULL), 
  fHistoCorrelation(NULL) { 
  for(Int_t i = 0; i < 14; i++ ) fHistQA[i] = NULL;
  DefineOutput(1, TList::Class()); //! Connect Outpput....
}

AliEbyEParticleRatioFluctuationTask::~AliEbyEParticleRatioFluctuationTask() {
  //!   Cleaning up
  if (fThnList)   delete fThnList;
  if (fHelperPID) delete fHelperPID;
}

//---------------------------------------------------------------------------------
void AliEbyEParticleRatioFluctuationTask::UserCreateOutputObjects() {
  fThnList = new TList();
  fThnList->SetOwner(kTRUE);

  fEventCounter = new TH1D("fEventCounter","EventCounter", 300, 0.5,300.5);
  if (isQA) fThnList->Add(fEventCounter);
  
  fHistQA[0] = new TH2F("fHistQAvx", "Histo Vx Selected;Centrality;Vx", 100,0,100, 5000, -5., 5.);
  fHistQA[1] = new TH2F("fHistQAvy", "Histo Vy Selected;Centrality;Vy", 100,0,100, 5000, -5., 5.);
  fHistQA[2] = new TH2F("fHistQAvz", "Histo Vz Selected;Centrality;Vz", 100,0,100, 5000, -25., 25.);  
  fHistQA[3] = new TH2F("fHistQAvxA", "Histo Vx;Centrality;Vx", 100,0,100, 5000, -5., 5.);
  fHistQA[4] = new TH2F("fHistQAvyA", "Histo Vy;Centrality;Vy", 100,0,100, 5000, -5., 5.);
  fHistQA[5] = new TH2F("fHistQAvzA", "Histo Vz;Centrality;Vz", 100,0,100, 5000, -25., 25.);

  fHistQA[6] = new TH2F("fHistQADcaXyA", "Histo DCAxy;Centrality;DCAxy",100,0,100, 600, -15., 15.);
  fHistQA[7] = new TH2F("fHistQADcaZA", "Histo DCAz;Centrality;DCAz ",100,0,100, 600, -15., 15.);   
  fHistQA[8] = new TH2F("fHistQAPtA","p_{T} distribution;Centrality;p_{T}",100,0,100,1000,0,10);
  fHistQA[9] = new TH2F("fHistQAEtaA","#eta distribution;Centrality;#eta",100,0,100,240,-1.2,1.2);

  fHistQA[10] = new TH2F("fHistQADcaXy", "Histo DCAxy after Selected;Centrality;DCAxy", 100,0,100,600, -15., 15.);
  fHistQA[11] = new TH2F("fHistQADcaZ", "Histo DCAz Selected;Centrality;DCAz", 100,0,100,600, -15., 15.);   
  fHistQA[12] = new TH2F("fHistQAPt","p_{T} distribution Selected;Centrality;p_{T}",100,0,100,1000,0,10);
  fHistQA[13] = new TH2F("fHistQAEta","#eta distribution Selected;Centrality;#eta",100,0,100, 240,-1.2,1.2);
  
  if (isQA) for(Int_t i = 0; i < 14; i++) fThnList->Add(fHistQA[i]);
  
  Int_t fgSparseDataBins[kNSparseData]   = {100, 5000, 5000, 2500, 2500, 3000, 1500, 1500, 1000, 500, 500, 500, 250, 250};
  Double_t fgSparseDataMin[kNSparseData] = {0.,  0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,   0.,  0.,  0.,  0.,  0.};
  Double_t fgSparseDataMax[kNSparseData] = {100.,5000.,5000.,2500.,2500.,3000.,1500.,1500.,1000.,500.,500.,500.,250.,250.};
  
  const Char_t *fgkSparseDataTitle[] = {"centrality","RefMult","N_{ch}", "N_{+}","N_{-}","N_{#pi}", "N_{#pi^{+}}","N_{#pi^{-}}","N_{K}","N_{K^{+}}", "N_{K^{-}}","N_{p}","N_{p}","N_{#bar{p}}"};
    
  fHistoCorrelation = new THnSparseI("fThnCorr", "", kNSparseData, fgSparseDataBins, fgSparseDataMin, fgSparseDataMax);
  for (Int_t iaxis = 0; iaxis < kNSparseData; iaxis++)
    fHistoCorrelation->GetAxis(iaxis)->SetTitle(fgkSparseDataTitle[iaxis]);
  
  if(!isQA) fThnList->Add(fHistoCorrelation);
  if(isQA)  
    if (fHelperPID)
      fThnList->Add(fHelperPID);
  
  PostData(1, fThnList);
}

//----------------------------------------------------------------------------------
void AliEbyEParticleRatioFluctuationTask::UserExec( Option_t * ){

  if (isQA) fEventCounter->Fill(1);

  AliAODEvent* event = dynamic_cast<AliAODEvent*>(InputEvent());
  if (!event) {
    Printf("ERROR 01: AOD not found ");
    return;
  }

  Int_t gCent   = -1;
  Float_t gRefMul = -1;
  
  AliAODHeader *aodHeader = dynamic_cast<AliAODHeader*>(event->GetHeader());
  if(!aodHeader) AliFatal("Not a standard AOD");
  gCent = (Int_t)aodHeader->GetCentralityP()->GetCentralityPercentile(fCentralityEstimator.Data()); // V0M`
  gRefMul = aodHeader->GetRefMultiplicity();
  if (gCent < 0 || gCent > 100) return;
  if (isQA) fEventCounter->Fill(2);  

  if (!AcceptEvent(event,gCent)) return;
  
  Int_t icharge = -1;
  Int_t gCharge[2];
  Int_t gPid[3][2];
  
  for (Int_t i = 0; i < 2; i++) {
    gCharge[i] = 0;
    for (Int_t ii = 0; ii < 3; ii++) {
      gPid[ii][i] = 0;
    }
  }


  if(fAnalysisType == "AOD") {
    if (isQA) {
	fEventCounter->Fill(5);
	fEventCounter->Fill(50+gCent);
    }
    
    for (Int_t itrk = 0; itrk < event->GetNumberOfTracks(); itrk++) {
      AliAODTrack* track = dynamic_cast<AliAODTrack *>(event->GetTrack(itrk));
      if (!track) continue;
      
      if (!AcceptTrack(track, gCent)) continue;
            
      Int_t a = fHelperPID->GetParticleSpecies((AliVTrack*) track,kTRUE);

      if(a < 0 || a > 2) continue;
      icharge = track->Charge() > 0 ? 0 : 1;
      gCharge[icharge]++;
      gPid[a][icharge]++;
    }
  }
  else if(fAnalysisType == "MCAOD") {
    TClonesArray *arrayMC= 0; 
    arrayMC = dynamic_cast<TClonesArray*> (event->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
    if (!arrayMC) {
      Printf("Error: MC particles branch not found!\n");
      return;
    }
    AliAODMCHeader *mcHdr=0;
    mcHdr=(AliAODMCHeader*)event->GetList()->FindObject(AliAODMCHeader::StdBranchName());  
    if(!mcHdr) {
      Printf("MC header branch not found!\n");
      return;
    }
    
    if (isQA) {
      fEventCounter->Fill(5);
      fEventCounter->Fill(50+gCent);
    }
    
    Int_t nMC = arrayMC->GetEntries();
    for (Int_t iMC = 0; iMC < nMC; iMC++) {
      AliAODMCParticle *partMC = (AliAODMCParticle*) arrayMC->At(iMC);
      if(!AcceptMCTrack(partMC, gCent)) continue;
      Int_t a = fHelperPID->GetMCParticleSpecie((AliVEvent*) event,(AliVTrack*)partMC,1);
      if(a < 0 || a > 2) continue;
      icharge = partMC->Charge() > 0 ? 0 : 1;
      gCharge[icharge]++;
      gPid[a][icharge]++;
    }
  }
  else {
    printf(" No Event Type is Defined ");
    return;
  }
  
  if( (gCharge[0] + gCharge[1]) != 0 ) {
    if (isQA) {
      fEventCounter->Fill(6); 
      fEventCounter->Fill(160 + gCent);
    }
    else { 
      Double_t vsparse[kNSparseData];
      vsparse[0]   = gCent;
      vsparse[1]   = gRefMul;
      vsparse[2]   = gCharge[0] + gCharge[1];
      vsparse[3]   = gCharge[0];
      vsparse[4]   = gCharge[1];
      vsparse[5]   = gPid[0][0] + gPid[0][1];
      vsparse[6]   = gPid[0][0];
      vsparse[7]   = gPid[0][1];
      vsparse[8]   = gPid[1][0] + gPid[1][0];
      vsparse[9]   = gPid[1][0];
      vsparse[10]  = gPid[1][1];
      vsparse[11]  = gPid[2][0] + gPid[2][1];
      vsparse[12]  = gPid[2][0];
      vsparse[13]  = gPid[2][1];
      fHistoCorrelation->Fill(vsparse);
    }
  }
  
  if(fDebug && isQA)  Printf(" %6d  %6d %6d  %6d %6d  %6d %6d %6d %6d %6d %6d %6d %6d", 
			     (Int_t)fEventCounter->GetBinContent(1), 
			     (Int_t)fEventCounter->GetBinContent(2), 
			     (Int_t)fEventCounter->GetBinContent(3), 
			     (Int_t)gCent, (Int_t)gRefMul, 
			     gCharge[0], gCharge[1], 
			     gPid[0][0], gPid[0][1],  gPid[1][0], 
			     gPid[1][1],  gPid[2][0], gPid[2][1]);
  
  PostData(1, fThnList);
}

void AliEbyEParticleRatioFluctuationTask::Terminate( Option_t * ){
  Info("AliEbyEParticleRatioFluctuationTask"," Task Successfully finished");
}

//___________________________________________________________
Bool_t AliEbyEParticleRatioFluctuationTask::AcceptEvent(AliAODEvent *event, Int_t cent) const {
  Bool_t ver = kFALSE;
  const AliAODVertex *vertex = event->GetPrimaryVertex();
  if(vertex) {
    Double32_t fCov[6];
    vertex->GetCovarianceMatrix(fCov);
    if(vertex->GetNContributors() > 0) {
      if(fCov[5] != 0) {
	
	if(isQA) {	
	  fEventCounter->Fill(3);
	  fHistQA[3]->Fill(cent,vertex->GetX());
	  fHistQA[4]->Fill(cent,vertex->GetY());
	  fHistQA[5]->Fill(cent,vertex->GetZ());
	}
	
	if(TMath::Abs(vertex->GetX()) < fVxMax) {
	  if(TMath::Abs(vertex->GetY()) < fVyMax) {
	    if(TMath::Abs(vertex->GetZ()) < fVzMax) {
	      ver = kTRUE;
	      if(isQA) {	
		fEventCounter->Fill(4);
		fHistQA[0]->Fill(cent,vertex->GetX());
		fHistQA[1]->Fill(cent,vertex->GetY());
		fHistQA[2]->Fill(cent,vertex->GetZ());
	      }
	    }
	  }
	}
      }
    }
  }
  
  AliCentrality *centrality = event->GetCentrality();
  if (centrality->GetQuality() != 0) ver = kFALSE;
  return ver;
}


//___________________________________________________________
Bool_t AliEbyEParticleRatioFluctuationTask::AcceptTrack(AliAODTrack *track, Int_t cent) const {
  if(!track)                                  return kFALSE;
  if (track->Charge() == 0 )                  return kFALSE;
  
  if(isQA) {
    fHistQA[6]->Fill(cent,track->DCA());
    fHistQA[7]->Fill(cent,track->ZAtDCA());
    fHistQA[8]->Fill(cent,track->Pt());
    fHistQA[9]->Fill(cent,track->Eta());
  }
  
  if (!track->TestFilterBit(fAODtrackCutBit)) return kFALSE;

  if (track->Eta() < fEtaLowerLimit ||
      track->Eta() > fEtaHigherLimit)         return kFALSE;
  if (track->Pt() < fPtLowerLimit ||
      track->Pt() > fPtHigherLimit)           return kFALSE;  
  if ( track->DCA() > fDCAxy )                return kFALSE; 
  if ( track->ZAtDCA() > fDCAz )              return kFALSE;
   
  if(isQA) {
    fHistQA[10]->Fill(cent,track->DCA());
    fHistQA[11]->Fill(cent,track->ZAtDCA());
    fHistQA[12]->Fill(cent,track->Pt());
    fHistQA[13]->Fill(cent,track->Eta());
  }
 
  return kTRUE;
}


//___________________________________________________________
Bool_t AliEbyEParticleRatioFluctuationTask::AcceptMCTrack(AliAODMCParticle *track, Int_t cent) const {
  if(!track) return kFALSE;
  if(!track->IsPhysicalPrimary()) return kFALSE;
  if (track->Charge() == 0 ) return kFALSE;
  if(isQA) {
    fHistQA[8]->Fill(cent,track->Pt());
    fHistQA[9]->Fill(cent,track->Eta());
  }

  if (track->Eta() < fEtaLowerLimit ||
      track->Eta() > fEtaHigherLimit) return kFALSE;
  if (track->Pt() < fPtLowerLimit ||
      track->Pt() > fPtHigherLimit) return kFALSE;  
    
  if(isQA) {
    fHistQA[12]->Fill(cent,track->Pt());
    fHistQA[13]->Fill(cent,track->Eta());
  }
 
  return kTRUE;
}
 AliEbyEParticleRatioFluctuationTask.cxx:1
 AliEbyEParticleRatioFluctuationTask.cxx:2
 AliEbyEParticleRatioFluctuationTask.cxx:3
 AliEbyEParticleRatioFluctuationTask.cxx:4
 AliEbyEParticleRatioFluctuationTask.cxx:5
 AliEbyEParticleRatioFluctuationTask.cxx:6
 AliEbyEParticleRatioFluctuationTask.cxx:7
 AliEbyEParticleRatioFluctuationTask.cxx:8
 AliEbyEParticleRatioFluctuationTask.cxx:9
 AliEbyEParticleRatioFluctuationTask.cxx:10
 AliEbyEParticleRatioFluctuationTask.cxx:11
 AliEbyEParticleRatioFluctuationTask.cxx:12
 AliEbyEParticleRatioFluctuationTask.cxx:13
 AliEbyEParticleRatioFluctuationTask.cxx:14
 AliEbyEParticleRatioFluctuationTask.cxx:15
 AliEbyEParticleRatioFluctuationTask.cxx:16
 AliEbyEParticleRatioFluctuationTask.cxx:17
 AliEbyEParticleRatioFluctuationTask.cxx:18
 AliEbyEParticleRatioFluctuationTask.cxx:19
 AliEbyEParticleRatioFluctuationTask.cxx:20
 AliEbyEParticleRatioFluctuationTask.cxx:21
 AliEbyEParticleRatioFluctuationTask.cxx:22
 AliEbyEParticleRatioFluctuationTask.cxx:23
 AliEbyEParticleRatioFluctuationTask.cxx:24
 AliEbyEParticleRatioFluctuationTask.cxx:25
 AliEbyEParticleRatioFluctuationTask.cxx:26
 AliEbyEParticleRatioFluctuationTask.cxx:27
 AliEbyEParticleRatioFluctuationTask.cxx:28
 AliEbyEParticleRatioFluctuationTask.cxx:29
 AliEbyEParticleRatioFluctuationTask.cxx:30
 AliEbyEParticleRatioFluctuationTask.cxx:31
 AliEbyEParticleRatioFluctuationTask.cxx:32
 AliEbyEParticleRatioFluctuationTask.cxx:33
 AliEbyEParticleRatioFluctuationTask.cxx:34
 AliEbyEParticleRatioFluctuationTask.cxx:35
 AliEbyEParticleRatioFluctuationTask.cxx:36
 AliEbyEParticleRatioFluctuationTask.cxx:37
 AliEbyEParticleRatioFluctuationTask.cxx:38
 AliEbyEParticleRatioFluctuationTask.cxx:39
 AliEbyEParticleRatioFluctuationTask.cxx:40
 AliEbyEParticleRatioFluctuationTask.cxx:41
 AliEbyEParticleRatioFluctuationTask.cxx:42
 AliEbyEParticleRatioFluctuationTask.cxx:43
 AliEbyEParticleRatioFluctuationTask.cxx:44
 AliEbyEParticleRatioFluctuationTask.cxx:45
 AliEbyEParticleRatioFluctuationTask.cxx:46
 AliEbyEParticleRatioFluctuationTask.cxx:47
 AliEbyEParticleRatioFluctuationTask.cxx:48
 AliEbyEParticleRatioFluctuationTask.cxx:49
 AliEbyEParticleRatioFluctuationTask.cxx:50
 AliEbyEParticleRatioFluctuationTask.cxx:51
 AliEbyEParticleRatioFluctuationTask.cxx:52
 AliEbyEParticleRatioFluctuationTask.cxx:53
 AliEbyEParticleRatioFluctuationTask.cxx:54
 AliEbyEParticleRatioFluctuationTask.cxx:55
 AliEbyEParticleRatioFluctuationTask.cxx:56
 AliEbyEParticleRatioFluctuationTask.cxx:57
 AliEbyEParticleRatioFluctuationTask.cxx:58
 AliEbyEParticleRatioFluctuationTask.cxx:59
 AliEbyEParticleRatioFluctuationTask.cxx:60
 AliEbyEParticleRatioFluctuationTask.cxx:61
 AliEbyEParticleRatioFluctuationTask.cxx:62
 AliEbyEParticleRatioFluctuationTask.cxx:63
 AliEbyEParticleRatioFluctuationTask.cxx:64
 AliEbyEParticleRatioFluctuationTask.cxx:65
 AliEbyEParticleRatioFluctuationTask.cxx:66
 AliEbyEParticleRatioFluctuationTask.cxx:67
 AliEbyEParticleRatioFluctuationTask.cxx:68
 AliEbyEParticleRatioFluctuationTask.cxx:69
 AliEbyEParticleRatioFluctuationTask.cxx:70
 AliEbyEParticleRatioFluctuationTask.cxx:71
 AliEbyEParticleRatioFluctuationTask.cxx:72
 AliEbyEParticleRatioFluctuationTask.cxx:73
 AliEbyEParticleRatioFluctuationTask.cxx:74
 AliEbyEParticleRatioFluctuationTask.cxx:75
 AliEbyEParticleRatioFluctuationTask.cxx:76
 AliEbyEParticleRatioFluctuationTask.cxx:77
 AliEbyEParticleRatioFluctuationTask.cxx:78
 AliEbyEParticleRatioFluctuationTask.cxx:79
 AliEbyEParticleRatioFluctuationTask.cxx:80
 AliEbyEParticleRatioFluctuationTask.cxx:81
 AliEbyEParticleRatioFluctuationTask.cxx:82
 AliEbyEParticleRatioFluctuationTask.cxx:83
 AliEbyEParticleRatioFluctuationTask.cxx:84
 AliEbyEParticleRatioFluctuationTask.cxx:85
 AliEbyEParticleRatioFluctuationTask.cxx:86
 AliEbyEParticleRatioFluctuationTask.cxx:87
 AliEbyEParticleRatioFluctuationTask.cxx:88
 AliEbyEParticleRatioFluctuationTask.cxx:89
 AliEbyEParticleRatioFluctuationTask.cxx:90
 AliEbyEParticleRatioFluctuationTask.cxx:91
 AliEbyEParticleRatioFluctuationTask.cxx:92
 AliEbyEParticleRatioFluctuationTask.cxx:93
 AliEbyEParticleRatioFluctuationTask.cxx:94
 AliEbyEParticleRatioFluctuationTask.cxx:95
 AliEbyEParticleRatioFluctuationTask.cxx:96
 AliEbyEParticleRatioFluctuationTask.cxx:97
 AliEbyEParticleRatioFluctuationTask.cxx:98
 AliEbyEParticleRatioFluctuationTask.cxx:99
 AliEbyEParticleRatioFluctuationTask.cxx:100
 AliEbyEParticleRatioFluctuationTask.cxx:101
 AliEbyEParticleRatioFluctuationTask.cxx:102
 AliEbyEParticleRatioFluctuationTask.cxx:103
 AliEbyEParticleRatioFluctuationTask.cxx:104
 AliEbyEParticleRatioFluctuationTask.cxx:105
 AliEbyEParticleRatioFluctuationTask.cxx:106
 AliEbyEParticleRatioFluctuationTask.cxx:107
 AliEbyEParticleRatioFluctuationTask.cxx:108
 AliEbyEParticleRatioFluctuationTask.cxx:109
 AliEbyEParticleRatioFluctuationTask.cxx:110
 AliEbyEParticleRatioFluctuationTask.cxx:111
 AliEbyEParticleRatioFluctuationTask.cxx:112
 AliEbyEParticleRatioFluctuationTask.cxx:113
 AliEbyEParticleRatioFluctuationTask.cxx:114
 AliEbyEParticleRatioFluctuationTask.cxx:115
 AliEbyEParticleRatioFluctuationTask.cxx:116
 AliEbyEParticleRatioFluctuationTask.cxx:117
 AliEbyEParticleRatioFluctuationTask.cxx:118
 AliEbyEParticleRatioFluctuationTask.cxx:119
 AliEbyEParticleRatioFluctuationTask.cxx:120
 AliEbyEParticleRatioFluctuationTask.cxx:121
 AliEbyEParticleRatioFluctuationTask.cxx:122
 AliEbyEParticleRatioFluctuationTask.cxx:123
 AliEbyEParticleRatioFluctuationTask.cxx:124
 AliEbyEParticleRatioFluctuationTask.cxx:125
 AliEbyEParticleRatioFluctuationTask.cxx:126
 AliEbyEParticleRatioFluctuationTask.cxx:127
 AliEbyEParticleRatioFluctuationTask.cxx:128
 AliEbyEParticleRatioFluctuationTask.cxx:129
 AliEbyEParticleRatioFluctuationTask.cxx:130
 AliEbyEParticleRatioFluctuationTask.cxx:131
 AliEbyEParticleRatioFluctuationTask.cxx:132
 AliEbyEParticleRatioFluctuationTask.cxx:133
 AliEbyEParticleRatioFluctuationTask.cxx:134
 AliEbyEParticleRatioFluctuationTask.cxx:135
 AliEbyEParticleRatioFluctuationTask.cxx:136
 AliEbyEParticleRatioFluctuationTask.cxx:137
 AliEbyEParticleRatioFluctuationTask.cxx:138
 AliEbyEParticleRatioFluctuationTask.cxx:139
 AliEbyEParticleRatioFluctuationTask.cxx:140
 AliEbyEParticleRatioFluctuationTask.cxx:141
 AliEbyEParticleRatioFluctuationTask.cxx:142
 AliEbyEParticleRatioFluctuationTask.cxx:143
 AliEbyEParticleRatioFluctuationTask.cxx:144
 AliEbyEParticleRatioFluctuationTask.cxx:145
 AliEbyEParticleRatioFluctuationTask.cxx:146
 AliEbyEParticleRatioFluctuationTask.cxx:147
 AliEbyEParticleRatioFluctuationTask.cxx:148
 AliEbyEParticleRatioFluctuationTask.cxx:149
 AliEbyEParticleRatioFluctuationTask.cxx:150
 AliEbyEParticleRatioFluctuationTask.cxx:151
 AliEbyEParticleRatioFluctuationTask.cxx:152
 AliEbyEParticleRatioFluctuationTask.cxx:153
 AliEbyEParticleRatioFluctuationTask.cxx:154
 AliEbyEParticleRatioFluctuationTask.cxx:155
 AliEbyEParticleRatioFluctuationTask.cxx:156
 AliEbyEParticleRatioFluctuationTask.cxx:157
 AliEbyEParticleRatioFluctuationTask.cxx:158
 AliEbyEParticleRatioFluctuationTask.cxx:159
 AliEbyEParticleRatioFluctuationTask.cxx:160
 AliEbyEParticleRatioFluctuationTask.cxx:161
 AliEbyEParticleRatioFluctuationTask.cxx:162
 AliEbyEParticleRatioFluctuationTask.cxx:163
 AliEbyEParticleRatioFluctuationTask.cxx:164
 AliEbyEParticleRatioFluctuationTask.cxx:165
 AliEbyEParticleRatioFluctuationTask.cxx:166
 AliEbyEParticleRatioFluctuationTask.cxx:167
 AliEbyEParticleRatioFluctuationTask.cxx:168
 AliEbyEParticleRatioFluctuationTask.cxx:169
 AliEbyEParticleRatioFluctuationTask.cxx:170
 AliEbyEParticleRatioFluctuationTask.cxx:171
 AliEbyEParticleRatioFluctuationTask.cxx:172
 AliEbyEParticleRatioFluctuationTask.cxx:173
 AliEbyEParticleRatioFluctuationTask.cxx:174
 AliEbyEParticleRatioFluctuationTask.cxx:175
 AliEbyEParticleRatioFluctuationTask.cxx:176
 AliEbyEParticleRatioFluctuationTask.cxx:177
 AliEbyEParticleRatioFluctuationTask.cxx:178
 AliEbyEParticleRatioFluctuationTask.cxx:179
 AliEbyEParticleRatioFluctuationTask.cxx:180
 AliEbyEParticleRatioFluctuationTask.cxx:181
 AliEbyEParticleRatioFluctuationTask.cxx:182
 AliEbyEParticleRatioFluctuationTask.cxx:183
 AliEbyEParticleRatioFluctuationTask.cxx:184
 AliEbyEParticleRatioFluctuationTask.cxx:185
 AliEbyEParticleRatioFluctuationTask.cxx:186
 AliEbyEParticleRatioFluctuationTask.cxx:187
 AliEbyEParticleRatioFluctuationTask.cxx:188
 AliEbyEParticleRatioFluctuationTask.cxx:189
 AliEbyEParticleRatioFluctuationTask.cxx:190
 AliEbyEParticleRatioFluctuationTask.cxx:191
 AliEbyEParticleRatioFluctuationTask.cxx:192
 AliEbyEParticleRatioFluctuationTask.cxx:193
 AliEbyEParticleRatioFluctuationTask.cxx:194
 AliEbyEParticleRatioFluctuationTask.cxx:195
 AliEbyEParticleRatioFluctuationTask.cxx:196
 AliEbyEParticleRatioFluctuationTask.cxx:197
 AliEbyEParticleRatioFluctuationTask.cxx:198
 AliEbyEParticleRatioFluctuationTask.cxx:199
 AliEbyEParticleRatioFluctuationTask.cxx:200
 AliEbyEParticleRatioFluctuationTask.cxx:201
 AliEbyEParticleRatioFluctuationTask.cxx:202
 AliEbyEParticleRatioFluctuationTask.cxx:203
 AliEbyEParticleRatioFluctuationTask.cxx:204
 AliEbyEParticleRatioFluctuationTask.cxx:205
 AliEbyEParticleRatioFluctuationTask.cxx:206
 AliEbyEParticleRatioFluctuationTask.cxx:207
 AliEbyEParticleRatioFluctuationTask.cxx:208
 AliEbyEParticleRatioFluctuationTask.cxx:209
 AliEbyEParticleRatioFluctuationTask.cxx:210
 AliEbyEParticleRatioFluctuationTask.cxx:211
 AliEbyEParticleRatioFluctuationTask.cxx:212
 AliEbyEParticleRatioFluctuationTask.cxx:213
 AliEbyEParticleRatioFluctuationTask.cxx:214
 AliEbyEParticleRatioFluctuationTask.cxx:215
 AliEbyEParticleRatioFluctuationTask.cxx:216
 AliEbyEParticleRatioFluctuationTask.cxx:217
 AliEbyEParticleRatioFluctuationTask.cxx:218
 AliEbyEParticleRatioFluctuationTask.cxx:219
 AliEbyEParticleRatioFluctuationTask.cxx:220
 AliEbyEParticleRatioFluctuationTask.cxx:221
 AliEbyEParticleRatioFluctuationTask.cxx:222
 AliEbyEParticleRatioFluctuationTask.cxx:223
 AliEbyEParticleRatioFluctuationTask.cxx:224
 AliEbyEParticleRatioFluctuationTask.cxx:225
 AliEbyEParticleRatioFluctuationTask.cxx:226
 AliEbyEParticleRatioFluctuationTask.cxx:227
 AliEbyEParticleRatioFluctuationTask.cxx:228
 AliEbyEParticleRatioFluctuationTask.cxx:229
 AliEbyEParticleRatioFluctuationTask.cxx:230
 AliEbyEParticleRatioFluctuationTask.cxx:231
 AliEbyEParticleRatioFluctuationTask.cxx:232
 AliEbyEParticleRatioFluctuationTask.cxx:233
 AliEbyEParticleRatioFluctuationTask.cxx:234
 AliEbyEParticleRatioFluctuationTask.cxx:235
 AliEbyEParticleRatioFluctuationTask.cxx:236
 AliEbyEParticleRatioFluctuationTask.cxx:237
 AliEbyEParticleRatioFluctuationTask.cxx:238
 AliEbyEParticleRatioFluctuationTask.cxx:239
 AliEbyEParticleRatioFluctuationTask.cxx:240
 AliEbyEParticleRatioFluctuationTask.cxx:241
 AliEbyEParticleRatioFluctuationTask.cxx:242
 AliEbyEParticleRatioFluctuationTask.cxx:243
 AliEbyEParticleRatioFluctuationTask.cxx:244
 AliEbyEParticleRatioFluctuationTask.cxx:245
 AliEbyEParticleRatioFluctuationTask.cxx:246
 AliEbyEParticleRatioFluctuationTask.cxx:247
 AliEbyEParticleRatioFluctuationTask.cxx:248
 AliEbyEParticleRatioFluctuationTask.cxx:249
 AliEbyEParticleRatioFluctuationTask.cxx:250
 AliEbyEParticleRatioFluctuationTask.cxx:251
 AliEbyEParticleRatioFluctuationTask.cxx:252
 AliEbyEParticleRatioFluctuationTask.cxx:253
 AliEbyEParticleRatioFluctuationTask.cxx:254
 AliEbyEParticleRatioFluctuationTask.cxx:255
 AliEbyEParticleRatioFluctuationTask.cxx:256
 AliEbyEParticleRatioFluctuationTask.cxx:257
 AliEbyEParticleRatioFluctuationTask.cxx:258
 AliEbyEParticleRatioFluctuationTask.cxx:259
 AliEbyEParticleRatioFluctuationTask.cxx:260
 AliEbyEParticleRatioFluctuationTask.cxx:261
 AliEbyEParticleRatioFluctuationTask.cxx:262
 AliEbyEParticleRatioFluctuationTask.cxx:263
 AliEbyEParticleRatioFluctuationTask.cxx:264
 AliEbyEParticleRatioFluctuationTask.cxx:265
 AliEbyEParticleRatioFluctuationTask.cxx:266
 AliEbyEParticleRatioFluctuationTask.cxx:267
 AliEbyEParticleRatioFluctuationTask.cxx:268
 AliEbyEParticleRatioFluctuationTask.cxx:269
 AliEbyEParticleRatioFluctuationTask.cxx:270
 AliEbyEParticleRatioFluctuationTask.cxx:271
 AliEbyEParticleRatioFluctuationTask.cxx:272
 AliEbyEParticleRatioFluctuationTask.cxx:273
 AliEbyEParticleRatioFluctuationTask.cxx:274
 AliEbyEParticleRatioFluctuationTask.cxx:275
 AliEbyEParticleRatioFluctuationTask.cxx:276
 AliEbyEParticleRatioFluctuationTask.cxx:277
 AliEbyEParticleRatioFluctuationTask.cxx:278
 AliEbyEParticleRatioFluctuationTask.cxx:279
 AliEbyEParticleRatioFluctuationTask.cxx:280
 AliEbyEParticleRatioFluctuationTask.cxx:281
 AliEbyEParticleRatioFluctuationTask.cxx:282
 AliEbyEParticleRatioFluctuationTask.cxx:283
 AliEbyEParticleRatioFluctuationTask.cxx:284
 AliEbyEParticleRatioFluctuationTask.cxx:285
 AliEbyEParticleRatioFluctuationTask.cxx:286
 AliEbyEParticleRatioFluctuationTask.cxx:287
 AliEbyEParticleRatioFluctuationTask.cxx:288
 AliEbyEParticleRatioFluctuationTask.cxx:289
 AliEbyEParticleRatioFluctuationTask.cxx:290
 AliEbyEParticleRatioFluctuationTask.cxx:291
 AliEbyEParticleRatioFluctuationTask.cxx:292
 AliEbyEParticleRatioFluctuationTask.cxx:293
 AliEbyEParticleRatioFluctuationTask.cxx:294
 AliEbyEParticleRatioFluctuationTask.cxx:295
 AliEbyEParticleRatioFluctuationTask.cxx:296
 AliEbyEParticleRatioFluctuationTask.cxx:297
 AliEbyEParticleRatioFluctuationTask.cxx:298
 AliEbyEParticleRatioFluctuationTask.cxx:299
 AliEbyEParticleRatioFluctuationTask.cxx:300
 AliEbyEParticleRatioFluctuationTask.cxx:301
 AliEbyEParticleRatioFluctuationTask.cxx:302
 AliEbyEParticleRatioFluctuationTask.cxx:303
 AliEbyEParticleRatioFluctuationTask.cxx:304
 AliEbyEParticleRatioFluctuationTask.cxx:305
 AliEbyEParticleRatioFluctuationTask.cxx:306
 AliEbyEParticleRatioFluctuationTask.cxx:307
 AliEbyEParticleRatioFluctuationTask.cxx:308
 AliEbyEParticleRatioFluctuationTask.cxx:309
 AliEbyEParticleRatioFluctuationTask.cxx:310
 AliEbyEParticleRatioFluctuationTask.cxx:311
 AliEbyEParticleRatioFluctuationTask.cxx:312
 AliEbyEParticleRatioFluctuationTask.cxx:313
 AliEbyEParticleRatioFluctuationTask.cxx:314
 AliEbyEParticleRatioFluctuationTask.cxx:315
 AliEbyEParticleRatioFluctuationTask.cxx:316
 AliEbyEParticleRatioFluctuationTask.cxx:317
 AliEbyEParticleRatioFluctuationTask.cxx:318
 AliEbyEParticleRatioFluctuationTask.cxx:319
 AliEbyEParticleRatioFluctuationTask.cxx:320
 AliEbyEParticleRatioFluctuationTask.cxx:321
 AliEbyEParticleRatioFluctuationTask.cxx:322
 AliEbyEParticleRatioFluctuationTask.cxx:323
 AliEbyEParticleRatioFluctuationTask.cxx:324
 AliEbyEParticleRatioFluctuationTask.cxx:325
 AliEbyEParticleRatioFluctuationTask.cxx:326
 AliEbyEParticleRatioFluctuationTask.cxx:327
 AliEbyEParticleRatioFluctuationTask.cxx:328
 AliEbyEParticleRatioFluctuationTask.cxx:329
 AliEbyEParticleRatioFluctuationTask.cxx:330
 AliEbyEParticleRatioFluctuationTask.cxx:331
 AliEbyEParticleRatioFluctuationTask.cxx:332
 AliEbyEParticleRatioFluctuationTask.cxx:333
 AliEbyEParticleRatioFluctuationTask.cxx:334
 AliEbyEParticleRatioFluctuationTask.cxx:335
 AliEbyEParticleRatioFluctuationTask.cxx:336
 AliEbyEParticleRatioFluctuationTask.cxx:337
 AliEbyEParticleRatioFluctuationTask.cxx:338
 AliEbyEParticleRatioFluctuationTask.cxx:339
 AliEbyEParticleRatioFluctuationTask.cxx:340
 AliEbyEParticleRatioFluctuationTask.cxx:341
 AliEbyEParticleRatioFluctuationTask.cxx:342
 AliEbyEParticleRatioFluctuationTask.cxx:343
 AliEbyEParticleRatioFluctuationTask.cxx:344
 AliEbyEParticleRatioFluctuationTask.cxx:345
 AliEbyEParticleRatioFluctuationTask.cxx:346
 AliEbyEParticleRatioFluctuationTask.cxx:347
 AliEbyEParticleRatioFluctuationTask.cxx:348
 AliEbyEParticleRatioFluctuationTask.cxx:349
 AliEbyEParticleRatioFluctuationTask.cxx:350
 AliEbyEParticleRatioFluctuationTask.cxx:351
 AliEbyEParticleRatioFluctuationTask.cxx:352
 AliEbyEParticleRatioFluctuationTask.cxx:353
 AliEbyEParticleRatioFluctuationTask.cxx:354
 AliEbyEParticleRatioFluctuationTask.cxx:355
 AliEbyEParticleRatioFluctuationTask.cxx:356