]>
Commit | Line | Data |
---|---|---|
9f00b65f | 1 | class 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 | }; |