1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 // macro for a predefined set of track cuts
17 // author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
19 #if !defined(__CINT__) || defined(__MAKECINT__)
20 #include <Riostream.h>
21 #include <AliESDtrackCuts.h>
23 #include "AliAnalysisTaskB2.h"
26 void AddNSigmaCuts(AliESDtrackCuts* trkCuts, Float_t maxNSigma=3)
31 trkCuts->SetRequireSigmaToVertex(kTRUE);
32 trkCuts->SetMaxNsigmaToVertex(maxNSigma);
35 void AddDCACuts(AliESDtrackCuts* trkCuts, Float_t maxDCAxy=1.5, Float_t maxDCAz=2)
40 trkCuts->SetMaxDCAToVertexXY(maxDCAxy);
41 trkCuts->SetMaxDCAToVertexZ(maxDCAz);
44 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)
47 // Create an AliESDtrackCuts from a predefined set
49 AliESDtrackCuts* trkCuts = new AliESDtrackCuts("AliESDtrackCuts");
51 trkCuts->SetEtaRange(-maxEta, maxEta);
52 trkCuts->SetPtRange(0.15, 100.);
53 trkCuts->SetAcceptKinkDaughters(kFALSE);
56 trkCuts->SetRequireITSRefit(kTRUE);
57 trkCuts->SetMinNClustersITS(2);
58 trkCuts->SetMaxChi2PerClusterITS(36);
61 trkCuts->SetRequireTPCRefit(kTRUE);
64 trkCuts->SetMinNCrossedRowsTPC(minTPCnClsOrXRows);
65 trkCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
69 trkCuts->SetMinNClustersTPC(minTPCnClsOrXRows);
71 trkCuts->SetMaxChi2PerClusterTPC(4.);
72 //trkCuts->SetMaxChi2TPCConstrainedGlobal(36);
74 TString tracksel = trksel;
77 Int_t clusterCut = (xrows) ? 1 : 0;
79 if(tracksel == "its_tpc_nsigma")
81 AddNSigmaCuts(trkCuts, maxNSigma);
83 else if(tracksel == "its_tpc_nsigma_spd1")
85 AddNSigmaCuts(trkCuts, maxNSigma);
86 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
88 else if(tracksel == "its_tpc_nsigma_spd")
90 AddNSigmaCuts(trkCuts, maxNSigma);
91 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
93 else if(tracksel == "its_tpc_dca")
95 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
97 else if(tracksel == "its_tpc_dca_spd1")
99 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
100 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
102 else if(tracksel == "its_tpc_dca_spd")
104 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
105 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
107 else if(tracksel == "its_tpc_tof_nsigma")
109 AddNSigmaCuts(trkCuts, maxNSigma);
110 task->SetTOFmatch(1);
112 else if(tracksel == "its_tpc_tof_nsigma_spd1")
114 AddNSigmaCuts(trkCuts, maxNSigma);
115 task->SetTOFmatch(1);
116 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
118 else if(tracksel == "its_tpc_tof_nsigma_spd")
120 AddNSigmaCuts(trkCuts, maxNSigma);
121 task->SetTOFmatch(1);
122 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
124 else if(tracksel == "its_tpc_tof_dca")
126 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
127 task->SetTOFmatch(1);
129 else if(tracksel == "its_tpc_tof_dca_spd1")
131 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
132 task->SetTOFmatch(1);
133 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
135 else if(tracksel == "its_tpc_tof_dca_spd")
137 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
138 task->SetTOFmatch(1);
139 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
141 else if(tracksel == "std_its_tpc_2009") // pp data 2009
144 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(kFALSE);
146 else if(tracksel == "std_its_tpc_2010") // pp data 2010
149 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE, clusterCut);
151 else if(tracksel == "std_its_tpc_2011") // pp data 2011
154 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE, clusterCut);
158 std::cerr << "Warning: no track selection criteria selected" << std::endl;