3 #include <TClonesArray.h>
5 #include "AliAnalysisManager.h"
7 #include "AliAODHandler.h"
8 #include "AliAODEvent.h"
10 #include "AliEmcalJet.h"
11 #include "AliJetContainer.h"
12 #include "AliParticleContainer.h"
13 #include "AliClusterContainer.h"
15 #include "AliPicoHeaderCJ.h"
16 #include "AliPicoV0RD.h"
17 #include "AliPicoV0MC.h"
18 #include "AliPicoJet.h"
19 #include "AliAnalysisTaskEmcalJetV0Filter.h"
21 ClassImp(AliAnalysisTaskEmcalJetV0Filter)
23 //_____________________________________________________________________________
24 AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter() :
25 AliAnalysisTaskEmcalJet(),
36 fCaloClustersContRD02(0),
39 fCaloClustersContRD03(0),
42 fCaloClustersContRD04(0),
51 fPicoJetsClArrRD02(0),
52 fPicoJetsClArrRD03(0),
53 fPicoJetsClArrRD04(0),
54 fPicoJetsClArrMC02(0),
55 fPicoJetsClArrMC03(0),
56 fPicoJetsClArrMC04(0),
61 // AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
65 //_____________________________________________________________________________
66 AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter(const char *name, Bool_t bHistos) :
67 AliAnalysisTaskEmcalJet(name,bHistos),
78 fCaloClustersContRD02(0),
81 fCaloClustersContRD03(0),
84 fCaloClustersContRD04(0),
93 fPicoJetsClArrRD02(0),
94 fPicoJetsClArrRD03(0),
95 fPicoJetsClArrRD04(0),
96 fPicoJetsClArrMC02(0),
97 fPicoJetsClArrMC03(0),
98 fPicoJetsClArrMC04(0),
103 // AliAnalysisTaskEmcalJetV0Filter::AliAnalysisTaskEmcalJetV0Filter
106 AliAnalysisTaskEmcal::fGeneralHistograms = bHistos;
108 //DefineOutput(2, TList::Class());
111 //_____________________________________________________________________________
112 AliAnalysisTaskEmcalJetV0Filter::~AliAnalysisTaskEmcalJetV0Filter()
115 // AliAnalysisTaskEmcalJetV0Filter::~AliAnalysisTaskEmcalJetV0Filter
118 if (fJetsContRD02) { delete fJetsContRD02; fJetsContRD02 = 0; }
119 if (fTracksContRD02) { delete fTracksContRD02; fTracksContRD02 = 0; }
120 if (fCaloClustersContRD02) { delete fCaloClustersContRD02; fCaloClustersContRD02 = 0; }
122 if (fJetsContRD03) { delete fJetsContRD03; fJetsContRD03 = 0; }
123 if (fTracksContRD03) { delete fTracksContRD03; fTracksContRD03 = 0; }
124 if (fCaloClustersContRD03) { delete fCaloClustersContRD03; fCaloClustersContRD03 = 0; }
126 if (fJetsContRD04) { delete fJetsContRD04; fJetsContRD04 = 0; }
127 if (fTracksContRD04) { delete fTracksContRD04; fTracksContRD04 = 0; }
128 if (fCaloClustersContRD04) { delete fCaloClustersContRD04; fCaloClustersContRD04 = 0; }
130 if (fJetsContMC02) { delete fJetsContMC02; fJetsContMC02 = 0; }
131 if (fTracksContMC02) { delete fTracksContMC02; fTracksContMC02 = 0; }
133 if (fJetsContMC03) { delete fJetsContMC03; fJetsContMC03 = 0; }
134 if (fTracksContMC03) { delete fTracksContMC03; fTracksContMC03 = 0; }
136 if (fJetsContMC04) { delete fJetsContMC04; fJetsContMC04 = 0; }
137 if (fTracksContMC04) { delete fTracksContMC04; fTracksContMC04 = 0; }
139 if (fV0s) { delete fV0s; fV0s = 0; }
141 if (fPicoHeaderCJ) { delete fPicoHeaderCJ; fPicoHeaderCJ = 0; }
143 if (fPicoJetsClArrRD02) { delete fPicoJetsClArrRD02; fPicoJetsClArrRD02 = 0; }
144 if (fPicoJetsClArrRD03) { delete fPicoJetsClArrRD03; fPicoJetsClArrRD03 = 0; }
145 if (fPicoJetsClArrRD04) { delete fPicoJetsClArrRD04; fPicoJetsClArrRD04 = 0; }
147 if (fPicoJetsClArrMC02) { delete fPicoJetsClArrMC02; fPicoJetsClArrMC02 = 0; }
148 if (fPicoJetsClArrMC03) { delete fPicoJetsClArrMC03; fPicoJetsClArrMC03 = 0; }
149 if (fPicoJetsClArrMC04) { delete fPicoJetsClArrMC04; fPicoJetsClArrMC04 = 0; }
151 if (fPicoV0sClArr) { delete fPicoV0sClArr; fPicoV0sClArr = 0; }
153 if (fListUserOutputs) { delete fListUserOutputs; fListUserOutputs = 0; }
156 //_____________________________________________________________________________
157 void AliAnalysisTaskEmcalJetV0Filter::Init()
160 // AliAnalysisTaskEmcalJetV0Filter::Init
166 //_____________________________________________________________________________
167 void AliAnalysisTaskEmcalJetV0Filter::UserCreateOutputObjects()
170 // AliAnalysisTaskEmcalJetV0Filter::UserCreateOutputObjects
173 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
174 //=============================================================================
176 if (!fNameJetRD02.IsNull()) {
177 fJetsContRD02 = GetJetContainer(fNameJetRD02.Data());
180 fTracksContRD02 = fJetsContRD02->GetParticleContainer();
181 fCaloClustersContRD02 = fJetsContRD02->GetClusterContainer();
185 if (!fNameJetRD03.IsNull()) {
186 fJetsContRD03 = GetJetContainer(fNameJetRD03.Data());
189 fTracksContRD03 = fJetsContRD03->GetParticleContainer();
190 fCaloClustersContRD03 = fJetsContRD03->GetClusterContainer();
194 if (!fNameJetRD04.IsNull()) {
195 fJetsContRD04 = GetJetContainer(fNameJetRD04.Data());
198 fTracksContRD04 = fJetsContRD04->GetParticleContainer();
199 fCaloClustersContRD04 = fJetsContRD04->GetClusterContainer();
202 //=============================================================================
204 if (!fNameJetMC02.IsNull()) {
205 fJetsContMC02 = GetJetContainer(fNameJetMC02.Data());
206 if (fJetsContMC02) fTracksContMC02 = fJetsContMC02->GetParticleContainer();
209 if (!fNameJetMC03.IsNull()) {
210 fJetsContMC03 = GetJetContainer(fNameJetMC03.Data());
211 if (fJetsContMC03) fTracksContMC03 = fJetsContMC03->GetParticleContainer();
214 if (!fNameJetMC04.IsNull()) {
215 fJetsContMC04 = GetJetContainer(fNameJetMC04.Data());
216 if (fJetsContMC04) fTracksContMC04 = fJetsContMC04->GetParticleContainer();
218 //=============================================================================
220 fPicoHeaderCJ = new AliPicoHeaderCJ();
221 fPicoHeaderCJ->SetName("PicoHeaderCJ");
222 AddAODBranch("AliPicoHeaderCJ", &fPicoHeaderCJ);
225 fPicoJetsClArrRD02 = new TClonesArray("AliPicoJet");
226 fPicoJetsClArrRD02->SetName("PicoJetsRD02");
227 AddAODBranch("TClonesArray", &fPicoJetsClArrRD02);
231 fPicoJetsClArrRD03 = new TClonesArray("AliPicoJet");
232 fPicoJetsClArrRD03->SetName("PicoJetsRD03");
233 AddAODBranch("TClonesArray", &fPicoJetsClArrRD03);
237 fPicoJetsClArrRD04 = new TClonesArray("AliPicoJet");
238 fPicoJetsClArrRD04->SetName("PicoJetsRD04");
239 AddAODBranch("TClonesArray", &fPicoJetsClArrRD04);
241 //=============================================================================
244 fPicoJetsClArrMC02 = new TClonesArray("AliPicoJet");
245 fPicoJetsClArrMC02->SetName("PicoJetsMC02");
246 AddAODBranch("TClonesArray", &fPicoJetsClArrMC02);
250 fPicoJetsClArrMC03 = new TClonesArray("AliPicoJet");
251 fPicoJetsClArrMC03->SetName("PicoJetsMC03");
252 AddAODBranch("TClonesArray", &fPicoJetsClArrMC03);
256 fPicoJetsClArrMC04 = new TClonesArray("AliPicoJet");
257 fPicoJetsClArrMC04->SetName("PicoJetsMC04");
258 AddAODBranch("TClonesArray", &fPicoJetsClArrMC04);
260 //=============================================================================
264 fPicoV0sClArr = new TClonesArray("AliPicoV0MC");
265 fPicoV0sClArr->SetName("PicoV0sMC");
267 fPicoV0sClArr = new TClonesArray("AliPicoV0RD");
268 fPicoV0sClArr->SetName("PicoV0sRD");
271 AddAODBranch("TClonesArray", &fPicoV0sClArr);
274 /*fListUserOutputs = new TList();
275 fListUserOutputs->SetOwner();
276 CreateUserOutputHistograms();
277 PostData(2, fListUserOutputs);*/
281 //_____________________________________________________________________________
282 void AliAnalysisTaskEmcalJetV0Filter::Terminate(Option_t *opt)
285 // AliAnalysisTaskEmcalJetV0Filter::Terminate
288 AliAnalysisTaskEmcalJet::Terminate(opt);
293 //_____________________________________________________________________________
294 Bool_t AliAnalysisTaskEmcalJetV0Filter::Run()
297 // AliAnalysisTaskEmcalJetV0Filter::Run
301 fPicoHeaderCJ->Reset();
303 if (fPicoJetsClArrRD02) fPicoJetsClArrRD02->Delete();
304 if (fPicoJetsClArrRD03) fPicoJetsClArrRD03->Delete();
305 if (fPicoJetsClArrRD04) fPicoJetsClArrRD04->Delete();
307 if (fPicoJetsClArrMC02) fPicoJetsClArrMC02->Delete();
308 if (fPicoJetsClArrMC03) fPicoJetsClArrMC03->Delete();
309 if (fPicoJetsClArrMC04) fPicoJetsClArrMC04->Delete();
311 if (fPicoV0sClArr) fPicoV0sClArr->Delete();
312 else return kFALSE; // Should not happen, make Coverity happy
314 if (!AliAnalysisTaskEmcalJet::Run()) return kFALSE;
315 //=============================================================================
317 fPicoHeaderCJ->SetEventInfo(fInputHandler);
318 //=============================================================================
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();
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();
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();
346 //=============================================================================
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();
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();
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();
374 //=============================================================================
377 AliPicoV0RD *pV0RD = 0;
378 AliPicoV0MC *pV0MC = 0;
379 ncs = fPicoV0sClArr->GetEntriesFast();
380 for (Int_t i=0; i<fV0s->GetEntriesFast(); i++) {
383 pV0MC = static_cast<AliPicoV0MC*>(fV0s->At(i)); if (!pV0MC) continue;
384 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0MC(*pV0MC); pV0MC = 0;
386 pV0RD = static_cast<AliPicoV0RD*>(fV0s->At(i)); if (!pV0RD) continue;
387 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0RD(*pV0RD); pV0RD = 0;
395 //_____________________________________________________________________________
396 Bool_t AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects()
399 // AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects
402 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects()) return kFALSE;
403 AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
408 //_____________________________________________________________________________
409 Bool_t AliAnalysisTaskEmcalJetV0Filter::IsEventSelected()
412 // AliAnalysisTaskEmcalJetV0Filter::IsEventSelected
415 if (!AliAnalysisTaskEmcalJet::IsEventSelected()) return kFALSE;
420 //_____________________________________________________________________________
421 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillHistograms()
424 // AliAnalysisTaskEmcalJetV0Filter::FillHistograms
427 if (!AliAnalysisTaskEmcalJet::FillHistograms()) return kFALSE;
432 //_____________________________________________________________________________
433 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms()
436 // AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms
439 if (!AliAnalysisTaskEmcalJet::FillGeneralHistograms()) return kFALSE;
444 //_____________________________________________________________________________
445 void AliAnalysisTaskEmcalJetV0Filter::ExecOnce()
448 // AliAnalysisTaskEmcalJetV0Filter::ExecOnce
451 AliAnalysisTaskEmcalJet::ExecOnce();
453 if (!fInitialized) return;
455 if (fIsAnaPicoV0 && (!fV0s)) {
456 fV0s = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoV0s"));
459 AliError(Form("%s: Could not retrieve V0 %s!", GetName(), "PicoV0s"));
460 fInitialized = kFALSE;
468 //_____________________________________________________________________________
469 void AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms()
472 // AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms
475 if (!fListUserOutputs) return;
477 Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
478 TH1::AddDirectory(kFALSE);
480 TH1::AddDirectory(bStatusTmpH);