]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/FlavourJetTasks/AliAnalysisTaskEmcalJetV0Filter.cxx
.so cleanup: removed from gSystem->Load()
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliAnalysisTaskEmcalJetV0Filter.cxx
1 #include <TH1.h>
2 #include <TString.h>
3 #include <TClonesArray.h>
4
5 #include "AliAnalysisManager.h"
6
7 #include "AliAODHandler.h"
8 #include "AliAODEvent.h"
9
10 #include "AliEmcalJet.h"
11 #include "AliJetContainer.h"
12 #include "AliParticleContainer.h"
13 #include "AliClusterContainer.h"
14
15 #include "AliPicoHeaderCJ.h"
16 #include "AliPicoV0RD.h"
17 #include "AliPicoV0MC.h"
18 #include "AliPicoJet.h"
19 #include "AliAnalysisTaskEmcalJetV0Filter.h"
20
21 ClassImp(AliAnalysisTaskEmcalJetV0Filter)
22
23 //_____________________________________________________________________________
24 AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter() :
25 AliAnalysisTaskEmcalJet(),
26 fNameJetRD02(""),
27 fNameJetRD03(""),
28 fNameJetRD04(""),
29 fNameJetMC02(""),
30 fNameJetMC03(""),
31 fNameJetMC04(""),
32 fIsAnaPicoV0(kFALSE),
33 fAnaPicoV0MC(kFALSE),
34 fJetsContRD02(0),
35 fTracksContRD02(0),
36 fCaloClustersContRD02(0),
37 fJetsContRD03(0),
38 fTracksContRD03(0),
39 fCaloClustersContRD03(0),
40 fJetsContRD04(0),
41 fTracksContRD04(0),
42 fCaloClustersContRD04(0),
43 fJetsContMC02(0),
44 fTracksContMC02(0),
45 fJetsContMC03(0),
46 fTracksContMC03(0),
47 fJetsContMC04(0),
48 fTracksContMC04(0),
49 fV0s(0),
50 fPicoHeaderCJ(0),
51 fPicoJetsClArrRD02(0),
52 fPicoJetsClArrRD03(0),
53 fPicoJetsClArrRD04(0),
54 fPicoJetsClArrMC02(0),
55 fPicoJetsClArrMC03(0),
56 fPicoJetsClArrMC04(0),
57 fPicoV0sClArr(0),
58 fListUserOutputs(0)
59 {
60 //
61 //  AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
62 //
63 }
64
65 //_____________________________________________________________________________
66 AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter(const char *name, Bool_t bHistos) :
67 AliAnalysisTaskEmcalJet(name,bHistos),
68 fNameJetRD02(""),
69 fNameJetRD03(""),
70 fNameJetRD04(""),
71 fNameJetMC02(""),
72 fNameJetMC03(""),
73 fNameJetMC04(""),
74 fIsAnaPicoV0(kFALSE),
75 fAnaPicoV0MC(kFALSE),
76 fJetsContRD02(0),
77 fTracksContRD02(0),
78 fCaloClustersContRD02(0),
79 fJetsContRD03(0),
80 fTracksContRD03(0),
81 fCaloClustersContRD03(0),
82 fJetsContRD04(0),
83 fTracksContRD04(0),
84 fCaloClustersContRD04(0),
85 fJetsContMC02(0),
86 fTracksContMC02(0),
87 fJetsContMC03(0),
88 fTracksContMC03(0),
89 fJetsContMC04(0),
90 fTracksContMC04(0),
91 fV0s(0),
92 fPicoHeaderCJ(0),
93 fPicoJetsClArrRD02(0),
94 fPicoJetsClArrRD03(0),
95 fPicoJetsClArrRD04(0),
96 fPicoJetsClArrMC02(0),
97 fPicoJetsClArrMC03(0),
98 fPicoJetsClArrMC04(0),
99 fPicoV0sClArr(0),
100 fListUserOutputs(0)
101 {
102 //
103 //  AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
104 //
105
106   AliAnalysisTaskEmcal::fGeneralHistograms = bHistos;
107
108 //DefineOutput(2, TList::Class());
109 }
110
111 //_____________________________________________________________________________
112 AliAnalysisTaskEmcalJetV0Filter::~AliAnalysisTaskEmcalJetV0Filter()
113 {
114 //
115 //  AliAnalysisTaskEmcalJetV0Filter::~AliAnalysisTaskEmcalJetV0Filter
116 //
117
118   if (fJetsContRD02)         { delete fJetsContRD02;         fJetsContRD02         = 0; }
119   if (fTracksContRD02)       { delete fTracksContRD02;       fTracksContRD02       = 0; }
120   if (fCaloClustersContRD02) { delete fCaloClustersContRD02; fCaloClustersContRD02 = 0; }
121
122   if (fJetsContRD03)         { delete fJetsContRD03;         fJetsContRD03         = 0; }
123   if (fTracksContRD03)       { delete fTracksContRD03;       fTracksContRD03       = 0; }
124   if (fCaloClustersContRD03) { delete fCaloClustersContRD03; fCaloClustersContRD03 = 0; }
125
126   if (fJetsContRD04)         { delete fJetsContRD04;         fJetsContRD04         = 0; }
127   if (fTracksContRD04)       { delete fTracksContRD04;       fTracksContRD04       = 0; }
128   if (fCaloClustersContRD04) { delete fCaloClustersContRD04; fCaloClustersContRD04 = 0; }
129
130   if (fJetsContMC02)   { delete fJetsContMC02;   fJetsContMC02   = 0; }
131   if (fTracksContMC02) { delete fTracksContMC02; fTracksContMC02 = 0; }
132
133   if (fJetsContMC03)   { delete fJetsContMC03;   fJetsContMC03   = 0; }
134   if (fTracksContMC03) { delete fTracksContMC03; fTracksContMC03 = 0; }
135
136   if (fJetsContMC04)   { delete fJetsContMC04;   fJetsContMC04   = 0; }
137   if (fTracksContMC04) { delete fTracksContMC04; fTracksContMC04 = 0; }
138
139   if (fV0s) { delete fV0s; fV0s = 0; }
140
141   if (fPicoHeaderCJ) { delete fPicoHeaderCJ; fPicoHeaderCJ = 0; }
142
143   if (fPicoJetsClArrRD02) { delete fPicoJetsClArrRD02; fPicoJetsClArrRD02 = 0; }
144   if (fPicoJetsClArrRD03) { delete fPicoJetsClArrRD03; fPicoJetsClArrRD03 = 0; }
145   if (fPicoJetsClArrRD04) { delete fPicoJetsClArrRD04; fPicoJetsClArrRD04 = 0; }
146
147   if (fPicoJetsClArrMC02) { delete fPicoJetsClArrMC02; fPicoJetsClArrMC02 = 0; }
148   if (fPicoJetsClArrMC03) { delete fPicoJetsClArrMC03; fPicoJetsClArrMC03 = 0; }
149   if (fPicoJetsClArrMC04) { delete fPicoJetsClArrMC04; fPicoJetsClArrMC04 = 0; }
150
151   if (fPicoV0sClArr)    { delete fPicoV0sClArr;    fPicoV0sClArr    = 0; }
152
153   if (fListUserOutputs) { delete fListUserOutputs; fListUserOutputs = 0; }
154 }
155
156 //_____________________________________________________________________________
157 void AliAnalysisTaskEmcalJetV0Filter::Init()
158 {
159 //
160 //  AliAnalysisTaskEmcalJetV0Filter::Init
161 //
162
163   return;
164 }
165
166 //_____________________________________________________________________________
167 void AliAnalysisTaskEmcalJetV0Filter::UserCreateOutputObjects()
168 {
169 //
170 //  AliAnalysisTaskEmcalJetV0Filter::UserCreateOutputObjects
171 //
172
173   AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
174 //=============================================================================
175
176   if (!fNameJetRD02.IsNull()) {
177     fJetsContRD02 = GetJetContainer(fNameJetRD02.Data());
178
179     if (fJetsContRD02) {
180       fTracksContRD02       = fJetsContRD02->GetParticleContainer();
181       fCaloClustersContRD02 = fJetsContRD02->GetClusterContainer();
182     }
183   }
184
185   if (!fNameJetRD03.IsNull()) {
186     fJetsContRD03 = GetJetContainer(fNameJetRD03.Data());
187
188     if (fJetsContRD03) {
189       fTracksContRD03       = fJetsContRD03->GetParticleContainer();
190       fCaloClustersContRD03 = fJetsContRD03->GetClusterContainer();
191     }
192   }
193
194   if (!fNameJetRD04.IsNull()) {
195     fJetsContRD04 = GetJetContainer(fNameJetRD04.Data());
196
197     if (fJetsContRD04) {
198       fTracksContRD04       = fJetsContRD04->GetParticleContainer();
199       fCaloClustersContRD04 = fJetsContRD04->GetClusterContainer();
200     }
201   }
202 //=============================================================================
203
204   if (!fNameJetMC02.IsNull()) {
205     fJetsContMC02 = GetJetContainer(fNameJetMC02.Data());
206     if (fJetsContMC02) fTracksContMC02 = fJetsContMC02->GetParticleContainer();
207   }
208
209   if (!fNameJetMC03.IsNull()) {
210     fJetsContMC03 = GetJetContainer(fNameJetMC03.Data());
211     if (fJetsContMC03) fTracksContMC03 = fJetsContMC03->GetParticleContainer();
212   }
213
214   if (!fNameJetMC04.IsNull()) {
215     fJetsContMC04 = GetJetContainer(fNameJetMC04.Data());
216     if (fJetsContMC04) fTracksContMC04 = fJetsContMC04->GetParticleContainer();
217   }
218 //=============================================================================
219
220   fPicoHeaderCJ = new  AliPicoHeaderCJ();
221   fPicoHeaderCJ->SetName("PicoHeaderCJ");
222   AddAODBranch("AliPicoHeaderCJ", &fPicoHeaderCJ);
223
224   if (fJetsContRD02) {
225     fPicoJetsClArrRD02 = new TClonesArray("AliPicoJet");
226     fPicoJetsClArrRD02->SetName("PicoJetsRD02");
227     AddAODBranch("TClonesArray", &fPicoJetsClArrRD02);
228   }
229
230   if (fJetsContRD03) {
231     fPicoJetsClArrRD03 = new TClonesArray("AliPicoJet");
232     fPicoJetsClArrRD03->SetName("PicoJetsRD03");
233     AddAODBranch("TClonesArray", &fPicoJetsClArrRD03);
234   }
235
236   if (fJetsContRD04) {
237     fPicoJetsClArrRD04 = new TClonesArray("AliPicoJet");
238     fPicoJetsClArrRD04->SetName("PicoJetsRD04");
239     AddAODBranch("TClonesArray", &fPicoJetsClArrRD04);
240   }
241 //=============================================================================
242
243   if (fJetsContMC02) {
244     fPicoJetsClArrMC02 = new TClonesArray("AliPicoJet");
245     fPicoJetsClArrMC02->SetName("PicoJetsMC02");
246     AddAODBranch("TClonesArray", &fPicoJetsClArrMC02);
247   }
248
249   if (fJetsContMC03) {
250     fPicoJetsClArrMC03 = new TClonesArray("AliPicoJet");
251     fPicoJetsClArrMC03->SetName("PicoJetsMC03");
252     AddAODBranch("TClonesArray", &fPicoJetsClArrMC03);
253   }
254
255   if (fJetsContMC04) {
256     fPicoJetsClArrMC04 = new TClonesArray("AliPicoJet");
257     fPicoJetsClArrMC04->SetName("PicoJetsMC04");
258     AddAODBranch("TClonesArray", &fPicoJetsClArrMC04);
259   }
260 //=============================================================================
261
262   if (fIsAnaPicoV0) {
263     if (fAnaPicoV0MC) {
264       fPicoV0sClArr = new TClonesArray("AliPicoV0MC");
265       fPicoV0sClArr->SetName("PicoV0sMC");
266     } else {
267       fPicoV0sClArr = new TClonesArray("AliPicoV0RD");
268       fPicoV0sClArr->SetName("PicoV0sRD");
269     }
270
271     AddAODBranch("TClonesArray", &fPicoV0sClArr);
272   }
273
274 /*fListUserOutputs = new TList();
275   fListUserOutputs->SetOwner();
276   CreateUserOutputHistograms();
277   PostData(2, fListUserOutputs);*/
278   return;
279 }
280
281 //_____________________________________________________________________________
282 void AliAnalysisTaskEmcalJetV0Filter::Terminate(Option_t *opt)
283 {
284 //
285 //  AliAnalysisTaskEmcalJetV0Filter::Terminate
286 //
287
288   AliAnalysisTaskEmcalJet::Terminate(opt);
289
290   return;
291 }
292
293 //_____________________________________________________________________________
294 Bool_t AliAnalysisTaskEmcalJetV0Filter::Run()
295 {
296 //
297 //  AliAnalysisTaskEmcalJetV0Filter::Run
298 //
299
300   Int_t ncs = 0;
301   fPicoHeaderCJ->Reset();
302
303   if (fPicoJetsClArrRD02) fPicoJetsClArrRD02->Delete();
304   if (fPicoJetsClArrRD03) fPicoJetsClArrRD03->Delete();
305   if (fPicoJetsClArrRD04) fPicoJetsClArrRD04->Delete();
306
307   if (fPicoJetsClArrMC02) fPicoJetsClArrMC02->Delete();
308   if (fPicoJetsClArrMC03) fPicoJetsClArrMC03->Delete();
309   if (fPicoJetsClArrMC04) fPicoJetsClArrMC04->Delete();
310
311   if (fPicoV0sClArr) fPicoV0sClArr->Delete();
312
313   if (!AliAnalysisTaskEmcalJet::Run()) return kFALSE;
314 //=============================================================================
315
316   fPicoHeaderCJ->SetEventInfo(fInputHandler);
317 //=============================================================================
318
319   if (fJetsContRD02) {
320     ncs = fPicoJetsClArrRD02->GetEntriesFast();
321     fPicoHeaderCJ->BackgroundRhoRD02(fJetsContRD02->GetRhoVal());
322     AliEmcalJet *pJet = fJetsContRD02->GetNextAcceptJet(0); while (pJet) {
323       new ((*fPicoJetsClArrRD02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
324       pJet = fJetsContRD02->GetNextAcceptJet();
325     }
326   }
327
328   if (fJetsContRD03) {
329     ncs = fPicoJetsClArrRD03->GetEntriesFast();
330     fPicoHeaderCJ->BackgroundRhoRD03(fJetsContRD03->GetRhoVal());
331     AliEmcalJet *pJet = fJetsContRD03->GetNextAcceptJet(0); while (pJet) {
332       new ((*fPicoJetsClArrRD03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
333       pJet = fJetsContRD03->GetNextAcceptJet();
334     }
335   }
336
337   if (fJetsContRD04) {
338     ncs = fPicoJetsClArrRD04->GetEntriesFast();
339     fPicoHeaderCJ->BackgroundRhoRD04(fJetsContRD04->GetRhoVal());
340     AliEmcalJet *pJet = fJetsContRD04->GetNextAcceptJet(0); while (pJet) {
341       new ((*fPicoJetsClArrRD04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
342       pJet = fJetsContRD04->GetNextAcceptJet();
343     }
344   }
345 //=============================================================================
346
347   if (fJetsContMC02) {
348     ncs = fPicoJetsClArrMC02->GetEntriesFast();
349     fPicoHeaderCJ->BackgroundRhoMC02(fJetsContMC02->GetRhoVal());
350     AliEmcalJet *pJet = fJetsContMC02->GetNextAcceptJet(0); while (pJet) {
351       new ((*fPicoJetsClArrMC02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
352       pJet = fJetsContMC02->GetNextAcceptJet();
353     }
354   }
355
356   if (fJetsContMC03) {
357     ncs = fPicoJetsClArrMC03->GetEntriesFast();
358     fPicoHeaderCJ->BackgroundRhoMC03(fJetsContMC03->GetRhoVal());
359     AliEmcalJet *pJet = fJetsContMC03->GetNextAcceptJet(0); while (pJet) {
360       new ((*fPicoJetsClArrMC03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
361       pJet = fJetsContMC03->GetNextAcceptJet();
362     }
363   }
364
365   if (fJetsContMC04) {
366     ncs = fPicoJetsClArrMC04->GetEntriesFast();
367     fPicoHeaderCJ->BackgroundRhoMC04(fJetsContMC04->GetRhoVal());
368     AliEmcalJet *pJet = fJetsContMC04->GetNextAcceptJet(0); while (pJet) {
369       new ((*fPicoJetsClArrMC04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
370       pJet = fJetsContMC04->GetNextAcceptJet();
371     }
372   }
373 //=============================================================================
374
375   if (fV0s) {
376     AliPicoV0RD *pV0RD = 0;
377     AliPicoV0MC *pV0MC = 0;
378     ncs = fPicoV0sClArr->GetEntriesFast();
379     for (Int_t i=0; i<fV0s->GetEntriesFast(); i++) {
380
381       if (fAnaPicoV0MC) {
382         pV0MC = static_cast<AliPicoV0MC*>(fV0s->At(i)); if (!pV0MC) continue;
383         new ((*fPicoV0sClArr)[ncs++]) AliPicoV0MC(*pV0MC); pV0MC = 0;
384       } else {
385         pV0RD = static_cast<AliPicoV0RD*>(fV0s->At(i)); if (!pV0RD) continue;
386         new ((*fPicoV0sClArr)[ncs++]) AliPicoV0RD(*pV0RD); pV0RD = 0;
387       }
388     }
389   }
390
391   return kTRUE;
392 }
393
394 //_____________________________________________________________________________
395 Bool_t AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects()
396 {
397 //
398 //  AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects
399 //
400
401   if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects()) return kFALSE;
402   AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
403
404   return kTRUE;
405 }
406
407 //_____________________________________________________________________________
408 Bool_t AliAnalysisTaskEmcalJetV0Filter::IsEventSelected()
409 {
410 //
411 //  AliAnalysisTaskEmcalJetV0Filter::IsEventSelected
412 //
413
414   if (!AliAnalysisTaskEmcalJet::IsEventSelected()) return kFALSE;
415
416   return kTRUE;
417 }
418
419 //_____________________________________________________________________________
420 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillHistograms()
421 {
422 //
423 //  AliAnalysisTaskEmcalJetV0Filter::FillHistograms
424 //
425
426   if (!AliAnalysisTaskEmcalJet::FillHistograms()) return kFALSE;
427
428   return kTRUE;
429 }
430
431 //_____________________________________________________________________________
432 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms()
433 {
434 //
435 //  AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms
436 //
437
438   if (!AliAnalysisTaskEmcalJet::FillGeneralHistograms()) return kFALSE;
439
440   return kTRUE;
441 }
442
443 //_____________________________________________________________________________
444 void AliAnalysisTaskEmcalJetV0Filter::ExecOnce()
445 {
446 //
447 //  AliAnalysisTaskEmcalJetV0Filter::ExecOnce
448 //
449
450   AliAnalysisTaskEmcalJet::ExecOnce();
451
452   if (!fInitialized) return;
453
454   if (fIsAnaPicoV0 && (!fV0s)) {
455     fV0s = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoV0s"));
456
457     if (!fV0s) {
458       AliError(Form("%s: Could not retrieve V0 %s!", GetName(), "PicoV0s"));
459       fInitialized = kFALSE;
460       return;
461     }
462   }
463
464   return;
465 }
466
467 //_____________________________________________________________________________
468 void AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms()
469 {
470 //
471 //  AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms
472 //
473
474   if (!fListUserOutputs) return;
475
476   Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
477   TH1::AddDirectory(kFALSE);
478
479   TH1::AddDirectory(bStatusTmpH);
480   return;
481 }