1 // $Id: AliAnalysisTaskRho.cxx 58408 2012-09-03 07:00:58Z loizides $
3 // Calculation of rho from a collection of jets.
4 // If scale function is given the scaled rho will be exported
5 // with the name as "fRhoName".apppend("_Scaled").
7 // Authors: R.Reed, S.Aiola, M.Connors
9 #include "AliAnalysisTaskRhoSparse.h"
11 #include <TClonesArray.h>
14 #include "AliAnalysisManager.h"
15 #include "AliEmcalJet.h"
17 #include "AliRhoParameter.h"
19 ClassImp(AliAnalysisTaskRhoSparse)
21 //________________________________________________________________________
22 AliAnalysisTaskRhoSparse::AliAnalysisTaskRhoSparse() :
23 AliAnalysisTaskRhoBase("AliAnalysisTaskRhoSparse"),
24 fHistOccCorrvsCent(0),
31 //________________________________________________________________________
32 AliAnalysisTaskRhoSparse::AliAnalysisTaskRhoSparse(const char *name, Bool_t histo) :
33 AliAnalysisTaskRhoBase(name, histo),
34 fHistOccCorrvsCent(0),
41 //________________________________________________________________________
42 void AliAnalysisTaskRhoSparse::UserCreateOutputObjects()
47 AliAnalysisTaskRhoBase::UserCreateOutputObjects();
49 fHistOccCorrvsCent = new TH2F("OccCorrvsCent", "OccCorrvsCent", 101, -1, 100, 2000, 0 , 2);
50 fOutput->Add(fHistOccCorrvsCent);
53 //________________________________________________________________________
54 Bool_t AliAnalysisTaskRhoSparse::Run()
60 fRhoScaled->SetVal(0);
65 const Int_t Njets = fJets->GetEntries();
67 Int_t maxJetIds[] = {-1, -1};
68 Float_t maxJetPts[] = { 0, 0};
70 if (fNExclLeadJets > 0) {
71 for (Int_t ij = 0; ij < Njets; ++ij) {
72 AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(ij));
74 AliError(Form("%s: Could not receive jet %d", GetName(), ij));
81 if (jet->Pt() > maxJetPts[0]) {
82 maxJetPts[1] = maxJetPts[0];
83 maxJetIds[1] = maxJetIds[0];
84 maxJetPts[0] = jet->Pt();
86 } else if (jet->Pt() > maxJetPts[1]) {
87 maxJetPts[1] = jet->Pt();
91 if (fNExclLeadJets < 2) {
97 static Double_t rhovec[999];
99 Double_t TotaljetArea=0;
100 Double_t TotaljetAreaPhys=0;
102 // push all jets within selected acceptance into stack
103 for (Int_t iJets = 0; iJets < Njets; ++iJets) {
105 // exlcuding lead jets
106 if (iJets == maxJetIds[0] || iJets == maxJetIds[1])
109 AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
111 AliError(Form("%s: Could not receive jet %d", GetName(), iJets));
115 //cout << "jetpt: " << jet->Pt() << " jetArea: " << jet->Area() <<endl;
121 if(jet->Pt()>0.01) rhovec[NjetAcc] = jet->Pt() / jet->Area();
122 //cout << "ACCEPTED: jetpt: " << jet->Pt() << " jetArea: " << jet->Area() << " jetRho: " << rhovec[NjetAcc] <<endl;
123 if(jet->Pt()>0.01) TotaljetAreaPhys+=jet->Area();
124 TotaljetArea+=jet->Area();
128 const Double_t TpcMaxPhi = TMath::Pi()*2.;
130 const Double_t TpcArea = TpcMaxPhi * 2.*(0.7);
131 Double_t OccCorr=0.0;
132 //cout << "Area Physical: " << TotaljetAreaPhys << " total: " << TotaljetArea <<endl;
133 //if(TotaljetArea>0) OccCorr=TotaljetAreaPhys/TotaljetArea;
134 if(TpcArea>0) OccCorr=TotaljetAreaPhys/TpcArea;
136 fHistOccCorrvsCent->Fill(fCent, OccCorr);
141 Double_t rho = TMath::Median(NjetAcc, rhovec);
151 Double_t rhoScaled = rho * GetScaleFactor(fCent);
152 fRhoScaled->SetVal(rhoScaled);