ROOT logo
/************************************************************************* 
* Copyright(c) 1998-2008, 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.                  * 
**************************************************************************/

// -----------------------------------------------------------------------
//  In this analysis task we compare multiple AOD filtermasks.
// -----------------------------------------------------------------------
//  Author: Misha Veldhoen (misha.veldhoen@cern.ch)

#include <iostream>

// Basic Includes
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "TFile.h"
#include "TFormula.h"
#include "TChain.h"
#include "TObject.h"
#include "TRandom3.h"

// Analysis Includes
#include "AliAnalysisManager.h"
#include "AliAnalysisTaskSE.h"
#include "AliInputEventHandler.h"

// PID includes.
#include "AliPIDResponse.h"

// AOD includes.
#include "AliAODEvent.h"
#include "AliAODTrack.h"
#include "AliAODHandler.h"
#include "AliAODVertex.h"
#include "AliAODInputHandler.h"
#include "AliAODMCParticle.h"
#include "AliAODMCHeader.h"

// Includes from own library
#include "AliTrackDiHadronPID.h"
#include "AliAODTrackCutsDiHadronPID.h"
#include "AliAODEventCutsDiHadronPID.h"

// AnalysisTask Header
#include "AliAnalysisTaskCompareAODTrackCuts.h"

using namespace std;

ClassImp(AliAnalysisTaskCompareAODTrackCuts);

// -----------------------------------------------------------------------
AliAnalysisTaskCompareAODTrackCuts::AliAnalysisTaskCompareAODTrackCuts():
	AliAnalysisTaskSE(),
	fPIDResponse(0x0),
	fOutputList(0x0),
	fIsMC(kFALSE),
	fVerbose(kFALSE),
	fCalculateTOFMismatch(kFALSE),	
	fUseMismatchFileFromHomeDir(kTRUE),
	fUseNSigmaOnPIDAxes(kFALSE),	
	fEventCuts(0x0),
	fTrackCuts(0x0),
	fInclusiveTimes(0x0),
	fT0Fill(0x0),
	fLvsEta(0x0),
	fGlobalPtvsTPCPt(0x0),
	fLvsEtaProjections(0x0),
	fCurrentAODEvent(0x0),
	fCurrentAODTrack(0x0),
	fCurrentDiHadronPIDTrack(0x0),
	fGlobalTracksArray(0x0)

{

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

}

// -----------------------------------------------------------------------
AliAnalysisTaskCompareAODTrackCuts::AliAnalysisTaskCompareAODTrackCuts(const char* name):
	AliAnalysisTaskSE(name),
	fPIDResponse(0x0),
	fOutputList(0x0),
	fIsMC(kFALSE),
	fVerbose(kFALSE),
	fCalculateTOFMismatch(kFALSE),	
	fUseMismatchFileFromHomeDir(kTRUE),	
	fUseNSigmaOnPIDAxes(kFALSE),	
	fEventCuts(0x0),
	fTrackCuts(0x0),
	fInclusiveTimes(0x0),
	fT0Fill(0x0),
	fLvsEta(0x0),
	fGlobalPtvsTPCPt(0x0),
	fLvsEtaProjections(0x0),
	fCurrentAODEvent(0x0),
	fCurrentAODTrack(0x0),
	fCurrentDiHadronPIDTrack(0x0),
	fGlobalTracksArray(0x0)

{

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Named Constructor. 
	fTrackCuts = new TObjArray();
	fTrackCuts->SetName("fTrackCuts");

	DefineInput(0,TChain::Class());
	DefineOutput(1, TList::Class());

}

// -----------------------------------------------------------------------
AliAnalysisTaskCompareAODTrackCuts::~AliAnalysisTaskCompareAODTrackCuts() {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::UserCreateOutputObjects() {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Getting a pointer to the analysis manager and input handler.
	AliAnalysisManager* manager = AliAnalysisManager::GetAnalysisManager();
	if (!manager) {AliFatal("Could not obtain analysis manager.");}
	AliInputEventHandler* inputHandler = dynamic_cast<AliInputEventHandler*> (manager->GetInputEventHandler());
	if (!inputHandler) {AliFatal("Could not obtain input handler."); return;}	

	// Getting the pointer to the PID response object.
	fPIDResponse = inputHandler->GetPIDResponse();
	if (!fPIDResponse) {AliFatal("Could not obtain PID response."); return;}

	// Create the output list.
	fOutputList = new TList();
	fOutputList->SetOwner(kTRUE);

	// Adding Event Cuts to the output.
	fEventCuts->CreateHistos();				// Generating all requested histograms.	
	fOutputList->Add(fEventCuts);			

	// Adding Track Cuts to the output.
	for (Int_t iCuts = 0; iCuts < fTrackCuts->GetEntries(); iCuts++) {
		AliAODTrackCutsDiHadronPID* currentcuts = (AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts);
		currentcuts->CreateHistos(); 		// Generating all requested histograms.
		fOutputList->Add(currentcuts);		
	}

	// Creating inclusive times histogram.
	fInclusiveTimes = new TH2F("fInclusiveTimes","Inclusive Times;#eta;t (ps)",100,0,1.,1500,10000.,25000.);
	fOutputList->Add(fInclusiveTimes);

	// Create the diagram correlating TPC and Global transverse momenta.
	fGlobalPtvsTPCPt = new TH2F("fGlobalPtvsTPCPt","Global p_{T} vs TPC p_{T}; Global p_{T}; TPC p_{T}",100,0,10,100,0,10);
	fOutputList->Add(fGlobalPtvsTPCPt);

	// Creating Global Tracks Array
	fGlobalTracksArray = new TObjArray();

	// Loading the appropriate external mismatch histograms.
	if (fCalculateTOFMismatch) LoadExternalMismatchHistos();

	PostData(1,fOutputList);

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::FillGlobalTracksArray() {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Initialize the mapping for corresponding PID tracks.
	// See AliAnalysisTaskESDFilter.cxx for explanation about the mapping
	// between TPC-Only and Global tracks
		
	// Create TObjArray for Global Tracks.

	//cout<<"Global Tracks Array: "<<fGlobalTracksArray<<endl;

	// Clear previous tracks...
	fGlobalTracksArray->Clear();

	//if (fGlobalTracksArray) delete fGlobalTracksArray;
	//fGlobalTracksArray = new TObjArray();

	AliAODTrack* track = 0x0;
		
	for (Int_t iTrack = 0; iTrack < fCurrentAODEvent->GetNumberOfTracks(); iTrack++) {	

		track = dynamic_cast<AliAODTrack*>(fCurrentAODEvent->GetTrack(iTrack));
		if(!track) AliFatal("Not a standard AOD");
        if (track->GetID()>-1) fGlobalTracksArray->AddAtAndExpand(track,track->GetID());
	}

}

// -----------------------------------------------------------------------
AliAODTrack* AliAnalysisTaskCompareAODTrackCuts::GetGlobalTrack(AliAODTrack* track) {

	// Returns Global Track corresponding to a TPC-Only Track.
	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	if (track->GetID() >= 0) {
		cout<<"AliAnalysisTaskCompareAODTrackCuts::GetGlobalTrack -> Input Track is not TPC-Only."<<endl;
		return 0x0;
	}

	if (!fGlobalTracksArray) {
		cout<<"AliAnalysisTaskCompareAODTrackCuts::GetGlobalTrack -> Global Tracks Array Does not Exist."<<endl;
		return 0x0;
	}

    AliAODTrack* globaltrack = (AliAODTrack*)(fGlobalTracksArray->At(-track->GetID()-1));
	if (!globaltrack) {
		cout<<"AliAnalysisTaskCompareAODTrackCuts::GetGlobalTrack -> No Global Track Found."<<endl;
		return 0x0;
	}

	return globaltrack;
	
}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::UserExec(Option_t*) {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
	Int_t nmismatched = 0;
	Int_t nmatched = 0;
	Int_t nnotof = 0;
	// Input Current Event.
	fCurrentAODEvent = dynamic_cast<AliAODEvent*>(InputEvent());
	if (!fCurrentAODEvent) {
		cout<<"AliAnalysisTaskCompareAODTrackCuts::UserExec -> AOD Event not found."<<endl;
		return;
	}

	// Check Event Cuts Object.
	if (!fEventCuts) AliFatal("No Event Cuts Object Found!");

	// Perform Event Cuts.
	if (!fEventCuts->IsSelected(fCurrentAODEvent)) {return;}

	// Check Track Cuts Array.
	if (!fTrackCuts) AliFatal("No Track Cuts Array Found!");
	if (fTrackCuts->GetEntries() == 0) AliFatal("Track Cuts Array is Empty!");

	// If MC, then fill MC reconstructed QA histograms.
	TClonesArray* mcArray = 0x0;
	TObjArray* mcArrayLabel = 0x0; 
	if (fIsMC) {
		
		mcArray = dynamic_cast<TClonesArray*>(fCurrentAODEvent->FindListObject(AliAODMCParticle::StdBranchName()));
    	if (!mcArray) {
        	AliFatal("No MC array found in the AOD.");
        	return;
    	}

    	mcArrayLabel = new TObjArray(10000);

    	// Loop over MC particles.
    	for (Int_t iParticle = 0; iParticle < mcArray->GetEntriesFast(); iParticle++) {
		
			// Put the MC Particle in the Label array.
			AliAODMCParticle* CurrentAODMCParticle = (AliAODMCParticle*) mcArray->At(iParticle);
			//cout << "PR: " << CurrentAODMCParticle->IsPhysicalPrimary() << " SW: " << CurrentAODMCParticle->IsSecondaryFromWeakDecay() << " SM: " << CurrentAODMCParticle->IsSecondaryFromMaterial() << endl;
			mcArrayLabel->AddAtAndExpand(CurrentAODMCParticle,CurrentAODMCParticle->Label());
    		//cout<<"Index: "<<iParticle<<" Label: "<<CurrentAODMCParticle->Label()<<endl;

			//if (CurrentAODMCParticle->Label()!=iParticle) cout<<"Index unequal to particle's label!"<<endl;

			// Loop over all Track Cuts.
			for (Int_t iCuts = 0; iCuts < fTrackCuts->GetEntries(); iCuts++) {
				((AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts))->IsSelectedGeneratedMC(CurrentAODMCParticle);
			}
		}
	}

	//for (Int_t ii=0; ii<200; ii++) cout<<fLvsEtaProj[ii]<<endl;		

	// Create mapping to Global Tracks.
	FillGlobalTracksArray();

	// Tell the track cuts object that a new event has started.
	for (Int_t iCuts = 0; iCuts < fTrackCuts->GetEntries(); iCuts++) {
		AliAODTrackCutsDiHadronPID* currentcuts = (AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts);
		if (fVerbose) AliInfo(Form("Starting new event for cuts: %s",currentcuts->GetName()));
		currentcuts->StartNewEvent();
	}

	// Loop over all reconstructed tracks.
	for (Int_t iTrack = 0; iTrack < fCurrentAODEvent->GetNumberOfTracks(); iTrack++) {

		// Get the Current Track.
		fCurrentAODTrack = dynamic_cast<AliAODTrack*>(fCurrentAODEvent->GetTrack(iTrack));
		if(!fCurrentAODTrack) AliFatal("Not a standard AOD");
		if (!fCurrentAODTrack) {
			cout<<"AliAnalysisTaskCompareAODTrackCuts::UserExec -> AOD Track not found."<<endl;
			continue;
		}

		// Ignore muon tracks.
		if (fCurrentAODTrack->IsMuonTrack()) {continue;}

		// Copy Track info into AliTrackDiHadronPID object.
		fCurrentDiHadronPIDTrack = 0x0;

		// Check if we can indeed find a MC particle corresponding to the reconstructed track.
		/*
		AliAODMCParticle* MCparticleCheck = (AliAODMCParticle*)mcArrayLabel->At(TMath::Abs(fCurrentAODTrack->GetLabel()));
		Double_t MCPt1 = -999.;
		if (MCparticleCheck) MCPt1 = MCparticleCheck->Pt();
		AliAODMCParticle* MCparticleCheck2 = (AliAODMCParticle*)mcArray->At(TMath::Abs(fCurrentAODTrack->GetLabel()));	
		Double_t MCPt2 = -999.;
		if (MCparticleCheck2) MCPt2 = MCparticleCheck2->Pt();

		cout<<"AOD track abs label: "<<TMath::Abs(fCurrentAODTrack->GetLabel())<<" MC particle with same label found: "<<(Bool_t)MCparticleCheck<<" and with same index: "<<(Bool_t)MCparticleCheck2<<endl;
		cout<<"AOD track pt: "<<fCurrentAODTrack->Pt()<<" same label pt: "<<MCPt1<<" same index pt: "<<MCPt2<<endl;
		//if (!MCparticleCheck) cout<<"MC Particle for a reconstructed track not found."<<endl;
*/
		// Check if it's a TPC-Only or Global Track.
		if (fCurrentAODTrack->GetID() < 0) {
			// Q: Do we really need to create the arraylabel object or is the original MC array already nicely ordered. (NOTE THAT WE TAKE THE MC PARTICLES FROM THE mcArray)
			if (fIsMC) fCurrentDiHadronPIDTrack = new AliTrackDiHadronPID(fCurrentAODTrack,GetGlobalTrack(fCurrentAODTrack),(AliAODMCParticle*)mcArray->At(TMath::Abs(fCurrentAODTrack->GetLabel())),fPIDResponse);
			else fCurrentDiHadronPIDTrack = new AliTrackDiHadronPID(fCurrentAODTrack,GetGlobalTrack(fCurrentAODTrack),0x0,fPIDResponse);
		
			// Fill histogram of Global p_T vs TPC-only p_T
			fGlobalPtvsTPCPt->Fill(GetGlobalTrack(fCurrentAODTrack)->Pt(), fCurrentAODTrack->Pt());

		} else {
			if (fIsMC) fCurrentDiHadronPIDTrack = new AliTrackDiHadronPID(fCurrentAODTrack,0x0,(AliAODMCParticle*)mcArray->At(TMath::Abs(fCurrentAODTrack->GetLabel())),fPIDResponse);
			else fCurrentDiHadronPIDTrack = new AliTrackDiHadronPID(fCurrentAODTrack,0x0,0x0,fPIDResponse);
		}

		if (!fCurrentDiHadronPIDTrack) {
			cout<<"AliAnalysisTaskCompareAODTrackCuts::UserExec -> Copying to DiHadronPIDTrack failed."<<endl;
			continue;
		}

		// Filling random times histogram:
		ULong_t requestedflags = (UInt_t)(AliAODTrack::kTOFout)|(UInt_t)(AliAODTrack::kTIME);
		ULong_t trackflags = fCurrentDiHadronPIDTrack->GetFlags();
		if (requestedflags&trackflags) {fInclusiveTimes->Fill(TMath::Abs(fCurrentDiHadronPIDTrack->Eta()),fCurrentDiHadronPIDTrack->GetTOFsignal());}

		Double_t rndhittime = -1.e21;
		if (fCalculateTOFMismatch) rndhittime = GenerateRandomHit(fCurrentDiHadronPIDTrack->Eta());

		// Loop over all Track Cuts.
		for (Int_t iCuts = 0; iCuts < fTrackCuts->GetEntries(); iCuts++) {
			if (fIsMC) ((AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts))->IsSelectedReconstructedMC(fCurrentDiHadronPIDTrack);
			else ((AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts))->IsSelectedData(fCurrentDiHadronPIDTrack,rndhittime);
		}

		Int_t tofmatchstat = fCurrentDiHadronPIDTrack->GetTOFMatchingStatus();
		if (tofmatchstat==0) {nmatched++;}
		if (tofmatchstat==1) {nmismatched++;}
		if (tofmatchstat==2) {nnotof++;}

		// Delete Current DiHadronPIDTrack.
		delete fCurrentDiHadronPIDTrack;
		fCurrentDiHadronPIDTrack = 0x0;

	}

	// Tell the track cuts object that the event has been processed.
	for (Int_t iCuts = 0; iCuts < fTrackCuts->GetEntries(); iCuts++) {
		((AliAODTrackCutsDiHadronPID*)fTrackCuts->At(iCuts))->EventIsDone(fIsMC);
	}
	
	//cout << "Matched: "<<nmatched<<" Mismatched: "<<nmismatched<<" No TOF hit: "<<nnotof<<endl;

	PostData(1,fOutputList);

} 

// -----------------------------------------------------------------------
Bool_t AliAnalysisTaskCompareAODTrackCuts::LoadExternalMismatchHistos() {

	//
	// Attempting to load a root file containing information needed
	// to generate random TOF hits.
 	//

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Opening external TOF file.
	TFile* fin = 0x0;
	
	// The default is that the file TOFmismatchHistos.root is taken from the /rootfiles/ directory, 
	// and this works fine when running on the train. When the user submits the jobs himself, he can
	// choose to not take the file from the home dir, but upload one along with the source code.
	// If in this case the file is not found, the program tries to get the file from the root directory
	// anyway.
	if (fUseMismatchFileFromHomeDir == kFALSE) {
		fin = TFile::Open("TOFmismatchHistos.root");
		if (!fin) {AliWarning("Tried to open uploaded TOFmismatchHistos.root, but failed");}
	}

	if (!fin) {fin = TFile::Open("alien:///alice/cern.ch/user/m/mveldhoe/rootfiles/TOFmismatchHistos.root");}
	
	if (!fin) {
		AliWarning("Couln't open TOFmismatchHistos.root, will not calculate mismatches...");
		fCalculateTOFMismatch = kFALSE;
		return kFALSE;
	} else {
		AliInfo("Sucessfully loaded TOFmismatchHistos.root");
	}

	// Check if the required histograms are present.
	TH1F* tmp1 = (TH1F*)fin->Get("hNewT0Fill");
	if (!tmp1) {
		AliWarning("Couln't find hNewT0Fill, will not calculate mismatches...");
		fCalculateTOFMismatch = kFALSE;
		return kFALSE;	
	}
	TH2F* tmp2 = (TH2F*)fin->Get("hLvsEta");
	if (!tmp2) {
		AliWarning("Couln't find hLvsEta, will not calculate mismatches...");
		fCalculateTOFMismatch = kFALSE;
		return kFALSE;	
	}	

	// Make a deep copy of the files in the histogram.
	fT0Fill = (TH1F*)tmp1->Clone("fT0Fill");
	fLvsEta = (TH2F*)tmp2->Clone("fLvsEta");

	// Close the external file.
	AliInfo("Closing external file.");
	fin->Close();

	// Creating a TObjArray for LvsEta projections.
	const Int_t nbinseta = fLvsEta->GetNbinsX();
	fLvsEtaProjections = new TObjArray(nbinseta);
	fLvsEtaProjections->SetOwner(kTRUE);

	// Making the projections needed (excluding underflow/ overflow).
	for (Int_t iEtaBin = 1; iEtaBin < (nbinseta + 1); iEtaBin++) {
		TH1F* tmp = (TH1F*)fLvsEta->ProjectionY(Form("LvsEtaProjection_%i",iEtaBin),iEtaBin,iEtaBin);
		tmp->SetDirectory(0);
		fLvsEtaProjections->AddAt(tmp,iEtaBin - 1);
	}

	return kTRUE;

}

// -----------------------------------------------------------------------
Double_t AliAnalysisTaskCompareAODTrackCuts::GenerateRandomHit(Double_t eta) {

	//
	// Returns a random TOF time.
	//

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	// Default (error) value:
	Double_t rndhittime = -1.e21;

	// TOF mismatch flag is not turned on.
	if (!fCalculateTOFMismatch) {
		AliFatal("Called GenerateRandomHit() method, but flag fCalculateTOFMismatch not set.");
		return rndhittime;
	}

	// TOF doesn't extend much further than 0.8.
	if (TMath::Abs(eta) > 0.8) {
		if (fDebug) {AliInfo("Tried to get a random hit for a track with eta > 0.8.");}
		return rndhittime;
	}

	// Finding the bin of the eta.
	TAxis* etaAxis = fLvsEta->GetXaxis();
	Int_t etaBin = etaAxis->FindBin(eta);
	if (etaBin == 0 || (etaBin == etaAxis->GetNbins() + 1)) {return rndhittime;}

	const TH1F* lengthDistribution = (const TH1F*)fLvsEtaProjections->At(etaBin - 1);

	if (!lengthDistribution) {
		AliFatal("length Distribution not found.");
		return rndhittime;
	}

	Double_t currentRndLength = lengthDistribution->GetRandom(); // in cm.

	// Similar to Roberto's code.
	Double_t currentRndTime = currentRndLength / (TMath::C() * 1.e2 / 1.e12);
	Double_t t0fill = -1.26416e+04;
	rndhittime = fT0Fill->GetRandom() - t0fill + currentRndTime;

	return rndhittime;

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::SetUseNSigmaOnPIDAxes(Bool_t UseNSigma) {

	// Will use NSigma on all PID axes. Will also change all track cuts objects
	// owned by this task.
	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	fUseNSigmaOnPIDAxes = UseNSigma;

	if (fTrackCuts) {
		for (Int_t iCut = 0; iCut < fTrackCuts->GetSize(); ++iCut) {
			AliAODTrackCutsDiHadronPID* cutstmp = (AliAODTrackCutsDiHadronPID*)(fTrackCuts->At(iCut));
			if (cutstmp) {cutstmp->SetUseNSigmaOnPIDAxes(UseNSigma);}
			else {cout << Form("%s -> WARNING: Found an empty spot in the track cuts array...",__func__) << endl;}
		}
	}
}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::SetEventCuts(AliAODEventCutsDiHadronPID* eventcuts) {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
	if (!eventcuts) {cout << Form("%s -> ERROR: No Event Cuts Object provided.",__func__) << endl; return;}

	fEventCuts = eventcuts;

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::AddTrackCuts(AliAODTrackCutsDiHadronPID* trackcuts) {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}
	if (!trackcuts) {cout << Form("%s -> ERROR: No Track Cuts Object provided.",__func__) << endl; return;}
	if (!fTrackCuts) {cout << Form("%s -> ERROR: No Track Cuts array available.",__func__) << endl; return;}

	// The setting of the task propagates to the imported track cuts object.
	trackcuts->SetUseNSigmaOnPIDAxes(fUseNSigmaOnPIDAxes);

	fTrackCuts->AddLast(trackcuts);

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::SetDebugLevel(Int_t debuglvl) {

	// Sets debug level to a certain value, as well as the debug level of the
	// track cuts objects and event cut object.
	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	fDebug = debuglvl;

	if (fEventCuts) {fEventCuts->SetDebugLevel(debuglvl);}

	if (fTrackCuts) {
		for (Int_t iTrackCutObj = 0; iTrackCutObj < fTrackCuts->GetEntriesFast(); ++iTrackCutObj) {
			((AliTrackDiHadronPID*)fTrackCuts->At(iTrackCutObj))->SetDebugLevel(debuglvl);
		}
	}

}

// -----------------------------------------------------------------------
void AliAnalysisTaskCompareAODTrackCuts::Terminate(Option_t*) {

	if (fDebug > 0) {cout << Form("File: %s, Line: %i, Function: %s",__FILE__,__LINE__,__func__) << endl;}

	if (fCalculateTOFMismatch) {
		delete fT0Fill;
		fT0Fill = 0x0;
		delete fLvsEta;
		fLvsEta = 0x0;
		delete fLvsEtaProjections;
		fLvsEtaProjections = 0x0;
	}

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