]>
Commit | Line | Data |
---|---|---|
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 | ||
12 | class AliRsnCutPIDNSigma; | |
13 | class AliRsnPIDRange; | |
6b5662ca | 14 | class AliRsnCutPhi; |
9cdd5474 | 15 | |
16 | ClassImp(AliRsnCutSetDaughterParticle) | |
17 | ||
18 | //__________________________________________________________________________________________________ | |
19 | AliRsnCutSetDaughterParticle::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 | 33 | AliRsnCutSetDaughterParticle::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 | //__________________________________________________________________________________________________ | |
54 | AliRsnCutSetDaughterParticle::AliRsnCutSetDaughterParticle(const AliRsnCutSetDaughterParticle ©) : | |
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 | //__________________________________________________________________________________________________ | |
68 | AliRsnCutSetDaughterParticle &AliRsnCutSetDaughterParticle::operator=(const AliRsnCutSetDaughterParticle ©) | |
e6952ec7 | 69 | { |
9cdd5474 | 70 | // |
71 | // operator = | |
e6952ec7 | 72 | // |
73 | AliRsnCutSet::operator=(copy); | |
74 | if (this == ©) | |
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 | //---------------------------------------------------------------------------- |
86 | AliRsnCutSetDaughterParticle::~AliRsnCutSetDaughterParticle() | |
87 | { | |
e6952ec7 | 88 | // |
89 | //destructor | |
90 | // | |
91 | if (fCutQuality) | |
92 | delete fCutQuality; | |
a6430459 | 93 | } |
9cdd5474 | 94 | //---------------------------------------------------------------------------- |
e6952ec7 | 95 | void 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 |