ROOT logo
// $Id$
//
// Base class for rho calculation.
// Calculates parameterized rho for given centrality independent of input.
//
// Author: S.Aiola

#include <TF1.h>
#include <TH1F.h>
#include <TH2F.h>
#include <TH3F.h>
#include <TClonesArray.h>

#include "AliLog.h"
#include "AliRhoParameter.h"
#include "AliEmcalJet.h"
#include "AliParticleContainer.h"
#include "AliClusterContainer.h"
#include "AliVVZERO.h"

#include "AliAnalysisTaskRhoBase.h"

ClassImp(AliAnalysisTaskRhoBase)

//________________________________________________________________________
AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase() : 
  AliAnalysisTaskEmcalJet("AliAnalysisTaskRhoBase", kFALSE),
  fOutRhoName(),
  fOutRhoScaledName(),
  fCompareRhoName(),
  fCompareRhoScaledName(),
  fRhoFunction(0),
  fScaleFunction(0),
  fInEventSigmaRho(35.83),
  fAttachToEvent(kTRUE),
  fOutRho(0),
  fOutRhoScaled(0),
  fCompareRho(0),
  fCompareRhoScaled(0),
  fHistJetPtvsCent(0),
  fHistJetAreavsCent(0),
  fHistJetRhovsCent(0),
  fHistNjetvsCent(0),
  fHistJetPtvsNtrack(0),
  fHistJetAreavsNtrack(0),
  fHistNjetvsNtrack(0),
  fHistRhovsCent(0),
  fHistRhoScaledvsCent(0),
  fHistDeltaRhovsCent(0),
  fHistDeltaRhoScalevsCent(0),
  fHistRhovsNtrackvsV0Mult(0),
  fHistRhoScaledvsNtrackvsV0Mult(0),
  fHistDeltaRhovsNtrack(0),
  fHistDeltaRhoScalevsNtrack(0),
  fHistRhovsNcluster(0),
  fHistRhoScaledvsNcluster(0)
{
  // Constructor.

  for (Int_t i = 0; i < 4; i++) {
    fHistJetNconstVsPt[i] = 0;
    fHistJetRhovsEta[i] = 0;
  }
  for (Int_t i = 0; i < 12; i++) {
    fHistNjUEoverNjVsNj[i] = 0;
  }
}

//________________________________________________________________________
AliAnalysisTaskRhoBase::AliAnalysisTaskRhoBase(const char *name, Bool_t histo) :
  AliAnalysisTaskEmcalJet(name, histo),
  fOutRhoName(),
  fOutRhoScaledName(),
  fCompareRhoName(),
  fCompareRhoScaledName(),
  fRhoFunction(0),
  fScaleFunction(0),
  fInEventSigmaRho(35.83),
  fAttachToEvent(kTRUE),
  fOutRho(0),
  fOutRhoScaled(0),
  fCompareRho(0),
  fCompareRhoScaled(0),
  fHistJetPtvsCent(0),
  fHistJetAreavsCent(0),
  fHistJetRhovsCent(0),
  fHistNjetvsCent(0),
  fHistJetPtvsNtrack(0),
  fHistJetAreavsNtrack(0),
  fHistNjetvsNtrack(0),
  fHistRhovsCent(0),
  fHistRhoScaledvsCent(0),
  fHistDeltaRhovsCent(0),
  fHistDeltaRhoScalevsCent(0),
  fHistRhovsNtrackvsV0Mult(0),
  fHistRhoScaledvsNtrackvsV0Mult(0),
  fHistDeltaRhovsNtrack(0),
  fHistDeltaRhoScalevsNtrack(0),
  fHistRhovsNcluster(0),
  fHistRhoScaledvsNcluster(0)
{
  // Constructor.

  for (Int_t i = 0; i < 4; i++) {
    fHistJetNconstVsPt[i] = 0;
    fHistJetRhovsEta[i] = 0;
  }
  for (Int_t i = 0; i < 12; i++) {
    fHistNjUEoverNjVsNj[i] = 0;
  }
  SetMakeGeneralHistograms(histo);
}

//________________________________________________________________________
void AliAnalysisTaskRhoBase::UserCreateOutputObjects()
{
  // User create output objects, called at the beginning of the analysis.

  if (!fCreateHisto)
    return;

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

  fHistRhovsCent = new TH2F("fHistRhovsCent", "fHistRhovsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt*2);
  fHistRhovsCent->GetXaxis()->SetTitle("Centrality (%)");
  fHistRhovsCent->GetYaxis()->SetTitle("#rho (GeV/c * rad^{-1})");
  fOutput->Add(fHistRhovsCent);

  if (fParticleCollArray.GetEntriesFast()>0) {
    fHistRhovsNtrackvsV0Mult = new TH3F("fHistRhovsNtrackvsV0Mult", "fHistRhovsNtrackvsV0Mult", 150, 0, 6000, fNbins, fMinBinPt, fMaxBinPt*2,100,0.,25000.);
    fHistRhovsNtrackvsV0Mult->GetXaxis()->SetTitle("No. of tracks");
    fHistRhovsNtrackvsV0Mult->GetYaxis()->SetTitle("#rho (GeV/c * rad^{-1})");
    fHistRhovsNtrackvsV0Mult->GetZaxis()->SetTitle("V0 mult");
    fOutput->Add(fHistRhovsNtrackvsV0Mult);
  }

  if (fClusterCollArray.GetEntriesFast()>0) {
    fHistRhovsNcluster = new TH2F("fHistRhovsNcluster", "fHistRhovsNcluster", 50, 0, 1500, fNbins, fMinBinPt, fMaxBinPt*2);
    fHistRhovsNcluster->GetXaxis()->SetTitle("No. of tracks");
    fHistRhovsNcluster->GetYaxis()->SetTitle("#rho (GeV/c * rad^{-1})");
    fOutput->Add(fHistRhovsNcluster);
  }

  if (fJetCollArray.GetEntriesFast()>0) {
    fHistJetPtvsCent = new TH2F("fHistJetPtvsCent", "fHistJetPtvsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt);
    fHistJetPtvsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistJetPtvsCent->GetYaxis()->SetTitle("#it{p}_{T,jet} (GeV/c)");
    fOutput->Add(fHistJetPtvsCent);

    fHistJetAreavsCent = new TH2F("fHistJetAreavsCent", "fHistJetAreavsCent", 101, -1, 100, 100, 0, 1);
    fHistJetAreavsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistJetAreavsCent->GetYaxis()->SetTitle("Jet area");
    fOutput->Add(fHistJetAreavsCent);

    fHistJetRhovsCent = new TH2F("fHistJetRhovsCent", "fHistJetRhovsCent", 101, -1, 100, fNbins, fMinBinPt, fMaxBinPt*2);
    fHistJetRhovsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistJetRhovsCent->GetYaxis()->SetTitle("Jet #rho (GeV/c)");
    fOutput->Add(fHistJetRhovsCent);

    fHistNjetvsCent = new TH2F("fHistNjetvsCent",  "fHistNjetvsCent", 101, -1, 100, 150, -0.5, 149.5);
    fHistNjetvsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistNjetvsCent->GetYaxis()->SetTitle("No. of jets");
    fOutput->Add(fHistNjetvsCent);


    if (fParticleCollArray.GetEntriesFast()>0) {
      fHistJetPtvsNtrack = new TH2F("fHistJetPtvsNtrack", "fHistJetPtvsNtrack", 150, 0, 6000, fNbins, fMinBinPt, fMaxBinPt);
      fHistJetPtvsNtrack->GetXaxis()->SetTitle("No. of tracks");
      fHistJetPtvsNtrack->GetYaxis()->SetTitle("#it{p}_{T,jet} (GeV/c)");
      fOutput->Add(fHistJetPtvsNtrack);

      fHistJetAreavsNtrack = new TH2F("fHistJetAreavsNtrack", "fHistJetAreavsNtrack", 150, 0, 6000, 100, 0, 1);
      fHistJetAreavsNtrack->GetXaxis()->SetTitle("No. of tracks");
      fHistJetAreavsNtrack->GetYaxis()->SetTitle("Jet area");
      fOutput->Add(fHistJetAreavsNtrack);

      fHistNjetvsNtrack = new TH2F("fHistNjetvsNtrack", "fHistNjetvsNtrack", 150, 0, 6000, 150, -0.5, 149.5);
      fHistNjetvsNtrack->GetXaxis()->SetTitle("No. of jets");
      fHistNjetvsNtrack->GetYaxis()->SetTitle("No. of tracks");
      fOutput->Add(fHistNjetvsNtrack);
    }


    TString name;
    for (Int_t i = 0; i < 4; i++) {
      name = Form("fHistJetNconstVsPt_%d",i);
      fHistJetNconstVsPt[i] = new TH2F(name, name, 150, -0.5, 149.5, fNbins, fMinBinPt, fMaxBinPt);
      fHistJetNconstVsPt[i]->GetXaxis()->SetTitle("No. of constituents");
      fHistJetNconstVsPt[i]->GetYaxis()->SetTitle("p_{T,jet} (GeV/c)");
      fOutput->Add(fHistJetNconstVsPt[i]);

      name = Form("fHistJetRhovsEta_%d",i);
      fHistJetRhovsEta[i] = new TH2F(name, name, fNbins, fMinBinPt, fMaxBinPt*2, 16, -0.8, 0.8);
      fHistJetRhovsEta[i]->GetXaxis()->SetTitle("#rho (GeV/c * rad^{-1})");
      fHistJetRhovsEta[i]->GetYaxis()->SetTitle("#eta");
      fOutput->Add(fHistJetRhovsEta[i]);

      for (Int_t j = 0; j < 3; j++) {
	name = Form("NjUEoverNjVsNj_%d_%d",i,j+1);
	fHistNjUEoverNjVsNj[i*3+j] = new TH2F(name, name, 150, -0.5, 149.5, 120, 0.01, 1.21);
	fHistNjUEoverNjVsNj[i*3+j]->GetXaxis()->SetTitle("N_{jet}");
	fHistNjUEoverNjVsNj[i*3+j]->GetYaxis()->SetTitle("N_{jet_{UE}} / N_{jet}");
	fOutput->Add(fHistNjUEoverNjVsNj[i*3+j]);
      }
    }
  }
  
  if (!fCompareRhoName.IsNull()) {
    fHistDeltaRhovsCent = new TH2F("fHistDeltaRhovsCent", "fHistDeltaRhovsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
    fHistDeltaRhovsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistDeltaRhovsCent->GetYaxis()->SetTitle("#Delta#rho (GeV/c * rad^{-1})");
    fOutput->Add(fHistDeltaRhovsCent);

    if (fParticleCollArray.GetEntriesFast()>0) {
      fHistDeltaRhovsNtrack = new TH2F("fHistDeltaRhovsNtrack", "fHistDeltaRhovsNtrack", 150, 0, 6000, fNbins, -fMaxBinPt, fMaxBinPt);
      fHistDeltaRhovsNtrack->GetXaxis()->SetTitle("No. of tracks");
      fHistDeltaRhovsNtrack->GetYaxis()->SetTitle("#Delta#rho (GeV/c * rad^{-1})");
      fOutput->Add(fHistDeltaRhovsNtrack);
    }
  }

  if (fScaleFunction) {
    fHistRhoScaledvsCent = new TH2F("fHistRhoScaledvsCent", "fHistRhoScaledvsCent", 101, -1, 100, fNbins, fMinBinPt , fMaxBinPt*2);
    fHistRhoScaledvsCent->GetXaxis()->SetTitle("Centrality (%)");
    fHistRhoScaledvsCent->GetYaxis()->SetTitle("#rho_{scaled} (GeV/c * rad^{-1})");
    fOutput->Add(fHistRhoScaledvsCent);

    if (fParticleCollArray.GetEntriesFast()>0) {
      fHistRhoScaledvsNtrackvsV0Mult = new TH3F("fHistRhoScaledvsNtrackvsV0Mult", "fHistRhoScaledvsNtrackvsV0Mult", 150, 0, 6000, fNbins, fMinBinPt, fMaxBinPt*2,100,0.,25000.);
      fHistRhoScaledvsNtrackvsV0Mult->GetXaxis()->SetTitle("No. of tracks");
      fHistRhoScaledvsNtrackvsV0Mult->GetYaxis()->SetTitle("#rho (GeV/c * rad^{-1})");
      fHistRhoScaledvsNtrackvsV0Mult->GetZaxis()->SetTitle("V0 mult");
      fOutput->Add(fHistRhoScaledvsNtrackvsV0Mult);
    }

    if (fClusterCollArray.GetEntriesFast()>0) {
      fHistRhoScaledvsNcluster = new TH2F("fHistRhoScaledvsNcluster", "fHistRhoScaledvsNcluster", 50, 0, 1500, fNbins, fMinBinPt, fMaxBinPt*2);
      fHistRhoScaledvsNcluster->GetXaxis()->SetTitle("No. of clusters");
      fHistRhoScaledvsNcluster->GetYaxis()->SetTitle("#rho_{scaled} (GeV/c * rad^{-1})");
      fOutput->Add(fHistRhoScaledvsNcluster);
    }

    if (!fCompareRhoScaledName.IsNull()) {
      fHistDeltaRhoScalevsCent = new TH2F("fHistDeltaRhoScalevsCent", "fHistDeltaRhoScalevsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
      fHistDeltaRhoScalevsCent->GetXaxis()->SetTitle("Centrality (%)");
      fHistDeltaRhoScalevsCent->GetYaxis()->SetTitle("#Delta#rho_{scaled} (GeV/c * rad^{-1})");
      fOutput->Add(fHistDeltaRhoScalevsCent);
      
      if (fParticleCollArray.GetEntriesFast()>0) {
	fHistDeltaRhoScalevsNtrack = new TH2F("fHistDeltaRhoScalevsNtrack", "fHistDeltaRhoScalevsNtrack", 150, 0, 6000, fNbins, -fMaxBinPt, fMaxBinPt);
	fHistDeltaRhoScalevsNtrack->GetXaxis()->SetTitle("No. of tracks");
	fHistDeltaRhoScalevsNtrack->GetYaxis()->SetTitle("#Delta#rho_{scaled} (GeV/c * rad^{-1})");
	fOutput->Add(fHistDeltaRhoScalevsNtrack);
      }
    }
  }
}

//________________________________________________________________________
Bool_t AliAnalysisTaskRhoBase::Run() 
{
  // Run the analysis.

  Double_t rho = GetRhoFactor(fCent);
  fOutRho->SetVal(rho);

  if (fScaleFunction) {
    Double_t rhoScaled = rho * GetScaleFactor(fCent);
    fOutRhoScaled->SetVal(rhoScaled);
  }

  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskRhoBase::FillHistograms() 
{
  // Fill histograms.

  Int_t Ntracks   = 0;
  Int_t Nclusters = 0;

  AliVVZERO* vV0 = InputEvent()->GetVZEROData();
  Float_t multV0A = vV0->GetMTotV0A();
  Float_t multV0C = vV0->GetMTotV0C();

  if (GetParticleContainer(0))
    Ntracks = GetParticleContainer(0)->GetNAcceptedParticles();
  if (GetClusterContainer(0))
    Nclusters = GetClusterContainer(0)->GetNAcceptedClusters();

  if (fJets) {
    Int_t    Njets         = fJets->GetEntries();
    Int_t    NjetAcc       = 0;
    Int_t    NjetUE1Sigma  = 0;
    Int_t    NjetUE2Sigma  = 0;
    Int_t    NjetUE3Sigma  = 0;
    Double_t rhoPlus1Sigma = fOutRho->GetVal() + fInEventSigmaRho;
    Double_t rhoPlus2Sigma = fOutRho->GetVal() + 2*fInEventSigmaRho;
    Double_t rhoPlus3Sigma = fOutRho->GetVal() + 3*fInEventSigmaRho;

    for (Int_t i = 0; i < Njets; ++i) {
      
      AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(i));
      if (!jet) {
	AliError(Form("%s: Could not receive jet %d", GetName(), i));
	continue;
      } 
      
      if (!AcceptJet(jet))
	continue;
      
      fHistJetPtvsCent->Fill(fCent, jet->Pt());
      fHistJetAreavsCent->Fill(fCent, jet->Area());
      fHistJetRhovsCent->Fill(fCent, jet->Pt() / jet->Area());
      fHistJetRhovsEta[fCentBin]->Fill(jet->Pt() / jet->Area(), jet->Eta());

      if (fTracks) {
	fHistJetPtvsNtrack->Fill(Ntracks, jet->Pt());
	fHistJetAreavsNtrack->Fill(Ntracks, jet->Area());
      }

      fHistJetNconstVsPt[fCentBin]->Fill(jet->GetNumberOfConstituents(), jet->Pt());

      if (jet->Pt() < rhoPlus1Sigma * jet->Area())
	NjetUE1Sigma++;

      if (jet->Pt() < rhoPlus2Sigma * jet->Area())
	NjetUE2Sigma++;

      if (jet->Pt() < rhoPlus3Sigma * jet->Area())
	NjetUE3Sigma++;
      
      NjetAcc++;
    }
    
    if (NjetAcc>0) {
      fHistNjUEoverNjVsNj[fCentBin*3  ]->Fill(NjetAcc,1.*NjetUE1Sigma/NjetAcc);
      fHistNjUEoverNjVsNj[fCentBin*3+1]->Fill(NjetAcc,1.*NjetUE2Sigma/NjetAcc);
      fHistNjUEoverNjVsNj[fCentBin*3+2]->Fill(NjetAcc,1.*NjetUE3Sigma/NjetAcc);
    }

    fHistNjetvsCent->Fill(fCent, NjetAcc);
    if (fTracks)
      fHistNjetvsNtrack->Fill(Ntracks, NjetAcc);
  }
  
  fHistRhovsCent->Fill(fCent, fOutRho->GetVal());

  if (fTracks)
    fHistRhovsNtrackvsV0Mult->Fill(Ntracks, fOutRho->GetVal(),multV0A+multV0C);
  if (fCaloClusters)
    fHistRhovsNcluster->Fill(Nclusters, fOutRho->GetVal());
  if (fCompareRho) {
    fHistDeltaRhovsCent->Fill(fCent, fOutRho->GetVal() - fCompareRho->GetVal());
    if (fTracks)
      fHistDeltaRhovsNtrack->Fill(Ntracks, fOutRho->GetVal() - fCompareRho->GetVal());
  }

  if (fOutRhoScaled) {
    fHistRhoScaledvsCent->Fill(fCent, fOutRhoScaled->GetVal());
    if (fTracks)
      fHistRhoScaledvsNtrackvsV0Mult->Fill(Ntracks, fOutRhoScaled->GetVal(),multV0A+multV0C);
    if (fCaloClusters)
      fHistRhoScaledvsNcluster->Fill(Nclusters,  fOutRhoScaled->GetVal());
    if (fCompareRhoScaled) {
      fHistDeltaRhoScalevsCent->Fill(fCent, fOutRhoScaled->GetVal() - fCompareRhoScaled->GetVal());
      if (fTracks)
	fHistDeltaRhoScalevsNtrack->Fill(Ntracks, fOutRhoScaled->GetVal() - fCompareRhoScaled->GetVal());
    }
  }

  return kTRUE;
}      


//________________________________________________________________________
void AliAnalysisTaskRhoBase::ExecOnce() 
{
  // Init the analysis.

  if (!fOutRho) {
    fOutRho = new AliRhoParameter(fOutRhoName, 0);

    if (fAttachToEvent) {
      if (!(InputEvent()->FindListObject(fOutRhoName))) {
	InputEvent()->AddObject(fOutRho);
      } else {
	AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutRhoName.Data()));
	return;
      }
    }
  }

  if (fScaleFunction && !fOutRhoScaled) {
    fOutRhoScaled = new AliRhoParameter(fOutRhoScaledName, 0);

    if (fAttachToEvent) {
      if (!(InputEvent()->FindListObject(fOutRhoScaledName))) {
	InputEvent()->AddObject(fOutRhoScaled);
      } else {
	AliFatal(Form("%s: Container with same name %s already present. Aborting", GetName(), fOutRhoScaledName.Data()));
	return;
      }
    }
  }

  if (!fCompareRhoName.IsNull() && !fCompareRho) {
    fCompareRho = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fCompareRhoName));
    if (!fCompareRho) {
      AliWarning(Form("%s: Could not retrieve rho %s!", GetName(), fCompareRhoName.Data()));
    }
  }

  if (!fCompareRhoScaledName.IsNull() && !fCompareRhoScaled) {
    fCompareRhoScaled = dynamic_cast<AliRhoParameter*>(InputEvent()->FindListObject(fCompareRhoScaledName));
    if (!fCompareRhoScaled) {
      AliWarning(Form("%s: Could not retrieve rho %s!", GetName(), fCompareRhoScaledName.Data()));
    }
  }

  AliAnalysisTaskEmcalJet::ExecOnce();
}

//________________________________________________________________________
Double_t AliAnalysisTaskRhoBase::GetRhoFactor(Double_t cent)
{
  // Return rho per centrality.

  Double_t rho = 0;
  if (fRhoFunction)
    rho = fRhoFunction->Eval(cent);
  return rho;
}

//________________________________________________________________________
Double_t AliAnalysisTaskRhoBase::GetScaleFactor(Double_t cent)
{
  // Get scale factor.

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