]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGDQ/dielectron/macrosLMEE/LMEECutLibAOD.C
Merge remote-tracking branch 'origin/master' into flatdev
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / macrosLMEE / LMEECutLibAOD.C
CommitLineData
9f00b65f 1class LMEECutLib {
2
3 public:
4 static enum LMMECutSet {
885e1457 5 kPbPb2011NoPID,
9f00b65f 6 kPbPb2011TPCandTOF,
c29de33f 7 kPbPb2011TPCandTOFHPT,
b3a9b3e3 8 kPbPb2011TPC, //TOF required, more relaxed cut on TPC
4118e72c 9 kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC
9f00b65f 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
4118e72c 36 AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE);
9f00b65f 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) {
885e1457 48 case kPbPb2011NoPID:
9f00b65f 49 case kPbPb2011TPCandTOF :
c29de33f 50 case kPbPb2011TPCandTOFHPT:
b3a9b3e3 51 case kPbPb2011TPC :
4118e72c 52 case kPbPb2011TPCandTOFwide :
9f00b65f 53 case kPbPb2011TPCorTOF :
54 case kpp2010TPCandTOF :
55 case kpp2010TPCorTOF :
6783184e 56 //Basic Event Cuts for pp and Pb-Pb, additional cuts may be in the AddTask
9f00b65f 57 eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0");
c787ecdf 58 eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD
840abc7f 59 //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD
ee00eb9d 60 // eventCuts->SetCentralityRange(0.0,80.0);
9f00b65f 61 eventCuts->SetRequireVertex();
62 eventCuts->SetMinVtxContributors(1);
63 eventCuts->SetVertexZ(-10.,10.);
64 break;
65 default: cout << "No Event Cut defined" << endl;
66 }
67 return eventCuts;
68 }
69
6783184e 70
71 //Selection of relatively 'flat' centralities
9f00b65f 72 AliAnalysisCuts* GetCentralityCuts(Int_t centSel) {
73 AliDielectronVarCuts* centCuts = 0x0;
74 switch (centSel) {
75 case kPbPb2011Central:
76 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central");
77 centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.);
78 break;
79 case kPbPb2011SemiCentral:
80 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral");
81 //Restrict to 50%, Trigger selction
4118e72c 82 centCuts->AddCut(AliDielectronVarManager::kCentrality,20.,50.);
9f00b65f 83 break;
84 case kPbPb2011Peripheral:
85 centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral");
86 centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.);
87 break;
88 default: cout << "No Centrality selected" << endl;
89 }
90 return centCuts;
91 }
92
93
6783184e 94 //Basic track rotator settings from J/Psi, more investigation needed
9f00b65f 95 AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) {
96 AliDielectronTrackRotator* trackRotator = 0x0;
97 switch (cutSet) {
885e1457 98 case kPbPb2011NoPID:
9f00b65f 99 case kPbPb2011TPCandTOF :
c29de33f 100 case kPbPb2011TPCandTOFHPT:
b3a9b3e3 101 case kPbPb2011TPC :
4118e72c 102 case kPbPb2011TPCandTOFwide :
9f00b65f 103 case kPbPb2011TPCorTOF :
104 case kpp2010TPCandTOF :
105 case kpp2010TPCorTOF :
106 trackRotator = new AliDielectronTrackRotator();
107 trackRotator->SetIterations(20);
108 trackRotator->SetConeAnglePhi(TMath::Pi()/180*165);
109 trackRotator->SetStartAnglePhi(TMath::Pi());
110 break;
111 default: cout << "No Rotator defined" << endl;
112 }
113 return trackRotator;
114 }
115
116
117 AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) {
118 AliDielectronMixingHandler* mixingHandler = 0x0;
119 switch (cutSet) {
120 case kPbPb2011TPCorTOF :
885e1457 121 case kPbPb2011NoPID:
9f00b65f 122 case kPbPb2011TPCandTOF :
c29de33f 123 case kPbPb2011TPCandTOFHPT:
b3a9b3e3 124 case kPbPb2011TPC :
4118e72c 125 case kPbPb2011TPCandTOFwide :
9f00b65f 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);
4118e72c 131 mixingHandler->SetDepth(15);
9f00b65f 132 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
133 break;
134 case kpp2010TPCandTOF :
135 case kpp2010TPCorTOF :
6783184e 136 //ATTENTION: Trivial 1 Bin Variable on Nacc needed: Not understood bug, mixing breaks
137 //when just adding one variable *****************!!!
9f00b65f 138 mixingHandler = new AliDielectronMixingHandler;
139 mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10");
140 mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000");
141 //might want to add multiplicity?
142 mixingHandler->SetDepth(50);
143 mixingHandler->SetMixType(AliDielectronMixingHandler::kAll);
144 break;
145 default: cout << "No Rotator defined" << endl;
146 }
147 return mixingHandler;
148 }
149
150
151 AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) {
152 AliAnalysisCuts* anaCuts=0x0;
153
6783184e 154 //-----------------------------------------------
155 //Define different PID Cuts, that are used later
156 //-----------------------------------------------
157
158 //TPC: UPPER HALF inclusion of electron
159 // 3sigma exclusion of Pions
160 //TOF: 3sigma inclusion of electrons
9f00b65f 161 AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF");
6783184e 162 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.,3.,0.0,100.,kFALSE);
163 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
164 pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );
165
166 //TPC: 3sigma inclusion of electron
167 // 3sigma exclusion of Pions
168 //TOF: 3sigma inclusion of electrons in region where p,K cross electrons in TPC
169 AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE");
170 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
171 pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
172 pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE );
173
174 //Apply ITS cuts (see Hongyan's talks):
175 //3 sigma inclusion of electrons in TPC
176 //3 sigma exclusion of pions in TPC
177 //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
178 AliDielectronPID *pidTPCandITSandTOF = new AliDielectronPID("TPC-TOFANDITS","TPC-TOFANDITS");
179 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
180 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
181 pidTPCandITSandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE);
182 pidTPCandITSandTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );
183
184 //Apply ITS cuts (see Hongyan's talks):
185 //3 sigma inclusion of electrons in TPC
186 //3 sigma exclusion of pions in TPC
187 //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination
188 //TOF only IF available!
189 AliDielectronPID *pidTPCandITSTOF = new AliDielectronPID("TPC-TOF-ITS","TPC-TOF-ITS");
190 pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE);
191 pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE);
192 pidTPCandITSTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE,AliDielectronPID::kIfAvailable );
193 pidTPCandITSTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE );
bad90484 194
9f00b65f 195 //___________________________________________
6783184e 196 //Direct cuts on TPC signal used for QM12
9f00b65f 197 AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal");
4118e72c 198 if (MCenabled) {
199 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.);
200 }
201 else {
9f00b65f 202 pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.);
4118e72c 203 }
9f00b65f 204 //___________________________________________
205
6783184e 206 //low pT cut-off 0.4 - Pb-Pb
9f00b65f 207 AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4");
6783184e 208 pTPC->AddCut(AliDielectronVarManager::kPt,.4,3.5);
9f00b65f 209
6783184e 210 //low pT cut-off 0.4 - pp
9f00b65f 211 AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2");
7b5dde49 212 pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5);
9f00b65f 213
6783184e 214
215 //Now see what Config actually loads and assemble final cuts
9f00b65f 216 switch (cutSet) {
885e1457 217 case kPbPb2011NoPID:
218 AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND);
219 cgSecondTrackFilterNoPID->AddCut(pTPC);
220 anaCuts= cgSecondTrackFilterNoPID;
221 break;
c29de33f 222 case kPbPb2011TPCandTOFHPT:
6783184e 223 //test Hongyan's cut
c29de33f 224 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
6783184e 225 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
226 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandITSTOF);
c29de33f 227 anaCuts = cgSecondTrackFilterPIDTPC1;
6783184e 228 break;
9f00b65f 229 case kPbPb2011TPCandTOF :
230 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
231 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
6783184e 232 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
9f00b65f 233 anaCuts = cgSecondTrackFilterPIDTPC1;
234 break;
b3a9b3e3 235 case kPbPb2011TPC :
6783184e 236 //Old, QM12
237 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
238 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
239 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
240 anaCuts = cgSecondTrackFilterPIDTPC1;
241 break;
b3a9b3e3 242
4118e72c 243 case kPbPb2011TPCandTOFwide :
6783184e 244 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
245 cgSecondTrackFilterPIDTPC1->AddCut(pTPC);
246 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF);
247 cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal);
248 anaCuts = cgSecondTrackFilterPIDTPC1;
249 break;
4118e72c 250
9f00b65f 251 case kPbPb2011TPCorTOF :
6783184e 252 //unused
9f00b65f 253 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND);
bad90484 254 cgSecondTrackFilterPIDTPC2->AddCut(pTPC);
6783184e 255// cgSecondTrackFilterPIDTPC2->AddCut(pidTT);
9f00b65f 256 anaCuts = cgSecondTrackFilterPIDTPC2;
257 break;
258 case kpp2010TPCandTOF :
6783184e 259 //unused
9f00b65f 260 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
261 cgSecondTrackFilterPIDTPC->AddCut(pTPC);
6783184e 262 cgSecondTrackFilterPIDTPC->AddCut(pidTPCandTOF);
9f00b65f 263 anaCuts = cgSecondTrackFilterPIDTPC;
264 break;
265 case kpp2010TPCorTOF :
6783184e 266 //unused
9f00b65f 267 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
6783184e 268 cgSecondTrackFilterPIDTPC->AddCut(pTPC);
269 /// cgSecondTrackFilterPIDTPC->AddCut(pidTT);
9f00b65f 270 anaCuts = cgSecondTrackFilterPIDTPC;
271 break;
272 default: cout << "No Analysis PID Cut defined " << endl;
273 }
274 return anaCuts;
275 }
276
6783184e 277
278 //Relaxed PID cuts for additional rejectin step, do not use blindly
9f00b65f 279 AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) {
280 AliAnalysisCuts* anaCuts=0x0;
281 switch (cutSet) {
885e1457 282 case kPbPb2011NoPID:
9f00b65f 283 case kPbPb2011TPCandTOF :
c29de33f 284 case kPbPb2011TPCandTOFHPT:
b3a9b3e3 285 case kPbPb2011TPC :
4118e72c 286 case kPbPb2011TPCandTOFwide :
9f00b65f 287 case kpp2010TPCandTOF :
288 case kpp2010TPCorTOF :
289 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
290 AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND);
291 AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre");
bad90484 292
6783184e 293 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
bad90484 294 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
295 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
296 pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
297 pidITSTPC->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
9f00b65f 298 cgITSTPC->AddCut(pidITSTPC);
f88c2b26 299
bad90484 300 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
6783184e 301 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
bad90484 302 cgITSTPC->AddCut(pTPCHPT);
303
304 cgITSTPC->AddCut(GetTrackCutsAna(cutSet));
305
9f00b65f 306
307 AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND);
308 AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA");
309 pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.);
310 cgITSSA->AddCut(pidITSSA);
bad90484 311 AliDielectronVarCuts *pITSPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
312 pITSPT->AddCut(AliDielectronVarManager::kPt,0.0,0.8);
6783184e 313 cgITSSA->AddCut(pITSPT);
bad90484 314 cgITSSA->AddCut(GetTrackCutsPre(cutSet));
9f00b65f 315
316 AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR);
317 cgInitialTrackFilter->AddCut(cgITSTPC);
318 cgInitialTrackFilter->AddCut(cgITSSA);
319 anaCuts = cgInitialTrackFilter;
320 break;
bad90484 321
322
323 case kPbPb2011TPCorTOF :
324 AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND);
325 AliDielectronCutGroup* cgITSTPCalone = new AliDielectronCutGroup("cgITSTPCalone","cgITSTPCalone",AliDielectronCutGroup::kCompAND);
326 AliDielectronPID *pidITSTPCalone = new AliDielectronPID("TPCpre","TPCpre");
327
6783184e 328 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.);
bad90484 329 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE);
330 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE);
331 pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE);
332 pidITSTPCalone->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE );
333 cgITSTPCalone->AddCut(pidITSTPCalone);
334
335 AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt");
6783184e 336 pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5);
bad90484 337 cgITSTPCalone->AddCut(pTPCHPT);
338
339 cgITSTPCalone->AddCut(GetTrackCutsAna(cutSet));
340
341
342
343 anaCuts = cgITSTPCalone;
344 break;
9f00b65f 345 default: cout << "No Pre-PID Cut defined " << endl;
346 }
347 return anaCuts;
348 }
349
350
4118e72c 351
6783184e 352
353 //Pair Cuts for Analysis step - take care of logic - inverted compared to other PairCuts!!
354 AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) {
355 AliAnalysisCuts* pairCuts=0x0;
356 switch (cutSet) {
357 case kPbPb2011TPCorTOF :
358 case kpp2010TPCandTOF :
359 AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
360 pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
361 pairCuts = pairCutsV;
362 break;
363 case kPbPb2011NoPID:
364 case kPbPb2011TPCandTOF :
365 case kPbPb2011TPC :
366 case kPbPb2011TPCandTOFHPT:
367 case kPbPb2011TPCandTOFwide :
368 case kpp2010TPCorTOF :
369 if (!togglePC) {
370
371 AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR);
372 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
373 pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
374 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0);
375 pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
376 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
377 pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3");
378 pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.05, 99999.);
379 pairCutsCG->AddCut(pairCutsPhiv);
380 pairCutsCG->AddCut(pairCutsInvM);
381 pairCutsCG2->AddCut(pairCutsInvMgood);
382 pairCutsCG2->AddCut(pairCutsCG);
383 pairCuts = pairCutsCG2;
384 }
385 else {
386 AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
387 pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE);
388 pairCuts = pairCutsV;
389 }
390 break;
391 default: cout << "No Pair Cuts defined " << endl;
392 }
393 return pairCuts;
394 }
4118e72c 395
396
6783184e 397
398 //Pair Cuts for PREFILTER step
9f00b65f 399 AliAnalysisCuts* GetPairCuts(Int_t cutSet) {
6783184e 400 AliAnalysisCuts* pairCuts=0x0;
401 switch (cutSet) {
402 case kPbPb2011TPCorTOF :
403 case kpp2010TPCandTOF :
b26482c8 404 AliDielectronVarCuts* pairCutsM=0x0;
405 pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV");
406 pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE);
407 pairCuts = pairCutsM;
9f00b65f 408 break;
885e1457 409 case kPbPb2011NoPID:
9f00b65f 410 case kPbPb2011TPCandTOF :
b3a9b3e3 411 case kPbPb2011TPC :
4118e72c 412 case kPbPb2011TPCandTOFwide :
c29de33f 413 case kPbPb2011TPCandTOFHPT:
6783184e 414/* case kpp2010TPCorTOF :
b26482c8 415
416 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
bad90484 417 //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
418 //pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
b26482c8 419 AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
bad90484 420 pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05);
b26482c8 421 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
bad90484 422 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.01);
b26482c8 423 pairCutsCG->AddCut(pairCutsPhiv);
424 pairCutsCG->AddCut(pairCutsInvM);
6783184e 425*/
426 AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND);
427 AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
428 pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2);
429 //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad");
430 //pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05);
431 AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3");
432 pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05);
433 pairCutsCG->AddCut(pairCutsPhiv);
434 pairCutsCG->AddCut(pairCutsInvM);
435 pairCuts = pairCutsCG;
b26482c8 436
437
438 //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad");
439 //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035);
9f00b65f 440 break;
441 default: cout << "No Pair Cuts defined " << endl;
442 }
443 return pairCuts;
444 }
445
6783184e 446
447
448
449
450 //*******************************************************************************
451 //*******************************************************************************
452 //** ESD TRACK CUTS TUNED FOR AGREEMENT BETWEEN AODS AND ESDS ******************
453 //** NOT NECESSARILY 100% OPTIMIZED FOR DIEL-ANALYSIS ******************
454 //*******************************************************************************
455 //*******************************************************************************
456
457 //WHEN RUNNING ON ESDs: LOAD Default Cuts for AODs
c787ecdf 458 AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) {
459 AliESDtrackCuts* esdTrackCutsH = 0x0;
460 switch (cutSet) {
885e1457 461 case kPbPb2011NoPID:
c787ecdf 462 case kPbPb2011TPCandTOF :
c29de33f 463 case kPbPb2011TPCandTOFHPT:
c787ecdf 464 case kPbPb2011TPC :
465 case kPbPb2011TPCandTOFwide :
466 case kPbPb2011TPCorTOF :
467 case kpp2010TPCandTOF :
468 case kpp2010TPCorTOF :
469 // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115
6783184e 470
c787ecdf 471
472 esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE);
473 esdTrackCutsH->SetMaxDCAToVertexXY(2.4);
474 esdTrackCutsH->SetMaxDCAToVertexZ(3.2);
475 esdTrackCutsH->SetDCAToVertex2D(kTRUE);
c787ecdf 476
6783184e 477 //The cuts below should be the onyl ones that are missing
478 //explicitely in the TrackCutsAna method
479 //To be sure, StandardITSTPCTrackCuts is loaded however
480 /*
c787ecdf 481 esdTrackCutsH = new AliESDtrackCuts();
482 esdTrackCutsH->SetAcceptKinkDaughters(kFALSE);
483 //Not done so far via dielectron cuts:
484 */
485 /*
486 esdTrackCuts->SetDCAToVertex2D(kFALSE);
487 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
488 esdTrackCuts->SetMaxChi2PerClusterITS(36);
489 */
490
491 break;
492 default: cout << "No Analysis Track Cut defined " << endl;
493 }
494 return esdTrackCutsH;
495 }
496
6783184e 497
498 //Make/Tighten track Cuts that are *NOT* already
499 //done in the AOD production
500 //**IMPORTANT**: For AODs, select FilterBit
501 //the method is ignored for ESDs
502
9f00b65f 503 AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) {
504 AliDielectronCutGroup* trackCuts=0x0;
505 switch (cutSet) {
885e1457 506 case kPbPb2011NoPID:
9f00b65f 507 case kPbPb2011TPCandTOF :
c29de33f 508 case kPbPb2011TPCandTOFHPT:
b3a9b3e3 509 case kPbPb2011TPC :
4118e72c 510 case kPbPb2011TPCandTOFwide :
9f00b65f 511 case kPbPb2011TPCorTOF :
512 case kpp2010TPCandTOF :
513 case kpp2010TPCorTOF :
514 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
5520ccf0 515
9f517ec0 516 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
c787ecdf 517 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.);
9f00b65f 518 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
c787ecdf 519 //DCA Cut
9f00b65f 520 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
521 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
ee00eb9d 522 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
f88c2b26 523 trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5);
9f00b65f 524 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
c787ecdf 525 trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs
9f00b65f 526 trackCutsDiel->SetRequireITSRefit(kTRUE);
527 trackCutsDiel->SetRequireTPCRefit(kTRUE);
c787ecdf 528
0332d10a 529 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
c787ecdf 530// trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0);
b3a9b3e3 531 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0);
c787ecdf 532 trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before,
533 //due to AOD production
9f00b65f 534 trackCuts->AddCut(trackCutsDiel);
535 trackCuts->AddCut(trackCutsAOD);
9f00b65f 536 break;
537 default: cout << "No Analysis Track Cut defined " << endl;
538 }
539 return trackCuts;
540 }
541
6783184e 542
543 //Possibly different cut sets for Prefilter step
544 //Not used at the moment
9f00b65f 545 AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) {
bad90484 546 AliDielectronCutGroup* trackCuts=0x0;
9f00b65f 547 switch (cutSet) {
885e1457 548 case kPbPb2011NoPID:
9f00b65f 549 case kPbPb2011TPCandTOF :
c29de33f 550 case kPbPb2011TPCandTOFHPT:
9f00b65f 551 case kPbPb2011TPCorTOF :
552 case kpp2010TPCandTOF :
553 case kpp2010TPCorTOF :
6783184e 554 trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND);
555
556 AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD");
557 trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,0.2);
558 trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84);
559 //DCA Cut
560 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0);
561 trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0);
562 trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0);
563 AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel");
564 trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA
565 trackCutsDiel->SetRequireITSRefit(kTRUE);
566
567 trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst);
568 trackCuts->AddCut(trackCutsDiel);
569 trackCuts->AddCut(trackCutsAOD);
570 // cout << "No Pre-Track Cut defined for AODs at the moment " << endl;
9f00b65f 571 break;
572 default: cout << "No Pre-Track Cut defined " << endl;
573 }
574 return trackCuts;
575 }
576
577};