2 // Author: Francesca Bellini (fbellini@cern.ch)
9 #include "AliPIDResponse.h"
10 #include "AliRsnCutSetDaughterParticle.h"
12 class AliRsnCutPIDNSigma;
16 ClassImp(AliRsnCutSetDaughterParticle)
18 //__________________________________________________________________________________________________
19 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle() :
20 AliRsnCutSet("AliRsnCutSetDaughterParticle", AliRsnTarget::kDaughter),
22 fAppliedCutSetID(AliRsnCutSetDaughterParticle::kNDaughterCuts),
26 fAODTrkCutFilterBit(0)
29 // Default constructor
32 //__________________________________________________________________________________________________
33 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
34 AliRsnCutSet(name, AliRsnTarget::kDaughter),
36 fAppliedCutSetID(cutSetID),
37 fNsigmaTPC(nSigmaFast),
38 fNsigmaTOF(nSigmaFast),
39 fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
40 fAODTrkCutFilterBit(AODfilterBit)
48 AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
53 //__________________________________________________________________________________________________
54 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) :
57 fAppliedCutSetID(copy.fAppliedCutSetID),
58 fNsigmaTPC(copy.fNsigmaTPC),
59 fNsigmaTOF(copy.fNsigmaTOF),
60 fCutQuality(copy.fCutQuality),
61 fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit)
67 //__________________________________________________________________________________________________
68 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©)
73 AliRsnCutSet::operator=(copy);
77 fAppliedCutSetID=copy.fAppliedCutSetID;
78 fNsigmaTPC=copy.fNsigmaTPC;
79 fNsigmaTOF=copy.fNsigmaTOF;
80 fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
81 fCutQuality=copy.fCutQuality;
85 //----------------------------------------------------------------------------
86 AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
94 //----------------------------------------------------------------------------
95 void AliRsnCutSetDaughterParticle::Init()
98 // init cut sets by setting variable params
100 if ( (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
101 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
102 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
103 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
104 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) ||
105 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) ||
106 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011) )
108 fCutQuality->SetDefaults2011();
109 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
111 fCutQuality->SetDefaults2010();
112 fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
113 fCutQuality->SetDCAZmax(2.0);
114 fCutQuality->SetSPDminNClusters(1);
115 fCutQuality->SetITSminNClusters(0);
116 fCutQuality->SetITSmaxChi2(36);
117 fCutQuality->SetTPCminNClusters(70);
118 fCutQuality->SetTPCmaxChi2(4.0);
119 fCutQuality->SetRejectKinkDaughters();
120 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
121 //fCutQuality->SetITSmaxChi2(36);
122 //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
124 fCutQuality->SetPtRange(0.15, 20.0);
125 fCutQuality->SetEtaRange(-0.8, 0.8);
127 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
128 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
129 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
130 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
131 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
132 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
134 switch (fAppliedCutSetID)
136 case AliRsnCutSetDaughterParticle::kNoCuts :
137 AliInfo("No cuts applied to daughter particle");
140 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
142 SetCutScheme(fCutQuality->GetName());
145 case AliRsnCutSetDaughterParticle::kQualityStd2011:
146 //fCutQuality->SetAODTestFilterBit(10); //1024
148 SetCutScheme(fCutQuality->GetName());
151 case AliRsnCutSetDaughterParticle::kTOFMatch :
153 AddCut(iCutTOFMatch);
154 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
157 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
158 if (fNsigmaTPC <= 0.0) {
159 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
160 SetNsigmaForFastTPCpid(10.0);
162 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
164 AddCut(iCutTPCNSigma);
165 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
168 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
169 if (fNsigmaTOF <= 0.0) {
170 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
171 SetNsigmaForFastTOFpid(10.0);
173 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
174 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
176 AddCut(iCutTOFNSigma);
177 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
180 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
181 /* Set TPC PID (if no TOF)*/
182 // all below 350 MeV: 5sigma
183 // all between 350 and 500 MeV: 3sigma
184 // pios above 500 MeV: 2sigma
185 // kaons between 500 and 700 MeV: 2sigma
186 // kaons above 700 MeV: rejected
187 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
188 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
189 if (fPID==AliPID::kPion)
190 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
191 if (fPID==AliPID::kKaon)
192 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
195 AddCut(iCutTOFMatch);
196 AddCut(iCutTPCNSigma);
199 iCutTPCTOFNSigma->SinglePIDRange(5.0);
200 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
201 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
203 AddCut(iCutTPCTOFNSigma);
204 AddCut(iCutTOFNSigma);
207 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
208 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
211 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
212 if (fNsigmaTOF <= 0.0) {
213 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
214 SetNsigmaForFastTOFpid(10.0);
216 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
217 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
218 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
221 AddCut(iCutTOFNSigma);
222 AddCut(iCutTPCTOFNSigma);
223 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
226 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
227 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
229 AddCut(iCutTOFMatch);
230 AddCut(iCutTPCTOFNSigma);
231 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
234 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
236 AddCut(iCutTOFMatch);
237 AddCut(iCutPhiTRD2010);
238 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
241 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
243 AddCut(iCutTOFMatch);
244 AddCut(iCutPhiNoTRD2010);
245 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
248 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
249 if (fNsigmaTOF <= 0.0) {
250 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
251 SetNsigmaForFastTOFpid(10.0);
253 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
254 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
255 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
258 AddCut(iCutTOFNSigma);
259 AddCut(iCutTPCTOFNSigma);
260 AddCut(iCutPhiTRD2010);
261 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
264 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
265 if (fNsigmaTOF <= 0.0) {
266 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
267 SetNsigmaForFastTOFpid(10.0);
269 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
270 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
271 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
274 AddCut(iCutTOFNSigma);
275 AddCut(iCutTPCTOFNSigma);
276 AddCut(iCutPhiNoTRD2010);
277 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
280 case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
281 if (fNsigmaTPC <= 0.0) {
282 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
283 SetNsigmaForFastTPCpid(10.0);
285 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
287 AddCut(iCutTPCNSigma);
288 AddCut(iCutTOFMatch);
289 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
292 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
294 AddCut(iCutPhiTRD2010);
295 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
298 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
300 AddCut(iCutPhiNoTRD2010);
301 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
304 case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis
306 AddCut(iCutTOFMatch);
307 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
310 case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011:
311 if (fNsigmaTPC <= 0.0) {
312 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
313 SetNsigmaForFastTPCpid(10.0);
315 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
317 AddCut(iCutTPCNSigma);
318 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
321 case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011:
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);
326 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
327 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
328 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
331 AddCut(iCutTOFNSigma);
332 AddCut(iCutTPCTOFNSigma);
333 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
336 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011:
337 /* Set TPC PID (if no TOF)*/
338 // all below 350 MeV: 5sigma
339 // all between 350 and 500 MeV: 3sigma
340 // pios above 500 MeV: 2sigma
341 // kaons between 500 and 700 MeV: 2sigma
342 // kaons above 700 MeV: rejected
343 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
344 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
345 if (fPID==AliPID::kPion)
346 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
347 if (fPID==AliPID::kKaon)
348 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
351 AddCut(iCutTOFMatch);
352 AddCut(iCutTPCNSigma);
355 iCutTPCTOFNSigma->SinglePIDRange(5.0);
356 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
357 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
359 AddCut(iCutTPCTOFNSigma);
360 AddCut(iCutTOFNSigma);
363 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
364 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
368 case AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011:
369 if (fNsigmaTPC <= 0.0) {
370 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
371 SetNsigmaForFastTPCpid(5.0);
373 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
376 iCutTOFNSigma->SinglePIDRange(5.0);
378 iCutTOFNSigma->SinglePIDRange(3.0);
381 AddCut(iCutTPCNSigma);
382 AddCut(iCutTOFNSigma);
385 // quality & [ (TPCsigma & TOFsigma-2) ]
386 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(),iCutTPCNSigma->GetName(),iCutTOFNSigma->GetName()) ) ;
389 case AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011:
390 if (fNsigmaTPC <= 0.0) {
391 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
392 SetNsigmaForFastTPCpid(5.0);
394 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
396 AddCut(iCutTPCNSigma);
397 AddCut(iCutTOFMatch);
398 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(),iCutTOFMatch->GetName()) );