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 "fOutRhoName".Apppend("_Scaled").
7 // Authors: R.Reed, S.Aiola
9 #include "AliAnalysisTaskRho.h"
11 #include <TClonesArray.h>
14 #include "AliAnalysisManager.h"
15 #include "AliEmcalJet.h"
17 #include "AliRhoParameter.h"
19 ClassImp(AliAnalysisTaskRho)
21 //________________________________________________________________________
22 AliAnalysisTaskRho::AliAnalysisTaskRho() :
23 AliAnalysisTaskRhoBase("AliAnalysisTaskRho"),
29 //________________________________________________________________________
30 AliAnalysisTaskRho::AliAnalysisTaskRho(const char *name, Bool_t histo) :
31 AliAnalysisTaskRhoBase(name, histo),
38 //________________________________________________________________________
39 Bool_t AliAnalysisTaskRho::Run()
45 fOutRhoScaled->SetVal(0);
50 const Int_t Njets = fJets->GetEntries();
52 Int_t maxJetIds[] = {-1, -1};
53 Float_t maxJetPts[] = { 0, 0};
55 if (fNExclLeadJets > 0) {
56 for (Int_t ij = 0; ij < Njets; ++ij) {
57 AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(ij));
59 AliError(Form("%s: Could not receive jet %d", GetName(), ij));
66 if (jet->Pt() > maxJetPts[0]) {
67 maxJetPts[1] = maxJetPts[0];
68 maxJetIds[1] = maxJetIds[0];
69 maxJetPts[0] = jet->Pt();
71 } else if (jet->Pt() > maxJetPts[1]) {
72 maxJetPts[1] = jet->Pt();
76 if (fNExclLeadJets < 2) {
82 static Double_t rhovec[999];
85 // push all jets within selected acceptance into stack
86 for (Int_t iJets = 0; iJets < Njets; ++iJets) {
88 // exlcuding lead jets
89 if (iJets == maxJetIds[0] || iJets == maxJetIds[1])
92 AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
94 AliError(Form("%s: Could not receive jet %d", GetName(), iJets));
101 rhovec[NjetAcc] = jet->Pt() / jet->Area();
108 Double_t rho = TMath::Median(NjetAcc, rhovec);
109 fOutRho->SetVal(rho);
112 Double_t rhoScaled = rho * GetScaleFactor(fCent);
113 fOutRhoScaled->SetVal(rhoScaled);