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);
127 AliAnalysisTaskRho::Run();
128 fRhoAwaySide = fRho->GetVal();
131 minPhi = maxTrackPhi + TMath::Pi()/2 - TMath::Pi()/4 + fJetRadius;
132 maxPhi = maxTrackPhi + TMath::Pi()/2 + TMath::Pi()/4 + fJetRadius;
133 if (maxPhi > TMath::Pi() * 2) {
134 minPhi -= TMath::Pi() * 2;
135 maxPhi -= TMath::Pi() * 2;
137 SetJetPhiLimits(minPhi, maxPhi);
139 AliAnalysisTaskRho::Run();
140 fRhoPerpSide1 = fRho->GetVal();
143 minPhi = maxTrackPhi - TMath::Pi()/2 - TMath::Pi()/4 + fJetRadius;
144 maxPhi = maxTrackPhi - TMath::Pi()/2 + TMath::Pi()/4 + fJetRadius;
145 if (maxPhi > TMath::Pi() * 2) {
146 minPhi -= TMath::Pi() * 2;
147 maxPhi -= TMath::Pi() * 2;
149 SetJetPhiLimits(minPhi, maxPhi);
151 AliAnalysisTaskRho::Run();
152 fRhoPerpSide2 = fRho->GetVal();
155 minPhi = maxTrackPhi - TMath::Pi()/4 + fJetRadius;
156 maxPhi = maxTrackPhi + TMath::Pi()/4 + fJetRadius;
157 if (maxPhi > TMath::Pi() * 2) {
158 minPhi -= TMath::Pi() * 2;
159 maxPhi -= TMath::Pi() * 2;
161 SetJetPhiLimits(minPhi, maxPhi);
163 AliAnalysisTaskRho::Run();
164 fRhoNearSide = fRho->GetVal();
169 //________________________________________________________________________
170 Bool_t AliAnalysisTaskRhoFlow::FillHistograms()
174 fHistRhoNearVsCent->Fill(fCent, fRhoNearSide);
175 fHistRhoAwayVsCent->Fill(fCent, fRhoAwaySide);
176 fHistRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1);
177 fHistRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2);
180 fHistDeltaRhoNearVsCent->Fill(fCent, fRhoNearSide - fCompareRho->GetVal());
181 fHistDeltaRhoAwayVsCent->Fill(fCent, fRhoAwaySide - fCompareRho->GetVal());
182 fHistDeltaRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1 - fCompareRho->GetVal());
183 fHistDeltaRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2 - fCompareRho->GetVal());