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 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);
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 );
130 AliRsnCutPhi *iCutPhiTRD2010 = new AliRsnCutPhi("CutPhiTRD2010","InTRD");
131 AliRsnCutPhi *iCutPhiNoTRD2010 = new AliRsnCutPhi("CutPhiNoTRD2010","OutTRD");
133 switch (fAppliedCutSetID)
135 case AliRsnCutSetDaughterParticle::kNoCuts :
136 AliInfo("No cuts applied to daughter particle");
139 case AliRsnCutSetDaughterParticle::kQualityStd2010 :
141 SetCutScheme(fCutQuality->GetName());
144 case AliRsnCutSetDaughterParticle::kQualityStd2011:
145 //fCutQuality->SetAODTestFilterBit(10); //1024
147 SetCutScheme(fCutQuality->GetName());
150 case AliRsnCutSetDaughterParticle::kTOFMatch :
152 AddCut(iCutTOFMatch);
153 SetCutScheme( Form("%s&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName()) );
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);
161 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
163 AddCut(iCutTPCNSigma);
164 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName()) );
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);
172 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
173 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
175 AddCut(iCutTOFNSigma);
176 SetCutScheme( Form("%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName()) );
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);
194 AddCut(iCutTOFMatch);
195 AddCut(iCutTPCNSigma);
198 iCutTPCTOFNSigma->SinglePIDRange(5.0);
199 iCutTOFNSigma->AddPIDRange(3.0, 0.0, 1.5);
200 iCutTOFNSigma->AddPIDRange(2.0, 1.5, 1E20);
202 AddCut(iCutTPCTOFNSigma);
203 AddCut(iCutTOFNSigma);
206 // quality & [ (TOF & TPCTOF) || (!TOFmatch & TPConly) ]
207 SetCutScheme( Form("%s&((%s&%s)|((!%s)&%s))",fCutQuality->GetName(), iCutTPCTOFNSigma->GetName(), iCutTOFNSigma->GetName(), iCutTOFMatch->GetName(), iCutTPCNSigma->GetName()) ) ;
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);
215 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
216 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
217 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
220 AddCut(iCutTOFNSigma);
221 AddCut(iCutTPCTOFNSigma);
222 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName()) );
225 case AliRsnCutSetDaughterParticle::kTOFTPCmismatchKstarPbPb2010:
226 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
228 AddCut(iCutTOFMatch);
229 AddCut(iCutTPCTOFNSigma);
230 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutTPCTOFNSigma->GetName()) );
233 case AliRsnCutSetDaughterParticle::kTOFMatchTRD2010 :
235 AddCut(iCutTOFMatch);
236 AddCut(iCutPhiTRD2010);
237 SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiTRD2010->GetName()) );
240 case AliRsnCutSetDaughterParticle::kTOFMatchNoTRD2010 :
242 AddCut(iCutTOFMatch);
243 AddCut(iCutPhiNoTRD2010);
244 SetCutScheme( Form("%s&(%s)&(%s)",fCutQuality->GetName(), iCutTOFMatch->GetName(), iCutPhiNoTRD2010->GetName()) );
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);
252 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
253 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
254 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
257 AddCut(iCutTOFNSigma);
258 AddCut(iCutTPCTOFNSigma);
259 AddCut(iCutPhiTRD2010);
260 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiTRD2010->GetName()) );
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);
268 iCutTOFNSigma->SinglePIDRange(fNsigmaTOF);
269 //iCutTOFNSigma->AddPIDRange(3.0, 0.35, 1E20);
270 iCutTPCTOFNSigma->SinglePIDRange(5.0); //5-sigma veto on tpc signal
273 AddCut(iCutTOFNSigma);
274 AddCut(iCutTPCTOFNSigma);
275 AddCut(iCutPhiNoTRD2010);
276 SetCutScheme( Form("%s&%s&%s&%s",fCutQuality->GetName(), iCutTOFNSigma->GetName(), iCutTPCTOFNSigma->GetName(),iCutPhiNoTRD2010->GetName()) );
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);
284 iCutTPCNSigma->SinglePIDRange(fNsigmaTPC);
286 AddCut(iCutTPCNSigma);
287 AddCut(iCutTOFMatch);
288 SetCutScheme( Form("%s&%s&%s",fCutQuality->GetName(), iCutTPCNSigma->GetName(), iCutTOFMatch->GetName()) );
291 case AliRsnCutSetDaughterParticle::kQualityStd2010TRD:
293 AddCut(iCutPhiTRD2010);
294 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiTRD2010->GetName()) );
297 case AliRsnCutSetDaughterParticle::kQualityStd2010NoTRD:
299 AddCut(iCutPhiNoTRD2010);
300 SetCutScheme( Form("%s&%s",fCutQuality->GetName(),iCutPhiNoTRD2010->GetName()) );