1 class LMEECutLibAsako {
4 static enum LMMECutSet {
8 kPbPb2011TPC, //TOF required, more relaxed cut on TPC
9 kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC
16 static enum LMMECentSel {
18 kPbPb2011SemiCentral1,
19 kPbPb2011SemiCentral2,
24 static enum LMEEPairCutSet{
40 //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"};
45 AliDielectronEventCuts* GetEventCuts(Int_t cutSet);
46 AliAnalysisCuts* GetCentralityCuts(Int_t centSel);
47 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet);
48 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet);
50 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet);
51 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet);
53 AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
54 AliAnalysisCuts* GetPairCuts(Int_t cutSet);
56 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet);
57 AliAnalysisCuts* GetPairCuts4(Int_t cutSet);
59 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet);
60 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet);
65 AliDielectronEventCuts* GetEventCuts(Int_t cutSet) {
66 AliDielectronEventCuts* eventCuts = 0x0;
69 case kPbPb2011TPCandTOF :
70 case kPbPb2011TPCandTOFHPT:
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.);
84 default: cout << "No Event Cut defined" << endl;
89 AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
90 AliDielectronVarCuts* centCuts = 0x0;
92 case kPbPb2011Central:
93 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
94 centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
96 case kPbPb2011SemiCentral1:
97 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1");
98 //Restrict to 50%, Trigger selction
99 centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.);
101 case kPbPb2011SemiCentral2:
102 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2");
103 //Restrict to 50%, Trigger selction
104 centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);//
106 case kPbPb2011Peripheral:
107 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
108 centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
110 default: cout << "No Centrality selected" << endl;
116 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
117 AliDielectronTrackRotator* trackRotator = 0x0;
120 case kPbPb2011TPCandTOF :
121 case kPbPb2011TPCandTOFHPT:
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());
132 default: cout << "No Rotator defined" << endl;
138 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
139 AliDielectronMixingHandler* mixingHandler = 0x0;
141 case kPbPb2011TPCorTOF :
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);
151 case kPbPb2011TPCandTOF :
152 case kPbPb2011TPCandTOFHPT:
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);
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);
172 default: cout << "No Rotator defined" << endl;
174 return mixingHandler;
178 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
179 AliAnalysisCuts* anaCuts=0x0;
181 // + [2] added for Dec2010 Cut!
182 TF1 *lowerCut = new TF1("lowerCut", "[0] * TMath::Exp([1]*x) + [2]", 0, 20);
184 lowerCut->SetParameter(0, -2.7);
185 lowerCut->SetParameter(1, -0.4357);
187 /* 18.01.2011 ALiHFEpid.cxx */
188 lowerCut->SetParameter(0,-3.7);
189 lowerCut->SetParameter(1,-0.8);
190 lowerCut->SetParameter(2,-0.35);
192 if (MCenabled) { //overwrite parameters
193 lowerCut->SetParameter(0,-2.5);
194 lowerCut->SetParameter(2,-2.2);
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 );
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 );
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 );
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");
226 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.);
229 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
231 //___________________________________________
233 AliDielectronVarCuts *pidTPCsignalWide = new AliDielectronVarCuts("pidTPCsignalWide","cut on the TPC signal");
234 pidTPCsignalWide->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
237 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
238 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.4,3.0);
240 AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
241 pTPC->AddCut(AliDielectronVarManager::kPt,.4,2.0);
243 AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
244 pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);
248 AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
249 cgSecondTrackFilterNoPID->AddCut(pTPC);
250 anaCuts= cgSecondTrackFilterNoPID;
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;
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;
270 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
271 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
272 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignalWide);
273 anaCuts = cgSecondTrackFilterPIDTPC1;
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;
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;
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;
299 case kpp2010TPCorTOF :
300 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
301 cgSecondTrackFilterPIDTPC->AddCut(pMin);
302 cgSecondTrackFilterPIDTPC->AddCut(pidTT);
303 anaCuts = cgSecondTrackFilterPIDTPC;
305 default: cout << "No Analysis PID Cut defined " << endl;
310 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
311 AliAnalysisCuts* anaCuts=0x0;
314 case kPbPb2011TPCandTOF :
315 case kPbPb2011TPCandTOFHPT:
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);
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));
334 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
335 cgInitialTrackFilter->AddCut(cgITSTPC);
336 cgInitialTrackFilter->AddCut(cgITSSA);
337 anaCuts = cgInitialTrackFilter;
339 default: cout << "No Pre-PID Cut defined " << endl;
346 AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {
347 AliAnalysisCuts* pairCuts=0x0;
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;
356 case kPbPb2011TPCandTOF :
358 case kPbPb2011TPCandTOFHPT:
359 case kPbPb2011TPCandTOFwide :
360 case kpp2010TPCorTOF :
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;
378 AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
379 pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
380 pairCuts = pairCutsV;
383 default: cout << "No Pair Cuts defined " << endl;
389 AliAnalysisCuts* GetPairCuts(Int_t cutSet) {
390 AliAnalysisCuts* pairCuts=0x0;
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;
400 case kPbPb2011TPCandTOF :
402 case kPbPb2011TPCandTOFwide :
403 case kPbPb2011TPCandTOFHPT:
404 case kpp2010TPCorTOF :
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);
414 pairCuts = pairCutsCG;
417 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
418 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
420 default: cout << "No Pair Cuts defined " << endl;
425 AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){
426 AliAnalysisCuts* pairCut=0x0;
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.);
437 pairCutsPhiRP->AddCut(pairCutsPhi1);
438 pairCutsPhiRP->AddCut(pairCutsPhi2);
439 pairCutsPhiRP->AddCut(pairCutsPhi3);
441 pairCuts = pairCutsPhiRP;
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.);
451 pairCutsPhiMag->AddCut(pairCutsPhi4);
452 pairCutsPhiMag->AddCut(pairCutsPhi5);
454 pairCuts = pairCutsPhiMag;
455 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
456 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
458 default: cout << "No Pair Cuts defined " << endl;
464 AliAnalysisCuts* GetPairCuts4(Int_t cutSet) {
465 AliDielectronVarCuts* pairCuts=0x0;
467 case kPbPb2011MassLow :
468 pairCuts = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV");
469 pairCuts->AddCut(AliDielectronVarManager::kM, 0.,0.03);
471 case kPbPb2011MassMiddle :
472 pairCuts = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV");
473 pairCuts->AddCut(AliDielectronVarManager::kM, 0.12,0.30);
475 case kPbPb2011MassHigh :
476 pairCuts = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV");
477 pairCuts->AddCut(AliDielectronVarManager::kM, 0.30,0.50);
479 case kPbPb2011MassAll :
480 pairCuts = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV");
481 pairCuts->AddCut(AliDielectronVarManager::kM, 0.0,10.0);
484 default: cout << "No Pair Cuts defined " << endl;
494 AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
495 AliESDtrackCuts* esdTrackCutsH = 0x0;
498 case kPbPb2011TPCandTOF :
499 case kPbPb2011TPCandTOFHPT:
501 case kPbPb2011TPCandTOFwide :
502 case kPbPb2011TPCorTOF :
503 case kpp2010TPCandTOF :
504 case kpp2010TPCorTOF :
505 // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115
507 esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
508 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
509 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
510 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
513 esdTrackCutsH = new AliESDtrackCuts();
514 esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
515 //Not done so far via dielectron cuts:
518 esdTrackCuts->SetDCAToVertex2D(kFALSE);
519 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
520 esdTrackCuts->SetMaxChi2PerClusterITS(36);
524 default: cout << "No Analysis Track Cut defined " << endl;
526 return esdTrackCutsH;
529 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
530 AliDielectronCutGroup* trackCuts=0x0;
533 case kPbPb2011TPCandTOF :
534 case kPbPb2011TPCandTOFHPT:
536 case kPbPb2011TPCandTOFwide :
537 case kPbPb2011TPCorTOF :
538 case kpp2010TPCandTOF :
539 case kpp2010TPCorTOF :
540 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
542 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
543 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
544 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
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);
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);
563 default: cout << "No Analysis Track Cut defined " << endl;
568 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
569 AliESDtrackCuts* trackCuts=0x0;
572 case kPbPb2011TPCandTOF :
573 case kPbPb2011TPCandTOFHPT:
574 case kPbPb2011TPCorTOF :
575 case kpp2010TPCandTOF :
576 case kpp2010TPCorTOF :
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?!
590 cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
592 default: cout << "No Pre-Track Cut defined " << endl;