]>
Commit | Line | Data |
---|---|---|
1ba767ec | 1 | class LMEECutLibRemi { |
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, | |
2eab2b62 | 13 | kPbPb2011pidITSTPCTOF, |
1ba767ec | 14 | kCUTSETMAX |
15 | }; | |
16 | ||
17 | static enum LMMECentSel { | |
18 | kPbPb2011Central, | |
19 | kPbPb2011SemiCentral1, | |
2eab2b62 | 20 | kPbPb2011SemiCentral2, |
1ba767ec | 21 | kPbPb2011Peripheral, |
2eab2b62 | 22 | kCENTSELMAX |
1ba767ec | 23 | }; |
24 | ||
25 | static enum LMEEPairCutSet{ | |
2eab2b62 | 26 | kPbPb2011RP, |
27 | kPbPb2011Mag, | |
28 | kPbPb2011MassLow, | |
29 | kPbPb2011MassMiddle, | |
30 | kPbPb2011MassHigh, | |
31 | kPbPb2011MassAll, | |
1ba767ec | 32 | |
2eab2b62 | 33 | kPAIRCUTSETMAX |
1ba767ec | 34 | }; |
35 | ||
36 | ||
1ba767ec | 37 | //char* LMEECutNames[kCUTSETMAX] = { "PbPb2011TPCandTOF","PbPb2011TPCorTOF"}; |
38 | ||
39 | ||
40 | LMEECutLib() {} | |
41 | ||
42 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet); | |
43 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel); | |
44 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet); | |
45 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet); | |
46 | ||
47 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet); | |
48 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet); | |
49 | ||
50 | AliAnalysisCuts* GetPairCuts2(Int_t cutSet,Bool_t tooglePC=kFALSE); | |
51 | AliAnalysisCuts* GetPairCuts(Int_t cutSet); | |
52 | AliAnalysisCuts* GetPairCutsInvMass(Int_t cutSet); | |
2eab2b62 | 53 | AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet); |
1ba767ec | 54 | |
55 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet); | |
56 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet); | |
57 | ||
58 | ||
59 | ||
60 | ||
61 | AliDielectronEventCuts* GetEventCuts(Int_t cutSet) { | |
62 | AliDielectronEventCuts* eventCuts = 0x0; | |
63 | switch (cutSet) { | |
64 | case kPbPb2011NoPID: | |
65 | case kPbPb2011TPCandTOF : | |
66 | case kPbPb2011TPCandTOFHPT: | |
67 | case kPbPb2011TPC : | |
68 | case kPbPb2011TPCandTOFwide : | |
69 | case kPbPb2011TPCorTOF : | |
70 | case kpp2010TPCandTOF : | |
71 | case kpp2010TPCorTOF : | |
2eab2b62 | 72 | case kPbPb2011pidITSTPCTOF: |
73 | ||
74 | //Basic Event Cuts for pp and Pb-Pb, additional cuts may be in the AddTask | |
1ba767ec | 75 | eventCuts=new AliDielectronEventCuts("eventCuts","Vertex Track && |vtxZ|<10 && ncontrib>0"); |
76 | eventCuts->SetVertexType(AliDielectronEventCuts::kVtxSPD); // AOD | |
2eab2b62 | 77 | // eventCuts->SetVertexType(AliDielectronEventCuts::kVtxTPC); // AOD |
78 | // eventCuts->SetCentralityRange(0.0,80.0); | |
79 | // eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); // AOD | |
80 | ||
1ba767ec | 81 | eventCuts->SetRequireVertex(); |
82 | eventCuts->SetMinVtxContributors(1); | |
83 | eventCuts->SetVertexZ(-10.,10.); | |
84 | break; | |
85 | default: cout << "No Event Cut defined" << endl; | |
86 | } | |
87 | return eventCuts; | |
88 | } | |
89 | ||
1ba767ec | 90 | |
2eab2b62 | 91 | //Selection of relatively 'flat' centralities |
92 | AliAnalysisCuts* GetCentralityCuts(Int_t centSel) { | |
93 | AliDielectronVarCuts* centCuts = 0x0; | |
94 | switch (centSel) { | |
95 | case kPbPb2011Central: | |
96 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Central"); | |
97 | centCuts->AddCut(AliDielectronVarManager::kCentrality,0.,10.); | |
98 | break; | |
99 | case kPbPb2011SemiCentral1: | |
100 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral1"); | |
101 | //Restrict to 50%, Trigger selction | |
102 | centCuts->AddCut(AliDielectronVarManager::kCentrality,10.,30.); | |
103 | break; | |
104 | case kPbPb2011SemiCentral2: | |
105 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011SemiCentral2"); | |
106 | //Restrict to 50%, Trigger selction | |
107 | centCuts->AddCut(AliDielectronVarManager::kCentrality,30.,50.);// | |
108 | break; | |
1ba767ec | 109 | |
2eab2b62 | 110 | case kPbPb2011Peripheral: |
111 | centCuts = new AliDielectronVarCuts("centCuts","CentralityPbPb2011Peripheral"); | |
112 | centCuts->AddCut(AliDielectronVarManager::kCentrality,50.,90.); | |
113 | break; | |
114 | ||
115 | default: cout << "No Centrality selected" << endl; | |
116 | ||
117 | ||
118 | } | |
119 | return centCuts; | |
120 | } | |
1ba767ec | 121 | |
122 | ||
1ba767ec | 123 | |
124 | ||
2eab2b62 | 125 | //Basic track rotator settings from J/Psi, more investigation needed |
1ba767ec | 126 | AliDielectronTrackRotator* GetTrackRotator(Int_t cutSet) { |
127 | AliDielectronTrackRotator* trackRotator = 0x0; | |
128 | switch (cutSet) { | |
129 | case kPbPb2011NoPID: | |
130 | case kPbPb2011TPCandTOF : | |
131 | case kPbPb2011TPCandTOFHPT: | |
132 | case kPbPb2011TPC : | |
133 | case kPbPb2011TPCandTOFwide : | |
134 | case kPbPb2011TPCorTOF : | |
135 | case kpp2010TPCandTOF : | |
136 | case kpp2010TPCorTOF : | |
2eab2b62 | 137 | case kPbPb2011pidITSTPCTOF : |
138 | ||
1ba767ec | 139 | trackRotator = new AliDielectronTrackRotator(); |
140 | trackRotator->SetIterations(20); | |
141 | trackRotator->SetConeAnglePhi(TMath::Pi()/180*165); | |
142 | trackRotator->SetStartAnglePhi(TMath::Pi()); | |
143 | break; | |
144 | default: cout << "No Rotator defined" << endl; | |
145 | } | |
146 | return trackRotator; | |
147 | } | |
148 | ||
149 | ||
150 | AliDielectronMixingHandler* GetMixingHandler(Int_t cutSet) { | |
151 | AliDielectronMixingHandler* mixingHandler = 0x0; | |
152 | switch (cutSet) { | |
153 | case kPbPb2011TPCorTOF : | |
1ba767ec | 154 | case kPbPb2011NoPID: |
155 | case kPbPb2011TPCandTOF : | |
156 | case kPbPb2011TPCandTOFHPT: | |
157 | case kPbPb2011TPC : | |
158 | case kPbPb2011TPCandTOFwide : | |
2eab2b62 | 159 | case kPbPb2011pidITSTPCTOF : |
160 | ||
1ba767ec | 161 | mixingHandler = new AliDielectronMixingHandler; |
162 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
163 | mixingHandler->AddVariable(AliDielectronVarManager::kCentrality,"0,5,10,20,40,80"); | |
2eab2b62 | 164 | 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)"); |
165 | ||
166 | mixingHandler->SetDepth(20); | |
167 | // mixingHandler->SetDepth(15); | |
1ba767ec | 168 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); |
169 | break; | |
170 | case kpp2010TPCandTOF : | |
171 | case kpp2010TPCorTOF : | |
2eab2b62 | 172 | //ATTENTION: Trivial 1 Bin Variable on Nacc needed: Not understood bug, mixing breaks |
173 | //when just adding one variable *****************!!! | |
1ba767ec | 174 | mixingHandler = new AliDielectronMixingHandler; |
175 | mixingHandler->AddVariable(AliDielectronVarManager::kZvPrim,"-10,-5,0,5,10"); | |
176 | mixingHandler->AddVariable(AliDielectronVarManager::kNacc,"0,10000"); | |
177 | //might want to add multiplicity? | |
178 | mixingHandler->SetDepth(50); | |
179 | mixingHandler->SetMixType(AliDielectronMixingHandler::kAll); | |
180 | break; | |
181 | default: cout << "No Rotator defined" << endl; | |
182 | } | |
183 | return mixingHandler; | |
184 | } | |
185 | ||
2eab2b62 | 186 | /* |
187 | //Pair Cuts for PREFILTER step | |
188 | // cuts = REJECTION!!! | |
189 | AliAnalysisCuts* GetPairCutsPre(Int_t cutSet) { | |
190 | cout << " >>>>>>>>>>>>>>>>>>>>>> GetPairCutsPre() >>>>>>>>>>>>>>>>>>>>>> " << endl; | |
191 | AliAnalysisCuts* pairCuts=0x0; | |
192 | switch (cutSet) { | |
193 | case kPbPb2011_pidITSTPC_trkSPDfirst_3: | |
194 | case kPbPb2011_pidTPC_trkSPDfirst_3: | |
195 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPD5orSDD4cls_6_tight: | |
196 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst5cls_6_tight: | |
197 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDorSDD_5_tight: | |
198 | case kPbPb2011_pidITS2gevTPCTOFif_trkSPDfirst_5_tight: | |
199 | case kPbPb2011_pidITSTPCTOFif_trkSPD5orSDD4cls_4: | |
200 | case kPbPb2011_pidITSTPCTOFif_trkSPDfirst5cls_4: | |
201 | case kPbPb2011_pidITSTPCTOFif_trkSPDorSDD_1: | |
202 | case kPbPb2011pidITSTPCTOF: | |
203 | case kPbPb2011_pidTPCTOF_trkSPDorSDD_1: | |
204 | case kPbPb2011_pidTPCTOF_trkSPDfirst_1: | |
205 | case kPbPb2011_TPCITS_TOFif1: | |
206 | case kPbPb2011_TPCTOF_Semi2: | |
207 | AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("pairCutsInvM","pairCutsInvM"); | |
208 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.02); // in upgrade: 0.01 | |
209 | AliDielectronVarCuts* pairCutsOpAng =new AliDielectronVarCuts("pairCutsOpAng","pairCutsOpAng"); | |
210 | pairCutsOpAng->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); // in upgrade: 0.05 | |
211 | ||
212 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); | |
213 | pairCutsCG->AddCut(pairCutsInvM); | |
214 | pairCutsCG->AddCut(pairCutsOpAng); | |
215 | //pairCutsCG->AddCut(pairCutsPhiv); | |
216 | pairCuts = pairCutsCG; | |
217 | break; | |
1ba767ec | 218 | |
2eab2b62 | 219 | case kPbPb2011_TPCTOF_Semi1: |
220 | //[...] // PhiV and InvMass | |
221 | default: cout << "No Prefilter Pair Cuts defined " << endl; | |
222 | } | |
223 | return pairCuts; | |
224 | } | |
225 | */ | |
1ba767ec | 226 | |
1ba767ec | 227 | |
1ba767ec | 228 | |
2eab2b62 | 229 | AliAnalysisCuts* GetPIDCutsAna(Int_t cutSet) { |
230 | AliAnalysisCuts* anaCuts=0x0; | |
1ba767ec | 231 | |
2eab2b62 | 232 | //----------------------------------------------- |
233 | //Define different PID Cuts, that are used later | |
234 | //----------------------------------------------- | |
235 | ||
236 | //TPC: UPPER HALF inclusion of electron | |
237 | // 3sigma exclusion of Pions | |
238 | //TOF: 3sigma inclusion of electrons | |
239 | AliDielectronPID *pidTPCTOFeOnly = new AliDielectronPID("TPC-TOF","TPC-TOF"); | |
240 | pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-0.,3.,0.0,100.,kFALSE); | |
241 | pidTPCTOFeOnly->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE); | |
242 | pidTPCTOFeOnly->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE ); | |
243 | ||
244 | //TPC: 3sigma inclusion of electron | |
245 | // 3sigma exclusion of Pions | |
246 | //TOF: 3sigma inclusion of electrons in region where p,K cross electrons in TPC | |
247 | AliDielectronPID *pidTPCandTOF = new AliDielectronPID("TPC-TOF-HFE","TPC-TOF-HFE"); | |
248 | pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE); | |
249 | pidTPCandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE); | |
250 | pidTPCandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE ); | |
251 | ||
252 | //Apply ITS cuts (see Hongyan's talks): | |
253 | //3 sigma inclusion of electrons in TPC | |
254 | //3 sigma exclusion of pions in TPC | |
255 | //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination | |
256 | AliDielectronPID *pidTPCandITSandTOF = new AliDielectronPID("TPC-TOFANDITS","TPC-TOFANDITS"); | |
257 | pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE); | |
258 | pidTPCandITSandTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE); | |
259 | pidTPCandITSandTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE); | |
260 | pidTPCandITSandTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE ); | |
261 | ||
262 | //Apply ITS cuts (see Hongyan's talks): | |
263 | //3 sigma inclusion of electrons in TPC | |
264 | //3 sigma exclusion of pions in TPC | |
265 | //3 sigma inclusion of electrons in ITS,TOF for p<1.5GeV, where p,K contamination | |
266 | //TOF only IF available! | |
267 | AliDielectronPID *pidTPCandITSTOF = new AliDielectronPID("TPC-TOF-ITS","TPC-TOF-ITS"); | |
268 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.,0.0,100.,kFALSE); | |
269 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3.,3.,0.,100.,kTRUE); | |
270 | pidTPCandITSTOF->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.0 , 1.5, kFALSE,AliDielectronPID::kIfAvailable ); | |
271 | pidTPCandITSTOF->AddCut(AliDielectronPID::kITS ,AliPID::kElectron , -6. , 3. , 0.0 , 1.5, kFALSE ); | |
1ba767ec | 272 | |
1ba767ec | 273 | //___________________________________________ |
2eab2b62 | 274 | //Direct cuts on TPC signal used for QM12 |
1ba767ec | 275 | AliDielectronVarCuts *pidTPCsignal = new AliDielectronVarCuts("pidTPCsignal","cut on the TPC signal"); |
276 | if (MCenabled) { | |
277 | pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,65.,85.); | |
278 | } | |
279 | else { | |
280 | pidTPCsignal->AddCut(AliDielectronVarManager::kTPCsignal,75.,90.); | |
281 | } | |
282 | //___________________________________________ | |
283 | ||
2eab2b62 | 284 | //low pT cut-off 0.4 - Pb-Pb |
1ba767ec | 285 | AliDielectronVarCuts *pTPC = new AliDielectronVarCuts("P>.4","P>.4"); |
2eab2b62 | 286 | pTPC->AddCut(AliDielectronVarManager::kPt,.4,3.5); |
1ba767ec | 287 | |
2eab2b62 | 288 | //low pT cut-off 0.4 - pp |
1ba767ec | 289 | AliDielectronVarCuts *pMin = new AliDielectronVarCuts("P>.2","P>.2"); |
290 | pMin->AddCut(AliDielectronVarManager::kPt,.2,2.5); | |
291 | ||
2eab2b62 | 292 | // |
293 | // | |
294 | //TPC: electron inclusion asymmetric | |
295 | // pion exclusion 3sigma | |
296 | //ITS: electron inclusion asymmetric OVER FULL MOMENTUM RANGE | |
297 | //TOF: electron inclusion 3sigma - BUT ONLY IF AVAILABLE | |
298 | AliDielectronPID *pidTPCITS_TOFif2 = new AliDielectronPID("pidTPCITS_TOFif2","pidTPCITS_TOFif2"); | |
299 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -1.5, 3. , 0. ,100., kFALSE); | |
300 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3. , 0. ,100., kTRUE); | |
301 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -4. , 1. , 0. ,100., kFALSE); | |
302 | pidTPCITS_TOFif2->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3. , 0. ,100., kFALSE, AliDielectronPID::kIfAvailable); | |
303 | ||
304 | // eta range: | |
305 | AliDielectronVarCuts *etaRange090 = new AliDielectronVarCuts("etaRange090","etaRange090"); | |
306 | etaRange090->AddCut(AliDielectronVarManager::kEta, -0.90, 0.90); | |
307 | AliDielectronVarCuts *etaRange084 = new AliDielectronVarCuts("etaRange084","etaRange084"); | |
308 | etaRange084->AddCut(AliDielectronVarManager::kEta, -0.84, 0.84); | |
309 | AliDielectronVarCuts *etaRange076 = new AliDielectronVarCuts("etaRange076","etaRange076"); | |
310 | etaRange076->AddCut(AliDielectronVarManager::kEta, -0.76, 0.76); | |
311 | // pt range: | |
312 | AliDielectronVarCuts *ptRange400to3500 = new AliDielectronVarCuts("ptRange400to3500","ptRange400to3500"); | |
313 | ptRange400to3500->AddCut(AliDielectronVarManager::kPt, .4, 3.5); | |
314 | ||
315 | ||
316 | ||
317 | //Now see what Config actually loads and assemble final cuts | |
1ba767ec | 318 | switch (cutSet) { |
319 | case kPbPb2011NoPID: | |
320 | AliDielectronCutGroup* cgSecondTrackFilterNoPID = new AliDielectronCutGroup("cgNoPID","cgNoPID",AliDielectronCutGroup::kCompAND); | |
321 | cgSecondTrackFilterNoPID->AddCut(pTPC); | |
322 | anaCuts= cgSecondTrackFilterNoPID; | |
323 | break; | |
324 | case kPbPb2011TPCandTOFHPT: | |
2eab2b62 | 325 | //test Hongyan's cut |
1ba767ec | 326 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); |
2eab2b62 | 327 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); |
328 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandITSTOF); | |
1ba767ec | 329 | anaCuts = cgSecondTrackFilterPIDTPC1; |
2eab2b62 | 330 | break; |
1ba767ec | 331 | case kPbPb2011TPCandTOF : |
332 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
333 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
2eab2b62 | 334 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF); |
1ba767ec | 335 | anaCuts = cgSecondTrackFilterPIDTPC1; |
336 | break; | |
337 | case kPbPb2011TPC : | |
2eab2b62 | 338 | //Old, QM12 |
339 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
340 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
341 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal); | |
342 | anaCuts = cgSecondTrackFilterPIDTPC1; | |
343 | break; | |
1ba767ec | 344 | |
345 | case kPbPb2011TPCandTOFwide : | |
2eab2b62 | 346 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC1 = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); |
347 | cgSecondTrackFilterPIDTPC1->AddCut(pTPC); | |
348 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCandTOF); | |
349 | cgSecondTrackFilterPIDTPC1->AddCut(pidTPCsignal); | |
350 | anaCuts = cgSecondTrackFilterPIDTPC1; | |
351 | break; | |
1ba767ec | 352 | |
353 | case kPbPb2011TPCorTOF : | |
2eab2b62 | 354 | //unused |
1ba767ec | 355 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC2 = new AliDielectronCutGroup("cgPIDTPC2","cgPIDTPC2",AliDielectronCutGroup::kCompAND); |
2eab2b62 | 356 | cgSecondTrackFilterPIDTPC2->AddCut(pTPC); |
357 | // cgSecondTrackFilterPIDTPC2->AddCut(pidTT); | |
1ba767ec | 358 | anaCuts = cgSecondTrackFilterPIDTPC2; |
359 | break; | |
360 | case kpp2010TPCandTOF : | |
2eab2b62 | 361 | //unused |
1ba767ec | 362 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); |
363 | cgSecondTrackFilterPIDTPC->AddCut(pTPC); | |
2eab2b62 | 364 | cgSecondTrackFilterPIDTPC->AddCut(pidTPCandTOF); |
1ba767ec | 365 | anaCuts = cgSecondTrackFilterPIDTPC; |
366 | break; | |
367 | case kpp2010TPCorTOF : | |
2eab2b62 | 368 | //unused |
1ba767ec | 369 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); |
2eab2b62 | 370 | cgSecondTrackFilterPIDTPC->AddCut(pTPC); |
371 | /// cgSecondTrackFilterPIDTPC->AddCut(pidTT); | |
1ba767ec | 372 | anaCuts = cgSecondTrackFilterPIDTPC; |
373 | break; | |
2eab2b62 | 374 | case kPbPb2011pidITSTPCTOF: |
375 | AliDielectronCutGroup* cgPIDCutsAna = new AliDielectronCutGroup("cgPIDCutsAna","cgPIDCutsAna",AliDielectronCutGroup::kCompAND); | |
376 | cgPIDCutsAna->AddCut(etaRange076); | |
377 | cgPIDCutsAna->AddCut(ptRange400to3500); | |
378 | cgPIDCutsAna->AddCut(pidTPCITS_TOFif2); | |
379 | cgPIDCutsAna->AddCut(GetTrackCutsAna(cutSet)); | |
380 | anaCuts = cgPIDCutsAna; | |
381 | break; | |
382 | ||
1ba767ec | 383 | default: cout << "No Analysis PID Cut defined " << endl; |
384 | } | |
385 | return anaCuts; | |
386 | } | |
387 | ||
2eab2b62 | 388 | |
389 | //Relaxed PID cuts for additional rejectin step, do not use blindly | |
1ba767ec | 390 | AliAnalysisCuts* GetPIDCutsPre(Int_t cutSet) { |
391 | AliAnalysisCuts* anaCuts=0x0; | |
392 | switch (cutSet) { | |
393 | case kPbPb2011NoPID: | |
394 | case kPbPb2011TPCandTOF : | |
395 | case kPbPb2011TPCandTOFHPT: | |
396 | case kPbPb2011TPC : | |
397 | case kPbPb2011TPCandTOFwide : | |
1ba767ec | 398 | case kpp2010TPCandTOF : |
399 | case kpp2010TPCorTOF : | |
400 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); | |
401 | AliDielectronCutGroup* cgITSTPC = new AliDielectronCutGroup("cgITSTPC","cgITSTPC",AliDielectronCutGroup::kCompAND); | |
402 | AliDielectronPID *pidITSTPC = new AliDielectronPID("TPCpre","TPCpre"); | |
2eab2b62 | 403 | |
1ba767ec | 404 | pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.); |
2eab2b62 | 405 | pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE); |
406 | pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE); | |
407 | pidITSTPC->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE); | |
408 | pidITSTPC->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE ); | |
1ba767ec | 409 | cgITSTPC->AddCut(pidITSTPC); |
410 | ||
2eab2b62 | 411 | AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt"); |
412 | pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5); | |
413 | cgITSTPC->AddCut(pTPCHPT); | |
414 | ||
415 | cgITSTPC->AddCut(GetTrackCutsAna(cutSet)); | |
416 | ||
1ba767ec | 417 | |
418 | AliDielectronCutGroup* cgITSSA = new AliDielectronCutGroup("cgITSSA","cgITSSA",AliDielectronCutGroup::kCompAND); | |
419 | AliDielectronPID *pidITSSA = new AliDielectronPID("pidITSSA","pidITSSA"); | |
420 | pidITSSA->AddCut(AliDielectronPID::kITS,AliPID::kElectron,-3.,3.); | |
421 | cgITSSA->AddCut(pidITSSA); | |
2eab2b62 | 422 | AliDielectronVarCuts *pITSPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt"); |
423 | pITSPT->AddCut(AliDielectronVarManager::kPt,0.0,0.8); | |
424 | cgITSSA->AddCut(pITSPT); | |
425 | cgITSSA->AddCut(GetTrackCutsPre(cutSet)); | |
1ba767ec | 426 | |
427 | AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR); | |
428 | cgInitialTrackFilter->AddCut(cgITSTPC); | |
429 | cgInitialTrackFilter->AddCut(cgITSSA); | |
430 | anaCuts = cgInitialTrackFilter; | |
431 | break; | |
2eab2b62 | 432 | |
433 | ||
434 | case kPbPb2011TPCorTOF : | |
435 | AliDielectronCutGroup* cgSecondTrackFilterPIDTPC = new AliDielectronCutGroup("cgPIDTPC","cgPIDTPC",AliDielectronCutGroup::kCompAND); | |
436 | AliDielectronCutGroup* cgITSTPCalone = new AliDielectronCutGroup("cgITSTPCalone","cgITSTPCalone",AliDielectronCutGroup::kCompAND); | |
437 | AliDielectronPID *pidITSTPCalone = new AliDielectronPID("TPCpre","TPCpre"); | |
438 | ||
439 | pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kElectron,-3.,3.); | |
440 | pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kPion,-3,3.,0.,100.,kTRUE); | |
441 | pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kProton,-3.,3.,0.,0.4,kTRUE); | |
442 | pidITSTPCalone->AddCut(AliDielectronPID::kTPC,AliPID::kKaon,-3.,3.,0.,0.4,kTRUE); | |
443 | pidITSTPCalone->AddCut(AliDielectronPID::kTOF ,AliPID::kElectron , -3. , 3. , 0.4 , 100., kFALSE ); | |
444 | cgITSTPCalone->AddCut(pidITSTPCalone); | |
445 | ||
446 | AliDielectronVarCuts *pTPCHPT = new AliDielectronVarCuts("P>.4hpt","P>.4hpt"); | |
447 | pTPCHPT->AddCut(AliDielectronVarManager::kPt,.2,3.5); | |
448 | cgITSTPCalone->AddCut(pTPCHPT); | |
449 | ||
450 | cgITSTPCalone->AddCut(GetTrackCutsAna(cutSet)); | |
451 | ||
452 | ||
453 | ||
454 | anaCuts = cgITSTPCalone; | |
455 | break; | |
456 | ||
457 | case kPbPb2011pidITSTPCTOF: | |
458 | ||
459 | // eta range: | |
460 | AliDielectronVarCuts *etaRangePre1 = new AliDielectronVarCuts("etaRangePre1","etaRangePre1"); | |
461 | etaRangePre1->AddCut(AliDielectronVarManager::kEta,-0.9,0.9); | |
462 | // pt range: | |
463 | AliDielectronVarCuts *ptRangePre1 = new AliDielectronVarCuts("ptRangePre1","ptRangePre1"); | |
464 | ptRangePre1->AddCut(AliDielectronVarManager::kPt, .2, 3.5); // 0.2 is realistic. turnon at ~180MeV | |
465 | //AliDielectronVarCuts *ptRangePre2 = new AliDielectronVarCuts("ptRangePre2","ptRangePre2"); | |
466 | //ptRangePre2->AddCut(AliDielectronVarManager::kPt, .4, 3.5); | |
467 | //AliDielectronVarCuts *ptRangePre3 = new AliDielectronVarCuts("ptRangePre3","ptRangePre3"); | |
468 | //ptRangePre3->AddCut(AliDielectronVarManager::kPt, 0.05, 1.5); | |
469 | ||
470 | AliDielectronCutGroup* cgITSTPCTOFpre = new AliDielectronCutGroup("cgITSTPCTOFpre","cgITSTPCTOFpre",AliDielectronCutGroup::kCompAND); | |
471 | AliDielectronPID *pidITSTPCTOFpre = new AliDielectronPID("pidITSTPCTOFpre","pidITSTPCTOFpre"); | |
472 | pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3. , 3., 0. ,100., kFALSE); | |
473 | pidITSTPCTOFpre->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -3. , 3., 0. ,100., kTRUE); | |
474 | // ITS will be used: | |
475 | // pidITSTPCTOFpre->AddCut(AliDielectronPID::kITS,AliPID::kElectron, -3. , 3., 0. ,1.7 , kFALSE); | |
476 | // TOF will be used if available, and with pt instead of p: | |
477 | // pidITSTPCTOFpre->AddCut(AliDielectronPID::kTOF,AliPID::kElectron, -3. , 3., 0.4,100., kFALSE, | |
478 | // AliDielectronPID::kIfAvailable, AliDielectronVarManager::kPt); | |
479 | cgITSTPCTOFpre->AddCut(pidITSTPCTOFpre); | |
480 | cgITSTPCTOFpre->AddCut(etaRangePre1); | |
481 | cgITSTPCTOFpre->AddCut(ptRangePre1); | |
482 | cgITSTPCTOFpre->AddCut(GetTrackCutsAna(cutSet)); | |
483 | AliDielectronCutGroup* cgInitialTrackFilter = new AliDielectronCutGroup("cgInitialTrackFilter","cgInitialTrackFilter",AliDielectronCutGroup::kCompOR); | |
484 | cgInitialTrackFilter->AddCut(GetPIDCutsAna(cutSet)); // in case the prefilter cuts do not include all needed global tracks. | |
485 | cgInitialTrackFilter->AddCut(cgITSTPCTOFpre); | |
486 | //cgInitialTrackFilter->AddCut(cgTPCpre); | |
487 | //cgInitialTrackFilter->AddCut(cgITSSA); | |
488 | anaCuts = cgInitialTrackFilter; // kCompOR works!!! <- checked with 'SetNoPairing()' and commented out 'GetPIDCutsAna(selectedPID)' | |
489 | //cout << " ========== anaCuts prefilter: ========== " << endl; | |
490 | //anaCuts->Print(); | |
491 | break; | |
492 | ||
493 | ||
1ba767ec | 494 | default: cout << "No Pre-PID Cut defined " << endl; |
495 | } | |
496 | return anaCuts; | |
497 | } | |
498 | ||
499 | ||
500 | ||
2eab2b62 | 501 | |
502 | //Pair Cuts for Analysis step - take care of logic - inverted compared to other PairCuts!! | |
503 | AliAnalysisCuts* GetPairCuts2(Int_t cutSet, Bool_t togglePC /*=kFALSE*/) { | |
504 | AliAnalysisCuts* pairCuts=0x0; | |
505 | switch (cutSet) { | |
506 | case kPbPb2011TPCorTOF : | |
507 | case kpp2010TPCandTOF : | |
508 | AliDielectronVarCuts* pairCutsV= new AliDielectronVarCuts("InvMass","InvMass > 150 MeV"); | |
509 | pairCutsV->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE); | |
510 | pairCuts = pairCutsV; | |
511 | break; | |
512 | case kPbPb2011NoPID: | |
513 | case kPbPb2011TPCandTOF : | |
514 | case kPbPb2011TPC : | |
515 | case kPbPb2011TPCandTOFHPT: | |
516 | case kPbPb2011TPCandTOFwide : | |
517 | case kpp2010TPCorTOF : | |
518 | if (!togglePC) { | |
519 | ||
520 | AliDielectronCutGroup* pairCutsCG2 =new AliDielectronCutGroup("pairCutsCG2","pairCutsCG2",AliDielectronCutGroup::kCompOR); | |
521 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); | |
522 | pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); | |
523 | pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 0.0, 2.0); | |
524 | pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3"); | |
525 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); | |
526 | pairCutsInvMgood =new AliDielectronVarCuts("InvM Cuts good","InvM>0.3"); | |
527 | pairCutsInvMgood->AddCut(AliDielectronVarManager::kM, 0.05, 99999.); | |
528 | pairCutsCG->AddCut(pairCutsPhiv); | |
529 | pairCutsCG->AddCut(pairCutsInvM); | |
530 | pairCutsCG2->AddCut(pairCutsInvMgood); | |
531 | pairCutsCG2->AddCut(pairCutsCG); | |
532 | pairCuts = pairCutsCG2; | |
533 | } | |
534 | else { | |
535 | AliDielectronVarCuts* pairCutsV =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad"); | |
536 | pairCutsV->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035,kTRUE); | |
537 | pairCuts = pairCutsV; | |
538 | } | |
539 | break; | |
540 | default: cout << "No Pair Cuts defined " << endl; | |
541 | } | |
542 | return pairCuts; | |
543 | } | |
544 | ||
1ba767ec | 545 | |
546 | ||
2eab2b62 | 547 | //Pair Cuts for PREFILTER step |
1ba767ec | 548 | AliAnalysisCuts* GetPairCuts(Int_t cutSet) { |
2eab2b62 | 549 | AliAnalysisCuts* pairCuts=0x0; |
550 | switch (cutSet) { | |
551 | case kPbPb2011TPCorTOF : | |
552 | case kpp2010TPCandTOF : | |
1ba767ec | 553 | AliDielectronVarCuts* pairCutsM=0x0; |
554 | pairCutsM = new AliDielectronVarCuts("InvMass","InvMass > 150 MeV"); | |
555 | pairCutsM->AddCut(AliDielectronVarManager::kM,0.15,100.,kTRUE); | |
556 | pairCuts = pairCutsM; | |
557 | break; | |
558 | case kPbPb2011NoPID: | |
559 | case kPbPb2011TPCandTOF : | |
560 | case kPbPb2011TPC : | |
561 | case kPbPb2011TPCandTOFwide : | |
562 | case kPbPb2011TPCandTOFHPT: | |
2eab2b62 | 563 | /* case kpp2010TPCorTOF : |
1ba767ec | 564 | |
2eab2b62 | 565 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); |
566 | //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); | |
567 | //pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2); | |
568 | AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); | |
569 | pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); | |
570 | AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3"); | |
571 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.01); | |
572 | pairCutsCG->AddCut(pairCutsPhiv); | |
573 | pairCutsCG->AddCut(pairCutsInvM); | |
574 | */ | |
1ba767ec | 575 | AliDielectronCutGroup* pairCutsCG =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompAND); |
576 | AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); | |
577 | pairCutsPhiv->AddCut(AliDielectronVarManager::kPhivPair, 2.0, 3.2); | |
2eab2b62 | 578 | //AliDielectronVarCuts* pairCutsPhiv =new AliDielectronVarCuts("Phiv Cuts","Phiv<2.0rad"); |
579 | //pairCutsPhiv->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.05); | |
1ba767ec | 580 | AliDielectronVarCuts* pairCutsInvM =new AliDielectronVarCuts("InvM Cuts","InvM<0.3"); |
2eab2b62 | 581 | pairCutsInvM->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); |
1ba767ec | 582 | pairCutsCG->AddCut(pairCutsPhiv); |
583 | pairCutsCG->AddCut(pairCutsInvM); | |
2eab2b62 | 584 | pairCuts = pairCutsCG; |
1ba767ec | 585 | |
586 | ||
587 | //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad"); | |
588 | //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035); | |
589 | break; | |
590 | default: cout << "No Pair Cuts defined " << endl; | |
591 | } | |
592 | return pairCuts; | |
593 | } | |
594 | ||
2eab2b62 | 595 | |
596 | AliAnalysisCuts* GetPairCutsInvMass(Int_t cutSet) { | |
597 | cout << " >>>>>>>>>>>>>>>>>>>>>>>>>>>>> GetPairCutsInvMass() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>" << endl; | |
598 | AliAnalysisCuts* pairCuts=0x0; | |
599 | switch (cutSet) { | |
600 | case kPbPb2011MassLow : | |
601 | AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","0 MeV < InvMass < 30 MeV"); | |
602 | pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.,0.03); | |
603 | break; | |
604 | case kPbPb2011MassMiddle : | |
605 | AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","120 MeV < InvMass < 300 MeV"); | |
606 | pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.12,0.30); | |
607 | break; | |
608 | case kPbPb2011MassHigh : | |
609 | AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","300 MeV < InvMass < 500 MeV"); | |
610 | pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.30,0.50); | |
611 | break; | |
612 | case kPbPb2011MassAll : | |
613 | AliDielectronVarCuts* pairCutsInvSelect = new AliDielectronVarCuts("InvMass","0 GeV < InvMass < 10 GeV"); | |
614 | pairCutsInvSelect->AddCut(AliDielectronVarManager::kM, 0.0,10.0); | |
615 | break; | |
616 | ||
617 | default: cout << "No Pair Cuts defined " << endl; | |
618 | } | |
619 | ||
620 | pairCuts = pairCutsInvSelect; | |
621 | return pairCuts; | |
622 | } | |
623 | ||
624 | ||
625 | AliAnalysisCuts* GetPairCutsInOut(Int_t cutSet){ | |
626 | AliAnalysisCuts* pairCut=0x0; | |
627 | switch (cutSet) { | |
628 | case kPbPb2011RP: | |
629 | AliDielectronCutGroup* pairCutsPhiRP =new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR); | |
630 | AliDielectronVarCuts* pairCutsPhi1 =new AliDielectronVarCuts("Phi Cuts","-pi/4<Phi<pi/4"); | |
631 | pairCutsPhi1->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi()/4., TMath::Pi()/4.); | |
632 | AliDielectronVarCuts* pairCutsPhi2 =new AliDielectronVarCuts("Phi Cuts","3*pi/4<Phi"); | |
633 | pairCutsPhi2->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, 3.0*TMath::Pi()/4., TMath::Pi()); | |
634 | AliDielectronVarCuts* pairCutsPhi3 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi"); | |
635 | pairCutsPhi3->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, (-1.0)*TMath::Pi(),(-3.0)*TMath::Pi()/4.); | |
636 | ||
637 | pairCutsPhiRP->AddCut(pairCutsPhi1); | |
638 | pairCutsPhiRP->AddCut(pairCutsPhi2); | |
639 | pairCutsPhiRP->AddCut(pairCutsPhi3); | |
640 | ||
641 | pairCuts = pairCutsPhiRP; | |
642 | ||
643 | break; | |
644 | case kPbPb2011Mag: | |
645 | AliDielectronCutGroup* pairCutsPhiMag=new AliDielectronCutGroup("pairCutsCG","pairCutsCG",AliDielectronCutGroup::kCompOR); | |
646 | AliDielectronVarCuts* pairCutsPhi4 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi"); | |
647 | pairCutsPhi4->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2, TMath::Pi()/4.,3.0*TMath::Pi()/4.); | |
648 | AliDielectronVarCuts* pairCutsPhi5 =new AliDielectronVarCuts("Phi Cuts","-3*pi/4<Phi"); | |
649 | pairCutsPhi5->AddCut(AliDielectronVarManager::kDeltaPhiv0CrpH2,(-3.0)*TMath::Pi()/4.,(-1.0)*TMath::Pi()/4.); | |
650 | ||
651 | pairCutsPhiMag->AddCut(pairCutsPhi4); | |
652 | pairCutsPhiMag->AddCut(pairCutsPhi5); | |
653 | ||
654 | pairCuts = pairCutsPhiMag; | |
655 | //pairCuts =new AliDielectronVarCuts("OpeningAngle","Opening angle > .035rad"); | |
656 | //pairCuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0. , 0.035); | |
657 | break; | |
658 | default: cout << "No Pair Cuts defined " << endl; | |
659 | } | |
660 | return pairCuts; | |
661 | } | |
662 | ||
663 | ||
664 | ||
665 | ||
666 | //******************************************************************************* | |
667 | //******************************************************************************* | |
668 | //** ESD TRACK CUTS TUNED FOR AGREEMENT BETWEEN AODS AND ESDS ****************** | |
669 | //** NOT NECESSARILY 100% OPTIMIZED FOR DIEL-ANALYSIS ****************** | |
670 | //******************************************************************************* | |
671 | //******************************************************************************* | |
672 | ||
673 | //WHEN RUNNING ON ESDs: LOAD Default Cuts for AODs | |
1ba767ec | 674 | AliAnalysisCuts* GetESDTrackCutsAna(Int_t cutSet) { |
675 | AliESDtrackCuts* esdTrackCutsH = 0x0; | |
676 | switch (cutSet) { | |
677 | case kPbPb2011NoPID: | |
678 | case kPbPb2011TPCandTOF : | |
679 | case kPbPb2011TPCandTOFHPT: | |
680 | case kPbPb2011TPC : | |
681 | case kPbPb2011TPCandTOFwide : | |
682 | case kPbPb2011TPCorTOF : | |
683 | case kpp2010TPCandTOF : | |
684 | case kpp2010TPCorTOF : | |
685 | // standard cuts with very loose DCA: Bit4 (Int: 16), AOD095&115 | |
2eab2b62 | 686 | |
1ba767ec | 687 | |
688 | esdTrackCutsH = AliESDtrackCuts::GetStandardITSTPCTrackCuts2011(kFALSE); | |
689 | esdTrackCutsH->SetMaxDCAToVertexXY(2.4); | |
690 | esdTrackCutsH->SetMaxDCAToVertexZ(3.2); | |
691 | esdTrackCutsH->SetDCAToVertex2D(kTRUE); | |
1ba767ec | 692 | |
2eab2b62 | 693 | //The cuts below should be the onyl ones that are missing |
694 | //explicitely in the TrackCutsAna method | |
695 | //To be sure, StandardITSTPCTrackCuts is loaded however | |
696 | /* | |
1ba767ec | 697 | esdTrackCutsH = new AliESDtrackCuts(); |
698 | esdTrackCutsH->SetAcceptKinkDaughters(kFALSE); | |
699 | //Not done so far via dielectron cuts: | |
700 | */ | |
701 | /* | |
702 | esdTrackCuts->SetDCAToVertex2D(kFALSE); | |
703 | esdTrackCuts->SetRequireSigmaToVertex(kFALSE); | |
704 | esdTrackCuts->SetMaxChi2PerClusterITS(36); | |
705 | */ | |
706 | ||
707 | break; | |
2eab2b62 | 708 | |
1ba767ec | 709 | default: cout << "No Analysis Track Cut defined " << endl; |
710 | } | |
711 | return esdTrackCutsH; | |
712 | } | |
713 | ||
1ba767ec | 714 | |
2eab2b62 | 715 | //Make/Tighten track Cuts that are *NOT* already |
716 | //done in the AOD production | |
717 | //**IMPORTANT**: For AODs, select FilterBit | |
718 | //the method is ignored for ESDs | |
719 | ||
1ba767ec | 720 | AliAnalysisCuts* GetTrackCutsAna(Int_t cutSet) { |
721 | AliDielectronCutGroup* trackCuts=0x0; | |
722 | switch (cutSet) { | |
723 | case kPbPb2011NoPID: | |
724 | case kPbPb2011TPCandTOF : | |
725 | case kPbPb2011TPCandTOFHPT: | |
726 | case kPbPb2011TPC : | |
727 | case kPbPb2011TPCandTOFwide : | |
728 | case kPbPb2011TPCorTOF : | |
729 | case kpp2010TPCandTOF : | |
730 | case kpp2010TPCorTOF : | |
731 | trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); | |
732 | ||
733 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
734 | trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,6.); | |
735 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
736 | //DCA Cut | |
737 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
738 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
739 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
740 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 3.5); | |
741 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
742 | trackCutsDiel->SetAODFilterBit(16); //does nothing for ESDs | |
743 | trackCutsDiel->SetRequireITSRefit(kTRUE); | |
744 | trackCutsDiel->SetRequireTPCRefit(kTRUE); | |
745 | ||
746 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
747 | // trackCutsAOD->AddCut(AliDielectronVarManager::kNclsTPC, 80., 140.0); | |
748 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 110.0, 160.0); | |
749 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.0);//tighter than before, | |
750 | //due to AOD production | |
751 | trackCuts->AddCut(trackCutsDiel); | |
752 | trackCuts->AddCut(trackCutsAOD); | |
753 | break; | |
2eab2b62 | 754 | |
755 | case kPbPb2011pidITSTPCTOF: | |
756 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
757 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
758 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
759 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 4.0, 100.0); // means at least 2 with PID | |
760 | trackCutsAOD->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); | |
761 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCr, 100.0, 160.0); | |
762 | trackCutsAOD->AddCut(AliDielectronVarManager::kNFclsTPCfCross, 0.8, 1.1); // lower limit 0.8 in most filterbits! // 1.1 since 26.02.2014 | |
763 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
764 | trackCutsDiel->SetAODFilterBit(1<<4); // (=16) filterbit 4! //GetStandardITSTPCTrackCuts2011(kFALSE); loose DCA, 2D cut | |
765 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
766 | ||
767 | cgTrackCutsAnaSPDfirst = new AliDielectronCutGroup("cgTrackCutsAnaSPDfirst","cgTrackCutsAnaSPDfirst",AliDielectronCutGroup::kCompAND); | |
768 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsDiel); | |
769 | cgTrackCutsAnaSPDfirst->AddCut(trackCutsAOD); | |
770 | trackCuts = cgTrackCutsAnaSPDfirst; | |
771 | break; | |
772 | ||
773 | ||
774 | ||
1ba767ec | 775 | default: cout << "No Analysis Track Cut defined " << endl; |
776 | } | |
777 | return trackCuts; | |
778 | } | |
779 | ||
2eab2b62 | 780 | |
781 | //Possibly different cut sets for Prefilter step | |
782 | //Not used at the moment | |
1ba767ec | 783 | AliAnalysisCuts* GetTrackCutsPre(Int_t cutSet) { |
2eab2b62 | 784 | AliDielectronCutGroup* trackCuts=0x0; |
1ba767ec | 785 | switch (cutSet) { |
786 | case kPbPb2011NoPID: | |
787 | case kPbPb2011TPCandTOF : | |
788 | case kPbPb2011TPCandTOFHPT: | |
789 | case kPbPb2011TPCorTOF : | |
790 | case kpp2010TPCandTOF : | |
791 | case kpp2010TPCorTOF : | |
2eab2b62 | 792 | trackCuts = new AliDielectronCutGroup("cgPIDTPC1","cgPIDTPC1",AliDielectronCutGroup::kCompAND); |
793 | ||
794 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
795 | trackCutsAOD->AddCut(AliDielectronVarManager::kPt,0.05,0.2); | |
796 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
797 | //DCA Cut | |
798 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
799 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
800 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
801 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
802 | trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA | |
803 | trackCutsDiel->SetRequireITSRefit(kTRUE); | |
804 | ||
805 | trackCutsDiel->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kFirst); | |
806 | trackCuts->AddCut(trackCutsDiel); | |
807 | trackCuts->AddCut(trackCutsAOD); | |
808 | // cout << "No Pre-Track Cut defined for AODs at the moment " << endl; | |
1ba767ec | 809 | break; |
2eab2b62 | 810 | |
811 | case kPbPb2011pidITSTPCTOF: | |
812 | ||
813 | AliDielectronVarCuts* trackCutsAOD =new AliDielectronVarCuts("trackCutsAOD","trackCutsAOD"); | |
814 | trackCutsAOD->AddCut(AliDielectronVarManager::kEta,-0.84,0.84); | |
815 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
816 | trackCutsAOD->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
817 | trackCutsAOD->AddCut(AliDielectronVarManager::kNclsITS, 3.0, 100.0); | |
818 | AliDielectronTrackCuts *trackCutsDiel = new AliDielectronTrackCuts("trackCutsDiel","trackCutsDiel"); | |
819 | trackCutsDiel->SetAODFilterBit(1); //does nothing for ESDs, ITSSA(???) // maybe use FilterBit(2) instead! | |
820 | ||
821 | cgTrackCutsPre = new AliDielectronCutGroup("cgTrackCutsPre","cgTrackCutsPre",AliDielectronCutGroup::kCompAND); | |
822 | cgTrackCutsPre->AddCut(trackCutsDiel); | |
823 | cgTrackCutsPre->AddCut(trackCutsAOD); | |
824 | trackCuts = cgTrackCutsPre; | |
825 | break; | |
826 | ||
1ba767ec | 827 | default: cout << "No Pre-Track Cut defined " << endl; |
828 | } | |
829 | return trackCuts; | |
830 | } | |
831 | ||
832 | }; |