]>
Commit | Line | Data |
---|---|---|
bae04e0a | 1 | class LMEECutLib { |
2 | ||
3 | public: | |
4 | static enum LMMECutSet { | |
5 | ||
6 | kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight, | |
7 | kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight, | |
8 | kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight, | |
9 | kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight, | |
10 | kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4, | |
11 | kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4, | |
12 | kPbPb2011_pidITSTPC_trkSPDfirst_3, // (cutset w/o pairing) | |
13 | kPbPb2011_pidTPC_trkSPDfirst_3, // (cutset w/o pairing) | |
14 | kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose, // (cutset w/o pairing) | |
15 | kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose, // (cutset w/o pairing) | |
16 | kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose, // (cutset w/o pairing) | |
17 | kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose, // (cutset w/o pairing) | |
18 | kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1, | |
19 | kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1, // Cutset for Technical Preliminaries for QM2014 (no prefilter used!) | |
20 | kPbPb2011_pidTPCTOF_trkSPDorSDD_1, | |
21 | kPbPb2011_pidTPCTOF_trkSPDfirst_1, | |
22 | kPbPb2011PID_ITSTPCTOFif2, // (NO FULL CUTSET) | |
23 | kPbPb2011PID_TPCTOF3, // (NO FULL CUTSET) | |
24 | kPbPb2011TRK_SDDfirstSPDnone, // (NO FULL CUTSET) complimentary tracks, strictly without SPD, to be combined with others! | |
25 | kPbPb2011TRK_SPDfirst, // (NO FULL CUTSET) main track selection, with SPD first | |
26 | kPbPb2011TRK_SDDfirstSPDnone4cls, // (NO FULL CUTSET) complimentary tracks, strictly without SPD, to be combined with others! | |
27 | kPbPb2011TRK_SPDfirst5cls, // (NO FULL CUTSET) main track selection, with SPD first | |
28 | kPbPb2011_TPCITS_TOFif1, | |
29 | kPbPb2011_TPCTOF_Semi2, // changed PairCutsAna from PhiV to OpeningAngle. prefilter cuts renewed (if applicable) | |
30 | // following cutsets are not complete anymore! | |
31 | kPbPb2011_TPCTOF_Semi1, // old prefilter cuts (leg & pair), some are confusing | |
32 | kPbPb2011NoPID, // pairing disabled in config | |
33 | kPbPb2011TPCandTOF, // this was the final one activated by Christoph! | |
34 | kPbPb2011TPCandTOFHPT, | |
35 | kPbPb2011TPC, //TOF required, more relaxed cut on TPC | |
36 | kPbPb2011TPCandTOFwide, //TOF required, more relaxed cut on TPC | |
37 | kPbPb2011TPCorTOF, | |
38 | kpp2010TPCandTOF, | |
39 | kpp2010TPCorTOF, | |
40 | kCUTSETMAX | |
41 | }; | |
42 | ||
43 | static enum LMMECentSel { | |
44 | kPbPb2011Central, | |
45 | kPbPb2011MidCentral, | |
46 | kPbPb2011SemiCentral, | |
47 | kPbPb2011Peripheral, | |
48 | kCENTSELMAX | |
49 | }; | |
50 | ||
51 | //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"}; | |
52 | ||
53 | ||
54 | LMEECutLib() {} | |
55 | ||
56 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet); | |
57 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel); | |
58 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet); | |
59 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet); | |
60 | ||
61 | AliAnalysisCuts* GetPairCutsAna(Int_t cutSet, Bool_t tooglePC=kFALSE); | |
62 | AliAnalysisCuts* GetPairCutsPre(Int_t cutSet); | |
63 | ||
64 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet); | |
65 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet); | |
66 | ||
67 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet); | |
68 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet); | |
69 | AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet); | |
70 | ||
71 | ||
72 | // Note: event cuts are identical for all analysis 'cutDefinition's that run together! | |
73 | // the selection is hardcoded in the AddTask, currently to 'kPbPb2011_TPCTOF_Semi1' | |
74 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet) { | |
75 | AliDielectronEventCuts* eventCuts = 0x0; | |
76 | switch (cutSet) { | |
77 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
78 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
79 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
80 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
81 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
82 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
83 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
84 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
85 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: | |
86 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
87 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
88 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
89 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
90 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
91 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
92 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
93 | case kPbPb2011_TPCITS_TOFif1: | |
94 | case kPbPb2011_TPCTOF_Semi2: | |
95 | case kPbPb2011_TPCTOF_Semi1: | |
96 | case kPbPb2011NoPID: | |
97 | case kPbPb2011TPCandTOF : | |
98 | case kPbPb2011TPCandTOFHPT: | |
99 | case kPbPb2011TPC : | |
100 | case kPbPb2011TPCandTOFwide : | |
101 | case kPbPb2011TPCorTOF : | |
102 | case kpp2010TPCandTOF : | |
103 | case kpp2010TPCorTOF : | |
104 | //Basic Event Cuts for pp and Pb-Pb, additional cuts may be in the AddTask | |
105 | eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0"); | |
106 | eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD | |
107 | //eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD | |
108 | // eventCuts->SetCentralityRange(0.0,80.0); | |
109 | eventCuts->SetRequireVertex(); | |
110 | eventCuts->SetMinVtxContributors(1); | |
111 | eventCuts->SetVertexZ(-10.,10.); | |
112 | break; | |
113 | default: cout << "No Event Cut defined" << endl; | |
114 | } | |
115 | return eventCuts; | |
116 | } | |
117 | ||
118 | ||
119 | //Selection of relatively 'flat' centralities | |
120 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel) { | |
121 | AliDielectronVarCuts* centCuts = 0x0; | |
122 | switch (centSel) { | |
123 | case kPbPb2011Central: | |
124 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central"); | |
125 | centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.); | |
126 | break; | |
127 | case kPbPb2011MidCentral: | |
128 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011MidCentral"); | |
129 | centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,20.); | |
130 | break; | |
131 | case kPbPb2011SemiCentral: | |
132 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral"); | |
133 | centCuts->AddCut(AliDielectronVarManager::kCentrality,20.,50.); | |
134 | break; | |
135 | case kPbPb2011Peripheral: | |
136 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral"); | |
137 | centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.); | |
138 | break; | |
139 | default: cout << "No Centrality selected" << endl; | |
140 | } | |
141 | return centCuts; | |
142 | } | |
143 | ||
144 | ||
145 | //Basic track rotator settings from J/Psi, more investigation needed | |
146 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) { | |
147 | AliDielectronTrackRotator* trackRotator = 0x0; | |
148 | switch (cutSet) { | |
149 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
150 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
151 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
152 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
153 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
154 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
155 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
156 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
157 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
158 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
159 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
160 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
161 | case kPbPb2011_TPCITS_TOFif1: | |
162 | case kPbPb2011_TPCTOF_Semi2: | |
163 | case kPbPb2011_TPCTOF_Semi1: | |
164 | case kPbPb2011NoPID: | |
165 | case kPbPb2011TPCandTOF : | |
166 | case kPbPb2011TPCandTOFHPT: | |
167 | case kPbPb2011TPC : | |
168 | case kPbPb2011TPCandTOFwide : | |
169 | case kPbPb2011TPCorTOF : | |
170 | case kpp2010TPCandTOF : | |
171 | case kpp2010TPCorTOF : | |
172 | trackRotator = new AliDielectronTrackRotator(); | |
173 | trackRotator->SetIterations(20); | |
174 | trackRotator->SetConeAnglePhi(TMath::Pi()/180*165); | |
175 | trackRotator->SetStartAnglePhi(TMath::Pi()); | |
176 | break; | |
177 | default: cout << "No Rotator defined" << endl; | |
178 | } | |
179 | return trackRotator; | |
180 | } | |
181 | ||
182 | ||
183 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) { | |
184 | AliDielectronMixingHandler* mixingHandler = 0x0; | |
185 | switch (cutSet) { | |
186 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
187 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
188 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
189 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
190 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
191 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
192 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
193 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
194 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
195 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
196 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
197 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
198 | case kPbPb2011_TPCITS_TOFif1: | |
199 | case kPbPb2011_TPCTOF_Semi2: | |
200 | case kPbPb2011_TPCTOF_Semi1: | |
201 | mixingHandler = new AliDielectronMixingHandler; | |
202 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
203 | mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,30,50,80"); | |
204 | // now using TPC event plane, uncorrected. (also, the old phi range was wrong, now same effective binning.) | |
205 | mixingHandler->AddVariable(AliDielectronVarManager::kTPCrpH2uc, 6, TMath::Pi()/-2., TMath::Pi()/2.); | |
206 | mixingHandler->SetDepth(15); | |
207 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); | |
208 | break; | |
209 | //[...] | |
210 | default: cout << "No Mixer defined" << endl; | |
211 | } | |
212 | return mixingHandler; | |
213 | } | |
214 | ||
215 | ||
216 | ||
217 | //Pair Cuts for Analysis step - take care of logic - inverted compared to other PairCuts!! | |
218 | // cuts = SELECTION!!! | |
219 | AliAnalysisCuts* GetPairCutsAna(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) { | |
220 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetPairCutsAna() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
221 | AliAnalysisCuts* pairCuts=0x0; | |
222 | switch (cutSet) { | |
223 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
224 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
225 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
226 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
227 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
228 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
229 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
230 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
231 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
232 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
233 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
234 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
235 | cout << "No Pair Cuts used - ok " << endl; // since 18.02.2014 | |
236 | break; | |
237 | ||
238 | case kPbPb2011_TPCITS_TOFif1: | |
239 | case kPbPb2011_TPCTOF_Semi2: | |
240 | // AliDielectronVarCuts* pairCutsPhivGood =new AliDielectronVarCuts("pairCutsPhivGood","pairCutsPhivGood"); | |
241 | // pairCutsPhivGood->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0); | |
242 | AliDielectronVarCuts* pairCutsOpAngGood =new AliDielectronVarCuts("pairCutsOpAngGood","pairCutsOpAngGood"); | |
243 | pairCutsOpAngGood->AddCut(AliDielectronVarManager::kOpeningAngle, 0.05, 999.); // in upgrade: 0.05 | |
244 | AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("pairCutsInvM","pairCutsInvM"); | |
245 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.02); // in upgrade: 0.01 | |
246 | AliDielectronVarCuts* pairCutsInvMgood =new AliDielectronVarCuts("pairCutsInvMgood","pairCutsInvMgood"); | |
247 | pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.02, 99999.); | |
248 | ||
249 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); | |
250 | pairCutsCG->AddCut(pairCutsInvM); | |
251 | pairCutsCG->AddCut(pairCutsOpAngGood); | |
252 | // pairCutsCG->AddCut(pairCutsPhivGood); | |
253 | ||
254 | AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR); | |
255 | pairCutsCG2->AddCut(pairCutsInvMgood); | |
256 | pairCutsCG2->AddCut(pairCutsCG); | |
257 | pairCuts = pairCutsCG2; | |
258 | break; | |
259 | ||
260 | case kPbPb2011_TPCTOF_Semi1: | |
261 | //[...] // PhiV and InvMass | |
262 | default: cout << "No Pair Cuts defined " << endl; | |
263 | } | |
264 | return pairCuts; | |
265 | } | |
266 | ||
267 | ||
268 | //Pair Cuts for PREFILTER step | |
269 | // cuts = REJECTION!!! | |
270 | AliAnalysisCuts* GetPairCutsPre(Int_t cutSet) { | |
271 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetPairCutsPre() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
272 | AliAnalysisCuts* pairCuts=0x0; | |
273 | switch (cutSet) { | |
274 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
275 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
276 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
277 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
278 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
279 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
280 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
281 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
282 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
283 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
284 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
285 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
286 | case kPbPb2011_TPCITS_TOFif1: | |
287 | case kPbPb2011_TPCTOF_Semi2: | |
288 | AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("pairCutsInvM","pairCutsInvM"); | |
289 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.02); // in upgrade: 0.01 | |
290 | AliDielectronVarCuts* pairCutsOpAng =new AliDielectronVarCuts("pairCutsOpAng","pairCutsOpAng"); | |
291 | pairCutsOpAng->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); // in upgrade: 0.05 | |
292 | ||
293 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); | |
294 | pairCutsCG->AddCut(pairCutsInvM); | |
295 | pairCutsCG->AddCut(pairCutsOpAng); | |
296 | //pairCutsCG->AddCut(pairCutsPhiv); | |
297 | pairCuts = pairCutsCG; | |
298 | break; | |
299 | ||
300 | case kPbPb2011_TPCTOF_Semi1: | |
301 | //[...] // PhiV and InvMass | |
302 | default: cout << "No Prefilter Pair Cuts defined " << endl; | |
303 | } | |
304 | return pairCuts; | |
305 | } | |
306 | ||
307 | ||
308 | ||
309 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) { | |
310 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetPIDCutsAna() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
311 | AliAnalysisCuts* pidCuts=0x0; | |
312 | ||
313 | //----------------------------------------------- | |
314 | // Define different PID Cuts, that are used later | |
315 | //----------------------------------------------- | |
316 | // PID cuts depend on TPC_inner_p, if not specified | |
317 | // PID cut ranges correspond to global momentum P | |
318 | // check it again!!! | |
319 | //----------------------------------------------- | |
320 | ||
321 | // | |
322 | // | |
323 | //TPC: electron inclusion asymmetric | |
324 | // pion exclusion 3sigma | |
325 | //TOF: electron inclusion 3sigma in region where p,K cross electrons in TPC | |
326 | AliDielectronPID *pidTPCTOF_Semi1 = new AliDielectronPID("pidTPCTOF_Semi1","pidTPCTOF_Semi1"); | |
327 | pidTPCTOF_Semi1->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3., 0. ,100., kFALSE); | |
328 | pidTPCTOF_Semi1->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE); | |
329 | pidTPCTOF_Semi1->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3., 0. ,1.7 , kFALSE); | |
330 | // | |
331 | // | |
332 | // LOOSE PID TPC+TOF | |
333 | AliDielectronPID *pidTPCTOF_Semi_LOOSE = new AliDielectronPID("pidTPCTOF_Semi_LOOSE","pidTPCTOF_Semi_LOOSE"); | |
334 | pidTPCTOF_Semi_LOOSE->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-12. ,20. , 0. ,100., kFALSE); | |
335 | pidTPCTOF_Semi_LOOSE->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,1.7 , kFALSE); | |
336 | // | |
337 | // | |
338 | // PID TPC only | |
339 | AliDielectronPID *pidTPC_3 = new AliDielectronPID("pidTPC_3","pidTPC_3"); | |
340 | pidTPC_3->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3., 0. ,100., kFALSE); | |
341 | pidTPC_3->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE); | |
342 | ||
343 | ||
344 | //TPC: electron inclusion asymmetric | |
345 | // pion exclusion 3sigma | |
346 | //ITS: electron inclusion asymmetric in region where p,K cross electrons in TPC | |
347 | //TOF: electron inclusion 3sigma in similar region - BUT ONLY IF AVAILABLE | |
348 | AliDielectronPID *pidTPCITS_TOFif1 = new AliDielectronPID("pidTPCITS_TOFif1","pidTPCITS_TOFif1"); | |
349 | pidTPCITS_TOFif1->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3. , 0. ,100., kFALSE); | |
350 | pidTPCITS_TOFif1->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE); | |
351 | pidTPCITS_TOFif1->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 1. , 0. ,1.5 , kFALSE); | |
352 | pidTPCITS_TOFif1->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,1.7 , kFALSE, AliDielectronPID::kIfAvailable); | |
353 | // | |
354 | // | |
355 | //TPC: electron inclusion asymmetric | |
356 | // pion exclusion 3sigma | |
357 | //ITS: electron inclusion asymmetric OVER FULL MOMENTUM RANGE | |
358 | //TOF: electron inclusion 3sigma - BUT ONLY IF AVAILABLE | |
359 | AliDielectronPID *pidTPCITS_TOFif2 = new AliDielectronPID("pidTPCITS_TOFif2","pidTPCITS_TOFif2"); | |
360 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3. , 0. ,100., kFALSE); | |
361 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE); | |
362 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 1. , 0. ,100., kFALSE); | |
363 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,100., kFALSE, AliDielectronPID::kIfAvailable); | |
364 | // | |
365 | // | |
366 | // LOOSE PID ITS+TPC+TOFif | |
367 | AliDielectronPID *pidTPCITS_TOFif_LOOSE = new AliDielectronPID("pidTPCITS_TOFif_LOOSE","pidTPCITS_TOFif_LOOSE"); | |
368 | pidTPCITS_TOFif_LOOSE->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-12. ,20. , 0. ,100., kFALSE); | |
369 | pidTPCITS_TOFif_LOOSE->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-10. ,20. , 0. ,100., kFALSE); | |
370 | pidTPCITS_TOFif_LOOSE->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,100., kFALSE, AliDielectronPID::kIfAvailable); | |
371 | // | |
372 | // | |
373 | // PID ITS+TPC | |
374 | AliDielectronPID *pidTPCITS_3 = new AliDielectronPID("pidTPCITS_3","pidTPCITS_3"); | |
375 | pidTPCITS_3->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3. , 0. ,100., kFALSE); | |
376 | pidTPCITS_3->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE); | |
377 | pidTPCITS_3->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 1. , 0. ,100., kFALSE); | |
378 | // | |
379 | // | |
380 | // tighter PID ITS+TPC+TOFif | |
381 | // ITS only up to momentum where proton contamination is seen in TPC signal | |
382 | AliDielectronPID *pidTPCITS_TOFif56 = new AliDielectronPID("pidTPCITS_TOFif56","pidTPCITS_TOFif56"); | |
383 | pidTPCITS_TOFif56->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 2.5, 0. ,100., kFALSE); | |
384 | pidTPCITS_TOFif56->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE); | |
385 | pidTPCITS_TOFif56->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 0.5, 0. , 2., kFALSE); | |
386 | pidTPCITS_TOFif56->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -2. , 2. , 0. ,100., kFALSE, AliDielectronPID::kIfAvailable); | |
387 | ||
388 | ||
389 | //Apply ITS cuts (see Hongyan's talks): | |
390 | //3 sigma inclusion of electrons in TPC | |
391 | //3 sigma exclusion of pions in TPC | |
392 | //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination | |
393 | //TOF only IF available! | |
394 | AliDielectronPID *pidTPCandITSTOF = new AliDielectronPID("pidTPCandITSTOF","pidTPCandITSTOF");//"TPC-TOF-ITS" | |
395 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3.,3., 0.,100., kFALSE); | |
396 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3.,3., 0.,100., kTRUE); | |
397 | pidTPCandITSTOF->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -6.,3., 0.,1.5, kFALSE ); | |
398 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3.,3., 0.,1.5, kFALSE,AliDielectronPID::kIfAvailable ); | |
399 | ||
400 | // eta range: | |
401 | AliDielectronVarCuts *etaRange090 = new AliDielectronVarCuts("etaRange090","etaRange090"); | |
402 | etaRange090->AddCut(AliDielectronVarManager::kEta, -0.90, 0.90); | |
403 | AliDielectronVarCuts *etaRange084 = new AliDielectronVarCuts("etaRange084","etaRange084"); | |
404 | etaRange084->AddCut(AliDielectronVarManager::kEta, -0.84, 0.84); | |
405 | AliDielectronVarCuts *etaRange076 = new AliDielectronVarCuts("etaRange076","etaRange076"); | |
406 | etaRange076->AddCut(AliDielectronVarManager::kEta, -0.76, 0.76); | |
407 | // pt range: | |
408 | AliDielectronVarCuts *ptRange400to3500 = new AliDielectronVarCuts("ptRange400to3500","ptRange400to3500"); | |
409 | ptRange400to3500->AddCut(AliDielectronVarManager::kPt, .4, 3.5); | |
410 | ||
411 | ||
412 | //----------------------------------------------- | |
413 | // Now see what Config actually loads and assemble final cuts | |
414 | //----------------------------------------------- | |
415 | switch (cutSet) { | |
416 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: // tighter "ITSTPCTOFif" PID | |
417 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
418 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
419 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
420 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
421 | cgPIDCutsAna->AddCut(etaRange076); | |
422 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
423 | cgPIDCutsAna->AddCut(pidTPCITS_TOFif56); | |
424 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
425 | pidCuts = cgPIDCutsAna; | |
426 | break; | |
427 | ||
428 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
429 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
430 | cgPIDCutsAna->AddCut(etaRange076); | |
431 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
432 | cgPIDCutsAna->AddCut(pidTPCITS_3); | |
433 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
434 | pidCuts = cgPIDCutsAna; | |
435 | break; | |
436 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
437 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
438 | cgPIDCutsAna->AddCut(etaRange090); | |
439 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
440 | cgPIDCutsAna->AddCut(pidTPC_3); | |
441 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
442 | pidCuts = cgPIDCutsAna; | |
443 | break; | |
444 | ||
445 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: // loose "ITSTPCTOFif" PID - for 2D contamination study | |
446 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
447 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
448 | cgPIDCutsAna->AddCut(etaRange076); | |
449 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
450 | cgPIDCutsAna->AddCut(pidTPCITS_TOFif_LOOSE); | |
451 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
452 | pidCuts = cgPIDCutsAna; | |
453 | break; | |
454 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
455 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
456 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
457 | cgPIDCutsAna->AddCut(etaRange090); | |
458 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
459 | cgPIDCutsAna->AddCut(pidTPCTOF_Semi_LOOSE); | |
460 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
461 | pidCuts = cgPIDCutsAna; | |
462 | break; | |
463 | ||
464 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: // regular "ITSTPCTOFif" PID | |
465 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
466 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
467 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
468 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
469 | cgPIDCutsAna->AddCut(etaRange076); | |
470 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
471 | cgPIDCutsAna->AddCut(pidTPCITS_TOFif2); | |
472 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
473 | pidCuts = cgPIDCutsAna; | |
474 | break; | |
475 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
476 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
477 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
478 | cgPIDCutsAna->AddCut(etaRange090); | |
479 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
480 | cgPIDCutsAna->AddCut(pidTPCTOF_Semi1); | |
481 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
482 | pidCuts = cgPIDCutsAna; | |
483 | break; | |
484 | ||
485 | case kPbPb2011_TPCITS_TOFif1: | |
486 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
487 | cgPIDCutsAna->AddCut(etaRange084); // was 0.84 -> not ideal | |
488 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
489 | cgPIDCutsAna->AddCut(pidTPCITS_TOFif1); | |
490 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
491 | pidCuts = cgPIDCutsAna; | |
492 | break; | |
493 | case kPbPb2011_TPCTOF_Semi2: | |
494 | case kPbPb2011_TPCTOF_Semi1: | |
495 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
496 | cgPIDCutsAna->AddCut(etaRange084); | |
497 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
498 | cgPIDCutsAna->AddCut(pidTPCTOF_Semi1); | |
499 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); // for 'kPbPb2011_TPCTOF_Semi1', this was called in the Config | |
500 | pidCuts = cgPIDCutsAna; | |
501 | break; | |
502 | //[...] | |
503 | case kPbPb2011TPCandTOFHPT: | |
504 | //test Hongyan's cut | |
505 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
506 | cgSecondTrackFilterPIDTPC1->AddCut(etaRange084); | |
507 | cgSecondTrackFilterPIDTPC1->AddCut(ptRange400to3500); | |
508 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandITSTOF); | |
509 | pidCuts = cgSecondTrackFilterPIDTPC1; | |
510 | break; | |
511 | //[...] | |
512 | default: cout << "No Analysis PID Cut defined " << endl; | |
513 | } | |
514 | return pidCuts; | |
515 | } | |
516 | ||
517 | ||
518 | //Make/Tighten track Cuts that are *NOT* already | |
519 | //done in the AOD production | |
520 | //**IMPORTANT**: For AODs, select FilterBit | |
521 | //the method is ignored for ESDs | |
522 | ||
523 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) { | |
524 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetTrackCutsAna() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
525 | AliDielectronCutGroup* trackCuts=0x0; | |
526 | switch (cutSet) { | |
527 | ||
528 | ||
529 | //---------- | |
530 | // these MAIN settings have to combine different track selections: | |
531 | //---------- | |
532 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
533 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: | |
534 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
535 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
536 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
537 | // combine typical and new trackcuts with "kCompOR" condition: | |
538 | cgTrackCutsAnaSPDorSDD = new AliDielectronCutGroup("cgTrackCutsAnaSPDorSDD","cgTrackCutsAnaSPDorSDD",AliDielectronCutGroup::kCompOR); | |
539 | cgTrackCutsAnaSPDorSDD->AddCut(GetTrackCutsAna(kPbPb2011TRK_SPDfirst)); // typical trackcuts with requirement of SPD | |
540 | cgTrackCutsAnaSPDorSDD->AddCut(GetTrackCutsAna(kPbPb2011TRK_SDDfirstSPDnone)); // new additional trackcuts with SDD instead of SPD | |
541 | trackCuts = cgTrackCutsAnaSPDorSDD; | |
542 | break; | |
543 | ||
544 | //---------- | |
545 | // these MAIN settings just load the main track selection directly below: | |
546 | //---------- | |
547 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
548 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
549 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
550 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
551 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
552 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
553 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
554 | //---------- | |
555 | case kPbPb2011TRK_SPDfirst: // main track selection, now closer to what Hongyan does... | |
556 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
557 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
558 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
559 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 4.0, 100.0); // means at least 2 with PID | |
560 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
561 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0); | |
562 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); // lower limit 0.8 in most filterbits! // 1.1 since 26.02.2014 | |
563 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
564 | trackCutsDiel->SetAODFilterBit(1<<4); // (=16) filterbit 4! //GetStandardITSTPCTrackCuts2011(kFALSE); loose DCA, 2D cut | |
565 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
566 | ||
567 | cgTrackCutsAnaSPDfirst = new AliDielectronCutGroup("cgTrackCutsAnaSPDfirst","cgTrackCutsAnaSPDfirst",AliDielectronCutGroup::kCompAND); | |
568 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsDiel); | |
569 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsAOD); | |
570 | trackCuts = cgTrackCutsAnaSPDfirst; | |
571 | break; | |
572 | ||
573 | case kPbPb2011TRK_SDDfirstSPDnone: // complimentary tracks, strictly without SPD, to be combined with others! | |
574 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
575 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
576 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
577 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); // means at least 3 with PID | |
578 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
579 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0); | |
580 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); // lower limit 0.8 in most filterbits! // 1.1 since 26.02.2014 | |
581 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
582 | trackCutsDiel->SetAODFilterBit(1<<6); // GetStandardITSTPCTrackCuts2011(kTRUE), SPD none, SDD first | |
583 | ||
584 | cgTrackCutsAnaSDDnoSPD = new AliDielectronCutGroup("cgTrackCutsAnaSDDnoSPD","cgTrackCutsAnaSDDnoSPD",AliDielectronCutGroup::kCompAND); | |
585 | cgTrackCutsAnaSDDnoSPD->AddCut(trackCutsDiel); | |
586 | cgTrackCutsAnaSDDnoSPD->AddCut(trackCutsAOD); | |
587 | trackCuts = cgTrackCutsAnaSDDnoSPD; | |
588 | break; | |
589 | ||
590 | //---------- | |
591 | // MAIN settings - combined trackset - variation 1 | |
592 | //---------- | |
593 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
594 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
595 | // combine typical and new trackcuts with "kCompOR" condition: | |
596 | cgTrackCutsAnaSPDorSDD = new AliDielectronCutGroup("cgTrackCutsAnaSPDorSDD","cgTrackCutsAnaSPDorSDD",AliDielectronCutGroup::kCompOR); | |
597 | cgTrackCutsAnaSPDorSDD->AddCut(GetTrackCutsAna(kPbPb2011TRK_SPDfirst5cls)); // typical trackcuts with requirement of SPD | |
598 | cgTrackCutsAnaSPDorSDD->AddCut(GetTrackCutsAna(kPbPb2011TRK_SDDfirstSPDnone4cls)); // new additional trackcuts with SDD instead of SPD | |
599 | trackCuts = cgTrackCutsAnaSPDorSDD; | |
600 | break; | |
601 | ||
602 | //---------- | |
603 | // MAIN settings - single trackset - variation 1 | |
604 | //---------- | |
605 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
606 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
607 | //---------- | |
608 | case kPbPb2011TRK_SPDfirst5cls: // main track selection, 5+ ITS clusters | |
609 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
610 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
611 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
612 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 5.0, 100.0); // means at least 3 with PID | |
613 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
614 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0); | |
615 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); | |
616 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
617 | trackCutsDiel->SetAODFilterBit(1<<4); // (=16) filterbit 4! //GetStandardITSTPCTrackCuts2011(kFALSE); loose DCA, 2D cut | |
618 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
619 | ||
620 | cgTrackCutsAnaSPDfirst = new AliDielectronCutGroup("cgTrackCutsAnaSPDfirst","cgTrackCutsAnaSPDfirst",AliDielectronCutGroup::kCompAND); | |
621 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsDiel); | |
622 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsAOD); | |
623 | trackCuts = cgTrackCutsAnaSPDfirst; | |
624 | break; | |
625 | ||
626 | case kPbPb2011TRK_SDDfirstSPDnone4cls: // complimentary tracks, 4+ ITS clusters, strictly without SPD, to be combined with others! | |
627 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
628 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
629 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
630 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 4.0, 100.0); // means at least 4 with PID | |
631 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
632 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0); | |
633 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); | |
634 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
635 | trackCutsDiel->SetAODFilterBit(1<<6); // GetStandardITSTPCTrackCuts2011(kTRUE), SPD none, SDD first | |
636 | ||
637 | cgTrackCutsAnaSDDnoSPD = new AliDielectronCutGroup("cgTrackCutsAnaSDDnoSPD","cgTrackCutsAnaSDDnoSPD",AliDielectronCutGroup::kCompAND); | |
638 | cgTrackCutsAnaSDDnoSPD->AddCut(trackCutsDiel); | |
639 | cgTrackCutsAnaSDDnoSPD->AddCut(trackCutsAOD); | |
640 | trackCuts = cgTrackCutsAnaSDDnoSPD; | |
641 | break; | |
642 | ||
643 | // ========== | |
644 | case kPbPb2011_TPCITS_TOFif1: | |
645 | case kPbPb2011_TPCTOF_Semi2: // no pt and eta ranges in the trackcuts anymore! | |
646 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
647 | // trackCutsAOD->AddCut(AliDielectronVarManager::kEta, -0.84, 0.84); // eta commented out later. (05.02.2014) | |
648 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
649 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
650 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
651 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5); | |
652 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0); | |
653 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0); | |
654 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
655 | trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs // 16=2^4 -> filter bit 4! | |
656 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //function in AliDielectronTrackCuts | |
657 | ||
658 | cgTrackCutsAna = new AliDielectronCutGroup("cgTrackCutsAna","cgTrackCutsAna",AliDielectronCutGroup::kCompAND); | |
659 | cgTrackCutsAna->AddCut(trackCutsDiel); | |
660 | cgTrackCutsAna->AddCut(trackCutsAOD); | |
661 | trackCuts = cgTrackCutsAna; | |
662 | break; | |
663 | ||
664 | case kPbPb2011_TPCTOF_Semi1: | |
665 | //[...] | |
666 | default: cout << "No Analysis Track Cut defined " << endl; | |
667 | } | |
668 | return trackCuts; | |
669 | } | |
670 | ||
671 | ||
672 | ||
673 | //Relaxed PID cuts for additional rejectin step, do not use blindly | |
674 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) { | |
675 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetPIDCutsPre() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
676 | AliAnalysisCuts* pidCuts=0x0; | |
677 | switch (cutSet) { | |
678 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
679 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
680 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: | |
681 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
682 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
683 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
684 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
685 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
686 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
687 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
688 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
689 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
690 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
691 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
692 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
693 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
694 | case kPbPb2011_TPCITS_TOFif1: | |
695 | case kPbPb2011_TPCTOF_Semi2: | |
696 | ||
697 | // eta range: | |
698 | AliDielectronVarCuts *etaRangePre1 = new AliDielectronVarCuts("etaRangePre1","etaRangePre1"); | |
699 | etaRangePre1->AddCut(AliDielectronVarManager::kEta,-0.9,0.9); | |
700 | // pt range: | |
701 | AliDielectronVarCuts *ptRangePre1 = new AliDielectronVarCuts("ptRangePre1","ptRangePre1"); | |
702 | ptRangePre1->AddCut(AliDielectronVarManager::kPt, .2, 3.5); // 0.2 is realistic. turnon at ~180MeV | |
703 | //AliDielectronVarCuts *ptRangePre2 = new AliDielectronVarCuts("ptRangePre2","ptRangePre2"); | |
704 | //ptRangePre2->AddCut(AliDielectronVarManager::kPt, .4, 3.5); | |
705 | //AliDielectronVarCuts *ptRangePre3 = new AliDielectronVarCuts("ptRangePre3","ptRangePre3"); | |
706 | //ptRangePre3->AddCut(AliDielectronVarManager::kPt, 0.05, 1.5); | |
707 | ||
708 | AliDielectronCutGroup* cgITSTPCTOFpre = new AliDielectronCutGroup("cgITSTPCTOFpre","cgITSTPCTOFpre",AliDielectronCutGroup::kCompAND); | |
709 | AliDielectronPID *pidITSTPCTOFpre = new AliDielectronPID("pidITSTPCTOFpre","pidITSTPCTOFpre"); | |
710 | pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3. , 3., 0. ,100., kFALSE); | |
711 | pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE); | |
712 | // ITS will be used: | |
713 | // pidITSTPCTOFpre->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -3. , 3., 0. ,1.7 , kFALSE); | |
714 | // TOF will be used if available, and with pt instead of p: | |
715 | // pidITSTPCTOFpre->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3., 0.4,100., kFALSE, | |
716 | // AliDielectronPID::kIfAvailable, AliDielectronVarManager::kPt); | |
717 | cgITSTPCTOFpre->AddCut(pidITSTPCTOFpre); | |
718 | cgITSTPCTOFpre->AddCut(etaRangePre1); | |
719 | cgITSTPCTOFpre->AddCut(ptRangePre1); | |
720 | cgITSTPCTOFpre->AddCut(GetTrackCutsAna(cutSet)); | |
721 | ||
722 | // AliDielectronCutGroup* cgTPCpre = new AliDielectronCutGroup("cgTPCpre","cgTPCpre",AliDielectronCutGroup::kCompAND); | |
723 | // AliDielectronPID *pidTPCpre = new AliDielectronPID("pidTPCpre","pidTPCpre"); | |
724 | // pidTPCpre->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3. , 3., 0. ,100., kFALSE); | |
725 | // pidTPCpre->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE); | |
726 | // // TOF will be used if available, and with pt instead of p: | |
727 | // pidTPCpre->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3., 0.4,5. , kFALSE, | |
728 | // AliDielectronPID::kIfAvailable, AliDielectronVarManager::kPt); | |
729 | // cgTPCpre->AddCut(pidTPCpre); | |
730 | // cgITSTPCTOFpre->AddCut(etaRangePre1); | |
731 | // cgTPCpre->AddCut(ptRangePre2); | |
732 | // cgTPCpre->AddCut(GetTrackCutsAna(cutSet)); | |
733 | ||
734 | // AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND); | |
735 | // AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA"); | |
736 | // pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -3., 3.); | |
737 | // // this means that very many pions will be used for rejection! | |
738 | // cgITSSA->AddCut(pidITSSA); | |
739 | // cgITSTPCTOFpre->AddCut(etaRangePre1); | |
740 | // cgITSSA->AddCut(ptRangePre3); | |
741 | // cgITSSA->AddCut(GetTrackCutsPre(cutSet)); | |
742 | ||
743 | AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR); | |
744 | cgInitialTrackFilter->AddCut(GetPIDCutsAna(cutSet)); // in case the prefilter cuts do not include all needed global tracks. | |
745 | cgInitialTrackFilter->AddCut(cgITSTPCTOFpre); | |
746 | //cgInitialTrackFilter->AddCut(cgTPCpre); | |
747 | //cgInitialTrackFilter->AddCut(cgITSSA); | |
748 | pidCuts = cgInitialTrackFilter; // kCompOR works!!! <- checked with 'SetNoPairing()' and commented out 'GetPIDCutsAna(selectedPID)' | |
749 | //cout << " ========== pidCuts prefilter: ========== " << endl; | |
750 | //pidCuts->Print(); | |
751 | break; | |
752 | ||
753 | case kPbPb2011_TPCTOF_Semi1: | |
754 | //[...] | |
755 | default: cout << "No Prefilter PID Cut defined " << endl; | |
756 | } | |
757 | return pidCuts; | |
758 | } | |
759 | ||
760 | ||
761 | //Possibly different cut sets for Prefilter step | |
762 | //Not used at the moment | |
763 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) { | |
764 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetTrackCutsPre() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
765 | AliDielectronCutGroup* trackCuts=0x0; | |
766 | switch (cutSet) { | |
767 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
768 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
769 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: | |
770 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
771 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
772 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
773 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
774 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
775 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
776 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
777 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
778 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
779 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
780 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
781 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
782 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
783 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
784 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
785 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
786 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
787 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
788 | trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA(???) // maybe use FilterBit(2) instead! | |
789 | ||
790 | cgTrackCutsPre = new AliDielectronCutGroup("cgTrackCutsPre","cgTrackCutsPre",AliDielectronCutGroup::kCompAND); | |
791 | cgTrackCutsPre->AddCut(trackCutsDiel); | |
792 | cgTrackCutsPre->AddCut(trackCutsAOD); | |
793 | trackCuts = cgTrackCutsPre; | |
794 | break; | |
795 | ||
796 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
797 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
798 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.9,0.9); | |
799 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
800 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
801 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 4.0, 100.0); | |
802 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
803 | trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA(???) // maybe use FilterBit(2) instead! | |
804 | trackCutsDiel->SetRequireITSRefit(kTRUE); //function in AliDielectronTrackCuts | |
805 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //function in AliDielectronTrackCuts | |
806 | ||
807 | cgTrackCutsPre = new AliDielectronCutGroup("cgTrackCutsPre","cgTrackCutsPre",AliDielectronCutGroup::kCompAND); | |
808 | cgTrackCutsPre->AddCut(trackCutsDiel); | |
809 | cgTrackCutsPre->AddCut(trackCutsAOD); | |
810 | trackCuts = cgTrackCutsPre; | |
811 | break; | |
812 | ||
813 | case kPbPb2011_TPCITS_TOFif1: | |
814 | case kPbPb2011_TPCTOF_Semi2: // no pt ranges in the trackcuts anymore! | |
815 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
816 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
817 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
818 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
819 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
820 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
821 | trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA(???) // maybe use FilterBit(2) instead! | |
822 | trackCutsDiel->SetRequireITSRefit(kTRUE); //function in AliDielectronTrackCuts | |
823 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); //function in AliDielectronTrackCuts | |
824 | ||
825 | cgTrackCutsPre = new AliDielectronCutGroup("cgTrackCutsPre","cgTrackCutsPre",AliDielectronCutGroup::kCompAND); | |
826 | cgTrackCutsPre->AddCut(trackCutsDiel); | |
827 | cgTrackCutsPre->AddCut(trackCutsAOD); | |
828 | trackCuts = cgTrackCutsPre; | |
829 | break; | |
830 | ||
831 | case kPbPb2011_TPCTOF_Semi1: | |
832 | //[...] | |
833 | default: cout << "No Prefilter Track Cut defined " << endl; | |
834 | } | |
835 | return trackCuts; | |
836 | } | |
837 | ||
838 | ||
839 | ||
840 | //******************************************************************************* | |
841 | //******************************************************************************* | |
842 | //** ESD TRACK CUTS TUNED FOR AGREEMENT BETWEEN AODS AND ESDS ****************** | |
843 | //** NOT NECESSARILY 100% OPTIMIZED FOR DIEL-ANALYSIS ****************** | |
844 | //******************************************************************************* | |
845 | //******************************************************************************* | |
846 | ||
847 | //WHEN RUNNING ON ESDs: LOAD Default Cuts for AODs | |
848 | AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) { | |
849 | //cout << " >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
850 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetESDTrackCutsAna() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
851 | //cout << " >>>>>>>>>>>>>>>>>>>>>> Setting ESD Track Cuts >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
852 | //cout << " >>>>>>>>>>>>>>>>>>>>>> ( do we run on ESD?! ) >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
853 | //cout << " >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
854 | AliESDtrackCuts* esdTrackCutsH = 0x0; | |
855 | switch (cutSet) { | |
856 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
857 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
858 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_2_loose: | |
859 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_2_loose: | |
860 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_2_loose: | |
861 | case kPbPb2011_pidTPCTOF_trkSPDfirst_2_loose: | |
862 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
863 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
864 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
865 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
866 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
867 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
868 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
869 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst_1: | |
870 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
871 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
872 | case kPbPb2011_TPCITS_TOFif1: | |
873 | case kPbPb2011_TPCTOF_Semi2: | |
874 | case kPbPb2011_TPCTOF_Semi1: | |
875 | case kPbPb2011NoPID: | |
876 | case kPbPb2011TPCandTOF : | |
877 | case kPbPb2011TPCandTOFHPT: | |
878 | case kPbPb2011TPC : | |
879 | case kPbPb2011TPCandTOFwide : | |
880 | case kPbPb2011TPCorTOF : | |
881 | case kpp2010TPCandTOF : | |
882 | case kpp2010TPCorTOF : | |
883 | // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115 | |
884 | ||
885 | esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); | |
886 | esdTrackCutsH->SetMaxDCAToVertexXY(2.4); | |
887 | esdTrackCutsH->SetMaxDCAToVertexZ(3.2); | |
888 | esdTrackCutsH->SetDCAToVertex2D(kTRUE); | |
889 | ||
890 | //The cuts below should be the onyl ones that are missing | |
891 | //explicitely in the TrackCutsAna method | |
892 | //To be sure, StandardITSTPCTrackCuts is loaded however | |
893 | /* | |
894 | esdTrackCutsH = new AliESDtrackCuts(); | |
895 | esdTrackCutsH->SetAcceptKinkDaughters(kFALSE); | |
896 | //Not done so far via dielectron cuts: | |
897 | */ | |
898 | /* | |
899 | esdTrackCuts->SetDCAToVertex2D(kFALSE); | |
900 | esdTrackCuts->SetRequireSigmaToVertex(kFALSE); | |
901 | esdTrackCuts->SetMaxChi2PerClusterITS(36); | |
902 | */ | |
903 | ||
904 | break; | |
905 | default: cout << "No ESD Track Cut defined " << endl; | |
906 | } | |
907 | return esdTrackCutsH; | |
908 | } | |
909 | ||
910 | ||
911 | }; |