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