]>
Commit | Line | Data |
---|---|---|
32de1459 | 1 | //#include <string.h> |
2 | //#include <TStyle.h> | |
3 | #include <list> | |
4 | #include <string> | |
5 | ||
6 | #include "TTree.h" | |
7 | #include "TCanvas.h" | |
8 | #include "AliAnalysisTask.h" | |
9 | #include "AliInputEventHandler.h" | |
10 | #include "AliESDtrack.h" | |
11 | #include "AliAODVertex.h" | |
12 | #include "AliAODCluster.h" | |
13 | ||
14 | #include <TROOT.h> | |
15 | #include <TRandom.h> | |
16 | #include <TSystem.h> | |
17 | #include <TInterpreter.h> | |
18 | #include <TChain.h> | |
19 | #include <TFile.h> | |
20 | #include <TKey.h> | |
21 | #include <TH1F.h> | |
22 | #include <TH2F.h> | |
23 | #include <TH3F.h> | |
24 | #include <TProfile.h> | |
25 | #include <TList.h> | |
26 | #include <TLorentzVector.h> | |
27 | #include <TClonesArray.h> | |
28 | #include <TRefArray.h> | |
29 | ||
30 | #include "TDatabasePDG.h" | |
31 | #include "AliAnalysisManager.h" | |
32 | #include "AliJetFinder.h" | |
33 | #include "AliJetHeader.h" | |
34 | #include "AliJetReader.h" | |
35 | #include "AliJetReaderHeader.h" | |
36 | #include "AliUA1JetHeaderV1.h" | |
37 | #include "AliSISConeJetHeader.h" | |
38 | #include "AliESDEvent.h" | |
39 | #include "AliAODEvent.h" | |
40 | #include "AliAODHandler.h" | |
41 | #include "AliAODTrack.h" | |
42 | #include "AliAODJet.h" | |
43 | #include "AliAODJetEventBackground.h" | |
44 | #include "AliMCParticle.h" | |
45 | #include "AliAODMCParticle.h" | |
46 | #include "AliMCEventHandler.h" | |
47 | #include "AliMCEvent.h" | |
48 | #include "AliStack.h" | |
49 | ||
50 | #include "AliAODHeader.h" | |
51 | #include "AliAODMCHeader.h" | |
52 | //#include "AliGenPythiaEventHeader.h" | |
53 | #include "AliJetKineReaderHeader.h" | |
54 | #include "AliGenCocktailEventHeader.h" | |
55 | #include "AliInputEventHandler.h" | |
56 | #include "AliGenEventHeader.h" | |
57 | #include "AliGenDPMjetEventHeader.h" | |
58 | ||
59 | ||
60 | ||
61 | #include "AliAnalysisTaskJetHadronCorrelation.h" | |
62 | #include "AliAnalysisTaskPhiCorrelations.h" | |
63 | //#include "AliAnalysisHelperJetTasks.h" | |
64 | #include "AliPWG4HighPtQAMC.h" | |
65 | ||
66 | ||
67 | ||
68 | ||
69 | ClassImp(AliAnalysisTaskJetHadronCorrelation) | |
70 | ||
71 | //________________________________________________________________________ | |
72 | AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(): | |
73 | AliAnalysisTaskSE(), | |
74 | fUseAODInput(kFALSE), | |
75 | fFillAOD(kFALSE), | |
76 | fJetBranch("jets"), | |
77 | fNonStdFile(""), | |
78 | fAODIn(0x0), | |
79 | fAODOut(0x0), | |
80 | fAODExtension(0x0), | |
81 | JFAlg("ANTIKT"), | |
82 | Radius(0.4), | |
83 | Filtermask(256), | |
84 | BackM(0), | |
85 | TrackPtcut(0.15), | |
86 | SkipCone(0), | |
87 | IsMC(kTRUE), | |
88 | fxsec(0.), | |
89 | ftrial(1.), | |
90 | fJetRecEtaWindow(0.5), // eta window for rec jets | |
91 | fMinJetPt(10), | |
92 | fHistList(0x0), // Output list | |
93 | fIfiles(0), | |
94 | fH1Events(0x0), | |
95 | fH1Xsec(0x0), | |
96 | fH1Trials(0x0), | |
97 | fH1JetAKT04_pt (0x0), | |
98 | fH1leadJetAKT04_pt (0x0), | |
99 | fH1leadJetAKT04_pt_dijet (0x0), | |
100 | fH1subJetAKT04_pt_dijet (0x0), | |
101 | fH2JetsJetAKT04_dphi (0x0), | |
102 | fH2JetsJetAKT04_deta (0x0), | |
103 | fH2JetsJetAKT04_Aj (0x0), | |
104 | fH2JetsJetAKT04_pt (0x0), | |
105 | fH1JetMCAKT04_pt (0x0), | |
106 | fH1leadJetMCAKT04_pt (0x0), | |
107 | fH1leadJetMCAKT04_pt_dijet (0x0), | |
108 | fH1subJetMCAKT04_pt_dijet (0x0), | |
109 | fH2JetsJetMCAKT04_dphi (0x0), | |
110 | fH2JetsJetMCAKT04_deta (0x0), | |
111 | fH2JetsJetMCAKT04_Aj (0x0), | |
112 | fH2JetsJetMCAKT04_pt (0x0) | |
113 | ||
114 | ||
115 | { | |
116 | ||
117 | ||
118 | if(IsMC){ | |
119 | for(int j=0;j<5;j++){ | |
120 | fH1AKT04_ndiJ_ediv[j]=0; | |
121 | fH1leadJetMCAKT04_dphiResolution [j]=0; | |
122 | fH1subJetMCAKT04_dphiResolution [j]=0; | |
123 | for(int k=0;k<5;k++){ | |
124 | fH1JetHadronAKT04_dphi_ediv [j][k]=0; | |
125 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0; | |
126 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0; | |
127 | } | |
128 | } | |
129 | }else{ | |
130 | for(int j=0;j<5;j++){ | |
131 | fH1AKT04_ndiJ_ediv[j]=0; | |
132 | for(int k=0;k<5;k++){ | |
133 | fH1JetHadronAKT04_dphi_ediv [j][k]=0; | |
134 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0; | |
135 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0; | |
136 | } | |
137 | } | |
138 | } | |
139 | ||
140 | ||
141 | // Default constructor | |
142 | } | |
143 | ||
144 | //________________________________________________________________________ | |
145 | AliAnalysisTaskJetHadronCorrelation::AliAnalysisTaskJetHadronCorrelation(const char *name): | |
146 | AliAnalysisTaskSE(name), | |
147 | fUseAODInput(kFALSE), | |
148 | fFillAOD(kFALSE), | |
149 | fJetBranch("jets"), | |
150 | fNonStdFile(""), | |
151 | fAODIn(0x0), | |
152 | fAODOut(0x0), | |
153 | fAODExtension(0x0), | |
154 | JFAlg("ANTIKT"), | |
155 | Radius(0.4), | |
156 | Filtermask(256), | |
157 | BackM(0), | |
158 | TrackPtcut(0.15), | |
159 | SkipCone(0), | |
160 | IsMC(kTRUE), | |
161 | fxsec(0.), | |
162 | ftrial(1.), | |
163 | fJetRecEtaWindow(0.5), // eta window for rec jets | |
164 | fMinJetPt(10), | |
165 | fHistList(0x0), // Output list | |
166 | fIfiles(0), | |
167 | ||
168 | fH1Events(0x0), | |
169 | fH1Xsec(0x0), | |
170 | fH1Trials(0x0), | |
171 | fH1JetAKT04_pt (0x0), | |
172 | fH1leadJetAKT04_pt (0x0), | |
173 | fH1leadJetAKT04_pt_dijet (0x0), | |
174 | fH1subJetAKT04_pt_dijet (0x0), | |
175 | fH2JetsJetAKT04_dphi (0x0), | |
176 | fH2JetsJetAKT04_deta (0x0), | |
177 | fH2JetsJetAKT04_Aj (0x0), | |
178 | fH2JetsJetAKT04_pt (0x0), | |
179 | fH1JetMCAKT04_pt (0x0), | |
180 | fH1leadJetMCAKT04_pt (0x0), | |
181 | fH1leadJetMCAKT04_pt_dijet (0x0), | |
182 | fH1subJetMCAKT04_pt_dijet (0x0), | |
183 | fH2JetsJetMCAKT04_dphi (0x0), | |
184 | fH2JetsJetMCAKT04_deta (0x0), | |
185 | fH2JetsJetMCAKT04_Aj (0x0), | |
186 | fH2JetsJetMCAKT04_pt (0x0) | |
187 | ||
188 | ||
189 | { | |
190 | if(IsMC){ | |
191 | for(int j=0;j<5;j++){ | |
192 | fH1AKT04_ndiJ_ediv[j]=0; | |
193 | fH1leadJetMCAKT04_dphiResolution [j]=0; | |
194 | fH1subJetMCAKT04_dphiResolution [j]=0; | |
195 | for(int k=0;k<5;k++){ | |
196 | fH1JetHadronAKT04_dphi_ediv [j][k]=0; | |
197 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0; | |
198 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0; | |
199 | } | |
200 | } | |
201 | }else{ | |
202 | for(int j=0;j<5;j++){ | |
203 | fH1AKT04_ndiJ_ediv[j]=0; | |
204 | for(int k=0;k<5;k++){ | |
205 | fH1JetHadronAKT04_dphi_ediv [j][k]=0; | |
206 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]=0; | |
207 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]=0; | |
208 | } | |
209 | } | |
210 | } | |
211 | ||
212 | // Default constructor | |
213 | ||
214 | // Constructor | |
215 | ||
216 | // Define input and output slots here | |
217 | // Input slot #0 works with a TChain | |
218 | DefineInput(0, TChain::Class()); | |
219 | // Output slot #0 id reserved by the base class for AOD | |
220 | // Output slot #1 writes into a TH1 container | |
221 | DefineOutput(1, TList::Class()); | |
222 | ||
223 | } | |
224 | ||
225 | //________________________________________________________________________ | |
226 | void AliAnalysisTaskJetHadronCorrelation::UserCreateOutputObjects() | |
227 | { | |
228 | // Create histograms | |
229 | // Called once | |
230 | ||
231 | ||
232 | fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl; | |
233 | //if (!fHistList){ fHistList = new TList();fHistList->SetOwner(kTRUE); cout<<"TList is created for output "<<endl;} | |
234 | ||
235 | Bool_t oldStatus = TH1::AddDirectoryStatus(); | |
236 | TH1::AddDirectory(kFALSE); | |
237 | ||
238 | Float_t pi=TMath::Pi(); | |
239 | //gStyle->SetPalette(1); | |
240 | ||
241 | ||
242 | char *histname; | |
243 | if(IsMC){ | |
244 | fH1Xsec = new TProfile("Xsec" ,"Xsec" ,1,0,1); | |
245 | fH1Trials = new TH1F ("Trials" ,"Trials" ,1,0,1); | |
246 | fH1JetMCAKT04_pt = new TH1F("JetMCAKT04_pt" ,"JetMCAKT04_pt" ,400,0,400); | |
247 | fH1leadJetMCAKT04_pt = new TH1F("leadJetMCAKT04_pt" ,"leadJetMCAKT04_pt" ,400,0,400); | |
248 | fH1leadJetMCAKT04_pt_dijet = new TH1F("leadJetMCAKT04_pt_dijet","leadJetMCAKT04_pt_dijet",400,0,400); | |
249 | fH1subJetMCAKT04_pt_dijet = new TH1F("subJetMCAKT04_pt_dijet" ,"subJetMCAKT04_pt_dijet" ,400,0,400); | |
250 | fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400); | |
251 | fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400); | |
252 | fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400); | |
253 | fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400); | |
254 | histname = Form("JetsJetMCAKT04_dphi"); | |
255 | fH2JetsJetMCAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi); | |
256 | histname = Form("JetsJetMCAKT04_deta"); | |
257 | fH2JetsJetMCAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5); | |
258 | histname = Form("JetsJetMCAKT04_Aj"); | |
259 | fH2JetsJetMCAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2); | |
260 | histname = Form("JetsJetMCAKT04_pt"); | |
261 | fH2JetsJetMCAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400); | |
262 | histname = Form("JetsJetAKT04_dphi"); | |
263 | fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi); | |
264 | histname = Form("JetsJetAKT04_deta"); | |
265 | fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5); | |
266 | histname = Form("JetsJetAKT04_Aj"); | |
267 | fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2); | |
268 | histname = Form("JetsJetAKT04_pt"); | |
269 | fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400); | |
270 | for(int j=0;j<5;j++){ | |
271 | histname = Form("AKT04_ndiJ_ediv%d",j); | |
272 | fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2); | |
273 | histname = Form("leadJetMCAKT04_dphiResolution%d",j); | |
274 | fH1leadJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi); | |
275 | histname = Form("subJetMCAKT04_dphiResolution%d",j); | |
276 | fH1subJetMCAKT04_dphiResolution[j] = new TH1F(histname,histname,200,-2*pi,2*pi); | |
277 | for(int k=0;k<5;k++){ | |
278 | histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k); | |
279 | fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
280 | histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k); | |
281 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
282 | histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k); | |
283 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
284 | } | |
285 | } | |
286 | fHistList->Add(fH1Xsec); | |
287 | fHistList->Add(fH1Trials); | |
288 | fHistList->Add(fH1JetMCAKT04_pt ); | |
289 | fHistList->Add(fH1leadJetMCAKT04_pt ); | |
290 | fHistList->Add(fH1leadJetMCAKT04_pt_dijet); | |
291 | fHistList->Add(fH1subJetMCAKT04_pt_dijet ); | |
292 | fHistList->Add(fH1JetAKT04_pt ); | |
293 | fHistList->Add(fH1leadJetAKT04_pt ); | |
294 | fHistList->Add(fH1leadJetAKT04_pt_dijet ); | |
295 | fHistList->Add(fH1subJetAKT04_pt_dijet ); | |
296 | fHistList->Add(fH2JetsJetMCAKT04_dphi); | |
297 | fHistList->Add(fH2JetsJetMCAKT04_deta); | |
298 | fHistList->Add(fH2JetsJetMCAKT04_Aj ); | |
299 | fHistList->Add(fH2JetsJetMCAKT04_pt ); | |
300 | fHistList->Add(fH2JetsJetAKT04_dphi ); | |
301 | fHistList->Add(fH2JetsJetAKT04_deta ); | |
302 | fHistList->Add(fH2JetsJetAKT04_Aj ); | |
303 | fHistList->Add(fH2JetsJetAKT04_pt ); | |
304 | for(int j=0;j<5;j++){ | |
305 | fHistList->Add(fH1AKT04_ndiJ_ediv [j]); | |
306 | fHistList->Add(fH1leadJetMCAKT04_dphiResolution [j]); | |
307 | fHistList->Add(fH1subJetMCAKT04_dphiResolution [j]); | |
308 | for(int k=0;k<5;k++){ | |
309 | fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]); | |
310 | fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]); | |
311 | fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]); | |
312 | } | |
313 | } | |
314 | } | |
315 | else{ | |
316 | fH1Events = new TH1F("Events" ,"Events" ,1,0,1); | |
317 | fH1JetAKT04_pt = new TH1F("JetAKT04_pt" ,"JetAKT04_pt" ,400,0,400); | |
318 | fH1leadJetAKT04_pt = new TH1F("leadJetAKT04_pt" ,"leadJetAKT04_pt" ,400,0,400); | |
319 | fH1leadJetAKT04_pt_dijet = new TH1F("leadJetAKT04_pt_dijet" ,"leadJetAKT04_pt_dijet" ,400,0,400); | |
320 | fH1subJetAKT04_pt_dijet = new TH1F("subJetAKT04_pt_dijet" ,"subJetAKT04_pt_dijet" ,400,0,400); | |
321 | histname = Form("JetsJetAKT04_dphi"); | |
322 | fH2JetsJetAKT04_dphi = new TH2F(histname,histname,200,0,400,100,-2*pi,2*pi); | |
323 | histname = Form("JetsJetAKT04_deta"); | |
324 | fH2JetsJetAKT04_deta = new TH2F(histname,histname,200,0,400,100,-1.5,1.5); | |
325 | histname = Form("JetsJetAKT04_Aj"); | |
326 | fH2JetsJetAKT04_Aj = new TH2F(histname,histname,200,0,400,100,0,1.2); | |
327 | histname = Form("JetsJetAKT04_pt"); | |
328 | fH2JetsJetAKT04_pt = new TH2F(histname,histname,200,0,400,200,0,400); | |
329 | for(int j=0;j<5;j++){ | |
330 | histname = Form("AKT04_ndiJ_ediv%d",j); | |
331 | fH1AKT04_ndiJ_ediv[j]= new TH1F(histname,histname,1,1,2); | |
332 | for(int k=0;k<5;k++){ | |
333 | histname = Form("JetHadronAKT04_dphi_ediv%d%d",j,k); | |
334 | fH1JetHadronAKT04_dphi_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
335 | histname = Form("JetHadronAKT04_dphi_tptweight_ediv%d%d",j,k); | |
336 | fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
337 | histname = Form("JetHadronAKT04_dphi_tJptweight_ediv%d%d",j,k); | |
338 | fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]= new TH1F(histname,histname,200,-2*pi,2*pi); | |
339 | } | |
340 | } | |
341 | fHistList->Add(fH1Events); | |
342 | fHistList->Add(fH1JetAKT04_pt ); | |
343 | fHistList->Add(fH1leadJetAKT04_pt ); | |
344 | fHistList->Add(fH1leadJetAKT04_pt_dijet); | |
345 | fHistList->Add(fH1subJetAKT04_pt_dijet ); | |
346 | fHistList->Add(fH2JetsJetAKT04_dphi ); | |
347 | fHistList->Add(fH2JetsJetAKT04_deta ); | |
348 | fHistList->Add(fH2JetsJetAKT04_Aj ); | |
349 | fHistList->Add(fH2JetsJetAKT04_pt ); | |
350 | for(int j=0;j<5;j++){ | |
351 | fHistList->Add(fH1AKT04_ndiJ_ediv [j]); | |
352 | for(int k=0;k<5;k++){ | |
353 | fHistList->Add(fH1JetHadronAKT04_dphi_ediv [j][k]); | |
354 | fHistList->Add(fH1JetHadronAKT04_dphi_tptweight_ediv [j][k]); | |
355 | fHistList->Add(fH1JetHadronAKT04_dphi_tJptweight_ediv [j][k]); | |
356 | } | |
357 | } | |
358 | } | |
359 | ||
360 | ||
361 | ||
362 | // =========== Switch on Sumw2 for all histos =========== | |
363 | for (Int_t i=0; i<fHistList->GetEntries(); ++i) | |
364 | { | |
365 | TH1 *h1 = dynamic_cast<TH1*>(fHistList->At(i)); | |
366 | if (h1) | |
367 | { | |
368 | h1->Sumw2(); | |
369 | continue; | |
370 | } | |
371 | THnSparse *hn = dynamic_cast<THnSparse*>(fHistList->At(i)); | |
372 | if(hn)hn->Sumw2(); | |
373 | } | |
374 | TH1::AddDirectory(oldStatus); | |
375 | ||
376 | ||
377 | ||
378 | ||
379 | PostData(1,fHistList); | |
380 | ||
381 | } | |
382 | ||
383 | //---------------------------------------------------------------------- | |
384 | void AliAnalysisTaskJetHadronCorrelation::Init() | |
385 | { | |
386 | // Initialization | |
387 | if (fDebug) printf("AnalysisTaskJetHadronCorrelation::Init() \n"); | |
388 | ||
389 | } | |
390 | ||
391 | Bool_t AliAnalysisTaskJetHadronCorrelation::Notify() | |
392 | { | |
393 | ||
394 | ||
395 | fIfiles++; | |
396 | fAODIn = dynamic_cast<AliAODEvent*>(InputEvent()); | |
397 | fAODOut = AODEvent(); | |
398 | if(fNonStdFile.Length()!=0){ | |
399 | AliAODHandler *aodH = dynamic_cast<AliAODHandler*>(AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()); | |
400 | fAODExtension = (aodH?aodH->GetExtension(fNonStdFile.Data()):0); | |
401 | if(fAODExtension){ | |
402 | if(fDebug>1)Printf("AODExtension found for %s ",fNonStdFile.Data()); | |
403 | } | |
404 | } | |
405 | ||
406 | TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree(); | |
407 | fxsec=0; | |
408 | ftrial=1; | |
409 | ||
410 | if(tree){ | |
411 | TFile *curfile = tree->GetCurrentFile(); | |
412 | if(!curfile){ | |
413 | Error("Notify","No current file"); | |
414 | return kFALSE; | |
415 | } | |
416 | ||
417 | ||
418 | if(IsMC){ | |
419 | AliPWG4HighPtQAMC::PythiaInfoFromFile(curfile->GetName(),fxsec,ftrial); | |
420 | //cout<<" Xsec "<<fxsec<<" trial "<<ftrial<<endl; | |
421 | fH1Xsec ->Fill(0.,fxsec); | |
422 | fH1Trials->Fill(0.,ftrial); | |
423 | }else{ | |
424 | Float_t totalEvent; | |
425 | totalEvent = GetTotalEvents(curfile->GetName()); | |
426 | fH1Events->Fill(0.,totalEvent); | |
427 | } | |
428 | ||
429 | } | |
430 | ||
431 | printf("Reading File %s ",fInputHandler->GetTree()->GetCurrentFile()->GetName()); | |
432 | return kTRUE; | |
433 | } | |
434 | void AliAnalysisTaskJetHadronCorrelation::FinishTaskOutput() | |
435 | { | |
436 | } | |
437 | ||
438 | ||
439 | ||
440 | //________________________________________________________________________ | |
441 | void AliAnalysisTaskJetHadronCorrelation::UserExec(Option_t *) | |
442 | { | |
443 | ||
444 | ||
445 | // Main loop (called each event) | |
446 | // Execute analysis for current event | |
447 | ||
448 | // start jet analysis | |
449 | ||
450 | Double_t Jet_n [20]; | |
451 | Double_t Jet_pt [20][1000]; | |
452 | Double_t Jet_eta[20][1000]; | |
453 | Double_t Jet_phi[20][1000]; | |
454 | Double_t subJet_n [20]; | |
455 | Double_t subJet_pt [20][1000]; | |
456 | Double_t subJet_eta[20][1000]; | |
457 | Double_t subJet_phi[20][1000]; | |
458 | Double_t Track_n ; | |
459 | Double_t Track_pt [1000]; | |
460 | Double_t Track_eta[1000]; | |
461 | Double_t Track_phi[1000]; | |
462 | ||
463 | Track_n=0; | |
464 | for(int i=0;i<20;i++){ | |
465 | Jet_n[i]=0; | |
466 | subJet_n[i]=0; | |
467 | for(int j=0;j<1000;j++){ | |
468 | Jet_pt[i][j]=0.; | |
469 | Jet_phi[i][j]=999.; | |
470 | Jet_eta[i][j]=999.; | |
471 | subJet_pt[i][j]=0.; | |
472 | subJet_phi[i][j]=999.; | |
473 | subJet_eta[i][j]=999.; | |
474 | Track_pt [j]=0.; | |
475 | Track_phi[j]=999.; | |
476 | Track_eta[j]=999.; | |
477 | } | |
478 | } | |
479 | ||
480 | fAODIn = dynamic_cast<AliAODEvent*>(InputEvent()); | |
481 | if (!fAODIn) { | |
482 | Printf("ERROR: fAODIn not available"); | |
483 | return; | |
484 | } | |
485 | ||
486 | //////----------------------------------------------------------------------------------- | |
487 | ||
488 | ||
489 | int nLJetAOD=999; double ptLJetAOD=0;double phiLJetAOD=999.;double etaLJetAOD=999.;int nsLJetAOD=900;double ptsLJetAOD=0;double phisLJetAOD=900.;double etasLJetAOD=900.; | |
490 | int nLJetMC2=999; double ptLJetMC2=0;double phiLJetMC2=999.;double etaLJetMC2=999.;int nsLJetMC2=900;double ptsLJetMC2=0;double phisLJetMC2=900.;double etasLJetMC2=900.; | |
491 | int nLJetMC =999; double ptLJetMC =0;double phiLJetMC =999.;double etaLJetMC =999.;int nsLJetMC =900;double ptsLJetMC =0;double phisLJetMC =900.;double etasLJetMC =900.; | |
492 | bool findLJetAOD=false;bool findsLJetAOD=false;bool findsLJetAOD_temp=false; | |
493 | bool findLJetMC2=false;bool findsLJetMC2=false;bool findsLJetMC2_temp=false; | |
494 | bool findLJetMC =false;bool findsLJetMC =false;bool findsLJetMC_temp =false; | |
495 | bool findsLJet=false; | |
496 | int nLJet = 999; | |
497 | ||
498 | ||
499 | TString cAdd = ""; | |
500 | cAdd += Form("%02d_",(int)((Radius+0.01)*10.)); | |
501 | cAdd += Form("B%d",(int)BackM); | |
502 | cAdd += Form("_Filter%05d",Filtermask); | |
503 | cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut)); | |
504 | cAdd += Form("_Skip%02d",SkipCone); | |
505 | TString Branchname_gen,Branchname_gen2,Branchname_rec; | |
652845bc | 506 | //Branchname_gen = Form("clustersMCKINE_%s%s",JFAlg.Data(),cAdd.Data()); |
507 | //Branchname_gen2 = Form("clustersMCKINE2_%s%s",JFAlg.Data(),cAdd.Data()); | |
508 | Branchname_gen = Form("clustersAODMC_%s%s",JFAlg.Data(),cAdd.Data()); | |
509 | Branchname_gen2 = Form("clustersAODMC2_%s%s",JFAlg.Data(),cAdd.Data()); | |
32de1459 | 510 | Branchname_rec = Form("clustersAOD_%s%s",JFAlg.Data(),cAdd.Data()); |
511 | ||
512 | ||
513 | for(int algorithm=0;algorithm<3;algorithm++){ | |
514 | //for LHC11a1 LHC11a2 | |
32de1459 | 515 | if(algorithm==0)fJetBranch = Branchname_rec.Data(); |
516 | if(algorithm==1)fJetBranch = Branchname_gen2.Data(); | |
517 | if(algorithm==2)fJetBranch = Branchname_gen.Data(); | |
518 | ||
519 | if((!IsMC&&(algorithm==1||algorithm==2)))continue; | |
520 | ||
521 | TClonesArray* jets = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data())); | |
652845bc | 522 | if(!jets){ |
523 | printf(" Tere are no Branch named %s \n",fJetBranch.Data()); | |
524 | continue; | |
525 | } | |
32de1459 | 526 | Int_t nj = jets->GetEntriesFast(); |
527 | if (fDebug) printf("There are %5d jets in the event \n", nj); | |
528 | AliAODJet* jetsAOD; | |
529 | Jet_n[algorithm] = nj; | |
530 | int nLjet_in05_pthdiv[20][20]; | |
531 | int nsLjet_in05_pthdiv[20][20]; | |
532 | for(int i=0;i<20;i++){ | |
533 | for(int j=0;j<20;j++){ | |
534 | nLjet_in05_pthdiv [i][j]=0; | |
535 | nsLjet_in05_pthdiv[i][j]=0; | |
536 | } | |
537 | } | |
538 | //Find Leading Jet ------------------------------------------------------- | |
539 | for(int njet =0;njet<nj;njet++){ | |
540 | jetsAOD = (AliAODJet*) (jets->At(njet)); | |
541 | Jet_pt [algorithm][njet] = jetsAOD->Pt(); | |
542 | Jet_phi [algorithm][njet] = jetsAOD->Phi(); | |
543 | Jet_eta [algorithm][njet] = jetsAOD->Eta(); | |
544 | //TRefArray *reftracks = jetsAOD->GetRefTracks(); | |
545 | double eta_cut_Jet=0.5; | |
546 | if((TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet)&&(Jet_pt[algorithm][njet]>10.)){ | |
547 | if(algorithm==0){ | |
548 | fH1JetAKT04_pt->Fill(Jet_pt[algorithm][njet]); | |
549 | if(Jet_pt[algorithm][njet]>ptLJetAOD){ | |
550 | findLJetAOD=true; | |
551 | nLJetAOD=njet;ptLJetAOD=Jet_pt[algorithm][njet];phiLJetAOD=Jet_phi[algorithm][njet];etaLJetAOD=Jet_eta[algorithm][njet]; | |
552 | } | |
553 | } | |
554 | if(algorithm==1){ | |
555 | fH1JetMCAKT04_pt->Fill(Jet_pt[algorithm][njet]); | |
556 | if(Jet_pt[algorithm][njet]>ptLJetMC2){ | |
557 | findLJetMC2=true; | |
558 | nLJetMC2=njet;ptLJetMC2=Jet_pt[algorithm][njet];phiLJetMC2=Jet_phi[algorithm][njet];etaLJetMC2=Jet_eta[algorithm][njet]; | |
559 | } | |
560 | } | |
561 | if(algorithm==2){ | |
562 | if(Jet_pt[algorithm][njet]>ptLJetMC){ | |
563 | findLJetMC=true; | |
564 | nLJetMC=njet;ptLJetMC=Jet_pt[algorithm][njet];phiLJetMC=Jet_phi[algorithm][njet];etaLJetMC=Jet_eta[algorithm][njet]; | |
565 | } | |
566 | } | |
567 | } | |
568 | }//njet loop | |
569 | //Leading Jet ----------------------------------------------------------- | |
570 | ||
571 | if(algorithm==0){nLJet=nLJetAOD;fH1leadJetAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);} | |
572 | if(algorithm==1){nLJet=nLJetMC2;fH1leadJetMCAKT04_pt->Fill(Jet_pt[algorithm][nLJet]);} | |
573 | if(algorithm==2){nLJet=nLJetMC2;} | |
574 | ||
575 | if(nj<2)continue; | |
576 | //Find Sub leading Jet ================================================== | |
577 | for(int njet=0;njet<nj;njet++){ | |
578 | if(njet==nLJet)continue; | |
579 | jetsAOD = (AliAODJet *)jets->At(njet); | |
580 | subJet_pt [algorithm][njet] = jetsAOD->Pt(); | |
581 | subJet_phi[algorithm][njet] = jetsAOD->Phi(); | |
582 | subJet_eta[algorithm][njet] = jetsAOD->Eta(); | |
583 | double eta_cut_Jet=0.5; | |
584 | if((TMath::Abs(subJet_eta[algorithm][njet])<eta_cut_Jet) && (subJet_pt[algorithm][njet]>10.)){ | |
585 | if(subJet_pt[algorithm][njet]>ptsLJetAOD&&algorithm==0){ | |
586 | findsLJetAOD_temp=true; | |
587 | nsLJetAOD=njet;ptsLJetAOD=Jet_pt[algorithm][njet];phisLJetAOD=Jet_phi[algorithm][njet];etasLJetAOD=Jet_eta[algorithm][njet]; | |
588 | } | |
589 | if(subJet_pt[algorithm][njet]>ptsLJetMC2 &&algorithm==1){ | |
590 | findsLJetMC2_temp=true; | |
591 | nsLJetMC2=njet;ptsLJetMC2=Jet_pt[algorithm][njet];phisLJetMC2=Jet_phi[algorithm][njet];etasLJetMC2=Jet_eta[algorithm][njet]; | |
592 | } | |
593 | if(subJet_pt[algorithm][njet]>ptsLJetMC &&algorithm==2){ | |
594 | findsLJetMC_temp=true; | |
595 | nsLJetMC =njet;ptsLJetMC =Jet_pt[algorithm][njet];phisLJetMC =Jet_phi[algorithm][njet];etasLJetMC =Jet_eta[algorithm][njet]; | |
596 | } | |
597 | } | |
598 | } | |
599 | ////Sub leading Jet ====================================================== | |
600 | ||
601 | double Leading_pt=0.;double Leading_phi=999.;double Leading_eta=999.;double sLeading_pt=0.;double sLeading_phi=999.;double sLeading_eta=999.; | |
602 | if(algorithm==0){Leading_pt=ptLJetAOD;Leading_phi=phiLJetAOD;Leading_eta=etaLJetAOD;sLeading_pt=ptsLJetAOD;sLeading_phi=phisLJetAOD;sLeading_eta=etasLJetAOD;} | |
603 | if(algorithm==1){Leading_pt=ptLJetMC2;Leading_phi=phiLJetMC2;Leading_eta=etaLJetMC2;sLeading_pt=ptsLJetMC2;sLeading_phi=phisLJetMC2;sLeading_eta=etasLJetMC2;} | |
604 | if(algorithm==2){Leading_pt=ptLJetMC ;Leading_phi=phiLJetMC ;Leading_eta=etaLJetMC ;sLeading_pt=ptsLJetMC ;sLeading_phi=phisLJetMC ;sLeading_eta=etasLJetMC ;} | |
605 | ||
606 | ////Di-Jet event trigger +++++++++++++++++++++++++++++++++++++++++++++++ | |
607 | double DPhi = DeltaPhi(Leading_phi,sLeading_phi); | |
608 | double DEta = Leading_eta-sLeading_eta; | |
609 | if(algorithm==0){ | |
610 | fH2JetsJetAKT04_dphi->Fill(Leading_pt,DPhi); | |
611 | fH2JetsJetAKT04_deta->Fill(Leading_pt,DEta); | |
612 | } | |
613 | if(algorithm==1){ | |
614 | fH2JetsJetMCAKT04_dphi->Fill(Leading_pt,DPhi); | |
615 | fH2JetsJetMCAKT04_deta->Fill(Leading_pt,DEta); | |
616 | } | |
617 | if((TMath::Cos(DPhi)<-0.5)&&(Leading_pt>10.)&&(sLeading_pt>10.)){ | |
618 | if(algorithm==0)findsLJetAOD=true; | |
619 | if(algorithm==1)findsLJetMC=true; | |
620 | ||
621 | double Aj = (Leading_pt-sLeading_pt)/(Leading_pt+sLeading_pt); | |
622 | if(algorithm==0){ | |
623 | fH1leadJetAKT04_pt_dijet->Fill(Leading_pt); | |
624 | fH1subJetAKT04_pt_dijet ->Fill(sLeading_pt); | |
625 | fH2JetsJetAKT04_Aj->Fill(Leading_pt,Aj); | |
626 | fH2JetsJetAKT04_pt->Fill(Leading_pt,sLeading_pt); | |
627 | } | |
628 | if(algorithm==1){ | |
629 | fH1leadJetMCAKT04_pt_dijet->Fill(Leading_pt); | |
630 | fH1subJetMCAKT04_pt_dijet ->Fill(sLeading_pt); | |
631 | fH2JetsJetMCAKT04_Aj->Fill(Leading_pt,Aj); | |
632 | fH2JetsJetMCAKT04_pt->Fill(Leading_pt,sLeading_pt); | |
633 | } | |
634 | } | |
635 | if(algorithm==0)findsLJet=findsLJetAOD; | |
636 | if(algorithm==1)findsLJet=findsLJetMC2; | |
637 | if(algorithm==2)findsLJet=findsLJetMC; | |
638 | ////++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
639 | ||
640 | if(algorithm>=2)continue; | |
641 | ||
642 | if((findsLJet)&&(Leading_pt>10.)&&(sLeading_pt>10.)){ | |
643 | for(int eb=0;eb<5;eb++){//count number of Di-Jet in pt bin | |
644 | if(TMath::Abs(Leading_pt -20.*(eb+1))<10.){ | |
645 | if(algorithm==0)fH1AKT04_ndiJ_ediv[eb]->Fill(1); | |
646 | } | |
647 | } | |
648 | fJetBranch = "tracks"; | |
649 | TClonesArray* tracks = dynamic_cast <TClonesArray*> (fAODIn->FindListObject(fJetBranch.Data())); | |
a44fce29 | 650 | |
651 | if(!tracks)continue; | |
32de1459 | 652 | Int_t nt = tracks->GetEntriesFast(); |
653 | AliAODTrack* trackAOD; | |
654 | Track_n = nt; | |
655 | for(int njet=0;njet<Jet_n[algorithm];njet++){ | |
656 | if(njet!=nLJet)continue; | |
657 | double eta_cut_Jet=0.5; | |
658 | if(TMath::Abs(Jet_eta[algorithm][njet])<eta_cut_Jet){ | |
659 | for(int eb=0;eb<5;eb++){ | |
660 | if(TMath::Abs(Jet_pt[algorithm][njet] -20.*(eb+1))<10.){ | |
661 | for(int ntrack =0;ntrack<nt;ntrack++){ | |
662 | trackAOD = (AliAODTrack*) (tracks->At(ntrack)); | |
663 | if(trackAOD->TestFilterMask(Filtermask)){ | |
664 | Track_pt [ntrack] = trackAOD->Pt(); | |
665 | Track_phi [ntrack] = trackAOD->Phi(); | |
666 | Track_eta [ntrack] = trackAOD->Eta(); | |
667 | double DelPhi = DeltaPhi(Jet_phi[algorithm][njet],Track_phi[ntrack]); | |
668 | if(TMath::Abs(Track_eta[ntrack])<0.9){ | |
669 | for(int teb=0;teb<5;teb++){ | |
670 | if(teb==0){if(!(Track_pt[ntrack]>0.15))continue;} | |
671 | if(teb==1){if(!((Track_pt[ntrack]<1.5)&&(Track_pt[ntrack]>0.15)))continue;} | |
672 | if(teb==2){if(!((Track_pt[ntrack]<3.0)&&(Track_pt[ntrack]>1.5)))continue;} | |
673 | if(teb==3){if(!((Track_pt[ntrack]<4.5)&&(Track_pt[ntrack]>3.0)))continue;} | |
674 | if(teb==4){if(!(Track_pt[ntrack]>4.5))continue;} | |
675 | if(algorithm==0){ | |
676 | fH1JetHadronAKT04_dphi_ediv [eb][teb]->Fill(DelPhi); | |
677 | fH1JetHadronAKT04_dphi_tptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]); | |
678 | fH1JetHadronAKT04_dphi_tJptweight_ediv [eb][teb]->Fill(DelPhi,Track_pt[ntrack]/Jet_pt[algorithm][njet]); | |
679 | } | |
680 | } | |
681 | } | |
682 | } | |
683 | }//Track Loop | |
684 | } | |
685 | } | |
686 | }//eta cut | |
687 | }//Jet Loop | |
688 | }// Di-Jet | |
689 | }// algorithm LOOP | |
690 | if(IsMC){ | |
691 | for(int eb=0;eb<5;eb++){ | |
692 | double DPhi; | |
693 | if(TMath::Abs(ptLJetAOD -20.*(eb+1))<10.){ | |
694 | DPhi = DeltaPhi(phiLJetMC,phiLJetAOD); | |
695 | fH1leadJetMCAKT04_dphiResolution[eb]->Fill(DPhi); | |
696 | DPhi = DeltaPhi(phisLJetMC,phisLJetAOD); | |
697 | fH1subJetMCAKT04_dphiResolution[eb]->Fill(DPhi); | |
698 | } | |
699 | } | |
700 | } | |
701 | ||
702 | ||
703 | ||
704 | ||
705 | ||
706 | PostData(1, fHistList); | |
707 | return; | |
708 | } | |
709 | ||
710 | //________________________________________________________________________ | |
711 | void AliAnalysisTaskJetHadronCorrelation::Terminate(Option_t *) | |
712 | { | |
713 | // Terminate analysis | |
714 | if (fDebug) printf("AnalysisTaskPt: Terminate() \n"); | |
715 | ||
716 | } | |
717 | ||
718 | ||
719 | Int_t AliAnalysisTaskJetHadronCorrelation::GetListOfJets(TList *list,TClonesArray* jarray,Int_t type){ | |
720 | ||
721 | if(fDebug>2)Printf("%s:%d Selecting jets with cuts %d",(char*)__FILE__,__LINE__,type); | |
722 | Int_t iCount = 0; | |
723 | ||
724 | if(!jarray){ | |
725 | Printf("%s:%d no Jet array",(char*)__FILE__,__LINE__); | |
726 | return iCount; | |
727 | } | |
728 | ||
729 | ||
730 | for(int ij=0;ij<jarray->GetEntries();ij++){ | |
731 | AliAODJet* jet = (AliAODJet*)jarray->At(ij); | |
732 | if(!jet)continue; | |
733 | if(type==0){ | |
734 | // No cut at all, main purpose here is sorting | |
735 | list->Add(jet); | |
736 | iCount++; | |
737 | } | |
738 | else if(type == 1){ | |
739 | // eta cut | |
740 | if(JetSelected(jet)){ | |
741 | list->Add(jet); | |
742 | iCount++; | |
743 | } | |
744 | } | |
745 | } | |
746 | ||
747 | list->Sort(); | |
748 | return iCount; | |
749 | ||
750 | } | |
751 | ||
752 | ||
753 | ||
754 | Bool_t AliAnalysisTaskJetHadronCorrelation::JetSelected(AliAODJet *jet){ | |
755 | Bool_t selected = false; | |
756 | ||
757 | if(!jet)return selected; | |
758 | ||
759 | if(fabs(jet->Eta())<fJetRecEtaWindow&&jet->Pt()>fMinJetPt){ | |
760 | selected = kTRUE; | |
761 | } | |
762 | return selected; | |
763 | ||
764 | } | |
765 | ||
766 | ||
767 | Double_t AliAnalysisTaskJetHadronCorrelation::DeltaPhi(Double_t phi1,Double_t phi2){ | |
768 | Float_t pi=TMath::Pi(); | |
769 | Double_t dphi = phi1-phi2; | |
770 | if (dphi<(-1./2*pi))dphi = dphi +2*pi; | |
771 | else if(dphi>( 3./2*pi))dphi = dphi -2*pi; | |
772 | return dphi; | |
773 | } | |
774 | ||
775 | Float_t AliAnalysisTaskJetHadronCorrelation::GetTotalEvents(const char* currFile){ | |
776 | Float_t totalevent; | |
777 | TString file_es(currFile); | |
778 | if(file_es.Contains("root_archive.zip#")){ | |
779 | Ssiz_t pos1 = file_es.Index("root_archive",12,TString::kExact); | |
780 | Ssiz_t pos = file_es.Index("#",1,pos1,TString::kExact); | |
781 | file_es.Replace(pos+1,20,""); | |
782 | } | |
783 | else { | |
784 | // not an archive take the basename.... | |
785 | file_es.ReplaceAll(gSystem->BaseName(file_es.Data()),""); | |
786 | } | |
787 | ||
788 | TString cAdd = ""; | |
789 | cAdd += Form("%02d_",(int)((Radius+0.01)*10.)); | |
790 | cAdd += Form("B%d",(int)BackM); | |
791 | cAdd += Form("_Filter%05d",Filtermask); | |
792 | cAdd += Form("_Cut%05d",(int)(1000.*TrackPtcut)); | |
793 | cAdd += Form("_Skip%02d",SkipCone); | |
794 | TString Dirname,Listname; | |
795 | Dirname = Form("PWG4_cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data()); | |
796 | Listname = Form("pwg4cluster_AOD__%s%s",JFAlg.Data(),cAdd.Data()); | |
797 | ||
798 | TFile *feventstat = TFile::Open(Form("%s%s",file_es.Data(),"JetTasksOutput.root")); | |
32de1459 | 799 | gROOT->Cd(Dirname.Data()); |
800 | TList *templist = (TList*)gROOT->FindObject(Listname.Data()); | |
801 | TH1F* temphist = (TH1F*)templist->FindObject("fh1Trials"); | |
802 | totalevent = temphist->Integral(); | |
803 | //cout<<temphist->Integral()<<endl; | |
804 | delete feventstat; | |
805 | return totalevent; | |
806 | ||
807 | } | |
808 | ||
809 |