ROOT logo
// $Id$
//
// Calculation of rho from a collection of jets.
// If scale function is given the scaled rho will be exported
// with the name as "fOutRhoName".Apppend("_Scaled").
//
// Authors: R.Reed, S.Aiola

#include "AliAnalysisTaskRho.h"

#include <TClonesArray.h>
#include <TMath.h>

#include "AliAnalysisManager.h"
#include "AliEmcalJet.h"
#include "AliLog.h"
#include "AliRhoParameter.h"

ClassImp(AliAnalysisTaskRho)

//________________________________________________________________________
AliAnalysisTaskRho::AliAnalysisTaskRho() : 
  AliAnalysisTaskRhoBase("AliAnalysisTaskRho"),
  fNExclLeadJets(0)
{
  // Constructor.
}

//________________________________________________________________________
AliAnalysisTaskRho::AliAnalysisTaskRho(const char *name, Bool_t histo) :
  AliAnalysisTaskRhoBase(name, histo),
  fNExclLeadJets(0)
{
  // Constructor.
}


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

  fOutRho->SetVal(0);
  if (fOutRhoScaled)
    fOutRhoScaled->SetVal(0);

  if (!fJets)
    return kFALSE;

  const Int_t Njets   = fJets->GetEntries();

  Int_t maxJetIds[]   = {-1, -1};
  Float_t maxJetPts[] = { 0,  0};

  if (fNExclLeadJets > 0) {
    for (Int_t ij = 0; ij < Njets; ++ij) {
      AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(ij));
      if (!jet) {
	AliError(Form("%s: Could not receive jet %d", GetName(), ij));
	continue;
      } 

      if (!AcceptJet(jet))
        continue;

      if (jet->Pt() > maxJetPts[0]) {
	maxJetPts[1] = maxJetPts[0];
	maxJetIds[1] = maxJetIds[0];
	maxJetPts[0] = jet->Pt();
	maxJetIds[0] = ij;
      } else if (jet->Pt() > maxJetPts[1]) {
	maxJetPts[1] = jet->Pt();
	maxJetIds[1] = ij;
      }
    }
    if (fNExclLeadJets < 2) {
      maxJetIds[1] = -1;
      maxJetPts[1] = 0;
    }
  }

  static Double_t rhovec[999];
  Int_t NjetAcc = 0;

  // push all jets within selected acceptance into stack
  for (Int_t iJets = 0; iJets < Njets; ++iJets) {

    // exlcuding lead jets
    if (iJets == maxJetIds[0] || iJets == maxJetIds[1])
      continue;

    AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
    if (!jet) {
      AliError(Form("%s: Could not receive jet %d", GetName(), iJets));
      continue;
    } 

    if (!AcceptJet(jet))
      continue;

    rhovec[NjetAcc] = jet->Pt() / jet->Area();
    ++NjetAcc;
  }


  if (NjetAcc > 0) {
    //find median value
    Double_t rho = TMath::Median(NjetAcc, rhovec);
    fOutRho->SetVal(rho);

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

  return kTRUE;
} 
 AliAnalysisTaskRho.cxx:1
 AliAnalysisTaskRho.cxx:2
 AliAnalysisTaskRho.cxx:3
 AliAnalysisTaskRho.cxx:4
 AliAnalysisTaskRho.cxx:5
 AliAnalysisTaskRho.cxx:6
 AliAnalysisTaskRho.cxx:7
 AliAnalysisTaskRho.cxx:8
 AliAnalysisTaskRho.cxx:9
 AliAnalysisTaskRho.cxx:10
 AliAnalysisTaskRho.cxx:11
 AliAnalysisTaskRho.cxx:12
 AliAnalysisTaskRho.cxx:13
 AliAnalysisTaskRho.cxx:14
 AliAnalysisTaskRho.cxx:15
 AliAnalysisTaskRho.cxx:16
 AliAnalysisTaskRho.cxx:17
 AliAnalysisTaskRho.cxx:18
 AliAnalysisTaskRho.cxx:19
 AliAnalysisTaskRho.cxx:20
 AliAnalysisTaskRho.cxx:21
 AliAnalysisTaskRho.cxx:22
 AliAnalysisTaskRho.cxx:23
 AliAnalysisTaskRho.cxx:24
 AliAnalysisTaskRho.cxx:25
 AliAnalysisTaskRho.cxx:26
 AliAnalysisTaskRho.cxx:27
 AliAnalysisTaskRho.cxx:28
 AliAnalysisTaskRho.cxx:29
 AliAnalysisTaskRho.cxx:30
 AliAnalysisTaskRho.cxx:31
 AliAnalysisTaskRho.cxx:32
 AliAnalysisTaskRho.cxx:33
 AliAnalysisTaskRho.cxx:34
 AliAnalysisTaskRho.cxx:35
 AliAnalysisTaskRho.cxx:36
 AliAnalysisTaskRho.cxx:37
 AliAnalysisTaskRho.cxx:38
 AliAnalysisTaskRho.cxx:39
 AliAnalysisTaskRho.cxx:40
 AliAnalysisTaskRho.cxx:41
 AliAnalysisTaskRho.cxx:42
 AliAnalysisTaskRho.cxx:43
 AliAnalysisTaskRho.cxx:44
 AliAnalysisTaskRho.cxx:45
 AliAnalysisTaskRho.cxx:46
 AliAnalysisTaskRho.cxx:47
 AliAnalysisTaskRho.cxx:48
 AliAnalysisTaskRho.cxx:49
 AliAnalysisTaskRho.cxx:50
 AliAnalysisTaskRho.cxx:51
 AliAnalysisTaskRho.cxx:52
 AliAnalysisTaskRho.cxx:53
 AliAnalysisTaskRho.cxx:54
 AliAnalysisTaskRho.cxx:55
 AliAnalysisTaskRho.cxx:56
 AliAnalysisTaskRho.cxx:57
 AliAnalysisTaskRho.cxx:58
 AliAnalysisTaskRho.cxx:59
 AliAnalysisTaskRho.cxx:60
 AliAnalysisTaskRho.cxx:61
 AliAnalysisTaskRho.cxx:62
 AliAnalysisTaskRho.cxx:63
 AliAnalysisTaskRho.cxx:64
 AliAnalysisTaskRho.cxx:65
 AliAnalysisTaskRho.cxx:66
 AliAnalysisTaskRho.cxx:67
 AliAnalysisTaskRho.cxx:68
 AliAnalysisTaskRho.cxx:69
 AliAnalysisTaskRho.cxx:70
 AliAnalysisTaskRho.cxx:71
 AliAnalysisTaskRho.cxx:72
 AliAnalysisTaskRho.cxx:73
 AliAnalysisTaskRho.cxx:74
 AliAnalysisTaskRho.cxx:75
 AliAnalysisTaskRho.cxx:76
 AliAnalysisTaskRho.cxx:77
 AliAnalysisTaskRho.cxx:78
 AliAnalysisTaskRho.cxx:79
 AliAnalysisTaskRho.cxx:80
 AliAnalysisTaskRho.cxx:81
 AliAnalysisTaskRho.cxx:82
 AliAnalysisTaskRho.cxx:83
 AliAnalysisTaskRho.cxx:84
 AliAnalysisTaskRho.cxx:85
 AliAnalysisTaskRho.cxx:86
 AliAnalysisTaskRho.cxx:87
 AliAnalysisTaskRho.cxx:88
 AliAnalysisTaskRho.cxx:89
 AliAnalysisTaskRho.cxx:90
 AliAnalysisTaskRho.cxx:91
 AliAnalysisTaskRho.cxx:92
 AliAnalysisTaskRho.cxx:93
 AliAnalysisTaskRho.cxx:94
 AliAnalysisTaskRho.cxx:95
 AliAnalysisTaskRho.cxx:96
 AliAnalysisTaskRho.cxx:97
 AliAnalysisTaskRho.cxx:98
 AliAnalysisTaskRho.cxx:99
 AliAnalysisTaskRho.cxx:100
 AliAnalysisTaskRho.cxx:101
 AliAnalysisTaskRho.cxx:102
 AliAnalysisTaskRho.cxx:103
 AliAnalysisTaskRho.cxx:104
 AliAnalysisTaskRho.cxx:105
 AliAnalysisTaskRho.cxx:106
 AliAnalysisTaskRho.cxx:107
 AliAnalysisTaskRho.cxx:108
 AliAnalysisTaskRho.cxx:109
 AliAnalysisTaskRho.cxx:110
 AliAnalysisTaskRho.cxx:111
 AliAnalysisTaskRho.cxx:112
 AliAnalysisTaskRho.cxx:113
 AliAnalysisTaskRho.cxx:114
 AliAnalysisTaskRho.cxx:115
 AliAnalysisTaskRho.cxx:116
 AliAnalysisTaskRho.cxx:117
 AliAnalysisTaskRho.cxx:118