]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/LMEECutLibRemi.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / LMEECutLibRemi.C
CommitLineData
1ba767ec 1class LMEECutLibRemi {
2
3 public:
4 static enum LMMECutSet {
5 kPbPb2011NoPID,
6 kPbPb2011TPCandTOF,
7 kPbPb2011TPCandTOFHPT,
8 kPbPb2011TPC, //TOF required, more relaxed cut on TPC
9 kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC
10 kPbPb2011TPCorTOF,
11 kpp2010TPCandTOF,
12 kpp2010TPCorTOF,
2eab2b62 13 kPbPb2011pidITSTPCTOF,
1ba767ec 14 kCUTSETMAX
15 };
16
17 static enum LMMECentSel {
18 kPbPb2011Central,
19 kPbPb2011SemiCentral1,
2eab2b62 20 kPbPb2011SemiCentral2,
1ba767ec 21 kPbPb2011Peripheral,
2eab2b62 22 kCENTSELMAX
1ba767ec 23 };
24
25 static enum LMEEPairCutSet{
2eab2b62 26 kPbPb2011RP,
27 kPbPb2011Mag,
28 kPbPb2011MassLow,
29 kPbPb2011MassMiddle,
30 kPbPb2011MassHigh,
31 kPbPb2011MassAll,
1ba767ec 32
2eab2b62 33 kPAIRCUTSETMAX
1ba767ec 34 };
35
36
1ba767ec 37 //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};
38
39
40 LMEECutLib() {}
41
42 AliDielectronEventCuts* GetEventCuts(Int_t cutSet);
43 AliAnalysisCuts* GetCentralityCuts(Int_t centSel);
44 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet);
45 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);
46
47 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet);
48 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet);
49
50 AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
51 AliAnalysisCuts* GetPairCuts(Int_t cutSet);
52 AliAnalysisCuts* GetPairCutsInvMass(Int_t cutSet);
2eab2b62 53 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet);
1ba767ec 54
55 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet);
56 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet);
57
58
59
60
61 AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {
62 AliDielectronEventCuts* eventCuts = 0x0;
63 switch (cutSet) {
64 case kPbPb2011NoPID:
65 case kPbPb2011TPCandTOF :
66 case kPbPb2011TPCandTOFHPT:
67 case kPbPb2011TPC :
68 case kPbPb2011TPCandTOFwide :
69 case kPbPb2011TPCorTOF :
70 case kpp2010TPCandTOF :
71 case kpp2010TPCorTOF :
2eab2b62 72 case kPbPb2011pidITSTPCTOF:
73
74 //Basic Event Cuts for pp and Pb-Pb, additional cuts may be in the AddTask
1ba767ec 75 eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
76 eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD
2eab2b62 77 // eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD
78 // eventCuts->SetCentralityRange(0.0,80.0);
79 // eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); // AOD
80
1ba767ec 81 eventCuts->SetRequireVertex();
82 eventCuts->SetMinVtxContributors(1);
83 eventCuts->SetVertexZ(-10.,10.);
84 break;
85 default: cout << "No Event Cut defined" << endl;
86 }
87 return eventCuts;
88 }
89
1ba767ec 90
2eab2b62 91 //Selection of relatively 'flat' centralities
92 AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
93 AliDielectronVarCuts* centCuts = 0x0;
94 switch (centSel) {
95 case kPbPb2011Central:
96 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
97 centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
98 break;
99 case kPbPb2011SemiCentral1:
100 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1");
101 //Restrict to 50%, Trigger selction
102 centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.);
103 break;
104 case kPbPb2011SemiCentral2:
105 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2");
106 //Restrict to 50%, Trigger selction
107 centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);//
108 break;
1ba767ec 109
2eab2b62 110 case kPbPb2011Peripheral:
111 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
112 centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
113 break;
114
115 default: cout << "No Centrality selected" << endl;
116
117
118 }
119 return centCuts;
120 }
1ba767ec 121
122
1ba767ec 123
124
2eab2b62 125 //Basic track rotator settings from J/Psi, more investigation needed
1ba767ec 126 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
127 AliDielectronTrackRotator* trackRotator = 0x0;
128 switch (cutSet) {
129 case kPbPb2011NoPID:
130 case kPbPb2011TPCandTOF :
131 case kPbPb2011TPCandTOFHPT:
132 case kPbPb2011TPC :
133 case kPbPb2011TPCandTOFwide :
134 case kPbPb2011TPCorTOF :
135 case kpp2010TPCandTOF :
136 case kpp2010TPCorTOF :
2eab2b62 137 case kPbPb2011pidITSTPCTOF :
138
1ba767ec 139 trackRotator = new AliDielectronTrackRotator();
140 trackRotator->SetIterations(20);
141 trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);
142 trackRotator->SetStartAnglePhi(TMath::Pi());
143 break;
144 default: cout << "No Rotator defined" << endl;
145 }
146 return trackRotator;
147 }
148
149
150 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
151 AliDielectronMixingHandler* mixingHandler = 0x0;
152 switch (cutSet) {
153 case kPbPb2011TPCorTOF :
1ba767ec 154 case kPbPb2011NoPID:
155 case kPbPb2011TPCandTOF :
156 case kPbPb2011TPCandTOFHPT:
157 case kPbPb2011TPC :
158 case kPbPb2011TPCandTOFwide :
2eab2b62 159 case kPbPb2011pidITSTPCTOF :
160
1ba767ec 161 mixingHandler = new AliDielectronMixingHandler;
162 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
163 mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
2eab2b62 164 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)");
165
166 mixingHandler->SetDepth(20);
167 // mixingHandler->SetDepth(15);
1ba767ec 168 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
169 break;
170 case kpp2010TPCandTOF :
171 case kpp2010TPCorTOF :
2eab2b62 172 //ATTENTION: Trivial 1 Bin Variable on Nacc needed: Not understood bug, mixing breaks
173 //when just adding one variable *****************!!!
1ba767ec 174 mixingHandler = new AliDielectronMixingHandler;
175 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
176 mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
177 //might want to add multiplicity?
178 mixingHandler->SetDepth(50);
179 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
180 break;
181 default: cout << "No Rotator defined" << endl;
182 }
183 return mixingHandler;
184 }
185
2eab2b62 186 /*
187 //Pair Cuts for PREFILTER step
188 // cuts = REJECTION!!!
189 AliAnalysisCuts* GetPairCutsPre(Int_t cutSet) {
190 cout << " >>>>>>>>>>>>>>>>>>>>>> GetPairCutsPre() >>>>>>>>>>>>>>>>>>>>>> " << endl;
191 AliAnalysisCuts* pairCuts=0x0;
192 switch (cutSet) {
193 case kPbPb2011_pidITSTPC_trkSPDfirst_3:
194 case kPbPb2011_pidTPC_trkSPDfirst_3:
195 case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight:
196 case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight:
197 case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight:
198 case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight:
199 case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4:
200 case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4:
201 case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1:
202 case kPbPb2011pidITSTPCTOF:
203 case kPbPb2011_pidTPCTOF_trkSPDorSDD_1:
204 case kPbPb2011_pidTPCTOF_trkSPDfirst_1:
205 case kPbPb2011_TPCITS_TOFif1:
206 case kPbPb2011_TPCTOF_Semi2:
207 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("pairCutsInvM","pairCutsInvM");
208 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.02); // in upgrade: 0.01
209 AliDielectronVarCuts* pairCutsOpAng =new AliDielectronVarCuts("pairCutsOpAng","pairCutsOpAng");
210 pairCutsOpAng->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); // in upgrade: 0.05
211
212 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
213 pairCutsCG->AddCut(pairCutsInvM);
214 pairCutsCG->AddCut(pairCutsOpAng);
215 //pairCutsCG->AddCut(pairCutsPhiv);
216 pairCuts = pairCutsCG;
217 break;
1ba767ec 218
2eab2b62 219 case kPbPb2011_TPCTOF_Semi1:
220 //[...] // PhiV and InvMass
221 default: cout << "No Prefilter Pair Cuts defined " << endl;
222 }
223 return pairCuts;
224 }
225 */
1ba767ec 226
1ba767ec 227
1ba767ec 228
2eab2b62 229 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
230 AliAnalysisCuts* anaCuts=0x0;
1ba767ec 231
2eab2b62 232 //-----------------------------------------------
233 //Define different PID Cuts, that are used later
234 //-----------------------------------------------
235
236 //TPC: UPPER HALF inclusion of electron
237 // 3sigma exclusion of Pions
238 //TOF: 3sigma inclusion of electrons
239 AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");
240 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.,3.,0.0,100.,kFALSE);
241 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
242 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );
243
244 //TPC: 3sigma inclusion of electron
245 // 3sigma exclusion of Pions
246 //TOF: 3sigma inclusion of electrons in region where p,K cross electrons in TPC
247 AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
248 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
249 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
250 pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );
251
252 //Apply ITS cuts (see Hongyan's talks):
253 //3 sigma inclusion of electrons in TPC
254 //3 sigma exclusion of pions in TPC
255 //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
256 AliDielectronPID *pidTPCandITSandTOF = new AliDielectronPID("TPC-TOFANDITS","TPC-TOFANDITS");
257 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
258 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
259 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE);
260 pidTPCandITSandTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );
261
262 //Apply ITS cuts (see Hongyan's talks):
263 //3 sigma inclusion of electrons in TPC
264 //3 sigma exclusion of pions in TPC
265 //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
266 //TOF only IF available!
267 AliDielectronPID *pidTPCandITSTOF = new AliDielectronPID("TPC-TOF-ITS","TPC-TOF-ITS");
268 pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
269 pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
270 pidTPCandITSTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE,AliDielectronPID::kIfAvailable );
271 pidTPCandITSTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );
1ba767ec 272
1ba767ec 273 //___________________________________________
2eab2b62 274 //Direct cuts on TPC signal used for QM12
1ba767ec 275 AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");
276 if (MCenabled) {
277 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.);
278 }
279 else {
280 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
281 }
282 //___________________________________________
283
2eab2b62 284 //low pT cut-off 0.4 - Pb-Pb
1ba767ec 285 AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
2eab2b62 286 pTPC->AddCut(AliDielectronVarManager::kPt,.4,3.5);
1ba767ec 287
2eab2b62 288 //low pT cut-off 0.4 - pp
1ba767ec 289 AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
290 pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);
291
2eab2b62 292 //
293 //
294 //TPC: electron inclusion asymmetric
295 // pion exclusion 3sigma
296 //ITS: electron inclusion asymmetric OVER FULL MOMENTUM RANGE
297 //TOF: electron inclusion 3sigma - BUT ONLY IF AVAILABLE
298 AliDielectronPID *pidTPCITS_TOFif2 = new AliDielectronPID("pidTPCITS_TOFif2","pidTPCITS_TOFif2");
299 pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3. , 0. ,100., kFALSE);
300 pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE);
301 pidTPCITS_TOFif2->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 1. , 0. ,100., kFALSE);
302 pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,100., kFALSE, AliDielectronPID::kIfAvailable);
303
304 // eta range:
305 AliDielectronVarCuts *etaRange090 = new AliDielectronVarCuts("etaRange090","etaRange090");
306 etaRange090->AddCut(AliDielectronVarManager::kEta, -0.90, 0.90);
307 AliDielectronVarCuts *etaRange084 = new AliDielectronVarCuts("etaRange084","etaRange084");
308 etaRange084->AddCut(AliDielectronVarManager::kEta, -0.84, 0.84);
309 AliDielectronVarCuts *etaRange076 = new AliDielectronVarCuts("etaRange076","etaRange076");
310 etaRange076->AddCut(AliDielectronVarManager::kEta, -0.76, 0.76);
311 // pt range:
312 AliDielectronVarCuts *ptRange400to3500 = new AliDielectronVarCuts("ptRange400to3500","ptRange400to3500");
313 ptRange400to3500->AddCut(AliDielectronVarManager::kPt, .4, 3.5);
314
315
316
317 //Now see what Config actually loads and assemble final cuts
1ba767ec 318 switch (cutSet) {
319 case kPbPb2011NoPID:
320 AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
321 cgSecondTrackFilterNoPID->AddCut(pTPC);
322 anaCuts= cgSecondTrackFilterNoPID;
323 break;
324 case kPbPb2011TPCandTOFHPT:
2eab2b62 325 //test Hongyan's cut
1ba767ec 326 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
2eab2b62 327 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
328 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandITSTOF);
1ba767ec 329 anaCuts = cgSecondTrackFilterPIDTPC1;
2eab2b62 330 break;
1ba767ec 331 case kPbPb2011TPCandTOF :
332 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
333 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
2eab2b62 334 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
1ba767ec 335 anaCuts = cgSecondTrackFilterPIDTPC1;
336 break;
337 case kPbPb2011TPC :
2eab2b62 338 //Old, QM12
339 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
340 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
341 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
342 anaCuts = cgSecondTrackFilterPIDTPC1;
343 break;
1ba767ec 344
345 case kPbPb2011TPCandTOFwide :
2eab2b62 346 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
347 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
348 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
349 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
350 anaCuts = cgSecondTrackFilterPIDTPC1;
351 break;
1ba767ec 352
353 case kPbPb2011TPCorTOF :
2eab2b62 354 //unused
1ba767ec 355 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);
2eab2b62 356 cgSecondTrackFilterPIDTPC2->AddCut(pTPC);
357// cgSecondTrackFilterPIDTPC2->AddCut(pidTT);
1ba767ec 358 anaCuts = cgSecondTrackFilterPIDTPC2;
359 break;
360 case kpp2010TPCandTOF :
2eab2b62 361 //unused
1ba767ec 362 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
363 cgSecondTrackFilterPIDTPC->AddCut(pTPC);
2eab2b62 364 cgSecondTrackFilterPIDTPC->AddCut(pidTPCandTOF);
1ba767ec 365 anaCuts = cgSecondTrackFilterPIDTPC;
366 break;
367 case kpp2010TPCorTOF :
2eab2b62 368 //unused
1ba767ec 369 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
2eab2b62 370 cgSecondTrackFilterPIDTPC->AddCut(pTPC);
371 /// cgSecondTrackFilterPIDTPC->AddCut(pidTT);
1ba767ec 372 anaCuts = cgSecondTrackFilterPIDTPC;
373 break;
2eab2b62 374 case kPbPb2011pidITSTPCTOF:
375 AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND);
376 cgPIDCutsAna->AddCut(etaRange076);
377 cgPIDCutsAna->AddCut(ptRange400to3500);
378 cgPIDCutsAna->AddCut(pidTPCITS_TOFif2);
379 cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet));
380 anaCuts = cgPIDCutsAna;
381 break;
382
1ba767ec 383 default: cout << "No Analysis PID Cut defined " << endl;
384 }
385 return anaCuts;
386 }
387
2eab2b62 388
389 //Relaxed PID cuts for additional rejectin step, do not use blindly
1ba767ec 390 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
391 AliAnalysisCuts* anaCuts=0x0;
392 switch (cutSet) {
393 case kPbPb2011NoPID:
394 case kPbPb2011TPCandTOF :
395 case kPbPb2011TPCandTOFHPT:
396 case kPbPb2011TPC :
397 case kPbPb2011TPCandTOFwide :
1ba767ec 398 case kpp2010TPCandTOF :
399 case kpp2010TPCorTOF :
400 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
401 AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
402 AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");
2eab2b62 403
1ba767ec 404 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
2eab2b62 405 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
406 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
407 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
408 pidITSTPC->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
1ba767ec 409 cgITSTPC->AddCut(pidITSTPC);
410
2eab2b62 411 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
412 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
413 cgITSTPC->AddCut(pTPCHPT);
414
415 cgITSTPC->AddCut(GetTrackCutsAna(cutSet));
416
1ba767ec 417
418 AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
419 AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");
420 pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
421 cgITSSA->AddCut(pidITSSA);
2eab2b62 422 AliDielectronVarCuts *pITSPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
423 pITSPT->AddCut(AliDielectronVarManager::kPt,0.0,0.8);
424 cgITSSA->AddCut(pITSPT);
425 cgITSSA->AddCut(GetTrackCutsPre(cutSet));
1ba767ec 426
427 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
428 cgInitialTrackFilter->AddCut(cgITSTPC);
429 cgInitialTrackFilter->AddCut(cgITSSA);
430 anaCuts = cgInitialTrackFilter;
431 break;
2eab2b62 432
433
434 case kPbPb2011TPCorTOF :
435 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
436 AliDielectronCutGroup* cgITSTPCalone = new AliDielectronCutGroup("cgITSTPCalone","cgITSTPCalone",AliDielectronCutGroup::kCompAND);
437 AliDielectronPID *pidITSTPCalone = new AliDielectronPID("TPCpre","TPCpre");
438
439 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
440 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
441 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
442 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
443 pidITSTPCalone->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
444 cgITSTPCalone->AddCut(pidITSTPCalone);
445
446 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
447 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
448 cgITSTPCalone->AddCut(pTPCHPT);
449
450 cgITSTPCalone->AddCut(GetTrackCutsAna(cutSet));
451
452
453
454 anaCuts = cgITSTPCalone;
455 break;
456
457 case kPbPb2011pidITSTPCTOF:
458
459 // eta range:
460 AliDielectronVarCuts *etaRangePre1 = new AliDielectronVarCuts("etaRangePre1","etaRangePre1");
461 etaRangePre1->AddCut(AliDielectronVarManager::kEta,-0.9,0.9);
462 // pt range:
463 AliDielectronVarCuts *ptRangePre1 = new AliDielectronVarCuts("ptRangePre1","ptRangePre1");
464 ptRangePre1->AddCut(AliDielectronVarManager::kPt, .2, 3.5); // 0.2 is realistic. turnon at ~180MeV
465 //AliDielectronVarCuts *ptRangePre2 = new AliDielectronVarCuts("ptRangePre2","ptRangePre2");
466 //ptRangePre2->AddCut(AliDielectronVarManager::kPt, .4, 3.5);
467 //AliDielectronVarCuts *ptRangePre3 = new AliDielectronVarCuts("ptRangePre3","ptRangePre3");
468 //ptRangePre3->AddCut(AliDielectronVarManager::kPt, 0.05, 1.5);
469
470 AliDielectronCutGroup* cgITSTPCTOFpre = new AliDielectronCutGroup("cgITSTPCTOFpre","cgITSTPCTOFpre",AliDielectronCutGroup::kCompAND);
471 AliDielectronPID *pidITSTPCTOFpre = new AliDielectronPID("pidITSTPCTOFpre","pidITSTPCTOFpre");
472 pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3. , 3., 0. ,100., kFALSE);
473 pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE);
474 // ITS will be used:
475 // pidITSTPCTOFpre->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -3. , 3., 0. ,1.7 , kFALSE);
476 // TOF will be used if available, and with pt instead of p:
477 // pidITSTPCTOFpre->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3., 0.4,100., kFALSE,
478 // AliDielectronPID::kIfAvailable, AliDielectronVarManager::kPt);
479 cgITSTPCTOFpre->AddCut(pidITSTPCTOFpre);
480 cgITSTPCTOFpre->AddCut(etaRangePre1);
481 cgITSTPCTOFpre->AddCut(ptRangePre1);
482 cgITSTPCTOFpre->AddCut(GetTrackCutsAna(cutSet));
483 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
484 cgInitialTrackFilter->AddCut(GetPIDCutsAna(cutSet)); // in case the prefilter cuts do not include all needed global tracks.
485 cgInitialTrackFilter->AddCut(cgITSTPCTOFpre);
486 //cgInitialTrackFilter->AddCut(cgTPCpre);
487 //cgInitialTrackFilter->AddCut(cgITSSA);
488 anaCuts = cgInitialTrackFilter; // kCompOR works!!! <- checked with 'SetNoPairing()' and commented out 'GetPIDCutsAna(selectedPID)'
489 //cout << " ========== anaCuts prefilter: ========== " << endl;
490 //anaCuts->Print();
491 break;
492
493
1ba767ec 494 default: cout << "No Pre-PID Cut defined " << endl;
495 }
496 return anaCuts;
497 }
498
499
500
2eab2b62 501
502 //Pair Cuts for Analysis step - take care of logic - inverted compared to other PairCuts!!
503 AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {
504 AliAnalysisCuts* pairCuts=0x0;
505 switch (cutSet) {
506 case kPbPb2011TPCorTOF :
507 case kpp2010TPCandTOF :
508 AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
509 pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
510 pairCuts = pairCutsV;
511 break;
512 case kPbPb2011NoPID:
513 case kPbPb2011TPCandTOF :
514 case kPbPb2011TPC :
515 case kPbPb2011TPCandTOFHPT:
516 case kPbPb2011TPCandTOFwide :
517 case kpp2010TPCorTOF :
518 if (!togglePC) {
519
520 AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
521 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
522 pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
523 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0);
524 pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
525 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
526 pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");
527 pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.05, 99999.);
528 pairCutsCG->AddCut(pairCutsPhiv);
529 pairCutsCG->AddCut(pairCutsInvM);
530 pairCutsCG2->AddCut(pairCutsInvMgood);
531 pairCutsCG2->AddCut(pairCutsCG);
532 pairCuts = pairCutsCG2;
533 }
534 else {
535 AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
536 pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
537 pairCuts = pairCutsV;
538 }
539 break;
540 default: cout << "No Pair Cuts defined " << endl;
541 }
542 return pairCuts;
543 }
544
1ba767ec 545
546
2eab2b62 547 //Pair Cuts for PREFILTER step
1ba767ec 548 AliAnalysisCuts* GetPairCuts(Int_t cutSet) {
2eab2b62 549 AliAnalysisCuts* pairCuts=0x0;
550 switch (cutSet) {
551 case kPbPb2011TPCorTOF :
552 case kpp2010TPCandTOF :
1ba767ec 553 AliDielectronVarCuts* pairCutsM=0x0;
554 pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
555 pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
556 pairCuts = pairCutsM;
557 break;
558 case kPbPb2011NoPID:
559 case kPbPb2011TPCandTOF :
560 case kPbPb2011TPC :
561 case kPbPb2011TPCandTOFwide :
562 case kPbPb2011TPCandTOFHPT:
2eab2b62 563/* case kpp2010TPCorTOF :
1ba767ec 564
2eab2b62 565 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
566 //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
567 //pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
568 AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
569 pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05);
570 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
571 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.01);
572 pairCutsCG->AddCut(pairCutsPhiv);
573 pairCutsCG->AddCut(pairCutsInvM);
574*/
1ba767ec 575 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
576 AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
577 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
2eab2b62 578 //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
579 //pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05);
1ba767ec 580 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
2eab2b62 581 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
1ba767ec 582 pairCutsCG->AddCut(pairCutsPhiv);
583 pairCutsCG->AddCut(pairCutsInvM);
2eab2b62 584 pairCuts = pairCutsCG;
1ba767ec 585
586
587 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
588 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
589 break;
590 default: cout << "No Pair Cuts defined " << endl;
591 }
592 return pairCuts;
593 }
594
2eab2b62 595
596 AliAnalysisCuts* GetPairCutsInvMass(Int_t cutSet) {
597 cout << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>> GetPairCutsInvMass() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl;
598 AliAnalysisCuts* pairCuts=0x0;
599 switch (cutSet) {
600 case kPbPb2011MassLow :
601 AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV");
602 pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.,0.03);
603 break;
604 case kPbPb2011MassMiddle :
605 AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV");
606 pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.12,0.30);
607 break;
608 case kPbPb2011MassHigh :
609 AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV");
610 pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.30,0.50);
611 break;
612 case kPbPb2011MassAll :
613 AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV");
614 pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.0,10.0);
615 break;
616
617 default: cout << "No Pair Cuts defined " << endl;
618 }
619
620 pairCuts = pairCutsInvSelect;
621 return pairCuts;
622 }
623
624
625 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){
626 AliAnalysisCuts* pairCut=0x0;
627 switch (cutSet) {
628 case kPbPb2011RP:
629 AliDielectronCutGroup* pairCutsPhiRP =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
630 AliDielectronVarCuts* pairCutsPhi1 =new AliDielectronVarCuts("Phi Cuts","-pi/4<Phi<pi/4");
631 pairCutsPhi1->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi()/4., TMath::Pi()/4.);
632 AliDielectronVarCuts* pairCutsPhi2 =new AliDielectronVarCuts("Phi Cuts","3*pi/4<Phi");
633 pairCutsPhi2->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, 3.0*TMath::Pi()/4., TMath::Pi());
634 AliDielectronVarCuts* pairCutsPhi3 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
635 pairCutsPhi3->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi(),(-3.0)*TMath::Pi()/4.);
636
637 pairCutsPhiRP->AddCut(pairCutsPhi1);
638 pairCutsPhiRP->AddCut(pairCutsPhi2);
639 pairCutsPhiRP->AddCut(pairCutsPhi3);
640
641 pairCuts = pairCutsPhiRP;
642
643 break;
644 case kPbPb2011Mag:
645 AliDielectronCutGroup* pairCutsPhiMag=new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
646 AliDielectronVarCuts* pairCutsPhi4 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
647 pairCutsPhi4->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, TMath::Pi()/4.,3.0*TMath::Pi()/4.);
648 AliDielectronVarCuts* pairCutsPhi5 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
649 pairCutsPhi5->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2,(-3.0)*TMath::Pi()/4.,(-1.0)*TMath::Pi()/4.);
650
651 pairCutsPhiMag->AddCut(pairCutsPhi4);
652 pairCutsPhiMag->AddCut(pairCutsPhi5);
653
654 pairCuts = pairCutsPhiMag;
655 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
656 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
657 break;
658 default: cout << "No Pair Cuts defined " << endl;
659 }
660 return pairCuts;
661 }
662
663
664
665
666 //*******************************************************************************
667 //*******************************************************************************
668 //** ESD TRACK CUTS TUNED FOR AGREEMENT BETWEEN AODS AND ESDS ******************
669 //** NOT NECESSARILY 100% OPTIMIZED FOR DIEL-ANALYSIS ******************
670 //*******************************************************************************
671 //*******************************************************************************
672
673 //WHEN RUNNING ON ESDs: LOAD Default Cuts for AODs
1ba767ec 674 AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
675 AliESDtrackCuts* esdTrackCutsH = 0x0;
676 switch (cutSet) {
677 case kPbPb2011NoPID:
678 case kPbPb2011TPCandTOF :
679 case kPbPb2011TPCandTOFHPT:
680 case kPbPb2011TPC :
681 case kPbPb2011TPCandTOFwide :
682 case kPbPb2011TPCorTOF :
683 case kpp2010TPCandTOF :
684 case kpp2010TPCorTOF :
685 // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115
2eab2b62 686
1ba767ec 687
688 esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
689 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
690 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
691 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
1ba767ec 692
2eab2b62 693 //The cuts below should be the onyl ones that are missing
694 //explicitely in the TrackCutsAna method
695 //To be sure, StandardITSTPCTrackCuts is loaded however
696 /*
1ba767ec 697 esdTrackCutsH = new AliESDtrackCuts();
698 esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
699 //Not done so far via dielectron cuts:
700 */
701 /*
702 esdTrackCuts->SetDCAToVertex2D(kFALSE);
703 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
704 esdTrackCuts->SetMaxChi2PerClusterITS(36);
705 */
706
707 break;
2eab2b62 708
1ba767ec 709 default: cout << "No Analysis Track Cut defined " << endl;
710 }
711 return esdTrackCutsH;
712 }
713
1ba767ec 714
2eab2b62 715 //Make/Tighten track Cuts that are *NOT* already
716 //done in the AOD production
717 //**IMPORTANT**: For AODs, select FilterBit
718 //the method is ignored for ESDs
719
1ba767ec 720 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
721 AliDielectronCutGroup* trackCuts=0x0;
722 switch (cutSet) {
723 case kPbPb2011NoPID:
724 case kPbPb2011TPCandTOF :
725 case kPbPb2011TPCandTOFHPT:
726 case kPbPb2011TPC :
727 case kPbPb2011TPCandTOFwide :
728 case kPbPb2011TPCorTOF :
729 case kpp2010TPCandTOF :
730 case kpp2010TPCorTOF :
731 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
732
733 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
734 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
735 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
736 //DCA Cut
737 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
738 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
739 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
740 trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5);
741 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
742 trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs
743 trackCutsDiel->SetRequireITSRefit(kTRUE);
744 trackCutsDiel->SetRequireTPCRefit(kTRUE);
745
746 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
747// trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0);
748 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0);
749 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before,
750 //due to AOD production
751 trackCuts->AddCut(trackCutsDiel);
752 trackCuts->AddCut(trackCutsAOD);
753 break;
2eab2b62 754
755 case kPbPb2011pidITSTPCTOF:
756 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
757 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
758 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
759 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 4.0, 100.0); // means at least 2 with PID
760 trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0);
761 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0);
762 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); // lower limit 0.8 in most filterbits! // 1.1 since 26.02.2014
763 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
764 trackCutsDiel->SetAODFilterBit(1<<4); // (=16) filterbit 4! //GetStandardITSTPCTrackCuts2011(kFALSE); loose DCA, 2D cut
765 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
766
767 cgTrackCutsAnaSPDfirst = new AliDielectronCutGroup("cgTrackCutsAnaSPDfirst","cgTrackCutsAnaSPDfirst",AliDielectronCutGroup::kCompAND);
768 cgTrackCutsAnaSPDfirst->AddCut(trackCutsDiel);
769 cgTrackCutsAnaSPDfirst->AddCut(trackCutsAOD);
770 trackCuts = cgTrackCutsAnaSPDfirst;
771 break;
772
773
774
1ba767ec 775 default: cout << "No Analysis Track Cut defined " << endl;
776 }
777 return trackCuts;
778 }
779
2eab2b62 780
781 //Possibly different cut sets for Prefilter step
782 //Not used at the moment
1ba767ec 783 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
2eab2b62 784 AliDielectronCutGroup* trackCuts=0x0;
1ba767ec 785 switch (cutSet) {
786 case kPbPb2011NoPID:
787 case kPbPb2011TPCandTOF :
788 case kPbPb2011TPCandTOFHPT:
789 case kPbPb2011TPCorTOF :
790 case kpp2010TPCandTOF :
791 case kpp2010TPCorTOF :
2eab2b62 792 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
793
794 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
795 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,0.2);
796 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
797 //DCA Cut
798 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
799 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
800 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
801 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
802 trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA
803 trackCutsDiel->SetRequireITSRefit(kTRUE);
804
805 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
806 trackCuts->AddCut(trackCutsDiel);
807 trackCuts->AddCut(trackCutsAOD);
808 // cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
1ba767ec 809 break;
2eab2b62 810
811 case kPbPb2011pidITSTPCTOF:
812
813 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
814 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
815 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
816 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
817 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
818 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
819 trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA(???) // maybe use FilterBit(2) instead!
820
821 cgTrackCutsPre = new AliDielectronCutGroup("cgTrackCutsPre","cgTrackCutsPre",AliDielectronCutGroup::kCompAND);
822 cgTrackCutsPre->AddCut(trackCutsDiel);
823 cgTrackCutsPre->AddCut(trackCutsAOD);
824 trackCuts = cgTrackCutsPre;
825 break;
826
1ba767ec 827 default: cout << "No Pre-Track Cut defined " << endl;
828 }
829 return trackCuts;
830 }
831
832};