1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
26 //#include <TVector3.h>
28 #include "AliAnalysisTaskLeadingTrackUE.h"
29 #include "AliAnalyseLeadingTrackUE.h"
30 #include "AliUEHistograms.h"
31 #include "AliUEHist.h"
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"
41 #include "AliMCEventHandler.h"
42 #include "AliVParticle.h"
45 ////////////////////////////////////////////////////////////////////////
47 // Analysis class for Underlying Event studies w.r.t. leading track
49 // Look for correlations on the tranverse regions w.r.t
50 // the leading track in the event
52 // This class needs input AODs.
53 // The output is a list of analysis-specific containers.
55 // The AOD can be either connected to the InputEventHandler
56 // for a chain of AOD files
58 // to the OutputEventHandler
59 // for a chain of ESD files,
60 // in this case the class should be in the train after the jet-finder
63 // Arian Abrahantes Quintana
64 // Jan Fiete Grosse-Oetringhaus
65 // Ernesto Lopez Torres
68 ////////////////////////////////////////////////////////////////////////
71 ClassImp( AliAnalysisTaskLeadingTrackUE )
73 // Define global pointer
74 AliAnalysisTaskLeadingTrackUE* AliAnalysisTaskLeadingTrackUE::fgTaskLeadingTrackUE=NULL;
76 //____________________________________________________________________
77 AliAnalysisTaskLeadingTrackUE:: AliAnalysisTaskLeadingTrackUE(const char* name):
78 AliAnalysisTask(name,""),
79 // general configuration
82 // pointers to UE classes
85 fTrackingEfficiency(0x0),
86 // handlers and events
96 fMaxJetPtInHist(300.),
98 fnTracksVertex(3), // QA tracks pointing to principal vertex (= 3 default)
102 fLeadingTrackEtaCut(0.8),
104 fUseChargeHadrons(kFALSE),
108 // Default constructor
109 // Define input and output slots here
110 // Input slot #0 works with a TChain
111 DefineInput(0, TChain::Class());
112 // Output slot #0 writes into a TList container
113 DefineOutput(0, TList::Class());
118 /************** INTERFACE METHODS *****************************/
120 //______________________________________________________________
121 Bool_t AliAnalysisTaskLeadingTrackUE::Notify()
124 // Implemented Notify() to read the cross sections
125 // and number of trials from pyxsec.root.
126 // This will be used when merging different MC samples.
127 // (Copied from AliAnalysisTaskJFSystematics)
130 TTree *tree = AliAnalysisManager::GetAnalysisManager()->GetTree();
131 Float_t xsection = 0;
134 TFile *curfile = tree->GetCurrentFile();
136 Error("Notify","No current file");
140 AliAnalysisHelperJetTasks::PythiaInfoFromFile(curfile->GetName(),xsection,trials);
143 //fHistosUE->GetXsec()->Fill("<#sigma>",xsection);
145 // construct average trials
146 Float_t nEntries = (Float_t)tree->GetTree()->GetEntries();
147 if(trials>=nEntries && nEntries>0.)fAvgTrials = trials/nEntries;
153 //____________________________________________________________________
154 void AliAnalysisTaskLeadingTrackUE::ConnectInputData(Option_t* /*option*/)
157 // Connect the input data
158 if (fDebug > 1) AliInfo("ConnectInputData() ");
160 // Since AODs can either be connected to the InputEventHandler
161 // or to the OutputEventHandler ( the AOD is created by a previus task in the train )
162 // we need to get the pointer to the AODEvent correctly.
164 // Delta AODs are also accepted.
166 TObject* handler = AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler();
168 if( handler && handler->InheritsFrom("AliAODInputHandler") ) { // input AOD
169 fAOD = ((AliAODInputHandler*)handler)->GetEvent();
170 if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODInputHandler");
171 } else { //output AOD
172 handler = AliAnalysisManager::GetAnalysisManager()->GetOutputEventHandler();
173 if( handler && handler->InheritsFrom("AliAODHandler") ) {
174 fAOD = ((AliAODHandler*)handler)->GetAOD();
175 if (fDebug > 1) AliInfo(" ==== Tracks and Jets from AliAODHandler");
177 AliFatal("I can't get any AOD Event Handler");
182 // Initialize common pointers
187 //____________________________________________________________________
188 void AliAnalysisTaskLeadingTrackUE::CreateOutputObjects()
190 // Create the output container
192 if (fDebug > 1) AliInfo("CreateOutputObjects()");
194 // Initialize class with main algorithms, event and track selection.
195 fAnalyseUE = new AliAnalyseLeadingTrackUE();
196 fAnalyseUE->SetParticleSelectionCriteria(fFilterBit, fUseChargeHadrons, fLeadingTrackEtaCut);
197 fAnalyseUE->SetDebug(fDebug);
199 // Initialize output list of containers
200 if (fListOfHistos != NULL){
201 delete fListOfHistos;
202 fListOfHistos = NULL;
205 fListOfHistos = new TList();
206 fListOfHistos->SetOwner(kTRUE);
209 // Initialize class to handle histograms
210 fHistosUE = new AliUEHistograms;
212 // add histograms to list
213 fListOfHistos->Add(fHistosUE);
215 //fListOfHistos->Add(new TH2F("multVsLeadStep5", ";multiplicity;leading pT", 100, -0.5, 99.5, 20, 0, 10));
217 // Add task configuration to output list
221 PostData(0,fListOfHistos);
224 //____________________________________________________________________
225 void AliAnalysisTaskLeadingTrackUE::Exec(Option_t */*option*/)
227 // array of MC particles
229 fArrayMC = dynamic_cast<TClonesArray*>(fAOD->FindListObject(AliAODMCParticle::StdBranchName()));
230 if (!fArrayMC)AliFatal("No array of MC particles found !!!");
233 // Get number of trials from MC header
236 fMcEvent = fMcHandler->MCEvent();
238 // TO-DO: extend to PHOJET
239 AliGenPythiaEventHeader* pythiaGenHeader = AliAnalysisHelperJetTasks::GetPythiaEventHeader(fMcEvent);
241 nTrials = pythiaGenHeader->Trials();
247 //fHistosUE->GetTrials()->Fill("#sum{ntrials}",fAvgTrials);
250 if (fMode) AnalyseCorrectionMode();
251 else AnalyseDataMode();
253 PostData(0,fListOfHistos);
256 //____________________________________________________________________
257 void AliAnalysisTaskLeadingTrackUE::Terminate(Option_t */*option*/)
260 // Terminate analysis
261 if( fDebug > 1 ) AliInfo("End analysis");
263 if (!gROOT->IsBatch()){
264 fListOfHistos = dynamic_cast<TList*> (GetOutputData(0));
266 AliError("Histogram List is not available");
272 AliInfo(" Batch mode, not histograms will be shown...");
278 /******************** ANALYSIS METHODS *****************************/
280 //____________________________________________________________________
281 void AliAnalysisTaskLeadingTrackUE::AddSettingsTree()
283 //Write settings to output list
284 TTree *settingsTree = new TTree("UEAnalysisSettings","Analysis Settings in UE estimation");
285 settingsTree->Branch("fFilterBit", &fFilterBit,"FilterBit/I");
286 settingsTree->Branch("fLeadingTrackEtaCut", &fLeadingTrackEtaCut, "LeadingTrackEtaCut/D");
287 settingsTree->Branch("fUseChargeHadrons", &fUseChargeHadrons,"UseChHadrons/O");
288 settingsTree->Fill();
289 fListOfHistos->Add(settingsTree);
292 //____________________________________________________________________
293 void AliAnalysisTaskLeadingTrackUE::AnalyseCorrectionMode()
296 // Run the analysis on MC to get the correction maps
298 PostData(0,fListOfHistos);
300 if ( fDebug > 3 ) AliInfo( " Processing event in Corrections mode ..." );
302 //PROCESS TYPE (ND,SD,DD)
303 AliAnalysisHelperJetTasks::MCProcessType eventId = AliAnalysisHelperJetTasks::kInvalidProcess;
304 if (fMcHandler && fMcEvent) {
305 AliGenEventHeader* genHeader = fMcEvent->GenEventHeader();
306 eventId = AliAnalysisHelperJetTasks::GetPythiaEventProcessType(genHeader,kFALSE);
308 eventId = AliAnalysisHelperJetTasks::GetDPMjetEventProcessType(genHeader,kFALSE);
310 if (eventId<0 && fDebug>1)AliInfo("No Pythia or Phojet Header retrived!");
313 if (eventId == AliAnalysisHelperJetTasks::kND)fillId = 0;
314 if (eventId == AliAnalysisHelperJetTasks::kSD)fillId = 1;
315 if (eventId == AliAnalysisHelperJetTasks::kDD)fillId = 2;
318 fHistosUE->FillEvent(fillId, -1);
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))
324 // Get MC-true leading particle (but do not cut out events!)
325 TObjArray *ltMC = (TObjArray*)fAnalyseUE->FindLeadingObjects(fArrayMC);
326 AliVParticle* leadingMC = 0;
328 leadingMC = (AliVParticle*) ltMC->At(0);
330 // it can happen that there is no MC leading particle in the acceptance required (|eta|<0.8)
331 // and we do not want to base the event slection on MC information
333 // Sort MC-true charged particles
334 // as output you get an array of 3 lists of particles belonging to different regions:
337 // - at 2: transverse MIN
338 // - at 3: transverse MAX
339 TObjArray *regionSortedParticlesMC = (TObjArray*)fAnalyseUE->SortRegions(leadingMC, fArrayMC, 0x0);
340 TObjArray *regionsMinMaxMC = (TObjArray*)fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesMC->At(2),(TList*)regionSortedParticlesMC->At(3));
341 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
342 // (MC-true leading particle and MC-true all particles)
344 fHistosUE->Fill(fillId,AliUEHist::kCFStepAll,leadingMC,(TList*)regionSortedParticlesMC->At(0),(TList*)regionSortedParticlesMC->At(1),(TList*)regionsMinMaxMC->At(0),(TList*)regionsMinMaxMC->At(1));
346 // Trigger selection ************************************************
347 if (fAnalyseUE->TriggerSelection(fInputHandler))
349 // Count events that pass AliPhysicsSelection
351 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
352 // (MC-true leading particle and MC-true all particles)
354 fHistosUE->Fill(fillId,AliUEHist::kCFStepTriggered,leadingMC,(TList*)regionSortedParticlesMC->At(0),(TList*)regionSortedParticlesMC->At(1),(TList*)regionsMinMaxMC->At(0),(TList*)regionsMinMaxMC->At(1));
356 // count number of MC tracks above 150 MeV/c
358 if (leadingMC && leadingMC->Pt() > 0.15)
360 for (Int_t i=0; i<4; i++)
361 for (Int_t j=0; j<((TList*)regionSortedParticlesMC->At(i))->GetEntries(); j++)
362 if (((AliVParticle*) ((TList*)regionSortedParticlesMC->At(i))->At(j))->Pt() > 0.15)
365 //((TH2F*)fListOfHistos->FindObject("multVsLeadStep5"))->Fill(nMCTracks, leadingMC->Pt());
367 // Vertex selection *************************************************
368 if (fAnalyseUE->VertexSelection(fAOD, fnTracksVertex, fZVertex))
370 // Count events that pass Vertex selection
372 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
373 // (MC-true leading particle and MC-true all particles)
375 fHistosUE->Fill(fillId,AliUEHist::kCFStepVertex,leadingMC,(TList*)regionSortedParticlesMC->At(0),(TList*)regionSortedParticlesMC->At(1),(TList*)regionsMinMaxMC->At(0),(TList*)regionsMinMaxMC->At(1));
377 // Get Reconstructed leading particle *******************************
378 TObjArray *ltRECO = fAnalyseUE->FindLeadingObjects(fAOD);
381 // Count events where a reconstructed track was found in |eta|<0.8
382 // the pT cut will be set when projecting output containers
383 // for leading particle correlation plots
385 fHistosUE->Fill(leadingMC, (AliVParticle*)ltRECO->At(0));
388 // If there is no MC leading track the container is not filled, so the number of entries in the container might be different
389 // from the number of events after the selection, since the selection is based on RECO tracks
390 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
391 // (MC-true leading particle and MC-true all particles)
393 fHistosUE->Fill(fillId,AliUEHist::kCFStepAnaTopology,leadingMC,(TList*)regionSortedParticlesMC->At(0),(TList*)regionSortedParticlesMC->At(1),(TList*)regionsMinMaxMC->At(0),(TList*)regionsMinMaxMC->At(1));
395 //Sort RECO particles w.r.t. MC-leading and return matched (primary) MC particle
396 // (you cannot sort tracks w.r.t. RECO-leading and plot it vs. MC-leading ...)
397 TObjArray *regionSortedParticlesRECOLTMC = (TObjArray*)fAnalyseUE->SortRegions(leadingMC, fAOD, fArrayMC);
398 TObjArray *regionsMinMaxRECOLTMC = (TObjArray*)fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesRECOLTMC->At(2),(TList*)regionSortedParticlesRECOLTMC->At(3));
399 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
400 // (MC leading particle and RECO-matched (quantities from MC particle) all particles)
402 fHistosUE->Fill(fillId,AliUEHist::kCFStepTrackedOnlyPrim,leadingMC,(TList*)regionSortedParticlesRECOLTMC->At(0),(TList*)regionSortedParticlesRECOLTMC->At(1),(TList*)regionsMinMaxRECOLTMC->At(0),(TList*)regionsMinMaxRECOLTMC->At(1));
403 // comparing this step with step 3 (for all-tracks observables) you get the tracking efficiency
405 //Sort RECO particles w.r.t. MC-leading and return matched (primary+secondary) MC particle
406 // (you cannot sort tracks w.r.t. RECO-leading and plot it vs. MC-leading ...)
407 TObjArray *regionSortedParticlesRECOLTMC2 = (TObjArray*)fAnalyseUE->SortRegions(leadingMC, fAOD, fArrayMC,kFALSE);
408 TObjArray *regionsMinMaxRECOLTMC2 = (TObjArray*)fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesRECOLTMC2->At(2),(TList*)regionSortedParticlesRECOLTMC2->At(3));
410 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
411 // (MC leading particle and RECO-matched (quantities from MC particle) all particles)
413 fHistosUE->Fill(fillId,AliUEHist::kCFStepTracked,leadingMC,(TList*)regionSortedParticlesRECOLTMC2->At(0),(TList*)regionSortedParticlesRECOLTMC2->At(1),(TList*)regionsMinMaxRECOLTMC2->At(0),(TList*)regionsMinMaxRECOLTMC2->At(1));
414 // comparing this step with step 3 (for all-tracks observables) you get the tracking efficiency
416 // SWITCH TO RECONSTRUCTED TRACKS ************************************
417 // The next steps correspond to track selections
418 // Sort RECO particles w.r.t. RECO-leading and return RECO particle
419 TObjArray *regionSortedParticlesRECO = (TObjArray*)fAnalyseUE->SortRegions((AliVParticle*)ltRECO->At(0), fAOD,0);
420 TObjArray *regionsMinMaxRECO = (TObjArray*)fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesRECO->At(2),(TList*)regionSortedParticlesRECO->At(3));
421 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
422 // (RECO leading particle and RECO all particles)
424 fHistosUE->Fill(fillId,AliUEHist::kCFStepReconstructed,(AliVParticle*)ltRECO->At(0),(TList*)regionSortedParticlesRECO->At(0),(TList*)regionSortedParticlesRECO->At(1),(TList*)regionsMinMaxRECO->At(0),(TList*)regionsMinMaxRECO->At(1));
426 // STEP 8 for reduced efficiency study
427 FillReducedEfficiency(fillId, AliUEHist::kCFStepBiasStudy, ltRECO, kFALSE);
428 FillReducedEfficiency(fillId, AliUEHist::kCFStepBiasStudy2, ltRECO, kTRUE);
430 // count number of reco tracks above 150 MeV/c
431 Int_t nRecoTracks = 0;
432 if (((AliVParticle*) ltRECO->At(0))->Pt() > 0.15)
434 for (Int_t i=0; i<4; i++)
435 for (Int_t j=0; j<((TList*)regionSortedParticlesRECO->At(i))->GetEntries(); j++)
436 if (((AliVParticle*) ((TList*)regionSortedParticlesRECO->At(i))->At(j))->Pt() > 0.15)
439 if (leadingMC && leadingMC->Pt() > 0.5)
440 fHistosUE->GetCorrelationMultiplicity()->Fill(nMCTracks, nRecoTracks);
444 // Match reco leading track with true *********************************
445 Int_t recoLabel = ((AliAODTrack*)ltRECO->At(0))->GetLabel();
446 Int_t mcLabel = ((AliAODMCParticle*)leadingMC)->GetLabel();
447 if (recoLabel != mcLabel)
450 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
451 // (RECO-MATCHED leading particle and RECO all particles)
453 fHistosUE->Fill(fillId,AliUEHist::kCFStepRealLeading,(AliVParticle*)ltRECO->At(0),(TList*)regionSortedParticlesRECO->At(0),(TList*)regionSortedParticlesRECO->At(1),(TList*)regionsMinMaxRECO->At(0),(TList*)regionsMinMaxRECO->At(1));
454 // comparing this step with step 6 (for leading-track observables) you get the efficiency to reconstruct the leading track
455 // comparing this step with step 6 (for all-tracks observables) you see how leading-track misidentification affects the final distributions
458 delete regionSortedParticlesRECOLTMC;
459 delete regionsMinMaxRECOLTMC;
460 delete regionSortedParticlesRECOLTMC2;
461 delete regionsMinMaxRECOLTMC2;
462 delete regionSortedParticlesRECO;
463 delete regionsMinMaxRECO;
471 delete regionSortedParticlesMC;
472 delete regionsMinMaxMC;
475 //____________________________________________________________________
476 void AliAnalysisTaskLeadingTrackUE::AnalyseDataMode()
479 // Run the analysis on DATA or MC to get raw distributions
481 PostData(0,fListOfHistos);
483 if ( fDebug > 3 ) AliInfo( " Processing event in Data mode ..." );
486 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
487 fHistosUE->FillEvent(eventId, AliUEHist::kCFStepAll);
489 // Trigger selection ************************************************
490 if (!fAnalyseUE->TriggerSelection(fInputHandler)) return;
491 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
492 fHistosUE->FillEvent(eventId, AliUEHist::kCFStepTriggered);
494 // Vertex selection *************************************************
495 if(!fAnalyseUE->VertexSelection(fAOD, fnTracksVertex, fZVertex)) return;
496 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
497 fHistosUE->FillEvent(eventId, AliUEHist::kCFStepVertex);
498 // comparing this step with previous one you get the vertex selection efficiency from data (?)
500 // Get Reconstructed leading particle *******************************
501 TObjArray *ltRECO = fAnalyseUE->FindLeadingObjects(fAOD);
504 // fill control distributions
505 fHistosUE->Fill(0, (AliVParticle*)ltRECO->At(0));
507 // Fill the "event-counting-container", it is needed to get the number of events remaining after each event-selection cut
508 fHistosUE->FillEvent(eventId, AliUEHist::kCFStepAnaTopology);
510 // Switch to reconstructed tracks ************************************
511 // Sort RECO particles w.r.t. RECO-leading and return RECO particle
512 TObjArray *regionSortedParticlesRECO = (TObjArray*)fAnalyseUE->SortRegions((AliVParticle*)ltRECO->At(0), fAOD,0);
513 TObjArray *regionsMinMaxRECO = (TObjArray*)fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesRECO->At(2),(TList*)regionSortedParticlesRECO->At(3));
514 // Fill UE containers (step, leading track, towards particles, away particles, transverse MIN and MAX particles)
515 // (RECO leading particle and RECO all particles)
517 fHistosUE->Fill(eventId,AliUEHist::kCFStepReconstructed,(AliVParticle*)ltRECO->At(0),(TList*)regionSortedParticlesRECO->At(0),(TList*)regionSortedParticlesRECO->At(1),(TList*)regionsMinMaxRECO->At(0),(TList*)regionsMinMaxRECO->At(1));
519 // STEP 8 and 9 for reduced efficiency study
520 FillReducedEfficiency(eventId, AliUEHist::kCFStepBiasStudy, ltRECO, kFALSE);
521 FillReducedEfficiency(eventId, AliUEHist::kCFStepBiasStudy2, ltRECO, kTRUE);
524 delete regionSortedParticlesRECO;
525 delete regionsMinMaxRECO;
528 //____________________________________________________________________
529 void AliAnalysisTaskLeadingTrackUE::FillReducedEfficiency(Int_t eventId, AliUEHist::CFStep step, TObjArray* ltRECO, Bool_t twoStep)
531 // remove leading particle using fTrackingEfficiency and use subleading particle to fill the histograms
533 // if twoStep is kTRUE, do a two step procedure where in each step only 50% of the loss due to the tracking efficiency is applied
535 if (!fTrackingEfficiency)
538 TObjArray* particleList = (TObjArray*) ltRECO->Clone();
539 AliVParticle* leading = (AliVParticle*) particleList->At(0);
543 // remove particles depending on tracking efficiency
544 Int_t count = (twoStep) ? 2 : 1;
546 for (Int_t i=0; i<count; i++)
548 Float_t trackingEff = fTrackingEfficiency->GetBinContent(fTrackingEfficiency->GetXaxis()->FindBin(leading->Pt()));
550 trackingEff = 0.5 * (trackingEff + 1);
552 if (gRandom->Uniform() > trackingEff)
554 //Printf("LOWEFF: Removing leading particle");
555 particleList->RemoveAt(0);
556 particleList->Compress();
559 if (particleList->GetEntries() == 0)
565 leading = (AliVParticle*) particleList->At(0);
568 TObjArray *regionSortedParticlesRECOLowEff = fAnalyseUE->SortRegions(leading, particleList, 0);
569 TObjArray *regionsMinMaxRECOLowEff = fAnalyseUE->GetMinMaxRegion((TList*)regionSortedParticlesRECOLowEff->At(2), (TList*)regionSortedParticlesRECOLowEff->At(3));
571 fHistosUE->Fill(eventId,step,leading,(TList*)regionSortedParticlesRECOLowEff->At(0), (TList*)regionSortedParticlesRECOLowEff->At(1), (TList*)regionsMinMaxRECOLowEff->At(0), (TList*)regionsMinMaxRECOLowEff->At(1));
573 delete regionSortedParticlesRECOLowEff;
574 delete regionsMinMaxRECOLowEff;
578 //____________________________________________________________________
579 void AliAnalysisTaskLeadingTrackUE::Initialize()
582 fInputHandler = (AliInputEventHandler*)
583 ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
585 fMcHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());