From e3d40058585e7c05cc396945c123b4299f26d97d Mon Sep 17 00:00:00 2001 From: dainese Date: Mon, 12 Apr 2010 20:51:15 +0000 Subject: [PATCH] New classes for the cuts on charm candidates --- PWG3/PWG3vertexingHFLinkDef.h | 5 + PWG3/libPWG3vertexingHF.pkg | 5 + PWG3/vertexingHF/AliAnalysisVertexingHF.cxx | 74 ++++- PWG3/vertexingHF/AliAnalysisVertexingHF.h | 26 +- PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx | 151 ++++++++++ PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.h | 39 +++ PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx | 270 +++++++++++++++++ PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.h | 43 +++ PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx | 151 ++++++++++ PWG3/vertexingHF/AliRDHFCutsDstoKKpi.h | 39 +++ PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx | 222 ++++++++++++++ PWG3/vertexingHF/AliRDHFCutsJpsitoee.h | 39 +++ PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx | 271 ++++++++++++++++++ PWG3/vertexingHF/AliRDHFCutsLctopKpi.h | 39 +++ PWG3/vertexingHF/ConfigVertexingHF.C | 41 ++- PWG3/vertexingHF/ConfigVertexingHF_highmult.C | 36 +++ PWG3/vertexingHF/ConfigVertexingHF_pp2009.C | 36 +++ 17 files changed, 1475 insertions(+), 12 deletions(-) create mode 100644 PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx create mode 100644 PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.h create mode 100644 PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx create mode 100644 PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.h create mode 100644 PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx create mode 100644 PWG3/vertexingHF/AliRDHFCutsDstoKKpi.h create mode 100644 PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx create mode 100644 PWG3/vertexingHF/AliRDHFCutsJpsitoee.h create mode 100644 PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx create mode 100644 PWG3/vertexingHF/AliRDHFCutsLctopKpi.h diff --git a/PWG3/PWG3vertexingHFLinkDef.h b/PWG3/PWG3vertexingHFLinkDef.h index 297b30cb488..08bf4041386 100644 --- a/PWG3/PWG3vertexingHFLinkDef.h +++ b/PWG3/PWG3vertexingHFLinkDef.h @@ -12,6 +12,11 @@ #pragma link C++ class AliAODRecoCascadeHF+; #pragma link C++ class AliRDHFCuts+; #pragma link C++ class AliRDHFCutsD0toKpi+; +#pragma link C++ class AliRDHFCutsJpsitoee+; +#pragma link C++ class AliRDHFCutsDplustoKpipi+; +#pragma link C++ class AliRDHFCutsDstoKKpi+; +#pragma link C++ class AliRDHFCutsLctopKpi+; +#pragma link C++ class AliRDHFCutsD0toKpipipi+; #pragma link C++ class AliAnalysisVertexingHF+; #pragma link C++ class AliAnalysisTaskSEVertexingHF+; #pragma link C++ class AliAnalysisTaskMEVertexingHF+; diff --git a/PWG3/libPWG3vertexingHF.pkg b/PWG3/libPWG3vertexingHF.pkg index fc610eea52d..aa5b383d9e1 100644 --- a/PWG3/libPWG3vertexingHF.pkg +++ b/PWG3/libPWG3vertexingHF.pkg @@ -6,6 +6,11 @@ SRCS:= vertexingHF/AliAODRecoDecayHF.cxx \ vertexingHF/AliAODRecoCascadeHF.cxx \ vertexingHF/AliRDHFCuts.cxx \ vertexingHF/AliRDHFCutsD0toKpi.cxx \ + vertexingHF/AliRDHFCutsJpsitoee.cxx \ + vertexingHF/AliRDHFCutsDplustoKpipi.cxx \ + vertexingHF/AliRDHFCutsDstoKKpi.cxx \ + vertexingHF/AliRDHFCutsLctopKpi.cxx \ + vertexingHF/AliRDHFCutsD0toKpipipi.cxx \ vertexingHF/AliAnalysisVertexingHF.cxx \ vertexingHF/AliAnalysisTaskSEVertexingHF.cxx \ vertexingHF/AliAnalysisTaskMEVertexingHF.cxx \ diff --git a/PWG3/vertexingHF/AliAnalysisVertexingHF.cxx b/PWG3/vertexingHF/AliAnalysisVertexingHF.cxx index ebbf5a9536a..790033dfc17 100644 --- a/PWG3/vertexingHF/AliAnalysisVertexingHF.cxx +++ b/PWG3/vertexingHF/AliAnalysisVertexingHF.cxx @@ -47,6 +47,11 @@ #include "AliAODRecoDecayHF4Prong.h" #include "AliAODRecoCascadeHF.h" #include "AliRDHFCutsD0toKpi.h" +#include "AliRDHFCutsJpsitoee.h" +#include "AliRDHFCutsDplustoKpipi.h" +#include "AliRDHFCutsDstoKKpi.h" +#include "AliRDHFCutsLctopKpi.h" +#include "AliRDHFCutsD0toKpipipi.h" #include "AliAnalysisFilter.h" #include "AliAnalysisVertexingHF.h" #include "AliMixedEvent.h" @@ -73,6 +78,12 @@ fMixEvent(kFALSE), fTrackFilter(0x0), fTrackFilterSoftPi(0x0), fCutsD0toKpi(0x0), +fCutsJpsitoee(0x0), +fCutsDplustoKpipi(0x0), +fCutsDstoKKpi(0x0), +fCutsLctopKpi(0x0), +fCutsD0toKpipipi(0x0), +fCutsD0fromDstar(0x0), fFindVertexForDstar(kTRUE) { // Default constructor @@ -106,6 +117,12 @@ fMixEvent(source.fMixEvent), fTrackFilter(source.fTrackFilter), fTrackFilterSoftPi(source.fTrackFilterSoftPi), fCutsD0toKpi(source.fCutsD0toKpi), +fCutsJpsitoee(source.fCutsJpsitoee), +fCutsDplustoKpipi(source.fCutsDplustoKpipi), +fCutsDstoKKpi(source.fCutsDstoKKpi), +fCutsLctopKpi(source.fCutsLctopKpi), +fCutsD0toKpipipi(source.fCutsD0toKpipipi), +fCutsD0fromDstar(source.fCutsD0fromDstar), fFindVertexForDstar(source.fFindVertexForDstar) { // @@ -143,6 +160,12 @@ AliAnalysisVertexingHF &AliAnalysisVertexingHF::operator=(const AliAnalysisVerte fTrackFilter = source.fTrackFilter; fTrackFilterSoftPi = source.fTrackFilterSoftPi; fCutsD0toKpi = source.fCutsD0toKpi; + fCutsJpsitoee = source.fCutsJpsitoee; + fCutsDplustoKpipi = source.fCutsDplustoKpipi; + fCutsDstoKKpi = source.fCutsDstoKKpi; + fCutsLctopKpi = source.fCutsLctopKpi; + fCutsD0toKpipipi = source.fCutsD0toKpipipi; + fCutsD0fromDstar = source.fCutsD0fromDstar; fFindVertexForDstar = source.fFindVertexForDstar; for(Int_t i=0; i<9; i++) fD0toKpiCuts[i]=source.fD0toKpiCuts[i]; @@ -162,6 +185,12 @@ AliAnalysisVertexingHF::~AliAnalysisVertexingHF() { if(fTrackFilter) { delete fTrackFilter; fTrackFilter=0; } if(fTrackFilterSoftPi) { delete fTrackFilterSoftPi; fTrackFilterSoftPi=0; } if(fCutsD0toKpi) { delete fCutsD0toKpi; fCutsD0toKpi=0; } + if(fCutsJpsitoee) { delete fCutsJpsitoee; fCutsJpsitoee=0; } + if(fCutsDplustoKpipi) { delete fCutsDplustoKpipi; fCutsDplustoKpipi=0; } + if(fCutsDstoKKpi) { delete fCutsDstoKKpi; fCutsDstoKKpi=0; } + if(fCutsLctopKpi) { delete fCutsLctopKpi; fCutsLctopKpi=0; } + if(fCutsD0toKpipipi) { delete fCutsD0toKpipipi; fCutsD0toKpipipi=0; } + if(fCutsD0fromDstar) { delete fCutsD0fromDstar; fCutsD0fromDstar=0; } if(fAODMap) { delete fAODMap; fAODMap=0; } } //---------------------------------------------------------------------------- @@ -280,11 +309,18 @@ void AliAnalysisVertexingHF::FindCandidates(AliVEvent *event, AliESDtrack *negtrack1 = 0; AliESDtrack *negtrack2 = 0; AliESDtrack *trackPi = 0; - //Double_t dcaMax = fCutsD0toKpi->GetDCACut(); Double_t dcaMax = fD0toKpiCuts[1]; if(dcaMax < fBtoJPSICuts[1]) dcaMax=fBtoJPSICuts[1]; if(dcaMax < fDplusCuts[11]) dcaMax=fDplusCuts[11]; if(dcaMax < fD0to4ProngsCuts[1]) dcaMax=fD0to4ProngsCuts[1]; + /* + Double_t dcaMax = fCutsD0toKpi->GetDCACut(); + if(fCutsJpsitoee) dcaMax=TMath::Max(dcaMax,fCutsJpsitoee->GetDCACut()); + if(fCutsDplustoKpipi) dcaMax=TMath::Max(dcaMax,fCutsDplustoKpipi->GetDCACut()); + if(fCutsDstoKKpi) dcaMax=TMath::Max(dcaMax,fCutsDstoKKpi->GetDCACut()); + if(fCutsLctopKpi) dcaMax=TMath::Max(dcaMax,fCutsLctopKpi->GetDCACut()); + if(fCutsD0toKpipipi) dcaMax=TMath::Max(dcaMax,fCutsD0toKpipipi->GetDCACut()); + */ AliDebug(2,Form(" dca cut set to %f cm",dcaMax)); @@ -993,9 +1029,11 @@ AliAODRecoDecayHF2Prong *AliAnalysisVertexingHF::Make2Prong( // select J/psi from B Int_t checkJPSI; if(fJPSItoEle) okJPSI = the2Prong->SelectBtoJPSI(fBtoJPSICuts,checkJPSI); + //if(fJPSItpEle) okJPSI = (Bool_t)fCutsJpsitoee->IsSelected(the2Prong,AliRDHFCuts::kCandidate); //if(fDebug && fJPSItoEle) printf(" %d\n",(Int_t)okJPSI); // select D0->Kpi from Dstar if(fDstar) okD0fromDstar = the2Prong->SelectD0(fD0fromDstarCuts,checkD0,checkD0bar); + //if(fDstar) okD0fromDstar = (Bool_t)fCutsD0fromDstar->IsSelected(the2Prong,AliRDHFCuts::kCandidate); //if(fDebug && fDstar) printf(" %d\n",(Int_t)okD0fromDstar); } @@ -1098,6 +1136,11 @@ AliAODRecoDecayHF3Prong* AliAnalysisVertexingHF::Make3Prong( if(the3Prong->SelectDplus(fDplusCuts)) ok3Prong = kTRUE; if(the3Prong->SelectDs(fDsCuts,ok1,ok2,dum1,dum2)) ok3Prong = kTRUE; if(the3Prong->SelectLc(fLcCuts,ok1,ok2)) ok3Prong = kTRUE; + /* + if(fCutsDplustoKpipi->IsSelected(the3Prong,AliRDHFCuts::kCandidate)) ok3Prong = kTRUE; + if(fCutsDstoKKpi->IsSelected(the3Prong,AliRDHFCuts::kCandidate)) ok3Prong = kTRUE; + if(fCutsLctopKpi->IsSelected(the3Prong,AliRDHFCuts::kCandidate)) ok3Prong = kTRUE; + */ } //if(fDebug) printf("ok3Prong: %d\n",(Int_t)ok3Prong); @@ -1208,6 +1251,8 @@ AliAODRecoDecayHF4Prong* AliAnalysisVertexingHF::Make4Prong( Int_t checkD0,checkD0bar; ok4Prong=the4Prong->SelectD0(fD0to4ProngsCuts,checkD0,checkD0bar); + //ok4Prong=(Bool_t)fCutsD0toKpipipi->IsSelected(the4Prong,AliRDHFCuts::kCandidate); + if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx && !fMixEvent) { the4Prong->UnsetOwnPrimaryVtx(); @@ -1356,8 +1401,8 @@ void AliAnalysisVertexingHF::PrintStatus() const { if(fRecoPrimVtxSkippingTrks) printf("RecoPrimVtxSkippingTrks\n"); if(fRmTrksFromPrimVtx) printf("RmTrksFromPrimVtx\n"); if(fD0toKpi) { - if(fCutsD0toKpi) fCutsD0toKpi->PrintAll(); printf("Reconstruct D0->Kpi candidates with cuts:\n"); + if(fCutsD0toKpi) fCutsD0toKpi->PrintAll(); printf(" |M-MD0| [GeV] < %f\n",fD0toKpiCuts[0]); printf(" dca [cm] < %f\n",fD0toKpiCuts[1]); printf(" cosThetaStar < %f\n",fD0toKpiCuts[2]); @@ -1381,6 +1426,7 @@ void AliAnalysisVertexingHF::PrintStatus() const { printf(" Theta(pisoft,D0plane) < %f\n",fDstarCuts[4]); printf("Reconstruct D*->D0pi candidates with cuts:\n"); printf(" D0 from D* cuts:\n"); + if(fCutsD0fromDstar) fCutsD0fromDstar->PrintAll(); printf(" |M-MD0| [GeV] < %f\n",fD0fromDstarCuts[0]); printf(" dca [cm] < %f\n",fD0fromDstarCuts[1]); printf(" cosThetaStar < %f\n",fD0fromDstarCuts[2]); @@ -1393,6 +1439,7 @@ void AliAnalysisVertexingHF::PrintStatus() const { } if(fJPSItoEle) { printf("Reconstruct J/psi from B candidates with cuts:\n"); + if(fCutsJpsitoee) fCutsJpsitoee->PrintAll(); printf(" |M-MJPSI| [GeV] < %f\n",fBtoJPSICuts[0]); printf(" dca [cm] < %f\n",fBtoJPSICuts[1]); printf(" cosThetaStar < %f\n",fBtoJPSICuts[2]); @@ -1406,6 +1453,7 @@ void AliAnalysisVertexingHF::PrintStatus() const { if(f3Prong) { printf("Reconstruct 3 prong candidates.\n"); printf(" D+->Kpipi cuts:\n"); + if(fCutsDplustoKpipi) fCutsDplustoKpipi->PrintAll(); printf(" |M-MD+| [GeV] < %f\n",fDplusCuts[0]); printf(" pTK [GeV/c] > %f\n",fDplusCuts[1]); printf(" pTPi [GeV/c] > %f\n",fDplusCuts[2]); @@ -1419,6 +1467,7 @@ void AliAnalysisVertexingHF::PrintStatus() const { printf(" Sum d0^2 [cm^2] > %f\n",fDplusCuts[10]); printf(" dca cut [cm] < %f\n",fDplusCuts[11]); printf(" Ds->KKpi cuts:\n"); + if(fCutsDstoKKpi) fCutsDstoKKpi->PrintAll(); printf(" |M-MDs| [GeV] < %f\n",fDsCuts[0]); printf(" pTK [GeV/c] > %f\n",fDsCuts[1]); printf(" pTPi [GeV/c] > %f\n",fDsCuts[2]); @@ -1434,6 +1483,7 @@ void AliAnalysisVertexingHF::PrintStatus() const { printf(" Inv. Mass phi [GeV] < %f\n",fDsCuts[12]); printf(" Inv. Mass K0* [GeV] < %f\n",fDsCuts[13]); printf(" Lc->pKpi cuts:\n"); + if(fCutsLctopKpi) fCutsLctopKpi->PrintAll(); printf(" |M-MLc| [GeV] < %f\n",fLcCuts[0]); printf(" pTP [GeV/c] > %f\n",fLcCuts[1]); printf(" pTPi and pTK [GeV/c] > %f\n",fLcCuts[2]); @@ -1447,6 +1497,11 @@ void AliAnalysisVertexingHF::PrintStatus() const { printf(" Sum d0^2 [cm^2] > %f\n",fLcCuts[10]); printf(" dca cut [cm] < %f\n",fLcCuts[11]); } + if(f4Prong) { + printf("Reconstruct 4 prong candidates.\n"); + printf(" D0->Kpipipi cuts:\n"); + if(fCutsD0toKpipipi) fCutsD0toKpipipi->PrintAll(); + } return; } @@ -1542,28 +1597,34 @@ Bool_t AliAnalysisVertexingHF::SelectInvMass(Int_t decay, mPDG=TDatabasePDG::Instance()->GetParticle(443)->Mass(); minv = rd->InvMass(nprongs,pdg2); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; break; case 2: // D+->Kpipi pdg3[0]=211; pdg3[1]=321; pdg3[2]=211; mPDG=TDatabasePDG::Instance()->GetParticle(411)->Mass(); minv = rd->InvMass(nprongs,pdg3); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; // Ds+->KKpi pdg3[0]=321; pdg3[1]=321; pdg3[2]=211; mPDG=TDatabasePDG::Instance()->GetParticle(431)->Mass(); minv = rd->InvMass(nprongs,pdg3); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; pdg3[0]=211; pdg3[1]=321; pdg3[2]=321; minv = rd->InvMass(nprongs,pdg3); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; // Lc->pKpi pdg3[0]=2212; pdg3[1]=321; pdg3[2]=211; mPDG=TDatabasePDG::Instance()->GetParticle(4122)->Mass(); minv = rd->InvMass(nprongs,pdg3); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; pdg3[0]=211; pdg3[1]=321; pdg3[2]=2212; minv = rd->InvMass(nprongs,pdg3); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; break; case 3: // D*->D0pi pdg2[0]=211; pdg2[1]=421; // in twoTrackArrayCasc we put the pion first @@ -1571,24 +1632,27 @@ Bool_t AliAnalysisVertexingHF::SelectInvMass(Int_t decay, minv = rd->InvMass(nprongs,pdg2); if(TMath::Abs(minv-mPDG)K3pi without PID + case 4: // D0->Kpipipi without PID pdg4[0]=321; pdg4[1]=211; pdg4[2]=211; pdg4[3]=211; mPDG=TDatabasePDG::Instance()->GetParticle(421)->Mass(); minv = rd->InvMass(nprongs,pdg4); - if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; pdg4[0]=211; pdg4[1]=321; pdg4[2]=211; pdg4[3]=211; mPDG=TDatabasePDG::Instance()->GetParticle(421)->Mass(); minv = rd->InvMass(nprongs,pdg4); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; pdg4[0]=211; pdg4[1]=211; pdg4[2]=321; pdg4[3]=211; mPDG=TDatabasePDG::Instance()->GetParticle(421)->Mass(); minv = rd->InvMass(nprongs,pdg4); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; pdg4[0]=211; pdg4[1]=211; pdg4[2]=211; pdg4[3]=321; mPDG=TDatabasePDG::Instance()->GetParticle(421)->Mass(); minv = rd->InvMass(nprongs,pdg4); if(TMath::Abs(minv-mPDG)GetMassCut()) retval=kTRUE; break; default: printf("SelectInvMass(): wrong decay selection\n"); diff --git a/PWG3/vertexingHF/AliAnalysisVertexingHF.h b/PWG3/vertexingHF/AliAnalysisVertexingHF.h index 34fcf56d005..9dd4bd1abe7 100644 --- a/PWG3/vertexingHF/AliAnalysisVertexingHF.h +++ b/PWG3/vertexingHF/AliAnalysisVertexingHF.h @@ -21,6 +21,11 @@ class AliAODRecoDecayHF4Prong; class AliAODRecoCascadeHF; class AliAnalysisFilter; class AliRDHFCutsD0toKpi; +class AliRDHFCutsJpsitoee; +class AliRDHFCutsDplustoKpipi; +class AliRDHFCutsDstoKKpi; +class AliRDHFCutsLctopKpi; +class AliRDHFCutsD0toKpipipi; class AliESDtrack; class AliVEvent; class AliAODVertex; @@ -84,6 +89,18 @@ class AliAnalysisVertexingHF : public TNamed { AliAnalysisFilter* GetTrackFilterSoftPi() const { return fTrackFilterSoftPi; } void SetCutsD0toKpi(AliRDHFCutsD0toKpi* cuts) { fCutsD0toKpi = cuts; } AliRDHFCutsD0toKpi* GetCutsD0toKpi() const { return fCutsD0toKpi; } + void SetCutsJpsitoee(AliRDHFCutsJpsitoee* cuts) { fCutsJpsitoee = cuts; } + AliRDHFCutsJpsitoee* GetCutsJpsitoee() const { return fCutsJpsitoee; } + void SetCutsDplustoKpipi(AliRDHFCutsDplustoKpipi* cuts) { fCutsDplustoKpipi = cuts; } + AliRDHFCutsDplustoKpipi* GetCutsDplustoKpipi() const { return fCutsDplustoKpipi; } + void SetCutsDstoKKpi(AliRDHFCutsDstoKKpi* cuts) { fCutsDstoKKpi = cuts; } + AliRDHFCutsDstoKKpi* GetCutsDstoKKpi() const { return fCutsDstoKKpi; } + void SetCutsLctopKpi(AliRDHFCutsLctopKpi* cuts) { fCutsLctopKpi = cuts; } + AliRDHFCutsLctopKpi* GetCutsLctopKpi() const { return fCutsLctopKpi; } + void SetCutsD0toKpipipi(AliRDHFCutsD0toKpipipi* cuts) { fCutsD0toKpipipi = cuts; } + AliRDHFCutsD0toKpipipi* GetCutsD0toKpipipi() const { return fCutsD0toKpipipi; } + void SetCutsD0fromDstar(AliRDHFCutsD0toKpi* cuts) { fCutsD0fromDstar = cuts; } + AliRDHFCutsD0toKpi* GetCutsD0fromDstar() const { return fCutsD0fromDstar; } void SetD0toKpiCuts(Double_t cut0=1000.,Double_t cut1=100000., Double_t cut2=1.1,Double_t cut3=0.,Double_t cut4=0., Double_t cut5=100000.,Double_t cut6=100000., @@ -145,7 +162,6 @@ class AliAnalysisVertexingHF : public TNamed { enum { kBitDispl = 0, kBitSoftPi = 1 }; Bool_t fInputAOD; // input from AOD (kTRUE) or ESD (kFALSE) - Int_t fAODMapSize; // size of fAODMap Int_t *fAODMap; //[fAODMapSize] map between index and ID for AOD tracks @@ -174,6 +190,12 @@ class AliAnalysisVertexingHF : public TNamed { AliAnalysisFilter *fTrackFilterSoftPi; // Track Filter for D* soft pion // candidates cuts AliRDHFCutsD0toKpi *fCutsD0toKpi; // D0->Kpi cuts + AliRDHFCutsJpsitoee *fCutsJpsitoee; // J/psi->ee cuts + AliRDHFCutsDplustoKpipi *fCutsDplustoKpipi; // D+->Kpipi cuts + AliRDHFCutsDstoKKpi *fCutsDstoKKpi; // Ds->KKpi cuts + AliRDHFCutsLctopKpi *fCutsLctopKpi; // Lc->pKpi cuts + AliRDHFCutsD0toKpipipi *fCutsD0toKpipipi; // D0->Kpipipi cuts + AliRDHFCutsD0toKpi *fCutsD0fromDstar; // D0 from Dstar cuts Double_t fD0toKpiCuts[9]; // cuts on D0->Kpi candidates // (to be passed to AliAODRecoDecayHF2Prong::SelectD0()) @@ -308,7 +330,7 @@ class AliAnalysisVertexingHF : public TNamed { UChar_t *seleFlags,Int_t *evtNumber); Bool_t SingleTrkCuts(AliESDtrack *trk,Bool_t &okDisplaced,Bool_t &okSoftPi) const; // - ClassDef(AliAnalysisVertexingHF,14); // Reconstruction of HF decay candidates + ClassDef(AliAnalysisVertexingHF,15); // Reconstruction of HF decay candidates }; diff --git a/PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx b/PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx new file mode 100644 index 00000000000..9ba7da46881 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx @@ -0,0 +1,151 @@ +/************************************************************************** + * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed D0->Kpi +// +// Author: A.Dainese, andrea.dainese@pd.infn.it +///////////////////////////////////////////////////////////// + +#include +#include + +#include "AliRDHFCutsD0toKpipipi.h" +#include "AliAODRecoDecayHF4Prong.h" +#include "AliAODTrack.h" +#include "AliESDtrack.h" + +ClassImp(AliRDHFCutsD0toKpipipi) + +//-------------------------------------------------------------------------- +AliRDHFCutsD0toKpipipi::AliRDHFCutsD0toKpipipi() : +AliRDHFCuts() +{ + // + // Default Constructor + // + Int_t nvars=9; + SetNVars(nvars); + TString varNames[9]={"inv. mass [GeV]", + "dca [cm]", + "cosThetaStar", + "pTK [GeV/c]", + "pTPi [GeV/c]", + "d0K [cm]", + "d0Pi [cm]", + "d0d0 [cm^2]", + "cosThetaPoint"}; + Bool_t isUpperCut[9]={kTRUE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kTRUE, + kTRUE, + kTRUE, + kFALSE}; + SetVarNames(nvars,varNames,isUpperCut); + Bool_t forOpt[9]={kFALSE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kTRUE}; + SetVarsForOpt(4,forOpt); + Float_t limits[2]={0,999999999.}; + SetPtBins(2,limits); +} +//-------------------------------------------------------------------------- +AliRDHFCutsD0toKpipipi::AliRDHFCutsD0toKpipipi(const AliRDHFCutsD0toKpipipi &source) : + AliRDHFCuts(source) +{ + // + // Copy constructor + // + +} +//-------------------------------------------------------------------------- +AliRDHFCutsD0toKpipipi &AliRDHFCutsD0toKpipipi::operator=(const AliRDHFCutsD0toKpipipi &source) +{ + // + // assignment operator + // + if(&source == this) return *this; + + AliRDHFCuts::operator=(source); + + return *this; +} + + +//--------------------------------------------------------------------------- +void AliRDHFCutsD0toKpipipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) { + // + // Fills in vars the values of the variables + // + + if(nvars!=fnVarsForOpt) { + printf("AliRDHFCutsD0toKpipipi::GetCutsVarsForOpt: wrong number of variables\n"); + return; + } + + AliAODRecoDecayHF4Prong *dd = (AliAODRecoDecayHF4Prong*)d; + + + return; +} +//--------------------------------------------------------------------------- +Int_t AliRDHFCutsD0toKpipipi::IsSelected(TObject* obj,Int_t selectionLevel) { + // + // Apply selection + // + + if(!fCutsRD){ + cout<<"Cut matrice not inizialized. Exit..."<Kpipipi +// Author: A.Dainese, andrea.dainese@pd.infn.it +//*********************************************************** + +#include "AliRDHFCuts.h" + +class AliRDHFCutsD0toKpipipi : public AliRDHFCuts +{ + public: + + AliRDHFCutsD0toKpipipi(); + + virtual ~AliRDHFCutsD0toKpipipi(){} + + AliRDHFCutsD0toKpipipi(const AliRDHFCutsD0toKpipipi& source); + AliRDHFCutsD0toKpipipi& operator=(const AliRDHFCutsD0toKpipipi& source); + + virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters); + + using AliRDHFCuts::IsSelected; + virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel); + + Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} + Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(1,iPtBin)] : 1.e6);} + + protected: + + + ClassDef(AliRDHFCutsD0toKpipipi,1); // class for cuts on AOD reconstructed D0->Kpipipi +}; + +#endif diff --git a/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx new file mode 100644 index 00000000000..b84fce52348 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx @@ -0,0 +1,270 @@ +/************************************************************************** + * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed D+->Kpipi +// +// Author: R. Bala, bala@to.infn.it +// G. Ortona, ortona@to.infn.it +///////////////////////////////////////////////////////////// + +#include +#include + +#include "AliRDHFCutsDplustoKpipi.h" +#include "AliAODRecoDecayHF3Prong.h" +#include "AliAODTrack.h" +#include "AliESDtrack.h" + +ClassImp(AliRDHFCutsDplustoKpipi) + +//-------------------------------------------------------------------------- +AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi() : + AliRDHFCuts() +{ + // + // Default Constructor + // + Int_t nvars=12; + SetNVars(nvars); + TString varNames[12]={"inv. mass [GeV]", + "pTK [GeV/c]", + "pTPi [GeV/c]", + "d0K [cm] lower limit!", + "d0Pi [cm] lower limit!", + "dist12 (cm)", + "sigmavert (cm)", + "dist prim-sec (cm)", + "pM=Max{pT1,pT2,pT3} (GeV/c)", + "cosThetaPoint", + "Sum d0^2 (cm^2)", + "dca cut (cm)"}; + Bool_t isUpperCut[12]={kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE}; + SetVarNames(nvars,varNames,isUpperCut); + Bool_t forOpt[12]={kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kTRUE, + kTRUE, + kTRUE, + kTRUE, + kFALSE}; + SetVarsForOpt(6,forOpt); + Float_t limits[2]={0,999999999.}; + SetPtBins(2,limits); +} +//-------------------------------------------------------------------------- +AliRDHFCutsDplustoKpipi::AliRDHFCutsDplustoKpipi(const AliRDHFCutsDplustoKpipi &source) : + AliRDHFCuts(source) +{ + // + // Copy constructor + // + +} +//-------------------------------------------------------------------------- +AliRDHFCutsDplustoKpipi &AliRDHFCutsDplustoKpipi::operator=(const AliRDHFCutsDplustoKpipi &source) +{ + // + // assignment operator + // + if(&source == this) return *this; + + AliRDHFCuts::operator=(source); + + return *this; +} + + +//--------------------------------------------------------------------------- +void AliRDHFCutsDplustoKpipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) { + // + // Fills in vars the values of the variables + // + + + if(nvars!=fnVarsForOpt) { + printf("AliRDHFCutsDplustoKpipi::GetCutsVarsForOpt: wrong number of variables\n"); + return; + } + + AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d; + /* + vars[0] = dd->GetDCA(); + if(TMath::Abs(pdgdaughters[0])==211) { + vars[1] = dd->CosThetaStarD0(); + } else { + vars[1] = dd->CosThetaStarD0bar(); + } + vars[2] = dd->Prodd0d0(); + vars[3] = dd->CosPointingAngle(); + + return; +*/ + + //possibile generalizzazione + Int_t iter=-1; + if(fVarsForOpt[0]){ + iter++; + vars[iter]=dd->InvMassDplus(); + } + if(fVarsForOpt[1]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==321) { + vars[iter]=dd->PtProng(iprong); + } + } + } + if(fVarsForOpt[2]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==211) { + vars[iter]=dd->PtProng(iprong); + } + } + } + if(fVarsForOpt[3]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==321) { + vars[iter]=dd->Getd0Prong(iprong); + } + } + } + if(fVarsForOpt[4]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==211) { + vars[iter]=dd->Getd0Prong(iprong); + } + } + } + if(fVarsForOpt[5]){ + iter++; + vars[iter]=dd->GetDist12toPrim(); + } + if(fVarsForOpt[6]){ + iter++; + vars[iter]=dd->GetSigmaVert(); + } + if(fVarsForOpt[7]){ + iter++; + vars[iter] = dd->DecayLength(); + } + if(fVarsForOpt[8]){ + iter++; + Float_t ptmax=0; + for(Int_t i=0;i<3;i++){ + if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i); + } + vars[iter]=ptmax; + } + if(fVarsForOpt[9]){ + iter++; + vars[iter]=dd->CosPointingAngle(); + } + if(fVarsForOpt[10]){ + iter++; + vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2); + } + if(fVarsForOpt[11]){ + iter++; + vars[iter]=dd->GetDCA(); + } + return; +} +//--------------------------------------------------------------------------- +Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel) { + // + // Apply selection + // + + if(!fCutsRD){ + cout<<"Cut matrice not inizialized. Exit..."<Pt(); + + Int_t ptbin=PtBin(pt); + + Double_t mDplusPDG = TDatabasePDG::Instance()->GetParticle(411)->Mass(); + Double_t mDplus=d->InvMassDplus(); + if(TMath::Abs(mDplus-mDplusPDG)>fCutsRD[GetGlobalIndex(0,ptbin)])return 0; + // if(d->PtProng(1) < fCutsRD[GetGlobalIndex(3,ptbin)] || d->PtProng(0) < fCutsRD[GetGlobalIndex(4,ptbin)]) okD0 = 0; + if(TMath::Abs(d->PtProng(1)) < fCutsRD[GetGlobalIndex(1,ptbin)] || TMath::Abs(d->Getd0Prong(1))PtProng(0)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))PtProng(2)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))GetDist12toPrim()GetDist23toPrim()Getd0Prong(0)*d->Getd0Prong(1)<0. && d->Getd0Prong(2)*d->Getd0Prong(1)<0.)return 0; + + //sec vert + if(d->GetSigmaVert()>fCutsRD[GetGlobalIndex(6,ptbin)])return 0; + + if(d->DecayLength()PtProng(0))PtProng(1))PtProng(2))CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)])return 0; + Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2); + if(sum2GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) return 0; + + } + return 1; +} +//--------------------------------------------------------------------------- diff --git a/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.h b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.h new file mode 100644 index 00000000000..43e76098b09 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.h @@ -0,0 +1,43 @@ +#ifndef ALIRDHFCUTSDPLUSTOKPIPI_H +#define ALIRDHFCUTSDPLUSTOKPIPI_H +/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed D+->Kpipi +// +// Author: R. Bala bala@to.infn.it +// G. Ortona ortona@to.infn.it +///////////////////////////////////////////////////////////// + + +#include "AliRDHFCuts.h" + +class AliRDHFCutsDplustoKpipi : public AliRDHFCuts +{ + public: + + AliRDHFCutsDplustoKpipi(); + + virtual ~AliRDHFCutsDplustoKpipi(){} + + AliRDHFCutsDplustoKpipi(const AliRDHFCutsDplustoKpipi& source); + AliRDHFCutsDplustoKpipi& operator=(const AliRDHFCutsDplustoKpipi& source); + + virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters); + + using AliRDHFCuts::IsSelected; + virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel); + + Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} + Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(11,iPtBin)] : 1.e6);} + + protected: + + + ClassDef(AliRDHFCutsDplustoKpipi,1); // class for cuts on AOD reconstructed D+->Kpipi +}; + +#endif diff --git a/PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx b/PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx new file mode 100644 index 00000000000..3caa2a130f0 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx @@ -0,0 +1,151 @@ +/************************************************************************** + * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed Ds->KKpi +// +// Author: A.Dainese, andrea.dainese@pd.infn.it +///////////////////////////////////////////////////////////// + +#include +#include + +#include "AliRDHFCutsDstoKKpi.h" +#include "AliAODRecoDecayHF3Prong.h" +#include "AliAODTrack.h" +#include "AliESDtrack.h" + +ClassImp(AliRDHFCutsDstoKKpi) + +//-------------------------------------------------------------------------- +AliRDHFCutsDstoKKpi::AliRDHFCutsDstoKKpi() : +AliRDHFCuts() +{ + // + // Default Constructor + // + Int_t nvars=9; + SetNVars(nvars); + TString varNames[9]={"inv. mass [GeV]", + "dca [cm]", + "cosThetaStar", + "pTK [GeV/c]", + "pTPi [GeV/c]", + "d0K [cm]", + "d0Pi [cm]", + "d0d0 [cm^2]", + "cosThetaPoint"}; + Bool_t isUpperCut[9]={kTRUE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kTRUE, + kTRUE, + kTRUE, + kFALSE}; + SetVarNames(nvars,varNames,isUpperCut); + Bool_t forOpt[9]={kFALSE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kTRUE}; + SetVarsForOpt(4,forOpt); + Float_t limits[2]={0,999999999.}; + SetPtBins(2,limits); +} +//-------------------------------------------------------------------------- +AliRDHFCutsDstoKKpi::AliRDHFCutsDstoKKpi(const AliRDHFCutsDstoKKpi &source) : + AliRDHFCuts(source) +{ + // + // Copy constructor + // + +} +//-------------------------------------------------------------------------- +AliRDHFCutsDstoKKpi &AliRDHFCutsDstoKKpi::operator=(const AliRDHFCutsDstoKKpi &source) +{ + // + // assignment operator + // + if(&source == this) return *this; + + AliRDHFCuts::operator=(source); + + return *this; +} + + +//--------------------------------------------------------------------------- +void AliRDHFCutsDstoKKpi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) { + // + // Fills in vars the values of the variables + // + + if(nvars!=fnVarsForOpt) { + printf("AliRDHFCutsDstoKKpi::GetCutsVarsForOpt: wrong number of variables\n"); + return; + } + + AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d; + + + return; +} +//--------------------------------------------------------------------------- +Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel) { + // + // Apply selection + // + + if(!fCutsRD){ + cout<<"Cut matrice not inizialized. Exit..."<KKpi +// Author: A.Dainese, andrea.dainese@pd.infn.it +//*********************************************************** + +#include "AliRDHFCuts.h" + +class AliRDHFCutsDstoKKpi : public AliRDHFCuts +{ + public: + + AliRDHFCutsDstoKKpi(); + + virtual ~AliRDHFCutsDstoKKpi(){} + + AliRDHFCutsDstoKKpi(const AliRDHFCutsDstoKKpi& source); + AliRDHFCutsDstoKKpi& operator=(const AliRDHFCutsDstoKKpi& source); + + virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters); + + using AliRDHFCuts::IsSelected; + virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel); + + Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} + Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(11,iPtBin)] : 1.e6);} + + protected: + + + ClassDef(AliRDHFCutsDstoKKpi,1); // class for cuts on AOD reconstructed Ds->KKpi +}; + +#endif diff --git a/PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx b/PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx new file mode 100644 index 00000000000..a54403bebda --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx @@ -0,0 +1,222 @@ +/************************************************************************** + * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed Jpsi->ee +// +// Author: A.Dainese, andrea.dainese@pd.infn.it +///////////////////////////////////////////////////////////// + +#include +#include + +#include "AliRDHFCutsJpsitoee.h" +#include "AliAODRecoDecayHF2Prong.h" +#include "AliAODTrack.h" +#include "AliESDtrack.h" + +ClassImp(AliRDHFCutsJpsitoee) + +//-------------------------------------------------------------------------- +AliRDHFCutsJpsitoee::AliRDHFCutsJpsitoee() : +AliRDHFCuts() +{ + // + // Default Constructor + // + Int_t nvars=9; + SetNVars(nvars); + TString varNames[9]={"inv. mass [GeV]", + "dca [cm]", + "cosThetaStar", // negative electron + "pTP [GeV/c]", + "pTN [GeV/c]", + "d0P [cm]", + "d0N [cm]", + "d0d0 [cm^2]", + "cosThetaPoint"}; + Bool_t isUpperCut[9]={kTRUE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kTRUE, + kTRUE, + kTRUE, + kFALSE}; + SetVarNames(nvars,varNames,isUpperCut); + Bool_t forOpt[9]={kFALSE, + kTRUE, + kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kTRUE}; + SetVarsForOpt(4,forOpt); + Float_t limits[2]={0,999999999.}; + SetPtBins(2,limits); +} +//-------------------------------------------------------------------------- +AliRDHFCutsJpsitoee::AliRDHFCutsJpsitoee(const AliRDHFCutsJpsitoee &source) : + AliRDHFCuts(source) +{ + // + // Copy constructor + // + +} +//-------------------------------------------------------------------------- +AliRDHFCutsJpsitoee &AliRDHFCutsJpsitoee::operator=(const AliRDHFCutsJpsitoee &source) +{ + // + // assignment operator + // + if(&source == this) return *this; + + AliRDHFCuts::operator=(source); + + return *this; +} + + +//--------------------------------------------------------------------------- +void AliRDHFCutsJpsitoee::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) { + // + // Fills in vars the values of the variables + // + + if(nvars!=fnVarsForOpt) { + printf("AliRDHFCutsJpsitoee::GetCutsVarsForOpt: wrong number of variables\n"); + return; + } + + AliAODRecoDecayHF2Prong *dd = (AliAODRecoDecayHF2Prong*)d; + /* + vars[0] = dd->GetDCA(); + if(TMath::Abs(pdgdaughters[0])==211) { + vars[1] = dd->CosThetaStarD0(); + } else { + vars[1] = dd->CosThetaStarD0bar(); + } + vars[2] = dd->Prodd0d0(); + vars[3] = dd->CosPointingAngle(); + + return; +*/ + + Int_t iter=-1; + if(fVarsForOpt[0]){ + iter++; + vars[iter]=dd->InvMassJPSIee(); + } + if(fVarsForOpt[1]){ + iter++; + vars[iter]=dd->GetDCA(); + } + if(fVarsForOpt[2]){ + iter++; + vars[iter] = dd->CosThetaStarJPSI(); + } + if(fVarsForOpt[3]){ + iter++; + vars[iter]=dd->PtProng(0); + } + if(fVarsForOpt[4]){ + iter++; + vars[iter]=dd->PtProng(1); + } + if(fVarsForOpt[5]){ + iter++; + vars[iter]=dd->Getd0Prong(0); + } + if(fVarsForOpt[6]){ + iter++; + vars[iter]=dd->Getd0Prong(1); + } + if(fVarsForOpt[7]){ + iter++; + vars[iter]= dd->Prodd0d0(); + } + if(fVarsForOpt[8]){ + iter++; + vars[iter]=dd->CosPointingAngle(); + } + + return; +} +//--------------------------------------------------------------------------- +Int_t AliRDHFCutsJpsitoee::IsSelected(TObject* obj,Int_t selectionLevel) { + // + // Apply selection + // + + if(!fCutsRD){ + cout<<"Cut matrice not inizialized. Exit..."<Pt(); + Double_t mJPsi,ctsJPsi; + + Double_t mJPSIPDG = TDatabasePDG::Instance()->GetParticle(443)->Mass(); + + Int_t ptbin=PtBin(pt); + + if(d->PtProng(1) < fCutsRD[GetGlobalIndex(3,ptbin)] || d->PtProng(0) < fCutsRD[GetGlobalIndex(4,ptbin)]) return 0; + + if(TMath::Abs(d->Getd0Prong(1)) > fCutsRD[GetGlobalIndex(5,ptbin)] || + TMath::Abs(d->Getd0Prong(0)) > fCutsRD[GetGlobalIndex(6,ptbin)]) return 0; + + + if(d->GetDCA() > fCutsRD[GetGlobalIndex(1,ptbin)]) return 0; + + mJPsi=d->InvMassJPSIee(); + if(TMath::Abs(mJPsi-mJPSIPDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) return 0; + + ctsJPsi=d->CosThetaStarJPSI(); + if(TMath::Abs(ctsJPsi) > fCutsRD[GetGlobalIndex(2,ptbin)]) return 0; + + if(d->Prodd0d0() > fCutsRD[GetGlobalIndex(7,ptbin)]) return 0; + + if(d->CosPointingAngle() < fCutsRD[GetGlobalIndex(8,ptbin)]) return 0; + + } + + + return 1; +} +//--------------------------------------------------------------------------- diff --git a/PWG3/vertexingHF/AliRDHFCutsJpsitoee.h b/PWG3/vertexingHF/AliRDHFCutsJpsitoee.h new file mode 100644 index 00000000000..4def265c921 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsJpsitoee.h @@ -0,0 +1,39 @@ +#ifndef ALIRDHFCUTSJPSITOEE_H +#define ALIRDHFCUTSJPSITOEE_H +/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +//*********************************************************** +// Class AliRDHFCutsJpsitoee +// class for cuts on AOD reconstructed J/psi->ee (from B) +// Author: A.Dainese, andrea.dainese@pd.infn.it +//*********************************************************** + +#include "AliRDHFCuts.h" + +class AliRDHFCutsJpsitoee : public AliRDHFCuts +{ + public: + + AliRDHFCutsJpsitoee(); + + virtual ~AliRDHFCutsJpsitoee(){} + + AliRDHFCutsJpsitoee(const AliRDHFCutsJpsitoee& source); + AliRDHFCutsJpsitoee& operator=(const AliRDHFCutsJpsitoee& source); + + virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters); + + using AliRDHFCuts::IsSelected; + virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel); + + Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} + Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(1,iPtBin)] : 1.e6);} + + protected: + + + ClassDef(AliRDHFCutsJpsitoee,1); // class for cuts on AOD reconstructed J/psi->ee +}; + +#endif diff --git a/PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx b/PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx new file mode 100644 index 00000000000..91279c2fa02 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx @@ -0,0 +1,271 @@ +/************************************************************************** + * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * * + * Author: The ALICE Off-line Project. * + * Contributors are mentioned in the code where appropriate. * + * * + * Permission to use, copy, modify and distribute this software and its * + * documentation strictly for non-commercial purposes is hereby granted * + * without fee, provided that the above copyright notice appears in all * + * copies and that both the copyright notice and this permission notice * + * appear in the supporting documentation. The authors make no claims * + * about the suitability of this software for any purpose. It is * + * provided "as is" without express or implied warranty. * + **************************************************************************/ + +///////////////////////////////////////////////////////////// +// +// Class for cuts on AOD reconstructed Lc->pKpi +// +// Author: A.Dainese, andrea.dainese@pd.infn.it +///////////////////////////////////////////////////////////// + +#include +#include + +#include "AliRDHFCutsLctopKpi.h" +#include "AliAODRecoDecayHF3Prong.h" +#include "AliAODTrack.h" +#include "AliESDtrack.h" + +ClassImp(AliRDHFCutsLctopKpi) + +//-------------------------------------------------------------------------- +AliRDHFCutsLctopKpi::AliRDHFCutsLctopKpi() : +AliRDHFCuts() +{ + // + // Default Constructor + // + Int_t nvars=12; + SetNVars(nvars); + TString varNames[12]={"inv. mass [GeV]", + "pTP [GeV/c]", + "pTPi [GeV/c]", + "d0P [cm] lower limit!", + "d0Pi [cm] lower limit!", + "dist12 (cm)", + "sigmavert (cm)", + "dist prim-sec (cm)", + "pM=Max{pT1,pT2,pT3} (GeV/c)", + "cosThetaPoint", + "Sum d0^2 (cm^2)", + "dca cut (cm)"}; + Bool_t isUpperCut[12]={kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE}; + SetVarNames(nvars,varNames,isUpperCut); + Bool_t forOpt[12]={kTRUE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kFALSE, + kTRUE, + kTRUE, + kTRUE, + kTRUE, + kTRUE, + kFALSE}; + SetVarsForOpt(6,forOpt); + Float_t limits[2]={0,999999999.}; + SetPtBins(2,limits); +} +//-------------------------------------------------------------------------- +AliRDHFCutsLctopKpi::AliRDHFCutsLctopKpi(const AliRDHFCutsLctopKpi &source) : + AliRDHFCuts(source) +{ + // + // Copy constructor + // + +} +//-------------------------------------------------------------------------- +AliRDHFCutsLctopKpi &AliRDHFCutsLctopKpi::operator=(const AliRDHFCutsLctopKpi &source) +{ + // + // assignment operator + // + if(&source == this) return *this; + + AliRDHFCuts::operator=(source); + + return *this; +} + + +//--------------------------------------------------------------------------- +void AliRDHFCutsLctopKpi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters) { + // + // Fills in vars the values of the variables + // + + if(nvars!=fnVarsForOpt) { + printf("AliRDHFCutsLctopKpi::GetCutsVarsForOpt: wrong number of variables\n"); + return; + } + + AliAODRecoDecayHF3Prong *dd = (AliAODRecoDecayHF3Prong*)d; + + Int_t iter=-1; + if(fVarsForOpt[0]){ + iter++; + vars[iter]=dd->InvMassLcpKpi(); + } + if(fVarsForOpt[1]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==2212) { + vars[iter]=dd->PtProng(iprong); + } + } + } + if(fVarsForOpt[2]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==211) { + vars[iter]=dd->PtProng(iprong); + } + } + } + if(fVarsForOpt[3]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==2212) { + vars[iter]=dd->Getd0Prong(iprong); + } + } + } + if(fVarsForOpt[4]){ + iter++; + for(Int_t iprong=0;iprong<3;iprong++){ + if(TMath::Abs(pdgdaughters[iprong])==211) { + vars[iter]=dd->Getd0Prong(iprong); + } + } + } + if(fVarsForOpt[5]){ + iter++; + vars[iter]=dd->GetDist12toPrim(); + } + if(fVarsForOpt[6]){ + iter++; + vars[iter]=dd->GetSigmaVert(); + } + if(fVarsForOpt[7]){ + iter++; + vars[iter] = dd->DecayLength(); + } + if(fVarsForOpt[8]){ + iter++; + Float_t ptmax=0; + for(Int_t i=0;i<3;i++){ + if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i); + } + vars[iter]=ptmax; + } + if(fVarsForOpt[9]){ + iter++; + vars[iter]=dd->CosPointingAngle(); + } + if(fVarsForOpt[10]){ + iter++; + vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2); + } + if(fVarsForOpt[11]){ + iter++; + vars[iter]=dd->GetDCA(); + } + + return; +} +//--------------------------------------------------------------------------- +Int_t AliRDHFCutsLctopKpi::IsSelected(TObject* obj,Int_t selectionLevel) { + // + // Apply selection + // + + if(!fCutsRD){ + cout<<"Cut matrice not inizialized. Exit..."<Pt(); + + Int_t ptbin=PtBin(pt); + + Double_t mLcpKpi,mLcpiKp; + Int_t okLcpKpi=1,okLcpiKp=1; + + Double_t mLcPDG = TDatabasePDG::Instance()->GetParticle(4122)->Mass(); + + mLcpKpi=d->InvMassLcpKpi(); + mLcpiKp=d->InvMassLcpiKp(); + + if(TMath::Abs(mLcpKpi-mLcPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okLcpKpi = 0; + if(TMath::Abs(mLcpiKp-mLcPDG)>fCutsRD[GetGlobalIndex(0,ptbin)]) okLcpiKp = 0; + if(!okLcpKpi && !okLcpiKp) return 0; + + if(TMath::Abs(d->PtProng(1)) < fCutsRD[GetGlobalIndex(1,ptbin)] || TMath::Abs(d->Getd0Prong(1))PtProng(0)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))PtProng(2)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))GetDist12toPrim()GetDist23toPrim()Getd0Prong(0)*d->Getd0Prong(1)<0. && d->Getd0Prong(2)*d->Getd0Prong(1)<0.) return 0; + + //sec vert + if(d->GetSigmaVert()>fCutsRD[GetGlobalIndex(6,ptbin)]) return 0; + + if(d->DecayLength()PtProng(0))PtProng(1))PtProng(2))CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]) return 0; + Double_t sum2=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2); + if(sum2GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) return 0; + + + if(okLcpKpi) returnvalue=1; //cuts passed as Lc->pKpi + if(okLcpiKp) returnvalue=2; //cuts passed as Lc->piKp + if(okLcpKpi && okLcpiKp) returnvalue=3; //cuts passed as both pKpi and piKp + + } + + return returnvalue; +} +//--------------------------------------------------------------------------- diff --git a/PWG3/vertexingHF/AliRDHFCutsLctopKpi.h b/PWG3/vertexingHF/AliRDHFCutsLctopKpi.h new file mode 100644 index 00000000000..77020fb63f7 --- /dev/null +++ b/PWG3/vertexingHF/AliRDHFCutsLctopKpi.h @@ -0,0 +1,39 @@ +#ifndef ALIRDHFCUTSLCTOPKPI_H +#define ALIRDHFCUTSLCTOPKPI_H +/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. * + * See cxx source for full Copyright notice */ + +//*********************************************************** +// Class AliRDHFCutsLctopKpi +// class for cuts on AOD reconstructed Lc->pKpi +// Author: A.Dainese, andrea.dainese@pd.infn.it +//*********************************************************** + +#include "AliRDHFCuts.h" + +class AliRDHFCutsLctopKpi : public AliRDHFCuts +{ + public: + + AliRDHFCutsLctopKpi(); + + virtual ~AliRDHFCutsLctopKpi(){} + + AliRDHFCutsLctopKpi(const AliRDHFCutsLctopKpi& source); + AliRDHFCutsLctopKpi& operator=(const AliRDHFCutsLctopKpi& source); + + virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters); + + using AliRDHFCuts::IsSelected; + virtual Int_t IsSelected(TObject* obj,Int_t selectionLevel); + + Float_t GetMassCut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(0,iPtBin)] : 1.e6);} + Float_t GetDCACut(Int_t iPtBin=0) const { return (GetCuts() ? fCutsRD[GetGlobalIndex(11,iPtBin)] : 1.e6);} + + protected: + + + ClassDef(AliRDHFCutsLctopKpi,1); // class for cuts on AOD reconstructed Lc->pKpi +}; + +#endif diff --git a/PWG3/vertexingHF/ConfigVertexingHF.C b/PWG3/vertexingHF/ConfigVertexingHF.C index dd7d3dbe2d8..00c21ab1c6a 100644 --- a/PWG3/vertexingHF/ConfigVertexingHF.C +++ b/PWG3/vertexingHF/ConfigVertexingHF.C @@ -34,11 +34,42 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { trkFilterSoftPi->AddCuts(esdTrackCutsSoftPi); vHF->SetTrackFilterSoftPi(trkFilterSoftPi); //--- set cuts for candidates selection - //AliRDHFCutsD0toKpi *cutsD0toKpi = new AliRDHFCutsD0toKpi(); - //Float_t cutsArrayD0toKpi[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; - //cutsD0toKpi->SetCuts(9,cutsArrayD0toKpi); - //cutsD0toKpi->AddTrackCuts(esdTrackCuts); - //vHF->SetCutsD0toKpi(cutsD0toKpi); + AliRDHFCutsD0toKpi *cutsD0toKpi = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0toKpi[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0toKpi->SetCuts(9,cutsArrayD0toKpi); + cutsD0toKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpi(cutsD0toKpi); + AliRDHFCutsJpsitoee *cutsJpsitoee = new AliRDHFCutsJpsitoee(); + Float_t cutsArrayJpsitoee[9]={0.35,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsJpsitoee->SetCuts(9,cutsArrayJpsitoee); + cutsJpsitoee->AddTrackCuts(esdTrackCuts); + vHF->SetCutsJpsitoee(cutsJpsitoee); + AliRDHFCutsDplustoKpipi *cutsDplustoKpipi = new AliRDHFCutsDplustoKpipi(); + Float_t cutsArrayDplustoKpipi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsDplustoKpipi->SetCuts(12,cutsArrayDplustoKpipi); + cutsDplustoKpipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDplustoKpipi(cutsDplustoKpipi); + AliRDHFCutsDstoKKpi *cutsDstoKKpi = new AliRDHFCutsDstoKKpi(); + Float_t cutsArrayDstoKKpi[14]={0.2,0.4,0.4,0.,0.,0.005,0.06,0.,0.,0.85,0.,0.1,0.1,0.1}; + cutsDstoKKpi->SetCuts(14,cutsArrayDstoKKpi); + cutsDstoKKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDstoKKpi(cutsDstoKKpi); + AliRDHFCutsLctopKpi *cutsLctopKpi = new AliRDHFCutsLctopKpi(); + Float_t cutsArrayLctopKpi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsLctopKpi->SetCuts(12,cutsArrayLctopKpi); + cutsLctopKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsLctopKpi(cutsLctopKpi); + AliRDHFCutsD0toKpipipi *cutsD0toKpipipi = new AliRDHFCutsD0toKpipipi(); + Float_t cutsArrayD0toKpipipi[9]={0.2,0.04,0.00,0.01,0.02,0.8,0.,0.1,0.}; + cutsD0toKpipipi->SetCuts(9,cutsArrayD0toKpipipi); + cutsD0toKpipipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpipipi(cutsD0toKpipipi); + AliRDHFCutsD0toKpi *cutsD0fromDstar = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0fromDstar[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0fromDstar->SetCuts(9,cutsArrayD0fromDstar); + cutsD0fromDstar->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0fromDstar(cutsD0fromDstar); + // vHF->SetD0toKpiCuts(0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.); vHF->SetBtoJPSICuts(0.350); vHF->SetDplusCuts(0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85); diff --git a/PWG3/vertexingHF/ConfigVertexingHF_highmult.C b/PWG3/vertexingHF/ConfigVertexingHF_highmult.C index 2f49a7e476e..2415e18d70a 100644 --- a/PWG3/vertexingHF/ConfigVertexingHF_highmult.C +++ b/PWG3/vertexingHF/ConfigVertexingHF_highmult.C @@ -34,6 +34,42 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { trkFilterSoftPi->AddCuts(esdTrackCutsSoftPi); vHF->SetTrackFilterSoftPi(trkFilterSoftPi); //--- set cuts for candidates selection + AliRDHFCutsD0toKpi *cutsD0toKpi = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0toKpi[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0toKpi->SetCuts(9,cutsArrayD0toKpi); + cutsD0toKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpi(cutsD0toKpi); + AliRDHFCutsJpsitoee *cutsJpsitoee = new AliRDHFCutsJpsitoee(); + Float_t cutsArrayJpsitoee[9]={0.35,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsJpsitoee->SetCuts(9,cutsArrayJpsitoee); + cutsJpsitoee->AddTrackCuts(esdTrackCuts); + vHF->SetCutsJpsitoee(cutsJpsitoee); + AliRDHFCutsDplustoKpipi *cutsDplustoKpipi = new AliRDHFCutsDplustoKpipi(); + Float_t cutsArrayDplustoKpipi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsDplustoKpipi->SetCuts(12,cutsArrayDplustoKpipi); + cutsDplustoKpipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDplustoKpipi(cutsDplustoKpipi); + AliRDHFCutsDstoKKpi *cutsDstoKKpi = new AliRDHFCutsDstoKKpi(); + Float_t cutsArrayDstoKKpi[14]={0.2,0.4,0.4,0.,0.,0.005,0.06,0.,0.,0.85,0.,0.1,0.1,0.1}; + cutsDstoKKpi->SetCuts(14,cutsArrayDstoKKpi); + cutsDstoKKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDstoKKpi(cutsDstoKKpi); + AliRDHFCutsLctopKpi *cutsLctopKpi = new AliRDHFCutsLctopKpi(); + Float_t cutsArrayLctopKpi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsLctopKpi->SetCuts(12,cutsArrayLctopKpi); + cutsLctopKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsLctopKpi(cutsLctopKpi); + AliRDHFCutsD0toKpipipi *cutsD0toKpipipi = new AliRDHFCutsD0toKpipipi(); + Float_t cutsArrayD0toKpipipi[9]={0.2,0.04,0.00,0.01,0.02,0.8,0.,0.1,0.}; + cutsD0toKpipipi->SetCuts(9,cutsArrayD0toKpipipi); + cutsD0toKpipipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpipipi(cutsD0toKpipipi); + AliRDHFCutsD0toKpi *cutsD0fromDstar = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0fromDstar[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0fromDstar->SetCuts(9,cutsArrayD0fromDstar); + cutsD0fromDstar->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0fromDstar(cutsD0fromDstar); + // vHF->SetD0toKpiCuts(0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.); vHF->SetBtoJPSICuts(0.350); vHF->SetDplusCuts(0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85); diff --git a/PWG3/vertexingHF/ConfigVertexingHF_pp2009.C b/PWG3/vertexingHF/ConfigVertexingHF_pp2009.C index de1b0b2faa4..8909e7118f8 100644 --- a/PWG3/vertexingHF/ConfigVertexingHF_pp2009.C +++ b/PWG3/vertexingHF/ConfigVertexingHF_pp2009.C @@ -34,6 +34,42 @@ AliAnalysisVertexingHF* ConfigVertexingHF() { trkFilterSoftPi->AddCuts(esdTrackCutsSoftPi); vHF->SetTrackFilterSoftPi(trkFilterSoftPi); //--- set cuts for candidates selection + AliRDHFCutsD0toKpi *cutsD0toKpi = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0toKpi[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0toKpi->SetCuts(9,cutsArrayD0toKpi); + cutsD0toKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpi(cutsD0toKpi); + AliRDHFCutsJpsitoee *cutsJpsitoee = new AliRDHFCutsJpsitoee(); + Float_t cutsArrayJpsitoee[9]={0.35,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsJpsitoee->SetCuts(9,cutsArrayJpsitoee); + cutsJpsitoee->AddTrackCuts(esdTrackCuts); + vHF->SetCutsJpsitoee(cutsJpsitoee); + AliRDHFCutsDplustoKpipi *cutsDplustoKpipi = new AliRDHFCutsDplustoKpipi(); + Float_t cutsArrayDplustoKpipi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsDplustoKpipi->SetCuts(12,cutsArrayDplustoKpipi); + cutsDplustoKpipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDplustoKpipi(cutsDplustoKpipi); + AliRDHFCutsDstoKKpi *cutsDstoKKpi = new AliRDHFCutsDstoKKpi(); + Float_t cutsArrayDstoKKpi[14]={0.2,0.4,0.4,0.,0.,0.005,0.06,0.,0.,0.85,0.,0.1,0.1,0.1}; + cutsDstoKKpi->SetCuts(14,cutsArrayDstoKKpi); + cutsDstoKKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsDstoKKpi(cutsDstoKKpi); + AliRDHFCutsLctopKpi *cutsLctopKpi = new AliRDHFCutsLctopKpi(); + Float_t cutsArrayLctopKpi[12]={0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85,0,1e6}; + cutsLctopKpi->SetCuts(12,cutsArrayLctopKpi); + cutsLctopKpi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsLctopKpi(cutsLctopKpi); + AliRDHFCutsD0toKpipipi *cutsD0toKpipipi = new AliRDHFCutsD0toKpipipi(); + Float_t cutsArrayD0toKpipipi[9]={0.2,0.04,0.00,0.01,0.02,0.8,0.,0.1,0.}; + cutsD0toKpipipi->SetCuts(9,cutsArrayD0toKpipipi); + cutsD0toKpipipi->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0toKpipipi(cutsD0toKpipipi); + AliRDHFCutsD0toKpi *cutsD0fromDstar = new AliRDHFCutsD0toKpi(); + Float_t cutsArrayD0fromDstar[9]={0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.}; + cutsD0fromDstar->SetCuts(9,cutsArrayD0fromDstar); + cutsD0fromDstar->AddTrackCuts(esdTrackCuts); + vHF->SetCutsD0fromDstar(cutsD0fromDstar); + // vHF->SetD0toKpiCuts(0.3,999999.,1.1,0.,0.,999999.,999999.,999999.,0.); vHF->SetBtoJPSICuts(0.350); vHF->SetDplusCuts(0.2,0.4,0.4,0.,0.,0.01,0.06,0.02,0.,0.85); -- 2.43.0