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.                  *
 **************************************************************************/
//
// AliCDMesonTracks
// for
// AliAnalysisTaskCDMeson
//
//  Author:
//  Felix Reidt <Felix.Reidt@cern.ch>
//
// class applies the track cuts and provides access to the tracks
//
//

// ROOT classes
#include "TObjArray.h"

// AliRoot classes
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliESDtrackCuts.h"
#include "AliVTrack.h"
#include "AliMultiplicity.h"

// header of the class itsself
#include "AliCDMesonTracks.h"
#include "assert.h"


//------------------------------------------------------------------------------
AliCDMesonTracks::AliCDMesonTracks()
	: fAODEvent(0x0)
	, fESDEvent(0x0)
	, fDoAOD(kFALSE)
	, fDoSoft(kTRUE)
	, fIsValid(kFALSE)
	, fNTrk0(-999)
	, fNch(-999)
	, fNsoft(-999)
	, fNcombined(-999)
	, fNITSpureSA(-999)
	, fNtrackletsCentralBarrel(-999)
	, fNtrackletsForward(-999)
	, fTracks(0x0)
	, fSoftTracks(0x0)
{
	//
	// constructor
	//
}


//------------------------------------------------------------------------------
AliCDMesonTracks::AliCDMesonTracks(const AliCDMesonTracks& tracks)
	: fAODEvent(tracks.fAODEvent)
	, fESDEvent(tracks.fESDEvent)
	, fDoAOD(tracks.fDoAOD)
	, fDoSoft(tracks.fDoSoft)
	, fIsValid(tracks.fIsValid)
	, fNTrk0(tracks.fNTrk0)
	, fNch(tracks.fNch)
	, fNsoft(tracks.fNsoft)
	, fNcombined(tracks.fNcombined)
	, fNITSpureSA(tracks.fNITSpureSA)
	, fNtrackletsCentralBarrel(tracks.fNtrackletsCentralBarrel)
	, fNtrackletsForward(tracks.fNtrackletsForward)
	, fTracks(tracks.fTracks)
	, fSoftTracks(tracks.fSoftTracks)
{
	//
	// copy constructor
	//
}


//------------------------------------------------------------------------------
AliCDMesonTracks& AliCDMesonTracks::operator=(const AliCDMesonTracks& tracks)
{
	//
	// assignment operator
	//

			if (this != &tracks) {
			// create deep copy ...
		}
		return *this;
}


//------------------------------------------------------------------------------
AliCDMesonTracks::~AliCDMesonTracks()
{
	//
	// destructor
	//

	if (fTracks) {
		fTracks->SetOwner(kTRUE);
		fTracks->Clear();
		delete fTracks;
		fTracks = 0x0;
	}
	if (fSoftTracks) {
		fSoftTracks->SetOwner(kTRUE);
		fSoftTracks->Clear();
		delete fSoftTracks;
		fSoftTracks = 0x0;
	}
}


//------------------------------------------------------------------------------
Bool_t AliCDMesonTracks::ProcessEvent(AliAODEvent* aodEvent,
                                      AliESDEvent* esdEvent,
                                      Bool_t doSoft /* = kTRUE */)
{
	//
	// this function controlls the processing of an event, after the processing is
	// done, the results can be used via the getters
	//

	if ((aodEvent && esdEvent) || (!aodEvent && !esdEvent)) {
		// only one event type is allowed, no event type is also not allowed
		return fIsValid = fDoAOD = kFALSE;
	}
	else if (aodEvent) {
		fAODEvent = aodEvent;
		fESDEvent = 0x0;
		fDoAOD = kTRUE;
	}
	else if (esdEvent) {
		fAODEvent = 0x0;
		fESDEvent = esdEvent;
		fDoAOD = kFALSE;
	}
	fDoSoft = doSoft;

	ApplyCuts();
	if (!fDoAOD) GetRemainingTracklets();
	fIsValid = kTRUE;
	return kTRUE;
}


//------------------------------------------------------------------------------
AliVTrack* AliCDMesonTracks::GetTrack(UInt_t index) const
{
	//
	// provides access to the selected tracks, normal tracks have lower indices
	// than soft tracks
	//

	if (!fIsValid) return 0x0; // cut selection wasn't properly done

	if ((((Int_t)index >= fNch) && !fDoSoft) || // soft not enabled
	    ((Int_t)index >= fNcombined)) return 0x0; // soft enabled
	// index out of range

	if ((Int_t)index < fNch) return (AliVTrack*)((*fTracks)[index]);
	else if ((Int_t)index < fNcombined) {
		return (AliVTrack*)((*fSoftTracks)[index - fNch]);
	}
	else return 0x0; // something went wrong
}


//------------------------------------------------------------------------------
Double_t AliCDMesonTracks::GetInvariantMass(Bool_t includeSoftTracks /*=kTRUE*/)
{
	//
	// compute the invariant mass of all accepted tracks in the event
	//

	TLorentzVector sum;
	for (Int_t iTrack = 0; iTrack < fTracks->GetEntriesFast(); ++iTrack) {
		AliVTrack* track = (AliVTrack*)fTracks->UncheckedAt(iTrack);
		TLorentzVector temp(track->Px(), track->Py(), track->Pz(), track->E());
		sum += temp;
	}
	if (includeSoftTracks) {
		for (Int_t iSoftTrack = 0; iSoftTrack < fSoftTracks->GetEntriesFast();
		     ++iSoftTrack) {
			AliVTrack* track = (AliVTrack*)fSoftTracks->UncheckedAt(iSoftTrack);
			TLorentzVector temp(track->Px(), track->Py(), track->Pz(), track->E());
			sum += temp;
		}
	}
	return sum.M();
}


//------------------------------------------------------------------------------
void AliCDMesonTracks::ApplyCuts()
{
	//
	// steers the track selection process
	//

	fNTrk0 = (fDoAOD) ?
		fAODEvent->GetNumberOfTracks() : fESDEvent->GetNumberOfTracks();

	fNch = -999;
	fNsoft = -999;
	fNcombined = -999;
	fNITSpureSA = -999;

	if (fDoAOD) {
		CutTrack(fAODEvent); // ordinary tracks
		CutTrack(fAODEvent, 2); // kITSpureSA
	}
	else {
		CutTrack(fESDEvent); // ordinary tracks
		CutTrack(fESDEvent, 2); // kITSpureSA
	}

	if (fDoSoft) { // do soft tracks
		if (fDoAOD) {
			CutTrack(fAODEvent, 1);
		}
		else {
			CutTrack(fESDEvent, 1);
		}

		fNcombined = fNch + fNsoft;
		for (Int_t iSoft = 0; iSoft < fNsoft; iSoft++) {
			Int_t iTrk = 0;
			while (iTrk < fNch) {
				// TODO find some criterion to match them properly!
				// check whether they are really complementary if not
				// an error will be raised
				// already contained in both arrays, exit loop
				++iTrk; // next track
			}
		}
	}
	else { // do not care about soft tracks
		fNcombined = fNch;
	}
}


//------------------------------------------------------------------------------
void AliCDMesonTracks::CutTrack(AliESDEvent *ESDEvent, Int_t mode /* = 0 */)
{
	//
	//CutTrack to be combined with the AOD function // TODO
	//

	const Double_t etacut = 0.9;

	AliESDtrackCuts esdTrackCuts;

	if (mode == 0) { // default mode
		// cuts for normal tracks (ITS + TPC)
		// i.e. GetStandardITSTPCTrackCuts2010(kTRUE);
		// (same, just typed in full detail...)

		if (fTracks) {
			fTracks->Clear();
			delete fTracks;
			fTracks = 0x0;
		}

		// TPC
		esdTrackCuts.SetMinNClustersTPC(70);
		//esdTrackCuts.SetMinNCrossedRowsTPC(70);
		//esdTrackCuts.SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);

		esdTrackCuts.SetMaxChi2PerClusterTPC(4);
		esdTrackCuts.SetAcceptKinkDaughters(kFALSE);
		esdTrackCuts.SetRequireTPCRefit(kTRUE);
		// ITS
		esdTrackCuts.SetRequireITSRefit(kTRUE);
		esdTrackCuts.SetClusterRequirementITS(AliESDtrackCuts::kSPD,
		                                      AliESDtrackCuts::kAny);
		// 7*(0.0026+0.0050/pt^1.01)
		esdTrackCuts.SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");

		esdTrackCuts.SetMaxDCAToVertexZ(2);
		esdTrackCuts.SetDCAToVertex2D(kFALSE);
		esdTrackCuts.SetRequireSigmaToVertex(kFALSE);

		esdTrackCuts.SetEtaRange(-etacut, etacut);

		fTracks = esdTrackCuts.GetAcceptedTracks(ESDEvent);
		fNch = fTracks->GetEntriesFast();
	}
	else if (mode == 1) {
		// cuts for soft tracks (ITS only - kITSsa)

		if (fSoftTracks) {
			fSoftTracks->Clear();
			delete fSoftTracks;
			fSoftTracks = 0x0;
		}

		esdTrackCuts.SetRequireITSStandAlone(kTRUE);
		esdTrackCuts.SetRequireITSPureStandAlone(kFALSE);
		esdTrackCuts.SetRequireITSRefit(kTRUE);
		esdTrackCuts.SetMinNClustersITS(4);
		esdTrackCuts.SetClusterRequirementITS(AliESDtrackCuts::kSPD,
		                                      AliESDtrackCuts::kAny);
		esdTrackCuts.SetMaxChi2PerClusterITS(1.);
		esdTrackCuts.SetMaxDCAToVertexXYPtDep("0.0595+0.0182/pt^1.55");

		esdTrackCuts.SetEtaRange(-etacut, etacut);

		fSoftTracks = esdTrackCuts.GetAcceptedTracks(ESDEvent);
		fNsoft = fSoftTracks->GetEntriesFast();
	}
	else {
		// cuts for ITSpureSA tracks used in order to get rid of them for noise
		// studies

		// selection according to cuts
		esdTrackCuts.SetRequireITSPureStandAlone(kTRUE);

		// do selection according to status bits (never tested!!!)
		//for(Int_t itrack = 0; itrack < ESDEvent->GetNumberOfTracks(); itrack++){
		//	const AliESDtrack* esdtrack = ESDEvent->GetTrack(itrack);
		//	UInt64 status = esdtrack->GetStatus();
		//	if ((status & kITSpureSA) && !(status & kITSsa)){
		//	}
		//}
		TObjArray* arr = esdTrackCuts.GetAcceptedTracks(ESDEvent);
		fNITSpureSA = arr->GetEntriesFast();
		delete arr;
		arr = 0x0;
	}
}


//------------------------------------------------------------------------------
void AliCDMesonTracks::CutTrack(AliAODEvent *AODEvent, Int_t mode /* = 0 */)
{
	//
	// CutTrack for AODs
	//

	UInt_t bit = 0x0;
	TObjArray* trks = 0x0;
	Int_t* ntrks = 0x0;

	if (mode == 0) { // default mode
		// cuts for normal tracks (ITS + TPC)
		// i.e. GetStandardITSTPCTrackCuts2010(kTRUE);
		// (same, just typed in full detail...)
		bit = 0x1 << 14;

		// prepare storage
		if (fTracks) {
			fTracks->SetOwner(kTRUE);
			fTracks->Clear();
		}
		else {
			fTracks = new TObjArray();
			fTracks->SetOwner(kTRUE);
		}

		// store where to put selected tracks
		trks = fTracks;
		ntrks = &fNch;
	}
	else if (mode == 1) {
		// cuts for soft tracks (ITS only - kITSsa)
		bit = 0x1 << 15;

		if (fSoftTracks) {
			fSoftTracks->SetOwner(kTRUE);
			fSoftTracks->Clear();
		}
		else {
			fSoftTracks = new TObjArray();
			fSoftTracks->SetOwner(kTRUE);
		}

		// sotre where to put selected tracks
		trks = fSoftTracks;
		ntrks = &fNsoft;
	}
	else {
		// cuts for ITSpureSA tracks used in order to get rid of them for noise
		// studies
		bit = 0x1 << 16;

		// do not store tracks, just count them =>
		trks = 0x0;
		ntrks = &fNITSpureSA;
	}

	for (Int_t iTrk = 0; iTrk < AODEvent->GetNumberOfTracks(); iTrk++) {
		const AliAODTrack* trk = dynamic_cast<const AliAODTrack*>(AODEvent->GetTrack(iTrk));
                assert(trk&&"Not a standard AOD");

		if (trk->TestFilterBit(bit)) {
			// test whether track was selected by that filter

			if (trks) { // add tracks to TObjArray
				trks->Add((TObject*)trk);
			}
			else { // just count them
				++(*ntrks);
			}
		}
	}

	if (trks) {
		(*ntrks) = trks->GetEntriesFast();
	}
}


//------------------------------------------------------------------------------
void AliCDMesonTracks::GetRemainingTracklets()
{
	// determines the number of tracklets in an event, which are not assigned to
	// tracks
	// this is only possible running on ESDs, for AODs this information has to be
	// preprocessed

	if (!fESDEvent) return;
	const AliMultiplicity *mult = fESDEvent->GetMultiplicity();

	if (mult) {
		// reset values
		fNtrackletsCentralBarrel = 0;
		fNtrackletsForward = 0;

		for (Int_t iTracklet = 0; iTracklet < mult->GetNumberOfTracklets();
		     iTracklet++) {
			Int_t id1 = -1, id2 = -1;
			if (!mult->GetTrackletTrackIDs(iTracklet, 0, id1, id2)) {
				float_t eta = mult->GetEta(iTracklet);

				if ((eta < -0.9) || (eta > 0.9)) {
					++fNtrackletsForward;
				}
				else {
					++fNtrackletsCentralBarrel;
				}
			}
		}
	}
}
 AliCDMesonTracks.cxx:1
 AliCDMesonTracks.cxx:2
 AliCDMesonTracks.cxx:3
 AliCDMesonTracks.cxx:4
 AliCDMesonTracks.cxx:5
 AliCDMesonTracks.cxx:6
 AliCDMesonTracks.cxx:7
 AliCDMesonTracks.cxx:8
 AliCDMesonTracks.cxx:9
 AliCDMesonTracks.cxx:10
 AliCDMesonTracks.cxx:11
 AliCDMesonTracks.cxx:12
 AliCDMesonTracks.cxx:13
 AliCDMesonTracks.cxx:14
 AliCDMesonTracks.cxx:15
 AliCDMesonTracks.cxx:16
 AliCDMesonTracks.cxx:17
 AliCDMesonTracks.cxx:18
 AliCDMesonTracks.cxx:19
 AliCDMesonTracks.cxx:20
 AliCDMesonTracks.cxx:21
 AliCDMesonTracks.cxx:22
 AliCDMesonTracks.cxx:23
 AliCDMesonTracks.cxx:24
 AliCDMesonTracks.cxx:25
 AliCDMesonTracks.cxx:26
 AliCDMesonTracks.cxx:27
 AliCDMesonTracks.cxx:28
 AliCDMesonTracks.cxx:29
 AliCDMesonTracks.cxx:30
 AliCDMesonTracks.cxx:31
 AliCDMesonTracks.cxx:32
 AliCDMesonTracks.cxx:33
 AliCDMesonTracks.cxx:34
 AliCDMesonTracks.cxx:35
 AliCDMesonTracks.cxx:36
 AliCDMesonTracks.cxx:37
 AliCDMesonTracks.cxx:38
 AliCDMesonTracks.cxx:39
 AliCDMesonTracks.cxx:40
 AliCDMesonTracks.cxx:41
 AliCDMesonTracks.cxx:42
 AliCDMesonTracks.cxx:43
 AliCDMesonTracks.cxx:44
 AliCDMesonTracks.cxx:45
 AliCDMesonTracks.cxx:46
 AliCDMesonTracks.cxx:47
 AliCDMesonTracks.cxx:48
 AliCDMesonTracks.cxx:49
 AliCDMesonTracks.cxx:50
 AliCDMesonTracks.cxx:51
 AliCDMesonTracks.cxx:52
 AliCDMesonTracks.cxx:53
 AliCDMesonTracks.cxx:54
 AliCDMesonTracks.cxx:55
 AliCDMesonTracks.cxx:56
 AliCDMesonTracks.cxx:57
 AliCDMesonTracks.cxx:58
 AliCDMesonTracks.cxx:59
 AliCDMesonTracks.cxx:60
 AliCDMesonTracks.cxx:61
 AliCDMesonTracks.cxx:62
 AliCDMesonTracks.cxx:63
 AliCDMesonTracks.cxx:64
 AliCDMesonTracks.cxx:65
 AliCDMesonTracks.cxx:66
 AliCDMesonTracks.cxx:67
 AliCDMesonTracks.cxx:68
 AliCDMesonTracks.cxx:69
 AliCDMesonTracks.cxx:70
 AliCDMesonTracks.cxx:71
 AliCDMesonTracks.cxx:72
 AliCDMesonTracks.cxx:73
 AliCDMesonTracks.cxx:74
 AliCDMesonTracks.cxx:75
 AliCDMesonTracks.cxx:76
 AliCDMesonTracks.cxx:77
 AliCDMesonTracks.cxx:78
 AliCDMesonTracks.cxx:79
 AliCDMesonTracks.cxx:80
 AliCDMesonTracks.cxx:81
 AliCDMesonTracks.cxx:82
 AliCDMesonTracks.cxx:83
 AliCDMesonTracks.cxx:84
 AliCDMesonTracks.cxx:85
 AliCDMesonTracks.cxx:86
 AliCDMesonTracks.cxx:87
 AliCDMesonTracks.cxx:88
 AliCDMesonTracks.cxx:89
 AliCDMesonTracks.cxx:90
 AliCDMesonTracks.cxx:91
 AliCDMesonTracks.cxx:92
 AliCDMesonTracks.cxx:93
 AliCDMesonTracks.cxx:94
 AliCDMesonTracks.cxx:95
 AliCDMesonTracks.cxx:96
 AliCDMesonTracks.cxx:97
 AliCDMesonTracks.cxx:98
 AliCDMesonTracks.cxx:99
 AliCDMesonTracks.cxx:100
 AliCDMesonTracks.cxx:101
 AliCDMesonTracks.cxx:102
 AliCDMesonTracks.cxx:103
 AliCDMesonTracks.cxx:104
 AliCDMesonTracks.cxx:105
 AliCDMesonTracks.cxx:106
 AliCDMesonTracks.cxx:107
 AliCDMesonTracks.cxx:108
 AliCDMesonTracks.cxx:109
 AliCDMesonTracks.cxx:110
 AliCDMesonTracks.cxx:111
 AliCDMesonTracks.cxx:112
 AliCDMesonTracks.cxx:113
 AliCDMesonTracks.cxx:114
 AliCDMesonTracks.cxx:115
 AliCDMesonTracks.cxx:116
 AliCDMesonTracks.cxx:117
 AliCDMesonTracks.cxx:118
 AliCDMesonTracks.cxx:119
 AliCDMesonTracks.cxx:120
 AliCDMesonTracks.cxx:121
 AliCDMesonTracks.cxx:122
 AliCDMesonTracks.cxx:123
 AliCDMesonTracks.cxx:124
 AliCDMesonTracks.cxx:125
 AliCDMesonTracks.cxx:126
 AliCDMesonTracks.cxx:127
 AliCDMesonTracks.cxx:128
 AliCDMesonTracks.cxx:129
 AliCDMesonTracks.cxx:130
 AliCDMesonTracks.cxx:131
 AliCDMesonTracks.cxx:132
 AliCDMesonTracks.cxx:133
 AliCDMesonTracks.cxx:134
 AliCDMesonTracks.cxx:135
 AliCDMesonTracks.cxx:136
 AliCDMesonTracks.cxx:137
 AliCDMesonTracks.cxx:138
 AliCDMesonTracks.cxx:139
 AliCDMesonTracks.cxx:140
 AliCDMesonTracks.cxx:141
 AliCDMesonTracks.cxx:142
 AliCDMesonTracks.cxx:143
 AliCDMesonTracks.cxx:144
 AliCDMesonTracks.cxx:145
 AliCDMesonTracks.cxx:146
 AliCDMesonTracks.cxx:147
 AliCDMesonTracks.cxx:148
 AliCDMesonTracks.cxx:149
 AliCDMesonTracks.cxx:150
 AliCDMesonTracks.cxx:151
 AliCDMesonTracks.cxx:152
 AliCDMesonTracks.cxx:153
 AliCDMesonTracks.cxx:154
 AliCDMesonTracks.cxx:155
 AliCDMesonTracks.cxx:156
 AliCDMesonTracks.cxx:157
 AliCDMesonTracks.cxx:158
 AliCDMesonTracks.cxx:159
 AliCDMesonTracks.cxx:160
 AliCDMesonTracks.cxx:161
 AliCDMesonTracks.cxx:162
 AliCDMesonTracks.cxx:163
 AliCDMesonTracks.cxx:164
 AliCDMesonTracks.cxx:165
 AliCDMesonTracks.cxx:166
 AliCDMesonTracks.cxx:167
 AliCDMesonTracks.cxx:168
 AliCDMesonTracks.cxx:169
 AliCDMesonTracks.cxx:170
 AliCDMesonTracks.cxx:171
 AliCDMesonTracks.cxx:172
 AliCDMesonTracks.cxx:173
 AliCDMesonTracks.cxx:174
 AliCDMesonTracks.cxx:175
 AliCDMesonTracks.cxx:176
 AliCDMesonTracks.cxx:177
 AliCDMesonTracks.cxx:178
 AliCDMesonTracks.cxx:179
 AliCDMesonTracks.cxx:180
 AliCDMesonTracks.cxx:181
 AliCDMesonTracks.cxx:182
 AliCDMesonTracks.cxx:183
 AliCDMesonTracks.cxx:184
 AliCDMesonTracks.cxx:185
 AliCDMesonTracks.cxx:186
 AliCDMesonTracks.cxx:187
 AliCDMesonTracks.cxx:188
 AliCDMesonTracks.cxx:189
 AliCDMesonTracks.cxx:190
 AliCDMesonTracks.cxx:191
 AliCDMesonTracks.cxx:192
 AliCDMesonTracks.cxx:193
 AliCDMesonTracks.cxx:194
 AliCDMesonTracks.cxx:195
 AliCDMesonTracks.cxx:196
 AliCDMesonTracks.cxx:197
 AliCDMesonTracks.cxx:198
 AliCDMesonTracks.cxx:199
 AliCDMesonTracks.cxx:200
 AliCDMesonTracks.cxx:201
 AliCDMesonTracks.cxx:202
 AliCDMesonTracks.cxx:203
 AliCDMesonTracks.cxx:204
 AliCDMesonTracks.cxx:205
 AliCDMesonTracks.cxx:206
 AliCDMesonTracks.cxx:207
 AliCDMesonTracks.cxx:208
 AliCDMesonTracks.cxx:209
 AliCDMesonTracks.cxx:210
 AliCDMesonTracks.cxx:211
 AliCDMesonTracks.cxx:212
 AliCDMesonTracks.cxx:213
 AliCDMesonTracks.cxx:214
 AliCDMesonTracks.cxx:215
 AliCDMesonTracks.cxx:216
 AliCDMesonTracks.cxx:217
 AliCDMesonTracks.cxx:218
 AliCDMesonTracks.cxx:219
 AliCDMesonTracks.cxx:220
 AliCDMesonTracks.cxx:221
 AliCDMesonTracks.cxx:222
 AliCDMesonTracks.cxx:223
 AliCDMesonTracks.cxx:224
 AliCDMesonTracks.cxx:225
 AliCDMesonTracks.cxx:226
 AliCDMesonTracks.cxx:227
 AliCDMesonTracks.cxx:228
 AliCDMesonTracks.cxx:229
 AliCDMesonTracks.cxx:230
 AliCDMesonTracks.cxx:231
 AliCDMesonTracks.cxx:232
 AliCDMesonTracks.cxx:233
 AliCDMesonTracks.cxx:234
 AliCDMesonTracks.cxx:235
 AliCDMesonTracks.cxx:236
 AliCDMesonTracks.cxx:237
 AliCDMesonTracks.cxx:238
 AliCDMesonTracks.cxx:239
 AliCDMesonTracks.cxx:240
 AliCDMesonTracks.cxx:241
 AliCDMesonTracks.cxx:242
 AliCDMesonTracks.cxx:243
 AliCDMesonTracks.cxx:244
 AliCDMesonTracks.cxx:245
 AliCDMesonTracks.cxx:246
 AliCDMesonTracks.cxx:247
 AliCDMesonTracks.cxx:248
 AliCDMesonTracks.cxx:249
 AliCDMesonTracks.cxx:250
 AliCDMesonTracks.cxx:251
 AliCDMesonTracks.cxx:252
 AliCDMesonTracks.cxx:253
 AliCDMesonTracks.cxx:254
 AliCDMesonTracks.cxx:255
 AliCDMesonTracks.cxx:256
 AliCDMesonTracks.cxx:257
 AliCDMesonTracks.cxx:258
 AliCDMesonTracks.cxx:259
 AliCDMesonTracks.cxx:260
 AliCDMesonTracks.cxx:261
 AliCDMesonTracks.cxx:262
 AliCDMesonTracks.cxx:263
 AliCDMesonTracks.cxx:264
 AliCDMesonTracks.cxx:265
 AliCDMesonTracks.cxx:266
 AliCDMesonTracks.cxx:267
 AliCDMesonTracks.cxx:268
 AliCDMesonTracks.cxx:269
 AliCDMesonTracks.cxx:270
 AliCDMesonTracks.cxx:271
 AliCDMesonTracks.cxx:272
 AliCDMesonTracks.cxx:273
 AliCDMesonTracks.cxx:274
 AliCDMesonTracks.cxx:275
 AliCDMesonTracks.cxx:276
 AliCDMesonTracks.cxx:277
 AliCDMesonTracks.cxx:278
 AliCDMesonTracks.cxx:279
 AliCDMesonTracks.cxx:280
 AliCDMesonTracks.cxx:281
 AliCDMesonTracks.cxx:282
 AliCDMesonTracks.cxx:283
 AliCDMesonTracks.cxx:284
 AliCDMesonTracks.cxx:285
 AliCDMesonTracks.cxx:286
 AliCDMesonTracks.cxx:287
 AliCDMesonTracks.cxx:288
 AliCDMesonTracks.cxx:289
 AliCDMesonTracks.cxx:290
 AliCDMesonTracks.cxx:291
 AliCDMesonTracks.cxx:292
 AliCDMesonTracks.cxx:293
 AliCDMesonTracks.cxx:294
 AliCDMesonTracks.cxx:295
 AliCDMesonTracks.cxx:296
 AliCDMesonTracks.cxx:297
 AliCDMesonTracks.cxx:298
 AliCDMesonTracks.cxx:299
 AliCDMesonTracks.cxx:300
 AliCDMesonTracks.cxx:301
 AliCDMesonTracks.cxx:302
 AliCDMesonTracks.cxx:303
 AliCDMesonTracks.cxx:304
 AliCDMesonTracks.cxx:305
 AliCDMesonTracks.cxx:306
 AliCDMesonTracks.cxx:307
 AliCDMesonTracks.cxx:308
 AliCDMesonTracks.cxx:309
 AliCDMesonTracks.cxx:310
 AliCDMesonTracks.cxx:311
 AliCDMesonTracks.cxx:312
 AliCDMesonTracks.cxx:313
 AliCDMesonTracks.cxx:314
 AliCDMesonTracks.cxx:315
 AliCDMesonTracks.cxx:316
 AliCDMesonTracks.cxx:317
 AliCDMesonTracks.cxx:318
 AliCDMesonTracks.cxx:319
 AliCDMesonTracks.cxx:320
 AliCDMesonTracks.cxx:321
 AliCDMesonTracks.cxx:322
 AliCDMesonTracks.cxx:323
 AliCDMesonTracks.cxx:324
 AliCDMesonTracks.cxx:325
 AliCDMesonTracks.cxx:326
 AliCDMesonTracks.cxx:327
 AliCDMesonTracks.cxx:328
 AliCDMesonTracks.cxx:329
 AliCDMesonTracks.cxx:330
 AliCDMesonTracks.cxx:331
 AliCDMesonTracks.cxx:332
 AliCDMesonTracks.cxx:333
 AliCDMesonTracks.cxx:334
 AliCDMesonTracks.cxx:335
 AliCDMesonTracks.cxx:336
 AliCDMesonTracks.cxx:337
 AliCDMesonTracks.cxx:338
 AliCDMesonTracks.cxx:339
 AliCDMesonTracks.cxx:340
 AliCDMesonTracks.cxx:341
 AliCDMesonTracks.cxx:342
 AliCDMesonTracks.cxx:343
 AliCDMesonTracks.cxx:344
 AliCDMesonTracks.cxx:345
 AliCDMesonTracks.cxx:346
 AliCDMesonTracks.cxx:347
 AliCDMesonTracks.cxx:348
 AliCDMesonTracks.cxx:349
 AliCDMesonTracks.cxx:350
 AliCDMesonTracks.cxx:351
 AliCDMesonTracks.cxx:352
 AliCDMesonTracks.cxx:353
 AliCDMesonTracks.cxx:354
 AliCDMesonTracks.cxx:355
 AliCDMesonTracks.cxx:356
 AliCDMesonTracks.cxx:357
 AliCDMesonTracks.cxx:358
 AliCDMesonTracks.cxx:359
 AliCDMesonTracks.cxx:360
 AliCDMesonTracks.cxx:361
 AliCDMesonTracks.cxx:362
 AliCDMesonTracks.cxx:363
 AliCDMesonTracks.cxx:364
 AliCDMesonTracks.cxx:365
 AliCDMesonTracks.cxx:366
 AliCDMesonTracks.cxx:367
 AliCDMesonTracks.cxx:368
 AliCDMesonTracks.cxx:369
 AliCDMesonTracks.cxx:370
 AliCDMesonTracks.cxx:371
 AliCDMesonTracks.cxx:372
 AliCDMesonTracks.cxx:373
 AliCDMesonTracks.cxx:374
 AliCDMesonTracks.cxx:375
 AliCDMesonTracks.cxx:376
 AliCDMesonTracks.cxx:377
 AliCDMesonTracks.cxx:378
 AliCDMesonTracks.cxx:379
 AliCDMesonTracks.cxx:380
 AliCDMesonTracks.cxx:381
 AliCDMesonTracks.cxx:382
 AliCDMesonTracks.cxx:383
 AliCDMesonTracks.cxx:384
 AliCDMesonTracks.cxx:385
 AliCDMesonTracks.cxx:386
 AliCDMesonTracks.cxx:387
 AliCDMesonTracks.cxx:388
 AliCDMesonTracks.cxx:389
 AliCDMesonTracks.cxx:390
 AliCDMesonTracks.cxx:391
 AliCDMesonTracks.cxx:392
 AliCDMesonTracks.cxx:393
 AliCDMesonTracks.cxx:394
 AliCDMesonTracks.cxx:395
 AliCDMesonTracks.cxx:396
 AliCDMesonTracks.cxx:397
 AliCDMesonTracks.cxx:398
 AliCDMesonTracks.cxx:399
 AliCDMesonTracks.cxx:400
 AliCDMesonTracks.cxx:401
 AliCDMesonTracks.cxx:402
 AliCDMesonTracks.cxx:403
 AliCDMesonTracks.cxx:404
 AliCDMesonTracks.cxx:405
 AliCDMesonTracks.cxx:406
 AliCDMesonTracks.cxx:407
 AliCDMesonTracks.cxx:408
 AliCDMesonTracks.cxx:409
 AliCDMesonTracks.cxx:410
 AliCDMesonTracks.cxx:411
 AliCDMesonTracks.cxx:412
 AliCDMesonTracks.cxx:413
 AliCDMesonTracks.cxx:414
 AliCDMesonTracks.cxx:415
 AliCDMesonTracks.cxx:416
 AliCDMesonTracks.cxx:417
 AliCDMesonTracks.cxx:418
 AliCDMesonTracks.cxx:419
 AliCDMesonTracks.cxx:420
 AliCDMesonTracks.cxx:421
 AliCDMesonTracks.cxx:422
 AliCDMesonTracks.cxx:423
 AliCDMesonTracks.cxx:424
 AliCDMesonTracks.cxx:425
 AliCDMesonTracks.cxx:426
 AliCDMesonTracks.cxx:427
 AliCDMesonTracks.cxx:428
 AliCDMesonTracks.cxx:429
 AliCDMesonTracks.cxx:430
 AliCDMesonTracks.cxx:431
 AliCDMesonTracks.cxx:432
 AliCDMesonTracks.cxx:433
 AliCDMesonTracks.cxx:434
 AliCDMesonTracks.cxx:435
 AliCDMesonTracks.cxx:436
 AliCDMesonTracks.cxx:437
 AliCDMesonTracks.cxx:438
 AliCDMesonTracks.cxx:439
 AliCDMesonTracks.cxx:440
 AliCDMesonTracks.cxx:441
 AliCDMesonTracks.cxx:442
 AliCDMesonTracks.cxx:443
 AliCDMesonTracks.cxx:444
 AliCDMesonTracks.cxx:445
 AliCDMesonTracks.cxx:446
 AliCDMesonTracks.cxx:447
 AliCDMesonTracks.cxx:448
 AliCDMesonTracks.cxx:449
 AliCDMesonTracks.cxx:450
 AliCDMesonTracks.cxx:451
 AliCDMesonTracks.cxx:452
 AliCDMesonTracks.cxx:453
 AliCDMesonTracks.cxx:454
 AliCDMesonTracks.cxx:455
 AliCDMesonTracks.cxx:456