#include "AliAnalysisTaskRhoAverage.h"
#include <TClonesArray.h>
#include <TMath.h>
#include "AliLog.h"
#include "AliRhoParameter.h"
#include "AliVCluster.h"
#include "AliVTrack.h"
#include "AliParticleContainer.h"
ClassImp(AliAnalysisTaskRhoAverage)
AliAnalysisTaskRhoAverage::AliAnalysisTaskRhoAverage() :
AliAnalysisTaskRhoBase("AliAnalysisTaskRhoAverage"),
fRhoType(0),
fNExclLeadPart(0),
fUseMedian(kFALSE),
fTotalArea(1)
{
}
AliAnalysisTaskRhoAverage::AliAnalysisTaskRhoAverage(const char *name, Bool_t histo) :
AliAnalysisTaskRhoBase(name, histo),
fRhoType(0),
fNExclLeadPart(0),
fUseMedian(kFALSE),
fTotalArea(1)
{
}
Bool_t AliAnalysisTaskRhoAverage::Run()
{
const Int_t NMAX = 9999;
static Double_t rhovec[NMAX];
Int_t NpartAcc = 0;
Int_t maxPartIds[] = {0, 0};
Float_t maxPartPts[] = {0, 0};
if (fNExclLeadPart > 0) {
if (fTracks && (fRhoType == 0 || fRhoType == 1)) {
const Int_t Ntracks = fTracks->GetEntriesFast();
for (Int_t it = 0; it < Ntracks; ++it) {
AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(it));
if (!track) {
AliError(Form("%s: Could not receive track %d", GetName(), it));
continue;
}
if (!AcceptTrack(track))
continue;
if (track->Pt() > maxPartPts[0]) {
maxPartPts[1] = maxPartPts[0];
maxPartIds[1] = maxPartIds[0];
maxPartPts[0] = track->Pt();
maxPartIds[0] = it+1;
}
else if (track->Pt() > maxPartPts[1]) {
maxPartPts[1] = track->Pt();
maxPartIds[1] = it+1;
}
}
}
if (fCaloClusters && (fRhoType == 0 || fRhoType == 2)) {
const Int_t Nclusters = fCaloClusters->GetEntriesFast();
for (Int_t ic = 0; ic < Nclusters; ++ic) {
AliVCluster *cluster = static_cast<AliVCluster*>(fCaloClusters->At(ic));
if (!cluster) {
AliError(Form("%s: Could not receive cluster %d", GetName(), ic));
continue;
}
if (!AcceptCluster(cluster))
continue;
TLorentzVector nPart;
cluster->GetMomentum(nPart, fVertex);
if (nPart.Pt() > maxPartPts[0]) {
maxPartPts[1] = maxPartPts[0];
maxPartIds[1] = maxPartIds[0];
maxPartPts[0] = nPart.Pt();
maxPartIds[0] = -ic-1;
}
else if (nPart.Pt() > maxPartPts[1]) {
maxPartPts[1] = nPart.Pt();
maxPartIds[1] = -ic-1;
}
}
}
if (fNExclLeadPart < 2) {
maxPartIds[1] = 0;
maxPartPts[1] = 0;
}
}
if (fTracks && (fRhoType == 0 || fRhoType == 1)) {
const Int_t Ntracks = fTracks->GetEntriesFast();
for (Int_t it = 0; it < Ntracks && NpartAcc < NMAX; ++it) {
if (it == maxPartIds[0]-1 || it == maxPartIds[1]-1)
continue;
AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(it));
if (!track) {
AliError(Form("%s: Could not receive track %d", GetName(), it));
continue;
}
if (!AcceptTrack(track))
continue;
rhovec[NpartAcc] = track->Pt();
++NpartAcc;
}
}
if (fCaloClusters && (fRhoType == 0 || fRhoType == 2)) {
const Int_t Nclusters = fCaloClusters->GetEntriesFast();
for (Int_t ic = 0; ic < Nclusters && NpartAcc < NMAX; ++ic) {
if (ic == -maxPartIds[0]-1 || ic == -maxPartIds[1]-1)
continue;
AliVCluster *cluster = static_cast<AliVCluster*>(fCaloClusters->At(ic));
if (!cluster) {
AliError(Form("%s: Could not receive cluster %d", GetName(), ic));
continue;
}
if (!AcceptCluster(cluster))
continue;
TLorentzVector nPart;
cluster->GetMomentum(nPart, fVertex);
rhovec[NpartAcc] = nPart.Pt();
++NpartAcc;
}
}
if (NpartAcc == NMAX) {
AliError(Form("%s: NpartAcc >= %d", GetName(), NMAX));
}
Double_t rho = 0;
if (NpartAcc > 0) {
if (fUseMedian)
rho = TMath::Median(NpartAcc, rhovec);
else
rho = TMath::Mean(NpartAcc, rhovec);
rho *= NpartAcc / fTotalArea;
}
fOutRho->SetVal(rho);
if (fScaleFunction) {
Double_t rhoScaled = rho * GetScaleFactor(fCent);
fOutRhoScaled->SetVal(rhoScaled);
}
return kTRUE;
}
void AliAnalysisTaskRhoAverage::ExecOnce()
{
AliAnalysisTaskRhoBase::ExecOnce();
AliParticleContainer *partCont = GetParticleContainer(0);
if (!partCont) {
AliError(Form("%s: No particle container found! Assuming area = 1...",GetName()));
fTotalArea = 1;
return;
}
Float_t maxEta = partCont->GetParticleEtaMax();
Float_t minEta = partCont->GetParticleEtaMin();
Float_t maxPhi = partCont->GetParticlePhiMax();
Float_t minPhi = partCont->GetParticlePhiMin();
if (maxPhi > TMath::Pi() * 2) maxPhi = TMath::Pi() * 2;
if (minPhi < 0) minPhi = 0;
fTotalArea = (maxEta - minEta) * (maxPhi - minPhi);
if (fTotalArea < 1e-6) {
AliError(Form("%s: Area = %f < 1e-6, assuming area = 1", GetName(), fTotalArea));
fTotalArea = 1;
}
}
AliAnalysisTaskRhoAverage.cxx:1 AliAnalysisTaskRhoAverage.cxx:2 AliAnalysisTaskRhoAverage.cxx:3 AliAnalysisTaskRhoAverage.cxx:4 AliAnalysisTaskRhoAverage.cxx:5 AliAnalysisTaskRhoAverage.cxx:6 AliAnalysisTaskRhoAverage.cxx:7 AliAnalysisTaskRhoAverage.cxx:8 AliAnalysisTaskRhoAverage.cxx:9 AliAnalysisTaskRhoAverage.cxx:10 AliAnalysisTaskRhoAverage.cxx:11 AliAnalysisTaskRhoAverage.cxx:12 AliAnalysisTaskRhoAverage.cxx:13 AliAnalysisTaskRhoAverage.cxx:14 AliAnalysisTaskRhoAverage.cxx:15 AliAnalysisTaskRhoAverage.cxx:16 AliAnalysisTaskRhoAverage.cxx:17 AliAnalysisTaskRhoAverage.cxx:18 AliAnalysisTaskRhoAverage.cxx:19 AliAnalysisTaskRhoAverage.cxx:20 AliAnalysisTaskRhoAverage.cxx:21 AliAnalysisTaskRhoAverage.cxx:22 AliAnalysisTaskRhoAverage.cxx:23 AliAnalysisTaskRhoAverage.cxx:24 AliAnalysisTaskRhoAverage.cxx:25 AliAnalysisTaskRhoAverage.cxx:26 AliAnalysisTaskRhoAverage.cxx:27 AliAnalysisTaskRhoAverage.cxx:28 AliAnalysisTaskRhoAverage.cxx:29 AliAnalysisTaskRhoAverage.cxx:30 AliAnalysisTaskRhoAverage.cxx:31 AliAnalysisTaskRhoAverage.cxx:32 AliAnalysisTaskRhoAverage.cxx:33 AliAnalysisTaskRhoAverage.cxx:34 AliAnalysisTaskRhoAverage.cxx:35 AliAnalysisTaskRhoAverage.cxx:36 AliAnalysisTaskRhoAverage.cxx:37 AliAnalysisTaskRhoAverage.cxx:38 AliAnalysisTaskRhoAverage.cxx:39 AliAnalysisTaskRhoAverage.cxx:40 AliAnalysisTaskRhoAverage.cxx:41 AliAnalysisTaskRhoAverage.cxx:42 AliAnalysisTaskRhoAverage.cxx:43 AliAnalysisTaskRhoAverage.cxx:44 AliAnalysisTaskRhoAverage.cxx:45 AliAnalysisTaskRhoAverage.cxx:46 AliAnalysisTaskRhoAverage.cxx:47 AliAnalysisTaskRhoAverage.cxx:48 AliAnalysisTaskRhoAverage.cxx:49 AliAnalysisTaskRhoAverage.cxx:50 AliAnalysisTaskRhoAverage.cxx:51 AliAnalysisTaskRhoAverage.cxx:52 AliAnalysisTaskRhoAverage.cxx:53 AliAnalysisTaskRhoAverage.cxx:54 AliAnalysisTaskRhoAverage.cxx:55 AliAnalysisTaskRhoAverage.cxx:56 AliAnalysisTaskRhoAverage.cxx:57 AliAnalysisTaskRhoAverage.cxx:58 AliAnalysisTaskRhoAverage.cxx:59 AliAnalysisTaskRhoAverage.cxx:60 AliAnalysisTaskRhoAverage.cxx:61 AliAnalysisTaskRhoAverage.cxx:62 AliAnalysisTaskRhoAverage.cxx:63 AliAnalysisTaskRhoAverage.cxx:64 AliAnalysisTaskRhoAverage.cxx:65 AliAnalysisTaskRhoAverage.cxx:66 AliAnalysisTaskRhoAverage.cxx:67 AliAnalysisTaskRhoAverage.cxx:68 AliAnalysisTaskRhoAverage.cxx:69 AliAnalysisTaskRhoAverage.cxx:70 AliAnalysisTaskRhoAverage.cxx:71 AliAnalysisTaskRhoAverage.cxx:72 AliAnalysisTaskRhoAverage.cxx:73 AliAnalysisTaskRhoAverage.cxx:74 AliAnalysisTaskRhoAverage.cxx:75 AliAnalysisTaskRhoAverage.cxx:76 AliAnalysisTaskRhoAverage.cxx:77 AliAnalysisTaskRhoAverage.cxx:78 AliAnalysisTaskRhoAverage.cxx:79 AliAnalysisTaskRhoAverage.cxx:80 AliAnalysisTaskRhoAverage.cxx:81 AliAnalysisTaskRhoAverage.cxx:82 AliAnalysisTaskRhoAverage.cxx:83 AliAnalysisTaskRhoAverage.cxx:84 AliAnalysisTaskRhoAverage.cxx:85 AliAnalysisTaskRhoAverage.cxx:86 AliAnalysisTaskRhoAverage.cxx:87 AliAnalysisTaskRhoAverage.cxx:88 AliAnalysisTaskRhoAverage.cxx:89 AliAnalysisTaskRhoAverage.cxx:90 AliAnalysisTaskRhoAverage.cxx:91 AliAnalysisTaskRhoAverage.cxx:92 AliAnalysisTaskRhoAverage.cxx:93 AliAnalysisTaskRhoAverage.cxx:94 AliAnalysisTaskRhoAverage.cxx:95 AliAnalysisTaskRhoAverage.cxx:96 AliAnalysisTaskRhoAverage.cxx:97 AliAnalysisTaskRhoAverage.cxx:98 AliAnalysisTaskRhoAverage.cxx:99 AliAnalysisTaskRhoAverage.cxx:100 AliAnalysisTaskRhoAverage.cxx:101 AliAnalysisTaskRhoAverage.cxx:102 AliAnalysisTaskRhoAverage.cxx:103 AliAnalysisTaskRhoAverage.cxx:104 AliAnalysisTaskRhoAverage.cxx:105 AliAnalysisTaskRhoAverage.cxx:106 AliAnalysisTaskRhoAverage.cxx:107 AliAnalysisTaskRhoAverage.cxx:108 AliAnalysisTaskRhoAverage.cxx:109 AliAnalysisTaskRhoAverage.cxx:110 AliAnalysisTaskRhoAverage.cxx:111 AliAnalysisTaskRhoAverage.cxx:112 AliAnalysisTaskRhoAverage.cxx:113 AliAnalysisTaskRhoAverage.cxx:114 AliAnalysisTaskRhoAverage.cxx:115 AliAnalysisTaskRhoAverage.cxx:116 AliAnalysisTaskRhoAverage.cxx:117 AliAnalysisTaskRhoAverage.cxx:118 AliAnalysisTaskRhoAverage.cxx:119 AliAnalysisTaskRhoAverage.cxx:120 AliAnalysisTaskRhoAverage.cxx:121 AliAnalysisTaskRhoAverage.cxx:122 AliAnalysisTaskRhoAverage.cxx:123 AliAnalysisTaskRhoAverage.cxx:124 AliAnalysisTaskRhoAverage.cxx:125 AliAnalysisTaskRhoAverage.cxx:126 AliAnalysisTaskRhoAverage.cxx:127 AliAnalysisTaskRhoAverage.cxx:128 AliAnalysisTaskRhoAverage.cxx:129 AliAnalysisTaskRhoAverage.cxx:130 AliAnalysisTaskRhoAverage.cxx:131 AliAnalysisTaskRhoAverage.cxx:132 AliAnalysisTaskRhoAverage.cxx:133 AliAnalysisTaskRhoAverage.cxx:134 AliAnalysisTaskRhoAverage.cxx:135 AliAnalysisTaskRhoAverage.cxx:136 AliAnalysisTaskRhoAverage.cxx:137 AliAnalysisTaskRhoAverage.cxx:138 AliAnalysisTaskRhoAverage.cxx:139 AliAnalysisTaskRhoAverage.cxx:140 AliAnalysisTaskRhoAverage.cxx:141 AliAnalysisTaskRhoAverage.cxx:142 AliAnalysisTaskRhoAverage.cxx:143 AliAnalysisTaskRhoAverage.cxx:144 AliAnalysisTaskRhoAverage.cxx:145 AliAnalysisTaskRhoAverage.cxx:146 AliAnalysisTaskRhoAverage.cxx:147 AliAnalysisTaskRhoAverage.cxx:148 AliAnalysisTaskRhoAverage.cxx:149 AliAnalysisTaskRhoAverage.cxx:150 AliAnalysisTaskRhoAverage.cxx:151 AliAnalysisTaskRhoAverage.cxx:152 AliAnalysisTaskRhoAverage.cxx:153 AliAnalysisTaskRhoAverage.cxx:154 AliAnalysisTaskRhoAverage.cxx:155 AliAnalysisTaskRhoAverage.cxx:156 AliAnalysisTaskRhoAverage.cxx:157 AliAnalysisTaskRhoAverage.cxx:158 AliAnalysisTaskRhoAverage.cxx:159 AliAnalysisTaskRhoAverage.cxx:160 AliAnalysisTaskRhoAverage.cxx:161 AliAnalysisTaskRhoAverage.cxx:162 AliAnalysisTaskRhoAverage.cxx:163 AliAnalysisTaskRhoAverage.cxx:164 AliAnalysisTaskRhoAverage.cxx:165 AliAnalysisTaskRhoAverage.cxx:166 AliAnalysisTaskRhoAverage.cxx:167 AliAnalysisTaskRhoAverage.cxx:168 AliAnalysisTaskRhoAverage.cxx:169 AliAnalysisTaskRhoAverage.cxx:170 AliAnalysisTaskRhoAverage.cxx:171 AliAnalysisTaskRhoAverage.cxx:172 AliAnalysisTaskRhoAverage.cxx:173 AliAnalysisTaskRhoAverage.cxx:174 AliAnalysisTaskRhoAverage.cxx:175 AliAnalysisTaskRhoAverage.cxx:176 AliAnalysisTaskRhoAverage.cxx:177 AliAnalysisTaskRhoAverage.cxx:178 AliAnalysisTaskRhoAverage.cxx:179 AliAnalysisTaskRhoAverage.cxx:180 AliAnalysisTaskRhoAverage.cxx:181 AliAnalysisTaskRhoAverage.cxx:182 AliAnalysisTaskRhoAverage.cxx:183 AliAnalysisTaskRhoAverage.cxx:184 AliAnalysisTaskRhoAverage.cxx:185 AliAnalysisTaskRhoAverage.cxx:186 AliAnalysisTaskRhoAverage.cxx:187 AliAnalysisTaskRhoAverage.cxx:188 AliAnalysisTaskRhoAverage.cxx:189 AliAnalysisTaskRhoAverage.cxx:190 AliAnalysisTaskRhoAverage.cxx:191 AliAnalysisTaskRhoAverage.cxx:192 AliAnalysisTaskRhoAverage.cxx:193 AliAnalysisTaskRhoAverage.cxx:194 AliAnalysisTaskRhoAverage.cxx:195 AliAnalysisTaskRhoAverage.cxx:196 AliAnalysisTaskRhoAverage.cxx:197 AliAnalysisTaskRhoAverage.cxx:198 AliAnalysisTaskRhoAverage.cxx:199 AliAnalysisTaskRhoAverage.cxx:200 AliAnalysisTaskRhoAverage.cxx:201 AliAnalysisTaskRhoAverage.cxx:202 AliAnalysisTaskRhoAverage.cxx:203 AliAnalysisTaskRhoAverage.cxx:204 AliAnalysisTaskRhoAverage.cxx:205 AliAnalysisTaskRhoAverage.cxx:206 AliAnalysisTaskRhoAverage.cxx:207 AliAnalysisTaskRhoAverage.cxx:208 AliAnalysisTaskRhoAverage.cxx:209 AliAnalysisTaskRhoAverage.cxx:210 AliAnalysisTaskRhoAverage.cxx:211 AliAnalysisTaskRhoAverage.cxx:212 AliAnalysisTaskRhoAverage.cxx:213 AliAnalysisTaskRhoAverage.cxx:214 AliAnalysisTaskRhoAverage.cxx:215 AliAnalysisTaskRhoAverage.cxx:216 AliAnalysisTaskRhoAverage.cxx:217 AliAnalysisTaskRhoAverage.cxx:218 AliAnalysisTaskRhoAverage.cxx:219 AliAnalysisTaskRhoAverage.cxx:220 AliAnalysisTaskRhoAverage.cxx:221 AliAnalysisTaskRhoAverage.cxx:222 AliAnalysisTaskRhoAverage.cxx:223 AliAnalysisTaskRhoAverage.cxx:224 AliAnalysisTaskRhoAverage.cxx:225 AliAnalysisTaskRhoAverage.cxx:226 AliAnalysisTaskRhoAverage.cxx:227 AliAnalysisTaskRhoAverage.cxx:228 AliAnalysisTaskRhoAverage.cxx:229