]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/AliRsnCutSetDaughterParticle.cxx
Improved constructor for more flexibility in nsigma pid cuts
[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),
26 fAODTrkCutFilterBit(0)
9cdd5474 27{
28 //
29 // Default constructor
30}
31
32//__________________________________________________________________________________________________
a6430459 33AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
e6952ec7 34 AliRsnCutSet(name, AliRsnTarget::kDaughter),
35 fPID(pid),
36 fAppliedCutSetID(cutSetID),
9006f1a2 37 fNsigmaTPC(nSigmaFast),
38 fNsigmaTOF(nSigmaFast),
e6952ec7 39 fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
40 fAODTrkCutFilterBit(AODfilterBit)
9cdd5474 41{
42 //
43 // Constructor
44 //
9006f1a2 45 if (nSigmaFast<=0){
46 fNsigmaTPC=1e20;
47 fNsigmaTOF=1e20;
48 AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
49 }
50 Init();
9cdd5474 51}
52
53//__________________________________________________________________________________________________
54AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle &copy) :
55 AliRsnCutSet(copy),
56 fPID(copy.fPID),
57 fAppliedCutSetID(copy.fAppliedCutSetID),
58 fNsigmaTPC(copy.fNsigmaTPC),
a6430459 59 fNsigmaTOF(copy.fNsigmaTOF),
60 fCutQuality(copy.fCutQuality),
61 fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit)
9cdd5474 62{
63 //
64 // copy constructor
65}
66
67//__________________________________________________________________________________________________
68AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle &copy)
e6952ec7 69{
9cdd5474 70 //
71 // operator =
e6952ec7 72 //
73 AliRsnCutSet::operator=(copy);
74 if (this == &copy)
75 return *this;
76 fPID=copy.fPID;
77 fAppliedCutSetID=copy.fAppliedCutSetID;
78 fNsigmaTPC=copy.fNsigmaTPC;
79 fNsigmaTOF=copy.fNsigmaTOF;
80 fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
81 fCutQuality=copy.fCutQuality;
82 return (*this);
9cdd5474 83}
84
a6430459 85//----------------------------------------------------------------------------
86AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
87{
e6952ec7 88 //
89 //destructor
90 //
91 if (fCutQuality)
92 delete fCutQuality;
a6430459 93}
9cdd5474 94//----------------------------------------------------------------------------
e6952ec7 95void AliRsnCutSetDaughterParticle::Init()
96{
97 //
98 // init cut sets by setting variable params
99 //
b307bb43 100 if ( (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
101 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
102 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
103 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
104 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) )
105 {
106 fCutQuality->SetDefaults2011();
107 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
108 fCutQuality->SetPtRange(0.15, 20.0);
109 fCutQuality->SetEtaRange(-0.8, 0.8);
110 } else {
111 fCutQuality->SetDefaults2010();
112 fCutQuality->SetPtRange(0.15, 20.0);
113 fCutQuality->SetEtaRange(-0.8, 0.8);
114 fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
115 fCutQuality->SetDCAZmax(2.0);
116 fCutQuality->SetSPDminNClusters(1);
117 fCutQuality->SetITSminNClusters(0);
118 fCutQuality->SetITSmaxChi2(36);
119 fCutQuality->SetTPCminNClusters(70);
120 fCutQuality->SetTPCmaxChi2(4.0);
121 fCutQuality->SetRejectKinkDaughters();
122 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
123 //fCutQuality->SetITSmaxChi2(36);
124 //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
125 }\
e6952ec7 126 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
127 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
128 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
129 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
ec54038b 130 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
131 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
6b5662ca 132
e6952ec7 133 switch (fAppliedCutSetID)
134 {
135 case AliRsnCutSetDaughterParticle::kNoCuts :
136 AliInfo("No cuts applied to daughter particle");
137 break;
138
139 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
140 AddCut(fCutQuality);
141 SetCutScheme(fCutQuality->GetName());
142 break;
143
144 case AliRsnCutSetDaughterParticle::kQualityStd2011:
145 //fCutQuality->SetAODTestFilterBit(10); //1024
146 AddCut(fCutQuality);
147 SetCutScheme(fCutQuality->GetName());
148 break;
149
150 case AliRsnCutSetDaughterParticle::kTOFMatch :
151 AddCut(fCutQuality);
152 AddCut(iCutTOFMatch);
153 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
154 break;
155
156 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
157 if (fNsigmaTPC <= 0.0) {
158 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
159 SetNsigmaForFastTPCpid(10.0);
160 }
161 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
162 AddCut(fCutQuality);
163 AddCut(iCutTPCNSigma);
164 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
165 break;
166
167 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
168 if (fNsigmaTOF <= 0.0) {
169 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
170 SetNsigmaForFastTOFpid(10.0);
171 }
172 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
173 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
174 AddCut(fCutQuality);
175 AddCut(iCutTOFNSigma);
176 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
177 break;
178
179 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
180 /* Set TPC PID (if no TOF)*/
181 // all below 350 MeV: 5sigma
182 // all between 350 and 500 MeV: 3sigma
183 // pios above 500 MeV: 2sigma
184 // kaons between 500 and 700 MeV: 2sigma
185 // kaons above 700 MeV: rejected
186 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
187 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
188 if (fPID==AliPID::kPion)
189 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
190 if (fPID==AliPID::kKaon)
191 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
192
193 AddCut(fCutQuality);
194 AddCut(iCutTOFMatch);
195 AddCut(iCutTPCNSigma);
196
197 /* set TPC+TOF PID*/
198 iCutTPCTOFNSigma->SinglePIDRange(5.0);
199 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
200 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
201
202 AddCut(iCutTPCTOFNSigma);
203 AddCut(iCutTOFNSigma);
204
205 // scheme:
206 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
207 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
208 break;
209
210 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
211 if (fNsigmaTOF <= 0.0) {
212 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
213 SetNsigmaForFastTOFpid(10.0);
214 }
215 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
216 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
217 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
218
219 AddCut(fCutQuality);
220 AddCut(iCutTOFNSigma);
221 AddCut(iCutTPCTOFNSigma);
222 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
223 break;
224
225 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
226 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
227 AddCut(fCutQuality);
228 AddCut(iCutTOFMatch);
229 AddCut(iCutTPCTOFNSigma);
230 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
231 break;
232
6b5662ca 233 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
234 AddCut(fCutQuality);
235 AddCut(iCutTOFMatch);
236 AddCut(iCutPhiTRD2010);
b307bb43 237 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
6b5662ca 238 break;
239
240 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
241 AddCut(fCutQuality);
242 AddCut(iCutTOFMatch);
243 AddCut(iCutPhiNoTRD2010);
b307bb43 244 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
6b5662ca 245 break;
246
247 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
248 if (fNsigmaTOF <= 0.0) {
249 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
250 SetNsigmaForFastTOFpid(10.0);
251 }
252 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
253 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
254 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
255
256 AddCut(fCutQuality);
257 AddCut(iCutTOFNSigma);
258 AddCut(iCutTPCTOFNSigma);
259 AddCut(iCutPhiTRD2010);
63800d55 260 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
6b5662ca 261 break;
262
263 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
264 if (fNsigmaTOF <= 0.0) {
265 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
266 SetNsigmaForFastTOFpid(10.0);
267 }
268 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
269 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
270 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
271
272 AddCut(fCutQuality);
273 AddCut(iCutTOFNSigma);
274 AddCut(iCutTPCTOFNSigma);
275 AddCut(iCutPhiNoTRD2010);
63800d55 276 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
6b5662ca 277 break;
278
279 case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
280 if (fNsigmaTPC <= 0.0) {
281 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
282 SetNsigmaForFastTPCpid(10.0);
283 }
284 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
285 AddCut(fCutQuality);
286 AddCut(iCutTPCNSigma);
287 AddCut(iCutTOFMatch);
288 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
289 break;
9664d398 290
291 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
292 AddCut(fCutQuality);
293 AddCut(iCutPhiTRD2010);
294 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
295 break;
296
297 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
298 AddCut(fCutQuality);
299 AddCut(iCutPhiNoTRD2010);
300 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
301 break;
302
b307bb43 303 case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis
304 AddCut(fCutQuality);
305 AddCut(iCutTOFMatch);
306 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
307 break;
308
309 case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011:
310 if (fNsigmaTPC <= 0.0) {
311 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
312 SetNsigmaForFastTPCpid(10.0);
313 }
314 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
315 AddCut(fCutQuality);
316 AddCut(iCutTPCNSigma);
317 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
318 break;
319
320 case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011:
321 if (fNsigmaTOF <= 0.0) {
322 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
323 SetNsigmaForFastTOFpid(10.0);
324 }
325 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
326 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
327 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
328
329 AddCut(fCutQuality);
330 AddCut(iCutTOFNSigma);
331 AddCut(iCutTPCTOFNSigma);
332 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
333 break;
334
335 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011:
336 /* Set TPC PID (if no TOF)*/
337 // all below 350 MeV: 5sigma
338 // all between 350 and 500 MeV: 3sigma
339 // pios above 500 MeV: 2sigma
340 // kaons between 500 and 700 MeV: 2sigma
341 // kaons above 700 MeV: rejected
342 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
343 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
344 if (fPID==AliPID::kPion)
345 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
346 if (fPID==AliPID::kKaon)
347 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
348
349 AddCut(fCutQuality);
350 AddCut(iCutTOFMatch);
351 AddCut(iCutTPCNSigma);
352
353 /* set TPC+TOF PID*/
354 iCutTPCTOFNSigma->SinglePIDRange(5.0);
355 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
356 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
357
358 AddCut(iCutTPCTOFNSigma);
359 AddCut(iCutTOFNSigma);
360
361 // scheme:
362 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
363 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
364 break;
9664d398 365
6b5662ca 366 default :
e6952ec7 367 break;
368 }
369
9cdd5474 370}
371
372
373