]>
Commit | Line | Data |
---|---|---|
9f00b65f | 1 | class LMEECutLib { |
2 | ||
3 | public: | |
4 | static enum LMMECutSet { | |
5 | kPbPb2011TPCandTOF, | |
b3a9b3e3 | 6 | kPbPb2011TPC, //TOF required, more relaxed cut on TPC |
4118e72c | 7 | kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC |
9f00b65f | 8 | kPbPb2011TPCorTOF, |
9 | kpp2010TPCandTOF, | |
10 | kpp2010TPCorTOF, | |
11 | kCUTSETMAX | |
12 | }; | |
13 | ||
14 | static enum LMMECentSel { | |
15 | kPbPb2011Central, | |
16 | kPbPb2011SemiCentral, | |
17 | kPbPb2011Peripheral, | |
18 | kCENTSELMAX | |
19 | }; | |
20 | ||
21 | //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"}; | |
22 | ||
23 | ||
24 | LMEECutLib() {} | |
25 | ||
26 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet); | |
27 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel); | |
28 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet); | |
29 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet); | |
30 | ||
31 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet); | |
32 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet); | |
33 | ||
4118e72c | 34 | AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE); |
9f00b65f | 35 | AliAnalysisCuts* GetPairCuts(Int_t cutSet); |
36 | ||
37 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet); | |
38 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet); | |
39 | ||
40 | ||
41 | ||
42 | ||
43 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet) { | |
44 | AliDielectronEventCuts* eventCuts = 0x0; | |
45 | switch (cutSet) { | |
46 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 47 | case kPbPb2011TPC : |
4118e72c | 48 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 49 | case kPbPb2011TPCorTOF : |
50 | case kpp2010TPCandTOF : | |
51 | case kpp2010TPCorTOF : | |
52 | eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0"); | |
840abc7f | 53 | eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); // AOD |
54 | //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD | |
ee00eb9d | 55 | // eventCuts->SetCentralityRange(0.0,80.0); |
9f00b65f | 56 | eventCuts->SetRequireVertex(); |
57 | eventCuts->SetMinVtxContributors(1); | |
58 | eventCuts->SetVertexZ(-10.,10.); | |
59 | break; | |
60 | default: cout << "No Event Cut defined" << endl; | |
61 | } | |
62 | return eventCuts; | |
63 | } | |
64 | ||
65 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel) { | |
66 | AliDielectronVarCuts* centCuts = 0x0; | |
67 | switch (centSel) { | |
68 | case kPbPb2011Central: | |
69 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central"); | |
70 | centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.); | |
71 | break; | |
72 | case kPbPb2011SemiCentral: | |
73 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral"); | |
74 | //Restrict to 50%, Trigger selction | |
4118e72c | 75 | centCuts->AddCut(AliDielectronVarManager::kCentrality,20.,50.); |
9f00b65f | 76 | break; |
77 | case kPbPb2011Peripheral: | |
78 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral"); | |
79 | centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.); | |
80 | break; | |
81 | default: cout << "No Centrality selected" << endl; | |
82 | } | |
83 | return centCuts; | |
84 | } | |
85 | ||
86 | ||
87 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) { | |
88 | AliDielectronTrackRotator* trackRotator = 0x0; | |
89 | switch (cutSet) { | |
90 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 91 | case kPbPb2011TPC : |
4118e72c | 92 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 93 | case kPbPb2011TPCorTOF : |
94 | case kpp2010TPCandTOF : | |
95 | case kpp2010TPCorTOF : | |
96 | trackRotator = new AliDielectronTrackRotator(); | |
97 | trackRotator->SetIterations(20); | |
98 | trackRotator->SetConeAnglePhi(TMath::Pi()/180*165); | |
99 | trackRotator->SetStartAnglePhi(TMath::Pi()); | |
100 | break; | |
101 | default: cout << "No Rotator defined" << endl; | |
102 | } | |
103 | return trackRotator; | |
104 | } | |
105 | ||
106 | ||
107 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) { | |
108 | AliDielectronMixingHandler* mixingHandler = 0x0; | |
109 | switch (cutSet) { | |
110 | case kPbPb2011TPCorTOF : | |
4118e72c | 111 | /* |
9f00b65f | 112 | mixingHandler = new AliDielectronMixingHandler; |
113 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
114 | mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80"); | |
115 | mixingHandler->SetDepth(25); | |
116 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); | |
4118e72c | 117 | break; |
118 | */ | |
9f00b65f | 119 | case kPbPb2011TPCandTOF : |
b3a9b3e3 | 120 | case kPbPb2011TPC : |
4118e72c | 121 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 122 | mixingHandler = new AliDielectronMixingHandler; |
123 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
124 | mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80"); | |
125 | mixingHandler->AddVariable(AliDielectronVarManager::kv0ACrpH2,"-6*(TMath::Pi()/6),-5*(TMath::Pi()/6),-4*(TMath::Pi()/6),-3*(TMath::Pi()/6),-2*(TMath::Pi()/6),-1*(TMath::Pi()/6),0,1*(TMath::Pi()/6),2*(TMath::Pi()/6),3*(TMath::Pi()/6),4*(TMath::Pi()/6),5*(TMath::Pi()/6),6*(TMath::Pi()/6)"); | |
126 | //mixingHandler->SetDepth(50); | |
4118e72c | 127 | mixingHandler->SetDepth(15); |
9f00b65f | 128 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); |
129 | break; | |
130 | case kpp2010TPCandTOF : | |
131 | case kpp2010TPCorTOF : | |
132 | mixingHandler = new AliDielectronMixingHandler; | |
133 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
134 | mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000"); | |
135 | //might want to add multiplicity? | |
136 | mixingHandler->SetDepth(50); | |
137 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); | |
138 | break; | |
139 | default: cout << "No Rotator defined" << endl; | |
140 | } | |
141 | return mixingHandler; | |
142 | } | |
143 | ||
144 | ||
145 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) { | |
146 | AliAnalysisCuts* anaCuts=0x0; | |
147 | ||
148 | // + [2] added for Dec2010 Cut! | |
149 | TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20); | |
150 | /* until Nov2010 | |
151 | lowerCut->SetParameter(0, -2.7); | |
152 | lowerCut->SetParameter(1, -0.4357); | |
153 | */ | |
154 | /* 18.01.2011 ALiHFEpid.cxx */ | |
155 | lowerCut->SetParameter(0,-3.7); | |
156 | lowerCut->SetParameter(1,-0.8); | |
157 | lowerCut->SetParameter(2,-0.35); | |
158 | ||
159 | if (MCenabled) { //overwrite parameters | |
160 | lowerCut->SetParameter(0,-2.5); | |
161 | lowerCut->SetParameter(2,-2.2); | |
162 | } | |
163 | ||
164 | //--------------------------------------------- | |
165 | AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF"); | |
166 | pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.0,100.,kFALSE); | |
167 | pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE ); | |
168 | ||
4118e72c | 169 | |
170 | AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE"); | |
171 | pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE); | |
172 | pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE); | |
173 | pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE ); | |
174 | ||
9f00b65f | 175 | AliDielectronPID *pidTPChardTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE"); |
176 | pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE); | |
177 | pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE); | |
178 | pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE); | |
179 | pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE); | |
180 | pidTPChardTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE ); | |
181 | //___________________________________________ | |
182 | AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF"); | |
183 | pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,0.4,kFALSE); | |
184 | pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.4,100.,kFALSE); | |
4118e72c | 185 | pidTT->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.2 , 100., kFALSE ); |
9f00b65f | 186 | |
187 | pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE); | |
188 | pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE); | |
189 | pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE); | |
190 | //___________________________________________ | |
191 | AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal"); | |
4118e72c | 192 | if (MCenabled) { |
193 | pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.); | |
194 | } | |
195 | else { | |
9f00b65f | 196 | pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.); |
4118e72c | 197 | } |
9f00b65f | 198 | //___________________________________________ |
199 | ||
f88c2b26 | 200 | AliDielectronVarCuts *pidTPCsignalWide = new AliDielectronVarCuts("pidTPCsignalWide","cut on the TPC signal"); |
201 | pidTPCsignalWide->AddCut(AliDielectronVarManager::kTPCsignal,70.,90.); | |
4118e72c | 202 | |
203 | ||
9f00b65f | 204 | AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4"); |
4118e72c | 205 | pTPC->AddCut(AliDielectronVarManager::kPt,.4,5.); |
9f00b65f | 206 | |
207 | AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2"); | |
4118e72c | 208 | pMin->AddCut(AliDielectronVarManager::kPt,.2,5.); |
9f00b65f | 209 | |
210 | switch (cutSet) { | |
211 | case kPbPb2011TPCandTOF : | |
212 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
213 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
214 | //cgSecondTrackFilterPIDTPC1->AddCut(pidTPChardTOF); | |
215 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly); | |
216 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal); | |
217 | cgSecondTrackFilterPIDTPC1->AddCut(GetTrackCutsAna(cutSet)); | |
218 | anaCuts = cgSecondTrackFilterPIDTPC1; | |
219 | break; | |
b3a9b3e3 | 220 | case kPbPb2011TPC : |
221 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
222 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
223 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide); | |
224 | cgSecondTrackFilterPIDTPC1->AddCut(GetTrackCutsAna(cutSet)); | |
225 | anaCuts = cgSecondTrackFilterPIDTPC1; | |
226 | break; | |
227 | ||
4118e72c | 228 | case kPbPb2011TPCandTOFwide : |
229 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
230 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
231 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF); | |
232 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide); | |
233 | cgSecondTrackFilterPIDTPC1->AddCut(GetTrackCutsAna(cutSet)); | |
234 | anaCuts = cgSecondTrackFilterPIDTPC1; | |
235 | break; | |
236 | ||
9f00b65f | 237 | case kPbPb2011TPCorTOF : |
238 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND); | |
239 | cgSecondTrackFilterPIDTPC2->AddCut(pMin); | |
240 | cgSecondTrackFilterPIDTPC2->AddCut(pidTT); | |
241 | cgSecondTrackFilterPIDTPC2->AddCut(pidTPCsignal); | |
242 | cgSecondTrackFilterPIDTPC2->AddCut(GetTrackCutsAna(cutSet)); | |
243 | anaCuts = cgSecondTrackFilterPIDTPC2; | |
244 | break; | |
245 | case kpp2010TPCandTOF : | |
246 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); | |
247 | cgSecondTrackFilterPIDTPC->AddCut(pTPC); | |
248 | //cgSecondTrackFilterPIDTPC->AddCut(pidTPChardTOF); | |
249 | cgSecondTrackFilterPIDTPC->AddCut(pidTPCTOFeOnly); | |
250 | anaCuts = cgSecondTrackFilterPIDTPC; | |
251 | break; | |
252 | case kpp2010TPCorTOF : | |
253 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); | |
254 | cgSecondTrackFilterPIDTPC->AddCut(pMin); | |
255 | cgSecondTrackFilterPIDTPC->AddCut(pidTT); | |
256 | anaCuts = cgSecondTrackFilterPIDTPC; | |
257 | break; | |
258 | default: cout << "No Analysis PID Cut defined " << endl; | |
259 | } | |
260 | return anaCuts; | |
261 | } | |
262 | ||
263 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) { | |
264 | AliAnalysisCuts* anaCuts=0x0; | |
265 | switch (cutSet) { | |
266 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 267 | case kPbPb2011TPC : |
4118e72c | 268 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 269 | case kPbPb2011TPCorTOF : |
270 | case kpp2010TPCandTOF : | |
271 | case kpp2010TPCorTOF : | |
272 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); | |
273 | AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND); | |
274 | AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre"); | |
275 | pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.); | |
276 | cgITSTPC->AddCut(pidITSTPC); | |
f88c2b26 | 277 | cgITSTPC->AddCut(GetTrackCutsAna(cutSet)); |
278 | ||
9f00b65f | 279 | // cgITSTPC->AddCut(GetTrackCutsAna(cutSet)); |
280 | ||
281 | AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND); | |
282 | AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA"); | |
283 | pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.); | |
284 | cgITSSA->AddCut(pidITSSA); | |
f88c2b26 | 285 | cgITSSA->AddCut(GetTrackCutsAna(cutSet)); |
9f00b65f | 286 | // cgITSSA->AddCut(GetTrackCutsPre(cutSet)); |
287 | ||
288 | AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR); | |
289 | cgInitialTrackFilter->AddCut(cgITSTPC); | |
290 | cgInitialTrackFilter->AddCut(cgITSSA); | |
291 | anaCuts = cgInitialTrackFilter; | |
292 | break; | |
293 | default: cout << "No Pre-PID Cut defined " << endl; | |
294 | } | |
295 | return anaCuts; | |
296 | } | |
297 | ||
298 | ||
4118e72c | 299 | |
300 | AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) { | |
301 | AliAnalysisCuts* pairCuts=0x0; | |
302 | switch (cutSet) { | |
303 | case kPbPb2011TPCorTOF : | |
304 | case kpp2010TPCandTOF : | |
305 | AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV"); | |
306 | pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE); | |
307 | pairCuts = pairCutsV; | |
308 | break; | |
309 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 310 | case kPbPb2011TPC : |
4118e72c | 311 | case kPbPb2011TPCandTOFwide : |
312 | case kpp2010TPCorTOF : | |
313 | if (!togglePC) { | |
314 | ||
315 | AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR); | |
316 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); | |
317 | pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); | |
318 | pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0); | |
319 | pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3"); | |
320 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3); | |
321 | pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3"); | |
322 | pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.3, 99999.); | |
323 | pairCutsCG->AddCut(pairCutsPhiv); | |
324 | pairCutsCG->AddCut(pairCutsInvM); | |
325 | pairCutsCG2->AddCut(pairCutsInvMgood); | |
326 | pairCutsCG2->AddCut(pairCutsCG); | |
327 | pairCuts = pairCutsCG2; | |
328 | } | |
329 | else { | |
330 | AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad"); | |
331 | pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE); | |
332 | pairCuts = pairCutsV; | |
333 | } | |
334 | break; | |
335 | default: cout << "No Pair Cuts defined " << endl; | |
336 | } | |
337 | return pairCuts; | |
338 | } | |
339 | ||
340 | ||
9f00b65f | 341 | AliAnalysisCuts* GetPairCuts(Int_t cutSet) { |
342 | AliDielectronVarCuts* pairCuts=0x0; | |
343 | switch (cutSet) { | |
344 | case kPbPb2011TPCorTOF : | |
345 | case kpp2010TPCandTOF : | |
346 | pairCuts = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV"); | |
347 | pairCuts->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE); | |
348 | break; | |
349 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 350 | case kPbPb2011TPC : |
4118e72c | 351 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 352 | case kpp2010TPCorTOF : |
353 | pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad"); | |
354 | pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035); | |
355 | break; | |
356 | default: cout << "No Pair Cuts defined " << endl; | |
357 | } | |
358 | return pairCuts; | |
359 | } | |
360 | ||
361 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) { | |
362 | AliDielectronCutGroup* trackCuts=0x0; | |
363 | switch (cutSet) { | |
364 | case kPbPb2011TPCandTOF : | |
b3a9b3e3 | 365 | case kPbPb2011TPC : |
4118e72c | 366 | case kPbPb2011TPCandTOFwide : |
9f00b65f | 367 | case kPbPb2011TPCorTOF : |
368 | case kpp2010TPCandTOF : | |
369 | case kpp2010TPCorTOF : | |
370 | trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
deb910b5 | 371 | AliESDtrackCuts* trackCutsESD ; |
372 | ||
373 | /* | |
374 | trackCutsESD = new AliESDtrackCuts(); | |
375 | trackCutsESD->SetDCAToVertex2D(kTRUE); | |
376 | trackCutsESD->SetMaxDCAToVertexZ(3.0); | |
377 | trackCutsESD->SetMaxDCAToVertexXY(1.0); | |
378 | */ | |
9f00b65f | 379 | trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); |
9f00b65f | 380 | //Not necessary for AOD? |
381 | //-AOD-trackCuts->SetDCAToVertex2D(kTRUE); | |
5520ccf0 | 382 | |
f88c2b26 | 383 | //Legacy cut: Use Crossed Rows in ESD, in AOD ASAP |
0332d10a | 384 | //New: See below |
4118e72c | 385 | |
9f00b65f | 386 | trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,200.); |
387 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
4118e72c | 388 | //DCA Cut |
f88c2b26 | 389 | |
9f00b65f | 390 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); |
391 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
5520ccf0 | 392 | |
ee00eb9d | 393 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); |
5520ccf0 | 394 | |
9f00b65f | 395 | trackCutsAOD->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); |
f88c2b26 | 396 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5); |
9f00b65f | 397 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); |
2fb61cdf | 398 | //trackCutsDiel->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual); |
deb910b5 | 399 | // trackCutsDiel->SetAODFilterBit(1<<4); |
b3a9b3e3 | 400 | // trackCutsDiel->SetAODFilterBit(4); //Relatively loose, TPConly + kSPD first |
401 | trackCutsDiel->SetAODFilterBit(16); | |
9f00b65f | 402 | trackCutsDiel->SetRequireITSRefit(kTRUE); |
403 | trackCutsDiel->SetRequireTPCRefit(kTRUE); | |
5520ccf0 | 404 | //-AOD-trackCuts->SetMinNClustersITS(3); |
9f7d3fc2 | 405 | //trackCutsDiel->SetITSclusterCut(AliDielectronTrackCuts::kAtLeast,7); //>=3 |
406 | ||
0332d10a | 407 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); |
ee00eb9d | 408 | // trackCutsAOD->AddCut(AliDielectronVarManager::kITSLayerFirstCls,-0.01,0.5); //ITS(0) = SPDfirst |
0332d10a | 409 | //-AOD-trackCuts->SetMinNCrossedRowsTPC(110); |
410 | //-AOD-trackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.7); | |
b3a9b3e3 | 411 | //'old' cut |
412 | //trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 110.0, 170.0); | |
413 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0); | |
414 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0); | |
415 | // trackCutsDiel->SetTPCNclFRobust(110); | |
416 | // trackCutsDiel->SetMinNCrossedRowsOverFindable(0.8); | |
9f00b65f | 417 | trackCuts->AddCut(trackCutsDiel); |
418 | trackCuts->AddCut(trackCutsAOD); | |
deb910b5 | 419 | //trackCuts->AddCut(trackCutsESD); |
9f00b65f | 420 | break; |
421 | default: cout << "No Analysis Track Cut defined " << endl; | |
422 | } | |
423 | return trackCuts; | |
424 | } | |
425 | ||
426 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) { | |
427 | AliESDtrackCuts* trackCuts=0x0; | |
428 | switch (cutSet) { | |
429 | case kPbPb2011TPCandTOF : | |
430 | case kPbPb2011TPCorTOF : | |
431 | case kpp2010TPCandTOF : | |
432 | case kpp2010TPCorTOF : | |
433 | /* | |
deb910b5 | 434 | trackCuts = new AliESDtrackCuts(); |
435 | trackCuts->SetDCAToVertex2D(kTRUE); | |
436 | trackCuts->SetMaxDCAToVertexZ(3.0); | |
437 | trackCuts->SetMaxDCAToVertexXY(1.0); | |
9f00b65f | 438 | trackCuts->SetEtaRange( -0.84 , 0.84 ); |
439 | trackCuts->SetPtRange( 0.05 , 0.5); | |
440 | trackCuts->SetAcceptKinkDaughters(kFALSE); | |
441 | trackCuts->SetRequireITSRefit(kTRUE); | |
442 | trackCuts->SetRequireITSStandAlone(kTRUE); | |
443 | trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
444 | trackCuts->SetMinNClustersITS(3); //PhotonGroup-Dalitz: 2?! | |
445 | */ | |
446 | cout << "No Pre-Track Cut defined for AODs at the moment " << endl; | |
447 | break; | |
448 | default: cout << "No Pre-Track Cut defined " << endl; | |
449 | } | |
450 | return trackCuts; | |
451 | } | |
452 | ||
453 | }; |