AliPhysics  a9863a5 (a9863a5)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskEmcalJetV0Filter.cxx
Go to the documentation of this file.
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"
20 
22 
23 //_____________________________________________________________________________
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 //_____________________________________________________________________________
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 
107 
108 //DefineOutput(2, TList::Class());
109 }
110 
111 //_____________________________________________________________________________
113 {
114 //
115 // AliAnalysisTaskEmcalJetV0Filter::~AliAnalysisTaskEmcalJetV0Filter
116 //
117 
118  if (fJetsContRD02) { delete fJetsContRD02; fJetsContRD02 = 0; }
119  if (fTracksContRD02) { delete fTracksContRD02; fTracksContRD02 = 0; }
121 
122  if (fJetsContRD03) { delete fJetsContRD03; fJetsContRD03 = 0; }
123  if (fTracksContRD03) { delete fTracksContRD03; fTracksContRD03 = 0; }
125 
126  if (fJetsContRD04) { delete fJetsContRD04; fJetsContRD04 = 0; }
127  if (fTracksContRD04) { delete fTracksContRD04; fTracksContRD04 = 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 
146 
150 
151  if (fPicoV0sClArr) { delete fPicoV0sClArr; fPicoV0sClArr = 0; }
152 
154 }
155 
156 //_____________________________________________________________________________
158 {
159 //
160 // AliAnalysisTaskEmcalJetV0Filter::Init
161 //
162 
163  return;
164 }
165 
166 //_____________________________________________________________________________
168 {
169 //
170 // AliAnalysisTaskEmcalJetV0Filter::UserCreateOutputObjects
171 //
172 
174 //=============================================================================
175 
176  if (!fNameJetRD02.IsNull()) {
178 
179  if (fJetsContRD02) {
182  }
183  }
184 
185  if (!fNameJetRD03.IsNull()) {
187 
188  if (fJetsContRD03) {
191  }
192  }
193 
194  if (!fNameJetRD04.IsNull()) {
196 
197  if (fJetsContRD04) {
200  }
201  }
202 //=============================================================================
203 
204  if (!fNameJetMC02.IsNull()) {
207  }
208 
209  if (!fNameJetMC03.IsNull()) {
212  }
213 
214  if (!fNameJetMC04.IsNull()) {
217  }
218 //=============================================================================
219 
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 //_____________________________________________________________________________
283 {
284 //
285 // AliAnalysisTaskEmcalJetV0Filter::Terminate
286 //
287 
288  AliAnalysisTaskEmcalJet::Terminate(opt);
289 
290  return;
291 }
292 
293 //_____________________________________________________________________________
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  else return kFALSE; // Should not happen, make Coverity happy
313 
314  if (!AliAnalysisTaskEmcalJet::Run()) return kFALSE;
315 //=============================================================================
316 
317  fPicoHeaderCJ->SetEventInfo(fInputHandler);
318 //=============================================================================
319 
320  if (fJetsContRD02) {
321  ncs = fPicoJetsClArrRD02->GetEntriesFast();
324  AliEmcalJet *pJet = fJetsContRD02->GetNextAcceptJet(); while (pJet) {
325  new ((*fPicoJetsClArrRD02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
327  }
328  }
329 
330  if (fJetsContRD03) {
331  ncs = fPicoJetsClArrRD03->GetEntriesFast();
334  AliEmcalJet *pJet = fJetsContRD03->GetNextAcceptJet(); while (pJet) {
335  new ((*fPicoJetsClArrRD03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
337  }
338  }
339 
340  if (fJetsContRD04) {
341  ncs = fPicoJetsClArrRD04->GetEntriesFast();
344  AliEmcalJet *pJet = fJetsContRD04->GetNextAcceptJet(); while (pJet) {
345  new ((*fPicoJetsClArrRD04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
347  }
348  }
349 //=============================================================================
350 
351  if (fJetsContMC02) {
352  ncs = fPicoJetsClArrMC02->GetEntriesFast();
355  AliEmcalJet *pJet = fJetsContMC02->GetNextAcceptJet(); while (pJet) {
356  new ((*fPicoJetsClArrMC02)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
358  }
359  }
360 
361  if (fJetsContMC03) {
362  ncs = fPicoJetsClArrMC03->GetEntriesFast();
365  AliEmcalJet *pJet = fJetsContMC03->GetNextAcceptJet(); while (pJet) {
366  new ((*fPicoJetsClArrMC03)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
368  }
369  }
370 
371  if (fJetsContMC04) {
372  ncs = fPicoJetsClArrMC04->GetEntriesFast();
375  AliEmcalJet *pJet = fJetsContMC04->GetNextAcceptJet(); while (pJet) {
376  new ((*fPicoJetsClArrMC04)[ncs++]) AliPicoJet(pJet, GetLeadingHadronPt(pJet));
378  }
379  }
380 //=============================================================================
381 
382  if (fV0s) {
383  AliPicoV0RD *pV0RD = 0;
384  AliPicoV0MC *pV0MC = 0;
385  ncs = fPicoV0sClArr->GetEntriesFast();
386  for (Int_t i=0; i<fV0s->GetEntriesFast(); i++) {
387 
388  if (fAnaPicoV0MC) {
389  pV0MC = static_cast<AliPicoV0MC*>(fV0s->At(i)); if (!pV0MC) continue;
390  new ((*fPicoV0sClArr)[ncs++]) AliPicoV0MC(*pV0MC); pV0MC = 0;
391  } else {
392  pV0RD = static_cast<AliPicoV0RD*>(fV0s->At(i)); if (!pV0RD) continue;
393  new ((*fPicoV0sClArr)[ncs++]) AliPicoV0RD(*pV0RD); pV0RD = 0;
394  }
395  }
396  }
397 
398  return kTRUE;
399 }
400 
401 //_____________________________________________________________________________
403 {
404 //
405 // AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects
406 //
407 
408  if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects()) return kFALSE;
409  AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
410 
411  return kTRUE;
412 }
413 
414 //_____________________________________________________________________________
416 {
417 //
418 // AliAnalysisTaskEmcalJetV0Filter::IsEventSelected
419 //
420 
421  if (!AliAnalysisTaskEmcalJet::IsEventSelected()) return kFALSE;
422 
423  return kTRUE;
424 }
425 
426 //_____________________________________________________________________________
428 {
429 //
430 // AliAnalysisTaskEmcalJetV0Filter::FillHistograms
431 //
432 
433  if (!AliAnalysisTaskEmcalJet::FillHistograms()) return kFALSE;
434 
435  return kTRUE;
436 }
437 
438 //_____________________________________________________________________________
440 {
441 //
442 // AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms
443 //
444 
446 
447  return kTRUE;
448 }
449 
450 //_____________________________________________________________________________
452 {
453 //
454 // AliAnalysisTaskEmcalJetV0Filter::ExecOnce
455 //
456 
458 
459  if (!fInitialized) return;
460 
461  if (fIsAnaPicoV0 && (!fV0s)) {
462  fV0s = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoV0s"));
463 
464  if (!fV0s) {
465  AliError(Form("%s: Could not retrieve V0 %s!", GetName(), "PicoV0s"));
466  fInitialized = kFALSE;
467  return;
468  }
469  }
470 
471  return;
472 }
473 
474 //_____________________________________________________________________________
476 {
477 //
478 // AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms
479 //
480 
481  if (!fListUserOutputs) return;
482 
483  Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
484  TH1::AddDirectory(kFALSE);
485 
486  TH1::AddDirectory(bStatusTmpH);
487  return;
488 }
Double_t GetRhoVal() const
void BackgroundRhoMC02(Double_t d)
AliJetContainer * GetJetContainer(Int_t i=0) const
AliClusterContainer * GetClusterContainer() const
Bool_t fGeneralHistograms
whether or not it should fill some general histograms
Double_t GetLeadingHadronPt(AliEmcalJet *jet, Int_t c=0)
void BackgroundRhoMC03(Double_t d)
void BackgroundRhoRD04(Double_t d)
AliParticleContainer * GetParticleContainer() const
virtual Bool_t FillHistograms()
void BackgroundRhoMC04(Double_t d)
virtual Bool_t FillGeneralHistograms()
void SetEventInfo(AliInputEventHandler *const pEH)
AliEmcalJet * GetNextAcceptJet()
virtual Bool_t IsEventSelected()
ClassImp(AliAnalysisTaskEmcalJetV0Filter) AliAnalysisTaskEmcalJetV0Filter
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Bool_t fInitialized
whether or not the task has been already initialized
void ResetCurrentID(Int_t i=-1)
void BackgroundRhoRD03(Double_t d)
void BackgroundRhoRD02(Double_t d)