]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/SPECTRA/Nuclei/B2/macros/TrackCuts.C
propagate TPC crossed rows option to the standard track cuts
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / Nuclei / B2 / macros / TrackCuts.C
CommitLineData
6b91e8c0 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16// macro for a predefined set of track cuts
17// author: Eulogio Serradilla <eulogio.serradilla@cern.ch>
18
19void AddNSigmaCuts(AliESDtrackCuts* trkCuts, Float_t maxNSigma=3)
20{
21//
22// nsigma cuts
23//
24 trkCuts->SetRequireSigmaToVertex(kTRUE);
25 trkCuts->SetMaxNsigmaToVertex(maxNSigma);
26}
27
28void AddDCACuts(AliESDtrackCuts* trkCuts, Float_t maxDCAxy=1.5, Float_t maxDCAz=2)
29{
30//
31// DCA cuts
32//
33 trkCuts->SetMaxDCAToVertexXY(maxDCAxy);
34 trkCuts->SetMaxDCAToVertexZ(maxDCAz);
35}
36
b3f10f7e 37AliESDtrackCuts* TrackCuts(AliAnalysisTaskB2* task, const TString& trksel, Double_t maxDCAxy, Double_t maxDCAz, Double_t maxNSigma, Bool_t xrows, Int_t minTPCnClsOrXRows, Double_t maxEta)
6b91e8c0 38{
39//
40// Create an AliESDtrackCuts from a predefined set
41//
42 AliESDtrackCuts* trkCuts = new AliESDtrackCuts("AliESDtrackCuts");
43
44 trkCuts->SetEtaRange(-maxEta, maxEta);
45 trkCuts->SetPtRange(0.15, 100.);
46 trkCuts->SetAcceptKinkDaughters(kFALSE);
47
48 // ITS
49 trkCuts->SetRequireITSRefit(kTRUE);
50 trkCuts->SetMinNClustersITS(2);
51 trkCuts->SetMaxChi2PerClusterITS(36);
52
53 // TPC
54 trkCuts->SetRequireTPCRefit(kTRUE);
b3f10f7e 55 if(xrows)
56 {
57 trkCuts->SetMinNCrossedRowsTPC(minTPCnClsOrXRows);
58 trkCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
59 }
60 else
61 {
62 trkCuts->SetMinNClustersTPC(minTPCnClsOrXRows);
63 }
6b91e8c0 64 trkCuts->SetMaxChi2PerClusterTPC(4.);
b3f10f7e 65 //trkCuts->SetMaxChi2TPCConstrainedGlobal(36);
6b91e8c0 66
b3f10f7e 67 TString tracksel = trksel;
6b91e8c0 68 tracksel.ToLower();
69
70 if(tracksel == "its_tpc_nsigma")
71 {
72 AddNSigmaCuts(trkCuts, maxNSigma);
73 }
74
47bb775c 75 else if(tracksel == "its_tpc_nsigma_spd1")
6b91e8c0 76 {
77 AddNSigmaCuts(trkCuts, maxNSigma);
78 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
79 }
80
47bb775c 81 else if(tracksel == "its_tpc_nsigma_spd")
82 {
83 AddNSigmaCuts(trkCuts, maxNSigma);
84 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
85 }
86
6b91e8c0 87 else if(tracksel == "its_tpc_dca")
88 {
89 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
90 }
91
47bb775c 92 else if(tracksel == "its_tpc_dca_spd1")
6b91e8c0 93 {
94 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
95 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
96 }
97
47bb775c 98 else if(tracksel == "its_tpc_dca_spd")
99 {
100 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
101 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
102 }
103
6b91e8c0 104 else if(tracksel == "its_tpc_tof_nsigma")
105 {
106 AddNSigmaCuts(trkCuts, maxNSigma);
107 task->SetTOFmatch(1);
108 }
109
47bb775c 110 else if(tracksel == "its_tpc_tof_nsigma_spd1")
6b91e8c0 111 {
112 AddNSigmaCuts(trkCuts, maxNSigma);
113 task->SetTOFmatch(1);
114 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
115 }
116
47bb775c 117 else if(tracksel == "its_tpc_tof_nsigma_spd")
118 {
119 AddNSigmaCuts(trkCuts, maxNSigma);
120 task->SetTOFmatch(1);
121 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
122 }
123
6b91e8c0 124 else if(tracksel == "its_tpc_tof_dca")
125 {
126 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
127 task->SetTOFmatch(1);
128 }
129
47bb775c 130 else if(tracksel == "its_tpc_tof_dca_spd1")
6b91e8c0 131 {
132 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
133 task->SetTOFmatch(1);
134 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kFirst);
135 }
136
47bb775c 137 else if(tracksel == "its_tpc_tof_dca_spd")
138 {
139 AddDCACuts(trkCuts,maxDCAxy,maxDCAz);
140 task->SetTOFmatch(1);
141 trkCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
142 }
143
0e7094df 144 Int_t clusterCut = (xrows) ? 1 : 0;
145
6b91e8c0 146 else if(tracksel == "std_its_tpc_2009") // pp data 2009
147 {
148 delete trkCuts;
0e7094df 149 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2009(1, clusterCut);
6b91e8c0 150 }
151
152 else if(tracksel == "std_its_tpc_2010") // pp data 2010
153 {
154 delete trkCuts;
0e7094df 155 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(1, clusterCut);
6b91e8c0 156 }
157
b3f10f7e 158 else if(tracksel == "std_its_tpc_2011") // pp data 2011
159 {
160 delete trkCuts;
0e7094df 161 return AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(1, clusterCut);
b3f10f7e 162 }
163
6b91e8c0 164 else
165 {
166 std::cerr << "Warning: no track selection criteria selected" << std::endl;
167 }
168
169 return trkCuts;
170}