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),
39 fCutQuality(new AliRsnCutTrackQuality("CutQuality")),
40 fAODTrkCutFilterBit(AODfilterBit)
45 if ( (nSigmaFast<=0) &&
46 ((cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) || (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma)) ) {
47 AliError("Requested fast n-sigma PID with invalid value for n. Setting n = 1E20");
49 if (cutSetID == AliRsnCutSetDaughterParticle::kFastTPCpidNsigma) {
50 fNsigmaTPC = nSigmaFast;
52 if (cutSetID == AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma) {
53 fNsigmaTPC = nSigmaFast;
55 if ( (cutSetID == AliRsnCutSetDaughterParticle::kFastTOFpidNsigma) ||
56 (cutSetID == AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010) ) {
57 fNsigmaTOF = nSigmaFast;
64 //__________________________________________________________________________________________________
65 AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) :
68 fAppliedCutSetID(copy.fAppliedCutSetID),
69 fNsigmaTPC(copy.fNsigmaTPC),
70 fNsigmaTOF(copy.fNsigmaTOF),
71 fCutQuality(copy.fCutQuality),
72 fAODTrkCutFilterBit(copy.fAODTrkCutFilterBit)
78 //__________________________________________________________________________________________________
79 AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©)
84 AliRsnCutSet::operator=(copy);
88 fAppliedCutSetID=copy.fAppliedCutSetID;
89 fNsigmaTPC=copy.fNsigmaTPC;
90 fNsigmaTOF=copy.fNsigmaTOF;
91 fAODTrkCutFilterBit=copy.fAODTrkCutFilterBit;
92 fCutQuality=copy.fCutQuality;
96 //----------------------------------------------------------------------------
97 AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle()
105 //----------------------------------------------------------------------------
106 void AliRsnCutSetDaughterParticle::Init()
109 // init cut sets by setting variable params
111 if ( (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kQualityStd2011) ||
112 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFMatchPPB2011) || //pA analysis
113 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011) ||
114 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011) ||
115 (fAppliedCutSetID==AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011) )
117 fCutQuality->SetDefaults2011();
118 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
119 fCutQuality->SetPtRange(0.15, 20.0);
120 fCutQuality->SetEtaRange(-0.8, 0.8);
122 fCutQuality->SetDefaults2010();
123 fCutQuality->SetPtRange(0.15, 20.0);
124 fCutQuality->SetEtaRange(-0.8, 0.8);
125 fCutQuality->SetDCARPtFormula("0.0182+0.0350/pt^1.01");
126 fCutQuality->SetDCAZmax(2.0);
127 fCutQuality->SetSPDminNClusters(1);
128 fCutQuality->SetITSminNClusters(0);
129 fCutQuality->SetITSmaxChi2(36);
130 fCutQuality->SetTPCminNClusters(70);
131 fCutQuality->SetTPCmaxChi2(4.0);
132 fCutQuality->SetRejectKinkDaughters();
133 fCutQuality->SetAODTestFilterBit(fAODTrkCutFilterBit);
134 //fCutQuality->SetITSmaxChi2(36);
135 //fCutQuality->SetMaxChi2TPCConstrainedGlobal(36);
137 AliRsnCutTOFMatch *iCutTOFMatch = new AliRsnCutTOFMatch("CutTOFMatch");
138 AliRsnCutPIDNSigma *iCutTPCNSigma = new AliRsnCutPIDNSigma("CutTPCNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
139 AliRsnCutPIDNSigma *iCutTPCTOFNSigma = new AliRsnCutPIDNSigma("CutTPCTOFNSigma", fPID, AliRsnCutPIDNSigma::kTPC);//, AliRsnCutPIDNSigma::kTPCinnerP );
140 AliRsnCutPIDNSigma *iCutTOFNSigma = new AliRsnCutPIDNSigma("CutTOFNSigma", fPID, AliRsnCutPIDNSigma::kTOF);//, AliRsnCutPIDNSigma::kP );
141 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD CheckTOF");
142 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD CheckTOF");
144 switch (fAppliedCutSetID)
146 case AliRsnCutSetDaughterParticle::kNoCuts :
147 AliInfo("No cuts applied to daughter particle");
150 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
152 SetCutScheme(fCutQuality->GetName());
155 case AliRsnCutSetDaughterParticle::kQualityStd2011:
156 //fCutQuality->SetAODTestFilterBit(10); //1024
158 SetCutScheme(fCutQuality->GetName());
161 case AliRsnCutSetDaughterParticle::kTOFMatch :
163 AddCut(iCutTOFMatch);
164 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
167 case AliRsnCutSetDaughterParticle::kFastTPCpidNsigma :
168 if (fNsigmaTPC <= 0.0) {
169 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
170 SetNsigmaForFastTPCpid(10.0);
172 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
174 AddCut(iCutTPCNSigma);
175 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
178 case AliRsnCutSetDaughterParticle::kFastTOFpidNsigma :
179 if (fNsigmaTOF <= 0.0) {
180 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
181 SetNsigmaForFastTOFpid(10.0);
183 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
184 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
186 AddCut(iCutTOFNSigma);
187 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
190 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPP2010 :
191 /* Set TPC PID (if no TOF)*/
192 // all below 350 MeV: 5sigma
193 // all between 350 and 500 MeV: 3sigma
194 // pios above 500 MeV: 2sigma
195 // kaons between 500 and 700 MeV: 2sigma
196 // kaons above 700 MeV: rejected
197 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
198 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
199 if (fPID==AliPID::kPion)
200 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
201 if (fPID==AliPID::kKaon)
202 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
205 AddCut(iCutTOFMatch);
206 AddCut(iCutTPCNSigma);
209 iCutTPCTOFNSigma->SinglePIDRange(5.0);
210 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
211 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
213 AddCut(iCutTPCTOFNSigma);
214 AddCut(iCutTOFNSigma);
217 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
218 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
221 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPb2010:
222 if (fNsigmaTOF <= 0.0) {
223 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
224 SetNsigmaForFastTOFpid(10.0);
226 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
227 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
228 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
231 AddCut(iCutTOFNSigma);
232 AddCut(iCutTPCTOFNSigma);
233 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
236 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
237 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
239 AddCut(iCutTOFMatch);
240 AddCut(iCutTPCTOFNSigma);
241 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
244 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
246 AddCut(iCutTOFMatch);
247 AddCut(iCutPhiTRD2010);
248 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
251 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
253 AddCut(iCutTOFMatch);
254 AddCut(iCutPhiNoTRD2010);
255 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
258 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbTRD2010:
259 if (fNsigmaTOF <= 0.0) {
260 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
261 SetNsigmaForFastTOFpid(10.0);
263 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
264 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
265 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
268 AddCut(iCutTOFNSigma);
269 AddCut(iCutTPCTOFNSigma);
270 AddCut(iCutPhiTRD2010);
271 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
274 case AliRsnCutSetDaughterParticle::kTOFpidKstarPbPbNoTRD2010:
275 if (fNsigmaTOF <= 0.0) {
276 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
277 SetNsigmaForFastTOFpid(10.0);
279 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
280 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
281 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
284 AddCut(iCutTOFNSigma);
285 AddCut(iCutTPCTOFNSigma);
286 AddCut(iCutPhiNoTRD2010);
287 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
290 case AliRsnCutSetDaughterParticle::kTOFMatchTPCpidNsigma :
291 if (fNsigmaTPC <= 0.0) {
292 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
293 SetNsigmaForFastTPCpid(10.0);
295 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
297 AddCut(iCutTPCNSigma);
298 AddCut(iCutTOFMatch);
299 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
302 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
304 AddCut(iCutPhiTRD2010);
305 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
308 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
310 AddCut(iCutPhiNoTRD2010);
311 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );
314 case AliRsnCutSetDaughterParticle::kTOFMatchPPB2011: //pA analysis
316 AddCut(iCutTOFMatch);
317 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
320 case AliRsnCutSetDaughterParticle::kTPCpidKstarPPB2011:
321 if (fNsigmaTPC <= 0.0) {
322 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTPCNSigma->GetName()));
323 SetNsigmaForFastTPCpid(10.0);
325 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
327 AddCut(iCutTPCNSigma);
328 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
331 case AliRsnCutSetDaughterParticle::kTOFpidKstarPPB2011:
332 if (fNsigmaTOF <= 0.0) {
333 AliWarning(Form("Invalid number of sigmas required for %s. Setting default nSigma = 10",iCutTOFNSigma->GetName()));
334 SetNsigmaForFastTOFpid(10.0);
336 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
337 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
338 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
341 AddCut(iCutTOFNSigma);
342 AddCut(iCutTPCTOFNSigma);
343 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
346 case AliRsnCutSetDaughterParticle::kTPCTOFpidKstarPPB2011:
347 /* Set TPC PID (if no TOF)*/
348 // all below 350 MeV: 5sigma
349 // all between 350 and 500 MeV: 3sigma
350 // pios above 500 MeV: 2sigma
351 // kaons between 500 and 700 MeV: 2sigma
352 // kaons above 700 MeV: rejected
353 iCutTPCNSigma->AddPIDRange(5.0, 0.0, 0.35);
354 iCutTPCNSigma->AddPIDRange(3.0, 0.35, 0.5);
355 if (fPID==AliPID::kPion)
356 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 1E20);
357 if (fPID==AliPID::kKaon)
358 iCutTPCNSigma->AddPIDRange(2.0, 0.5, 0.7);
361 AddCut(iCutTOFMatch);
362 AddCut(iCutTPCNSigma);
365 iCutTPCTOFNSigma->SinglePIDRange(5.0);
366 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
367 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
369 AddCut(iCutTPCTOFNSigma);
370 AddCut(iCutTOFNSigma);
373 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
374 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;