#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+;
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 \
#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"
fTrackFilter(0x0),
fTrackFilterSoftPi(0x0),
fCutsD0toKpi(0x0),
+fCutsJpsitoee(0x0),
+fCutsDplustoKpipi(0x0),
+fCutsDstoKKpi(0x0),
+fCutsLctopKpi(0x0),
+fCutsD0toKpipipi(0x0),
+fCutsD0fromDstar(0x0),
fFindVertexForDstar(kTRUE)
{
// Default constructor
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)
{
//
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];
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; }
}
//----------------------------------------------------------------------------
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));
// 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);
}
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);
Int_t checkD0,checkD0bar;
ok4Prong=the4Prong->SelectD0(fD0to4ProngsCuts,checkD0,checkD0bar);
+ //ok4Prong=(Bool_t)fCutsD0toKpipipi->IsSelected(the4Prong,AliRDHFCuts::kCandidate);
+
if(!fRecoPrimVtxSkippingTrks && !fRmTrksFromPrimVtx && !fMixEvent) {
the4Prong->UnsetOwnPrimaryVtx();
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]);
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]);
}
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]);
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]);
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]);
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]);
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;
}
mPDG=TDatabasePDG::Instance()->GetParticle(443)->Mass();
minv = rd->InvMass(nprongs,pdg2);
if(TMath::Abs(minv-mPDG)<fBtoJPSICuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsJpsitoee->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)<fDplusCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsDplustoKpipi->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)<fDsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsDstoKKpi->GetMassCut()) retval=kTRUE;
pdg3[0]=211; pdg3[1]=321; pdg3[2]=321;
minv = rd->InvMass(nprongs,pdg3);
if(TMath::Abs(minv-mPDG)<fDsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsDstoKKpi->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)<fLcCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsLctopKpi->GetMassCut()) retval=kTRUE;
pdg3[0]=211; pdg3[1]=321; pdg3[2]=2212;
minv = rd->InvMass(nprongs,pdg3);
if(TMath::Abs(minv-mPDG)<fLcCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsLctopKpi->GetMassCut()) retval=kTRUE;
break;
case 3: // D*->D0pi
pdg2[0]=211; pdg2[1]=421; // in twoTrackArrayCasc we put the pion first
minv = rd->InvMass(nprongs,pdg2);
if(TMath::Abs(minv-mPDG)<fDstarCuts[0]) retval=kTRUE;
break;
- case 4: // D0->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)<fD0to4ProngsCuts[0])
- retval=kTRUE;
+ if(TMath::Abs(minv-mPDG)<fD0to4ProngsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsD0toKpipipi->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)<fD0to4ProngsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsD0toKpipipi->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)<fD0to4ProngsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsD0toKpipipi->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)<fD0to4ProngsCuts[0]) retval=kTRUE;
+ //if(TMath::Abs(minv-mPDG)<fCutsD0toKpipipi->GetMassCut()) retval=kTRUE;
break;
default:
printf("SelectInvMass(): wrong decay selection\n");
class AliAODRecoCascadeHF;
class AliAnalysisFilter;
class AliRDHFCutsD0toKpi;
+class AliRDHFCutsJpsitoee;
+class AliRDHFCutsDplustoKpipi;
+class AliRDHFCutsDstoKKpi;
+class AliRDHFCutsLctopKpi;
+class AliRDHFCutsD0toKpipipi;
class AliESDtrack;
class AliVEvent;
class AliAODVertex;
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.,
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
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())
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
};
--- /dev/null
+/**************************************************************************
+ * 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 <TDatabasePDG.h>
+#include <Riostream.h>
+
+#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..."<<endl;
+ return 0;
+ }
+ //PrintAll();
+ AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+ if(!d){
+ cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+ return 0;
+ }
+
+
+ // selection on daughter tracks
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kTracks) {
+ if(!AreDaughtersSelected(d)) return 0;
+ }
+
+
+ Int_t returnvalue=1;
+
+ // selection on candidate
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kCandidate) {
+
+ }
+
+
+ return returnvalue;
+
+}
+//---------------------------------------------------------------------------
--- /dev/null
+#ifndef ALIRDHFCUTSD0TOKPIPIPI_H
+#define ALIRDHFCUTSD0TOKPIPIPI_H
+/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+//***********************************************************
+// Class AliRDHFCutsD0toKpipipi
+// class for cuts on AOD reconstructed D0->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
--- /dev/null
+/**************************************************************************
+ * 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 <TDatabasePDG.h>
+#include <Riostream.h>
+
+#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..."<<endl;
+ return 0;
+ }
+ //PrintAll();
+ AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
+
+
+ if(!d){
+ cout<<"AliAODRecoDecayHF3Prong null"<<endl;
+ return 0;
+ }
+
+
+
+ // selection on daughter tracks
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kTracks) {
+ if(!AreDaughtersSelected(d)) return 0;
+ }
+
+ // selection on candidate
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kCandidate) {
+
+ Double_t pt=d->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))<fCutsRD[GetGlobalIndex(3,ptbin)])return 0;//Kaon
+ if(TMath::Abs(d->PtProng(0)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(4,ptbin)])return 0;//Pion1
+ if(TMath::Abs(d->PtProng(2)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(4,ptbin)])return 0;//Pion2
+
+
+
+ //2track cuts
+ if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)])return 0;
+ if(d->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()<fCutsRD[GetGlobalIndex(7,ptbin)])return 0;
+
+ if(TMath::Abs(d->PtProng(0))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(1))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(2))<fCutsRD[GetGlobalIndex(8,ptbin)])return 0;
+ if(d->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(sum2<fCutsRD[GetGlobalIndex(10,ptbin)])return 0;
+
+ //DCA
+ for(Int_t i=0;i<3;i++) if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) return 0;
+
+ }
+ return 1;
+}
+//---------------------------------------------------------------------------
--- /dev/null
+#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
--- /dev/null
+/**************************************************************************
+ * 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 <TDatabasePDG.h>
+#include <Riostream.h>
+
+#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..."<<endl;
+ return 0;
+ }
+ //PrintAll();
+ AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
+
+ if(!d){
+ cout<<"AliAODRecoDecayHF3Prong null"<<endl;
+ return 0;
+ }
+
+
+ // selection on daughter tracks
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kTracks) {
+ if(!AreDaughtersSelected(d)) return 0;
+ }
+
+
+ Int_t returnvalue=1;
+
+ // selection on candidate
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kCandidate) {
+
+ }
+
+
+ return returnvalue;
+
+}
+//---------------------------------------------------------------------------
--- /dev/null
+#ifndef ALIRDHFCUTSDSTOKKPI_H
+#define ALIRDHFCUTSDSTOKKPI_H
+/* Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
+//***********************************************************
+// Class AliRDHFCutsDstoKKpi
+// class for cuts on AOD reconstructed Ds->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
--- /dev/null
+/**************************************************************************
+ * 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 <TDatabasePDG.h>
+#include <Riostream.h>
+
+#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..."<<endl;
+ return 0;
+ }
+ //PrintAll();
+ AliAODRecoDecayHF2Prong* d=(AliAODRecoDecayHF2Prong*)obj;
+
+ if(!d){
+ cout<<"AliAODRecoDecayHF2Prong null"<<endl;
+ return 0;
+ }
+
+
+ // selection on daughter tracks
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kTracks) {
+ if(!AreDaughtersSelected(d)) return 0;
+ }
+
+
+ // selection on candidate
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kCandidate) {
+
+ Double_t pt=d->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;
+}
+//---------------------------------------------------------------------------
--- /dev/null
+#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
--- /dev/null
+/**************************************************************************
+ * 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 <TDatabasePDG.h>
+#include <Riostream.h>
+
+#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..."<<endl;
+ return 0;
+ }
+ //PrintAll();
+ AliAODRecoDecayHF3Prong* d=(AliAODRecoDecayHF3Prong*)obj;
+
+ if(!d){
+ cout<<"AliAODRecoDecayHF3Prong null"<<endl;
+ return 0;
+ }
+
+
+ // selection on daughter tracks
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kTracks) {
+ if(!AreDaughtersSelected(d)) return 0;
+ }
+
+
+ Int_t returnvalue=1;
+
+ // selection on candidate
+ if(selectionLevel==AliRDHFCuts::kAll ||
+ selectionLevel==AliRDHFCuts::kCandidate) {
+
+ Double_t pt=d->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))<fCutsRD[GetGlobalIndex(3,ptbin)]) return 0;//Kaon
+ if(TMath::Abs(d->PtProng(0)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(0))<fCutsRD[GetGlobalIndex(4,ptbin)]) return 0;//Proton
+ if(TMath::Abs(d->PtProng(2)) < fCutsRD[GetGlobalIndex(2,ptbin)] || TMath::Abs(d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(4,ptbin)]) return 0;//Pion
+
+
+
+ //2track cuts
+ if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]) return 0;
+ if(d->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()<fCutsRD[GetGlobalIndex(7,ptbin)]) return 0;
+
+ if(TMath::Abs(d->PtProng(0))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(1))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(2))<fCutsRD[GetGlobalIndex(8,ptbin)]) return 0;
+ if(d->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(sum2<fCutsRD[GetGlobalIndex(10,ptbin)]) return 0;
+
+ //DCA
+ for(Int_t i=0;i<3;i++) if(d->GetDCA(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;
+}
+//---------------------------------------------------------------------------
--- /dev/null
+#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
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);
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);
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);