1 // $Id: AliAnalysisTaskRhoFlow.cxx $
3 // Calculation of rho for flow bias studies
7 #include "AliAnalysisTaskRhoFlow.h"
9 #include <TClonesArray.h>
13 #include "AliVTrack.h"
15 #include "AliRhoParameter.h"
17 ClassImp(AliAnalysisTaskRhoFlow)
19 //________________________________________________________________________
20 AliAnalysisTaskRhoFlow::AliAnalysisTaskRhoFlow() :
21 AliAnalysisTaskRho("AliAnalysisTaskRhoFlow",kTRUE),
26 fHistRhoNearVsCent(0),
27 fHistDeltaRhoNearVsCent(0),
28 fHistRhoAwayVsCent(0),
29 fHistDeltaRhoAwayVsCent(0),
30 fHistRhoPerp1VsCent(0),
31 fHistDeltaRhoPerp1VsCent(0),
32 fHistRhoPerp2VsCent(0),
33 fHistDeltaRhoPerp2VsCent(0)
36 SetAttachToEvent(kFALSE);
39 //________________________________________________________________________
40 AliAnalysisTaskRhoFlow::AliAnalysisTaskRhoFlow(const char *name) :
41 AliAnalysisTaskRho(name, kTRUE),
46 fHistRhoNearVsCent(0),
47 fHistDeltaRhoNearVsCent(0),
48 fHistRhoAwayVsCent(0),
49 fHistDeltaRhoAwayVsCent(0),
50 fHistRhoPerp1VsCent(0),
51 fHistDeltaRhoPerp1VsCent(0),
52 fHistRhoPerp2VsCent(0),
53 fHistDeltaRhoPerp2VsCent(0)
56 SetAttachToEvent(kFALSE);
59 //________________________________________________________________________
60 void AliAnalysisTaskRhoFlow::UserCreateOutputObjects()
62 // User create output objects, called at the beginning of the analysis.
64 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
66 fHistRhoNearVsCent = new TH2F("RhoNearVsCent", "RhoNearVsCent", 101, -1, 100, fNbins, fMinBinPt, fMaxBinPt*2);
67 fOutput->Add(fHistRhoNearVsCent);
69 fHistRhoAwayVsCent = new TH2F("RhoAwayVsCent", "RhoAwayVsCent", 101, -1, 100, fNbins, fMinBinPt, fMaxBinPt*2);
70 fOutput->Add(fHistRhoAwayVsCent);
72 fHistRhoPerp1VsCent = new TH2F("RhoPerp1VsCent", "RhoPerp1VsCent", 101, -1, 100, fNbins, fMinBinPt, fMaxBinPt*2);
73 fOutput->Add(fHistRhoPerp1VsCent);
75 fHistRhoPerp2VsCent = new TH2F("RhoPerp2VsCent", "RhoPerp2VsCent", 101, -1, 100, fNbins, fMinBinPt, fMaxBinPt*2);
76 fOutput->Add(fHistRhoPerp2VsCent);
78 if (!fCompareRhoName.IsNull()) {
79 fHistDeltaRhoNearVsCent = new TH2F("DeltaRhoNearVsCent", "DeltaRhoNearVsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
80 fOutput->Add(fHistDeltaRhoNearVsCent);
82 fHistDeltaRhoAwayVsCent = new TH2F("DeltaRhoAwayVsCent", "DeltaRhoAwayVsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
83 fOutput->Add(fHistDeltaRhoAwayVsCent);
85 fHistDeltaRhoPerp1VsCent = new TH2F("DeltaRhoPerp1VsCent", "DeltaRhoPerp1VsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
86 fOutput->Add(fHistDeltaRhoPerp1VsCent);
88 fHistDeltaRhoPerp2VsCent = new TH2F("DeltaRhoPerp2VsCent", "DeltaRhoPerp2VsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
89 fOutput->Add(fHistDeltaRhoPerp2VsCent);
93 //________________________________________________________________________
94 Bool_t AliAnalysisTaskRhoFlow::Run()
99 Double_t maxTrackPhi = -1;
100 Double_t maxTrackPt = 0;
102 for (Int_t i = 0; i < fTracks->GetEntriesFast(); i++) {
103 AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(i));
106 if (!AcceptTrack(track))
109 if (track->Pt() > maxTrackPt) {
110 maxTrackPt = track->Pt();
111 maxTrackPhi = track->Phi();
115 Double_t minPhi = -1;
116 Double_t maxPhi = -1;
119 minPhi = maxTrackPhi + TMath::Pi() - TMath::Pi()/4 + fJetRadius;
120 maxPhi = maxTrackPhi + TMath::Pi() + TMath::Pi()/4 + fJetRadius;
121 if (maxPhi > TMath::Pi() * 2) {
122 minPhi -= TMath::Pi() * 2;
123 maxPhi -= TMath::Pi() * 2;
125 SetJetPhiLimits(minPhi, maxPhi);
126 AliAnalysisTaskRho::Run();
127 fRhoAwaySide = fRho->GetVal();
130 minPhi = maxTrackPhi + TMath::Pi()/2 - TMath::Pi()/4 + fJetRadius;
131 maxPhi = maxTrackPhi + TMath::Pi()/2 + TMath::Pi()/4 + fJetRadius;
132 if (maxPhi > TMath::Pi() * 2) {
133 minPhi -= TMath::Pi() * 2;
134 maxPhi -= TMath::Pi() * 2;
136 SetJetPhiLimits(minPhi, maxPhi);
137 AliAnalysisTaskRho::Run();
138 fRhoPerpSide1 = fRho->GetVal();
141 minPhi = maxTrackPhi - TMath::Pi()/2 - TMath::Pi()/4 + fJetRadius;
142 maxPhi = maxTrackPhi - TMath::Pi()/2 + TMath::Pi()/4 + fJetRadius;
143 if (maxPhi > TMath::Pi() * 2) {
144 minPhi -= TMath::Pi() * 2;
145 maxPhi -= TMath::Pi() * 2;
147 SetJetPhiLimits(minPhi, maxPhi);
148 AliAnalysisTaskRho::Run();
149 fRhoPerpSide2 = fRho->GetVal();
152 minPhi = maxTrackPhi - TMath::Pi()/4 + fJetRadius;
153 maxPhi = maxTrackPhi + TMath::Pi()/4 + fJetRadius;
154 if (maxPhi > TMath::Pi() * 2) {
155 minPhi -= TMath::Pi() * 2;
156 maxPhi -= TMath::Pi() * 2;
158 SetJetPhiLimits(minPhi, maxPhi);
159 AliAnalysisTaskRho::Run();
160 fRhoNearSide = fRho->GetVal();
165 //________________________________________________________________________
166 Bool_t AliAnalysisTaskRhoFlow::FillHistograms()
170 fHistRhoNearVsCent->Fill(fCent, fRhoNearSide);
171 fHistRhoAwayVsCent->Fill(fCent, fRhoAwaySide);
172 fHistRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1);
173 fHistRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2);
176 fHistDeltaRhoNearVsCent->Fill(fCent, fRhoNearSide - fCompareRho->GetVal());
177 fHistDeltaRhoAwayVsCent->Fill(fCent, fRhoAwaySide - fCompareRho->GetVal());
178 fHistDeltaRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1 - fCompareRho->GetVal());
179 fHistDeltaRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2 - fCompareRho->GetVal());