]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliAnalysisTaskScale.cxx
move EMCALJetTasks from PWGGA to PWGJE
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliAnalysisTaskScale.cxx
CommitLineData
0b777a09 1// $Id$
4a6b693d 2//
3// Scale task.
4//
68263112 5// Author: R.Reed, M.Connors
0b777a09 6
c25dc25a 7#include "AliAnalysisTaskScale.h"
8
0b777a09 9#include <TClonesArray.h>
c25dc25a 10#include <TF1.h>
8154249f 11#include <TH1F.h>
12#include <TH2F.h>
4a6b693d 13#include <TList.h>
0b777a09 14#include <TLorentzVector.h>
b1dfb3f4 15
0b777a09 16#include "AliAnalysisManager.h"
4a6b693d 17#include "AliCentrality.h"
40e2fd10 18#include "AliEMCALGeometry.h"
19#include "AliLog.h"
c25dc25a 20#include "AliVCluster.h"
21#include "AliVEvent.h"
22#include "AliVTrack.h"
0b777a09 23
24ClassImp(AliAnalysisTaskScale)
25
c25dc25a 26//________________________________________________________________________
27AliAnalysisTaskScale::AliAnalysisTaskScale() :
e44e8726 28 AliAnalysisTaskEmcal("AliAnalysisTaskScale", kTRUE),
c25dc25a 29 fScaleFunction(0),
30 fGeom(0),
c25dc25a 31 fHistCentrality(0),
32 fHistPtTPCvsCent(0),
33 fHistPtEMCALvsCent(0),
34 fHistEtvsCent(0),
35 fHistScalevsCent(0),
36 fHistDeltaScalevsCent(0),
37 fHistPtTPCvsNtrack(0),
38 fHistPtEMCALvsNtrack(0),
39 fHistEtvsNtrack(0),
40 fHistScalevsNtrack(0),
41 fHistDeltaScalevsNtrack(0),
42 fHistTrackPtvsCent(0),
43 fHistClusterPtvsCent(0),
44 fHistTrackEtaPhi(0),
45 fHistClusterEtaPhi(0)
46{
47 // Default constructor.
48}
49
0b777a09 50//________________________________________________________________________
b1dfb3f4 51AliAnalysisTaskScale::AliAnalysisTaskScale(const char *name) :
e44e8726 52 AliAnalysisTaskEmcal(name, kTRUE),
b1dfb3f4 53 fScaleFunction(0),
40e2fd10 54 fGeom(0),
b1dfb3f4 55 fHistCentrality(0),
56 fHistPtTPCvsCent(0),
57 fHistPtEMCALvsCent(0),
58 fHistEtvsCent(0),
59 fHistScalevsCent(0),
60 fHistDeltaScalevsCent(0),
61 fHistPtTPCvsNtrack(0),
62 fHistPtEMCALvsNtrack(0),
63 fHistEtvsNtrack(0),
64 fHistScalevsNtrack(0),
a5e84976 65 fHistDeltaScalevsNtrack(0),
66 fHistTrackPtvsCent(0),
67 fHistClusterPtvsCent(0),
68 fHistTrackEtaPhi(0),
c25dc25a 69 fHistClusterEtaPhi(0)
0b777a09 70{
4a6b693d 71 // Constructor.
0b777a09 72
0b777a09 73}
74
75//________________________________________________________________________
76void AliAnalysisTaskScale::UserCreateOutputObjects()
77{
4a6b693d 78 // Create my user objects.
79
0b777a09 80 OpenFile(1);
e44e8726 81 fOutput = new TList();
82 fOutput->SetOwner();
0b777a09 83
a5e84976 84 fHistCentrality = new TH1F("Centrality","Centrality", 101, -1, 100);
85 fHistPtTPCvsCent = new TH2F("PtTPCvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
86 fHistPtEMCALvsCent = new TH2F("PtEMCALvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
87 fHistEtvsCent = new TH2F("EtvsCent","rho vs cent", 101, -1, 100, 500, 0, 1000);
88 fHistScalevsCent = new TH2F("ScalevsCent","rho vs cent", 101, -1, 100, 400, 0, 4);
89 fHistDeltaScalevsCent = new TH2F("DeltaScalevsCent","rho vs cent", 101, -1, 100, 400, -2, 2);
90 fHistPtTPCvsNtrack = new TH2F("PtTPCvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
91 fHistPtEMCALvsNtrack = new TH2F("PtEMCALvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
92 fHistEtvsNtrack = new TH2F("EtvsNtrack","rho vs cent", 500, 0, 2500, 500, 0, 1000);
93 fHistScalevsNtrack = new TH2F("ScalevsNtrack","rho vs cent", 500, 0, 2500, 400, 0, 4);
94 fHistDeltaScalevsNtrack = new TH2F("DeltaScalevsNtrack","rho vs cent", 500, 0, 2500, 400, -2, 2);
95 fHistTrackPtvsCent = new TH2F("TrackPtvsCent","Track pt vs cent", 101, -1, 100, 500, 0, 100);
96 fHistClusterPtvsCent = new TH2F("ClusterPtvsCent","Cluster pt vs cent", 101, -1, 100, 500, 0, 100);
97 fHistTrackEtaPhi = new TH2F("TrackEtaPhi","Track eta phi", 100, -1.0, 1.0, 64, 0, 6.4);
98 fHistClusterEtaPhi = new TH2F("ClusterEtaPhi","Cluster eta phi", 100, -1.0, 1.0, 64, -3.2, 3.2);
99
e44e8726 100 fOutput->Add(fHistCentrality);
101 fOutput->Add(fHistPtTPCvsCent);
102 fOutput->Add(fHistPtEMCALvsCent);
103 fOutput->Add(fHistEtvsCent);
104 fOutput->Add(fHistScalevsCent);
105 fOutput->Add(fHistDeltaScalevsCent);
106 fOutput->Add(fHistPtTPCvsNtrack);
107 fOutput->Add(fHistPtEMCALvsNtrack);
108 fOutput->Add(fHistEtvsNtrack);
109 fOutput->Add(fHistScalevsNtrack);
110 fOutput->Add(fHistDeltaScalevsNtrack);
111 fOutput->Add(fHistTrackPtvsCent);
112 fOutput->Add(fHistClusterPtvsCent);
113 fOutput->Add(fHistTrackEtaPhi);
114 fOutput->Add(fHistClusterEtaPhi);
115
116 PostData(1, fOutput);
0b777a09 117}
118
b1dfb3f4 119//________________________________________________________________________
120Double_t AliAnalysisTaskScale::GetScaleFactor(Double_t cent)
121{
c25dc25a 122 // Get scale function.
123
b1dfb3f4 124 Double_t scale = -1;
125 if (fScaleFunction)
126 scale = fScaleFunction->Eval(cent);
127 return scale;
128}
129
0b777a09 130//________________________________________________________________________
9b265496 131void AliAnalysisTaskScale::ExecOnce()
0b777a09 132{
e44e8726 133 // Init the analysis.
134
e44e8726 135 fGeom = AliEMCALGeometry::GetInstance();
40e2fd10 136
137 if (!fGeom) {
138 AliFatal("Can not create geometry");
139 return;
140 }
9b265496 141
142 AliAnalysisTaskEmcal::ExecOnce();
e44e8726 143}
40e2fd10 144
e44e8726 145//________________________________________________________________________
146Bool_t AliAnalysisTaskScale::FillHistograms()
147{
148 // Execute on each event.
85211d8e 149
40e2fd10 150 const Double_t EmcalMinEta = fGeom->GetArm1EtaMin();
151 const Double_t EmcalMaxEta = fGeom->GetArm1EtaMax();
152 const Double_t EmcalMinPhi = fGeom->GetArm1PhiMin() * TMath::DegToRad();
153 const Double_t EmcalMaxPhi = fGeom->GetArm1PhiMax() * TMath::DegToRad();
0b777a09 154
b1dfb3f4 155 const Double_t TpcMinPhi = 0;
156 const Double_t TpcMaxPhi = 2 * TMath::Pi();
40e2fd10 157
158 const Double_t TpcArea = (TpcMaxPhi - TpcMinPhi) * (EmcalMinEta - EmcalMaxEta);
159 const Double_t EmcalArea = (EmcalMaxPhi - EmcalMinPhi) * (EmcalMinEta - EmcalMaxEta);
b1dfb3f4 160
85211d8e 161 Double_t ptTPC = 0;
162 Double_t ptEMCAL = 0;
b1dfb3f4 163
e44e8726 164 const Int_t Ntracks = fTracks->GetEntries();
0b777a09 165 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
e44e8726 166 AliVTrack *track = static_cast<AliVTrack*>(fTracks->At(iTracks));
b1dfb3f4 167
0b777a09 168 if (!track)
169 continue;
b1dfb3f4 170
e44e8726 171 if (!AcceptTrack(track))
172 continue;
173
b1dfb3f4 174 if (TMath::Abs(track->Eta()) > 0.7) // only accept tracks in the EMCal eta range
0b777a09 175 continue;
b1dfb3f4 176
e44e8726 177 fHistTrackPtvsCent->Fill(fCent,track->Pt());
a5e84976 178 fHistTrackEtaPhi->Fill(track->Eta(),track->Phi());
179
b1dfb3f4 180 ptTPC += track->Pt();
181 if ((track->Phi() > EmcalMaxPhi) || (track->Phi() < EmcalMinPhi))
0b777a09 182 continue;
b1dfb3f4 183
184 ptEMCAL += track->Pt();
85211d8e 185 }
e44e8726 186
187 if (ptTPC == 0)
188 return kFALSE;
0b777a09 189
85211d8e 190 Double_t Et = 0;
e44e8726 191 const Int_t Nclus = fCaloClusters->GetEntries();
4a6b693d 192 for (Int_t iClus = 0; iClus < Nclus; ++iClus) {
e44e8726 193 AliVCluster *c = static_cast<AliVCluster*>(fCaloClusters->At(iClus));
d03084cd 194 if (!c)
195 continue;
e44e8726 196
197 if (!AcceptCluster(c))
0b777a09 198 continue;
a5e84976 199
e44e8726 200 TLorentzVector nPart;
201 c->GetMomentum(nPart, fVertex);
a5e84976 202
e44e8726 203 fHistClusterPtvsCent->Fill(fCent, nPart.Pt());
204 fHistClusterEtaPhi->Fill(nPart.Eta(), nPart.Phi());
a5e84976 205
85211d8e 206 Et += nPart.Pt();
0b777a09 207 }
bb1b4cb8 208
b1dfb3f4 209 const Double_t scalecalc = ((Et + ptEMCAL) / EmcalArea) * (TpcArea / ptTPC);
e44e8726 210 const Double_t scale = GetScaleFactor(fCent);
211
212 fHistCentrality->Fill(fCent);
213 fHistPtTPCvsCent->Fill(fCent, ptTPC);
214 fHistPtEMCALvsCent->Fill(fCent, ptEMCAL);
215 fHistEtvsCent->Fill(fCent, Et);
216 fHistScalevsCent->Fill(fCent, scalecalc);
217 fHistDeltaScalevsCent->Fill(fCent, scalecalc - scale);
b1dfb3f4 218 fHistPtTPCvsNtrack->Fill(Ntracks, ptTPC);
219 fHistPtEMCALvsNtrack->Fill(Ntracks, ptEMCAL);
220 fHistEtvsNtrack->Fill(Ntracks, Et);
221 fHistScalevsNtrack->Fill(Ntracks, scalecalc);
222 fHistDeltaScalevsNtrack->Fill(Ntracks, scalecalc - scale);
0b777a09 223
e44e8726 224 return kTRUE;
0b777a09 225}
226
227//________________________________________________________________________
228void AliAnalysisTaskScale::Terminate(Option_t *)
4a6b693d 229{
c25dc25a 230 // Called once at the end of the analysis.
4a6b693d 231}