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