1 AliESDtrackCuts *CreateTrackCutsPWG4(Int_t cutMode) {
4 // Macro to create track cuts for PWG4 Jet analysis
5 // User can select a specific set by indicating cutMode
6 // cutMode has 8 digits: first 4 digits additional cuts, last 4 digits standard cuts
7 // additional cuts are variations of standard cuts (used for hybrid track selection and QA)
8 // Numbering starts from 1000 for standard and additional cut numbers
10 AliESDtrackCuts *trackCuts = new AliESDtrackCuts("AliESDtrackCuts");
16 Bool_t bStdCutsDefined = kFALSE;
19 //_____________________________________________________________________
22 //Get standard cuts: last 4 digits of cutMode
23 Int_t stdCutMode = cutMode%mod;
25 if(stdCutMode == 1000) {
27 bStdCutsDefined = kTRUE;
29 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
30 trackCuts->SetMinNCrossedRowsTPC(120);
31 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
32 trackCuts->SetMaxChi2PerClusterITS(36);
33 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
35 trackCuts->SetEtaRange(-0.9,0.9);
36 trackCuts->SetPtRange(0.15, 1e10);
38 tag = "Global track RAA analysis QM2011 + Chi2ITS<36";
42 if(stdCutMode == 1001) {
44 bStdCutsDefined = kTRUE;
47 trackCuts->SetMinNClustersTPC(90);
48 trackCuts->SetMaxChi2PerClusterTPC(4);
49 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
50 trackCuts->SetAcceptKinkDaughters(kFALSE);
51 trackCuts->SetRequireTPCRefit(kTRUE);
52 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
54 trackCuts->SetRequireITSRefit(kTRUE);
56 trackCuts->SetMaxDCAToVertexXY(2.4);
57 trackCuts->SetMaxDCAToVertexZ(3.2);
58 trackCuts->SetDCAToVertex2D(kTRUE);
60 trackCuts->SetMaxChi2PerClusterITS(36);
62 trackCuts->SetRequireSigmaToVertex(kFALSE);
64 trackCuts->SetEtaRange(-0.9,0.9);
65 trackCuts->SetPtRange(0.15, 100.);
68 tag = "Global tracks jet analysis with ITSrefit and NclsIter1=90, noSPD requirement";
72 if(stdCutMode == 1002) {
74 bStdCutsDefined = kTRUE;
77 trackCuts->SetMinNClustersTPC(80);
78 trackCuts->SetMaxChi2PerClusterTPC(4);
79 trackCuts->SetAcceptKinkDaughters(kFALSE);
80 trackCuts->SetRequireTPCRefit(kTRUE);
81 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
83 trackCuts->SetRequireITSRefit(kTRUE);
85 trackCuts->SetMaxDCAToVertexXY(2.4);
86 trackCuts->SetMaxDCAToVertexZ(3.2);
87 trackCuts->SetDCAToVertex2D(kTRUE);
89 trackCuts->SetMaxChi2PerClusterITS(36);
91 trackCuts->SetRequireSigmaToVertex(kFALSE);
93 trackCuts->SetEtaRange(-0.9,0.9);
94 trackCuts->SetPtRange(0.15, 100.);
97 tag = "Global tracks jet analysis with ITSrefit and Ncls=80, noSPD requirement";
101 if(stdCutMode == 1003) {
103 bStdCutsDefined = kTRUE;
105 // tight global tracks
106 trackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,1);
107 trackCuts->SetMinNClustersTPC(0);
108 trackCuts->SetMinNCrossedRowsTPC(120);
109 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
110 trackCuts->SetMaxDCAToVertexXY(2.4);
111 trackCuts->SetMaxDCAToVertexZ(3.2);
112 trackCuts->SetDCAToVertex2D(kTRUE);
113 trackCuts->SetMaxChi2PerClusterITS(36);
114 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
116 tag = "Global tracks ITSTPC2010 + NCrossedRows + loose ITS";
120 if(stdCutMode == 2000) {
122 bStdCutsDefined = kTRUE;
125 trackCuts->SetMinNClustersTPC(90);
126 trackCuts->SetMaxChi2PerClusterTPC(4);
127 trackCuts->SetRequireTPCStandAlone(kTRUE); //cut on NClustersTPC and chi2TPC Iter1
128 trackCuts->SetAcceptKinkDaughters(kFALSE);
129 trackCuts->SetRequireTPCRefit(kTRUE);
130 trackCuts->SetMaxFractionSharedTPCClusters(0.4);
132 trackCuts->SetMaxDCAToVertexXY(2.4);
133 trackCuts->SetMaxDCAToVertexZ(3.2);
134 trackCuts->SetDCAToVertex2D(kTRUE);
136 trackCuts->SetRequireSigmaToVertex(kFALSE);
138 trackCuts->SetEtaRange(-0.9,0.9);
139 trackCuts->SetPtRange(0.15, 100.);
142 tag = "Global tracks jet analysis, loose cuts, NClsIter1=90, no ITS requirements";
146 if(stdCutMode == 2001) {
148 bStdCutsDefined = kTRUE;
150 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
151 trackCuts->SetMinNClustersTPC(70);
153 trackCuts->SetEtaRange(-0.9,0.9);
154 trackCuts->SetPtRange(0.15, 100.);
157 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
161 if(stdCutMode == 2002) {
163 bStdCutsDefined = kTRUE;
165 trackCuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
166 trackCuts->SetMinNClustersTPC(0);
167 trackCuts->SetMinNCrossedRowsTPC(120);
168 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.1);// essentially switches it off
170 trackCuts->SetEtaRange(-0.9,0.9);
171 trackCuts->SetPtRange(0.15, 100.);
174 tag = "TPConly track cuts, loose cuts, NCls=70, no ITS requirements";
178 if(!bStdCutsDefined) {
179 printf("last 4 digits do not represent a predefined set of standard cuts. Returning 0\n");
185 //_____________________________________________________________________
188 //Get additional cut mode: first 4 digits of cutMode
189 Int_t addCutMode = (int)((float)cutMode/(float)mod);
191 if(addCutMode == 1000) {
193 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
195 tag += " + additonal: SPD any requirement";
199 if(addCutMode == 1001) {
201 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kNone);
203 tag += " + additional: w/o hits in SPD";
207 if(addCutMode == 1002) {
209 trackCuts->SetMaxChi2PerClusterITS(1E10);
211 tag += " + additional: maxITSChi2=1e10";
215 if(addCutMode == 1003) {
217 trackCuts->SetMinNClustersTPC(0);
218 trackCuts->SetMinNCrossedRowsTPC(0);
219 trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.);
221 tag += " + additional: minClusters=0 minCrossedRows=0 minCrossedRowsOverFindable=0";
225 if(addCutMode == 1004) {
227 trackCuts->SetRequireITSRefit(kFALSE);
229 tag += " + additional: ITSrefit=kFALSE";
233 Printf("Created track cuts for: %s", tag.Data());