ROOT logo
// $Id$
//
// Calculation of rho for flow bias studies
//
// Author: S.Aiola

#include "AliAnalysisTaskRhoFlow.h"

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

#include "AliVTrack.h"
#include "AliLog.h"
#include "AliRhoParameter.h"

ClassImp(AliAnalysisTaskRhoFlow)

//________________________________________________________________________
AliAnalysisTaskRhoFlow::AliAnalysisTaskRhoFlow() : 
  AliAnalysisTaskRho("AliAnalysisTaskRhoFlow",kTRUE),
  fRhoNearSide(0),
  fRhoAwaySide(0),
  fRhoPerpSide1(0),
  fRhoPerpSide2(0),
  fHistRhoNearVsCent(0),
  fHistDeltaRhoNearVsCent(0),
  fHistRhoAwayVsCent(0),
  fHistDeltaRhoAwayVsCent(0),
  fHistRhoPerp1VsCent(0),
  fHistDeltaRhoPerp1VsCent(0),
  fHistRhoPerp2VsCent(0),
  fHistDeltaRhoPerp2VsCent(0)
{
  // Constructor.
  SetAttachToEvent(kFALSE);
}

//________________________________________________________________________
AliAnalysisTaskRhoFlow::AliAnalysisTaskRhoFlow(const char *name) :
  AliAnalysisTaskRho(name, kTRUE),
  fRhoNearSide(0),
  fRhoAwaySide(0),
  fRhoPerpSide1(0),
  fRhoPerpSide2(0),
  fHistRhoNearVsCent(0),
  fHistDeltaRhoNearVsCent(0),
  fHistRhoAwayVsCent(0),
  fHistDeltaRhoAwayVsCent(0),
  fHistRhoPerp1VsCent(0),
  fHistDeltaRhoPerp1VsCent(0),
  fHistRhoPerp2VsCent(0),
  fHistDeltaRhoPerp2VsCent(0)
{
  // Constructor.
  SetAttachToEvent(kFALSE);
}

//________________________________________________________________________
void AliAnalysisTaskRhoFlow::UserCreateOutputObjects()
{
  // User create output objects, called at the beginning of the analysis.

  AliAnalysisTaskEmcalJet::UserCreateOutputObjects();

  fHistRhoNearVsCent = new TH2F("RhoNearVsCent", "RhoNearVsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt*2);
  fOutput->Add(fHistRhoNearVsCent);

  fHistRhoAwayVsCent = new TH2F("RhoAwayVsCent", "RhoAwayVsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt*2);
  fOutput->Add(fHistRhoAwayVsCent);

  fHistRhoPerp1VsCent = new TH2F("RhoPerp1VsCent", "RhoPerp1VsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt*2);
  fOutput->Add(fHistRhoPerp1VsCent);

  fHistRhoPerp2VsCent = new TH2F("RhoPerp2VsCent", "RhoPerp2VsCent", 101, -1,  100, fNbins, fMinBinPt, fMaxBinPt*2);
  fOutput->Add(fHistRhoPerp2VsCent);

  if (!fCompareRhoName.IsNull()) {
    fHistDeltaRhoNearVsCent = new TH2F("DeltaRhoNearVsCent", "DeltaRhoNearVsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
    fOutput->Add(fHistDeltaRhoNearVsCent);

    fHistDeltaRhoAwayVsCent = new TH2F("DeltaRhoAwayVsCent", "DeltaRhoAwayVsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
    fOutput->Add(fHistDeltaRhoAwayVsCent);
    
    fHistDeltaRhoPerp1VsCent = new TH2F("DeltaRhoPerp1VsCent", "DeltaRhoPerp1VsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
    fOutput->Add(fHistDeltaRhoPerp1VsCent);

    fHistDeltaRhoPerp2VsCent = new TH2F("DeltaRhoPerp2VsCent", "DeltaRhoPerp2VsCent", 101, -1, 100, fNbins, -fMaxBinPt, fMaxBinPt);
    fOutput->Add(fHistDeltaRhoPerp2VsCent);
  }
}

//________________________________________________________________________
Bool_t AliAnalysisTaskRhoFlow::Run() 
{
  if (!fTracks)
    return kFALSE;
  
  Double_t jetRadius = GetJetRadius();
  Double_t maxTrackPhi = -1;
  Double_t maxTrackPt  = 0;

  for (Int_t i = 0; i < fTracks->GetEntriesFast(); i++) {
    AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(i));
    if (!track)
      continue;
    if (!AcceptTrack(track))
      continue;

    if (track->Pt() > maxTrackPt) {
      maxTrackPt  = track->Pt();
      maxTrackPhi = track->Phi();
    }
  }

  Double_t minPhi = -1;
  Double_t maxPhi = -1;

  // away side
  minPhi = maxTrackPhi + TMath::Pi() - TMath::Pi()/4 + jetRadius;
  maxPhi = maxTrackPhi + TMath::Pi() + TMath::Pi()/4 + jetRadius;
  if (maxPhi > TMath::Pi() * 2) {
    minPhi -= TMath::Pi() * 2;
    maxPhi -= TMath::Pi() * 2;
  }
  SetJetPhiLimits(minPhi, maxPhi);  
  fNExclLeadJets = 1;
  AliAnalysisTaskRho::Run();
  fRhoAwaySide = fOutRho->GetVal();

  // perp 1 side
  minPhi = maxTrackPhi + TMath::Pi()/2 - TMath::Pi()/4 + jetRadius;
  maxPhi = maxTrackPhi + TMath::Pi()/2 + TMath::Pi()/4 + jetRadius;
  if (maxPhi > TMath::Pi() * 2) {
    minPhi -= TMath::Pi() * 2;
    maxPhi -= TMath::Pi() * 2;
  }
  SetJetPhiLimits(minPhi, maxPhi);  
  fNExclLeadJets = 0;
  AliAnalysisTaskRho::Run();
  fRhoPerpSide1 = fOutRho->GetVal();

  // perp 2 side
  minPhi = maxTrackPhi - TMath::Pi()/2 - TMath::Pi()/4 + jetRadius;
  maxPhi = maxTrackPhi - TMath::Pi()/2 + TMath::Pi()/4 + jetRadius;
  if (maxPhi > TMath::Pi() * 2) {
    minPhi -= TMath::Pi() * 2;
    maxPhi -= TMath::Pi() * 2;
  }
  SetJetPhiLimits(minPhi, maxPhi);
  fNExclLeadJets = 0;
  AliAnalysisTaskRho::Run();
  fRhoPerpSide2 = fOutRho->GetVal();

  // near side
  minPhi = maxTrackPhi - TMath::Pi()/4 + jetRadius;
  maxPhi = maxTrackPhi + TMath::Pi()/4 + jetRadius;
  if (maxPhi > TMath::Pi() * 2) {
    minPhi -= TMath::Pi() * 2;
    maxPhi -= TMath::Pi() * 2;
  }
  SetJetPhiLimits(minPhi, maxPhi);
  fNExclLeadJets = 1;
  AliAnalysisTaskRho::Run();
  fRhoNearSide = fOutRho->GetVal();
  
  return kTRUE;
}

//________________________________________________________________________
Bool_t AliAnalysisTaskRhoFlow::FillHistograms() 
{
  // Fill histograms.

  fHistRhoNearVsCent->Fill(fCent, fRhoNearSide);  
  fHistRhoAwayVsCent->Fill(fCent, fRhoAwaySide);
  fHistRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1);
  fHistRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2);

  if (fCompareRho) {
    fHistDeltaRhoNearVsCent->Fill(fCent, fRhoNearSide - fCompareRho->GetVal());
    fHistDeltaRhoAwayVsCent->Fill(fCent, fRhoAwaySide - fCompareRho->GetVal());
    fHistDeltaRhoPerp1VsCent->Fill(fCent, fRhoPerpSide1 - fCompareRho->GetVal());
    fHistDeltaRhoPerp2VsCent->Fill(fCent, fRhoPerpSide2 - fCompareRho->GetVal());
  }

  return kTRUE;
}      
 AliAnalysisTaskRhoFlow.cxx:1
 AliAnalysisTaskRhoFlow.cxx:2
 AliAnalysisTaskRhoFlow.cxx:3
 AliAnalysisTaskRhoFlow.cxx:4
 AliAnalysisTaskRhoFlow.cxx:5
 AliAnalysisTaskRhoFlow.cxx:6
 AliAnalysisTaskRhoFlow.cxx:7
 AliAnalysisTaskRhoFlow.cxx:8
 AliAnalysisTaskRhoFlow.cxx:9
 AliAnalysisTaskRhoFlow.cxx:10
 AliAnalysisTaskRhoFlow.cxx:11
 AliAnalysisTaskRhoFlow.cxx:12
 AliAnalysisTaskRhoFlow.cxx:13
 AliAnalysisTaskRhoFlow.cxx:14
 AliAnalysisTaskRhoFlow.cxx:15
 AliAnalysisTaskRhoFlow.cxx:16
 AliAnalysisTaskRhoFlow.cxx:17
 AliAnalysisTaskRhoFlow.cxx:18
 AliAnalysisTaskRhoFlow.cxx:19
 AliAnalysisTaskRhoFlow.cxx:20
 AliAnalysisTaskRhoFlow.cxx:21
 AliAnalysisTaskRhoFlow.cxx:22
 AliAnalysisTaskRhoFlow.cxx:23
 AliAnalysisTaskRhoFlow.cxx:24
 AliAnalysisTaskRhoFlow.cxx:25
 AliAnalysisTaskRhoFlow.cxx:26
 AliAnalysisTaskRhoFlow.cxx:27
 AliAnalysisTaskRhoFlow.cxx:28
 AliAnalysisTaskRhoFlow.cxx:29
 AliAnalysisTaskRhoFlow.cxx:30
 AliAnalysisTaskRhoFlow.cxx:31
 AliAnalysisTaskRhoFlow.cxx:32
 AliAnalysisTaskRhoFlow.cxx:33
 AliAnalysisTaskRhoFlow.cxx:34
 AliAnalysisTaskRhoFlow.cxx:35
 AliAnalysisTaskRhoFlow.cxx:36
 AliAnalysisTaskRhoFlow.cxx:37
 AliAnalysisTaskRhoFlow.cxx:38
 AliAnalysisTaskRhoFlow.cxx:39
 AliAnalysisTaskRhoFlow.cxx:40
 AliAnalysisTaskRhoFlow.cxx:41
 AliAnalysisTaskRhoFlow.cxx:42
 AliAnalysisTaskRhoFlow.cxx:43
 AliAnalysisTaskRhoFlow.cxx:44
 AliAnalysisTaskRhoFlow.cxx:45
 AliAnalysisTaskRhoFlow.cxx:46
 AliAnalysisTaskRhoFlow.cxx:47
 AliAnalysisTaskRhoFlow.cxx:48
 AliAnalysisTaskRhoFlow.cxx:49
 AliAnalysisTaskRhoFlow.cxx:50
 AliAnalysisTaskRhoFlow.cxx:51
 AliAnalysisTaskRhoFlow.cxx:52
 AliAnalysisTaskRhoFlow.cxx:53
 AliAnalysisTaskRhoFlow.cxx:54
 AliAnalysisTaskRhoFlow.cxx:55
 AliAnalysisTaskRhoFlow.cxx:56
 AliAnalysisTaskRhoFlow.cxx:57
 AliAnalysisTaskRhoFlow.cxx:58
 AliAnalysisTaskRhoFlow.cxx:59
 AliAnalysisTaskRhoFlow.cxx:60
 AliAnalysisTaskRhoFlow.cxx:61
 AliAnalysisTaskRhoFlow.cxx:62
 AliAnalysisTaskRhoFlow.cxx:63
 AliAnalysisTaskRhoFlow.cxx:64
 AliAnalysisTaskRhoFlow.cxx:65
 AliAnalysisTaskRhoFlow.cxx:66
 AliAnalysisTaskRhoFlow.cxx:67
 AliAnalysisTaskRhoFlow.cxx:68
 AliAnalysisTaskRhoFlow.cxx:69
 AliAnalysisTaskRhoFlow.cxx:70
 AliAnalysisTaskRhoFlow.cxx:71
 AliAnalysisTaskRhoFlow.cxx:72
 AliAnalysisTaskRhoFlow.cxx:73
 AliAnalysisTaskRhoFlow.cxx:74
 AliAnalysisTaskRhoFlow.cxx:75
 AliAnalysisTaskRhoFlow.cxx:76
 AliAnalysisTaskRhoFlow.cxx:77
 AliAnalysisTaskRhoFlow.cxx:78
 AliAnalysisTaskRhoFlow.cxx:79
 AliAnalysisTaskRhoFlow.cxx:80
 AliAnalysisTaskRhoFlow.cxx:81
 AliAnalysisTaskRhoFlow.cxx:82
 AliAnalysisTaskRhoFlow.cxx:83
 AliAnalysisTaskRhoFlow.cxx:84
 AliAnalysisTaskRhoFlow.cxx:85
 AliAnalysisTaskRhoFlow.cxx:86
 AliAnalysisTaskRhoFlow.cxx:87
 AliAnalysisTaskRhoFlow.cxx:88
 AliAnalysisTaskRhoFlow.cxx:89
 AliAnalysisTaskRhoFlow.cxx:90
 AliAnalysisTaskRhoFlow.cxx:91
 AliAnalysisTaskRhoFlow.cxx:92
 AliAnalysisTaskRhoFlow.cxx:93
 AliAnalysisTaskRhoFlow.cxx:94
 AliAnalysisTaskRhoFlow.cxx:95
 AliAnalysisTaskRhoFlow.cxx:96
 AliAnalysisTaskRhoFlow.cxx:97
 AliAnalysisTaskRhoFlow.cxx:98
 AliAnalysisTaskRhoFlow.cxx:99
 AliAnalysisTaskRhoFlow.cxx:100
 AliAnalysisTaskRhoFlow.cxx:101
 AliAnalysisTaskRhoFlow.cxx:102
 AliAnalysisTaskRhoFlow.cxx:103
 AliAnalysisTaskRhoFlow.cxx:104
 AliAnalysisTaskRhoFlow.cxx:105
 AliAnalysisTaskRhoFlow.cxx:106
 AliAnalysisTaskRhoFlow.cxx:107
 AliAnalysisTaskRhoFlow.cxx:108
 AliAnalysisTaskRhoFlow.cxx:109
 AliAnalysisTaskRhoFlow.cxx:110
 AliAnalysisTaskRhoFlow.cxx:111
 AliAnalysisTaskRhoFlow.cxx:112
 AliAnalysisTaskRhoFlow.cxx:113
 AliAnalysisTaskRhoFlow.cxx:114
 AliAnalysisTaskRhoFlow.cxx:115
 AliAnalysisTaskRhoFlow.cxx:116
 AliAnalysisTaskRhoFlow.cxx:117
 AliAnalysisTaskRhoFlow.cxx:118
 AliAnalysisTaskRhoFlow.cxx:119
 AliAnalysisTaskRhoFlow.cxx:120
 AliAnalysisTaskRhoFlow.cxx:121
 AliAnalysisTaskRhoFlow.cxx:122
 AliAnalysisTaskRhoFlow.cxx:123
 AliAnalysisTaskRhoFlow.cxx:124
 AliAnalysisTaskRhoFlow.cxx:125
 AliAnalysisTaskRhoFlow.cxx:126
 AliAnalysisTaskRhoFlow.cxx:127
 AliAnalysisTaskRhoFlow.cxx:128
 AliAnalysisTaskRhoFlow.cxx:129
 AliAnalysisTaskRhoFlow.cxx:130
 AliAnalysisTaskRhoFlow.cxx:131
 AliAnalysisTaskRhoFlow.cxx:132
 AliAnalysisTaskRhoFlow.cxx:133
 AliAnalysisTaskRhoFlow.cxx:134
 AliAnalysisTaskRhoFlow.cxx:135
 AliAnalysisTaskRhoFlow.cxx:136
 AliAnalysisTaskRhoFlow.cxx:137
 AliAnalysisTaskRhoFlow.cxx:138
 AliAnalysisTaskRhoFlow.cxx:139
 AliAnalysisTaskRhoFlow.cxx:140
 AliAnalysisTaskRhoFlow.cxx:141
 AliAnalysisTaskRhoFlow.cxx:142
 AliAnalysisTaskRhoFlow.cxx:143
 AliAnalysisTaskRhoFlow.cxx:144
 AliAnalysisTaskRhoFlow.cxx:145
 AliAnalysisTaskRhoFlow.cxx:146
 AliAnalysisTaskRhoFlow.cxx:147
 AliAnalysisTaskRhoFlow.cxx:148
 AliAnalysisTaskRhoFlow.cxx:149
 AliAnalysisTaskRhoFlow.cxx:150
 AliAnalysisTaskRhoFlow.cxx:151
 AliAnalysisTaskRhoFlow.cxx:152
 AliAnalysisTaskRhoFlow.cxx:153
 AliAnalysisTaskRhoFlow.cxx:154
 AliAnalysisTaskRhoFlow.cxx:155
 AliAnalysisTaskRhoFlow.cxx:156
 AliAnalysisTaskRhoFlow.cxx:157
 AliAnalysisTaskRhoFlow.cxx:158
 AliAnalysisTaskRhoFlow.cxx:159
 AliAnalysisTaskRhoFlow.cxx:160
 AliAnalysisTaskRhoFlow.cxx:161
 AliAnalysisTaskRhoFlow.cxx:162
 AliAnalysisTaskRhoFlow.cxx:163
 AliAnalysisTaskRhoFlow.cxx:164
 AliAnalysisTaskRhoFlow.cxx:165
 AliAnalysisTaskRhoFlow.cxx:166
 AliAnalysisTaskRhoFlow.cxx:167
 AliAnalysisTaskRhoFlow.cxx:168
 AliAnalysisTaskRhoFlow.cxx:169
 AliAnalysisTaskRhoFlow.cxx:170
 AliAnalysisTaskRhoFlow.cxx:171
 AliAnalysisTaskRhoFlow.cxx:172
 AliAnalysisTaskRhoFlow.cxx:173
 AliAnalysisTaskRhoFlow.cxx:174
 AliAnalysisTaskRhoFlow.cxx:175
 AliAnalysisTaskRhoFlow.cxx:176
 AliAnalysisTaskRhoFlow.cxx:177
 AliAnalysisTaskRhoFlow.cxx:178
 AliAnalysisTaskRhoFlow.cxx:179
 AliAnalysisTaskRhoFlow.cxx:180
 AliAnalysisTaskRhoFlow.cxx:181
 AliAnalysisTaskRhoFlow.cxx:182
 AliAnalysisTaskRhoFlow.cxx:183
 AliAnalysisTaskRhoFlow.cxx:184
 AliAnalysisTaskRhoFlow.cxx:185
 AliAnalysisTaskRhoFlow.cxx:186
 AliAnalysisTaskRhoFlow.cxx:187
 AliAnalysisTaskRhoFlow.cxx:188