]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetSpectra.cxx
update jet trigger QA
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetSpectra.cxx
1 // $Id$
2 //
3 // Jet spectrum task.
4 //
5 // Author: R.Reed, M.Connors
6
7 #include "AliAnalysisTaskEmcalJetSpectra.h"
8
9 #include <TCanvas.h>
10 #include <TChain.h>
11 #include <TClonesArray.h>
12 #include <TH1F.h>
13 #include <TH2F.h>
14 #include <THnSparse.h>
15 #include <TList.h>
16 #include <TLorentzVector.h>
17 #include <TParameter.h>
18 #include <TParticle.h>
19 #include <TTree.h>
20 #include <TVector3.h>
21
22 #include "AliAODEvent.h"
23 #include "AliAnalysisManager.h"
24 #include "AliAnalysisTask.h"
25 #include "AliCentrality.h"
26 #include "AliESDEvent.h"
27 #include "AliESDInputHandler.h"
28 #include "AliEmcalJet.h"
29 #include "AliVCluster.h"
30 #include "AliRhoParameter.h"
31 #include "AliEmcalParticle.h"
32
33 ClassImp(AliAnalysisTaskEmcalJetSpectra)
34
35 //________________________________________________________________________
36 AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra() : 
37   AliAnalysisTaskEmcalJet("spectra",kFALSE), 
38   fHistRhovsCent(0),
39   fHistNjetvsCent(0)
40 {
41   // Default constructor.
42   for (Int_t i = 0;i<6;++i){
43     fHistJetPtvsTrackPt[i]      = 0;
44     fHistRawJetPtvsTrackPt[i]   = 0;
45     fHistTrackPt[i]             = 0;
46     fHistEP0[i]                 = 0;
47     fHistEP0A[i]                = 0;
48     fHistEP0C[i]                = 0;
49     fHistEPAvsC[i]              = 0;
50     fHistJetPtvsdEP[i]          = 0;
51     fHistJetPtvsdEPBias[i]      = 0;
52     fHistJetPtvsEP[i]           = 0;
53     fHistJetPtvsEPBias[i]       = 0;
54     fHistRhovsEP[i]             = 0;
55
56   }
57   SetMakeGeneralHistograms(kTRUE);
58 }
59
60 //________________________________________________________________________
61 AliAnalysisTaskEmcalJetSpectra::AliAnalysisTaskEmcalJetSpectra(const char *name) :
62   AliAnalysisTaskEmcalJet(name,kTRUE),
63   fHistRhovsCent(0),
64   fHistNjetvsCent(0)
65  { 
66    for (Int_t i = 0;i<6;++i){
67     fHistJetPtvsTrackPt[i]      = 0;
68     fHistRawJetPtvsTrackPt[i]   = 0;
69     fHistTrackPt[i]             = 0;
70     fHistEP0[i]                 = 0;
71     fHistEP0A[i]                = 0;
72     fHistEP0C[i]                = 0;
73     fHistEPAvsC[i]              = 0;
74     fHistJetPtvsdEP[i]          = 0;
75     fHistJetPtvsdEPBias[i]      = 0;
76     fHistJetPtvsEP[i]           = 0;
77     fHistJetPtvsEPBias[i]       = 0;
78     fHistRhovsEP[i]             = 0;
79    }
80    SetMakeGeneralHistograms(kTRUE);
81  }
82
83 //________________________________________________________________________
84 void AliAnalysisTaskEmcalJetSpectra::UserCreateOutputObjects()
85 {
86   if (! fCreateHisto)
87     return;
88   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
89
90   fHistRhovsCent             = new TH2F("RhovsCent",              "RhovsCent",             100, 0.0, 100.0, 500, 0, 500);
91   fHistNjetvsCent            = new TH2F("NjetvsCent",             "NjetvsCent",            100, 0.0, 100.0, 100, 0, 100);
92
93   TString name;
94   TString title;
95   for (Int_t i = 0;i<6;++i){
96     name = TString(Form("JetPtvsTrackPt_%i",i));
97     title = TString(Form("Jet pT vs Leading Track pT cent bin %i",i));
98     fHistJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100);
99     fOutput->Add(fHistJetPtvsTrackPt[i]);
100     name = TString(Form("RawJetPtvsTrackPt_%i",i));
101     title = TString(Form("Raw Jet pT vs Leading Track pT cent bin %i",i));
102     fHistRawJetPtvsTrackPt[i] = new TH2F(name,title,1000,-500,500,100,0,100);
103     fOutput->Add(fHistRawJetPtvsTrackPt[i]);
104     name = TString(Form("TrackPt_%i",i));
105     title = TString(Form("Track pT cent bin %i",i));
106     fHistTrackPt[i] = new TH1F(name,title,1000,0,200);
107     fOutput->Add(fHistTrackPt[i]);
108    
109     name = TString(Form("EP0_%i",i));
110     title = TString(Form("EP VZero cent bin %i",i));
111     fHistEP0[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
112     fOutput->Add(fHistEP0[i]);
113     name = TString(Form("EP0A_%i",i));
114     title = TString(Form("EP VZero cent bin %i",i));
115     fHistEP0A[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
116     fOutput->Add(fHistEP0A[i]);
117     name = TString(Form("EP0C_%i",i));
118     title = TString(Form("EP VZero cent bin %i",i));
119     fHistEP0C[i] = new TH1F(name,title,100,-TMath::Pi(),TMath::Pi());
120     fOutput->Add(fHistEP0C[i]);
121     name = TString(Form("EPAvsC_%i",i));
122     title = TString(Form("EP VZero cent bin %i",i));
123     fHistEPAvsC[i] = new TH2F(name,title,100,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi());
124     fOutput->Add(fHistEPAvsC[i]);
125     name = TString(Form("JetPtvsdEP_%i",i));
126     title = TString(Form("Jet pt vs dEP cent bin %i",i));
127     fHistJetPtvsdEP[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
128     fOutput->Add(fHistJetPtvsdEP[i]);
129     name = TString(Form("JetPtvsdEPBias_%i",i));
130     title = TString(Form("Bias Jet pt vs dEP cent bin %i",i));
131     fHistJetPtvsdEPBias[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
132     fOutput->Add(fHistJetPtvsdEPBias[i]);
133     name = TString(Form("JetPtvsEP_%i",i));
134     title = TString(Form("Jet pt vs EP cent bin %i",i));
135     fHistJetPtvsEP[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
136     fOutput->Add(fHistJetPtvsEP[i]);
137     name = TString(Form("JetPtvsEPBias_%i",i));
138     title = TString(Form("Bias Jet pt vs EP cent bin %i",i));
139     fHistJetPtvsEPBias[i] = new TH2F(name,title,1000,-500,500,400,-2*TMath::Pi(),2*TMath::Pi());
140     fOutput->Add(fHistJetPtvsEPBias[i]);
141     name = TString(Form("RhovsEP_%i",i));
142     title = TString(Form("Rho vs EP cent bin %i",i));
143     fHistRhovsEP[i] = new TH2F(name,title,500,0,500,400,-2*TMath::Pi(),2*TMath::Pi());
144     fOutput->Add(fHistRhovsEP[i]);
145   }
146
147   
148   fOutput->Add(fHistRhovsCent);
149   fOutput->Add(fHistNjetvsCent);
150   
151    PostData(1, fOutput);
152 }
153
154 //________________________________________________________________________
155
156 Int_t AliAnalysisTaskEmcalJetSpectra::GetCentBin(Double_t cent) const 
157 {
158   // Get centrality bin.
159
160   Int_t centbin = -1;
161   if (cent>=0 && cent<10)
162     centbin = 0;
163   else if (cent>=10 && cent<20)
164     centbin = 1;
165   else if (cent>=20 && cent<30)
166     centbin = 2;
167   else if (cent>=30 && cent<40)
168     centbin = 3;
169   else if (cent>=40 && cent<50)
170     centbin = 4;
171   else if (cent>=50 && cent<90)
172     centbin = 5;
173   return centbin;
174 }
175
176 //________________________________________________________________________
177
178 Float_t AliAnalysisTaskEmcalJetSpectra:: RelativePhi(Double_t mphi,Double_t vphi) const
179 {
180   if (vphi < -1*TMath::Pi()) vphi += (2*TMath::Pi());
181   else if (vphi > TMath::Pi()) vphi -= (2*TMath::Pi());
182   if (mphi < -1*TMath::Pi()) mphi += (2*TMath::Pi());
183   else if (mphi > TMath::Pi()) mphi -= (2*TMath::Pi());
184   double dphi = mphi-vphi;
185   if (dphi < -1*TMath::Pi()) dphi += (2*TMath::Pi());
186   else if (dphi > TMath::Pi()) dphi -= (2*TMath::Pi());
187
188   return dphi;//dphi in [-Pi, Pi]                                                                                                    
189 }
190
191
192 //________________________________________________________________________
193 Bool_t AliAnalysisTaskEmcalJetSpectra::Run()
194 {
195   Int_t centbin = GetCentBin(fCent);
196   //for pp analyses we will just use the first centrality bin
197   if (centbin == -1)
198     centbin = 0;
199
200   if (!fTracks)
201     return kTRUE;
202   
203   const Int_t nTrack = fTracks->GetEntriesFast();
204   for (int i = 0;i<nTrack;i++){
205     AliVParticle *track = static_cast<AliVParticle*>(fTracks->At(i));
206     if (! track)
207       continue;
208     fHistTrackPt[centbin]->Fill(track->Pt());
209   }
210
211   fHistEP0[centbin]->Fill(fEPV0);
212   fHistEP0A[centbin]->Fill(fEPV0A);
213   fHistEP0C[centbin]->Fill(fEPV0C);
214   fHistEPAvsC[centbin]->Fill(fEPV0A,fEPV0C);
215   fRho = GetRhoFromEvent(fRhoName);
216   fRhoVal = fRho->GetVal();
217   fHistRhovsCent->Fill(fCent,fRhoVal);
218   fHistRhovsEP[centbin]->Fill(fRhoVal,fEPV0);
219   const Int_t Njets = fJets->GetEntriesFast();
220
221   Int_t NjetAcc = 0;
222   for (Int_t iJets = 0; iJets < Njets; ++iJets) {
223      AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets));
224      if (!jet)
225        continue; 
226      if (jet->Area()==0)
227        continue;
228      if (jet->Pt()<0.1)
229        continue;
230      if (jet->MaxTrackPt()>100)
231        continue;
232      if (! AcceptJet(jet))
233        continue;
234      //  jets.push_back(jet);
235      NjetAcc++;
236      Double_t jetPt = -500;
237      jetPt = jet->Pt()-jet->Area()*fRhoVal;    
238      fHistJetPtvsTrackPt[centbin]->Fill(jetPt,jet->MaxTrackPt());
239      fHistRawJetPtvsTrackPt[centbin]->Fill(jet->Pt(),jet->MaxTrackPt());
240      fHistJetPtvsdEP[centbin]->Fill(jetPt,RelativePhi((fEPV0+TMath::Pi()),jet->Phi()));
241      fHistJetPtvsEP[centbin]->Fill(jetPt,fEPV0);
242      if (jet->MaxTrackPt()>5.0){
243        fHistJetPtvsdEPBias[centbin]->Fill(jetPt,RelativePhi((fEPV0+TMath::Pi()),jet->Phi()));
244        fHistJetPtvsEPBias[centbin]->Fill(jetPt,fEPV0);
245      }
246   }
247   
248   fHistNjetvsCent->Fill(fCent,NjetAcc);
249   return kTRUE;
250 }      
251
252
253
254
255