]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/FlavourJetTasks/AliAnalysisTaskEmcalJetV0Filter.cxx
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGJE / FlavourJetTasks / AliAnalysisTaskEmcalJetV0Filter.cxx
CommitLineData
b254f323 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
21ClassImp(AliAnalysisTaskEmcalJetV0Filter)
22
23//_____________________________________________________________________________
24AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter() :
25AliAnalysisTaskEmcalJet(),
26fNameJetRD02(""),
27fNameJetRD03(""),
28fNameJetRD04(""),
29fNameJetMC02(""),
30fNameJetMC03(""),
31fNameJetMC04(""),
32fIsAnaPicoV0(kFALSE),
33fAnaPicoV0MC(kFALSE),
34fJetsContRD02(0),
35fTracksContRD02(0),
36fCaloClustersContRD02(0),
37fJetsContRD03(0),
38fTracksContRD03(0),
39fCaloClustersContRD03(0),
40fJetsContRD04(0),
41fTracksContRD04(0),
42fCaloClustersContRD04(0),
43fJetsContMC02(0),
44fTracksContMC02(0),
45fJetsContMC03(0),
46fTracksContMC03(0),
47fJetsContMC04(0),
48fTracksContMC04(0),
49fV0s(0),
50fPicoHeaderCJ(0),
51fPicoJetsClArrRD02(0),
52fPicoJetsClArrRD03(0),
53fPicoJetsClArrRD04(0),
54fPicoJetsClArrMC02(0),
55fPicoJetsClArrMC03(0),
56fPicoJetsClArrMC04(0),
57fPicoV0sClArr(0),
58fListUserOutputs(0)
59{
60//
61// AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
62//
63}
64
65//_____________________________________________________________________________
66AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter(const char *name, Bool_t bHistos) :
67AliAnalysisTaskEmcalJet(name,bHistos),
68fNameJetRD02(""),
69fNameJetRD03(""),
70fNameJetRD04(""),
71fNameJetMC02(""),
72fNameJetMC03(""),
73fNameJetMC04(""),
74fIsAnaPicoV0(kFALSE),
75fAnaPicoV0MC(kFALSE),
76fJetsContRD02(0),
77fTracksContRD02(0),
78fCaloClustersContRD02(0),
79fJetsContRD03(0),
80fTracksContRD03(0),
81fCaloClustersContRD03(0),
82fJetsContRD04(0),
83fTracksContRD04(0),
84fCaloClustersContRD04(0),
85fJetsContMC02(0),
86fTracksContMC02(0),
87fJetsContMC03(0),
88fTracksContMC03(0),
89fJetsContMC04(0),
90fTracksContMC04(0),
91fV0s(0),
92fPicoHeaderCJ(0),
93fPicoJetsClArrRD02(0),
94fPicoJetsClArrRD03(0),
95fPicoJetsClArrRD04(0),
96fPicoJetsClArrMC02(0),
97fPicoJetsClArrMC03(0),
98fPicoJetsClArrMC04(0),
99fPicoV0sClArr(0),
100fListUserOutputs(0)
101{
102//
103// AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
104//
105
106 AliAnalysisTaskEmcal::fGeneralHistograms = bHistos;
107
108//DefineOutput(2, TList::Class());
109}
110
111//_____________________________________________________________________________
112AliAnalysisTaskEmcalJetV0Filter::~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//_____________________________________________________________________________
157void AliAnalysisTaskEmcalJetV0Filter::Init()
158{
159//
160// AliAnalysisTaskEmcalJetV0Filter::Init
161//
162
163 return;
164}
165
166//_____________________________________________________________________________
167void 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//_____________________________________________________________________________
282void AliAnalysisTaskEmcalJetV0Filter::Terminate(Option_t *opt)
283{
284//
285// AliAnalysisTaskEmcalJetV0Filter::Terminate
286//
287
288 AliAnalysisTaskEmcalJet::Terminate(opt);
289
290 return;
291}
292
293//_____________________________________________________________________________
294Bool_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();
81fe377a 312 else return kFALSE; // Should not happen, make Coverity happy
b254f323 313
314 if (!AliAnalysisTaskEmcalJet::Run()) return kFALSE;
315//=============================================================================
316
317 fPicoHeaderCJ->SetEventInfo(fInputHandler);
318//=============================================================================
319
320 if (fJetsContRD02) {
321 ncs = fPicoJetsClArrRD02->GetEntriesFast();
322 fPicoHeaderCJ->BackgroundRhoRD02(fJetsContRD02->GetRhoVal());
323 AliEmcalJet *pJet = fJetsContRD02->GetNextAcceptJet(0); while (pJet) {
324 new ((*fPicoJetsClArrRD02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
325 pJet = fJetsContRD02->GetNextAcceptJet();
326 }
327 }
328
329 if (fJetsContRD03) {
330 ncs = fPicoJetsClArrRD03->GetEntriesFast();
331 fPicoHeaderCJ->BackgroundRhoRD03(fJetsContRD03->GetRhoVal());
332 AliEmcalJet *pJet = fJetsContRD03->GetNextAcceptJet(0); while (pJet) {
333 new ((*fPicoJetsClArrRD03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
334 pJet = fJetsContRD03->GetNextAcceptJet();
335 }
336 }
337
338 if (fJetsContRD04) {
339 ncs = fPicoJetsClArrRD04->GetEntriesFast();
340 fPicoHeaderCJ->BackgroundRhoRD04(fJetsContRD04->GetRhoVal());
341 AliEmcalJet *pJet = fJetsContRD04->GetNextAcceptJet(0); while (pJet) {
342 new ((*fPicoJetsClArrRD04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
343 pJet = fJetsContRD04->GetNextAcceptJet();
344 }
345 }
346//=============================================================================
347
348 if (fJetsContMC02) {
349 ncs = fPicoJetsClArrMC02->GetEntriesFast();
350 fPicoHeaderCJ->BackgroundRhoMC02(fJetsContMC02->GetRhoVal());
351 AliEmcalJet *pJet = fJetsContMC02->GetNextAcceptJet(0); while (pJet) {
352 new ((*fPicoJetsClArrMC02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
353 pJet = fJetsContMC02->GetNextAcceptJet();
354 }
355 }
356
357 if (fJetsContMC03) {
358 ncs = fPicoJetsClArrMC03->GetEntriesFast();
359 fPicoHeaderCJ->BackgroundRhoMC03(fJetsContMC03->GetRhoVal());
360 AliEmcalJet *pJet = fJetsContMC03->GetNextAcceptJet(0); while (pJet) {
361 new ((*fPicoJetsClArrMC03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
362 pJet = fJetsContMC03->GetNextAcceptJet();
363 }
364 }
365
366 if (fJetsContMC04) {
367 ncs = fPicoJetsClArrMC04->GetEntriesFast();
368 fPicoHeaderCJ->BackgroundRhoMC04(fJetsContMC04->GetRhoVal());
369 AliEmcalJet *pJet = fJetsContMC04->GetNextAcceptJet(0); while (pJet) {
370 new ((*fPicoJetsClArrMC04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
371 pJet = fJetsContMC04->GetNextAcceptJet();
372 }
373 }
374//=============================================================================
375
376 if (fV0s) {
377 AliPicoV0RD *pV0RD = 0;
378 AliPicoV0MC *pV0MC = 0;
379 ncs = fPicoV0sClArr->GetEntriesFast();
380 for (Int_t i=0; i<fV0s->GetEntriesFast(); i++) {
381
382 if (fAnaPicoV0MC) {
383 pV0MC = static_cast<AliPicoV0MC*>(fV0s->At(i)); if (!pV0MC) continue;
384 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0MC(*pV0MC); pV0MC = 0;
385 } else {
386 pV0RD = static_cast<AliPicoV0RD*>(fV0s->At(i)); if (!pV0RD) continue;
387 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0RD(*pV0RD); pV0RD = 0;
388 }
389 }
390 }
391
392 return kTRUE;
393}
394
395//_____________________________________________________________________________
396Bool_t AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects()
397{
398//
399// AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects
400//
401
402 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects()) return kFALSE;
403 AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
404
405 return kTRUE;
406}
407
408//_____________________________________________________________________________
409Bool_t AliAnalysisTaskEmcalJetV0Filter::IsEventSelected()
410{
411//
412// AliAnalysisTaskEmcalJetV0Filter::IsEventSelected
413//
414
415 if (!AliAnalysisTaskEmcalJet::IsEventSelected()) return kFALSE;
416
417 return kTRUE;
418}
419
420//_____________________________________________________________________________
421Bool_t AliAnalysisTaskEmcalJetV0Filter::FillHistograms()
422{
423//
424// AliAnalysisTaskEmcalJetV0Filter::FillHistograms
425//
426
427 if (!AliAnalysisTaskEmcalJet::FillHistograms()) return kFALSE;
428
429 return kTRUE;
430}
431
432//_____________________________________________________________________________
433Bool_t AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms()
434{
435//
436// AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms
437//
438
439 if (!AliAnalysisTaskEmcalJet::FillGeneralHistograms()) return kFALSE;
440
441 return kTRUE;
442}
443
444//_____________________________________________________________________________
445void AliAnalysisTaskEmcalJetV0Filter::ExecOnce()
446{
447//
448// AliAnalysisTaskEmcalJetV0Filter::ExecOnce
449//
450
451 AliAnalysisTaskEmcalJet::ExecOnce();
452
453 if (!fInitialized) return;
454
455 if (fIsAnaPicoV0 && (!fV0s)) {
456 fV0s = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoV0s"));
457
458 if (!fV0s) {
459 AliError(Form("%s: Could not retrieve V0 %s!", GetName(), "PicoV0s"));
460 fInitialized = kFALSE;
461 return;
462 }
463 }
464
465 return;
466}
467
468//_____________________________________________________________________________
469void AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms()
470{
471//
472// AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms
473//
474
475 if (!fListUserOutputs) return;
476
477 Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
478 TH1::AddDirectory(kFALSE);
479
480 TH1::AddDirectory(bStatusTmpH);
481 return;
482}