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 jetRadius = GetJetRadius();
100 Double_t maxTrackPhi = -1;
101 Double_t maxTrackPt = 0;
103 for (Int_t i = 0; i < fTracks->GetEntriesFast(); i++) {
104 AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(i));
107 if (!AcceptTrack(track))
110 if (track->Pt() > maxTrackPt) {
111 maxTrackPt = track->Pt();
112 maxTrackPhi = track->Phi();
116 Double_t minPhi = -1;
117 Double_t maxPhi = -1;
120 minPhi = maxTrackPhi + TMath::Pi() - TMath::Pi()/4 + jetRadius;
121 maxPhi = maxTrackPhi + TMath::Pi() + TMath::Pi()/4 + jetRadius;
122 if (maxPhi > TMath::Pi() * 2) {
123 minPhi -= TMath::Pi() * 2;
124 maxPhi -= TMath::Pi() * 2;
126 SetJetPhiLimits(minPhi, maxPhi);
128 AliAnalysisTaskRho::Run();
129 fRhoAwaySide = fOutRho->GetVal();
132 minPhi = maxTrackPhi + TMath::Pi()/2 - TMath::Pi()/4 + jetRadius;
133 maxPhi = maxTrackPhi + TMath::Pi()/2 + TMath::Pi()/4 + jetRadius;
134 if (maxPhi > TMath::Pi() * 2) {
135 minPhi -= TMath::Pi() * 2;
136 maxPhi -= TMath::Pi() * 2;
138 SetJetPhiLimits(minPhi, maxPhi);
140 AliAnalysisTaskRho::Run();
141 fRhoPerpSide1 = fOutRho->GetVal();
144 minPhi = maxTrackPhi - TMath::Pi()/2 - TMath::Pi()/4 + jetRadius;
145 maxPhi = maxTrackPhi - TMath::Pi()/2 + TMath::Pi()/4 + jetRadius;
146 if (maxPhi > TMath::Pi() * 2) {
147 minPhi -= TMath::Pi() * 2;
148 maxPhi -= TMath::Pi() * 2;
150 SetJetPhiLimits(minPhi, maxPhi);
152 AliAnalysisTaskRho::Run();
153 fRhoPerpSide2 = fOutRho->GetVal();
156 minPhi = maxTrackPhi - TMath::Pi()/4 + jetRadius;
157 maxPhi = maxTrackPhi + TMath::Pi()/4 + jetRadius;
158 if (maxPhi > TMath::Pi() * 2) {
159 minPhi -= TMath::Pi() * 2;
160 maxPhi -= TMath::Pi() * 2;
162 SetJetPhiLimits(minPhi, maxPhi);
164 AliAnalysisTaskRho::Run();
165 fRhoNearSide = fOutRho->GetVal();
170 //________________________________________________________________________
171 Bool_t AliAnalysisTaskRhoFlow::FillHistograms()
175 fHistRhoNearVsCent->Fill(fCent, fRhoNearSide);
176 fHistRhoAwayVsCent->Fill(fCent, fRhoAwaySide);
177 fHistRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1);
178 fHistRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2);
181 fHistDeltaRhoNearVsCent->Fill(fCent, fRhoNearSide - fCompareRho->GetVal());
182 fHistDeltaRhoAwayVsCent->Fill(fCent, fRhoAwaySide - fCompareRho->GetVal());
183 fHistDeltaRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1 - fCompareRho->GetVal());
184 fHistDeltaRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2 - fCompareRho->GetVal());