]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx
Added DCA of daughters and DCA product computation (Massimo)
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutSetDaughterParticle.cxx
CommitLineData
9cdd5474 1//
2// Author: Francesca Bellini (fbellini@cern.ch)
3//
4//
5
6#include <Riostream.h>
7
8#include "AliPID.h"
9#include "AliPIDResponse.h"
10#include "AliRsnCutSetDaughterParticle.h"
11
12class AliRsnCutPIDNSigma;
13class AliRsnPIDRange;
6b5662ca 14class AliRsnCutPhi;
9cdd5474 15
16ClassImp(AliRsnCutSetDaughterParticle)
17
18//__________________________________________________________________________________________________
19AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
e6952ec7 20 AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter),
21 fPID(AliPID::kPion),
22 fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts),
23 fNsigmaTPC(1E20),
24 fNsigmaTOF(1E20),
25 fCutQuality(0x0),
536339fc 26 fAODTrkCutFilterBit(0),
e1fec9d4 27 fCheckOnlyFilterBit(kTRUE),
953fadb4
FB
28 fUseCustomQualityCuts(kFALSE),
29 fIsUse2011stdQualityCuts(kFALSE),
30 fIsUse2011stdQualityCutsHighPt(kFALSE)
9cdd5474 31{
32 //
33 // Default constructor
e1fec9d4 34 SetPtRange(0.0, 1E20);
35 SetEtaRange(1E20, 1E20);
9cdd5474 36}
37
38//__________________________________________________________________________________________________
a6430459 39AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
e6952ec7 40 AliRsnCutSet(name, AliRsnTarget::kDaughter),
41 fPID(pid),
42 fAppliedCutSetID(cutSetID),
9006f1a2 43 fNsigmaTPC(nSigmaFast),
44 fNsigmaTOF(nSigmaFast),
e6952ec7 45 fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
536339fc 46 fAODTrkCutFilterBit(AODfilterBit),
e1fec9d4 47 fCheckOnlyFilterBit(kTRUE),
953fadb4
FB
48 fUseCustomQualityCuts(kFALSE),
49 fIsUse2011stdQualityCuts(kFALSE),
50 fIsUse2011stdQualityCutsHighPt(kFALSE)
9cdd5474 51{
52 //
53 // Constructor
54 //
e1fec9d4 55 //set here pt and eta range
56 SetPtRange(0.15, 20.0);
57 SetEtaRange(-0.8, 0.8);
58
59 //if nsigma not specified, sets "no-PID" cuts
9006f1a2 60 if (nSigmaFast<=0){
61 fNsigmaTPC=1e20;
62 fNsigmaTOF=1e20;
63 AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
e1fec9d4 64 }
65
66 //initialize quality std and PID cuts
67 InitStdQualityCuts();
9006f1a2 68 Init();
9cdd5474 69}
70
e1fec9d4 71//__________________________________________________________________________________________________
72AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutTrackQuality *rsnTrackQualityCut, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0) :
73 AliRsnCutSet(name, AliRsnTarget::kDaughter),
74 fPID(pid),
75 fAppliedCutSetID(cutSetID),
76 fNsigmaTPC(nSigmaFast),
77 fNsigmaTOF(nSigmaFast),
78 fCutQuality(rsnTrackQualityCut),
79 fAODTrkCutFilterBit(0),
80 fCheckOnlyFilterBit(kFALSE),
953fadb4
FB
81 fUseCustomQualityCuts(kFALSE),
82 fIsUse2011stdQualityCuts(kFALSE),
83 fIsUse2011stdQualityCutsHighPt(kFALSE)
e1fec9d4 84{
85 //
86 // Constructor: uses externally-defined track-quality cut object
87 //
88 if (!rsnTrackQualityCut) {
89 //if external track quality cut object not defined,
90 //sets default track quality to be initialised +
91 //sets here pt and eta cuts
92 InitStdQualityCuts();
93 SetPtRange(0.15, 20.0);
94 SetEtaRange(-0.8, 0.8);
95 } else {
96 //checks validity of passed quality-cut object
97 //if Ok, inherits all cuts including Pt and Eta cut
98 fCheckOnlyFilterBit=kFALSE;
99 fUseCustomQualityCuts = kTRUE;
100 SetPtRange(rsnTrackQualityCut->GetPtRange(0), rsnTrackQualityCut->GetPtRange(1));
101 SetEtaRange(rsnTrackQualityCut->GetEtaRange(0),rsnTrackQualityCut->GetEtaRange(1));
102 AliInfo("Custom quality cuts applied");
103 rsnTrackQualityCut->Print();
104 }
105
106 //if nsigma not specified, sets "no-PID" cuts
107 if (nSigmaFast<=0){
108 fNsigmaTPC=1e20;
109 fNsigmaTOF=1e20;
110 AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
111 }
112
113 //initialize PID cuts
114 Init();
115}
116
117
9cdd5474 118//__________________________________________________________________________________________________
119AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy) :
e1fec9d4 120 AliRsnCutSet(copy),
121 fPID(copy.fPID),
122 fAppliedCutSetID(copy.fAppliedCutSetID),
123 fNsigmaTPC(copy.fNsigmaTPC),
124 fNsigmaTOF(copy.fNsigmaTOF),
125 fCutQuality(copy.fCutQuality),
126 fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit),
127 fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit),
953fadb4
FB
128 fUseCustomQualityCuts(copy.fUseCustomQualityCuts),
129 fIsUse2011stdQualityCuts(copy.fIsUse2011stdQualityCuts),
130 fIsUse2011stdQualityCutsHighPt(copy.fIsUse2011stdQualityCutsHighPt)
9cdd5474 131{
e1fec9d4 132 //
133 // copy constructor
134 SetPtRange(copy.fPtRange[0], copy.fPtRange[1]);
135 SetEtaRange(copy.fEtaRange[0], copy.fEtaRange[1]);
9cdd5474 136}
137
138//__________________________________________________________________________________________________
139AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle &copy)
e6952ec7 140{
9cdd5474 141 //
142 // operator =
e6952ec7 143 //
144 AliRsnCutSet::operator=(copy);
145 if (this == &copy)
146 return *this;
147 fPID=copy.fPID;
148 fAppliedCutSetID=copy.fAppliedCutSetID;
149 fNsigmaTPC=copy.fNsigmaTPC;
150 fNsigmaTOF=copy.fNsigmaTOF;
151 fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
536339fc 152 fCheckOnlyFilterBit=copy.fCheckOnlyFilterBit;
e1fec9d4 153 fUseCustomQualityCuts=copy.fUseCustomQualityCuts;
953fadb4
FB
154 fIsUse2011stdQualityCuts=copy.fIsUse2011stdQualityCuts;
155 fIsUse2011stdQualityCutsHighPt=copy.fIsUse2011stdQualityCutsHighPt;
e6952ec7 156 fCutQuality=copy.fCutQuality;
157 return (*this);
9cdd5474 158}
159
a6430459 160//----------------------------------------------------------------------------
161AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
162{
e6952ec7 163 //
164 //destructor
165 //
166 if (fCutQuality)
167 delete fCutQuality;
a6430459 168}
e1fec9d4 169
9cdd5474 170//----------------------------------------------------------------------------
e6952ec7 171void AliRsnCutSetDaughterParticle::Init()
172{
319ac306 173
e1fec9d4 174 //define TOF match cut
319ac306 175 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
e1fec9d4 176 //define PID cuts
177 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
178 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
179 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
180 //define phi (azimuthal angle) cuts for TRD presence
181 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
182 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
183
184 //
185 //defines cut schemes by combining quality cuts and PID cuts
186 //
187 switch (fAppliedCutSetID)
188 {
e6952ec7 189 case AliRsnCutSetDaughterParticle::kNoCuts :
190 AliInfo("No cuts applied to daughter particle");
191 break;
192
193 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
194 AddCut(fCutQuality);
195 SetCutScheme(fCutQuality->GetName());
196 break;
197
198 case AliRsnCutSetDaughterParticle::kQualityStd2011:
953fadb4
FB
199 AddCut(fCutQuality);
200 SetCutScheme(fCutQuality->GetName());
201 break;
202
203 case AliRsnCutSetDaughterParticle::kQualityStd2011HighPt:
e6952ec7 204 AddCut(fCutQuality);
205 SetCutScheme(fCutQuality->GetName());
206 break;
207
208 case AliRsnCutSetDaughterParticle::kTOFMatch :
209 AddCut(fCutQuality);
210 AddCut(iCutTOFMatch);
211 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
212 break;
213
214 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
215 if (fNsigmaTPC <= 0.0) {
216 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
217 SetNsigmaForFastTPCpid(10.0);
218 }
219 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
220 AddCut(fCutQuality);
221 AddCut(iCutTPCNSigma);
222 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
223 break;
224
225 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
226 if (fNsigmaTOF <= 0.0) {
227 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
228 SetNsigmaForFastTOFpid(10.0);
229 }
230 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
231 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
232 AddCut(fCutQuality);
233 AddCut(iCutTOFNSigma);
234 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
235 break;
236
237 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
238 /* Set TPC PID (if no TOF)*/
239 // all below 350 MeV: 5sigma
240 // all between 350 and 500 MeV: 3sigma
241 // pios above 500 MeV: 2sigma
242 // kaons between 500 and 700 MeV: 2sigma
243 // kaons above 700 MeV: rejected
244 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
245 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
246 if (fPID==AliPID::kPion)
247 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
248 if (fPID==AliPID::kKaon)
249 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
250
251 AddCut(fCutQuality);
252 AddCut(iCutTOFMatch);
253 AddCut(iCutTPCNSigma);
254
255 /* set TPC+TOF PID*/
256 iCutTPCTOFNSigma->SinglePIDRange(5.0);
257 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
258 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
259
260 AddCut(iCutTPCTOFNSigma);
261 AddCut(iCutTOFNSigma);
262
263 // scheme:
264 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
265 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
266 break;
267
268 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
269 if (fNsigmaTOF <= 0.0) {
270 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
271 SetNsigmaForFastTOFpid(10.0);
272 }
273 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
274 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
275 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
276
277 AddCut(fCutQuality);
278 AddCut(iCutTOFNSigma);
279 AddCut(iCutTPCTOFNSigma);
280 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
281 break;
282
283 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
284 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
285 AddCut(fCutQuality);
286 AddCut(iCutTOFMatch);
287 AddCut(iCutTPCTOFNSigma);
288 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
289 break;
319ac306 290
6b5662ca 291 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
319ac306 292 AddCut(fCutQuality);
293 AddCut(iCutTOFMatch);
294 AddCut(iCutPhiTRD2010);
295 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
296 break;
6b5662ca 297
298 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
319ac306 299 AddCut(fCutQuality);
300 AddCut(iCutTOFMatch);
301 AddCut(iCutPhiNoTRD2010);
302 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
303 break;
6b5662ca 304
319ac306 305 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
306 if (fNsigmaTOF <= 0.0) {
307 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
308 SetNsigmaForFastTOFpid(10.0);
309 }
310 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
311 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
312 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
6b5662ca 313
319ac306 314 AddCut(fCutQuality);
315 AddCut(iCutTOFNSigma);
316 AddCut(iCutTPCTOFNSigma);
317 AddCut(iCutPhiTRD2010);
318 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
319 break;
6b5662ca 320
319ac306 321 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
322 if (fNsigmaTOF <= 0.0) {
323 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
324 SetNsigmaForFastTOFpid(10.0);
325 }
326 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
327 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
328 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
6b5662ca 329
319ac306 330 AddCut(fCutQuality);
331 AddCut(iCutTOFNSigma);
332 AddCut(iCutTPCTOFNSigma);
333 AddCut(iCutPhiNoTRD2010);
334 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
335 break;
6b5662ca 336
337 case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
319ac306 338 if (fNsigmaTPC <= 0.0) {
339 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
340 SetNsigmaForFastTPCpid(10.0);
341 }
342 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
343 AddCut(fCutQuality);
344 AddCut(iCutTPCNSigma);
345 AddCut(iCutTOFMatch);
346 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
347 break;
9664d398 348
349 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
350 AddCut(fCutQuality);
351 AddCut(iCutPhiTRD2010);
352 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
353 break;
354
355 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
356 AddCut(fCutQuality);
357 AddCut(iCutPhiNoTRD2010);
358 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
359 break;
360
b307bb43 361 case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis
362 AddCut(fCutQuality);
363 AddCut(iCutTOFMatch);
364 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
365 break;
366
367 case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011:
368 if (fNsigmaTPC <= 0.0) {
369 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
370 SetNsigmaForFastTPCpid(10.0);
371 }
372 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
373 AddCut(fCutQuality);
374 AddCut(iCutTPCNSigma);
375 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
376 break;
377
378 case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011:
379 if (fNsigmaTOF <= 0.0) {
380 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
381 SetNsigmaForFastTOFpid(10.0);
382 }
383 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
384 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
385 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
386
387 AddCut(fCutQuality);
388 AddCut(iCutTOFNSigma);
389 AddCut(iCutTPCTOFNSigma);
390 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
391 break;
392
393 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011:
394 /* Set TPC PID (if no TOF)*/
395 // all below 350 MeV: 5sigma
396 // all between 350 and 500 MeV: 3sigma
397 // pios above 500 MeV: 2sigma
398 // kaons between 500 and 700 MeV: 2sigma
399 // kaons above 700 MeV: rejected
400 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
401 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
402 if (fPID==AliPID::kPion)
403 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
404 if (fPID==AliPID::kKaon)
405 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
406
407 AddCut(fCutQuality);
408 AddCut(iCutTOFMatch);
409 AddCut(iCutTPCNSigma);
410
411 /* set TPC+TOF PID*/
412 iCutTPCTOFNSigma->SinglePIDRange(5.0);
413 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
414 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
415
416 AddCut(iCutTPCTOFNSigma);
417 AddCut(iCutTOFNSigma);
418
419 // scheme:
420 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
421 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
422 break;
319ac306 423
424
953fadb4 425 case AliRsnCutSetDaughterParticle::kTPCTOFtightPidKStarPPB2011:
319ac306 426 if (fNsigmaTPC <= 0.0) {
427 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
428 SetNsigmaForFastTPCpid(5.0);
429 }
430 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
431
432 if(fNsigmaTPC==3.0)
433 iCutTOFNSigma->SinglePIDRange(5.0);
434 if(fNsigmaTPC==2.0)
435 iCutTOFNSigma->SinglePIDRange(3.0);
436
437 AddCut(fCutQuality);
438 AddCut(iCutTPCNSigma);
439 AddCut(iCutTOFNSigma);
440
441 // scheme:
442 // quality & [ (TPCsigma & TOFsigma-2) ]
443 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(),iCutTPCNSigma->GetName(),iCutTOFNSigma->GetName()) ) ;
444 break;
445
446 case AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011:
447 if (fNsigmaTPC <= 0.0) {
448 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
449 SetNsigmaForFastTPCpid(5.0);
450 }
451 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
452 AddCut(fCutQuality);
453 AddCut(iCutTPCNSigma);
454 AddCut(iCutTOFMatch);
455 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(),iCutTOFMatch->GetName()) );
456 break;
9664d398 457
953fadb4
FB
458 case AliRsnCutSetDaughterParticle::kTPCpidTOFveto4s:
459 if (fNsigmaTPC <= 0.0) {
460 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
461 SetNsigmaForFastTPCpid(5.0);
462 }
463 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
464 AddCut(fCutQuality);
465 iCutTOFNSigma->SinglePIDRange(4.0);
466
467 AddCut(iCutTPCNSigma);
468 AddCut(iCutTOFMatch);
469 AddCut(iCutTOFNSigma);
470
471 // scheme:
472 // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ]
473 SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ;
474 break;
475
476 case AliRsnCutSetDaughterParticle::kTPCpidTOFveto3s:
477 if (fNsigmaTPC <= 0.0) {
478 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
479 SetNsigmaForFastTPCpid(5.0);
480 }
481 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
482 AddCut(fCutQuality);
483 iCutTOFNSigma->SinglePIDRange(3.0);
484
485 AddCut(iCutTPCNSigma);
486 AddCut(iCutTOFMatch);
487 AddCut(iCutTOFNSigma);
488
489 // scheme:
490 // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ]
491 SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ;
492 break;
493
494 case AliRsnCutSetDaughterParticle::kCombinedPidBestPtDep:
495 /* Set TPC PID (if no TOF)*/
496 // all below 500 MeV: 3sigma
497 // all above 500 MeV: 2sigma
498 iCutTPCNSigma->AddPIDRange(3.0, 0.0, 0.5);
499 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
500
501 AddCut(fCutQuality);
502 AddCut(iCutTOFMatch);
503 AddCut(iCutTPCNSigma);
504
505 /* set TPC+TOF PID*/
506 // pions if TOF match: TPC 5 sigma & TOF 3 sigma
507 // kaons if TOF match:
508 // below 1.5GeV/c: TPC 5 sigma & TOF 3 sigma
509 // above 1.5GeV/c: TPC 3 sigma & TOF 3 sigma
510
511 if (fPID==AliPID::kPion){
512 iCutTPCTOFNSigma->SinglePIDRange(5.0);
513 }
514
515 if (fPID==AliPID::kKaon){
516 iCutTPCTOFNSigma->AddPIDRange(5.0, 0.0, 1.5);
517 iCutTPCTOFNSigma->AddPIDRange(3.0, 1.5, 1E20);
518 }
519 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1E20);
520 AddCut(iCutTPCTOFNSigma);
521 AddCut(iCutTOFNSigma);
522
523 // scheme:
524 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
525 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
526 break;
527
528 case AliRsnCutSetDaughterParticle::kTPCPidPtDep:
529 /* Set TPC PID (if no TOF)*/
530 // all below 500 MeV: 3sigma
531 // all above 500 MeV: 2sigma
532 iCutTPCNSigma->AddPIDRange(3.0, 0.0, 0.5);
533 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
534
535 AddCut(fCutQuality);
536 AddCut(iCutTPCNSigma);
537 // scheme:
538 // quality & TPConly
539 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) ) ;
319ac306 540 break;
e6952ec7 541
953fadb4
FB
542 case AliRsnCutSetDaughterParticle::kTOFPidPtDep:
543 /* Set TOF PID */
544 // all below 1500 MeV: 3sigma
545 // all above 1500 MeV: 2sigma
546 //TPC 5 sigma always to remove mismatch
547 iCutTPCTOFNSigma->SinglePIDRange(5.0);
548 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
549 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
550
551 AddCut(fCutQuality);
552 AddCut(iCutTPCTOFNSigma);
553 AddCut(iCutTOFNSigma);
554 // scheme:
555 // quality & TPConly
556 SetCutScheme( Form("%s&%s&%s", fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName()) ) ;
557 break;
558
559 case AliRsnCutSetDaughterParticle::kTPCRejPtDepTOFNsigma:
560 /* Set TOF PID */
561 // TPC mismatch rejection:
562 // below 1.500 GeV: 5sigma
563 // above 1.500 GeV: 3sigma
564 // TOF nsigma PID in full pT
565 iCutTPCTOFNSigma->AddPIDRange(5.0, 0.0, 1.5);
566 iCutTPCTOFNSigma->AddPIDRange(3.0, 1.5, 1E20);
567
568 if (fNsigmaTOF <= 0.0) {
569 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
570 SetNsigmaForFastTOFpid(10.0);
571 }
572 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
573
574 AddCut(fCutQuality);
575 AddCut(iCutTPCTOFNSigma);
576 AddCut(iCutTOFNSigma);
577 // scheme:
578 // quality & TPConly
579 SetCutScheme( Form("%s&%s&%s", fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName()) ) ;
580 break;
581
582 case AliRsnCutSetDaughterParticle::kTPCNsigmaTOFVetoPtDep:
583 /* Set TPC PID */
584 // TOF veto:
585 // below 1.500 GeV: 5sigma
586 // above 1.500 GeV: 3sigma
587 // TPC nsigma PID in full pT
588 if (fNsigmaTPC <= 0.0) {
589 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
590 SetNsigmaForFastTPCpid(10.0);
591 }
592 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
593
594 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
595 iCutTOFNSigma->AddPIDRange(4.0, 1.5, 1E20);
596
597 AddCut(fCutQuality);
598 AddCut(iCutTPCNSigma);
599 AddCut(iCutTOFMatch);
600 AddCut(iCutTOFNSigma);
601
602 // scheme:
603 // quality & [ (TPCsigma & !TOFmatch) | (TPCsigma & TOFsigma) ]
604 SetCutScheme( Form("%s&((%s&(!%s))|(%s&%s))",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName(),iCutTOFNSigma->GetName(), iCutTPCNSigma->GetName()) ) ;
605 break;
606
607 default :
608 break;
609 }
610
9cdd5474 611}
612
613
e1fec9d4 614//-----------------------------------------------
615void AliRsnCutSetDaughterParticle::PrintTrackQualityCuts()
616{
617 //Prints track quality cuts
618 fCutQuality->Print();
619 return;
620}
9cdd5474 621
e1fec9d4 622//-----------------------------------------------
623void AliRsnCutSetDaughterParticle::InitStdQualityCuts()
624{
625 // initialize quality std (if not externally defined) and PID cuts
626 // init cut sets by setting variable params
627 //
953fadb4
FB
628 // Bool_t isUse2011stdQualityCutsHighPt = ((fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011HighPt) ||
629 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
630 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
631 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
632 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) ||
633 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) ||
634 // (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011));
635
636 // Bool_t isUse2011stdQualityCuts = (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011);
637
638 if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) {
639 fIsUse2011stdQualityCuts = kTRUE;
640 fIsUse2011stdQualityCutsHighPt = kFALSE;
641 }
642 if (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011HighPt) {
643 fIsUse2011stdQualityCuts = kFALSE;
644 fIsUse2011stdQualityCutsHighPt = kTRUE;
645 }
646
647 if (fIsUse2011stdQualityCuts) {
648 fCutQuality->SetDefaults2011();//uses filter bit 5 as default
e1fec9d4 649 } else {
953fadb4
FB
650 if (fIsUse2011stdQualityCutsHighPt) {
651 fCutQuality->SetDefaultsHighPt2011();//uses filter bit 5 as default
652 } else {
653 fCutQuality->SetDefaults2010();
654 fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
655 fCutQuality->SetDCAZmax(2.0);
656 fCutQuality->SetSPDminNClusters(1);
657 fCutQuality->SetITSminNClusters(0);
658 fCutQuality->SetITSmaxChi2(36);
659 fCutQuality->SetTPCminNClusters(70);
660 fCutQuality->SetTPCmaxChi2(4.0);
661 fCutQuality->SetRejectKinkDaughters();
662 //fCutQuality->SetITSmaxChi2(36);
663 //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
664 }
e1fec9d4 665 }
953fadb4 666 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit); //changes default filter bit to the chosen filter bit
e1fec9d4 667
668 //apply pt and eta cuts
669 fCutQuality->SetPtRange(fPtRange[0], fPtRange[1]);
670 fCutQuality->SetEtaRange(fEtaRange[0], fEtaRange[1]);
671 AliInfo("Standard quality cuts applied");
672 fCutQuality->Print();
673 return;
674}