]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGGA/EMCALJetTasks/AliAnalysisTaskScale.cxx
fix
[u/mrichter/AliRoot.git] / PWGGA / EMCALJetTasks / AliAnalysisTaskScale.cxx
CommitLineData
0b777a09 1// $Id$
4a6b693d 2//
3// Scale task.
4//
5//
0b777a09 6
4a6b693d 7#include <TChain.h>
0b777a09 8#include <TClonesArray.h>
4a6b693d 9#include <TH1.h>
10#include <TH2.h>
11#include <TList.h>
0b777a09 12#include <TLorentzVector.h>
4a6b693d 13#include <TParticle.h>
14#include <TTree.h>
0b777a09 15#include "AliAnalysisManager.h"
4a6b693d 16#include "AliAnalysisTask.h"
17#include "AliCentrality.h"
0b777a09 18#include "AliESDEvent.h"
19#include "AliESDInputHandler.h"
4a6b693d 20#include "AliVCluster.h"
0b777a09 21#include "AliAnalysisTaskScale.h"
22
23ClassImp(AliAnalysisTaskScale)
24
25//________________________________________________________________________
26AliAnalysisTaskScale::AliAnalysisTaskScale(const char *name)
4a6b693d 27 : AliAnalysisTaskSE(name),
0b777a09 28 fTracksName("tracks"),
4a6b693d 29 fClustersName("clusters"),
30 fESD(0),
31 fOutputList(0),
32 fHistCentrality(0),
33 fHistPtTPCvsCent(0),
34 fHistPtEMCALvsCent(0),
35 fHistEtvsCent(0),
36 fHistScalevsCent(0),
37 fHistDeltaScalevsCent(0),
38 fHistPtTPCvsNtrack(0),
39 fHistPtEMCALvsNtrack(0),
40 fHistEtvsNtrack(0),
41 fHistScalevsNtrack(0),
42 fHistDeltaScalevsNtrack(0)
0b777a09 43{
4a6b693d 44 // Constructor.
0b777a09 45
46 DefineInput(0, TChain::Class());
47 DefineOutput(1, TList::Class());
48}
49
50//________________________________________________________________________
51void AliAnalysisTaskScale::UserCreateOutputObjects()
52{
4a6b693d 53 // Create my user objects.
54
0b777a09 55 OpenFile(1);
56 fOutputList = new TList();
57 fOutputList->SetOwner();
58
59 fHistCentrality = new TH1F("fHistCentrality","Centrality",101,-1,100);
60
61 fHistPtTPCvsCent = new TH2F("fHistPtTPCvsCent","rho vs cent",101,-1,100,500,0,1000);
62 fHistPtEMCALvsCent = new TH2F("fHistPtEMCALvsCent","rho vs cent",101,-1,100,500,0,1000);
63 fHistEtvsCent = new TH2F("fHistEtvsCent","rho vs cent",101,-1,100,500,0,1000);
64 fHistScalevsCent = new TH2F("fHistScalevsCent","rho vs cent",101,-1,100,400,0,4.0);
65 fHistDeltaScalevsCent = new TH2F("fHistDeltaScalevsCent","rho vs cent",101,-1,100,400,-2.0,2.0);
66
0b777a09 67 fHistPtTPCvsNtrack = new TH2F("fHistPtTPCvsNtrack","rho vs cent",500,0,2500,500,0,1000);
68 fHistPtEMCALvsNtrack = new TH2F("fHistPtEMCALvsNtrack","rho vs cent",500,0,2500,500,0,1000);
69 fHistEtvsNtrack = new TH2F("fHistEtvsNtrack","rho vs cent",500,0,2500,500,0,1000);
70 fHistScalevsNtrack = new TH2F("fHistScalevsNtrack","rho vs cent",500,0,2500,400,0,4.0);
71 fHistDeltaScalevsNtrack = new TH2F("fHistDeltaScalevsNtrack","rho vs cent",500,0,2500,400,-2.0,2.0);
72
73 fOutputList->Add(fHistCentrality);
74 fOutputList->Add(fHistPtTPCvsCent);
75 fOutputList->Add(fHistPtEMCALvsCent);
76 fOutputList->Add(fHistEtvsCent);
77 fOutputList->Add(fHistScalevsCent);
78 fOutputList->Add(fHistDeltaScalevsCent);
79 fOutputList->Add(fHistPtTPCvsNtrack);
80 fOutputList->Add(fHistPtEMCALvsNtrack);
81 fOutputList->Add(fHistEtvsNtrack);
82 fOutputList->Add(fHistScalevsNtrack);
83 fOutputList->Add(fHistDeltaScalevsNtrack);
0b777a09 84
85 PostData(1, fOutputList);
86}
87
88//________________________________________________________________________
89void AliAnalysisTaskScale::UserExec(Option_t *)
90{
4a6b693d 91 // Execute on each event.
92
0b777a09 93 fESD = dynamic_cast<AliESDEvent*>(InputEvent());
94 if (!fESD) {
95 printf("ERROR: fESD not available\n");
96 return;
97 }
98
0b777a09 99 TClonesArray *tracks = 0;
100 TClonesArray *clusters = 0;
101 AliCentrality *centrality = 0;
102 TList *l = InputEvent()->GetList();
103
104 tracks = dynamic_cast<TClonesArray*>(l->FindObject(fTracksName));
105 if (!tracks) {
106 AliError(Form("Pointer to tracks %s == 0", fTracksName.Data() ));
107 return;
108 }
109
110 clusters = dynamic_cast<TClonesArray*>(l->FindObject(fClustersName));
111 if (!clusters){
112 AliError(Form("Pointer to clusters %s == 0", fClustersName.Data() ));
113 return;
114 }
0b777a09 115
116 centrality = dynamic_cast<AliCentrality*>(l->FindObject("Centrality"));
117 float fCent = centrality->GetCentralityPercentile("V0M");
118 fHistCentrality->Fill(fCent);
119
120 float scale = 0.000066*fCent*fCent-0.0015*fCent+1.5; //march 25th fit
121 float ptTPC = 0;float ptEMCAL=0;
122 const Int_t Ntracks = tracks->GetEntries();
123 for (Int_t iTracks = 0; iTracks < Ntracks; ++iTracks) {
124 AliVTrack *track = static_cast<AliVTrack*>(tracks->At(iTracks));
125 if (!track)
126 continue;
127 if (fabs(track->Eta())>0.7)
128 continue;
129 ptTPC+=track->Pt();
130 if ((track->Phi()>3.14)||(track->Phi()<1.4))
131 continue;
132 ptEMCAL+=track->Pt();
133 } //track loop
134
135 Double_t vertex[3] = {0, 0, 0};
136
137 float Et = 0;
138 InputEvent()->GetPrimaryVertex()->GetXYZ(vertex);
139 const Int_t Nclus = clusters->GetEntries();
4a6b693d 140 for (Int_t iClus = 0; iClus < Nclus; ++iClus) {
0b777a09 141
142 AliVCluster *c = dynamic_cast<AliVCluster*>(clusters->At(iClus));
143 if (!c->IsEMCAL())
144 continue;
145 TLorentzVector nPart;
146 c->GetMomentum(nPart, vertex);
147 Et += nPart.P();
148 }
149
150 float scalecalc = ((Et+ptEMCAL)/2.44)*(8.8/ptTPC); //2.44 = EMCAL Acc, 8.8 = TPC Acc
151 fHistPtTPCvsCent->Fill(fCent,ptTPC);
152 fHistPtEMCALvsCent->Fill(fCent,ptEMCAL);
153 fHistEtvsCent->Fill(fCent,Et);
154 fHistScalevsCent->Fill(fCent,scalecalc);
155 fHistDeltaScalevsCent->Fill(fCent,scalecalc-scale);
156
157 fHistPtTPCvsNtrack->Fill(Ntracks,ptTPC);
158 fHistPtEMCALvsNtrack->Fill(Ntracks,ptEMCAL);
159 fHistEtvsNtrack->Fill(Ntracks,Et);
160 fHistScalevsNtrack->Fill(Ntracks,scalecalc);
161 fHistDeltaScalevsNtrack->Fill(Ntracks,scalecalc-scale);
162
163 PostData(1, fOutputList);
164}
165
166//________________________________________________________________________
167void AliAnalysisTaskScale::Terminate(Option_t *)
4a6b693d 168{
169 // Nothing to be done for the moment.
170}