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