1 /**************************************************************************
2 * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 /////////////////////////////////////////////////////////////
20 // Class for cuts on AOD reconstructed D+->Kpipi
22 // Author: R. Bala, bala@to.infn.it
23 // G. Ortona, ortona@to.infn.it
24 /////////////////////////////////////////////////////////////
26 #include <TDatabasePDG.h>
27 #include <Riostream.h>
29 #include "AliAODPidHF.h"
30 #include "AliRDHFCutsDplustoKpipi.h"
31 #include "AliAODRecoDecayHF3Prong.h"
32 #include "AliAODTrack.h"
33 #include "AliESDtrack.h"
36 ClassImp(AliRDHFCutsDplustoKpipi)
38 //--------------------------------------------------------------------------
39 AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi(const char* name) :
45 fUseImpParProdCorrCut(kFALSE)
48 // Default Constructor
52 TString varNames[14]={"inv. mass [GeV]",
55 "d0K [cm] lower limit!",
56 "d0Pi [cm] lower limit!",
60 "pM=Max{pT1,pT2,pT3} (GeV/c)",
66 Bool_t isUpperCut[14]={kTRUE,
80 SetVarNames(nvars,varNames,isUpperCut);
81 Bool_t forOpt[14]={kFALSE,
95 SetVarsForOpt(7,forOpt);
96 Float_t limits[2]={0,999999999.};
98 if(fPidHF)delete fPidHF;
99 fPidHF=new AliAODPidHF();
100 Double_t plim[2]={0.6,0.8};
101 Double_t nsigma[5]={2.,1.,2.,3.,0.};
103 fPidHF->SetPLimit(plim);
104 fPidHF->SetAsym(kTRUE);
105 fPidHF->SetSigma(nsigma);
111 fPidHF->SetCompat(kTRUE);
123 //--------------------------------------------------------------------------
124 AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi(const AliRDHFCutsDplustoKpipi &source) :
126 fUseStrongPid(source.fUseStrongPid),
127 fMaxPtStrongPid(source.fMaxPtStrongPid),
128 fMaxPStrongPidK(source.fMaxPStrongPidK),
129 fMaxPStrongPidpi(source.fMaxPStrongPidpi),
130 fUseImpParProdCorrCut(source.fUseImpParProdCorrCut)
137 //--------------------------------------------------------------------------
138 AliRDHFCutsDplustoKpipi &AliRDHFCutsDplustoKpipi::operator=(const AliRDHFCutsDplustoKpipi &source)
141 // assignment operator
143 if(&source == this) return *this;
145 AliRDHFCuts::operator=(source);
147 fUseStrongPid=source.fUseStrongPid;
148 fMaxPtStrongPid=source.fMaxPtStrongPid;
149 fMaxPStrongPidK=source.fMaxPStrongPidK;
150 fMaxPStrongPidpi=source.fMaxPStrongPidpi;
151 fUseImpParProdCorrCut=source.fUseImpParProdCorrCut;
158 //---------------------------------------------------------------------------
159 void AliRDHFCutsDplustoKpipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent *aod) {
161 // Fills in vars the values of the variables
165 if(nvars!=fnVarsForOpt) {
166 printf("AliRDHFCutsDplustoKpipi::GetCutsVarsForOpt: wrong number of variables\n");
170 AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d;
172 //recalculate vertex w/o daughters
173 Bool_t cleanvtx=kFALSE;
174 AliAODVertex *origownvtx=0x0;
175 if(fRemoveDaughtersFromPrimary) {
176 if(dd->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*dd->GetOwnPrimaryVtx());
178 if(!RecalcOwnPrimaryVtx(dd,aod)) {
179 CleanOwnPrimaryVtx(dd,aod,origownvtx);
187 vars[iter]=dd->InvMassDplus();
191 for(Int_t iprong=0;iprong<3;iprong++){
192 if(TMath::Abs(pdgdaughters[iprong])==321) {
193 vars[iter]=dd->PtProng(iprong);
199 Float_t minPtDau=1000000.0;
200 for(Int_t iprong=0;iprong<3;iprong++){
201 if(TMath::Abs(pdgdaughters[iprong])==211) {
202 if(dd->PtProng(iprong)<minPtDau){
203 minPtDau=dd->PtProng(iprong);
211 for(Int_t iprong=0;iprong<3;iprong++){
212 if(TMath::Abs(pdgdaughters[iprong])==321) {
213 vars[iter]=dd->Getd0Prong(iprong);
219 Float_t minImpParDau=1000000.0;
220 for(Int_t iprong=0;iprong<3;iprong++){
221 if(TMath::Abs(pdgdaughters[iprong])==211) {
222 if(dd->Getd0Prong(iprong)<minImpParDau){
223 minImpParDau=dd->Getd0Prong(iprong);
227 vars[iter]=minImpParDau;
231 Float_t dist12 = dd->GetDist12toPrim();
232 Float_t dist23 = dd->GetDist23toPrim();
233 if(dist12<dist23)vars[iter]=dist12;
234 else vars[iter]=dist23;
238 vars[iter]=dd->GetSigmaVert(aod);
242 vars[iter] = dd->DecayLength();
247 for(Int_t i=0;i<3;i++){
248 if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i);
254 vars[iter]=dd->CosPointingAngle();
258 vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2);
263 for(Int_t iprong=0;iprong<3;iprong++){
264 if(dd->GetDCA(iprong)<maxDCA){
265 maxDCA=dd->GetDCA(iprong);
272 vars[iter]=dd->NormalizedDecayLengthXY()*dd->P()/dd->Pt();
276 vars[iter]=dd->CosPointingAngleXY();
279 if(cleanvtx)CleanOwnPrimaryVtx(dd,aod,origownvtx);
283 //---------------------------------------------------------------------------
284 Bool_t AliRDHFCutsDplustoKpipi::IsInFiducialAcceptance(Double_t pt, Double_t y) const
287 // Checking if Dplus is in fiducial acceptance region
291 // applying cut for pt > 5 GeV
292 AliDebug(2,Form("pt of D+ = %f (> 5), cutting at |y| < 0.8",pt));
293 if (TMath::Abs(y) > 0.8) return kFALSE;
296 // appliying smooth cut for pt < 5 GeV
297 Double_t maxFiducialY = -0.2/15*pt*pt+1.9/15*pt+0.5;
298 Double_t minFiducialY = 0.2/15*pt*pt-1.9/15*pt-0.5;
299 AliDebug(2,Form("pt of D+ = %f (< 5), cutting according to the fiducial zone [%f, %f]\n",pt,minFiducialY,maxFiducialY));
300 if (y < minFiducialY || y > maxFiducialY) return kFALSE;
306 //---------------------------------------------------------------------------
307 Int_t AliRDHFCutsDplustoKpipi::GetPIDBitMask(AliAODRecoDecayHF *rd)
310 // PID selection, returns 3 if accepted, 0 if not accepted
312 if(!fUsePID || !rd) return 3;
313 //if(fUsePID)printf("i am inside the pid \n");
315 Int_t sign=rd->GetCharge();
316 for(Int_t daught=0;daught<3;daught++){
317 AliAODTrack *track=(AliAODTrack*)rd->GetDaughter(daught);
319 if(sign==track->Charge()){//pions
320 Int_t isPion=fPidHF->MakeRawPid(track,AliPID::kPion);
321 if(isPion==0)mask+=1;
322 else if(isPion>0)mask+=3;
326 Int_t isKaon=fPidHF->MakeRawPid(track,AliPID::kKaon);
327 if(isKaon==0)mask+=1;
328 else if(isKaon>0)mask+=3;
335 //---------------------------------------------------------------------------
336 Int_t AliRDHFCutsDplustoKpipi::IsSelectedPID(AliAODRecoDecayHF *rd)
339 // PID selection, returns 3 if accepted, 0 if not accepted
341 if(!fUsePID || !rd) return 3;
342 //if(fUsePID)printf("i am inside the pid \n");
345 Int_t sign= rd->GetCharge();
346 for(Int_t daught=0;daught<3;daught++){
347 AliAODTrack *track=(AliAODTrack*)rd->GetDaughter(daught);
348 Int_t isPion=fPidHF->MakeRawPid(track,AliPID::kPion);
349 Int_t isKaon=fPidHF->MakeRawPid(track,AliPID::kKaon);
350 Int_t isProton=fPidHF->MakeRawPid(track,AliPID::kProton);
352 if(isProton>0 && isKaon<0 && isPion<0) return 0;
353 if(isKaon>0 && isPion<0) nkaons++;
354 if(isKaon<0) nNotKaons++;
355 if(sign==track->Charge()){//pions
356 if(isPion<0)return 0;
357 if(rd->Pt()<fMaxPtStrongPid && isPion<=0 && fUseStrongPid&2 && track->P()<fMaxPStrongPidpi)return 0;
360 if(isKaon<0)return 0;
361 if(rd->Pt()<fMaxPtStrongPid && isKaon<=0 && fUseStrongPid&1&& track->P()<fMaxPStrongPidK)return 0;
365 if(nkaons>1)return 0;
366 if(nNotKaons==3)return 0;
372 //---------------------------------------------------------------------------
373 Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODEvent* aod) {
375 // Apply selection, returns 3 if accepted, 0 if not accepted
383 cout<<"Cut matrix not inizialized. Exit..."<<endl;
387 AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
391 cout<<"AliAODRecoDecayHF3Prong null"<<endl;
395 if(fKeepSignalMC) if(IsSignalMC(d,aod,411)) return 3;
398 Int_t returnvaluePID=3;
399 Int_t returnvalueCuts=3;
402 if(pt<fMinPtCand) return 0;
403 if(pt>fMaxPtCand) return 0;
405 if(d->HasBadDaughters()) return 0;
407 // selection on candidate
408 if(selectionLevel==AliRDHFCuts::kAll ||
409 selectionLevel==AliRDHFCuts::kCandidate) {
411 //recalculate vertex w/o daughters
412 AliAODVertex *origownvtx=0x0;
413 if(fRemoveDaughtersFromPrimary) {
414 if(d->GetOwnPrimaryVtx()) origownvtx=new AliAODVertex(*d->GetOwnPrimaryVtx());
415 if(!RecalcOwnPrimaryVtx(d,aod)) {
416 CleanOwnPrimaryVtx(d,aod,origownvtx);
421 Int_t ptbin=PtBin(pt);
423 CleanOwnPrimaryVtx(d,aod,origownvtx);
427 Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass();
428 Double_t mDplus=d->InvMassDplus();
429 if(TMath::Abs(mDplus-mDplusPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
432 if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
434 Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
435 if(sum2<fCutsRD[GetGlobalIndex(10,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
437 if(fUseImpParProdCorrCut){
438 if(d->Getd0Prong(0)*d->Getd0Prong(1)<0. && d->Getd0Prong(2)*d->Getd0Prong(1)<0.) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
443 for(Int_t i=0;i<3;i++) if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
445 if(d->Pt2Prong(1) < fCutsRD[GetGlobalIndex(1,ptbin)]*fCutsRD[GetGlobalIndex(1,ptbin)] || TMath::Abs(d->Getd0Prong(1))<fCutsRD[GetGlobalIndex(3,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}//Kaon
447 if(d->Pt2Prong(0) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(4,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}//Pion1
449 if(d->Pt2Prong(2) < fCutsRD[GetGlobalIndex(2,ptbin)]*fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(4,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}//Pion2
451 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,aod,origownvtx); return 0;}
453 if(d->DecayLength2()<fCutsRD[GetGlobalIndex(7,ptbin)]*fCutsRD[GetGlobalIndex(7,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
455 if(d->CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
457 if(d->NormalizedDecayLengthXY()*d->P()/pt<fCutsRD[GetGlobalIndex(12,ptbin)]){CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
459 if(d->CosPointingAngleXY()<fCutsRD[GetGlobalIndex(13,ptbin)]){CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
462 Double_t sigmavert=d->GetSigmaVert(aod);
463 if(sigmavert>fCutsRD[GetGlobalIndex(6,ptbin)]) {CleanOwnPrimaryVtx(d,aod,origownvtx); return 0;}
465 // unset recalculated primary vertex when not needed any more
466 CleanOwnPrimaryVtx(d,aod,origownvtx);
468 fIsSelectedCuts=returnvalueCuts;
470 //if(!returnvalueCuts) return 0; // returnvalueCuts cannot be 0 here
473 if(selectionLevel==AliRDHFCuts::kAll ||
474 selectionLevel==AliRDHFCuts::kCandidate ||
475 selectionLevel==AliRDHFCuts::kPID) {
476 returnvaluePID = IsSelectedPID(d);
477 fIsSelectedPID=returnvaluePID;
479 if(returnvaluePID==0)return 0;
481 // selection on daughter tracks
482 if(selectionLevel==AliRDHFCuts::kAll ||
483 selectionLevel==AliRDHFCuts::kTracks) {
484 if(!AreDaughtersSelected(d)) return 0;
496 //---------------------------------------------------------------------------
499 void AliRDHFCutsDplustoKpipi::SetStandardCutsPP2010() {
501 //STANDARD CUTS USED FOR 2010 pp analysis
504 SetName("DplustoKpipiCutsStandard");
505 SetTitle("Standard Cuts for D+ analysis");
508 SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
513 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
514 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
516 esdTrackCuts->SetRequireTPCRefit(kTRUE);
517 esdTrackCuts->SetRequireITSRefit(kTRUE);
518 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
519 esdTrackCuts->SetMinNClustersTPC(70);
520 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
521 AliESDtrackCuts::kAny);
522 // default is kBoth, otherwise kAny
523 esdTrackCuts->SetMinDCAToVertexXY(0.);
524 esdTrackCuts->SetPtRange(0.3,1.e10);
526 AddTrackCuts(esdTrackCuts);
529 const Int_t nptbins =15;
530 const Int_t nvars=14;
531 Float_t ptbins[nptbins+1];
550 Float_t** anacutsval;
551 anacutsval=new Float_t*[nvars];
553 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
555 //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
556 for(Int_t ipt=0;ipt<nptbins;ipt++){
557 anacutsval[0][ipt]=0.2;
558 anacutsval[3][ipt]=0.;
559 anacutsval[4][ipt]=0.;
560 anacutsval[5][ipt]=0.01;
561 anacutsval[11][ipt]=10000000000.;
564 anacutsval[1][0]=0.3;
565 anacutsval[1][1]=0.4;
566 anacutsval[1][2]=0.4;
567 anacutsval[2][0]=0.3;
568 anacutsval[2][1]=0.3;
569 anacutsval[2][2]=0.4;
570 for(Int_t ipt=3;ipt<nptbins;ipt++){
571 anacutsval[1][ipt]=0.4;
572 anacutsval[2][ipt]=0.4;
575 anacutsval[6][0]=0.022100;
576 anacutsval[6][1]=0.022100;
577 anacutsval[6][2]=0.034;
578 anacutsval[6][3]=0.020667;
579 anacutsval[6][4]=0.020667;
580 anacutsval[6][5]=0.023333;
583 anacutsval[7][0]=0.08;
584 anacutsval[7][1]=0.08;
585 anacutsval[7][2]=0.09;
586 anacutsval[7][3]=0.095;
587 anacutsval[7][4]=0.095;
589 anacutsval[8][0]=0.5;
590 anacutsval[8][1]=0.5;
591 anacutsval[8][2]=1.0;
592 anacutsval[8][3]=0.5;
593 anacutsval[8][4]=0.5;
596 anacutsval[9][0]=0.97;
597 anacutsval[9][1]=0.936;
598 anacutsval[9][2]=0.95;
599 anacutsval[9][3]=0.95;
600 anacutsval[9][4]= 0.95;
601 anacutsval[9][5]=0.92;
602 anacutsval[9][6]=0.92;
603 anacutsval[9][7]=0.92;
604 anacutsval[9][8]=0.92;
605 anacutsval[9][9]=0.90;
606 for(Int_t ipt=10;ipt<nptbins;ipt++){
607 anacutsval[9][ipt]=0.90;
611 anacutsval[10][0]=0.0055;
612 anacutsval[10][1]=0.0055;
613 anacutsval[10][2]= 0.0028;
614 anacutsval[10][3]=0.000883;
615 anacutsval[10][4]=0.000883;
618 for(Int_t ipt=5;ipt<nptbins;ipt++){
619 anacutsval[6][ipt]=0.02333;
620 anacutsval[7][ipt]=0.115;
621 anacutsval[8][ipt]=0.5;
622 anacutsval[10][ipt]=0.000883;
628 anacutsval[13][0]=0.98;
629 anacutsval[13][1]=0.98;
630 for(Int_t ipt=2;ipt<nptbins;ipt++){
631 anacutsval[12][ipt]=0.;
632 anacutsval[13][ipt]=0.;
637 SetGlobalIndex(nvars,nptbins);
638 SetPtBins(nptbins+1,ptbins);
639 SetCuts(nvars,nptbins,anacutsval);
641 SetRemoveDaughtersFromPrim(kTRUE);
645 for(Int_t iic=0;iic<nvars;iic++){delete [] anacutsval[iic];}
646 delete [] anacutsval;
653 void AliRDHFCutsDplustoKpipi::SetStandardCutsPbPb2010() {
655 //STANDARD CUTS USED FOR 2010 Pb Pb analysis.... not optimized yet
658 SetName("DplustoKpipiCutsStandard");
659 SetTitle("Standard Cuts for D+ analysis in PbPb2010 run");
662 //SetOptPileup(AliRDHFCuts::kRejectPileupEvent);
668 AliESDtrackCuts* esdTrackCuts=new AliESDtrackCuts();
669 esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
671 esdTrackCuts->SetRequireTPCRefit(kTRUE);
672 esdTrackCuts->SetRequireITSRefit(kTRUE);
673 //esdTrackCuts->SetMinNClustersITS(4); // default is 5
674 esdTrackCuts->SetMinNClustersTPC(70);
675 esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
676 AliESDtrackCuts::kAny);
677 // default is kBoth, otherwise kAny
678 esdTrackCuts->SetMinDCAToVertexXY(0.);
679 esdTrackCuts->SetPtRange(0.8,1.e10);
681 AddTrackCuts(esdTrackCuts);
683 const Int_t nptbins=10;
685 ptbins=new Float_t[nptbins+1];
698 const Int_t nvars=14;
700 Float_t** anacutsval;
701 anacutsval=new Float_t*[nvars];
703 for(Int_t ic=0;ic<nvars;ic++){anacutsval[ic]=new Float_t[nptbins];}
704 //Double_t cutsDplus[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0.,10000000000.};
706 for(Int_t ipt=0;ipt<nptbins;ipt++){
707 anacutsval[0][ipt]=0.2;
708 anacutsval[1][ipt]=0.8;
709 anacutsval[2][ipt]=0.8;
710 anacutsval[3][ipt]=0.;
711 anacutsval[4][ipt]=0.;
712 anacutsval[5][ipt]=0.01;
713 anacutsval[11][ipt]=10000000000.;
714 anacutsval[12][ipt]=0.;
715 anacutsval[13][ipt]=0.;
717 anacutsval[1][5]=0.9;
719 anacutsval[6][0]=0.022100;
720 anacutsval[6][1]=0.022100;
721 anacutsval[6][2]=0.034;
722 anacutsval[6][3]=0.020667;
723 anacutsval[6][4]=0.020667;
724 anacutsval[6][5]=0.023333;
726 anacutsval[7][0]=0.08;
727 anacutsval[7][1]=0.08;
728 anacutsval[7][2]=0.17;
729 anacutsval[7][3]=0.14;
730 anacutsval[7][4]=0.14;
731 anacutsval[7][5]=0.19;
733 anacutsval[8][0]=0.8;
734 anacutsval[8][1]=0.8;
735 anacutsval[8][2]=1.1;
736 anacutsval[8][3]=0.5;
737 anacutsval[8][4]=0.5;
738 anacutsval[8][5]=0.5;
740 anacutsval[9][0]=0.995;
741 anacutsval[9][1]=0.995;
742 anacutsval[9][2]=0.997;
743 anacutsval[9][3]=0.998;
744 anacutsval[9][4]=0.998;
745 anacutsval[9][5]=0.995;
747 anacutsval[10][0]=0.0055;
748 anacutsval[10][1]=0.0055;
749 anacutsval[10][2]= 0.0028;
750 anacutsval[10][3]=0.000883;
751 anacutsval[10][4]=0.000883;
752 anacutsval[10][5]=0.000883;
754 anacutsval[12][5]=12.;
755 anacutsval[13][5]=0.998571;
756 anacutsval[12][6]=10.;
757 anacutsval[13][6]=0.997143;
759 for(Int_t ipt=6;ipt<nptbins;ipt++){
760 anacutsval[6][ipt]=0.02333;
761 anacutsval[7][ipt]=0.19;
762 anacutsval[8][ipt]=2.0;
763 anacutsval[9][ipt]=0.997;
764 anacutsval[10][ipt]=0.000883;
766 anacutsval[7][6]=0.14;
767 anacutsval[9][6]=0.995;
769 SetPtBins(nptbins+1,ptbins);
770 SetCuts(nvars,nptbins,anacutsval);
772 SetMinCentrality(1E-10);
773 SetMaxCentrality(20.);
774 SetUseCentrality(AliRDHFCuts::kCentV0M);
775 SetRemoveDaughtersFromPrim(kFALSE);
779 for(Int_t iic=0;iic<nvars;iic++){delete [] anacutsval[iic];}
780 delete [] anacutsval;
790 void AliRDHFCutsDplustoKpipi::SetStandardCutsPbPb2011() {
792 // Default 2010 PbPb cut object
793 SetStandardCutsPbPb2010();
795 // Enable all 2011 PbPb run triggers
798 ResetMaskAndEnableMBTrigger();
799 EnableCentralTrigger();
800 EnableSemiCentralTrigger();