]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliAnalysisTaskPhiCorrelations.cxx
disabling vtx bins by default
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliAnalysisTaskPhiCorrelations.cxx
CommitLineData
e0331fd9 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/* $Id:$ */
17
18#include <TROOT.h>
19#include <TChain.h>
20#include <TFile.h>
21#include <TList.h>
22#include <TMath.h>
23#include <TTree.h>
24#include <TH2F.h>
25#include <TRandom.h>
2a910c25 26#include <TMCProcess.h>
e0331fd9 27
28#include "AliAnalysisTaskPhiCorrelations.h"
29#include "AliAnalyseLeadingTrackUE.h"
30#include "AliUEHistograms.h"
31#include "AliUEHist.h"
32
33#include "AliAnalysisHelperJetTasks.h"
34#include "AliAnalysisManager.h"
35#include "AliAODHandler.h"
36#include "AliAODInputHandler.h"
37#include "AliAODMCParticle.h"
38#include "AliGenPythiaEventHeader.h"
39#include "AliInputEventHandler.h"
40#include "AliLog.h"
41#include "AliMCEventHandler.h"
42#include "AliVParticle.h"
2a910c25 43#include "AliCFContainer.h"
e0331fd9 44
45#include "AliESDEvent.h"
46#include "AliESDInputHandler.h"
47#include "AliMultiplicity.h"
2a910c25 48#include "AliCentrality.h"
49#include "AliStack.h"
e0331fd9 50
2a910c25 51#include "AliEventPoolManager.h"
e0331fd9 52
53
54////////////////////////////////////////////////////////////////////////
55//
56// Analysis class for azimuthal correlation studies
57// Based on the UE task from Sara Vallero and Jan Fiete
58//
59// This class needs input AODs.
60// The output is a list of analysis-specific containers.
61//
62// The AOD can be either connected to the InputEventHandler
63// for a chain of AOD files
64// or
65// to the OutputEventHandler
66// for a chain of ESD files,
67// in this case the class should be in the train after the jet-finder
68//
69// Authors:
70// Jan Fiete Grosse-Oetringhaus
71//
72////////////////////////////////////////////////////////////////////////
73
74
75ClassImp( AliAnalysisTaskPhiCorrelations )
76
77//____________________________________________________________________
78AliAnalysisTaskPhiCorrelations:: AliAnalysisTaskPhiCorrelations(const char* name):
79AliAnalysisTask(name,""),
80// general configuration
81fDebug(0),
82fMode(0),
83fReduceMemoryFootprint(kFALSE),
84// pointers to UE classes
85fAnalyseUE(0x0),
86fHistos(0x0),
87fHistosMixed(0),
88fkTrackingEfficiency(0x0),
89// handlers and events
85bfac17 90fAOD(0x0),
91fESD(0x0),
e0331fd9 92fArrayMC(0x0),
93fInputHandler(0x0),
94fMcEvent(0x0),
95fMcHandler(0x0),
2a910c25 96fPoolMgr(0x0),
e0331fd9 97// histogram settings
98fListOfHistos(0x0),
99// event QA
100fnTracksVertex(1), // QA tracks pointing to principal vertex (= 3 default)
85bfac17 101fZVertex(7.),
2a910c25 102fCentralityMethod("V0M"),
e0331fd9 103// track cuts
104fTrackEtaCut(0.8),
105fPtMin(0.5),
106fFilterBit(0xFF),
107fSelectBit(0),
2a910c25 108fUseChargeHadrons(kFALSE),
109fSelectCharge(0)
e0331fd9 110{
111 // Default constructor
112 // Define input and output slots here
113 // Input slot #0 works with a TChain
114 DefineInput(0, TChain::Class());
115 // Output slot #0 writes into a TList container
116 DefineOutput(0, TList::Class());
e0331fd9 117}
118
119AliAnalysisTaskPhiCorrelations::~AliAnalysisTaskPhiCorrelations()
120{
121 // destructor
122
123 if (fListOfHistos && !AliAnalysisManager::GetAnalysisManager()->IsProofMode())
124 delete fListOfHistos;
125}
126
127//____________________________________________________________________
128void AliAnalysisTaskPhiCorrelations::ConnectInputData(Option_t* /*option*/)
129{
130
131 // Connect the input data
132 if (fDebug > 1) AliInfo("ConnectInputData() ");
133
134 // Since AODs can either be connected to the InputEventHandler
135 // or to the OutputEventHandler ( the AOD is created by a previus task in the train )
136 // we need to get the pointer to the AODEvent correctly.
137
138 // Delta AODs are also accepted.
139
140 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
141
85bfac17 142 if( handler && handler->InheritsFrom("AliAODInputHandler") )
143 { // input AOD
144 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
145 if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODInputHandler");
146 }
147 else
148 { //output AOD
149 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
150 if (handler && handler->InheritsFrom("AliAODHandler") )
151 {
152 fAOD = ((AliAODHandler*)handler)->GetAOD();
153 if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODHandler");
154 }
155 else
156 { // no AOD
157 AliWarning("I can't get any AOD Event Handler");
158 }
159 }
160
161 if (handler && handler->InheritsFrom("AliESDInputHandler") )
162 { // input ESD
163 // pointer received per event in ::Exec
164 if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliESDInputHandler");
165 }
e0331fd9 166
167 // Initialize common pointers
168 Initialize();
e0331fd9 169}
170
171//____________________________________________________________________
172void AliAnalysisTaskPhiCorrelations::CreateOutputObjects()
173{
174 // Create the output container
175
176 if (fDebug > 1) AliInfo("CreateOutputObjects()");
177
178 // Initialize class with main algorithms, event and track selection.
179 fAnalyseUE = new AliAnalyseLeadingTrackUE();
2a910c25 180 fAnalyseUE->SetParticleSelectionCriteria(fFilterBit, fUseChargeHadrons, fTrackEtaCut, fPtMin);
e0331fd9 181 fAnalyseUE->SetDebug(fDebug);
85bfac17 182 fAnalyseUE->DefineESDCuts(fFilterBit);
e0331fd9 183
184 // Initialize output list of containers
185 if (fListOfHistos != NULL){
186 delete fListOfHistos;
187 fListOfHistos = NULL;
188 }
189 if (!fListOfHistos){
190 fListOfHistos = new TList();
191 fListOfHistos->SetOwner(kTRUE);
192 }
193
194 // Initialize class to handle histograms
195 fHistos = new AliUEHistograms("AliUEHistogramsSame", "4");
196 fHistosMixed = new AliUEHistograms("AliUEHistogramsMixed", "4");
197
2a910c25 198 fHistos->SetSelectCharge(fSelectCharge);
199 fHistosMixed->SetSelectCharge(fSelectCharge);
200
e0331fd9 201 // add histograms to list
202 fListOfHistos->Add(fHistos);
203 fListOfHistos->Add(fHistosMixed);
204
2a910c25 205 fListOfHistos->Add(new TH2F("trackletsVsV0Cent", ";L1 clusters;v0 centrality", 100, -0.5, 9999.5, 101, 0, 101));
206 fListOfHistos->Add(new TH2F("processIDs", ";#Delta#phi;process id", 100, -0.5 * TMath::Pi(), 1.5 * TMath::Pi(), kPNoProcess + 1, -0.5, kPNoProcess + 0.5));
e0331fd9 207
208 // Add task configuration to output list
209 AddSettingsTree();
210
2a910c25 211 // event mixing
212 // Int_t trackDepth = 100; // Require e.g. 20 5-track events, or 2 50-track events
85bfac17 213 Int_t trackDepth = 5000; // Require e.g. 20 5-track events, or 2 50-track events
2a910c25 214 Int_t poolsize = 100; // Maximum number of events
215
216 Int_t nCentralityBins = fHistos->GetUEHist(2)->GetEventHist()->GetNBins(1);
217 Double_t* centralityBins = (Double_t*) fHistos->GetUEHist(2)->GetEventHist()->GetAxis(1, 0)->GetXbins()->GetArray();
218
eb88bdfe 219 Int_t nZvtxBins = 7;
220 Double_t vertexBins[] = { -7, -5, -3, -1, 1, 3, 5, 7 };
221 Double_t* zvtxbin = vertexBins;
222
223 if (fHistos->GetUEHist(2)->GetEventHist()->GetNVar() > 2)
224 {
225 nZvtxBins = fHistos->GetUEHist(2)->GetEventHist()->GetNBins(2);
226 zvtxbin = (Double_t*) fHistos->GetUEHist(2)->GetEventHist()->GetAxis(2, 0)->GetXbins()->GetArray();
227 }
85bfac17 228
2a910c25 229 fPoolMgr = new AliEventPoolManager(poolsize, trackDepth, nCentralityBins, centralityBins, nZvtxBins, zvtxbin);
e0331fd9 230}
231
232//____________________________________________________________________
233void AliAnalysisTaskPhiCorrelations::Exec(Option_t */*option*/)
234{
235 // array of MC particles
85bfac17 236 if (fMcHandler) {
237 if (fAOD)
238 {
239 fArrayMC = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
240 if (!fArrayMC)
241 AliFatal("No array of MC particles found !!!");
242 }
2a910c25 243 fMcEvent = fMcHandler->MCEvent();
244 }
e0331fd9 245
85bfac17 246 // receive ESD pointer if we are not running AOD analysis
247 if (!fAOD)
248 {
249 AliVEventHandler* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
250 if (handler && handler->InheritsFrom("AliESDInputHandler"))
251 fESD = ((AliESDInputHandler*)handler)->GetEvent();
252 }
253
e0331fd9 254 // Analyse the event
255 if (fMode) AnalyseCorrectionMode();
256 else AnalyseDataMode();
257
258 PostData(0,fListOfHistos);
259}
260
261/******************** ANALYSIS METHODS *****************************/
262
263//____________________________________________________________________
264void AliAnalysisTaskPhiCorrelations::AddSettingsTree()
265{
266 //Write settings to output list
267 TTree *settingsTree = new TTree("UEAnalysisSettings","Analysis Settings in UE estimation");
268 settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I");
269 settingsTree->Branch("fSelectBit", &fSelectBit,"EventSelectionBit/I");
270 settingsTree->Branch("fTrackEtaCut", &fTrackEtaCut, "TrackEtaCut/D");
271 settingsTree->Branch("fPtMin", &fPtMin, "PtMin/D");
272 settingsTree->Branch("fUseChargeHadrons", &fUseChargeHadrons,"UseChHadrons/O");
273 settingsTree->Branch("fkTrackingEfficiency", "TH1D", &fkTrackingEfficiency);
274 settingsTree->Fill();
275 fListOfHistos->Add(settingsTree);
276}
277
278//____________________________________________________________________
279void AliAnalysisTaskPhiCorrelations::AnalyseCorrectionMode()
280{
281 // Run the analysis on MC to get the correction maps
282 //
283
2a910c25 284 if ( fDebug > 3 ) AliInfo( " Processing event in Corrections mode ..." );
285
286 Double_t centrality = 0;
287
288 if (fCentralityMethod.Length() > 0)
289 {
85bfac17 290 AliCentrality *centralityObj = 0;
291 if (fAOD)
292 centralityObj = fAOD->GetHeader()->GetCentralityP();
293 else if (fESD)
294 centralityObj = fESD->GetCentrality();
295
2a910c25 296 if (centralityObj)
297 {
298 centrality = centralityObj->GetCentralityPercentileUnchecked(fCentralityMethod);
299 Printf("Centrality is %f", centrality);
300 }
301 else
302 {
303 Printf("WARNING: Centrality object is 0");
304 centrality = -1;
305 }
306 }
307
85bfac17 308 // Support for ESD and AOD based analysis
309 AliVEvent* inputEvent = fAOD;
310 if (!inputEvent)
311 inputEvent = fESD;
312
313 TObject* mc = fArrayMC;
314 if (!mc)
315 mc = fMcEvent;
316
2a910c25 317 // count all events
318 fHistos->FillEvent(centrality, -1);
319
320 // Only consider MC events within the vtx-z region used also as cut on the reconstructed vertex
321 if (!fAnalyseUE->VertexSelection(fMcEvent, 0, fZVertex))
322 return;
85bfac17 323
324 Float_t zVtx = fMcEvent->GetPrimaryVertex()->GetZ();
2a910c25 325
326 // Get MC primaries
85bfac17 327 TObjArray* tracksMC = fAnalyseUE->GetAcceptedParticles(mc, 0, kTRUE, -1, kTRUE);
2a910c25 328
329 // (MC-true all particles)
330 // STEP 0
85bfac17 331 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepAll, tracksMC);
2a910c25 332
333 // Trigger selection ************************************************
334 if (fAnalyseUE->TriggerSelection(fInputHandler))
335 {
336 fHistos->FillEvent(centrality, AliUEHist::kCFStepTriggered);
337
338 // Vertex selection *************************************************
85bfac17 339 if (fAnalyseUE->VertexSelection(inputEvent, fnTracksVertex, fZVertex))
2a910c25 340 {
341 // fill here for tracking efficiency
342 // loop over particle species
343
344 for (Int_t particleSpecies = 0; particleSpecies < 4; particleSpecies++)
345 {
85bfac17 346 TObjArray* primMCParticles = fAnalyseUE->GetAcceptedParticles(mc, 0x0, kTRUE, particleSpecies, kTRUE);
347 TObjArray* primRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kTRUE, particleSpecies, kTRUE);
348 TObjArray* allRecoTracksMatched = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kFALSE, particleSpecies, kTRUE);
2a910c25 349
350 fHistos->FillTrackingEfficiency(primMCParticles, primRecoTracksMatched, allRecoTracksMatched, particleSpecies, centrality);
351
352 delete primMCParticles;
353 delete primRecoTracksMatched;
354 delete allRecoTracksMatched;
355 }
356
357 // (MC-true all particles)
358 // STEP 2
85bfac17 359 if (!fReduceMemoryFootprint)
360 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepVertex, tracksMC);
2a910c25 361
362 // Get MC primaries that match reconstructed track
85bfac17 363 TObjArray* tracksRecoMatchedPrim = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kTRUE, -1, kTRUE);
2a910c25 364
365 // (RECO-matched (quantities from MC particle) primary particles)
366 // STEP 4
85bfac17 367 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepTrackedOnlyPrim, tracksRecoMatchedPrim);
2a910c25 368
369 // Get MC primaries + secondaries that match reconstructed track
85bfac17 370 TObjArray* tracksRecoMatchedAll = fAnalyseUE->GetAcceptedParticles(inputEvent, mc, kFALSE, -1, kTRUE);
2a910c25 371
372 // (RECO-matched (quantities from MC particle) all particles)
373 // STEP 5
85bfac17 374 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepTracked, tracksRecoMatchedAll);
2a910c25 375
376 // Get RECO tracks
85bfac17 377 TObjArray* tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, -1, kTRUE);
2a910c25 378
379 // (RECO all tracks)
380 // STEP 6
85bfac17 381 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepReconstructed, tracks);
2a910c25 382
85bfac17 383 if (0 && !fReduceMemoryFootprint)
2a910c25 384 {
385 // make list of secondaries (matched with MC)
386 TObjArray* tracksRecoMatchedSecondaries = new TObjArray;
387 for (Int_t i=0; i<tracksRecoMatchedAll->GetEntries(); i++)
388 if (((AliAODMCParticle*)tracksRecoMatchedAll->At(i))->IsPhysicalPrimary() == kFALSE)
389 tracksRecoMatchedSecondaries->Add(tracksRecoMatchedAll->At(i));
390
391 // Study: Use only secondaries as trigger particles and plot the correlation vs. all particles; store in step 9
85bfac17 392 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepBiasStudy2, tracksRecoMatchedSecondaries, tracksRecoMatchedAll);
2a910c25 393
394 // Study: Use only primaries as trigger particles and plot the correlation vs. secondaries; store in step 8
85bfac17 395 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepBiasStudy, tracksRecoMatchedPrim, tracksRecoMatchedSecondaries);
2a910c25 396
397 // plot delta phi vs process id of secondaries
398 // trigger particles: primaries in 4 < pT < 10
399 // associated particles: secondaries in 1 < pT < 10
400
401 for (Int_t i=0; i<tracksRecoMatchedPrim->GetEntries(); i++)
402 {
403 AliVParticle* triggerParticle = (AliVParticle*) tracksRecoMatchedPrim->At(i);
404
405 if (triggerParticle->Pt() < 4 || triggerParticle->Pt() > 10)
406 continue;
407
408 for (Int_t j=0; j<tracksRecoMatchedSecondaries->GetEntries(); j++)
409 {
410 AliAODMCParticle* particle = (AliAODMCParticle*) tracksRecoMatchedSecondaries->At(j);
411
412 if (particle->Pt() < 1 || particle->Pt() > 10)
413 continue;
414
415 if (particle->Pt() > triggerParticle->Pt())
416 continue;
417
418 Double_t deltaPhi = triggerParticle->Phi() - particle->Phi();
419 if (deltaPhi > 1.5 * TMath::Pi())
420 deltaPhi -= TMath::TwoPi();
421 if (deltaPhi < -0.5 * TMath::Pi())
422 deltaPhi += TMath::TwoPi();
423
424 Int_t processID = fMcEvent->Stack()->Particle(particle->GetLabel())->GetUniqueID();
425
426 ((TH2F*) fListOfHistos->FindObject("processIDs"))->Fill(deltaPhi, processID);
427 }
428 }
429
430 delete tracksRecoMatchedSecondaries;
431 }
432
433 delete tracksRecoMatchedPrim;
434 delete tracksRecoMatchedAll;
435 delete tracks;
436 }
437 }
438
439 delete tracksMC;
e0331fd9 440}
441
442//____________________________________________________________________
443void AliAnalysisTaskPhiCorrelations::AnalyseDataMode()
444{
445
446 // Run the analysis on DATA or MC to get raw distributions
447
e0331fd9 448 if ( fDebug > 3 ) AliInfo( " Processing event in Data mode ..." );
e0331fd9 449
2a910c25 450 // skip not selected events here (the AOD is not updated for those)
451 if (!fInputHandler)
452 return;
453
85bfac17 454 if (!(fInputHandler->IsEventSelected() & (AliVEvent::kMB | AliVEvent::kUserDefined)))
2a910c25 455 return;
e0331fd9 456
2a910c25 457 Double_t centrality = 0;
458
459 if (fCentralityMethod.Length() > 0)
460 {
85bfac17 461 AliCentrality *centralityObj = 0;
462 if (fAOD)
463 centralityObj = fAOD->GetHeader()->GetCentralityP();
464 else if (fESD)
465 centralityObj = fESD->GetCentrality();
466
2a910c25 467 if (centralityObj)
468 centrality = centralityObj->GetCentralityPercentile(fCentralityMethod);
469 //centrality = centralityObj->GetCentralityPercentileUnchecked(fCentralityMethod);
470 else
471 centrality = -1;
472 Printf("Centrality is %f", centrality);
473 }
474
85bfac17 475 // Support for ESD and AOD based analysis
476 AliVEvent* inputEvent = fAOD;
477 if (!inputEvent)
478 inputEvent = fESD;
479
480 fHistos->SetRunNumber(inputEvent->GetRunNumber());
481
2a910c25 482 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
483 fHistos->FillEvent(centrality, AliUEHist::kCFStepAll);
484
e0331fd9 485 // Trigger selection ************************************************
486 if (!fAnalyseUE->TriggerSelection(fInputHandler)) return;
487
488 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
2a910c25 489 fHistos->FillEvent(centrality, AliUEHist::kCFStepTriggered);
e0331fd9 490
491 // Vertex selection *************************************************
85bfac17 492 if(!fAnalyseUE->VertexSelection(inputEvent, fnTracksVertex, fZVertex)) return;
e0331fd9 493
494 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
2a910c25 495 fHistos->FillEvent(centrality, AliUEHist::kCFStepVertex);
e0331fd9 496
2a910c25 497 if (centrality < 0)
498 return;
e0331fd9 499
85bfac17 500 TObjArray* tracks = fAnalyseUE->GetAcceptedParticles(inputEvent, 0, kTRUE, -1, kTRUE);
2a910c25 501 //Printf("Accepted %d tracks", tracks->GetEntries());
e0331fd9 502
2a910c25 503 // event mixing
e0331fd9 504
2a910c25 505 // 1. First get an event pool corresponding in mult (cent) and
506 // zvertex to the current event. Once initialized, the pool
507 // should contain nMix (reduced) events. This routine does not
508 // pre-scan the chain. The first several events of every chain
509 // will be skipped until the needed pools are filled to the
510 // specified depth. If the pool categories are not too rare, this
511 // should not be a problem. If they are rare, you could lose
512 // statistics.
513
514 // 2. Collect the whole pool's content of tracks into one TObjArray
515 // (bgTracks), which is effectively a single background super-event.
516
517 // 3. The reduced and bgTracks arrays must both be passed into
518 // FillCorrelations(). Also nMix should be passed in, so a weight
519 // of 1./nMix can be applied.
520
85bfac17 521 const AliVVertex* vertex = inputEvent->GetPrimaryVertex();
2a910c25 522 Double_t zVtx = vertex->GetZ();
523
524 AliEventPool* pool = fPoolMgr->GetEventPool(centrality, zVtx);
525
526 if (!pool)
527 AliFatal(Form("No pool found for centrality = %f, zVtx = %f", centrality, zVtx));
528
529 //pool->SetDebug(1);
e0331fd9 530
2a910c25 531 // Fill containers at STEP 6 (reconstructed)
85bfac17 532 fHistos->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepReconstructed, tracks);
2a910c25 533
534 if (pool->IsReady())
e0331fd9 535 {
2a910c25 536
537 Int_t nMix = pool->GetCurrentNEvents();
538 //cout << "nMix = " << nMix << endl;
539
540 // Fill mixed-event histos here
541 for (Int_t jMix=0; jMix<nMix; jMix++) {
542 TObjArray* bgTracks = pool->GetEvent(jMix);
85bfac17 543 fHistosMixed->FillCorrelations(centrality, zVtx, AliUEHist::kCFStepReconstructed, tracks, bgTracks, 1.0 / nMix, (jMix == 0));
e0331fd9 544 }
545 }
546
2a910c25 547 // clone and give ownership to event pool
548 TObjArray* tracksClone = (TObjArray*) tracks->Clone();
549 tracksClone->SetOwner(kTRUE);
550
551 pool->UpdatePool(tracksClone);
552 //pool->PrintInfo();
553
e0331fd9 554 delete tracks;
e0331fd9 555}
556
557//____________________________________________________________________
558void AliAnalysisTaskPhiCorrelations::Initialize()
559{
560 // input handler
561 fInputHandler = (AliInputEventHandler*)
562 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
563 // MC handler
564 fMcHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
565}