]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/LMEECutLibAsako.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / LMEECutLibAsako.C
CommitLineData
931f8b00 1class LMEECutLibAsako {
2
3public:
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,
13 kCUTSETMAX
14 };
15
16 static enum LMMECentSel {
17 kPbPb2011Central,
18 kPbPb2011SemiCentral1,
19 kPbPb2011SemiCentral2,
20 kPbPb2011Peripheral,
21 kCENTSELMAX
22 };
23
24 static enum LMEEPairCutSet{
25 kPbPb2011RP,
26 kPbPb2011Mag,
27 //kPbPb2011RPxy,
28 //kPbPb2011RPxz,
29
30 kPbPb2011MassLow,
31 kPbPb2011MassMiddle,
32 kPbPb2011MassHigh,
33 kPbPb2011MassAll,
34
35
36
37 kPAIRCUTSETMAX
38 };
39
40 //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};
41
42
43 LMEECutLib() {}
44
45 AliDielectronEventCuts* GetEventCuts(Int_t cutSet);
46 AliAnalysisCuts* GetCentralityCuts(Int_t centSel);
47 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet);
48 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);
49
50 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet);
51 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet);
52
53 AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
54 AliAnalysisCuts* GetPairCuts(Int_t cutSet);
55
56 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet);
57 AliAnalysisCuts* GetPairCuts4(Int_t cutSet);
58
59 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet);
60 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet);
61
62
63
64
65 AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {
66 AliDielectronEventCuts* eventCuts = 0x0;
67 switch (cutSet) {
68 case kPbPb2011NoPID:
69 case kPbPb2011TPCandTOF :
70 case kPbPb2011TPCandTOFHPT:
71 case kPbPb2011TPC :
72 case kPbPb2011TPCandTOFwide :
73 case kPbPb2011TPCorTOF :
74 case kpp2010TPCandTOF :
75 case kpp2010TPCorTOF :
76 eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
77 eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD
78 //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD
79 // eventCuts->SetCentralityRange(0.0,80.0);
80 eventCuts->SetRequireVertex();
81 eventCuts->SetMinVtxContributors(1);
82 eventCuts->SetVertexZ(-10.,10.);
83 break;
84 default: cout << "No Event Cut defined" << endl;
85 }
86 return eventCuts;
87 }
88
89 AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
90 AliDielectronVarCuts* centCuts = 0x0;
91 switch (centSel) {
92 case kPbPb2011Central:
93 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
94 centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
95 break;
96 case kPbPb2011SemiCentral1:
97 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1");
98 //Restrict to 50%, Trigger selction
99 centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.);
100 break;
101 case kPbPb2011SemiCentral2:
102 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2");
103 //Restrict to 50%, Trigger selction
104 centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);//
105 break;
106 case kPbPb2011Peripheral:
107 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
108 centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
109 break;
110 default: cout << "No Centrality selected" << endl;
111 }
112 return centCuts;
113 }
114
115
116 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
117 AliDielectronTrackRotator* trackRotator = 0x0;
118 switch (cutSet) {
119 case kPbPb2011NoPID:
120 case kPbPb2011TPCandTOF :
121 case kPbPb2011TPCandTOFHPT:
122 case kPbPb2011TPC :
123 case kPbPb2011TPCandTOFwide :
124 case kPbPb2011TPCorTOF :
125 case kpp2010TPCandTOF :
126 case kpp2010TPCorTOF :
127 trackRotator = new AliDielectronTrackRotator();
128 trackRotator->SetIterations(20);
129 trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);
130 trackRotator->SetStartAnglePhi(TMath::Pi());
131 break;
132 default: cout << "No Rotator defined" << endl;
133 }
134 return trackRotator;
135 }
136
137
138 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
139 AliDielectronMixingHandler* mixingHandler = 0x0;
140 switch (cutSet) {
141 case kPbPb2011TPCorTOF :
142 /*
143 mixingHandler = new AliDielectronMixingHandler;
144 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
145 mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
146 mixingHandler->SetDepth(25);
147 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
148 break;
149 */
150 case kPbPb2011NoPID:
151 case kPbPb2011TPCandTOF :
152 case kPbPb2011TPCandTOFHPT:
153 case kPbPb2011TPC :
154 case kPbPb2011TPCandTOFwide :
155 mixingHandler = new AliDielectronMixingHandler;
156 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
157 mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80");
158 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)");
159 mixingHandler->SetDepth(50);
160 //mixingHandler->SetDepth(15);
161 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
162 break;
163 case kpp2010TPCandTOF :
164 case kpp2010TPCorTOF :
165 mixingHandler = new AliDielectronMixingHandler;
166 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
167 mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
168 //might want to add multiplicity?
169 mixingHandler->SetDepth(50);
170 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
171 break;
172 default: cout << "No Rotator defined" << endl;
173 }
174 return mixingHandler;
175 }
176
177
178 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
179 AliAnalysisCuts* anaCuts=0x0;
180
181 // + [2] added for Dec2010 Cut!
182 TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20);
183 /* until Nov2010
184 lowerCut->SetParameter(0, -2.7);
185 lowerCut->SetParameter(1, -0.4357);
186 */
187 /* 18.01.2011 ALiHFEpid.cxx */
188 lowerCut->SetParameter(0,-3.7);
189 lowerCut->SetParameter(1,-0.8);
190 lowerCut->SetParameter(2,-0.35);
191
192 if (MCenabled) { //overwrite parameters
193 lowerCut->SetParameter(0,-2.5);
194 lowerCut->SetParameter(2,-2.2);
195 }
196
197 //---------------------------------------------
198 AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");
199 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.0,100.,kFALSE);
200 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
201
202
203 AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
204 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
205 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
206 pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
207
208 AliDielectronPID *pidTPChardTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
209 pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,lowerCut,3.,0.0,100.,kFALSE);
210 pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
211 pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);
212 pidTPChardTOF->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);
213 pidTPChardTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 100., kFALSE );
214 //___________________________________________
215 AliDielectronPID *pidTT = new AliDielectronPID("TPC-TOF","TPC-TOF");
216 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-1.5,3.,0.2,0.4,kFALSE);
217 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3,3.,0.4,100.,kFALSE);
218 pidTT->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.2 , 100., kFALSE );
219
220 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
221 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,100.,kTRUE);
222 pidTT->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,100.,kTRUE);
223 //___________________________________________
224 AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");
225 if (MCenabled) {
226 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.);
227 }
228 else {
229 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
230 }
231 //___________________________________________
232
233 AliDielectronVarCuts *pidTPCsignalWide = new AliDielectronVarCuts("pidTPCsignalWide","cut on the TPC signal");
234 pidTPCsignalWide->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
235
236
237 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
238 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.4,3.0);
239
240 AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
241 pTPC->AddCut(AliDielectronVarManager::kPt,.4,2.0);
242
243 AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
244 pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);
245
246 switch (cutSet) {
247 case kPbPb2011NoPID:
248 AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
249 cgSecondTrackFilterNoPID->AddCut(pTPC);
250 anaCuts= cgSecondTrackFilterNoPID;
251 break;
252 case kPbPb2011TPCandTOFHPT:
253 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
254 cgSecondTrackFilterPIDTPC1->AddCut(pTPCHPT);
255 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);
256 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
257 anaCuts = cgSecondTrackFilterPIDTPC1;
258
259 case kPbPb2011TPCandTOF :
260 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
261 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
262 //cgSecondTrackFilterPIDTPC1->AddCut(pidTPChardTOF);
263 // cgSecondTrackFilterPIDTPC1->AddCut(pidTPCTOFeOnly);
264 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
265 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
266 anaCuts = cgSecondTrackFilterPIDTPC1;
267 break;
268
269 case kPbPb2011TPC :
270 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
271 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
272 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);
273 anaCuts = cgSecondTrackFilterPIDTPC1;
274 break;
275
276 case kPbPb2011TPCandTOFwide :
277 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
278 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
279 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
280 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);
281 anaCuts = cgSecondTrackFilterPIDTPC1;
282 break;
283
284 case kPbPb2011TPCorTOF :
285 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);
286 cgSecondTrackFilterPIDTPC2->AddCut(pMin);
287 cgSecondTrackFilterPIDTPC2->AddCut(pidTT);
288 cgSecondTrackFilterPIDTPC2->AddCut(pidTPCsignal);
289 anaCuts = cgSecondTrackFilterPIDTPC2;
290 break;
291
292 case kpp2010TPCandTOF :
293 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
294 cgSecondTrackFilterPIDTPC->AddCut(pTPC);
295 //cgSecondTrackFilterPIDTPC->AddCut(pidTPChardTOF);
296 cgSecondTrackFilterPIDTPC->AddCut(pidTPCTOFeOnly);
297 anaCuts = cgSecondTrackFilterPIDTPC;
298 break;
299 case kpp2010TPCorTOF :
300 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
301 cgSecondTrackFilterPIDTPC->AddCut(pMin);
302 cgSecondTrackFilterPIDTPC->AddCut(pidTT);
303 anaCuts = cgSecondTrackFilterPIDTPC;
304 break;
305 default: cout << "No Analysis PID Cut defined " << endl;
306 }
307 return anaCuts;
308 }
309
310 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
311 AliAnalysisCuts* anaCuts=0x0;
312 switch (cutSet) {
313 case kPbPb2011NoPID:
314 case kPbPb2011TPCandTOF :
315 case kPbPb2011TPCandTOFHPT:
316 case kPbPb2011TPC :
317 case kPbPb2011TPCandTOFwide :
318 case kPbPb2011TPCorTOF :
319 case kpp2010TPCandTOF :
320 case kpp2010TPCorTOF :
321 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
322 AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
323 AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");
324 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
325 cgITSTPC->AddCut(pidITSTPC);
326
327
328 AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
329 AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");
330 pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
331 cgITSSA->AddCut(pidITSSA);
332 // cgITSSA->AddCut(GetTrackCutsPre(cutSet));
333
334 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
335 cgInitialTrackFilter->AddCut(cgITSTPC);
336 cgInitialTrackFilter->AddCut(cgITSSA);
337 anaCuts = cgInitialTrackFilter;
338 break;
339 default: cout << "No Pre-PID Cut defined " << endl;
340 }
341 return anaCuts;
342 }
343
344
345
346 AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {
347 AliAnalysisCuts* pairCuts=0x0;
348 switch (cutSet) {
349 case kPbPb2011TPCorTOF :
350 case kpp2010TPCandTOF :
351 AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
352 pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
353 pairCuts = pairCutsV;
354 break;
355 case kPbPb2011NoPID:
356 case kPbPb2011TPCandTOF :
357 case kPbPb2011TPC :
358 case kPbPb2011TPCandTOFHPT:
359 case kPbPb2011TPCandTOFwide :
360 case kpp2010TPCorTOF :
361 if (!togglePC) {
362
363 AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
364 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
365 pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
366 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0);
367 pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
368 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3);
369 pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");
370 pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.3, 99999.);
371 pairCutsCG->AddCut(pairCutsPhiv);
372 pairCutsCG->AddCut(pairCutsInvM);
373 pairCutsCG2->AddCut(pairCutsInvMgood);
374 pairCutsCG2->AddCut(pairCutsCG);
375 pairCuts = pairCutsCG2;
376 }
377 else {
378 AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
379 pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
380 pairCuts = pairCutsV;
381 }
382 break;
383 default: cout << "No Pair Cuts defined " << endl;
384 }
385 return pairCuts;
386 }
387
388
389 AliAnalysisCuts* GetPairCuts(Int_t cutSet) {
390 AliAnalysisCuts* pairCuts=0x0;
391 switch (cutSet) {
392 case kPbPb2011TPCorTOF :
393 case kpp2010TPCandTOF :
394 AliDielectronVarCuts* pairCutsM=0x0;
395 pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
396 pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
397 pairCuts = pairCutsM;
398 break;
399 case kPbPb2011NoPID:
400 case kPbPb2011TPCandTOF :
401 case kPbPb2011TPC :
402 case kPbPb2011TPCandTOFwide :
403 case kPbPb2011TPCandTOFHPT:
404 case kpp2010TPCorTOF :
405
406 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
407 AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
408 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
409 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
410 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.3);
411 pairCutsCG->AddCut(pairCutsPhiv);
412 pairCutsCG->AddCut(pairCutsInvM);
413
414 pairCuts = pairCutsCG;
415
416
417 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
418 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
419 break;
420 default: cout << "No Pair Cuts defined " << endl;
421 }
422 return pairCuts;
423 }
424
425 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){
426 AliAnalysisCuts* pairCut=0x0;
427 switch (cutSet) {
428 case kPbPb2011RP:
429 AliDielectronCutGroup* pairCutsPhiRP =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
430 AliDielectronVarCuts* pairCutsPhi1 =new AliDielectronVarCuts("Phi Cuts","-pi/4<Phi<pi/4");
431 pairCutsPhi1->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi()/4., TMath::Pi()/4.);
432 AliDielectronVarCuts* pairCutsPhi2 =new AliDielectronVarCuts("Phi Cuts","3*pi/4<Phi");
433 pairCutsPhi2->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, 3.0*TMath::Pi()/4., TMath::Pi());
434 AliDielectronVarCuts* pairCutsPhi3 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
435 pairCutsPhi3->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi(),(-3.0)*TMath::Pi()/4.);
436
437 pairCutsPhiRP->AddCut(pairCutsPhi1);
438 pairCutsPhiRP->AddCut(pairCutsPhi2);
439 pairCutsPhiRP->AddCut(pairCutsPhi3);
440
441 pairCuts = pairCutsPhiRP;
442
443 break;
444 case kPbPb2011Mag:
445 AliDielectronCutGroup* pairCutsPhiMag=new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR);
446 AliDielectronVarCuts* pairCutsPhi4 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
447 pairCutsPhi4->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, TMath::Pi()/4.,3.0*TMath::Pi()/4.);
448 AliDielectronVarCuts* pairCutsPhi5 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi");
449 pairCutsPhi5->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2,(-3.0)*TMath::Pi()/4.,(-1.0)*TMath::Pi()/4.);
450
451 pairCutsPhiMag->AddCut(pairCutsPhi4);
452 pairCutsPhiMag->AddCut(pairCutsPhi5);
453
454 pairCuts = pairCutsPhiMag;
455 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
456 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
457 break;
458 default: cout << "No Pair Cuts defined " << endl;
459 }
460 return pairCuts;
461 }
462
463
464 AliAnalysisCuts* GetPairCuts4(Int_t cutSet) {
465 AliDielectronVarCuts* pairCuts=0x0;
466 switch (cutSet) {
467 case kPbPb2011MassLow :
468 pairCuts = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV");
469 pairCuts->AddCut(AliDielectronVarManager::kM, 0.,0.03);
470 break;
471 case kPbPb2011MassMiddle :
472 pairCuts = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV");
473 pairCuts->AddCut(AliDielectronVarManager::kM, 0.12,0.30);
474 break;
475 case kPbPb2011MassHigh :
476 pairCuts = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV");
477 pairCuts->AddCut(AliDielectronVarManager::kM, 0.30,0.50);
478 break;
479 case kPbPb2011MassAll :
480 pairCuts = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV");
481 pairCuts->AddCut(AliDielectronVarManager::kM, 0.0,10.0);
482 break;
483
484 default: cout << "No Pair Cuts defined " << endl;
485 }
486 return pairCuts;
487 }
488
489
490
491
492
493
494 AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
495 AliESDtrackCuts* esdTrackCutsH = 0x0;
496 switch (cutSet) {
497 case kPbPb2011NoPID:
498 case kPbPb2011TPCandTOF :
499 case kPbPb2011TPCandTOFHPT:
500 case kPbPb2011TPC :
501 case kPbPb2011TPCandTOFwide :
502 case kPbPb2011TPCorTOF :
503 case kpp2010TPCandTOF :
504 case kpp2010TPCorTOF :
505 // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115
506
507 esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
508 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
509 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
510 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
511 /*
512
513 esdTrackCutsH = new AliESDtrackCuts();
514 esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
515 //Not done so far via dielectron cuts:
516 */
517 /*
518 esdTrackCuts->SetDCAToVertex2D(kFALSE);
519 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
520 esdTrackCuts->SetMaxChi2PerClusterITS(36);
521 */
522
523 break;
524 default: cout << "No Analysis Track Cut defined " << endl;
525 }
526 return esdTrackCutsH;
527 }
528
529 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
530 AliDielectronCutGroup* trackCuts=0x0;
531 switch (cutSet) {
532 case kPbPb2011NoPID:
533 case kPbPb2011TPCandTOF :
534 case kPbPb2011TPCandTOFHPT:
535 case kPbPb2011TPC :
536 case kPbPb2011TPCandTOFwide :
537 case kPbPb2011TPCorTOF :
538 case kpp2010TPCandTOF :
539 case kpp2010TPCorTOF :
540 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
541
542 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
543 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
544 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
545 //DCA Cut
546 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
547 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
548 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
549 trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5);
550 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
551 trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs
552 trackCutsDiel->SetRequireITSRefit(kTRUE);
553 trackCutsDiel->SetRequireTPCRefit(kTRUE);
554
555 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
556 //trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0);
557 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0);
558 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before,
559 //due to AOD production
560 trackCuts->AddCut(trackCutsDiel);
561 trackCuts->AddCut(trackCutsAOD);
562 break;
563 default: cout << "No Analysis Track Cut defined " << endl;
564 }
565 return trackCuts;
566 }
567
568 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
569 AliESDtrackCuts* trackCuts=0x0;
570 switch (cutSet) {
571 case kPbPb2011NoPID:
572 case kPbPb2011TPCandTOF :
573 case kPbPb2011TPCandTOFHPT:
574 case kPbPb2011TPCorTOF :
575 case kpp2010TPCandTOF :
576 case kpp2010TPCorTOF :
577 /*
578 trackCuts = new AliESDtrackCuts();
579 trackCuts->SetDCAToVertex2D(kTRUE);
580 trackCuts->SetMaxDCAToVertexZ(3.0);
581 trackCuts->SetMaxDCAToVertexXY(1.0);
582 trackCuts->SetEtaRange( -0.84 , 0.84 );
583 trackCuts->SetPtRange( 0.05 , 0.5);
584 trackCuts->SetAcceptKinkDaughters(kFALSE);
585 trackCuts->SetRequireITSRefit(kTRUE);
586 trackCuts->SetRequireITSStandAlone(kTRUE);
587 trackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
588 trackCuts->SetMinNClustersITS(3); //PhotonGroup-Dalitz: 2?!
589 */
590 cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
591 break;
592 default: cout << "No Pre-Track Cut defined " << endl;
593 }
594 return trackCuts;
595 }
596
597};
598
599