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),
27 fCheckOnlyFilterBit(kTRUE)
30 // Default constructor
33 //__________________________________________________________________________________________________
34 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const char *name, AliRsnCutSetDaughterParticle::ERsnDaughterCutSet cutSetID, AliPID::EParticleType pid, Float_t nSigmaFast = -1.0, Int_t AODfilterBit = 0) :
35 AliRsnCutSet(name, AliRsnTarget::kDaughter),
37 fAppliedCutSetID(cutSetID),
38 fNsigmaTPC(nSigmaFast),
39 fNsigmaTOF(nSigmaFast),
40 fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
41 fAODTrkCutFilterBit(AODfilterBit),
42 fCheckOnlyFilterBit(kTRUE)
50 AliWarning("Requested fast n-sigma PID with negative value for n. --> Setting n = 1E20");
55 //__________________________________________________________________________________________________
56 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) :
59 fAppliedCutSetID(copy.fAppliedCutSetID),
60 fNsigmaTPC(copy.fNsigmaTPC),
61 fNsigmaTOF(copy.fNsigmaTOF),
62 fCutQuality(copy.fCutQuality),
63 fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit),
64 fCheckOnlyFilterBit(copy.fCheckOnlyFilterBit)
70 //__________________________________________________________________________________________________
71 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©)
76 AliRsnCutSet::operator=(copy);
80 fAppliedCutSetID=copy.fAppliedCutSetID;
81 fNsigmaTPC=copy.fNsigmaTPC;
82 fNsigmaTOF=copy.fNsigmaTOF;
83 fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
84 fCheckOnlyFilterBit=copy.fCheckOnlyFilterBit;
85 fCutQuality=copy.fCutQuality;
89 //----------------------------------------------------------------------------
90 AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
98 //----------------------------------------------------------------------------
99 void AliRsnCutSetDaughterParticle::Init()
102 // init cut sets by setting variable params
104 if ( (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
105 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
106 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
107 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
108 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) ||
109 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011) ||
110 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011) )
112 fCutQuality->SetDefaults2011();
113 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
115 fCutQuality->SetDefaults2010();
116 fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
117 fCutQuality->SetDCAZmax(2.0);
118 fCutQuality->SetSPDminNClusters(1);
119 fCutQuality->SetITSminNClusters(0);
120 fCutQuality->SetITSmaxChi2(36);
121 fCutQuality->SetTPCminNClusters(70);
122 fCutQuality->SetTPCmaxChi2(4.0);
123 fCutQuality->SetRejectKinkDaughters();
124 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
125 //fCutQuality->SetITSmaxChi2(36);
126 //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
128 fCutQuality->SetCheckOnlyFilterBit(fCheckOnlyFilterBit);
129 fCutQuality->SetPtRange(0.15, 20.0);
130 fCutQuality->SetEtaRange(-0.8, 0.8);
132 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
133 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
134 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
135 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
136 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
137 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
139 switch (fAppliedCutSetID)
141 case AliRsnCutSetDaughterParticle::kNoCuts :
142 AliInfo("No cuts applied to daughter particle");
145 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
147 SetCutScheme(fCutQuality->GetName());
150 case AliRsnCutSetDaughterParticle::kQualityStd2011:
151 //fCutQuality->SetAODTestFilterBit(10); //1024
153 SetCutScheme(fCutQuality->GetName());
156 case AliRsnCutSetDaughterParticle::kTOFMatch :
158 AddCut(iCutTOFMatch);
159 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
162 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
163 if (fNsigmaTPC <= 0.0) {
164 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
165 SetNsigmaForFastTPCpid(10.0);
167 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
169 AddCut(iCutTPCNSigma);
170 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
173 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
174 if (fNsigmaTOF <= 0.0) {
175 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
176 SetNsigmaForFastTOFpid(10.0);
178 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
179 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
181 AddCut(iCutTOFNSigma);
182 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
185 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
186 /* Set TPC PID (if no TOF)*/
187 // all below 350 MeV: 5sigma
188 // all between 350 and 500 MeV: 3sigma
189 // pios above 500 MeV: 2sigma
190 // kaons between 500 and 700 MeV: 2sigma
191 // kaons above 700 MeV: rejected
192 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
193 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
194 if (fPID==AliPID::kPion)
195 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
196 if (fPID==AliPID::kKaon)
197 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
200 AddCut(iCutTOFMatch);
201 AddCut(iCutTPCNSigma);
204 iCutTPCTOFNSigma->SinglePIDRange(5.0);
205 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
206 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
208 AddCut(iCutTPCTOFNSigma);
209 AddCut(iCutTOFNSigma);
212 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
213 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
216 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
217 if (fNsigmaTOF <= 0.0) {
218 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
219 SetNsigmaForFastTOFpid(10.0);
221 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
222 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
223 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
226 AddCut(iCutTOFNSigma);
227 AddCut(iCutTPCTOFNSigma);
228 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
231 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
232 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
234 AddCut(iCutTOFMatch);
235 AddCut(iCutTPCTOFNSigma);
236 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
239 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
241 AddCut(iCutTOFMatch);
242 AddCut(iCutPhiTRD2010);
243 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
246 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
248 AddCut(iCutTOFMatch);
249 AddCut(iCutPhiNoTRD2010);
250 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
253 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
254 if (fNsigmaTOF <= 0.0) {
255 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
256 SetNsigmaForFastTOFpid(10.0);
258 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
259 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
260 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
263 AddCut(iCutTOFNSigma);
264 AddCut(iCutTPCTOFNSigma);
265 AddCut(iCutPhiTRD2010);
266 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
269 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
270 if (fNsigmaTOF <= 0.0) {
271 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
272 SetNsigmaForFastTOFpid(10.0);
274 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
275 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
276 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
279 AddCut(iCutTOFNSigma);
280 AddCut(iCutTPCTOFNSigma);
281 AddCut(iCutPhiNoTRD2010);
282 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
285 case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
286 if (fNsigmaTPC <= 0.0) {
287 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
288 SetNsigmaForFastTPCpid(10.0);
290 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
292 AddCut(iCutTPCNSigma);
293 AddCut(iCutTOFMatch);
294 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
297 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
299 AddCut(iCutPhiTRD2010);
300 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
303 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
305 AddCut(iCutPhiNoTRD2010);
306 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
309 case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis
311 AddCut(iCutTOFMatch);
312 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
315 case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011:
316 if (fNsigmaTPC <= 0.0) {
317 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
318 SetNsigmaForFastTPCpid(10.0);
320 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
322 AddCut(iCutTPCNSigma);
323 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
326 case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011:
327 if (fNsigmaTOF <= 0.0) {
328 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
329 SetNsigmaForFastTOFpid(10.0);
331 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
332 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
333 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
336 AddCut(iCutTOFNSigma);
337 AddCut(iCutTPCTOFNSigma);
338 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
341 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011:
342 /* Set TPC PID (if no TOF)*/
343 // all below 350 MeV: 5sigma
344 // all between 350 and 500 MeV: 3sigma
345 // pios above 500 MeV: 2sigma
346 // kaons between 500 and 700 MeV: 2sigma
347 // kaons above 700 MeV: rejected
348 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
349 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
350 if (fPID==AliPID::kPion)
351 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
352 if (fPID==AliPID::kKaon)
353 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
356 AddCut(iCutTOFMatch);
357 AddCut(iCutTPCNSigma);
360 iCutTPCTOFNSigma->SinglePIDRange(5.0);
361 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
362 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
364 AddCut(iCutTPCTOFNSigma);
365 AddCut(iCutTOFNSigma);
368 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
369 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
373 case AliRsnCutSetDaughterParticle::kTPCpidTOFvetoKStarPPB2011:
374 if (fNsigmaTPC <= 0.0) {
375 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
376 SetNsigmaForFastTPCpid(5.0);
378 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
381 iCutTOFNSigma->SinglePIDRange(5.0);
383 iCutTOFNSigma->SinglePIDRange(3.0);
386 AddCut(iCutTPCNSigma);
387 AddCut(iCutTOFNSigma);
390 // quality & [ (TPCsigma & TOFsigma-2) ]
391 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(),iCutTPCNSigma->GetName(),iCutTOFNSigma->GetName()) ) ;
394 case AliRsnCutSetDaughterParticle::kTPCpidMatchPPB2011:
395 if (fNsigmaTPC <= 0.0) {
396 AliWarning(Form("Invalid number of sigmas required for %s. Setting nSigma = 5.0",iCutTPCNSigma->GetName()));
397 SetNsigmaForFastTPCpid(5.0);
399 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
401 AddCut(iCutTPCNSigma);
402 AddCut(iCutTOFMatch);
403 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(),iCutTOFMatch->GetName()) );