ROOT logo
/*************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/
//
// $Id$
//
// Task to skim ESD files, basic idea found at PWGGA/EMCALTasks as
// AliEsdSkimTask. This version is modified to produce a exact copy of the ESD
// stream containing only events which are of interest for the central
// diffractive analysis (PWGUD) and a control sample. In order to be able to
// process MC data as well, the usual concept using an output slot is for
// output data is violated and an output file is directly created without
// a corresponding output slot.
//
// Author:
//  Felix Reidt <Felix.Reidt@cern.ch>

// ROOT headers
#include <TClonesArray.h>
#include <TFile.h>
#include <TTree.h>
#include <TH1.h>
#include <TAxis.h>
#include <TRandom3.h>
//#include <TKey.h>
//#include <TROOT.h>

// AliRoot headers
#include "AliAnalysisManager.h"
#include "AliCentrality.h"
#include "AliESDEvent.h"
#include "AliESDFMD.h"
#include "AliEventplane.h"
#include "AliInputEventHandler.h"
#include "AliMultiplicity.h"
#include "AliVEventHandler.h"
#include "AliMCEventHandler.h"
//#include "AliMCEvent.h"
//#include "AliStack.h"
//#include "AliGenEventHeader.h"
//#include "AliRunLoader.h"

// own classes
#include "AliCDMesonBase.h"
#include "AliCDMesonUtils.h"

// own header
#include "AliAnalysisTaskCDskimESD.h"

ClassImp(AliAnalysisTaskCDskimESD)

//______________________________________________________________________________
AliAnalysisTaskCDskimESD::AliAnalysisTaskCDskimESD(const char *opt,
                                                   Bool_t reduceGapEvents)
	: AliAnalysisTaskSE(opt)
	, fInputTree(0x0)
	, fInputTreeCopy(0x0)
	, fOutputTree(0x0)
	, fDoMC(kFALSE)
	, fWrkDir(0x0)
	, fKinematicsFile(0x0)
	, fTrackRefsFile(0x0)
	, fTEinput(0x0)
	, fTE(0x0)
	, fgaliceFile(0x0)
	, fDoGapCond(kTRUE)
	, fCurrentGapCondition(0)
	, fRequestedGapCondition(AliCDMesonBase::kBitV0A + AliCDMesonBase::kBitV0C)
	                        // only events containing a V0 double gap or
	, fNoGapFraction(0.006) // 0.6% of the minimum bias events are stored
	, fReduceGapEvents(reduceGapEvents)
	, fRefinedGapCondition(AliCDMesonBase::kBitV0A + AliCDMesonBase::kBitV0C +
	                       AliCDMesonBase::kBitFMDA + AliCDMesonBase::kBitFMDC)
	, fReducedGapFraction(0.02) // 2% of the events with a loose gap are stored
	, fStatsFlow(0x0)
	, fSkimmingList(0x0)
	, fFileName()
	, fEventNumberInFile(-1)
	, fRunNumber(-1)
	, fEventTime(0)
{
	//
	// Constructor.
	//

	if (!opt)
		return;

	//fBranchNames = "ESD:AliESDHeader.,AliESDRun."; // TODO don't we need all?

	// check whether we are running on MC data
	AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
	AliMCEventHandler* mcH =
		dynamic_cast<AliMCEventHandler*>(am->GetMCtruthEventHandler());
	if(mcH) {
		fDoMC = kTRUE;

		fWrkDir = gDirectory; // save the old directory
		fKinematicsFile = new TFile("Kinematics.root", "recreate");
		fKinematicsFile->Close();
		delete fKinematicsFile;
		fKinematicsFile = 0x0;
		gDirectory = fWrkDir; // restore the old directory

		fTrackRefsFile = new TFile("TrackRefs.root", "recreate");
		fTrackRefsFile->Close();
		delete fTrackRefsFile;
		fTrackRefsFile = 0x0;
		gDirectory = fWrkDir; // restore the old directory
	}

	DefineOutput(1, TTree::Class());
	DefineOutput(2, TH1::Class());
	DefineOutput(3, TTree::Class());
	if (fDoMC) DefineOutput(4, TTree::Class());
}


//______________________________________________________________________________
AliAnalysisTaskCDskimESD::AliAnalysisTaskCDskimESD()
	: AliAnalysisTaskSE()
	, fInputTree(0x0)
	, fInputTreeCopy(0x0)
	, fOutputTree(0x0)
	, fDoMC(kFALSE)
	, fWrkDir(0x0)
	, fKinematicsFile(0x0)
	, fTrackRefsFile(0x0)
	, fTEinput(0x0)
	, fTE(0x0)
	, fgaliceFile(0x0)
	, fDoGapCond(kTRUE)
	, fCurrentGapCondition(0)
	, fRequestedGapCondition(AliCDMesonBase::kBitV0A + AliCDMesonBase::kBitV0C)
	                        // only events containing a V0 double gap or
	, fNoGapFraction(0.006) // 0.6% of the minimum bias events are stored
	, fReduceGapEvents(kFALSE)
	, fRefinedGapCondition(AliCDMesonBase::kBitV0A + AliCDMesonBase::kBitV0C +
	                       AliCDMesonBase::kBitFMDA + AliCDMesonBase::kBitFMDC)
	, fReducedGapFraction(0.02) // 2% of the events with a loose gap are stored
	, fStatsFlow(0x0)
	, fSkimmingList(0x0)
	, fFileName()
	, fEventNumberInFile(-1)
	, fRunNumber(-1)
	, fEventTime(0)
{
	//
	// Default Constructor
	//
}


//______________________________________________________________________________
AliAnalysisTaskCDskimESD::~AliAnalysisTaskCDskimESD()
{
	//
	// deconstructor
	//

	/* // this delete lead to chrases caused by the garbage collection ...
	if (fOutputTree) {
		delete fOutputTree;
		fOutputTree = 0x0;
		}
	if (fInputTreeCopy) {
		delete fInputTreeCopy;
		fInputTreeCopy = 0x0;
	}
	if (fStatsFlow) {
		delete fStatsFlow;
		fStatsFlow = 0x0;
	} */
	if (fDoMC && fKinematicsFile) {
		fKinematicsFile->Close();
		delete fKinematicsFile;
		fKinematicsFile = 0x0;
	}
	if (fDoMC && fTrackRefsFile) {
		fTrackRefsFile->Close();
		delete fTrackRefsFile;
		fTrackRefsFile = 0x0;
	}
}


//______________________________________________________________________________
void AliAnalysisTaskCDskimESD::UserExec(Option_t */*opt*/)
{
	//
  // Process event.
	//

	fStatsFlow->Fill(0.); // UserExec(...) <= bin name

	if (fDoMC) {
		// replace dummy tree by the correct tree
		AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
		if(!fTEinput) {
			fTEinput =
				((AliMCEventHandler*)am->GetMCtruthEventHandler())->GetTree();
			if (fTEinput) {
				delete fTE;
				fTE = fTEinput->CloneTree(0);
				fTE->SetDirectory(fgaliceFile);
				fTE->SetAutoFlush(-10*1024*1024);
				//CopygALICE(am);
			}
		}
		else if (fTEinput != am->GetMCtruthEventHandler()->GetTree()) {
			fTEinput =
				((AliMCEventHandler*)am->GetMCtruthEventHandler())->GetTree();
			fTEinput->CopyAddresses(fTE);
		}
	}

	// check whether the ESD input tree is still the same - NOT NECESSARY
	//TTree* currentInput =
	//	AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->GetTree();
	//if (fInputTree != currentInput) { // ESD input tree has changed
	//	puts("CHANGED INPUT TREE");
	//	fInputTree = currentInput;
	//	fInputTreeCopy = (TTree*)fInputTree->Clone("esdTree");
	//	fInputTreeCopy->CopyAddresses(fOutputTree);
	//}

	AliESDEvent *esdin = dynamic_cast<AliESDEvent*>(InputEvent());
	if (!esdin || !fInputTree || !fInputTreeCopy || !fOutputTree ||
	    (fDoMC && (!fTEinput || !fTE))) {
		// check whether everything is ready
		PostData(1, fOutputTree);
		PostData(2, fStatsFlow);
		PostData(3, fSkimmingList);
		if (fDoMC) PostData(4, fTE);
		return;
	}

	fStatsFlow->Fill(1.); // Ready <= bin name

	//============================================================================
	// event selection, every event passing the next lines is written to the new
	// ESD stream
	//
	// modify this lines in order to adjust the ESD selection to your needs

	// determine current gap condition
	fCurrentGapCondition = AliCDMesonUtils::GetGapConfig(esdin, 0x0, 0x0, 0x0,
	                                                     0x0, 0x0, 0x0, 0x0, 0x0);

	TRandom3 rnd(0);
	if (!(AliCDMesonBase::kBitBaseLine & fCurrentGapCondition) ||
	     (fRequestedGapCondition & fCurrentGapCondition) || fReduceGapEvents) {
		// check whether the event satifies the required gap condition and whether
		// all double-gap events will be stored

		if (fReduceGapEvents &&
		    (AliCDMesonBase::kBitBaseLine & fCurrentGapCondition) &&
		    !(fRequestedGapCondition & fCurrentGapCondition)) {
			// not all double gap events can be stored, but the gap determination
			// was successful and at least a according to the less stringent condition
			// a double gap was found
			if (!(fRefinedGapCondition & fCurrentGapCondition)) {
				// event fulfilled the more stringent gap and hence is will be stored
				fStatsFlow->Fill(5.);
			}
			else if (rnd.Rndm() > (1.-fReducedGapFraction)) {
				// randomly select a fraction of
				fStatsFlow->Fill(4.); // Double Gap Event <= bin name
			}
			else {
				// reject event (no refined gap and not randomly selected)
				fStatsFlow->Fill(3.); // Event Rejected <= bin name
				PostData(1, fOutputTree);
				PostData(2, fStatsFlow);
				PostData(3, fSkimmingList);
				if (fDoMC) PostData(4, fTE);
				return;
			}
		}
		else if (rnd.Rndm() > (1.-fNoGapFraction)) { // randomly selected
			fStatsFlow->Fill(2.); // Control Sample Event <= bin name
		}
		else {
			fStatsFlow->Fill(3.); // Event Rejected <= bin name
			PostData(1, fOutputTree);
			PostData(2, fStatsFlow);
			PostData(3, fSkimmingList);
			if (fDoMC) PostData(4, fTE);
			return;
		}
	}
	else {
		fStatsFlow->Fill(4.); // Double Gap Event <= bin name
	}
	// end of event selection
	//============================================================================

	// load the current event in the cloned input tree
	//
	// unfortunately the Entry() gives the entry number with in the current input
	// tree, not within the chain for MC data
	// => use GetReadEntry() of the ESD tree (value return by Entry() for real
	//data)
	fInputTreeCopy->GetEvent(fInputTree->GetReadEntry());
	fOutputTree->Fill(); // fill the current event into the new ESD stream
	//printf("Entry()=%lld\nEntries=%lld\nChainOffset=%lld\nReadEntry=%lld\n",
	//       Entry(), fInputTreeCopy->GetEntries(),
	//       fInputTreeCopy->GetChainOffset(), fInputTree->GetReadEntry());

	// MC specific stuff ---------------------------------------------------------
	AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();

	if (fDoMC) { // do the MC related part of the skimming
		Long64_t iEntry = fOutputTree->GetEntries() - 1;
		AliMCEventHandler* mcHandler =
			(AliMCEventHandler*)am->GetMCtruthEventHandler();
		TTree* treeK = mcHandler->TreeK();
		TTree* treeTR = mcHandler->TreeTR();
		if (!treeK) AliFatal("TreeK not found!");
		if (!treeTR) AliFatal("TreeTR not found!");

		fWrkDir = gDirectory;
		gDirectory = fKinematicsFile;
		TString dirName = TString(Form("Event%ld", (Long_t)iEntry));
		gDirectory->mkdir(dirName);
		gDirectory->cd(dirName);
		TTree* outputTreeK = treeK->CloneTree(); // copy the whole tree
		outputTreeK->Write();
		treeK->CopyAddresses(outputTreeK, kTRUE); // separate clone again
		treeK->GetListOfClones()->Remove((TObject*)outputTreeK);
		outputTreeK->Delete();
		outputTreeK = 0x0;

		gDirectory = fTrackRefsFile;
		gDirectory->mkdir(dirName);
		gDirectory->cd(dirName);
		TTree* outputTreeTR = treeTR->CloneTree(); // copy the whole tree
		outputTreeTR->Write();
		treeTR->CopyAddresses(outputTreeTR, kTRUE); // separate clone again
		treeTR->GetListOfClones()->Remove((TObject*)outputTreeTR);
		outputTreeTR->Delete();
		outputTreeTR = 0x0;
		gDirectory = fWrkDir;

		TTree* currentTEinput =
			((AliMCEventHandler*)am->GetMCtruthEventHandler())->GetTree();
		if (fTEinput != currentTEinput) {
			// when the input file is changed, the kinematics tree address changes
			// hence our output tree fTE has to be linked to the new one!
			fTEinput = currentTEinput;
			fTEinput->CopyAddresses(fTE);
		}
		fTE->Fill(); // fill MC event headers
	}

	fStatsFlow->Fill(6.); // Tree Filled <= bin name

	// remember which event we stored
	fEventNumberInFile = esdin->GetEventNumberInFile();
	fRunNumber = esdin->GetRunNumber();
	fFileName = fInputTree->GetCurrentFile()->GetName();
	fEventTime = esdin->GetTimeStamp();
	fSkimmingList->Fill();

	PostData(1, fOutputTree);
	PostData(2, fStatsFlow);
	PostData(3, fSkimmingList);
	if (fDoMC) PostData(4, fTE);
}

//______________________________________________________________________________
void AliAnalysisTaskCDskimESD::UserCreateOutputObjects()
{
	// Create output objects.
	fStatsFlow = (TH1*)(new TH1F("skimmingStatsFlow", "", 7, 0., 7.));
	TAxis* x = fStatsFlow->GetXaxis();
	x->SetBinLabel(1, "UserExec(...)");
	x->SetBinLabel(2, "Ready");
	x->SetBinLabel(3, "Control Sample Event");
	x->SetBinLabel(4, "Rejected Event");
	x->SetBinLabel(5, "Double Gap Event");
	x->SetBinLabel(6, "Refined Double Gap Event");
	x->SetBinLabel(7, "Tree Filled");

	PostData(2, fStatsFlow);

	// TODO implement fSkimmingList
	fSkimmingList = new TTree("SkimmingList", "SkimmingList");
	fSkimmingList->Branch("FileName", &fFileName);
	fSkimmingList->Branch("EventNumberInFile", &fEventNumberInFile);
	fSkimmingList->Branch("RunNumber", &fRunNumber);
	fSkimmingList->Branch("TimeStamp", &fEventTime);
	PostData(3, fSkimmingList);

	// Get input information
	AliAnalysisManager *am = AliAnalysisManager::GetAnalysisManager();
	fInputTree = am->GetInputEventHandler()->GetTree();
	if (!fInputTree) {
		puts("AliAnalysisTaskCDskimESD: input tree not found\n");
		return;
	}
	fInputTreeCopy = (TTree*)fInputTree->Clone("esdTree");


	// prevent the task from being run on proof
	if (AliAnalysisManager::GetAnalysisManager()->GetAnalysisType() ==
	    AliAnalysisManager::kProofAnalysis) {
		AliFatal("AliAnalysisTaskCDskimESD: cannot be run on PROOF!");
	}

	TFile *file = 0x0;
	file = OpenFile(1); // open file for the first output slot
	if (!file) {
		puts("AliAnalysisTaskCDskimESD: file not opened\n");
			return;
	}

	fOutputTree = fInputTreeCopy->CloneTree(0);
	if (!fOutputTree) {
		puts("AliAnalysisTaskCDskimESD: cloning tree not successful\n");
		return;
	}

	file->SetCompressionLevel(5); // caused a crash
	fOutputTree->SetDirectory(file);
	fOutputTree->SetAutoFlush(-10*1024*1024);

	if (fDoGapCond) {
		if(!fOutputTree->GetBranch("gapCondition")) {
			fOutputTree->Branch("gapCondition", &fCurrentGapCondition);
		}
	}

	PostData(1, fOutputTree);

	// process the mc information
	if(fDoMC) {
		fWrkDir = gDirectory; // save the old directory
		fKinematicsFile = new TFile("Kinematics.root", "update");
		gDirectory = fWrkDir; // restore the old directory

		fTrackRefsFile = new TFile("TrackRefs.root", "update");
		gDirectory = fWrkDir; // restore the old directory

		fTEinput =
			((AliMCEventHandler*)am->GetMCtruthEventHandler())->GetTree();
		if (!fTEinput) {
			// this trick is done in order to post an output tree, although the tree
			// which is cloned is not available during the UserCreateOutputObjects()
			fTE = new TTree("TE", "TE");
		}
		else {
			fTE = fTEinput->CloneTree(0);
			//CopygALICE(am); // not needed, not properly working/tested
		}
		fgaliceFile = OpenFile(4);
		if (!file) {
			puts("AliAnalysisTaskCDskimESD: galice.root file not opened\n");
			return;
		}
		fgaliceFile->SetCompressionLevel(5);
		fTE->SetDirectory(fgaliceFile);
		fTE->SetAutoFlush(-10*1024*1024);


		PostData(4, fTE);
	}
}


//______________________________________________________________________________
/* // not needed => not yet working / properly tested
void AliAnalysisTaskCDskimESD::CopygALICE(AliAnalysisManager* am)
{
	//
	// copy all objects contained in the galice root excluding the TE tree
	//

	TString galiceInput =
		*(((AliMCEventHandler*)am->GetMCtruthEventHandler())->GetInputPath());
	galiceInput += "galice.root";
	printf("galiceInput=%s\n", galiceInput.Data());
	fWrkDir = gDirectory;
	TFile* input = new TFile(galiceInput.Data(), "READ");

	input->cd();
	gDirectory->ls();

	//loop on all entries of of the input directory
	TKey *key;
	TIter nextkey(input->GetListOfKeys());
	input->GetListOfKeys()->ls();
	while ((key = (TKey*)nextkey())) {
		TString name = key->GetName();
		printf("name=%s\n", name.Data());
		const TString classname = key->GetClassName();
		printf("classname=%s\n", classname.Data());
		TClass *cl = gROOT->GetClass(classname);
		if (!cl) continue;
		if (!name.Contains("TE") && !classname.Contains("AliRun")) {
			TObject *obj = key->ReadObj();
			fgaliceFile->cd();
			obj->Write();
			delete obj;
			input->cd();
		}
		else if (cl->InheritsFrom("AliRunLoader")) {
			// TODO write the runloader stuff
			//AliRunLoader* rl = AliRunLoader::Instance();
			//printf("FILENAME=%s\n", rl->GetFileName().Data());
		}
		fgaliceFile->ls();
	}
	fgaliceFile->SaveSelf(kTRUE);
	fWrkDir->cd();
}
*/
 AliAnalysisTaskCDskimESD.cxx:1
 AliAnalysisTaskCDskimESD.cxx:2
 AliAnalysisTaskCDskimESD.cxx:3
 AliAnalysisTaskCDskimESD.cxx:4
 AliAnalysisTaskCDskimESD.cxx:5
 AliAnalysisTaskCDskimESD.cxx:6
 AliAnalysisTaskCDskimESD.cxx:7
 AliAnalysisTaskCDskimESD.cxx:8
 AliAnalysisTaskCDskimESD.cxx:9
 AliAnalysisTaskCDskimESD.cxx:10
 AliAnalysisTaskCDskimESD.cxx:11
 AliAnalysisTaskCDskimESD.cxx:12
 AliAnalysisTaskCDskimESD.cxx:13
 AliAnalysisTaskCDskimESD.cxx:14
 AliAnalysisTaskCDskimESD.cxx:15
 AliAnalysisTaskCDskimESD.cxx:16
 AliAnalysisTaskCDskimESD.cxx:17
 AliAnalysisTaskCDskimESD.cxx:18
 AliAnalysisTaskCDskimESD.cxx:19
 AliAnalysisTaskCDskimESD.cxx:20
 AliAnalysisTaskCDskimESD.cxx:21
 AliAnalysisTaskCDskimESD.cxx:22
 AliAnalysisTaskCDskimESD.cxx:23
 AliAnalysisTaskCDskimESD.cxx:24
 AliAnalysisTaskCDskimESD.cxx:25
 AliAnalysisTaskCDskimESD.cxx:26
 AliAnalysisTaskCDskimESD.cxx:27
 AliAnalysisTaskCDskimESD.cxx:28
 AliAnalysisTaskCDskimESD.cxx:29
 AliAnalysisTaskCDskimESD.cxx:30
 AliAnalysisTaskCDskimESD.cxx:31
 AliAnalysisTaskCDskimESD.cxx:32
 AliAnalysisTaskCDskimESD.cxx:33
 AliAnalysisTaskCDskimESD.cxx:34
 AliAnalysisTaskCDskimESD.cxx:35
 AliAnalysisTaskCDskimESD.cxx:36
 AliAnalysisTaskCDskimESD.cxx:37
 AliAnalysisTaskCDskimESD.cxx:38
 AliAnalysisTaskCDskimESD.cxx:39
 AliAnalysisTaskCDskimESD.cxx:40
 AliAnalysisTaskCDskimESD.cxx:41
 AliAnalysisTaskCDskimESD.cxx:42
 AliAnalysisTaskCDskimESD.cxx:43
 AliAnalysisTaskCDskimESD.cxx:44
 AliAnalysisTaskCDskimESD.cxx:45
 AliAnalysisTaskCDskimESD.cxx:46
 AliAnalysisTaskCDskimESD.cxx:47
 AliAnalysisTaskCDskimESD.cxx:48
 AliAnalysisTaskCDskimESD.cxx:49
 AliAnalysisTaskCDskimESD.cxx:50
 AliAnalysisTaskCDskimESD.cxx:51
 AliAnalysisTaskCDskimESD.cxx:52
 AliAnalysisTaskCDskimESD.cxx:53
 AliAnalysisTaskCDskimESD.cxx:54
 AliAnalysisTaskCDskimESD.cxx:55
 AliAnalysisTaskCDskimESD.cxx:56
 AliAnalysisTaskCDskimESD.cxx:57
 AliAnalysisTaskCDskimESD.cxx:58
 AliAnalysisTaskCDskimESD.cxx:59
 AliAnalysisTaskCDskimESD.cxx:60
 AliAnalysisTaskCDskimESD.cxx:61
 AliAnalysisTaskCDskimESD.cxx:62
 AliAnalysisTaskCDskimESD.cxx:63
 AliAnalysisTaskCDskimESD.cxx:64
 AliAnalysisTaskCDskimESD.cxx:65
 AliAnalysisTaskCDskimESD.cxx:66
 AliAnalysisTaskCDskimESD.cxx:67
 AliAnalysisTaskCDskimESD.cxx:68
 AliAnalysisTaskCDskimESD.cxx:69
 AliAnalysisTaskCDskimESD.cxx:70
 AliAnalysisTaskCDskimESD.cxx:71
 AliAnalysisTaskCDskimESD.cxx:72
 AliAnalysisTaskCDskimESD.cxx:73
 AliAnalysisTaskCDskimESD.cxx:74
 AliAnalysisTaskCDskimESD.cxx:75
 AliAnalysisTaskCDskimESD.cxx:76
 AliAnalysisTaskCDskimESD.cxx:77
 AliAnalysisTaskCDskimESD.cxx:78
 AliAnalysisTaskCDskimESD.cxx:79
 AliAnalysisTaskCDskimESD.cxx:80
 AliAnalysisTaskCDskimESD.cxx:81
 AliAnalysisTaskCDskimESD.cxx:82
 AliAnalysisTaskCDskimESD.cxx:83
 AliAnalysisTaskCDskimESD.cxx:84
 AliAnalysisTaskCDskimESD.cxx:85
 AliAnalysisTaskCDskimESD.cxx:86
 AliAnalysisTaskCDskimESD.cxx:87
 AliAnalysisTaskCDskimESD.cxx:88
 AliAnalysisTaskCDskimESD.cxx:89
 AliAnalysisTaskCDskimESD.cxx:90
 AliAnalysisTaskCDskimESD.cxx:91
 AliAnalysisTaskCDskimESD.cxx:92
 AliAnalysisTaskCDskimESD.cxx:93
 AliAnalysisTaskCDskimESD.cxx:94
 AliAnalysisTaskCDskimESD.cxx:95
 AliAnalysisTaskCDskimESD.cxx:96
 AliAnalysisTaskCDskimESD.cxx:97
 AliAnalysisTaskCDskimESD.cxx:98
 AliAnalysisTaskCDskimESD.cxx:99
 AliAnalysisTaskCDskimESD.cxx:100
 AliAnalysisTaskCDskimESD.cxx:101
 AliAnalysisTaskCDskimESD.cxx:102
 AliAnalysisTaskCDskimESD.cxx:103
 AliAnalysisTaskCDskimESD.cxx:104
 AliAnalysisTaskCDskimESD.cxx:105
 AliAnalysisTaskCDskimESD.cxx:106
 AliAnalysisTaskCDskimESD.cxx:107
 AliAnalysisTaskCDskimESD.cxx:108
 AliAnalysisTaskCDskimESD.cxx:109
 AliAnalysisTaskCDskimESD.cxx:110
 AliAnalysisTaskCDskimESD.cxx:111
 AliAnalysisTaskCDskimESD.cxx:112
 AliAnalysisTaskCDskimESD.cxx:113
 AliAnalysisTaskCDskimESD.cxx:114
 AliAnalysisTaskCDskimESD.cxx:115
 AliAnalysisTaskCDskimESD.cxx:116
 AliAnalysisTaskCDskimESD.cxx:117
 AliAnalysisTaskCDskimESD.cxx:118
 AliAnalysisTaskCDskimESD.cxx:119
 AliAnalysisTaskCDskimESD.cxx:120
 AliAnalysisTaskCDskimESD.cxx:121
 AliAnalysisTaskCDskimESD.cxx:122
 AliAnalysisTaskCDskimESD.cxx:123
 AliAnalysisTaskCDskimESD.cxx:124
 AliAnalysisTaskCDskimESD.cxx:125
 AliAnalysisTaskCDskimESD.cxx:126
 AliAnalysisTaskCDskimESD.cxx:127
 AliAnalysisTaskCDskimESD.cxx:128
 AliAnalysisTaskCDskimESD.cxx:129
 AliAnalysisTaskCDskimESD.cxx:130
 AliAnalysisTaskCDskimESD.cxx:131
 AliAnalysisTaskCDskimESD.cxx:132
 AliAnalysisTaskCDskimESD.cxx:133
 AliAnalysisTaskCDskimESD.cxx:134
 AliAnalysisTaskCDskimESD.cxx:135
 AliAnalysisTaskCDskimESD.cxx:136
 AliAnalysisTaskCDskimESD.cxx:137
 AliAnalysisTaskCDskimESD.cxx:138
 AliAnalysisTaskCDskimESD.cxx:139
 AliAnalysisTaskCDskimESD.cxx:140
 AliAnalysisTaskCDskimESD.cxx:141
 AliAnalysisTaskCDskimESD.cxx:142
 AliAnalysisTaskCDskimESD.cxx:143
 AliAnalysisTaskCDskimESD.cxx:144
 AliAnalysisTaskCDskimESD.cxx:145
 AliAnalysisTaskCDskimESD.cxx:146
 AliAnalysisTaskCDskimESD.cxx:147
 AliAnalysisTaskCDskimESD.cxx:148
 AliAnalysisTaskCDskimESD.cxx:149
 AliAnalysisTaskCDskimESD.cxx:150
 AliAnalysisTaskCDskimESD.cxx:151
 AliAnalysisTaskCDskimESD.cxx:152
 AliAnalysisTaskCDskimESD.cxx:153
 AliAnalysisTaskCDskimESD.cxx:154
 AliAnalysisTaskCDskimESD.cxx:155
 AliAnalysisTaskCDskimESD.cxx:156
 AliAnalysisTaskCDskimESD.cxx:157
 AliAnalysisTaskCDskimESD.cxx:158
 AliAnalysisTaskCDskimESD.cxx:159
 AliAnalysisTaskCDskimESD.cxx:160
 AliAnalysisTaskCDskimESD.cxx:161
 AliAnalysisTaskCDskimESD.cxx:162
 AliAnalysisTaskCDskimESD.cxx:163
 AliAnalysisTaskCDskimESD.cxx:164
 AliAnalysisTaskCDskimESD.cxx:165
 AliAnalysisTaskCDskimESD.cxx:166
 AliAnalysisTaskCDskimESD.cxx:167
 AliAnalysisTaskCDskimESD.cxx:168
 AliAnalysisTaskCDskimESD.cxx:169
 AliAnalysisTaskCDskimESD.cxx:170
 AliAnalysisTaskCDskimESD.cxx:171
 AliAnalysisTaskCDskimESD.cxx:172
 AliAnalysisTaskCDskimESD.cxx:173
 AliAnalysisTaskCDskimESD.cxx:174
 AliAnalysisTaskCDskimESD.cxx:175
 AliAnalysisTaskCDskimESD.cxx:176
 AliAnalysisTaskCDskimESD.cxx:177
 AliAnalysisTaskCDskimESD.cxx:178
 AliAnalysisTaskCDskimESD.cxx:179
 AliAnalysisTaskCDskimESD.cxx:180
 AliAnalysisTaskCDskimESD.cxx:181
 AliAnalysisTaskCDskimESD.cxx:182
 AliAnalysisTaskCDskimESD.cxx:183
 AliAnalysisTaskCDskimESD.cxx:184
 AliAnalysisTaskCDskimESD.cxx:185
 AliAnalysisTaskCDskimESD.cxx:186
 AliAnalysisTaskCDskimESD.cxx:187
 AliAnalysisTaskCDskimESD.cxx:188
 AliAnalysisTaskCDskimESD.cxx:189
 AliAnalysisTaskCDskimESD.cxx:190
 AliAnalysisTaskCDskimESD.cxx:191
 AliAnalysisTaskCDskimESD.cxx:192
 AliAnalysisTaskCDskimESD.cxx:193
 AliAnalysisTaskCDskimESD.cxx:194
 AliAnalysisTaskCDskimESD.cxx:195
 AliAnalysisTaskCDskimESD.cxx:196
 AliAnalysisTaskCDskimESD.cxx:197
 AliAnalysisTaskCDskimESD.cxx:198
 AliAnalysisTaskCDskimESD.cxx:199
 AliAnalysisTaskCDskimESD.cxx:200
 AliAnalysisTaskCDskimESD.cxx:201
 AliAnalysisTaskCDskimESD.cxx:202
 AliAnalysisTaskCDskimESD.cxx:203
 AliAnalysisTaskCDskimESD.cxx:204
 AliAnalysisTaskCDskimESD.cxx:205
 AliAnalysisTaskCDskimESD.cxx:206
 AliAnalysisTaskCDskimESD.cxx:207
 AliAnalysisTaskCDskimESD.cxx:208
 AliAnalysisTaskCDskimESD.cxx:209
 AliAnalysisTaskCDskimESD.cxx:210
 AliAnalysisTaskCDskimESD.cxx:211
 AliAnalysisTaskCDskimESD.cxx:212
 AliAnalysisTaskCDskimESD.cxx:213
 AliAnalysisTaskCDskimESD.cxx:214
 AliAnalysisTaskCDskimESD.cxx:215
 AliAnalysisTaskCDskimESD.cxx:216
 AliAnalysisTaskCDskimESD.cxx:217
 AliAnalysisTaskCDskimESD.cxx:218
 AliAnalysisTaskCDskimESD.cxx:219
 AliAnalysisTaskCDskimESD.cxx:220
 AliAnalysisTaskCDskimESD.cxx:221
 AliAnalysisTaskCDskimESD.cxx:222
 AliAnalysisTaskCDskimESD.cxx:223
 AliAnalysisTaskCDskimESD.cxx:224
 AliAnalysisTaskCDskimESD.cxx:225
 AliAnalysisTaskCDskimESD.cxx:226
 AliAnalysisTaskCDskimESD.cxx:227
 AliAnalysisTaskCDskimESD.cxx:228
 AliAnalysisTaskCDskimESD.cxx:229
 AliAnalysisTaskCDskimESD.cxx:230
 AliAnalysisTaskCDskimESD.cxx:231
 AliAnalysisTaskCDskimESD.cxx:232
 AliAnalysisTaskCDskimESD.cxx:233
 AliAnalysisTaskCDskimESD.cxx:234
 AliAnalysisTaskCDskimESD.cxx:235
 AliAnalysisTaskCDskimESD.cxx:236
 AliAnalysisTaskCDskimESD.cxx:237
 AliAnalysisTaskCDskimESD.cxx:238
 AliAnalysisTaskCDskimESD.cxx:239
 AliAnalysisTaskCDskimESD.cxx:240
 AliAnalysisTaskCDskimESD.cxx:241
 AliAnalysisTaskCDskimESD.cxx:242
 AliAnalysisTaskCDskimESD.cxx:243
 AliAnalysisTaskCDskimESD.cxx:244
 AliAnalysisTaskCDskimESD.cxx:245
 AliAnalysisTaskCDskimESD.cxx:246
 AliAnalysisTaskCDskimESD.cxx:247
 AliAnalysisTaskCDskimESD.cxx:248
 AliAnalysisTaskCDskimESD.cxx:249
 AliAnalysisTaskCDskimESD.cxx:250
 AliAnalysisTaskCDskimESD.cxx:251
 AliAnalysisTaskCDskimESD.cxx:252
 AliAnalysisTaskCDskimESD.cxx:253
 AliAnalysisTaskCDskimESD.cxx:254
 AliAnalysisTaskCDskimESD.cxx:255
 AliAnalysisTaskCDskimESD.cxx:256
 AliAnalysisTaskCDskimESD.cxx:257
 AliAnalysisTaskCDskimESD.cxx:258
 AliAnalysisTaskCDskimESD.cxx:259
 AliAnalysisTaskCDskimESD.cxx:260
 AliAnalysisTaskCDskimESD.cxx:261
 AliAnalysisTaskCDskimESD.cxx:262
 AliAnalysisTaskCDskimESD.cxx:263
 AliAnalysisTaskCDskimESD.cxx:264
 AliAnalysisTaskCDskimESD.cxx:265
 AliAnalysisTaskCDskimESD.cxx:266
 AliAnalysisTaskCDskimESD.cxx:267
 AliAnalysisTaskCDskimESD.cxx:268
 AliAnalysisTaskCDskimESD.cxx:269
 AliAnalysisTaskCDskimESD.cxx:270
 AliAnalysisTaskCDskimESD.cxx:271
 AliAnalysisTaskCDskimESD.cxx:272
 AliAnalysisTaskCDskimESD.cxx:273
 AliAnalysisTaskCDskimESD.cxx:274
 AliAnalysisTaskCDskimESD.cxx:275
 AliAnalysisTaskCDskimESD.cxx:276
 AliAnalysisTaskCDskimESD.cxx:277
 AliAnalysisTaskCDskimESD.cxx:278
 AliAnalysisTaskCDskimESD.cxx:279
 AliAnalysisTaskCDskimESD.cxx:280
 AliAnalysisTaskCDskimESD.cxx:281
 AliAnalysisTaskCDskimESD.cxx:282
 AliAnalysisTaskCDskimESD.cxx:283
 AliAnalysisTaskCDskimESD.cxx:284
 AliAnalysisTaskCDskimESD.cxx:285
 AliAnalysisTaskCDskimESD.cxx:286
 AliAnalysisTaskCDskimESD.cxx:287
 AliAnalysisTaskCDskimESD.cxx:288
 AliAnalysisTaskCDskimESD.cxx:289
 AliAnalysisTaskCDskimESD.cxx:290
 AliAnalysisTaskCDskimESD.cxx:291
 AliAnalysisTaskCDskimESD.cxx:292
 AliAnalysisTaskCDskimESD.cxx:293
 AliAnalysisTaskCDskimESD.cxx:294
 AliAnalysisTaskCDskimESD.cxx:295
 AliAnalysisTaskCDskimESD.cxx:296
 AliAnalysisTaskCDskimESD.cxx:297
 AliAnalysisTaskCDskimESD.cxx:298
 AliAnalysisTaskCDskimESD.cxx:299
 AliAnalysisTaskCDskimESD.cxx:300
 AliAnalysisTaskCDskimESD.cxx:301
 AliAnalysisTaskCDskimESD.cxx:302
 AliAnalysisTaskCDskimESD.cxx:303
 AliAnalysisTaskCDskimESD.cxx:304
 AliAnalysisTaskCDskimESD.cxx:305
 AliAnalysisTaskCDskimESD.cxx:306
 AliAnalysisTaskCDskimESD.cxx:307
 AliAnalysisTaskCDskimESD.cxx:308
 AliAnalysisTaskCDskimESD.cxx:309
 AliAnalysisTaskCDskimESD.cxx:310
 AliAnalysisTaskCDskimESD.cxx:311
 AliAnalysisTaskCDskimESD.cxx:312
 AliAnalysisTaskCDskimESD.cxx:313
 AliAnalysisTaskCDskimESD.cxx:314
 AliAnalysisTaskCDskimESD.cxx:315
 AliAnalysisTaskCDskimESD.cxx:316
 AliAnalysisTaskCDskimESD.cxx:317
 AliAnalysisTaskCDskimESD.cxx:318
 AliAnalysisTaskCDskimESD.cxx:319
 AliAnalysisTaskCDskimESD.cxx:320
 AliAnalysisTaskCDskimESD.cxx:321
 AliAnalysisTaskCDskimESD.cxx:322
 AliAnalysisTaskCDskimESD.cxx:323
 AliAnalysisTaskCDskimESD.cxx:324
 AliAnalysisTaskCDskimESD.cxx:325
 AliAnalysisTaskCDskimESD.cxx:326
 AliAnalysisTaskCDskimESD.cxx:327
 AliAnalysisTaskCDskimESD.cxx:328
 AliAnalysisTaskCDskimESD.cxx:329
 AliAnalysisTaskCDskimESD.cxx:330
 AliAnalysisTaskCDskimESD.cxx:331
 AliAnalysisTaskCDskimESD.cxx:332
 AliAnalysisTaskCDskimESD.cxx:333
 AliAnalysisTaskCDskimESD.cxx:334
 AliAnalysisTaskCDskimESD.cxx:335
 AliAnalysisTaskCDskimESD.cxx:336
 AliAnalysisTaskCDskimESD.cxx:337
 AliAnalysisTaskCDskimESD.cxx:338
 AliAnalysisTaskCDskimESD.cxx:339
 AliAnalysisTaskCDskimESD.cxx:340
 AliAnalysisTaskCDskimESD.cxx:341
 AliAnalysisTaskCDskimESD.cxx:342
 AliAnalysisTaskCDskimESD.cxx:343
 AliAnalysisTaskCDskimESD.cxx:344
 AliAnalysisTaskCDskimESD.cxx:345
 AliAnalysisTaskCDskimESD.cxx:346
 AliAnalysisTaskCDskimESD.cxx:347
 AliAnalysisTaskCDskimESD.cxx:348
 AliAnalysisTaskCDskimESD.cxx:349
 AliAnalysisTaskCDskimESD.cxx:350
 AliAnalysisTaskCDskimESD.cxx:351
 AliAnalysisTaskCDskimESD.cxx:352
 AliAnalysisTaskCDskimESD.cxx:353
 AliAnalysisTaskCDskimESD.cxx:354
 AliAnalysisTaskCDskimESD.cxx:355
 AliAnalysisTaskCDskimESD.cxx:356
 AliAnalysisTaskCDskimESD.cxx:357
 AliAnalysisTaskCDskimESD.cxx:358
 AliAnalysisTaskCDskimESD.cxx:359
 AliAnalysisTaskCDskimESD.cxx:360
 AliAnalysisTaskCDskimESD.cxx:361
 AliAnalysisTaskCDskimESD.cxx:362
 AliAnalysisTaskCDskimESD.cxx:363
 AliAnalysisTaskCDskimESD.cxx:364
 AliAnalysisTaskCDskimESD.cxx:365
 AliAnalysisTaskCDskimESD.cxx:366
 AliAnalysisTaskCDskimESD.cxx:367
 AliAnalysisTaskCDskimESD.cxx:368
 AliAnalysisTaskCDskimESD.cxx:369
 AliAnalysisTaskCDskimESD.cxx:370
 AliAnalysisTaskCDskimESD.cxx:371
 AliAnalysisTaskCDskimESD.cxx:372
 AliAnalysisTaskCDskimESD.cxx:373
 AliAnalysisTaskCDskimESD.cxx:374
 AliAnalysisTaskCDskimESD.cxx:375
 AliAnalysisTaskCDskimESD.cxx:376
 AliAnalysisTaskCDskimESD.cxx:377
 AliAnalysisTaskCDskimESD.cxx:378
 AliAnalysisTaskCDskimESD.cxx:379
 AliAnalysisTaskCDskimESD.cxx:380
 AliAnalysisTaskCDskimESD.cxx:381
 AliAnalysisTaskCDskimESD.cxx:382
 AliAnalysisTaskCDskimESD.cxx:383
 AliAnalysisTaskCDskimESD.cxx:384
 AliAnalysisTaskCDskimESD.cxx:385
 AliAnalysisTaskCDskimESD.cxx:386
 AliAnalysisTaskCDskimESD.cxx:387
 AliAnalysisTaskCDskimESD.cxx:388
 AliAnalysisTaskCDskimESD.cxx:389
 AliAnalysisTaskCDskimESD.cxx:390
 AliAnalysisTaskCDskimESD.cxx:391
 AliAnalysisTaskCDskimESD.cxx:392
 AliAnalysisTaskCDskimESD.cxx:393
 AliAnalysisTaskCDskimESD.cxx:394
 AliAnalysisTaskCDskimESD.cxx:395
 AliAnalysisTaskCDskimESD.cxx:396
 AliAnalysisTaskCDskimESD.cxx:397
 AliAnalysisTaskCDskimESD.cxx:398
 AliAnalysisTaskCDskimESD.cxx:399
 AliAnalysisTaskCDskimESD.cxx:400
 AliAnalysisTaskCDskimESD.cxx:401
 AliAnalysisTaskCDskimESD.cxx:402
 AliAnalysisTaskCDskimESD.cxx:403
 AliAnalysisTaskCDskimESD.cxx:404
 AliAnalysisTaskCDskimESD.cxx:405
 AliAnalysisTaskCDskimESD.cxx:406
 AliAnalysisTaskCDskimESD.cxx:407
 AliAnalysisTaskCDskimESD.cxx:408
 AliAnalysisTaskCDskimESD.cxx:409
 AliAnalysisTaskCDskimESD.cxx:410
 AliAnalysisTaskCDskimESD.cxx:411
 AliAnalysisTaskCDskimESD.cxx:412
 AliAnalysisTaskCDskimESD.cxx:413
 AliAnalysisTaskCDskimESD.cxx:414
 AliAnalysisTaskCDskimESD.cxx:415
 AliAnalysisTaskCDskimESD.cxx:416
 AliAnalysisTaskCDskimESD.cxx:417
 AliAnalysisTaskCDskimESD.cxx:418
 AliAnalysisTaskCDskimESD.cxx:419
 AliAnalysisTaskCDskimESD.cxx:420
 AliAnalysisTaskCDskimESD.cxx:421
 AliAnalysisTaskCDskimESD.cxx:422
 AliAnalysisTaskCDskimESD.cxx:423
 AliAnalysisTaskCDskimESD.cxx:424
 AliAnalysisTaskCDskimESD.cxx:425
 AliAnalysisTaskCDskimESD.cxx:426
 AliAnalysisTaskCDskimESD.cxx:427
 AliAnalysisTaskCDskimESD.cxx:428
 AliAnalysisTaskCDskimESD.cxx:429
 AliAnalysisTaskCDskimESD.cxx:430
 AliAnalysisTaskCDskimESD.cxx:431
 AliAnalysisTaskCDskimESD.cxx:432
 AliAnalysisTaskCDskimESD.cxx:433
 AliAnalysisTaskCDskimESD.cxx:434
 AliAnalysisTaskCDskimESD.cxx:435
 AliAnalysisTaskCDskimESD.cxx:436
 AliAnalysisTaskCDskimESD.cxx:437
 AliAnalysisTaskCDskimESD.cxx:438
 AliAnalysisTaskCDskimESD.cxx:439
 AliAnalysisTaskCDskimESD.cxx:440
 AliAnalysisTaskCDskimESD.cxx:441
 AliAnalysisTaskCDskimESD.cxx:442
 AliAnalysisTaskCDskimESD.cxx:443
 AliAnalysisTaskCDskimESD.cxx:444
 AliAnalysisTaskCDskimESD.cxx:445
 AliAnalysisTaskCDskimESD.cxx:446
 AliAnalysisTaskCDskimESD.cxx:447
 AliAnalysisTaskCDskimESD.cxx:448
 AliAnalysisTaskCDskimESD.cxx:449
 AliAnalysisTaskCDskimESD.cxx:450
 AliAnalysisTaskCDskimESD.cxx:451
 AliAnalysisTaskCDskimESD.cxx:452
 AliAnalysisTaskCDskimESD.cxx:453
 AliAnalysisTaskCDskimESD.cxx:454
 AliAnalysisTaskCDskimESD.cxx:455
 AliAnalysisTaskCDskimESD.cxx:456
 AliAnalysisTaskCDskimESD.cxx:457
 AliAnalysisTaskCDskimESD.cxx:458
 AliAnalysisTaskCDskimESD.cxx:459
 AliAnalysisTaskCDskimESD.cxx:460
 AliAnalysisTaskCDskimESD.cxx:461
 AliAnalysisTaskCDskimESD.cxx:462
 AliAnalysisTaskCDskimESD.cxx:463
 AliAnalysisTaskCDskimESD.cxx:464
 AliAnalysisTaskCDskimESD.cxx:465
 AliAnalysisTaskCDskimESD.cxx:466
 AliAnalysisTaskCDskimESD.cxx:467
 AliAnalysisTaskCDskimESD.cxx:468
 AliAnalysisTaskCDskimESD.cxx:469
 AliAnalysisTaskCDskimESD.cxx:470
 AliAnalysisTaskCDskimESD.cxx:471
 AliAnalysisTaskCDskimESD.cxx:472
 AliAnalysisTaskCDskimESD.cxx:473
 AliAnalysisTaskCDskimESD.cxx:474
 AliAnalysisTaskCDskimESD.cxx:475
 AliAnalysisTaskCDskimESD.cxx:476
 AliAnalysisTaskCDskimESD.cxx:477
 AliAnalysisTaskCDskimESD.cxx:478
 AliAnalysisTaskCDskimESD.cxx:479
 AliAnalysisTaskCDskimESD.cxx:480
 AliAnalysisTaskCDskimESD.cxx:481
 AliAnalysisTaskCDskimESD.cxx:482
 AliAnalysisTaskCDskimESD.cxx:483
 AliAnalysisTaskCDskimESD.cxx:484
 AliAnalysisTaskCDskimESD.cxx:485
 AliAnalysisTaskCDskimESD.cxx:486
 AliAnalysisTaskCDskimESD.cxx:487
 AliAnalysisTaskCDskimESD.cxx:488
 AliAnalysisTaskCDskimESD.cxx:489
 AliAnalysisTaskCDskimESD.cxx:490
 AliAnalysisTaskCDskimESD.cxx:491
 AliAnalysisTaskCDskimESD.cxx:492
 AliAnalysisTaskCDskimESD.cxx:493
 AliAnalysisTaskCDskimESD.cxx:494
 AliAnalysisTaskCDskimESD.cxx:495
 AliAnalysisTaskCDskimESD.cxx:496
 AliAnalysisTaskCDskimESD.cxx:497
 AliAnalysisTaskCDskimESD.cxx:498
 AliAnalysisTaskCDskimESD.cxx:499
 AliAnalysisTaskCDskimESD.cxx:500
 AliAnalysisTaskCDskimESD.cxx:501
 AliAnalysisTaskCDskimESD.cxx:502
 AliAnalysisTaskCDskimESD.cxx:503
 AliAnalysisTaskCDskimESD.cxx:504
 AliAnalysisTaskCDskimESD.cxx:505
 AliAnalysisTaskCDskimESD.cxx:506
 AliAnalysisTaskCDskimESD.cxx:507
 AliAnalysisTaskCDskimESD.cxx:508
 AliAnalysisTaskCDskimESD.cxx:509
 AliAnalysisTaskCDskimESD.cxx:510
 AliAnalysisTaskCDskimESD.cxx:511
 AliAnalysisTaskCDskimESD.cxx:512
 AliAnalysisTaskCDskimESD.cxx:513
 AliAnalysisTaskCDskimESD.cxx:514
 AliAnalysisTaskCDskimESD.cxx:515
 AliAnalysisTaskCDskimESD.cxx:516
 AliAnalysisTaskCDskimESD.cxx:517
 AliAnalysisTaskCDskimESD.cxx:518
 AliAnalysisTaskCDskimESD.cxx:519
 AliAnalysisTaskCDskimESD.cxx:520
 AliAnalysisTaskCDskimESD.cxx:521
 AliAnalysisTaskCDskimESD.cxx:522
 AliAnalysisTaskCDskimESD.cxx:523
 AliAnalysisTaskCDskimESD.cxx:524
 AliAnalysisTaskCDskimESD.cxx:525
 AliAnalysisTaskCDskimESD.cxx:526
 AliAnalysisTaskCDskimESD.cxx:527
 AliAnalysisTaskCDskimESD.cxx:528