]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx
Fixed compilation warning
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliRDHFCutsDplustoKpipi.cxx
CommitLineData
e3d40058 1/**************************************************************************
2 * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
16/////////////////////////////////////////////////////////////
17//
18// Class for cuts on AOD reconstructed D+->Kpipi
19//
20// Author: R. Bala, bala@to.infn.it
21// G. Ortona, ortona@to.infn.it
22/////////////////////////////////////////////////////////////
23
24#include <TDatabasePDG.h>
25#include <Riostream.h>
26
27#include "AliRDHFCutsDplustoKpipi.h"
28#include "AliAODRecoDecayHF3Prong.h"
29#include "AliAODTrack.h"
30#include "AliESDtrack.h"
31
73173a6a 32
e3d40058 33ClassImp(AliRDHFCutsDplustoKpipi)
34
35//--------------------------------------------------------------------------
a9b75906 36AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi(const char* name) :
da24b73f 37AliRDHFCuts(name),
38fUseStrongPid(kFALSE)
e3d40058 39{
40 //
41 // Default Constructor
42 //
43 Int_t nvars=12;
44 SetNVars(nvars);
45 TString varNames[12]={"inv. mass [GeV]",
46 "pTK [GeV/c]",
47 "pTPi [GeV/c]",
48 "d0K [cm] lower limit!",
49 "d0Pi [cm] lower limit!",
50 "dist12 (cm)",
51 "sigmavert (cm)",
52 "dist prim-sec (cm)",
53 "pM=Max{pT1,pT2,pT3} (GeV/c)",
54 "cosThetaPoint",
55 "Sum d0^2 (cm^2)",
56 "dca cut (cm)"};
57 Bool_t isUpperCut[12]={kTRUE,
58 kFALSE,
59 kFALSE,
60 kFALSE,
61 kFALSE,
62 kFALSE,
63 kTRUE,
64 kFALSE,
65 kFALSE,
66 kFALSE,
67 kFALSE,
68 kTRUE};
69 SetVarNames(nvars,varNames,isUpperCut);
4755453e 70 Bool_t forOpt[12]={kFALSE,
e3d40058 71 kFALSE,
72 kFALSE,
73 kFALSE,
74 kFALSE,
75 kFALSE,
76 kTRUE,
77 kTRUE,
78 kTRUE,
79 kTRUE,
80 kTRUE,
81 kFALSE};
4755453e 82 SetVarsForOpt(5,forOpt);
e3d40058 83 Float_t limits[2]={0,999999999.};
84 SetPtBins(2,limits);
73173a6a 85 if(fPidHF)delete fPidHF;
86 fPidHF=new AliAODPidHF();
87 Double_t plim[2]={0.6,0.8};
88 Double_t nsigma[5]={2.,1.,2.,3.,0.};
89
90 fPidHF->SetPLimit(plim);
91 fPidHF->SetAsym(kTRUE);
92 fPidHF->SetSigma(nsigma);
93 fPidHF->SetMatch(1);
94 fPidHF->SetTPC(1);
95 fPidHF->SetTOF(1);
96 fPidHF->SetITS(0);
97 fPidHF->SetTRD(0);
98 fPidHF->SetCompat(kTRUE);
99
100
e3d40058 101}
370f7180 102
103
104
105
106
107
108
109
e3d40058 110//--------------------------------------------------------------------------
111AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi(const AliRDHFCutsDplustoKpipi &source) :
da24b73f 112 AliRDHFCuts(source),
113 fUseStrongPid(source.fUseStrongPid)
114
e3d40058 115{
116 //
117 // Copy constructor
118 //
119
120}
121//--------------------------------------------------------------------------
122AliRDHFCutsDplustoKpipi &AliRDHFCutsDplustoKpipi::operator=(const AliRDHFCutsDplustoKpipi &source)
123{
124 //
125 // assignment operator
126 //
127 if(&source == this) return *this;
128
129 AliRDHFCuts::operator=(source);
130
131 return *this;
132}
73173a6a 133//
e3d40058 134
135
136//---------------------------------------------------------------------------
137void AliRDHFCutsDplustoKpipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) {
138 //
139 // Fills in vars the values of the variables
140 //
141
142
143 if(nvars!=fnVarsForOpt) {
144 printf("AliRDHFCutsDplustoKpipi::GetCutsVarsForOpt: wrong number of variables\n");
145 return;
146 }
147
148 AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d;
e3d40058 149
e3d40058 150 Int_t iter=-1;
151 if(fVarsForOpt[0]){
152 iter++;
153 vars[iter]=dd->InvMassDplus();
154 }
155 if(fVarsForOpt[1]){
156 iter++;
157 for(Int_t iprong=0;iprong<3;iprong++){
158 if(TMath::Abs(pdgdaughters[iprong])==321) {
159 vars[iter]=dd->PtProng(iprong);
160 }
161 }
162 }
163 if(fVarsForOpt[2]){
164 iter++;
4755453e 165 Float_t minPtDau=1000000.0;
e3d40058 166 for(Int_t iprong=0;iprong<3;iprong++){
167 if(TMath::Abs(pdgdaughters[iprong])==211) {
4755453e 168 if(dd->PtProng(iprong)<minPtDau){
169 minPtDau=dd->PtProng(iprong);
170 }
e3d40058 171 }
172 }
4755453e 173 vars[iter]=minPtDau;
e3d40058 174 }
175 if(fVarsForOpt[3]){
176 iter++;
177 for(Int_t iprong=0;iprong<3;iprong++){
178 if(TMath::Abs(pdgdaughters[iprong])==321) {
179 vars[iter]=dd->Getd0Prong(iprong);
180 }
181 }
182 }
183 if(fVarsForOpt[4]){
184 iter++;
4755453e 185 Float_t minImpParDau=1000000.0;
e3d40058 186 for(Int_t iprong=0;iprong<3;iprong++){
187 if(TMath::Abs(pdgdaughters[iprong])==211) {
4755453e 188 if(dd->Getd0Prong(iprong)<minImpParDau){
189 minImpParDau=dd->Getd0Prong(iprong);
190 }
e3d40058 191 }
192 }
4755453e 193 vars[iter]=minImpParDau;
e3d40058 194 }
195 if(fVarsForOpt[5]){
196 iter++;
4755453e 197 Float_t dist12 = dd->GetDist12toPrim();
198 Float_t dist23 = dd->GetDist23toPrim();
199 if(dist12<dist23)vars[iter]=dist12;
200 else vars[iter]=dist23;
e3d40058 201 }
202 if(fVarsForOpt[6]){
203 iter++;
204 vars[iter]=dd->GetSigmaVert();
205 }
206 if(fVarsForOpt[7]){
207 iter++;
208 vars[iter] = dd->DecayLength();
209 }
210 if(fVarsForOpt[8]){
211 iter++;
212 Float_t ptmax=0;
213 for(Int_t i=0;i<3;i++){
214 if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i);
215 }
216 vars[iter]=ptmax;
217 }
218 if(fVarsForOpt[9]){
219 iter++;
220 vars[iter]=dd->CosPointingAngle();
221 }
222 if(fVarsForOpt[10]){
223 iter++;
224 vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2);
225 }
226 if(fVarsForOpt[11]){
227 iter++;
4755453e 228 Float_t maxDCA=0;
229 for(Int_t iprong=0;iprong<3;iprong++){
230 if(dd->GetDCA(iprong)<maxDCA){
231 maxDCA=dd->GetDCA(iprong);
232 }
233 }
234 vars[iter]=maxDCA;
e3d40058 235 }
236 return;
237}
c1cc7a53 238//---------------------------------------------------------------------------
239Bool_t AliRDHFCutsDplustoKpipi::IsInFiducialAcceptance(Double_t pt, Double_t y) const
240{
241 //
242 // Checking if Dplus is in fiducial acceptance region
243 //
244
245 if(pt > 5.) {
246 // applying cut for pt > 5 GeV
247 AliDebug(2,Form("pt of D+ = %f (> 5), cutting at |y| < 0.8",pt));
248 if (TMath::Abs(y) > 0.8) return kFALSE;
249
250 } else {
251 // appliying smooth cut for pt < 5 GeV
252 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
253 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
254 AliDebug(2,Form("pt of D+ = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
255 if (y < minFiducialY || y > maxFiducialY) return kFALSE;
256 }
257
258 return kTRUE;
259}
73173a6a 260
261//---------------------------------------------------------------------------
bc116f28 262Int_t AliRDHFCutsDplustoKpipi::IsSelectedPID(AliAODRecoDecayHF *rd)
263{
264 //
595cc7e2 265 // PID selection, returns 3 if accepted, 0 if not accepted
bc116f28 266 //
595cc7e2 267 if(!fUsePID || !rd) return 3;
73173a6a 268 //if(fUsePID)printf("i am inside the pid \n");
269 Int_t nkaons=0;
270 Int_t nNotKaons=0;
271 Int_t sign= rd->GetCharge();
272 for(Int_t daught=0;daught<3;daught++){
273 AliAODTrack *track=(AliAODTrack*)rd->GetDaughter(daught);
274 Int_t isPion=fPidHF->MakeRawPid(track,AliPID::kPion);
275 Int_t isKaon=fPidHF->MakeRawPid(track,AliPID::kKaon);
276 Int_t isProton=fPidHF->MakeRawPid(track,AliPID::kProton);
277
278 if(isProton>0 && isKaon<0 && isPion<0) return 0;
279 if(isKaon>0 && isPion<0) nkaons++;
280 if(isKaon<0) nNotKaons++;
281 if(sign==track->Charge()){//pions
282 if(isPion<0)return 0;
da24b73f 283 if(rd->Pt()<2. && isPion<=0 && fUseStrongPid)return 0;
73173a6a 284 }
285 else{//kaons
286 if(isKaon<0)return 0;
da24b73f 287 if(rd->Pt()<2. && isKaon<=0 && fUseStrongPid)return 0;
73173a6a 288 }
289
290
291 }
292
293 if(nkaons>1)return 0;
294 if(nNotKaons==3)return 0;
295
595cc7e2 296 return 3;
73173a6a 297}
298
299
e3d40058 300//---------------------------------------------------------------------------
c1cc7a53 301Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODEvent* aod) {
e3d40058 302 //
595cc7e2 303 // Apply selection, returns 3 if accepted, 0 if not accepted
e3d40058 304 //
305
5d2d6118 306
307 fIsSelectedCuts=0;
308 fIsSelectedPID=0;
309
e3d40058 310 if(!fCutsRD){
4755453e 311 cout<<"Cut matrix not inizialized. Exit..."<<endl;
e3d40058 312 return 0;
313 }
314 //PrintAll();
315 AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
316
317
318 if(!d){
319 cout<<"AliAODRecoDecayHF3Prong null"<<endl;
320 return 0;
321 }
322
73173a6a 323 // PID selection
595cc7e2 324 Int_t returnvaluePID=3;
325 Int_t returnvalueCuts=3;
e3d40058 326
5639e412 327 Double_t pt=d->Pt();
328 if(pt<fMinPtCand) return 0;
329 if(pt>fMaxPtCand) return 0;
dcc2ade0 330
73173a6a 331
e3d40058 332 // selection on candidate
333 if(selectionLevel==AliRDHFCuts::kAll ||
334 selectionLevel==AliRDHFCuts::kCandidate) {
335
c1cc7a53 336 //recalculate vertex w/o daughters
337 AliAODVertex *origownvtx=0x0;
338 AliAODVertex *recvtx=0x0;
339 if(fRemoveDaughtersFromPrimary) {
930eb764 340 if(!RecalcOwnPrimaryVtx(d,aod,origownvtx,recvtx)) return 0;
c1cc7a53 341 }
342
5639e412 343
e3d40058 344 Int_t ptbin=PtBin(pt);
c1cc7a53 345 if (ptbin==-1) {
930eb764 346 CleanOwnPrimaryVtx(d,origownvtx);
c1cc7a53 347 return 0;
348 }
73173a6a 349
e3d40058 350 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
351 Double_t mDplus=d->InvMassDplus();
930eb764 352 if(TMath::Abs(mDplus-mDplusPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
e3d40058 353
c1cc7a53 354 //2track cuts
930eb764 355 if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
5d2d6118 356
357 Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
358 if(sum2<fCutsRD[GetGlobalIndex(10,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
359
930eb764 360 if(d->Getd0Prong(0)*d->Getd0Prong(1)<0. && d->Getd0Prong(2)*d->Getd0Prong(1)<0.) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
c1cc7a53 361
362 //sec vert
930eb764 363 if(d->GetSigmaVert()>fCutsRD[GetGlobalIndex(6,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
5d2d6118 364
365 //DCA
366 for(Int_t i=0;i<3;i++) if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
367
368 if(d->Pt2Prong(1) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] || TMath::Abs(d->Getd0Prong(1))<fCutsRD[GetGlobalIndex(3,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}//Kaon
369
370 if(d->Pt2Prong(0) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(4,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}//Pion1
371
372 if(d->Pt2Prong(2) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(4,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}//Pion2
373
c1cc7a53 374
5d2d6118 375
376
c1cc7a53 377
5d2d6118 378
379 if(d->Pt2Prong(0)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] && d->Pt2Prong(1)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)] && d->Pt2Prong(2)<fCutsRD[GetGlobalIndex(8,ptbin)]*fCutsRD[GetGlobalIndex(8,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
380
381 if(d->DecayLength2()<fCutsRD[GetGlobalIndex(7,ptbin)]*fCutsRD[GetGlobalIndex(7,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
382
383
384
930eb764 385 if(d->CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]) {CleanOwnPrimaryVtx(d,origownvtx); return 0;}
5d2d6118 386
c1cc7a53 387
5d2d6118 388
930eb764 389
c1cc7a53 390 // unset recalculated primary vertex when not needed any more
930eb764 391 CleanOwnPrimaryVtx(d,origownvtx);
c1cc7a53 392
5d2d6118 393 fIsSelectedCuts=returnvalueCuts;
394
dcc2ade0 395 if(!returnvalueCuts) return 0;
e3d40058 396 }
dcc2ade0 397
398 if(selectionLevel==AliRDHFCuts::kAll ||
399 selectionLevel==AliRDHFCuts::kCandidate ||
400 selectionLevel==AliRDHFCuts::kPID) {
401 returnvaluePID = IsSelectedPID(d);
5d2d6118 402 fIsSelectedPID=returnvaluePID;
dcc2ade0 403 }
404 if(returnvaluePID==0)return 0;
405
406 // selection on daughter tracks
407 if(selectionLevel==AliRDHFCuts::kAll ||
408 selectionLevel==AliRDHFCuts::kTracks) {
409 if(!AreDaughtersSelected(d)) return 0;
410 }
411
412
413
c1cc7a53 414
595cc7e2 415 return 3;
e3d40058 416}
370f7180 417
418
419
420
e3d40058 421//---------------------------------------------------------------------------
370f7180 422
423
424void AliRDHFCutsDplustoKpipi::SetStandardCutsPP2010() {
425 //
426 //STANDARD CUTS USED FOR 2010 pp analysis
427 //
428
429 SetName("DplustoKpipiCutsStandard");
430 SetTitle("Standard Cuts for D+ analysis");
431
432 // PILE UP REJECTION
433 SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
434
435 // EVENT CUTS
436 SetMinVtxContr(1);
437
438 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
439 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
440 //default
441 esdTrackCuts->SetRequireTPCRefit(kTRUE);
442 esdTrackCuts->SetRequireITSRefit(kTRUE);
443 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
444 esdTrackCuts->SetMinNClustersTPC(70);
445 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
446 AliESDtrackCuts::kAny);
447 // default is kBoth, otherwise kAny
448 esdTrackCuts->SetMinDCAToVertexXY(0.);
449 esdTrackCuts->SetPtRange(0.3,1.e10);
450
451 AddTrackCuts(esdTrackCuts);
452
453
454 const Int_t nptbins =13;
455 const Int_t nvars=12;
456 Float_t ptbins[nptbins+1];
457 ptbins[0]=0.;
458 ptbins[1]=1;
459 ptbins[2]=2.;
460 ptbins[3]=3.;
461 ptbins[4]=4.;
462 ptbins[5]=5.;
463 ptbins[6]=6.;
464 ptbins[7]=8.;
465 ptbins[8]=10.;
466 ptbins[9]=12.;
467 ptbins[10]=14.;
468 ptbins[11]=16.;
469 ptbins[12]=24.;
470 ptbins[13]=99999.;
471
472
473 Float_t** anacutsval;
474 anacutsval=new Float_t*[nvars];
475
476 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
e11ae259 477
370f7180 478 //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
479 Int_t ic=0;
480 for(Int_t ipt=0;ipt<nptbins;ipt++){
481 anacutsval[ic][ipt]=0.2;
482 }
483
484 ic=3;
485 for(Int_t ipt=0;ipt<nptbins;ipt++){
486 anacutsval[ic][ipt]=0.;
487 }
488 ic=4;
489 for(Int_t ipt=0;ipt<nptbins;ipt++){
490 anacutsval[ic][ipt]=0.;
491 }
492 ic=5;
493 for(Int_t ipt=0;ipt<nptbins;ipt++){
494 anacutsval[ic][ipt]=0.01;
495 }
496 //ic=6;
497 //for(Int_t ipt=0;ipt<nptbins;ipt++){
498 // anacutsval[ic][ipt]=0.06;
499
500 ic=11;
501 for(Int_t ipt=0;ipt<nptbins;ipt++){
502 anacutsval[ic][ipt]=10000000000.;
503 }
504
505
506 anacutsval[1][0]=0.3;
507 anacutsval[1][1]=0.3;
508 anacutsval[1][2]=0.4;
509
510 anacutsval[2][0]=0.3;
511 anacutsval[2][1]=0.3;
512 anacutsval[2][2]=0.4;
513
514
515 ic=1;
516 for(Int_t ipt=3;ipt<nptbins;ipt++){
517 anacutsval[ic][ipt]=0.4;
518 }
519 ic=2;
520 for(Int_t ipt=3;ipt<nptbins;ipt++){
521 anacutsval[ic][ipt]=0.4;
522 }
523
524 anacutsval[6][0]=0.022100;
525 anacutsval[6][1]=0.022100;
526 anacutsval[6][2]=0.034;
527 anacutsval[6][3]=0.020667;
528 anacutsval[6][4]=0.020667;
529 anacutsval[6][5]=0.023333;
530 anacutsval[6][6]=0.023333;
531 anacutsval[6][7]=0.023333;
532 anacutsval[6][8]=0.023333;
533 anacutsval[6][9]=0.023333;
534 anacutsval[6][10]=0.06;
535 anacutsval[6][11]=0.06;
536 anacutsval[6][12]=0.06;
370f7180 537
538
539 anacutsval[7][0]=0.08;
540 anacutsval[7][1]=0.08;
541 anacutsval[7][2]=0.09;
542 anacutsval[7][3]=0.095;
543 anacutsval[7][4]=0.095;
544 anacutsval[7][5]=0.115;
545 anacutsval[7][6]=0.115;
546 anacutsval[7][7]=0.115;
547 anacutsval[7][8]=0.115;
548 anacutsval[7][9]=0.115;
549 anacutsval[7][10]=0.02;
550 anacutsval[7][11]=0.02;
551 anacutsval[7][12]=0.02;
370f7180 552
553
554 anacutsval[8][0]=0.5;
555 anacutsval[8][1]=0.5;
556 anacutsval[8][2]=1.0;
557 anacutsval[8][3]=0.5;
558 anacutsval[8][4]=0.5;
559 anacutsval[8][5]=0.5;
560 anacutsval[8][6]=0.5;
561 anacutsval[8][7]=0.5;
562 anacutsval[8][8]=0.5;
563 anacutsval[8][9]=0.5;
564 anacutsval[8][10]=0.2;
565 anacutsval[8][11]=0.2;
566 anacutsval[8][12]=0.2;
370f7180 567
568
569 anacutsval[9][0]=0.95;
570 anacutsval[9][1]=0.95;
571 anacutsval[9][2]=0.95;
572 anacutsval[9][3]=0.95;
573 anacutsval[9][4]= 0.95;
574 anacutsval[9][5]=0.92;
575 anacutsval[9][6]=0.92;
576 anacutsval[9][7]=0.92;
577 anacutsval[9][8]=0.92;
578 anacutsval[9][9]=0.90;
579 anacutsval[9][10]=0.90;
580 anacutsval[9][11]=0.90;
581 anacutsval[9][12]=0.90;
370f7180 582
583 anacutsval[10][0]=0.0055;
584 anacutsval[10][1]=0.0055;
585 anacutsval[10][2]= 0.0028;
586 anacutsval[10][3]=0.000883;
587 anacutsval[10][4]=0.000883;
588 anacutsval[10][5]=0.000883;
589 anacutsval[10][6]=0.000883;
590 anacutsval[10][7]=0.000883;
591 anacutsval[10][8]=0.000883;
592 anacutsval[10][9]=0.000883;
593 anacutsval[10][10]=0.0;
594 anacutsval[10][11]=0.0;
595 anacutsval[10][12]=0.0;
370f7180 596
ae39ad32 597 SetGlobalIndex(nvars,nptbins);
370f7180 598 SetPtBins(nptbins+1,ptbins);
599 SetCuts(nvars,nptbins,anacutsval);
600 SetUsePID(kTRUE);
601 SetRemoveDaughtersFromPrim(kTRUE);
602
603 PrintAll();
604
e11ae259 605 for(Int_t iic=0;iic<nvars;iic++){delete [] anacutsval[iic];}
606 delete [] anacutsval;
607 anacutsval=NULL;
608
370f7180 609 return;
610}
611
612
613void AliRDHFCutsDplustoKpipi::SetStandardCutsPbPb2010() {
614 //
615 //STANDARD CUTS USED FOR 2010 Pb Pb analysis.... not optimized yet
616 //
617
618 SetName("DplustoKpipiCutsStandard");
619 SetTitle("Standard Cuts for D+ analysis in PbPb2010 run");
620
621 // PILE UP REJECTION
622 //SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
623
624 // EVENT CUTS
625 SetMinVtxContr(1);
626
627
628 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
629 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
630 //default
631 esdTrackCuts->SetRequireTPCRefit(kTRUE);
632 esdTrackCuts->SetRequireITSRefit(kTRUE);
633 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
634 esdTrackCuts->SetMinNClustersTPC(70);
635 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
636 AliESDtrackCuts::kAny);
637 // default is kBoth, otherwise kAny
638 esdTrackCuts->SetMinDCAToVertexXY(0.);
639 esdTrackCuts->SetPtRange(0.8,1.e10);
640
641 AddTrackCuts(esdTrackCuts);
642
643 const Int_t nptbins=10;
644 Float_t* ptbins;
645 ptbins=new Float_t[nptbins+1];
e11ae259 646
370f7180 647 ptbins[0]=0.;
648 ptbins[1]=1.;
649 ptbins[2]=2.;
650 ptbins[3]=3.;
651 ptbins[4]=4.;
652 ptbins[5]=5.;
653 ptbins[6]=6.;
654 ptbins[7]=8.;
655 ptbins[8]=12.;
656 ptbins[9]=16.;
657 ptbins[10]=24.;
658 const Int_t nvars=12;
659
660
661
662 Float_t** anacutsval;
663 anacutsval=new Float_t*[nvars];
664
665 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
666 //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
667 Int_t ic=0;
668 for(Int_t ipt=0;ipt<nptbins;ipt++){
669 anacutsval[ic][ipt]=0.2;
670 }
671
672 ic=3;
673 for(Int_t ipt=0;ipt<nptbins;ipt++){
674 anacutsval[ic][ipt]=0.;
675 }
676 ic=4;
677 for(Int_t ipt=0;ipt<nptbins;ipt++){
678 anacutsval[ic][ipt]=0.;
679 }
680 ic=5;
681 for(Int_t ipt=0;ipt<nptbins;ipt++){
682 anacutsval[ic][ipt]=0.01;
683 }
684 //ic=6;
685 //for(Int_t ipt=0;ipt<nptbins;ipt++){
686 // anacutsval[ic][ipt]=0.06;
687
688 ic=11;
689 for(Int_t ipt=0;ipt<nptbins;ipt++){
690 anacutsval[ic][ipt]=10000000000.;
691 }
692
693
694
695
696 ic=1;
697 for(Int_t ipt=0;ipt<nptbins;ipt++){
698 anacutsval[ic][ipt]=0.8;
699 }
700 ic=2;
701 for(Int_t ipt=0;ipt<nptbins;ipt++){
702 anacutsval[ic][ipt]=0.8;
703 }
704
705
706 anacutsval[6][0]=0.022100;
707 anacutsval[6][1]=0.022100;
708 anacutsval[6][2]=0.034;
709 anacutsval[6][3]=0.020667;
710 anacutsval[6][4]=0.020667;
711 anacutsval[6][5]=0.023333;
712 anacutsval[6][6]=0.023333;
713 anacutsval[6][7]=0.023333;
714 anacutsval[6][8]=0.023333;
715 anacutsval[6][9]=0.023333;
716
717 anacutsval[7][0]=0.08;
718 anacutsval[7][1]=0.08;
719 anacutsval[7][2]=0.09;
720 anacutsval[7][3]=0.095;
721 anacutsval[7][4]=0.095;
722 anacutsval[7][5]=0.115;
723 anacutsval[7][6]=0.115;
724 anacutsval[7][7]=0.115;
725 anacutsval[7][8]=0.115;
726 anacutsval[7][9]=0.115;
727
728 anacutsval[8][0]=0.5;
729 anacutsval[8][1]=0.5;
730 anacutsval[8][2]=1.0;
731 anacutsval[8][3]=0.5;
732 anacutsval[8][4]=0.5;
733 anacutsval[8][5]=0.5;
734 anacutsval[8][6]=0.5;
735 anacutsval[8][7]=0.5;
736 anacutsval[8][8]=0.5;
737 anacutsval[8][9]=0.5;
738
739 anacutsval[9][0]=0.995;
740 anacutsval[9][1]=0.995;
741 anacutsval[9][2]=0.997;
742 anacutsval[9][3]=0.989;
743 anacutsval[9][4]= 0.989;
744 anacutsval[9][5]=0.997;
745 anacutsval[9][6]=0.997;
746 anacutsval[9][7]=0.997;
747 anacutsval[9][8]=0.997;
748 anacutsval[9][9]=0.997;
749
750 anacutsval[10][0]=0.0055;
751 anacutsval[10][1]=0.0055;
752 anacutsval[10][2]= 0.0028;
753 anacutsval[10][3]=0.000883;
754 anacutsval[10][4]=0.000883;
755 anacutsval[10][5]=0.000883;
756 anacutsval[10][6]=0.000883;
757 anacutsval[10][7]=0.000883;
758 anacutsval[10][8]=0.000883;
759 anacutsval[10][9]=0.000883;
760
761
762 SetPtBins(nptbins+1,ptbins);
763 SetCuts(nvars,nptbins,anacutsval);
764 SetUsePID(kTRUE);
765 SetRemoveDaughtersFromPrim(kFALSE);
766
767 PrintAll();
768
7a29658d 769 for(Int_t iic=0;iic<nvars;iic++){delete [] anacutsval[iic];}
e11ae259 770 delete [] anacutsval;
771 anacutsval=NULL;
772
773 delete [] ptbins;
774 ptbins=NULL;
775
370f7180 776 return;
777}