ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

// macro for a predefined set of track cuts
// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>

#if !defined(__CINT__) || defined(__MAKECINT__)
#include <Riostream.h>
#include <AliESDtrackCuts.h>
#include <TString.h>
#include "AliAnalysisTaskB2.h"
#endif

void AddNSigmaCuts(AliESDtrackCuts* trkCuts, Float_t maxNSigma=3)
{
//
// nsigma cuts
//
	trkCuts->SetRequireSigmaToVertex(kTRUE);
	trkCuts->SetMaxNsigmaToVertex(maxNSigma);
}

void AddDCACuts(AliESDtrackCuts* trkCuts, Float_t maxDCAxy=1.5, Float_t maxDCAz=2)
{
//
// DCA cuts
//
	trkCuts->SetMaxDCAToVertexXY(maxDCAxy);
	trkCuts->SetMaxDCAToVertexZ(maxDCAz);
}

AliESDtrackCuts* TrackCuts(AliAnalysisTaskB2* task, const TString& trksel, Double_t maxDCAxy, Double_t maxDCAz, Double_t maxNSigma, Bool_t xrows, Int_t minTPCnClsOrXRows, Double_t maxEta)
{
//
// Create an AliESDtrackCuts from a predefined set
//
	AliESDtrackCuts* trkCuts = new AliESDtrackCuts("AliESDtrackCuts");
	
	trkCuts->SetEtaRange(-maxEta, maxEta);
	trkCuts->SetPtRange(0.15, 100.);
	trkCuts->SetAcceptKinkDaughters(kFALSE);
	
	// ITS
	trkCuts->SetRequireITSRefit(kTRUE);
	trkCuts->SetMinNClustersITS(2);
	trkCuts->SetMaxChi2PerClusterITS(36);
	
	// TPC
	trkCuts->SetRequireTPCRefit(kTRUE);
	if(xrows)
	{
		trkCuts->SetMinNCrossedRowsTPC(minTPCnClsOrXRows);
		trkCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
	}
	else
	{
		trkCuts->SetMinNClustersTPC(minTPCnClsOrXRows);
	}
	trkCuts->SetMaxChi2PerClusterTPC(4.);
	//trkCuts->SetMaxChi2TPCConstrainedGlobal(36);
	
	TString tracksel = trksel;
	tracksel.ToLower();
	
	Int_t clusterCut = (xrows) ? 1 : 0;
	
	if(tracksel == "its_tpc_nsigma")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
	}
	else if(tracksel == "its_tpc_nsigma_spd1")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
	}
	else if(tracksel == "its_tpc_nsigma_spd")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
	}
	else if(tracksel == "its_tpc_dca")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
	}
	else if(tracksel == "its_tpc_dca_spd1")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
	}
	else if(tracksel == "its_tpc_dca_spd")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
	}
	else if(tracksel == "its_tpc_tof_nsigma")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
		task->SetTOFmatch(1);
	}
	else if(tracksel == "its_tpc_tof_nsigma_spd1")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
		task->SetTOFmatch(1);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
	}
	else if(tracksel == "its_tpc_tof_nsigma_spd")
	{
		AddNSigmaCuts(trkCuts, maxNSigma);
		task->SetTOFmatch(1);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
	}
	else if(tracksel == "its_tpc_tof_dca")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
		task->SetTOFmatch(1);
	}
	else if(tracksel == "its_tpc_tof_dca_spd1")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
		task->SetTOFmatch(1);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
	}
	else if(tracksel == "its_tpc_tof_dca_spd")
	{
		AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
		task->SetTOFmatch(1);
		trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
	}
	else if(tracksel == "std_its_tpc_2009") // pp data 2009
	{
		delete trkCuts;
		return AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(kFALSE);
	}
	else if(tracksel == "std_its_tpc_2010") // pp data 2010
	{
		delete trkCuts;
		return AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE, clusterCut);
	}
	else if(tracksel == "std_its_tpc_2011") // pp data 2011
	{
		delete trkCuts;
		return AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE, clusterCut);
	}
	else
	{
		std::cerr << "Warning: no track selection criteria selected" << std::endl;
	}
	
	return trkCuts;
}
 TrackCuts.C:1
 TrackCuts.C:2
 TrackCuts.C:3
 TrackCuts.C:4
 TrackCuts.C:5
 TrackCuts.C:6
 TrackCuts.C:7
 TrackCuts.C:8
 TrackCuts.C:9
 TrackCuts.C:10
 TrackCuts.C:11
 TrackCuts.C:12
 TrackCuts.C:13
 TrackCuts.C:14
 TrackCuts.C:15
 TrackCuts.C:16
 TrackCuts.C:17
 TrackCuts.C:18
 TrackCuts.C:19
 TrackCuts.C:20
 TrackCuts.C:21
 TrackCuts.C:22
 TrackCuts.C:23
 TrackCuts.C:24
 TrackCuts.C:25
 TrackCuts.C:26
 TrackCuts.C:27
 TrackCuts.C:28
 TrackCuts.C:29
 TrackCuts.C:30
 TrackCuts.C:31
 TrackCuts.C:32
 TrackCuts.C:33
 TrackCuts.C:34
 TrackCuts.C:35
 TrackCuts.C:36
 TrackCuts.C:37
 TrackCuts.C:38
 TrackCuts.C:39
 TrackCuts.C:40
 TrackCuts.C:41
 TrackCuts.C:42
 TrackCuts.C:43
 TrackCuts.C:44
 TrackCuts.C:45
 TrackCuts.C:46
 TrackCuts.C:47
 TrackCuts.C:48
 TrackCuts.C:49
 TrackCuts.C:50
 TrackCuts.C:51
 TrackCuts.C:52
 TrackCuts.C:53
 TrackCuts.C:54
 TrackCuts.C:55
 TrackCuts.C:56
 TrackCuts.C:57
 TrackCuts.C:58
 TrackCuts.C:59
 TrackCuts.C:60
 TrackCuts.C:61
 TrackCuts.C:62
 TrackCuts.C:63
 TrackCuts.C:64
 TrackCuts.C:65
 TrackCuts.C:66
 TrackCuts.C:67
 TrackCuts.C:68
 TrackCuts.C:69
 TrackCuts.C:70
 TrackCuts.C:71
 TrackCuts.C:72
 TrackCuts.C:73
 TrackCuts.C:74
 TrackCuts.C:75
 TrackCuts.C:76
 TrackCuts.C:77
 TrackCuts.C:78
 TrackCuts.C:79
 TrackCuts.C:80
 TrackCuts.C:81
 TrackCuts.C:82
 TrackCuts.C:83
 TrackCuts.C:84
 TrackCuts.C:85
 TrackCuts.C:86
 TrackCuts.C:87
 TrackCuts.C:88
 TrackCuts.C:89
 TrackCuts.C:90
 TrackCuts.C:91
 TrackCuts.C:92
 TrackCuts.C:93
 TrackCuts.C:94
 TrackCuts.C:95
 TrackCuts.C:96
 TrackCuts.C:97
 TrackCuts.C:98
 TrackCuts.C:99
 TrackCuts.C:100
 TrackCuts.C:101
 TrackCuts.C:102
 TrackCuts.C:103
 TrackCuts.C:104
 TrackCuts.C:105
 TrackCuts.C:106
 TrackCuts.C:107
 TrackCuts.C:108
 TrackCuts.C:109
 TrackCuts.C:110
 TrackCuts.C:111
 TrackCuts.C:112
 TrackCuts.C:113
 TrackCuts.C:114
 TrackCuts.C:115
 TrackCuts.C:116
 TrackCuts.C:117
 TrackCuts.C:118
 TrackCuts.C:119
 TrackCuts.C:120
 TrackCuts.C:121
 TrackCuts.C:122
 TrackCuts.C:123
 TrackCuts.C:124
 TrackCuts.C:125
 TrackCuts.C:126
 TrackCuts.C:127
 TrackCuts.C:128
 TrackCuts.C:129
 TrackCuts.C:130
 TrackCuts.C:131
 TrackCuts.C:132
 TrackCuts.C:133
 TrackCuts.C:134
 TrackCuts.C:135
 TrackCuts.C:136
 TrackCuts.C:137
 TrackCuts.C:138
 TrackCuts.C:139
 TrackCuts.C:140
 TrackCuts.C:141
 TrackCuts.C:142
 TrackCuts.C:143
 TrackCuts.C:144
 TrackCuts.C:145
 TrackCuts.C:146
 TrackCuts.C:147
 TrackCuts.C:148
 TrackCuts.C:149
 TrackCuts.C:150
 TrackCuts.C:151
 TrackCuts.C:152
 TrackCuts.C:153
 TrackCuts.C:154
 TrackCuts.C:155
 TrackCuts.C:156
 TrackCuts.C:157
 TrackCuts.C:158
 TrackCuts.C:159
 TrackCuts.C:160
 TrackCuts.C:161
 TrackCuts.C:162
 TrackCuts.C:163