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();
313 if (!AliAnalysisTaskEmcalJet::Run()) return kFALSE;
314 //=============================================================================
316 fPicoHeaderCJ->SetEventInfo(fInputHandler);
317 //=============================================================================
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();
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();
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();
345 //=============================================================================
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();
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();
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();
373 //=============================================================================
376 AliPicoV0RD *pV0RD = 0;
377 AliPicoV0MC *pV0MC = 0;
378 ncs = fPicoV0sClArr->GetEntriesFast();
379 for (Int_t i=0; i<fV0s->GetEntriesFast(); i++) {
382 pV0MC = static_cast<AliPicoV0MC*>(fV0s->At(i)); if (!pV0MC) continue;
383 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0MC(*pV0MC); pV0MC = 0;
385 pV0RD = static_cast<AliPicoV0RD*>(fV0s->At(i)); if (!pV0RD) continue;
386 new ((*fPicoV0sClArr)[ncs++]) AliPicoV0RD(*pV0RD); pV0RD = 0;
394 //_____________________________________________________________________________
395 Bool_t AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects()
398 // AliAnalysisTaskEmcalJetV0Filter::RetrieveEventObjects
401 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects()) return kFALSE;
402 AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler()->SetFillAOD(kTRUE);
407 //_____________________________________________________________________________
408 Bool_t AliAnalysisTaskEmcalJetV0Filter::IsEventSelected()
411 // AliAnalysisTaskEmcalJetV0Filter::IsEventSelected
414 if (!AliAnalysisTaskEmcalJet::IsEventSelected()) return kFALSE;
419 //_____________________________________________________________________________
420 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillHistograms()
423 // AliAnalysisTaskEmcalJetV0Filter::FillHistograms
426 if (!AliAnalysisTaskEmcalJet::FillHistograms()) return kFALSE;
431 //_____________________________________________________________________________
432 Bool_t AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms()
435 // AliAnalysisTaskEmcalJetV0Filter::FillGeneralHistograms
438 if (!AliAnalysisTaskEmcalJet::FillGeneralHistograms()) return kFALSE;
443 //_____________________________________________________________________________
444 void AliAnalysisTaskEmcalJetV0Filter::ExecOnce()
447 // AliAnalysisTaskEmcalJetV0Filter::ExecOnce
450 AliAnalysisTaskEmcalJet::ExecOnce();
452 if (!fInitialized) return;
454 if (fIsAnaPicoV0 && (!fV0s)) {
455 fV0s = dynamic_cast<TClonesArray*>(InputEvent()->FindListObject("PicoV0s"));
458 AliError(Form("%s: Could not retrieve V0 %s!", GetName(), "PicoV0s"));
459 fInitialized = kFALSE;
467 //_____________________________________________________________________________
468 void AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms()
471 // AliAnalysisTaskEmcalJetV0Filter::CreateUserOutputHistograms
474 if (!fListUserOutputs) return;
476 Bool_t bStatusTmpH = TH1::AddDirectoryStatus();
477 TH1::AddDirectory(kFALSE);
479 TH1::AddDirectory(bStatusTmpH);