ROOT logo

/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. 	*
 *				       					 									*
 * Authors: Friederike Bock												  	*
 * Version 1.0								  								*
 *																			*
 * 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.		  			*
 **************************************************************************/

////////////////////////////////////////////////
//--------------------------------------------- 
// Class handling all kinds of selection cuts for
// Gamma Conversion analysis
//---------------------------------------------
////////////////////////////////////////////////


#include "AliPrimaryPionCuts.h"
#include "AliAODConversionPhoton.h"
#include "AliKFVertex.h"
#include "AliAODTrack.h"
#include "AliESDtrack.h"
#include "AliAnalysisManager.h"
#include "AliInputEventHandler.h"
#include "AliMCEventHandler.h"
#include "AliAODHandler.h"
#include "AliPIDResponse.h"
#include "TH1.h"
#include "TH2.h"
#include "AliStack.h"
#include "TObjString.h"
#include "AliAODEvent.h"
#include "AliESDEvent.h"
#include "TList.h"
class iostream;

using namespace std;

ClassImp(AliPrimaryPionCuts)


const char* AliPrimaryPionCuts::fgkCutNames[AliPrimaryPionCuts::kNCuts] = {
	"kEtaCut",				// 0
	"kClsITSCut",			// 1
	"kClsTPCCut",			// 2
	"kDCAcut",				// 3
	"kPtCut",				// 4
	"kPiDedxSigmaITSCut",	// 5
	"kPiDedxSigmaTPCCut",	// 6
	"kPiTOFSigmaCut",		// 7 
	"kMassCut"				// 8
};

//________________________________________________________________________
AliPrimaryPionCuts::AliPrimaryPionCuts(const char *name,const char *title) : AliAnalysisCuts(name,title),
	fHistograms(NULL),
	fPIDResponse(NULL),
	fEsdTrackCuts(NULL),
	fEtaCut(0.9),
	fEtaShift(0.0),
	fDoEtaCut(kFALSE),
	fPtCut(0.0),
	fMinClsTPC(0), // minimum clusters in the TPC
	fMinClsTPCToF(0), // minimum clusters to findable clusters
	fDodEdxSigmaITSCut(kFALSE),
	fDodEdxSigmaTPCCut(kTRUE),
	fDoTOFsigmaCut(kFALSE), // RRnewTOF
	fPIDnSigmaAbovePionLineITS(100),
	fPIDnSigmaBelowPionLineITS(-100),
	fPIDnSigmaAbovePionLineTPC(100),
	fPIDnSigmaBelowPionLineTPC(-100),
	fPIDnSigmaAbovePionLineTOF(100), // RRnewTOF
	fPIDnSigmaBelowPionLineTOF(-100), // RRnewTOF
	fUseCorrectedTPCClsInfo(kFALSE),
	fUseTOFpid(kFALSE),
	fRequireTOF(kFALSE),
	fDoMassCut(kFALSE),
	fMassCut(10),
	fDoWeights(kFALSE),
	fCutString(NULL),
	fHistCutIndex(NULL),
	fHistdEdxCuts(NULL),
	fHistITSdEdxbefore(NULL),
	fHistITSdEdxafter(NULL),
	fHistTPCdEdxbefore(NULL),
	fHistTPCdEdxafter(NULL),
	fHistTPCdEdxSignalbefore(NULL),
	fHistTPCdEdxSignalafter(NULL),
	fHistTOFbefore(NULL),
	fHistTOFafter(NULL),
	fHistTrackDCAxyPtbefore(NULL),
	fHistTrackDCAxyPtafter(NULL),
	fHistTrackDCAzPtbefore(NULL),
	fHistTrackDCAzPtafter(NULL),
	fHistTrackNFindClsPtTPCbefore(NULL),
	fHistTrackNFindClsPtTPCafter(NULL),
	fStringITSClusterCut("")
{
	InitPIDResponse();
	for(Int_t jj=0;jj<kNCuts;jj++){ fCuts[jj]=0; }
	fCutString=new TObjString((GetCutNumber()).Data());

	// Using standard function for setting Cuts
	Bool_t selectPrimaries=kFALSE;
	if (fEsdTrackCuts==NULL)fEsdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(selectPrimaries);
}

//________________________________________________________________________
AliPrimaryPionCuts::~AliPrimaryPionCuts() {
		// Destructor
	//Deleting fHistograms leads to seg fault it it's added to output collection of a task
	// if(fHistograms)
	// 	delete fHistograms;
	// fHistograms = NULL;

	if(fCutString != NULL){
		delete fCutString;
		fCutString = NULL;
	}
}

//________________________________________________________________________
void AliPrimaryPionCuts::InitCutHistograms(TString name, Bool_t preCut,TString cutNumber){

	// Initialize Cut Histograms for QA (only initialized and filled if function is called)

	TString cutName = "";
	
	if( cutNumber==""){
		cutName = GetCutNumber().Data();
	}
	else {
		cutName = cutNumber.Data();
	} 

	if(fHistograms != NULL){
		delete fHistograms;
		fHistograms=NULL;
	}
	if(fHistograms==NULL){
		fHistograms=new TList();
		if(name=="")fHistograms->SetName(Form("PionCuts_%s",cutName.Data()));
		else fHistograms->SetName(Form("%s_%s",name.Data(),cutName.Data()));
	}


	fHistCutIndex=new TH1F(Form("IsPionSelected %s",cutName.Data()),"IsPionSelected",10,-0.5,9.5);
	fHistCutIndex->GetXaxis()->SetBinLabel(kPionIn+1,"in");
	fHistCutIndex->GetXaxis()->SetBinLabel(kNoTracks+1,"no tracks");
	fHistCutIndex->GetXaxis()->SetBinLabel(kTrackCuts+1,"Track cuts");
	fHistCutIndex->GetXaxis()->SetBinLabel(kdEdxCuts+1,"dEdx");
	fHistCutIndex->GetXaxis()->SetBinLabel(kPionOut+1,"out");
	fHistograms->Add(fHistCutIndex);

	// dEdx Cuts
	fHistdEdxCuts=new TH1F(Form("dEdxCuts %s",cutName.Data()),"dEdxCuts",5,-0.5,4.5);
	fHistdEdxCuts->GetXaxis()->SetBinLabel(1,"in");
	fHistdEdxCuts->GetXaxis()->SetBinLabel(2,"ITSpion");
	fHistdEdxCuts->GetXaxis()->SetBinLabel(3,"TPCpion");
	fHistdEdxCuts->GetXaxis()->SetBinLabel(4,"TOFpion");
	fHistdEdxCuts->GetXaxis()->SetBinLabel(5,"out");
	fHistograms->Add(fHistdEdxCuts);
	
	TAxis *axisBeforeITS  = NULL;
	TAxis *axisBeforedEdx = NULL;
	TAxis *axisBeforeTOF  = NULL;
	TAxis *axisBeforedEdxSignal = NULL;

	if(preCut){
		fHistITSdEdxbefore=new TH2F(Form("Pion_ITS_before %s",cutName.Data()),"ITS dEdx pion before" ,150,0.05,20,400,-10,10);
		fHistograms->Add(fHistITSdEdxbefore);
		axisBeforeITS = fHistITSdEdxbefore->GetXaxis();

		fHistTPCdEdxbefore=new TH2F(Form("Pion_dEdx_before %s",cutName.Data()),"dEdx pion before" ,150,0.05,20,400,-10,10);
		fHistograms->Add(fHistTPCdEdxbefore);
		axisBeforedEdx = fHistTPCdEdxbefore->GetXaxis();

		fHistTPCdEdxSignalbefore=new TH2F(Form("Pion_dEdxSignal_before %s",cutName.Data()),"dEdx pion signal before" ,150,0.05,20.0,800,0.0,200);
		fHistograms->Add(fHistTPCdEdxSignalbefore);
		axisBeforedEdxSignal = fHistTPCdEdxSignalbefore->GetXaxis();

		fHistTOFbefore=new TH2F(Form("Pion_TOF_before %s",cutName.Data()),"TOF pion before" ,150,0.05,20,400,-6,10);
		fHistograms->Add(fHistTOFbefore);
		axisBeforeTOF = fHistTOFbefore->GetXaxis();
		
		fHistTrackDCAxyPtbefore = new TH2F(Form("hTrack_DCAxy_Pt_before %s",cutName.Data()),"DCAxy Vs Pt of tracks before",800,-4.0,4.0,400,0.,10.);
		fHistograms->Add(fHistTrackDCAxyPtbefore); 	
		
		fHistTrackDCAzPtbefore  = new TH2F(Form("hTrack_DCAz_Pt_before %s",cutName.Data()), "DCAz  Vs Pt of tracks before",800,-4.0,4.0,400,0.,10.);
		fHistograms->Add(fHistTrackDCAzPtbefore); 
		
		fHistTrackNFindClsPtTPCbefore = new TH2F(Form("hTrack_NFindCls_Pt_TPC_before %s",cutName.Data()),"Track: N Findable Cls TPC Vs Pt before",100,0,1,400,0.,10.);
		fHistograms->Add(fHistTrackNFindClsPtTPCbefore); 
	}

	fHistITSdEdxafter=new TH2F(Form("Pion_ITS_after %s",cutName.Data()),"ITS dEdx pion after" ,150,0.05,20,400, -10,10);
	fHistograms->Add(fHistITSdEdxafter);

	fHistTPCdEdxafter=new TH2F(Form("Pion_dEdx_after %s",cutName.Data()),"dEdx pion after" ,150,0.05,20,400, -10,10);
	fHistograms->Add(fHistTPCdEdxafter);

	fHistTPCdEdxSignalafter=new TH2F(Form("Pion_dEdxSignal_after %s",cutName.Data()),"dEdx pion signal after" ,150,0.05,20.0,800,0.0,200);
	fHistograms->Add(fHistTPCdEdxSignalafter);

	fHistTOFafter=new TH2F(Form("Pion_TOF_after %s",cutName.Data()),"TOF pion after" ,150,0.05,20,400,-6,10);
	fHistograms->Add(fHistTOFafter);
	
	fHistTrackDCAxyPtafter  = new TH2F(Form("hTrack_DCAxy_Pt_after %s",cutName.Data()),"DCAxy Vs Pt of tracks after",800,-4.0,4.0,400,0.,10.);
	fHistograms->Add(fHistTrackDCAxyPtafter); 
	
	fHistTrackDCAzPtafter  = new TH2F(Form("hTrack_DCAz_Pt_after %s",cutName.Data()), "DCAz Vs Pt of tracks  after",800,-4.0,4.0,400,0.,10.);
	fHistograms->Add(fHistTrackDCAzPtafter); 
	
	fHistTrackNFindClsPtTPCafter = new TH2F(Form("hTrack_NFindCls_Pt_TPC_after %s",cutName.Data()),"Track: N Findable Cls TPC Vs Pt after",100,0,1,400,0.,10.);
	fHistograms->Add(fHistTrackNFindClsPtTPCafter); 
	
	TAxis *AxisAfter = fHistTPCdEdxafter->GetXaxis(); 
	Int_t bins = AxisAfter->GetNbins();
	Double_t from = AxisAfter->GetXmin();
	Double_t to = AxisAfter->GetXmax();
	Double_t *newBins = new Double_t[bins+1];
	newBins[0] = from;
	Double_t factor = TMath::Power(to/from, 1./bins);
	for(Int_t i=1; i<=bins; ++i) newBins[i] = factor * newBins[i-1];
	AxisAfter->Set(bins, newBins);
	AxisAfter = fHistTOFafter->GetXaxis(); 
	AxisAfter->Set(bins, newBins);
	AxisAfter = fHistITSdEdxafter->GetXaxis();
	AxisAfter->Set(bins,newBins); 
	AxisAfter = fHistTPCdEdxSignalafter->GetXaxis();
	AxisAfter->Set(bins,newBins);
	
	if(preCut){
		axisBeforeITS->Set(bins, newBins);
		axisBeforedEdx->Set(bins, newBins);
		axisBeforedEdxSignal->Set(bins,newBins);
		axisBeforeTOF->Set(bins, newBins);
	
	}
	delete [] newBins;
	
	// Event Cuts and Info
}


//________________________________________________________________________
Bool_t AliPrimaryPionCuts::InitPIDResponse(){

// Set Pointer to AliPIDResponse

  AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager();

  if(man) {
    AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler());
    fPIDResponse = (AliPIDResponse*)inputHandler->GetPIDResponse();
    if(fPIDResponse)return kTRUE;

  }

  return kFALSE;
}
///________________________________________________________________________
Bool_t AliPrimaryPionCuts::PionIsSelectedMC(Int_t labelParticle,AliStack *fMCStack){
	
	if( labelParticle < 0 || labelParticle >= fMCStack->GetNtrack() ) return kFALSE;
	if( fMCStack->IsPhysicalPrimary(labelParticle) == kFALSE ) return kFALSE; 

	TParticle* particle = fMCStack->Particle(labelParticle);

	if( TMath::Abs( particle->GetPdgCode() ) != 211 )  return kFALSE;
	
	if( fDoEtaCut ){
	if( particle->Eta() > (fEtaCut + fEtaShift) || particle->Eta() < (-fEtaCut + fEtaShift) )
		return kFALSE;
	}
	
	return kTRUE;
}


///________________________________________________________________________
Bool_t AliPrimaryPionCuts::PionIsSelected(AliESDtrack* lTrack){
    //Selection of Reconstructed electrons
	
	Float_t b[2];
	Float_t bCov[3];
	lTrack->GetImpactParameters(b,bCov);

	if (bCov[0]<=0 || bCov[2]<=0) {
		AliDebug(1, "Estimated b resolution lower or equal zero!");
		bCov[0]=0; bCov[2]=0;
	}

	Float_t dcaToVertexXY = b[0];
	Float_t dcaToVertexZ  = b[1];
	Double_t clsToF = GetNFindableClustersTPC(lTrack);


	if (fHistCutIndex) fHistCutIndex->Fill(kPionIn);

	if (lTrack == NULL){
		if (fHistCutIndex) fHistCutIndex->Fill(kNoTracks);
		return kFALSE;  
	}   
	if (fHistTrackDCAxyPtbefore) fHistTrackDCAxyPtbefore->Fill(dcaToVertexXY,lTrack->Pt());
	if (fHistTrackDCAzPtbefore) fHistTrackDCAzPtbefore->Fill( dcaToVertexZ, lTrack->Pt());
	if (fHistTrackNFindClsPtTPCbefore) fHistTrackNFindClsPtTPCbefore->Fill( clsToF, lTrack->Pt());

	
	if ( ! lTrack->GetConstrainedParam() ){
		return kFALSE;
	}
	AliVTrack * track = dynamic_cast<AliVTrack*>(lTrack);

	// Track Cuts
	if( !TrackIsSelected(lTrack) ){
		if (fHistCutIndex) fHistCutIndex->Fill(kTrackCuts);
		return kFALSE;
	}

	// dEdx Cuts
	if( ! dEdxCuts( track ) ) {
		if(fHistCutIndex)fHistCutIndex->Fill(kdEdxCuts);
		return kFALSE;

	}

	//Pion passed the cuts
	if (fHistCutIndex) fHistCutIndex->Fill(kPionOut);
	if (fHistTrackDCAxyPtafter) fHistTrackDCAxyPtafter->Fill(dcaToVertexXY,lTrack->Pt());
	if (fHistTrackDCAzPtafter) fHistTrackDCAzPtafter->Fill(dcaToVertexZ,lTrack->Pt());
	if (fHistTrackNFindClsPtTPCafter) fHistTrackNFindClsPtTPCafter->Fill( clsToF, lTrack->Pt());

	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::TrackIsSelected(AliESDtrack* lTrack) {
	// Track Selection for Photon Reconstruction
	
	Double_t clsToF = GetNFindableClustersTPC(lTrack);
	
	if( ! fEsdTrackCuts->AcceptTrack(lTrack) ){
		return kFALSE;
	}
		
	if( fDoEtaCut ) {
		if(  lTrack->Eta() > (fEtaCut + fEtaShift) || lTrack->Eta() < (-fEtaCut + fEtaShift) ) {
			return kFALSE;
		}
	}
	
	if( lTrack->Pt() < fPtCut ) {
		return kFALSE;		
	}

	if( clsToF < fMinClsTPCToF){
		return kFALSE;
	}

	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::dEdxCuts(AliVTrack *fCurrentTrack){

	// Pion Identification Cuts for Photon reconstruction

	if(!fPIDResponse){  InitPIDResponse();  }// Try to reinitialize PID Response
	if(!fPIDResponse){  AliError("No PID Response"); return kFALSE;}// if still missing fatal error

	Int_t cutIndex=0;

	if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
	if(fHistITSdEdxbefore)fHistITSdEdxbefore->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasITS(fCurrentTrack, AliPID::kPion));
	if(fHistTPCdEdxbefore)fHistTPCdEdxbefore->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasTPC(fCurrentTrack, AliPID::kPion));
	if(fHistTPCdEdxSignalbefore)fHistTPCdEdxSignalbefore->Fill(fCurrentTrack->P(),TMath::Abs(fCurrentTrack->GetTPCsignal()));

	cutIndex++;

	if( fDodEdxSigmaITSCut == kTRUE ){
		if( fPIDResponse->NumberOfSigmasITS(fCurrentTrack,AliPID::kPion)<fPIDnSigmaBelowPionLineITS ||
				fPIDResponse->NumberOfSigmasITS(fCurrentTrack,AliPID::kPion)> fPIDnSigmaAbovePionLineITS ){	
			if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
			return kFALSE;
		}
	}
		
	if(fHistITSdEdxafter)fHistITSdEdxafter->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasITS(fCurrentTrack, AliPID::kPion));
	
	
	cutIndex++;
		
		
	if(fDodEdxSigmaTPCCut == kTRUE){
		// TPC Pion Line
		if( fPIDResponse->NumberOfSigmasTPC(fCurrentTrack,AliPID::kPion)<fPIDnSigmaBelowPionLineTPC ||
			fPIDResponse->NumberOfSigmasTPC(fCurrentTrack,AliPID::kPion)>fPIDnSigmaAbovePionLineTPC){
			if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
			return kFALSE;
		}
		cutIndex++;
	} else { cutIndex+=1; }
	
	if( ( fCurrentTrack->GetStatus() & AliESDtrack::kTOFpid ) && ( !( fCurrentTrack->GetStatus() & AliESDtrack::kTOFmismatch) ) ){
		if(fHistTOFbefore) fHistTOFbefore->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasTOF(fCurrentTrack, AliPID::kPion));
		if(fUseTOFpid){
			if( fPIDResponse->NumberOfSigmasTOF(fCurrentTrack, AliPID::kPion)>fPIDnSigmaAbovePionLineTOF ||
				fPIDResponse->NumberOfSigmasTOF(fCurrentTrack, AliPID::kPion)<fPIDnSigmaBelowPionLineTOF ){
				if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
				return kFALSE;
			}
		}
		if(fHistTOFafter)fHistTOFafter->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasTOF(fCurrentTrack, AliPID::kPion));
	} else if ( fRequireTOF == kTRUE ) {
		if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
		return kFALSE;
	}
	cutIndex++;
		
	if(fHistdEdxCuts)fHistdEdxCuts->Fill(cutIndex);
	if(fHistTPCdEdxafter)fHistTPCdEdxafter->Fill(fCurrentTrack->P(),fPIDResponse->NumberOfSigmasTPC(fCurrentTrack, AliPID::kPion));
	if(fHistTPCdEdxSignalafter)fHistTPCdEdxSignalafter->Fill(fCurrentTrack->P(),TMath::Abs(fCurrentTrack->GetTPCsignal()));
	
	return kTRUE;
}

///________________________________________________________________________
AliVTrack *AliPrimaryPionCuts::GetTrack(AliVEvent * event, Int_t label){
    //Returns pointer to the track with given ESD label
    //(Important for AOD implementation, since Track array in AOD data is different
    //from ESD array, but ESD tracklabels are stored in AOD Tracks)

	AliESDEvent * esdEvent = dynamic_cast<AliESDEvent*>(event);
	if(esdEvent) {
		if(label > event->GetNumberOfTracks() ) return NULL;
		AliESDtrack * track = esdEvent->GetTrack(label);
		return track;		
	} else { 
		for(Int_t ii=0; ii<event->GetNumberOfTracks(); ii++) {
			AliVTrack * track = dynamic_cast<AliVTrack*>(event->GetTrack(ii));		
			if(track) { 
				if(track->GetID() == label) {
					return track;
				}
			}
		}
	}
	cout << "track not found " << label << " " << event->GetNumberOfTracks() << endl;
	return NULL;
}

///________________________________________________________________________
Double_t AliPrimaryPionCuts::GetNFindableClustersTPC(AliESDtrack* lTrack){

	Double_t clsToF=0;
	if ( !fUseCorrectedTPCClsInfo ){
		if(lTrack->GetTPCNclsF()!=0){
			clsToF = (Double_t)lTrack->GetNcls(1)/(Double_t)lTrack->GetTPCNclsF();
		}
	} else {
		clsToF = lTrack->GetTPCClusterInfo(2,0); //NOTE ask friederike	
	}
	return clsToF;

}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::UpdateCutString() {
///Update the cut string (if it has been created yet)

	if(fCutString && fCutString->GetString().Length() == kNCuts) {
		fCutString->SetString(GetCutNumber());
	} else {
		return kFALSE;
	}
	return kTRUE;

}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::InitializeCutsFromCutString(const TString analysisCutSelection ) {
	// Initialize Cuts from a given Cut string

	AliInfo(Form("Set PionCuts Number: %s",analysisCutSelection.Data()));
	
	if(analysisCutSelection.Length()!=kNCuts) {
		AliError(Form("Cut selection has the wrong length! size is %d, number of cuts is %d", analysisCutSelection.Length(), kNCuts));
		return kFALSE;
	}
	if(!analysisCutSelection.IsDigit()){
		AliError("Cut selection contains characters");
		return kFALSE;
	}
	
	const char *cutSelection = analysisCutSelection.Data();
	#define ASSIGNARRAY(i)	fCuts[i] = cutSelection[i] - '0'
	for(Int_t ii=0;ii<kNCuts;ii++){
		ASSIGNARRAY(ii);
	}

	// Set Individual Cuts
	for(Int_t ii=0;ii<kNCuts;ii++){
		if(!SetCut(cutIds(ii),fCuts[ii]))return kFALSE;
	}

	PrintCutsWithValues();
	return kTRUE;
}
///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetCut(cutIds cutID, const Int_t value) {
	///Set individual cut ID

	//cout << "Updating cut  " << fgkCutNames[cutID] << " (" << cutID << ") to " << value << endl;

	switch (cutID) {
		case kEtaCut:
			if( SetEtaCut(value)) {
				fCuts[kEtaCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kClsITSCut:
			if( SetITSClusterCut(value) ) {
				fCuts[kClsITSCut] = value;
				UpdateCutString();
				return kTRUE;		 	
			} else return kFALSE;
		case kClsTPCCut:
			if( SetTPCClusterCut(value)) {
				fCuts[kClsTPCCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kDCACut:
			if( SetDCACut(value)) {
				fCuts[kDCACut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kPtCut: 	
			if( SetPtCut(value)) {
				fCuts[kPtCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kPidedxSigmaITSCut:
			if( SetITSdEdxCutPionLine(value)) { 
				fCuts[kPidedxSigmaITSCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kPidedxSigmaTPCCut:
			if( SetTPCdEdxCutPionLine(value)) { 
				fCuts[kPidedxSigmaTPCCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kPiTOFSigmaPID:
			if( SetTOFPionPIDCut(value)) {
				fCuts[kPiTOFSigmaPID] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kMassCut:
			if( SetMassCut(value)) {
				fCuts[kMassCut] = value;
				UpdateCutString();
				return kTRUE;
			} else return kFALSE;
		case kNCuts:
			cout << "Error:: Cut id out of range"<< endl;
			return kFALSE;
	}
		
	cout << "Error:: Cut id " << cutID << " not recognized "<< endl;
	return kFALSE;
}

///________________________________________________________________________
void AliPrimaryPionCuts::PrintCuts() {
    // Print out current Cut Selection
	for(Int_t ic = 0; ic < kNCuts; ic++) {
		printf("%-30s : %d \n", fgkCutNames[ic], fCuts[ic]);
	}
}

///________________________________________________________________________
void AliPrimaryPionCuts::PrintCutsWithValues() {
   // Print out current Cut Selection with value
	printf("\nCharged Pion cutnumber \n");
	for(Int_t ic = 0; ic < kNCuts; ic++) {
		printf("%d",fCuts[ic]);
	}
	printf("\n\n");

	printf("Acceptance cuts \n");
	if (fDoEtaCut) printf("\t |eta_{pi+-}| < %3.2f  \n", fEtaCut);
	else 	printf("\t none \n");
	printf("Track cuts \n");
	printf("\t %s \n", fStringITSClusterCut.Data());
	printf("\t min N cluster TPC > %3.2f \n", fMinClsTPC);
	printf("\t min N cluster TPC/ findable > %3.2f \n", fMinClsTPCToF);
// 	printf("\t dca > %3.2f \n", fMinClsTPCToF);
// 	"kDCAcut",				// 3
	printf("\t min pT > %3.2f \n", fPtCut);
	printf("PID cuts \n");
	if (fDodEdxSigmaITSCut)printf("\t %3.2f < ITS n_sigma pi < %3.2f \n", fPIDnSigmaBelowPionLineITS, fPIDnSigmaAbovePionLineITS );
	if (fDodEdxSigmaTPCCut)printf("\t %3.2f < TPC n_sigma pi < %3.2f \n", fPIDnSigmaBelowPionLineTPC, fPIDnSigmaAbovePionLineTPC );
	if (fDoTOFsigmaCut)printf("\t %3.2f < TOF n_sigma pi < %3.2f \n", fPIDnSigmaBelowPionLineTOF, fPIDnSigmaAbovePionLineTOF );
	if (fDoMassCut) printf("two-pion mass cut < %3.2f \n", fMassCut);
	printf("\n\n");
}



///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetITSdEdxCutPionLine(Int_t ededxSigmaCut){ 
	switch(ededxSigmaCut){
		case 0: 
			fDodEdxSigmaITSCut = kFALSE;
			fPIDnSigmaBelowPionLineITS=-100;
			fPIDnSigmaAbovePionLineITS= 100;
			break;
		case 1: // -10,10
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-10;
			fPIDnSigmaAbovePionLineITS=10;
			break;
		case 2: // -6,7
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-6;
			fPIDnSigmaAbovePionLineITS=7;
			break;
		case 3: // -5,5
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-5;
			fPIDnSigmaAbovePionLineITS=5;
			break;
		case 4: // -4,5
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-4;
			fPIDnSigmaAbovePionLineITS=5;
			break;
		case 5: // -3,5
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-3;
			fPIDnSigmaAbovePionLineITS=5;
			break;
		case 6: // -4,4
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-4;
			fPIDnSigmaAbovePionLineITS=4;
			break;
		case 7: // -2.5,4
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-2.5;
			fPIDnSigmaAbovePionLineITS=4;
			break;
		case 8: // -2,3.5
			fDodEdxSigmaITSCut = kTRUE;
			fPIDnSigmaBelowPionLineITS=-2;
			fPIDnSigmaAbovePionLineITS=3.5;
			break;
		default:
			cout<<"Warning: ITSdEdxCutPionLine not defined"<<ededxSigmaCut<<endl;
			return kFALSE;
		
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetTPCdEdxCutPionLine(Int_t ededxSigmaCut){
	switch(ededxSigmaCut){
		case 0: 
			fDodEdxSigmaTPCCut = kFALSE;
			fPIDnSigmaBelowPionLineTPC=-10;
			fPIDnSigmaAbovePionLineTPC=10;
			break;
		case 1: // -10,10
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-10;
			fPIDnSigmaAbovePionLineTPC=10;
			break;
		case 2: // -6,7
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-6;
			fPIDnSigmaAbovePionLineTPC=7;
			break;
		case 3: // -5,5
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-5;
			fPIDnSigmaAbovePionLineTPC=5;
			break;
		case 4: // -4,5
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-4;
			fPIDnSigmaAbovePionLineTPC=5;
			break;	
		case 5: // -4,4
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-4;
			fPIDnSigmaAbovePionLineTPC=4;
			break;
		case 6: // -3,4
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-3;
			fPIDnSigmaAbovePionLineTPC=4;
			break;
		case 7: // -3,3
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-3;
			fPIDnSigmaAbovePionLineTPC=3;
			break;
		case 8: // -2,3.
			fDodEdxSigmaTPCCut = kTRUE;
			fPIDnSigmaBelowPionLineTPC=-2;
			fPIDnSigmaAbovePionLineTPC=3.;
			break;
		default:
			cout<<"Warning: TPCdEdxCutPionLine not defined"<<ededxSigmaCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetITSClusterCut(Int_t clsITSCut){
	if( !fEsdTrackCuts ) {
		cout<<"Warning: AliESDtrackCut is not initialized "<<endl;
		return kFALSE;
	}

	switch(clsITSCut){
		case 0: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kOff);
			fStringITSClusterCut= "no SPD cluster requirement";
			break;
		case 1: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
			fStringITSClusterCut= "first SPD cluster required";
			break;  //1 hit first layer of SPD
		case 2: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
			fStringITSClusterCut= "first or second SPD cluster required";
			break; //1 hit in any layer of SPD
		case 3: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
			fEsdTrackCuts->SetMinNClustersITS(4);
			fStringITSClusterCut= "first SPD cluster required, min number of ITS clusters = 4";
			// 4 hits in total in the ITS. At least 1 hit in the first layer of SPD  
			break;
		case 4: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
			fEsdTrackCuts->SetMinNClustersITS(3);
			fStringITSClusterCut= "first or second SPD cluster required, min number of ITS clusters = 3";
			// 3 hits in total in the ITS. At least 1 hit in any layer of SPD
			break;
		case 5: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
			fEsdTrackCuts->SetMinNClustersITS(4);
			fStringITSClusterCut= "first or second SPD cluster required, min number of ITS clusters = 4";
			// 4 hits in total in the ITS. At least 1 hit in any layer of SPD
			break;
		case 6: 
			fEsdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
			fEsdTrackCuts->SetMinNClustersITS(5);
			fStringITSClusterCut= "first or second SPD cluster required, min number of ITS clusters = 5";
			// 5 hits in total in the ITS. At least 1 hit in any layer of SPD
			break;
		default:
			cout<<"Warning: clsITSCut not defined "<<clsITSCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetTPCClusterCut(Int_t clsTPCCut){  
	switch(clsTPCCut){
		case 0: // 0
			fMinClsTPC= 0.;
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			break;
		case 1:  // 70
			fMinClsTPC= 70.;
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			break;
		case 2:  // 80
			fMinClsTPC= 80.;
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			break;
		case 3:  // 100
			fMinClsTPC= 100.;
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			break;
		case 4:  // 0% of findable clusters
				fMinClsTPC= 70.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.0;
			fUseCorrectedTPCClsInfo=0;
			break;
		case 5:  // 35% of findable clusters
			fMinClsTPC = 70.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.35;
			fUseCorrectedTPCClsInfo=0;
			break;
		case 6:  // 60% of findable clusters
			fMinClsTPC= 70.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.6;
			fUseCorrectedTPCClsInfo=0;
			break;
		case 7:  // 70% of findable clusters
			fMinClsTPC= 70.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.7;
			fUseCorrectedTPCClsInfo=0;
			break;
		case 8: fMinClsTPC = 0.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.35;
			fUseCorrectedTPCClsInfo=0;
			break;
		case 9:  // 35% of findable clusters
			fMinClsTPC = 70.;  
			fEsdTrackCuts->SetMinNClustersTPC(fMinClsTPC);
			fMinClsTPCToF= 0.35;
			fUseCorrectedTPCClsInfo=1;
			break;
		
		default:
			cout<<"Warning: clsTPCCut not defined "<<clsTPCCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetEtaCut(Int_t etaCut){ 
	// Set eta Cut
	switch(etaCut){
		case 0: 
			fEtaCut = 100.;
			fDoEtaCut = kFALSE;
			break;
		case 1:	// 1.4
			fEtaCut	= 1.4;
			fDoEtaCut = kTRUE;
			break;
		case 2:	// 1.2
			fEtaCut	= 1.2;
			fDoEtaCut = kTRUE;
			break;
		case 3: // 0.9
			fEtaCut	= 0.9;
			fDoEtaCut = kTRUE;
			break;
		case 4: // 0.8
			fEtaCut	= 0.8;
			fDoEtaCut = kTRUE;
			break;
		case 5: // 0.75
			fEtaCut	= 0.75;
			fDoEtaCut = kTRUE;
			break;
		case 6: //0.6
			fEtaCut = 0.6; //changed from 0.4 to 0.6 2013.06.10
			fDoEtaCut = kTRUE;
			break;
		case 7: //0.5
			fEtaCut = 0.5; //changed from 0.3 to 0.5 2013.06.10
			fDoEtaCut = kTRUE;
			break;
		case 8: 
			fEtaCut = 0.4;
			fDoEtaCut = kTRUE;
			break;
		default:
			cout<<"Warning: EtaCut not defined "<<etaCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetPtCut(Int_t ptCut){ 
	switch(ptCut){	  
		case 0: 
			fPtCut = 0.075;		
			break;
		case 1:	 // 0.1
			fPtCut	= 0.1; 	
			break;
		case 2:	 // 0.125 GeV
			fPtCut	= 0.125;		
			break;
		case 3: // 0.15 GeV
			fPtCut	= 0.15;
			break;
		default:
			cout<<"Warning: PtCut not defined "<<ptCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}


///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetDCACut(Int_t dcaCut)
{ 
	// Set DCA Cut
	if( !fEsdTrackCuts ) {
		cout<<"Warning: AliESDtrackCut is not initialized "<<endl;
		return kFALSE;
	}
  
	switch(dcaCut){	  
		case 0: 
			//Open cuts//
			fEsdTrackCuts->SetMaxDCAToVertexZ(1000);
			fEsdTrackCuts->SetMaxDCAToVertexXY(1000);
			fEsdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
			break;
		case 1: 
			fEsdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
			fEsdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
			break;
		case 2: 
			fEsdTrackCuts->SetMaxDCAToVertexZ(2);
			fEsdTrackCuts->SetMaxDCAToVertexXY(1);
			fEsdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
			break; 
		default:
			cout<<"Warning: dcaCut not defined "<<dcaCut<<endl;
			return kFALSE;
	}
	return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetTOFPionPIDCut(Int_t TOFelectronPID){
    // Set Cut
	switch(TOFelectronPID){ 
		case 0: // no cut
			fRequireTOF = kFALSE;
			fUseTOFpid = kFALSE;
			fPIDnSigmaBelowPionLineTOF=-100;
			fPIDnSigmaAbovePionLineTOF=100;
			break;
		case 1: // -7,7
			fRequireTOF = kFALSE;
			fUseTOFpid = kTRUE;
			fPIDnSigmaBelowPionLineTOF=-7;
			fPIDnSigmaAbovePionLineTOF=7;
			break;
		case 2: // -5,5
			fRequireTOF = kFALSE;
			fUseTOFpid = kTRUE;
			fPIDnSigmaBelowPionLineTOF=-5;
			fPIDnSigmaAbovePionLineTOF=5;
			break;
		case 3: // -3,5
			fRequireTOF = kFALSE;
			fUseTOFpid = kTRUE;
			fPIDnSigmaBelowPionLineTOF=-3;
			fPIDnSigmaAbovePionLineTOF=5;
			break;
		case 4: // -2,3
			fRequireTOF = kFALSE;
			fUseTOFpid = kTRUE;
			fPIDnSigmaBelowPionLineTOF=-2;
			fPIDnSigmaAbovePionLineTOF=3;
			break;
		case 5: // -3, 3 TOF mandatory
			fRequireTOF = kTRUE;
			fUseTOFpid  = kTRUE;
			fPIDnSigmaBelowPionLineTOF= -3;
			fPIDnSigmaAbovePionLineTOF=  3;
			break;
		default:
			cout<<"Warning: TOFPionCut not defined "<<TOFelectronPID<<endl;
		return kFALSE;
    } 
    return kTRUE;
}

///________________________________________________________________________
Bool_t AliPrimaryPionCuts::SetMassCut(Int_t massCut){
    // Set Cut
	switch(massCut){ 
		case 0: // no cut
			fDoMassCut = kFALSE;
			fMassCut = 10;
			break;
		case 1: // cut at 1 GeV/c^2
			fDoMassCut = kTRUE;
			fMassCut = 1;
			break;
		case 2: // cut at 0.7 GeV/c^2
			fDoMassCut = kTRUE;
			fMassCut = 0.75;
			break;
		case 3: // cut at 0.6 GeV/c^2
			fDoMassCut = kTRUE;
			fMassCut = 0.6;
			break;
		case 4: // cut at eta mass
			fDoMassCut = kTRUE;
			fMassCut = 0.547853;
			break;
		case 5: // cut at 0.5 GeV/c^2
			fDoMassCut = kTRUE;
			fMassCut = 0.5;
			break;
		default:
			cout<<"Warning: MassCut not defined "<<massCut<<endl;
		return kFALSE;
    } 
    return kTRUE;
}


///________________________________________________________________________
TString AliPrimaryPionCuts::GetCutNumber(){
	// returns TString with current cut number
	TString a(kNCuts);
	for(Int_t ii=0;ii<kNCuts;ii++){
		a.Append(Form("%d",fCuts[ii]));
	}
	return a;
}


///________________________________________________________________________
AliPrimaryPionCuts* AliPrimaryPionCuts::GetStandardCuts2010PbPb(){
    //Create and return standard 2010 PbPb cuts
    AliPrimaryPionCuts *cuts=new AliPrimaryPionCuts("StandardCuts2010PbPb","StandardCuts2010PbPb");
    if(!cuts->InitializeCutsFromCutString("000000400")){
		cout<<"Warning: Initialization of Standardcuts2010PbPb failed"<<endl;	
	}
    return cuts;
}

///________________________________________________________________________
AliPrimaryPionCuts* AliPrimaryPionCuts::GetStandardCuts2010pp(){
    //Create and return standard 2010 PbPb cuts
    AliPrimaryPionCuts *cuts=new AliPrimaryPionCuts("StandardCuts2010pp","StandardCuts2010pp");
                                          
    if(!cuts->InitializeCutsFromCutString("000000400")){
		cout<<"Warning: Initialization of Standardcuts2010pp failed"<<endl;
	}
    return cuts;
}

 AliPrimaryPionCuts.cxx:1
 AliPrimaryPionCuts.cxx:2
 AliPrimaryPionCuts.cxx:3
 AliPrimaryPionCuts.cxx:4
 AliPrimaryPionCuts.cxx:5
 AliPrimaryPionCuts.cxx:6
 AliPrimaryPionCuts.cxx:7
 AliPrimaryPionCuts.cxx:8
 AliPrimaryPionCuts.cxx:9
 AliPrimaryPionCuts.cxx:10
 AliPrimaryPionCuts.cxx:11
 AliPrimaryPionCuts.cxx:12
 AliPrimaryPionCuts.cxx:13
 AliPrimaryPionCuts.cxx:14
 AliPrimaryPionCuts.cxx:15
 AliPrimaryPionCuts.cxx:16
 AliPrimaryPionCuts.cxx:17
 AliPrimaryPionCuts.cxx:18
 AliPrimaryPionCuts.cxx:19
 AliPrimaryPionCuts.cxx:20
 AliPrimaryPionCuts.cxx:21
 AliPrimaryPionCuts.cxx:22
 AliPrimaryPionCuts.cxx:23
 AliPrimaryPionCuts.cxx:24
 AliPrimaryPionCuts.cxx:25
 AliPrimaryPionCuts.cxx:26
 AliPrimaryPionCuts.cxx:27
 AliPrimaryPionCuts.cxx:28
 AliPrimaryPionCuts.cxx:29
 AliPrimaryPionCuts.cxx:30
 AliPrimaryPionCuts.cxx:31
 AliPrimaryPionCuts.cxx:32
 AliPrimaryPionCuts.cxx:33
 AliPrimaryPionCuts.cxx:34
 AliPrimaryPionCuts.cxx:35
 AliPrimaryPionCuts.cxx:36
 AliPrimaryPionCuts.cxx:37
 AliPrimaryPionCuts.cxx:38
 AliPrimaryPionCuts.cxx:39
 AliPrimaryPionCuts.cxx:40
 AliPrimaryPionCuts.cxx:41
 AliPrimaryPionCuts.cxx:42
 AliPrimaryPionCuts.cxx:43
 AliPrimaryPionCuts.cxx:44
 AliPrimaryPionCuts.cxx:45
 AliPrimaryPionCuts.cxx:46
 AliPrimaryPionCuts.cxx:47
 AliPrimaryPionCuts.cxx:48
 AliPrimaryPionCuts.cxx:49
 AliPrimaryPionCuts.cxx:50
 AliPrimaryPionCuts.cxx:51
 AliPrimaryPionCuts.cxx:52
 AliPrimaryPionCuts.cxx:53
 AliPrimaryPionCuts.cxx:54
 AliPrimaryPionCuts.cxx:55
 AliPrimaryPionCuts.cxx:56
 AliPrimaryPionCuts.cxx:57
 AliPrimaryPionCuts.cxx:58
 AliPrimaryPionCuts.cxx:59
 AliPrimaryPionCuts.cxx:60
 AliPrimaryPionCuts.cxx:61
 AliPrimaryPionCuts.cxx:62
 AliPrimaryPionCuts.cxx:63
 AliPrimaryPionCuts.cxx:64
 AliPrimaryPionCuts.cxx:65
 AliPrimaryPionCuts.cxx:66
 AliPrimaryPionCuts.cxx:67
 AliPrimaryPionCuts.cxx:68
 AliPrimaryPionCuts.cxx:69
 AliPrimaryPionCuts.cxx:70
 AliPrimaryPionCuts.cxx:71
 AliPrimaryPionCuts.cxx:72
 AliPrimaryPionCuts.cxx:73
 AliPrimaryPionCuts.cxx:74
 AliPrimaryPionCuts.cxx:75
 AliPrimaryPionCuts.cxx:76
 AliPrimaryPionCuts.cxx:77
 AliPrimaryPionCuts.cxx:78
 AliPrimaryPionCuts.cxx:79
 AliPrimaryPionCuts.cxx:80
 AliPrimaryPionCuts.cxx:81
 AliPrimaryPionCuts.cxx:82
 AliPrimaryPionCuts.cxx:83
 AliPrimaryPionCuts.cxx:84
 AliPrimaryPionCuts.cxx:85
 AliPrimaryPionCuts.cxx:86
 AliPrimaryPionCuts.cxx:87
 AliPrimaryPionCuts.cxx:88
 AliPrimaryPionCuts.cxx:89
 AliPrimaryPionCuts.cxx:90
 AliPrimaryPionCuts.cxx:91
 AliPrimaryPionCuts.cxx:92
 AliPrimaryPionCuts.cxx:93
 AliPrimaryPionCuts.cxx:94
 AliPrimaryPionCuts.cxx:95
 AliPrimaryPionCuts.cxx:96
 AliPrimaryPionCuts.cxx:97
 AliPrimaryPionCuts.cxx:98
 AliPrimaryPionCuts.cxx:99
 AliPrimaryPionCuts.cxx:100
 AliPrimaryPionCuts.cxx:101
 AliPrimaryPionCuts.cxx:102
 AliPrimaryPionCuts.cxx:103
 AliPrimaryPionCuts.cxx:104
 AliPrimaryPionCuts.cxx:105
 AliPrimaryPionCuts.cxx:106
 AliPrimaryPionCuts.cxx:107
 AliPrimaryPionCuts.cxx:108
 AliPrimaryPionCuts.cxx:109
 AliPrimaryPionCuts.cxx:110
 AliPrimaryPionCuts.cxx:111
 AliPrimaryPionCuts.cxx:112
 AliPrimaryPionCuts.cxx:113
 AliPrimaryPionCuts.cxx:114
 AliPrimaryPionCuts.cxx:115
 AliPrimaryPionCuts.cxx:116
 AliPrimaryPionCuts.cxx:117
 AliPrimaryPionCuts.cxx:118
 AliPrimaryPionCuts.cxx:119
 AliPrimaryPionCuts.cxx:120
 AliPrimaryPionCuts.cxx:121
 AliPrimaryPionCuts.cxx:122
 AliPrimaryPionCuts.cxx:123
 AliPrimaryPionCuts.cxx:124
 AliPrimaryPionCuts.cxx:125
 AliPrimaryPionCuts.cxx:126
 AliPrimaryPionCuts.cxx:127
 AliPrimaryPionCuts.cxx:128
 AliPrimaryPionCuts.cxx:129
 AliPrimaryPionCuts.cxx:130
 AliPrimaryPionCuts.cxx:131
 AliPrimaryPionCuts.cxx:132
 AliPrimaryPionCuts.cxx:133
 AliPrimaryPionCuts.cxx:134
 AliPrimaryPionCuts.cxx:135
 AliPrimaryPionCuts.cxx:136
 AliPrimaryPionCuts.cxx:137
 AliPrimaryPionCuts.cxx:138
 AliPrimaryPionCuts.cxx:139
 AliPrimaryPionCuts.cxx:140
 AliPrimaryPionCuts.cxx:141
 AliPrimaryPionCuts.cxx:142
 AliPrimaryPionCuts.cxx:143
 AliPrimaryPionCuts.cxx:144
 AliPrimaryPionCuts.cxx:145
 AliPrimaryPionCuts.cxx:146
 AliPrimaryPionCuts.cxx:147
 AliPrimaryPionCuts.cxx:148
 AliPrimaryPionCuts.cxx:149
 AliPrimaryPionCuts.cxx:150
 AliPrimaryPionCuts.cxx:151
 AliPrimaryPionCuts.cxx:152
 AliPrimaryPionCuts.cxx:153
 AliPrimaryPionCuts.cxx:154
 AliPrimaryPionCuts.cxx:155
 AliPrimaryPionCuts.cxx:156
 AliPrimaryPionCuts.cxx:157
 AliPrimaryPionCuts.cxx:158
 AliPrimaryPionCuts.cxx:159
 AliPrimaryPionCuts.cxx:160
 AliPrimaryPionCuts.cxx:161
 AliPrimaryPionCuts.cxx:162
 AliPrimaryPionCuts.cxx:163
 AliPrimaryPionCuts.cxx:164
 AliPrimaryPionCuts.cxx:165
 AliPrimaryPionCuts.cxx:166
 AliPrimaryPionCuts.cxx:167
 AliPrimaryPionCuts.cxx:168
 AliPrimaryPionCuts.cxx:169
 AliPrimaryPionCuts.cxx:170
 AliPrimaryPionCuts.cxx:171
 AliPrimaryPionCuts.cxx:172
 AliPrimaryPionCuts.cxx:173
 AliPrimaryPionCuts.cxx:174
 AliPrimaryPionCuts.cxx:175
 AliPrimaryPionCuts.cxx:176
 AliPrimaryPionCuts.cxx:177
 AliPrimaryPionCuts.cxx:178
 AliPrimaryPionCuts.cxx:179
 AliPrimaryPionCuts.cxx:180
 AliPrimaryPionCuts.cxx:181
 AliPrimaryPionCuts.cxx:182
 AliPrimaryPionCuts.cxx:183
 AliPrimaryPionCuts.cxx:184
 AliPrimaryPionCuts.cxx:185
 AliPrimaryPionCuts.cxx:186
 AliPrimaryPionCuts.cxx:187
 AliPrimaryPionCuts.cxx:188
 AliPrimaryPionCuts.cxx:189
 AliPrimaryPionCuts.cxx:190
 AliPrimaryPionCuts.cxx:191
 AliPrimaryPionCuts.cxx:192
 AliPrimaryPionCuts.cxx:193
 AliPrimaryPionCuts.cxx:194
 AliPrimaryPionCuts.cxx:195
 AliPrimaryPionCuts.cxx:196
 AliPrimaryPionCuts.cxx:197
 AliPrimaryPionCuts.cxx:198
 AliPrimaryPionCuts.cxx:199
 AliPrimaryPionCuts.cxx:200
 AliPrimaryPionCuts.cxx:201
 AliPrimaryPionCuts.cxx:202
 AliPrimaryPionCuts.cxx:203
 AliPrimaryPionCuts.cxx:204
 AliPrimaryPionCuts.cxx:205
 AliPrimaryPionCuts.cxx:206
 AliPrimaryPionCuts.cxx:207
 AliPrimaryPionCuts.cxx:208
 AliPrimaryPionCuts.cxx:209
 AliPrimaryPionCuts.cxx:210
 AliPrimaryPionCuts.cxx:211
 AliPrimaryPionCuts.cxx:212
 AliPrimaryPionCuts.cxx:213
 AliPrimaryPionCuts.cxx:214
 AliPrimaryPionCuts.cxx:215
 AliPrimaryPionCuts.cxx:216
 AliPrimaryPionCuts.cxx:217
 AliPrimaryPionCuts.cxx:218
 AliPrimaryPionCuts.cxx:219
 AliPrimaryPionCuts.cxx:220
 AliPrimaryPionCuts.cxx:221
 AliPrimaryPionCuts.cxx:222
 AliPrimaryPionCuts.cxx:223
 AliPrimaryPionCuts.cxx:224
 AliPrimaryPionCuts.cxx:225
 AliPrimaryPionCuts.cxx:226
 AliPrimaryPionCuts.cxx:227
 AliPrimaryPionCuts.cxx:228
 AliPrimaryPionCuts.cxx:229
 AliPrimaryPionCuts.cxx:230
 AliPrimaryPionCuts.cxx:231
 AliPrimaryPionCuts.cxx:232
 AliPrimaryPionCuts.cxx:233
 AliPrimaryPionCuts.cxx:234
 AliPrimaryPionCuts.cxx:235
 AliPrimaryPionCuts.cxx:236
 AliPrimaryPionCuts.cxx:237
 AliPrimaryPionCuts.cxx:238
 AliPrimaryPionCuts.cxx:239
 AliPrimaryPionCuts.cxx:240
 AliPrimaryPionCuts.cxx:241
 AliPrimaryPionCuts.cxx:242
 AliPrimaryPionCuts.cxx:243
 AliPrimaryPionCuts.cxx:244
 AliPrimaryPionCuts.cxx:245
 AliPrimaryPionCuts.cxx:246
 AliPrimaryPionCuts.cxx:247
 AliPrimaryPionCuts.cxx:248
 AliPrimaryPionCuts.cxx:249
 AliPrimaryPionCuts.cxx:250
 AliPrimaryPionCuts.cxx:251
 AliPrimaryPionCuts.cxx:252
 AliPrimaryPionCuts.cxx:253
 AliPrimaryPionCuts.cxx:254
 AliPrimaryPionCuts.cxx:255
 AliPrimaryPionCuts.cxx:256
 AliPrimaryPionCuts.cxx:257
 AliPrimaryPionCuts.cxx:258
 AliPrimaryPionCuts.cxx:259
 AliPrimaryPionCuts.cxx:260
 AliPrimaryPionCuts.cxx:261
 AliPrimaryPionCuts.cxx:262
 AliPrimaryPionCuts.cxx:263
 AliPrimaryPionCuts.cxx:264
 AliPrimaryPionCuts.cxx:265
 AliPrimaryPionCuts.cxx:266
 AliPrimaryPionCuts.cxx:267
 AliPrimaryPionCuts.cxx:268
 AliPrimaryPionCuts.cxx:269
 AliPrimaryPionCuts.cxx:270
 AliPrimaryPionCuts.cxx:271
 AliPrimaryPionCuts.cxx:272
 AliPrimaryPionCuts.cxx:273
 AliPrimaryPionCuts.cxx:274
 AliPrimaryPionCuts.cxx:275
 AliPrimaryPionCuts.cxx:276
 AliPrimaryPionCuts.cxx:277
 AliPrimaryPionCuts.cxx:278
 AliPrimaryPionCuts.cxx:279
 AliPrimaryPionCuts.cxx:280
 AliPrimaryPionCuts.cxx:281
 AliPrimaryPionCuts.cxx:282
 AliPrimaryPionCuts.cxx:283
 AliPrimaryPionCuts.cxx:284
 AliPrimaryPionCuts.cxx:285
 AliPrimaryPionCuts.cxx:286
 AliPrimaryPionCuts.cxx:287
 AliPrimaryPionCuts.cxx:288
 AliPrimaryPionCuts.cxx:289
 AliPrimaryPionCuts.cxx:290
 AliPrimaryPionCuts.cxx:291
 AliPrimaryPionCuts.cxx:292
 AliPrimaryPionCuts.cxx:293
 AliPrimaryPionCuts.cxx:294
 AliPrimaryPionCuts.cxx:295
 AliPrimaryPionCuts.cxx:296
 AliPrimaryPionCuts.cxx:297
 AliPrimaryPionCuts.cxx:298
 AliPrimaryPionCuts.cxx:299
 AliPrimaryPionCuts.cxx:300
 AliPrimaryPionCuts.cxx:301
 AliPrimaryPionCuts.cxx:302
 AliPrimaryPionCuts.cxx:303
 AliPrimaryPionCuts.cxx:304
 AliPrimaryPionCuts.cxx:305
 AliPrimaryPionCuts.cxx:306
 AliPrimaryPionCuts.cxx:307
 AliPrimaryPionCuts.cxx:308
 AliPrimaryPionCuts.cxx:309
 AliPrimaryPionCuts.cxx:310
 AliPrimaryPionCuts.cxx:311
 AliPrimaryPionCuts.cxx:312
 AliPrimaryPionCuts.cxx:313
 AliPrimaryPionCuts.cxx:314
 AliPrimaryPionCuts.cxx:315
 AliPrimaryPionCuts.cxx:316
 AliPrimaryPionCuts.cxx:317
 AliPrimaryPionCuts.cxx:318
 AliPrimaryPionCuts.cxx:319
 AliPrimaryPionCuts.cxx:320
 AliPrimaryPionCuts.cxx:321
 AliPrimaryPionCuts.cxx:322
 AliPrimaryPionCuts.cxx:323
 AliPrimaryPionCuts.cxx:324
 AliPrimaryPionCuts.cxx:325
 AliPrimaryPionCuts.cxx:326
 AliPrimaryPionCuts.cxx:327
 AliPrimaryPionCuts.cxx:328
 AliPrimaryPionCuts.cxx:329
 AliPrimaryPionCuts.cxx:330
 AliPrimaryPionCuts.cxx:331
 AliPrimaryPionCuts.cxx:332
 AliPrimaryPionCuts.cxx:333
 AliPrimaryPionCuts.cxx:334
 AliPrimaryPionCuts.cxx:335
 AliPrimaryPionCuts.cxx:336
 AliPrimaryPionCuts.cxx:337
 AliPrimaryPionCuts.cxx:338
 AliPrimaryPionCuts.cxx:339
 AliPrimaryPionCuts.cxx:340
 AliPrimaryPionCuts.cxx:341
 AliPrimaryPionCuts.cxx:342
 AliPrimaryPionCuts.cxx:343
 AliPrimaryPionCuts.cxx:344
 AliPrimaryPionCuts.cxx:345
 AliPrimaryPionCuts.cxx:346
 AliPrimaryPionCuts.cxx:347
 AliPrimaryPionCuts.cxx:348
 AliPrimaryPionCuts.cxx:349
 AliPrimaryPionCuts.cxx:350
 AliPrimaryPionCuts.cxx:351
 AliPrimaryPionCuts.cxx:352
 AliPrimaryPionCuts.cxx:353
 AliPrimaryPionCuts.cxx:354
 AliPrimaryPionCuts.cxx:355
 AliPrimaryPionCuts.cxx:356
 AliPrimaryPionCuts.cxx:357
 AliPrimaryPionCuts.cxx:358
 AliPrimaryPionCuts.cxx:359
 AliPrimaryPionCuts.cxx:360
 AliPrimaryPionCuts.cxx:361
 AliPrimaryPionCuts.cxx:362
 AliPrimaryPionCuts.cxx:363
 AliPrimaryPionCuts.cxx:364
 AliPrimaryPionCuts.cxx:365
 AliPrimaryPionCuts.cxx:366
 AliPrimaryPionCuts.cxx:367
 AliPrimaryPionCuts.cxx:368
 AliPrimaryPionCuts.cxx:369
 AliPrimaryPionCuts.cxx:370
 AliPrimaryPionCuts.cxx:371
 AliPrimaryPionCuts.cxx:372
 AliPrimaryPionCuts.cxx:373
 AliPrimaryPionCuts.cxx:374
 AliPrimaryPionCuts.cxx:375
 AliPrimaryPionCuts.cxx:376
 AliPrimaryPionCuts.cxx:377
 AliPrimaryPionCuts.cxx:378
 AliPrimaryPionCuts.cxx:379
 AliPrimaryPionCuts.cxx:380
 AliPrimaryPionCuts.cxx:381
 AliPrimaryPionCuts.cxx:382
 AliPrimaryPionCuts.cxx:383
 AliPrimaryPionCuts.cxx:384
 AliPrimaryPionCuts.cxx:385
 AliPrimaryPionCuts.cxx:386
 AliPrimaryPionCuts.cxx:387
 AliPrimaryPionCuts.cxx:388
 AliPrimaryPionCuts.cxx:389
 AliPrimaryPionCuts.cxx:390
 AliPrimaryPionCuts.cxx:391
 AliPrimaryPionCuts.cxx:392
 AliPrimaryPionCuts.cxx:393
 AliPrimaryPionCuts.cxx:394
 AliPrimaryPionCuts.cxx:395
 AliPrimaryPionCuts.cxx:396
 AliPrimaryPionCuts.cxx:397
 AliPrimaryPionCuts.cxx:398
 AliPrimaryPionCuts.cxx:399
 AliPrimaryPionCuts.cxx:400
 AliPrimaryPionCuts.cxx:401
 AliPrimaryPionCuts.cxx:402
 AliPrimaryPionCuts.cxx:403
 AliPrimaryPionCuts.cxx:404
 AliPrimaryPionCuts.cxx:405
 AliPrimaryPionCuts.cxx:406
 AliPrimaryPionCuts.cxx:407
 AliPrimaryPionCuts.cxx:408
 AliPrimaryPionCuts.cxx:409
 AliPrimaryPionCuts.cxx:410
 AliPrimaryPionCuts.cxx:411
 AliPrimaryPionCuts.cxx:412
 AliPrimaryPionCuts.cxx:413
 AliPrimaryPionCuts.cxx:414
 AliPrimaryPionCuts.cxx:415
 AliPrimaryPionCuts.cxx:416
 AliPrimaryPionCuts.cxx:417
 AliPrimaryPionCuts.cxx:418
 AliPrimaryPionCuts.cxx:419
 AliPrimaryPionCuts.cxx:420
 AliPrimaryPionCuts.cxx:421
 AliPrimaryPionCuts.cxx:422
 AliPrimaryPionCuts.cxx:423
 AliPrimaryPionCuts.cxx:424
 AliPrimaryPionCuts.cxx:425
 AliPrimaryPionCuts.cxx:426
 AliPrimaryPionCuts.cxx:427
 AliPrimaryPionCuts.cxx:428
 AliPrimaryPionCuts.cxx:429
 AliPrimaryPionCuts.cxx:430
 AliPrimaryPionCuts.cxx:431
 AliPrimaryPionCuts.cxx:432
 AliPrimaryPionCuts.cxx:433
 AliPrimaryPionCuts.cxx:434
 AliPrimaryPionCuts.cxx:435
 AliPrimaryPionCuts.cxx:436
 AliPrimaryPionCuts.cxx:437
 AliPrimaryPionCuts.cxx:438
 AliPrimaryPionCuts.cxx:439
 AliPrimaryPionCuts.cxx:440
 AliPrimaryPionCuts.cxx:441
 AliPrimaryPionCuts.cxx:442
 AliPrimaryPionCuts.cxx:443
 AliPrimaryPionCuts.cxx:444
 AliPrimaryPionCuts.cxx:445
 AliPrimaryPionCuts.cxx:446
 AliPrimaryPionCuts.cxx:447
 AliPrimaryPionCuts.cxx:448
 AliPrimaryPionCuts.cxx:449
 AliPrimaryPionCuts.cxx:450
 AliPrimaryPionCuts.cxx:451
 AliPrimaryPionCuts.cxx:452
 AliPrimaryPionCuts.cxx:453
 AliPrimaryPionCuts.cxx:454
 AliPrimaryPionCuts.cxx:455
 AliPrimaryPionCuts.cxx:456
 AliPrimaryPionCuts.cxx:457
 AliPrimaryPionCuts.cxx:458
 AliPrimaryPionCuts.cxx:459
 AliPrimaryPionCuts.cxx:460
 AliPrimaryPionCuts.cxx:461
 AliPrimaryPionCuts.cxx:462
 AliPrimaryPionCuts.cxx:463
 AliPrimaryPionCuts.cxx:464
 AliPrimaryPionCuts.cxx:465
 AliPrimaryPionCuts.cxx:466
 AliPrimaryPionCuts.cxx:467
 AliPrimaryPionCuts.cxx:468
 AliPrimaryPionCuts.cxx:469
 AliPrimaryPionCuts.cxx:470
 AliPrimaryPionCuts.cxx:471
 AliPrimaryPionCuts.cxx:472
 AliPrimaryPionCuts.cxx:473
 AliPrimaryPionCuts.cxx:474
 AliPrimaryPionCuts.cxx:475
 AliPrimaryPionCuts.cxx:476
 AliPrimaryPionCuts.cxx:477
 AliPrimaryPionCuts.cxx:478
 AliPrimaryPionCuts.cxx:479
 AliPrimaryPionCuts.cxx:480
 AliPrimaryPionCuts.cxx:481
 AliPrimaryPionCuts.cxx:482
 AliPrimaryPionCuts.cxx:483
 AliPrimaryPionCuts.cxx:484
 AliPrimaryPionCuts.cxx:485
 AliPrimaryPionCuts.cxx:486
 AliPrimaryPionCuts.cxx:487
 AliPrimaryPionCuts.cxx:488
 AliPrimaryPionCuts.cxx:489
 AliPrimaryPionCuts.cxx:490
 AliPrimaryPionCuts.cxx:491
 AliPrimaryPionCuts.cxx:492
 AliPrimaryPionCuts.cxx:493
 AliPrimaryPionCuts.cxx:494
 AliPrimaryPionCuts.cxx:495
 AliPrimaryPionCuts.cxx:496
 AliPrimaryPionCuts.cxx:497
 AliPrimaryPionCuts.cxx:498
 AliPrimaryPionCuts.cxx:499
 AliPrimaryPionCuts.cxx:500
 AliPrimaryPionCuts.cxx:501
 AliPrimaryPionCuts.cxx:502
 AliPrimaryPionCuts.cxx:503
 AliPrimaryPionCuts.cxx:504
 AliPrimaryPionCuts.cxx:505
 AliPrimaryPionCuts.cxx:506
 AliPrimaryPionCuts.cxx:507
 AliPrimaryPionCuts.cxx:508
 AliPrimaryPionCuts.cxx:509
 AliPrimaryPionCuts.cxx:510
 AliPrimaryPionCuts.cxx:511
 AliPrimaryPionCuts.cxx:512
 AliPrimaryPionCuts.cxx:513
 AliPrimaryPionCuts.cxx:514
 AliPrimaryPionCuts.cxx:515
 AliPrimaryPionCuts.cxx:516
 AliPrimaryPionCuts.cxx:517
 AliPrimaryPionCuts.cxx:518
 AliPrimaryPionCuts.cxx:519
 AliPrimaryPionCuts.cxx:520
 AliPrimaryPionCuts.cxx:521
 AliPrimaryPionCuts.cxx:522
 AliPrimaryPionCuts.cxx:523
 AliPrimaryPionCuts.cxx:524
 AliPrimaryPionCuts.cxx:525
 AliPrimaryPionCuts.cxx:526
 AliPrimaryPionCuts.cxx:527
 AliPrimaryPionCuts.cxx:528
 AliPrimaryPionCuts.cxx:529
 AliPrimaryPionCuts.cxx:530
 AliPrimaryPionCuts.cxx:531
 AliPrimaryPionCuts.cxx:532
 AliPrimaryPionCuts.cxx:533
 AliPrimaryPionCuts.cxx:534
 AliPrimaryPionCuts.cxx:535
 AliPrimaryPionCuts.cxx:536
 AliPrimaryPionCuts.cxx:537
 AliPrimaryPionCuts.cxx:538
 AliPrimaryPionCuts.cxx:539
 AliPrimaryPionCuts.cxx:540
 AliPrimaryPionCuts.cxx:541
 AliPrimaryPionCuts.cxx:542
 AliPrimaryPionCuts.cxx:543
 AliPrimaryPionCuts.cxx:544
 AliPrimaryPionCuts.cxx:545
 AliPrimaryPionCuts.cxx:546
 AliPrimaryPionCuts.cxx:547
 AliPrimaryPionCuts.cxx:548
 AliPrimaryPionCuts.cxx:549
 AliPrimaryPionCuts.cxx:550
 AliPrimaryPionCuts.cxx:551
 AliPrimaryPionCuts.cxx:552
 AliPrimaryPionCuts.cxx:553
 AliPrimaryPionCuts.cxx:554
 AliPrimaryPionCuts.cxx:555
 AliPrimaryPionCuts.cxx:556
 AliPrimaryPionCuts.cxx:557
 AliPrimaryPionCuts.cxx:558
 AliPrimaryPionCuts.cxx:559
 AliPrimaryPionCuts.cxx:560
 AliPrimaryPionCuts.cxx:561
 AliPrimaryPionCuts.cxx:562
 AliPrimaryPionCuts.cxx:563
 AliPrimaryPionCuts.cxx:564
 AliPrimaryPionCuts.cxx:565
 AliPrimaryPionCuts.cxx:566
 AliPrimaryPionCuts.cxx:567
 AliPrimaryPionCuts.cxx:568
 AliPrimaryPionCuts.cxx:569
 AliPrimaryPionCuts.cxx:570
 AliPrimaryPionCuts.cxx:571
 AliPrimaryPionCuts.cxx:572
 AliPrimaryPionCuts.cxx:573
 AliPrimaryPionCuts.cxx:574
 AliPrimaryPionCuts.cxx:575
 AliPrimaryPionCuts.cxx:576
 AliPrimaryPionCuts.cxx:577
 AliPrimaryPionCuts.cxx:578
 AliPrimaryPionCuts.cxx:579
 AliPrimaryPionCuts.cxx:580
 AliPrimaryPionCuts.cxx:581
 AliPrimaryPionCuts.cxx:582
 AliPrimaryPionCuts.cxx:583
 AliPrimaryPionCuts.cxx:584
 AliPrimaryPionCuts.cxx:585
 AliPrimaryPionCuts.cxx:586
 AliPrimaryPionCuts.cxx:587
 AliPrimaryPionCuts.cxx:588
 AliPrimaryPionCuts.cxx:589
 AliPrimaryPionCuts.cxx:590
 AliPrimaryPionCuts.cxx:591
 AliPrimaryPionCuts.cxx:592
 AliPrimaryPionCuts.cxx:593
 AliPrimaryPionCuts.cxx:594
 AliPrimaryPionCuts.cxx:595
 AliPrimaryPionCuts.cxx:596
 AliPrimaryPionCuts.cxx:597
 AliPrimaryPionCuts.cxx:598
 AliPrimaryPionCuts.cxx:599
 AliPrimaryPionCuts.cxx:600
 AliPrimaryPionCuts.cxx:601
 AliPrimaryPionCuts.cxx:602
 AliPrimaryPionCuts.cxx:603
 AliPrimaryPionCuts.cxx:604
 AliPrimaryPionCuts.cxx:605
 AliPrimaryPionCuts.cxx:606
 AliPrimaryPionCuts.cxx:607
 AliPrimaryPionCuts.cxx:608
 AliPrimaryPionCuts.cxx:609
 AliPrimaryPionCuts.cxx:610
 AliPrimaryPionCuts.cxx:611
 AliPrimaryPionCuts.cxx:612
 AliPrimaryPionCuts.cxx:613
 AliPrimaryPionCuts.cxx:614
 AliPrimaryPionCuts.cxx:615
 AliPrimaryPionCuts.cxx:616
 AliPrimaryPionCuts.cxx:617
 AliPrimaryPionCuts.cxx:618
 AliPrimaryPionCuts.cxx:619
 AliPrimaryPionCuts.cxx:620
 AliPrimaryPionCuts.cxx:621
 AliPrimaryPionCuts.cxx:622
 AliPrimaryPionCuts.cxx:623
 AliPrimaryPionCuts.cxx:624
 AliPrimaryPionCuts.cxx:625
 AliPrimaryPionCuts.cxx:626
 AliPrimaryPionCuts.cxx:627
 AliPrimaryPionCuts.cxx:628
 AliPrimaryPionCuts.cxx:629
 AliPrimaryPionCuts.cxx:630
 AliPrimaryPionCuts.cxx:631
 AliPrimaryPionCuts.cxx:632
 AliPrimaryPionCuts.cxx:633
 AliPrimaryPionCuts.cxx:634
 AliPrimaryPionCuts.cxx:635
 AliPrimaryPionCuts.cxx:636
 AliPrimaryPionCuts.cxx:637
 AliPrimaryPionCuts.cxx:638
 AliPrimaryPionCuts.cxx:639
 AliPrimaryPionCuts.cxx:640
 AliPrimaryPionCuts.cxx:641
 AliPrimaryPionCuts.cxx:642
 AliPrimaryPionCuts.cxx:643
 AliPrimaryPionCuts.cxx:644
 AliPrimaryPionCuts.cxx:645
 AliPrimaryPionCuts.cxx:646
 AliPrimaryPionCuts.cxx:647
 AliPrimaryPionCuts.cxx:648
 AliPrimaryPionCuts.cxx:649
 AliPrimaryPionCuts.cxx:650
 AliPrimaryPionCuts.cxx:651
 AliPrimaryPionCuts.cxx:652
 AliPrimaryPionCuts.cxx:653
 AliPrimaryPionCuts.cxx:654
 AliPrimaryPionCuts.cxx:655
 AliPrimaryPionCuts.cxx:656
 AliPrimaryPionCuts.cxx:657
 AliPrimaryPionCuts.cxx:658
 AliPrimaryPionCuts.cxx:659
 AliPrimaryPionCuts.cxx:660
 AliPrimaryPionCuts.cxx:661
 AliPrimaryPionCuts.cxx:662
 AliPrimaryPionCuts.cxx:663
 AliPrimaryPionCuts.cxx:664
 AliPrimaryPionCuts.cxx:665
 AliPrimaryPionCuts.cxx:666
 AliPrimaryPionCuts.cxx:667
 AliPrimaryPionCuts.cxx:668
 AliPrimaryPionCuts.cxx:669
 AliPrimaryPionCuts.cxx:670
 AliPrimaryPionCuts.cxx:671
 AliPrimaryPionCuts.cxx:672
 AliPrimaryPionCuts.cxx:673
 AliPrimaryPionCuts.cxx:674
 AliPrimaryPionCuts.cxx:675
 AliPrimaryPionCuts.cxx:676
 AliPrimaryPionCuts.cxx:677
 AliPrimaryPionCuts.cxx:678
 AliPrimaryPionCuts.cxx:679
 AliPrimaryPionCuts.cxx:680
 AliPrimaryPionCuts.cxx:681
 AliPrimaryPionCuts.cxx:682
 AliPrimaryPionCuts.cxx:683
 AliPrimaryPionCuts.cxx:684
 AliPrimaryPionCuts.cxx:685
 AliPrimaryPionCuts.cxx:686
 AliPrimaryPionCuts.cxx:687
 AliPrimaryPionCuts.cxx:688
 AliPrimaryPionCuts.cxx:689
 AliPrimaryPionCuts.cxx:690
 AliPrimaryPionCuts.cxx:691
 AliPrimaryPionCuts.cxx:692
 AliPrimaryPionCuts.cxx:693
 AliPrimaryPionCuts.cxx:694
 AliPrimaryPionCuts.cxx:695
 AliPrimaryPionCuts.cxx:696
 AliPrimaryPionCuts.cxx:697
 AliPrimaryPionCuts.cxx:698
 AliPrimaryPionCuts.cxx:699
 AliPrimaryPionCuts.cxx:700
 AliPrimaryPionCuts.cxx:701
 AliPrimaryPionCuts.cxx:702
 AliPrimaryPionCuts.cxx:703
 AliPrimaryPionCuts.cxx:704
 AliPrimaryPionCuts.cxx:705
 AliPrimaryPionCuts.cxx:706
 AliPrimaryPionCuts.cxx:707
 AliPrimaryPionCuts.cxx:708
 AliPrimaryPionCuts.cxx:709
 AliPrimaryPionCuts.cxx:710
 AliPrimaryPionCuts.cxx:711
 AliPrimaryPionCuts.cxx:712
 AliPrimaryPionCuts.cxx:713
 AliPrimaryPionCuts.cxx:714
 AliPrimaryPionCuts.cxx:715
 AliPrimaryPionCuts.cxx:716
 AliPrimaryPionCuts.cxx:717
 AliPrimaryPionCuts.cxx:718
 AliPrimaryPionCuts.cxx:719
 AliPrimaryPionCuts.cxx:720
 AliPrimaryPionCuts.cxx:721
 AliPrimaryPionCuts.cxx:722
 AliPrimaryPionCuts.cxx:723
 AliPrimaryPionCuts.cxx:724
 AliPrimaryPionCuts.cxx:725
 AliPrimaryPionCuts.cxx:726
 AliPrimaryPionCuts.cxx:727
 AliPrimaryPionCuts.cxx:728
 AliPrimaryPionCuts.cxx:729
 AliPrimaryPionCuts.cxx:730
 AliPrimaryPionCuts.cxx:731
 AliPrimaryPionCuts.cxx:732
 AliPrimaryPionCuts.cxx:733
 AliPrimaryPionCuts.cxx:734
 AliPrimaryPionCuts.cxx:735
 AliPrimaryPionCuts.cxx:736
 AliPrimaryPionCuts.cxx:737
 AliPrimaryPionCuts.cxx:738
 AliPrimaryPionCuts.cxx:739
 AliPrimaryPionCuts.cxx:740
 AliPrimaryPionCuts.cxx:741
 AliPrimaryPionCuts.cxx:742
 AliPrimaryPionCuts.cxx:743
 AliPrimaryPionCuts.cxx:744
 AliPrimaryPionCuts.cxx:745
 AliPrimaryPionCuts.cxx:746
 AliPrimaryPionCuts.cxx:747
 AliPrimaryPionCuts.cxx:748
 AliPrimaryPionCuts.cxx:749
 AliPrimaryPionCuts.cxx:750
 AliPrimaryPionCuts.cxx:751
 AliPrimaryPionCuts.cxx:752
 AliPrimaryPionCuts.cxx:753
 AliPrimaryPionCuts.cxx:754
 AliPrimaryPionCuts.cxx:755
 AliPrimaryPionCuts.cxx:756
 AliPrimaryPionCuts.cxx:757
 AliPrimaryPionCuts.cxx:758
 AliPrimaryPionCuts.cxx:759
 AliPrimaryPionCuts.cxx:760
 AliPrimaryPionCuts.cxx:761
 AliPrimaryPionCuts.cxx:762
 AliPrimaryPionCuts.cxx:763
 AliPrimaryPionCuts.cxx:764
 AliPrimaryPionCuts.cxx:765
 AliPrimaryPionCuts.cxx:766
 AliPrimaryPionCuts.cxx:767
 AliPrimaryPionCuts.cxx:768
 AliPrimaryPionCuts.cxx:769
 AliPrimaryPionCuts.cxx:770
 AliPrimaryPionCuts.cxx:771
 AliPrimaryPionCuts.cxx:772
 AliPrimaryPionCuts.cxx:773
 AliPrimaryPionCuts.cxx:774
 AliPrimaryPionCuts.cxx:775
 AliPrimaryPionCuts.cxx:776
 AliPrimaryPionCuts.cxx:777
 AliPrimaryPionCuts.cxx:778
 AliPrimaryPionCuts.cxx:779
 AliPrimaryPionCuts.cxx:780
 AliPrimaryPionCuts.cxx:781
 AliPrimaryPionCuts.cxx:782
 AliPrimaryPionCuts.cxx:783
 AliPrimaryPionCuts.cxx:784
 AliPrimaryPionCuts.cxx:785
 AliPrimaryPionCuts.cxx:786
 AliPrimaryPionCuts.cxx:787
 AliPrimaryPionCuts.cxx:788
 AliPrimaryPionCuts.cxx:789
 AliPrimaryPionCuts.cxx:790
 AliPrimaryPionCuts.cxx:791
 AliPrimaryPionCuts.cxx:792
 AliPrimaryPionCuts.cxx:793
 AliPrimaryPionCuts.cxx:794
 AliPrimaryPionCuts.cxx:795
 AliPrimaryPionCuts.cxx:796
 AliPrimaryPionCuts.cxx:797
 AliPrimaryPionCuts.cxx:798
 AliPrimaryPionCuts.cxx:799
 AliPrimaryPionCuts.cxx:800
 AliPrimaryPionCuts.cxx:801
 AliPrimaryPionCuts.cxx:802
 AliPrimaryPionCuts.cxx:803
 AliPrimaryPionCuts.cxx:804
 AliPrimaryPionCuts.cxx:805
 AliPrimaryPionCuts.cxx:806
 AliPrimaryPionCuts.cxx:807
 AliPrimaryPionCuts.cxx:808
 AliPrimaryPionCuts.cxx:809
 AliPrimaryPionCuts.cxx:810
 AliPrimaryPionCuts.cxx:811
 AliPrimaryPionCuts.cxx:812
 AliPrimaryPionCuts.cxx:813
 AliPrimaryPionCuts.cxx:814
 AliPrimaryPionCuts.cxx:815
 AliPrimaryPionCuts.cxx:816
 AliPrimaryPionCuts.cxx:817
 AliPrimaryPionCuts.cxx:818
 AliPrimaryPionCuts.cxx:819
 AliPrimaryPionCuts.cxx:820
 AliPrimaryPionCuts.cxx:821
 AliPrimaryPionCuts.cxx:822
 AliPrimaryPionCuts.cxx:823
 AliPrimaryPionCuts.cxx:824
 AliPrimaryPionCuts.cxx:825
 AliPrimaryPionCuts.cxx:826
 AliPrimaryPionCuts.cxx:827
 AliPrimaryPionCuts.cxx:828
 AliPrimaryPionCuts.cxx:829
 AliPrimaryPionCuts.cxx:830
 AliPrimaryPionCuts.cxx:831
 AliPrimaryPionCuts.cxx:832
 AliPrimaryPionCuts.cxx:833
 AliPrimaryPionCuts.cxx:834
 AliPrimaryPionCuts.cxx:835
 AliPrimaryPionCuts.cxx:836
 AliPrimaryPionCuts.cxx:837
 AliPrimaryPionCuts.cxx:838
 AliPrimaryPionCuts.cxx:839
 AliPrimaryPionCuts.cxx:840
 AliPrimaryPionCuts.cxx:841
 AliPrimaryPionCuts.cxx:842
 AliPrimaryPionCuts.cxx:843
 AliPrimaryPionCuts.cxx:844
 AliPrimaryPionCuts.cxx:845
 AliPrimaryPionCuts.cxx:846
 AliPrimaryPionCuts.cxx:847
 AliPrimaryPionCuts.cxx:848
 AliPrimaryPionCuts.cxx:849
 AliPrimaryPionCuts.cxx:850
 AliPrimaryPionCuts.cxx:851
 AliPrimaryPionCuts.cxx:852
 AliPrimaryPionCuts.cxx:853
 AliPrimaryPionCuts.cxx:854
 AliPrimaryPionCuts.cxx:855
 AliPrimaryPionCuts.cxx:856
 AliPrimaryPionCuts.cxx:857
 AliPrimaryPionCuts.cxx:858
 AliPrimaryPionCuts.cxx:859
 AliPrimaryPionCuts.cxx:860
 AliPrimaryPionCuts.cxx:861
 AliPrimaryPionCuts.cxx:862
 AliPrimaryPionCuts.cxx:863
 AliPrimaryPionCuts.cxx:864
 AliPrimaryPionCuts.cxx:865
 AliPrimaryPionCuts.cxx:866
 AliPrimaryPionCuts.cxx:867
 AliPrimaryPionCuts.cxx:868
 AliPrimaryPionCuts.cxx:869
 AliPrimaryPionCuts.cxx:870
 AliPrimaryPionCuts.cxx:871
 AliPrimaryPionCuts.cxx:872
 AliPrimaryPionCuts.cxx:873
 AliPrimaryPionCuts.cxx:874
 AliPrimaryPionCuts.cxx:875
 AliPrimaryPionCuts.cxx:876
 AliPrimaryPionCuts.cxx:877
 AliPrimaryPionCuts.cxx:878
 AliPrimaryPionCuts.cxx:879
 AliPrimaryPionCuts.cxx:880
 AliPrimaryPionCuts.cxx:881
 AliPrimaryPionCuts.cxx:882
 AliPrimaryPionCuts.cxx:883
 AliPrimaryPionCuts.cxx:884
 AliPrimaryPionCuts.cxx:885
 AliPrimaryPionCuts.cxx:886
 AliPrimaryPionCuts.cxx:887
 AliPrimaryPionCuts.cxx:888
 AliPrimaryPionCuts.cxx:889
 AliPrimaryPionCuts.cxx:890
 AliPrimaryPionCuts.cxx:891
 AliPrimaryPionCuts.cxx:892
 AliPrimaryPionCuts.cxx:893
 AliPrimaryPionCuts.cxx:894
 AliPrimaryPionCuts.cxx:895
 AliPrimaryPionCuts.cxx:896
 AliPrimaryPionCuts.cxx:897
 AliPrimaryPionCuts.cxx:898
 AliPrimaryPionCuts.cxx:899
 AliPrimaryPionCuts.cxx:900
 AliPrimaryPionCuts.cxx:901
 AliPrimaryPionCuts.cxx:902
 AliPrimaryPionCuts.cxx:903
 AliPrimaryPionCuts.cxx:904
 AliPrimaryPionCuts.cxx:905
 AliPrimaryPionCuts.cxx:906
 AliPrimaryPionCuts.cxx:907
 AliPrimaryPionCuts.cxx:908
 AliPrimaryPionCuts.cxx:909
 AliPrimaryPionCuts.cxx:910
 AliPrimaryPionCuts.cxx:911
 AliPrimaryPionCuts.cxx:912
 AliPrimaryPionCuts.cxx:913
 AliPrimaryPionCuts.cxx:914
 AliPrimaryPionCuts.cxx:915
 AliPrimaryPionCuts.cxx:916
 AliPrimaryPionCuts.cxx:917
 AliPrimaryPionCuts.cxx:918
 AliPrimaryPionCuts.cxx:919
 AliPrimaryPionCuts.cxx:920
 AliPrimaryPionCuts.cxx:921
 AliPrimaryPionCuts.cxx:922
 AliPrimaryPionCuts.cxx:923
 AliPrimaryPionCuts.cxx:924
 AliPrimaryPionCuts.cxx:925
 AliPrimaryPionCuts.cxx:926
 AliPrimaryPionCuts.cxx:927
 AliPrimaryPionCuts.cxx:928
 AliPrimaryPionCuts.cxx:929
 AliPrimaryPionCuts.cxx:930
 AliPrimaryPionCuts.cxx:931
 AliPrimaryPionCuts.cxx:932
 AliPrimaryPionCuts.cxx:933
 AliPrimaryPionCuts.cxx:934
 AliPrimaryPionCuts.cxx:935
 AliPrimaryPionCuts.cxx:936
 AliPrimaryPionCuts.cxx:937
 AliPrimaryPionCuts.cxx:938
 AliPrimaryPionCuts.cxx:939
 AliPrimaryPionCuts.cxx:940
 AliPrimaryPionCuts.cxx:941
 AliPrimaryPionCuts.cxx:942
 AliPrimaryPionCuts.cxx:943
 AliPrimaryPionCuts.cxx:944
 AliPrimaryPionCuts.cxx:945
 AliPrimaryPionCuts.cxx:946
 AliPrimaryPionCuts.cxx:947
 AliPrimaryPionCuts.cxx:948
 AliPrimaryPionCuts.cxx:949
 AliPrimaryPionCuts.cxx:950
 AliPrimaryPionCuts.cxx:951
 AliPrimaryPionCuts.cxx:952
 AliPrimaryPionCuts.cxx:953
 AliPrimaryPionCuts.cxx:954
 AliPrimaryPionCuts.cxx:955
 AliPrimaryPionCuts.cxx:956
 AliPrimaryPionCuts.cxx:957
 AliPrimaryPionCuts.cxx:958
 AliPrimaryPionCuts.cxx:959
 AliPrimaryPionCuts.cxx:960
 AliPrimaryPionCuts.cxx:961
 AliPrimaryPionCuts.cxx:962
 AliPrimaryPionCuts.cxx:963
 AliPrimaryPionCuts.cxx:964
 AliPrimaryPionCuts.cxx:965
 AliPrimaryPionCuts.cxx:966
 AliPrimaryPionCuts.cxx:967
 AliPrimaryPionCuts.cxx:968
 AliPrimaryPionCuts.cxx:969
 AliPrimaryPionCuts.cxx:970
 AliPrimaryPionCuts.cxx:971
 AliPrimaryPionCuts.cxx:972
 AliPrimaryPionCuts.cxx:973
 AliPrimaryPionCuts.cxx:974
 AliPrimaryPionCuts.cxx:975
 AliPrimaryPionCuts.cxx:976
 AliPrimaryPionCuts.cxx:977
 AliPrimaryPionCuts.cxx:978
 AliPrimaryPionCuts.cxx:979
 AliPrimaryPionCuts.cxx:980
 AliPrimaryPionCuts.cxx:981
 AliPrimaryPionCuts.cxx:982
 AliPrimaryPionCuts.cxx:983
 AliPrimaryPionCuts.cxx:984
 AliPrimaryPionCuts.cxx:985
 AliPrimaryPionCuts.cxx:986
 AliPrimaryPionCuts.cxx:987
 AliPrimaryPionCuts.cxx:988
 AliPrimaryPionCuts.cxx:989
 AliPrimaryPionCuts.cxx:990
 AliPrimaryPionCuts.cxx:991
 AliPrimaryPionCuts.cxx:992
 AliPrimaryPionCuts.cxx:993
 AliPrimaryPionCuts.cxx:994
 AliPrimaryPionCuts.cxx:995
 AliPrimaryPionCuts.cxx:996
 AliPrimaryPionCuts.cxx:997
 AliPrimaryPionCuts.cxx:998
 AliPrimaryPionCuts.cxx:999
 AliPrimaryPionCuts.cxx:1000
 AliPrimaryPionCuts.cxx:1001
 AliPrimaryPionCuts.cxx:1002
 AliPrimaryPionCuts.cxx:1003
 AliPrimaryPionCuts.cxx:1004
 AliPrimaryPionCuts.cxx:1005
 AliPrimaryPionCuts.cxx:1006
 AliPrimaryPionCuts.cxx:1007
 AliPrimaryPionCuts.cxx:1008
 AliPrimaryPionCuts.cxx:1009
 AliPrimaryPionCuts.cxx:1010
 AliPrimaryPionCuts.cxx:1011
 AliPrimaryPionCuts.cxx:1012
 AliPrimaryPionCuts.cxx:1013
 AliPrimaryPionCuts.cxx:1014
 AliPrimaryPionCuts.cxx:1015
 AliPrimaryPionCuts.cxx:1016
 AliPrimaryPionCuts.cxx:1017
 AliPrimaryPionCuts.cxx:1018
 AliPrimaryPionCuts.cxx:1019
 AliPrimaryPionCuts.cxx:1020
 AliPrimaryPionCuts.cxx:1021
 AliPrimaryPionCuts.cxx:1022
 AliPrimaryPionCuts.cxx:1023
 AliPrimaryPionCuts.cxx:1024
 AliPrimaryPionCuts.cxx:1025
 AliPrimaryPionCuts.cxx:1026
 AliPrimaryPionCuts.cxx:1027
 AliPrimaryPionCuts.cxx:1028
 AliPrimaryPionCuts.cxx:1029
 AliPrimaryPionCuts.cxx:1030
 AliPrimaryPionCuts.cxx:1031
 AliPrimaryPionCuts.cxx:1032
 AliPrimaryPionCuts.cxx:1033
 AliPrimaryPionCuts.cxx:1034
 AliPrimaryPionCuts.cxx:1035
 AliPrimaryPionCuts.cxx:1036
 AliPrimaryPionCuts.cxx:1037
 AliPrimaryPionCuts.cxx:1038
 AliPrimaryPionCuts.cxx:1039
 AliPrimaryPionCuts.cxx:1040
 AliPrimaryPionCuts.cxx:1041
 AliPrimaryPionCuts.cxx:1042
 AliPrimaryPionCuts.cxx:1043
 AliPrimaryPionCuts.cxx:1044
 AliPrimaryPionCuts.cxx:1045
 AliPrimaryPionCuts.cxx:1046
 AliPrimaryPionCuts.cxx:1047
 AliPrimaryPionCuts.cxx:1048
 AliPrimaryPionCuts.cxx:1049
 AliPrimaryPionCuts.cxx:1050
 AliPrimaryPionCuts.cxx:1051
 AliPrimaryPionCuts.cxx:1052
 AliPrimaryPionCuts.cxx:1053
 AliPrimaryPionCuts.cxx:1054
 AliPrimaryPionCuts.cxx:1055
 AliPrimaryPionCuts.cxx:1056
 AliPrimaryPionCuts.cxx:1057
 AliPrimaryPionCuts.cxx:1058
 AliPrimaryPionCuts.cxx:1059
 AliPrimaryPionCuts.cxx:1060
 AliPrimaryPionCuts.cxx:1061
 AliPrimaryPionCuts.cxx:1062
 AliPrimaryPionCuts.cxx:1063
 AliPrimaryPionCuts.cxx:1064