Updates Ds cuts (Francesco, Sergey)
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 May 2008 17:09:45 +0000 (17:09 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 May 2008 17:09:45 +0000 (17:09 +0000)
PWG3/vertexingHF/AliAODRecoDecayHF3Prong.cxx
PWG3/vertexingHF/AliAnalysisVertexingHF.cxx
PWG3/vertexingHF/AliAnalysisVertexingHF.h
PWG3/vertexingHF/ConfigVertexingHF.C

index 10d08d8..a99e32a 100644 (file)
@@ -156,7 +156,7 @@ Bool_t AliAODRecoDecayHF3Prong::SelectDplus(const Double_t *cuts)
   if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])return kFALSE;//Pion2
 
   //DCA
-  for(Int_t i=0;i<3;i++) if(cuts[11]>0 && GetDCA(i)>cuts[11])return kFALSE;
+  for(Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])return kFALSE;
 
   //2track cuts
   if(fDist12toPrim<cuts[5] || fDist23toPrim<cuts[5])return kFALSE;
@@ -192,6 +192,7 @@ Bool_t AliAODRecoDecayHF3Prong::SelectDs(const Double_t *cuts,Int_t &okDsKKpi,In
 // cuts[9] = cosThetaPoint
 // cuts[10] = Sum d0^2 (cm^2)
 // cuts[11] = dca cut (cm)
+// cuts[12] = max. inv. mass difference(Mphi-MKK and MK0*-MKpi) [GeV] 
 //
 // If candidate Ds does not pass the cuts return kFALSE
 //
@@ -210,14 +211,26 @@ Bool_t AliAODRecoDecayHF3Prong::SelectDs(const Double_t *cuts,Int_t &okDsKKpi,In
   //single track
   if(TMath::Abs(PtProng(0)) < cuts[1] || TMath::Abs(Getd0Prong(0))<cuts[3])return kFALSE;//Kaon1
   if(TMath::Abs(PtProng(1)) < cuts[1] || TMath::Abs(Getd0Prong(1))<cuts[3])return kFALSE;//Kaon2
-  if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])return kFALSE;//Pion2
+  if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])return kFALSE;//Pion
 
+  // cuts on resonant decays (via Phi or K0*)
+  Bool_t okMassPhi=1;
+  Double_t mass01phi=InvMass2Prongs(0,1,321,321);
+  Double_t mass12phi=InvMass2Prongs(1,2,321,321);
+  Double_t mPhiPDG = TDatabasePDG::Instance()->GetParticle(333)->Mass();
+  if(TMath::Abs(mass01phi-mPhiPDG)>cuts[12] && TMath::Abs(mass12phi-mPhiPDG)>cuts[12]) okMassPhi = 0;
+  Bool_t okMassK0star=1;
+  Double_t mass01K0s=InvMass2Prongs(0,1,211,321);
+  Double_t mass12K0s=InvMass2Prongs(1,2,321,211);
+  Double_t mK0sPDG = TDatabasePDG::Instance()->GetParticle(313)->Mass();
+  if(TMath::Abs(mass01K0s-mK0sPDG)>cuts[12] && TMath::Abs(mass12K0s-mK0sPDG)>cuts[12]) okMassK0star = 0;
+  if(!okMassPhi && !okMassK0star) return kFALSE;
+  
   //DCA
-  for(Int_t i=0;i<3;i++) if(cuts[11]>0 && GetDCA(i)>cuts[11])return kFALSE;
+  for(Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])return kFALSE;
 
   //2track cuts
   if(fDist12toPrim<cuts[5] || fDist23toPrim<cuts[5])return kFALSE;
-  if(Getd0Prong(0)*Getd0Prong(1)<0. && Getd0Prong(2)*Getd0Prong(1)<0.)return kFALSE;
 
   //sec vert
   if(fSigmaVert>cuts[6])return kFALSE;
@@ -271,7 +284,7 @@ Bool_t AliAODRecoDecayHF3Prong::SelectLc(const Double_t *cuts,Int_t &okLcpKpi,In
   if(TMath::Abs(PtProng(2)) < cuts[2] || TMath::Abs(Getd0Prong(2))<cuts[4])return kFALSE;//Pion
 
   //DCA
-  for(Int_t i=0;i<3;i++) if(cuts[11]>0 && GetDCA(i)>cuts[11])return kFALSE;
+  for(Int_t i=0;i<3;i++) if(GetDCA(i)>cuts[11])return kFALSE;
 
   //2track cuts
   if(fDist12toPrim<cuts[5] || fDist23toPrim<cuts[5])return kFALSE;
index 1d923e6..e986f89 100644 (file)
@@ -94,7 +94,7 @@ fMind0rphiCut(source.fMind0rphiCut)
   for(Int_t i=0; i<9; i++)  fD0toKpiCuts[i]=source.fD0toKpiCuts[i];
   for(Int_t i=0; i<9; i++)  fBtoJPSICuts[i]=source.fBtoJPSICuts[i];
   for(Int_t i=0; i<12; i++) fDplusCuts[i]=source.fDplusCuts[i];
-  for(Int_t i=0; i<12; i++)  fDsCuts[i]=source.fDsCuts[i];
+  for(Int_t i=0; i<13; i++)  fDsCuts[i]=source.fDsCuts[i];
   for(Int_t i=0; i<12; i++)  fLcCuts[i]=source.fLcCuts[i];
 }
 //--------------------------------------------------------------------------
@@ -124,7 +124,7 @@ AliAnalysisVertexingHF &AliAnalysisVertexingHF::operator=(const AliAnalysisVerte
   for(Int_t i=0; i<9; i++)  fD0toKpiCuts[i]=source.fD0toKpiCuts[i];
   for(Int_t i=0; i<9; i++)  fBtoJPSICuts[i]=source.fBtoJPSICuts[i];
   for(Int_t i=0; i<12; i++) fDplusCuts[i]=source.fDplusCuts[i];
-  for(Int_t i=0; i<12; i++)  fDsCuts[i]=source.fDsCuts[i];
+  for(Int_t i=0; i<13; i++)  fDsCuts[i]=source.fDsCuts[i];
   for(Int_t i=0; i<12; i++)  fLcCuts[i]=source.fLcCuts[i];
 
   return *this;
@@ -1234,34 +1234,32 @@ void AliAnalysisVertexingHF::PrintStatus() const {
     printf("    dca cut [cm]  < %f\n",fDplusCuts[11]);
     printf("  Ds->KKpi cuts:\n");
     printf("    |M-MDs| [GeV]    < %f\n",fDsCuts[0]);
-    printf("    pTK     [GeV/c]    > %f\n",fDplusCuts[1]);
-    printf("    pTPi    [GeV/c]    > %f\n",fDplusCuts[2]);
-    printf("    |d0K|  [cm]  > %f\n",fDplusCuts[3]);
-    printf("    |d0Pi| [cm]  > %f\n",fDplusCuts[4]);
-    printf("    dist12    [cm]  < %f\n",fDplusCuts[5]);
-    printf("    sigmavert [cm]   < %f\n",fDplusCuts[6]);
-    printf("    dist prim-sec [cm] > %f\n",fDplusCuts[7]);
-    printf("    pM=Max{pT1,pT2,pT3} [GeV/c] > %f\n",fDplusCuts[8]);
-    printf("    cosThetaPoint    > %f\n",fDplusCuts[9]);
-    printf("    Sum d0^2 [cm^2]  > %f\n",fDplusCuts[10]);
-    printf("    dca cut [cm]  < %f\n",fDplusCuts[11]);
+    printf("    pTK     [GeV/c]    > %f\n",fDsCuts[1]);
+    printf("    pTPi    [GeV/c]    > %f\n",fDsCuts[2]);
+    printf("    |d0K|  [cm]  > %f\n",fDsCuts[3]);
+    printf("    |d0Pi| [cm]  > %f\n",fDsCuts[4]);
+    printf("    dist12    [cm]  < %f\n",fDsCuts[5]);
+    printf("    sigmavert [cm]   < %f\n",fDsCuts[6]);
+    printf("    dist prim-sec [cm] > %f\n",fDsCuts[7]);
+    printf("    pM=Max{pT1,pT2,pT3} [GeV/c] > %f\n",fDsCuts[8]);
+    printf("    cosThetaPoint    > %f\n",fDsCuts[9]);
+    printf("    Sum d0^2 [cm^2]  > %f\n",fDsCuts[10]);
+    printf("    dca cut [cm]  < %f\n",fDsCuts[11]);
+    printf("    Inv. Mass  phi/K0* [GeV]  < %f\n",fDsCuts[12]);
     printf("  Lc->pKpi cuts:\n");
     printf("    |M-MLc| [GeV]    < %f\n",fLcCuts[0]);
-    printf("    pTP     [GeV/c]    > %f\n",fDplusCuts[1]);
-    printf("    pTPi and pTK [GeV/c]    > %f\n",fDplusCuts[2]);
-    printf("    |d0P|  [cm]  > %f\n",fDplusCuts[3]);
-    printf("    |d0Pi| and |d0K| [cm]  > %f\n",fDplusCuts[4]);
-    printf("    dist12    [cm]  < %f\n",fDplusCuts[5]);
-    printf("    sigmavert [cm]   < %f\n",fDplusCuts[6]);
-    printf("    dist prim-sec [cm] > %f\n",fDplusCuts[7]);
-    printf("    pM=Max{pT1,pT2,pT3} [GeV/c] > %f\n",fDplusCuts[8]);
-    printf("    cosThetaPoint    > %f\n",fDplusCuts[9]);
-    printf("    Sum d0^2 [cm^2]  > %f\n",fDplusCuts[10]);
-    printf("    dca cut [cm]  < %f\n",fDplusCuts[11]);
+    printf("    pTP     [GeV/c]    > %f\n",fLcCuts[1]);
+    printf("    pTPi and pTK [GeV/c]    > %f\n",fLcCuts[2]);
+    printf("    |d0P|  [cm]  > %f\n",fLcCuts[3]);
+    printf("    |d0Pi| and |d0K| [cm]  > %f\n",fLcCuts[4]);
+    printf("    dist12    [cm]  < %f\n",fLcCuts[5]);
+    printf("    sigmavert [cm]   < %f\n",fLcCuts[6]);
+    printf("    dist prim-sec [cm] > %f\n",fLcCuts[7]);
+    printf("    pM=Max{pT1,pT2,pT3} [GeV/c] > %f\n",fLcCuts[8]);
+    printf("    cosThetaPoint    > %f\n",fLcCuts[9]);
+    printf("    Sum d0^2 [cm^2]  > %f\n",fLcCuts[10]);
+    printf("    dca cut [cm]  < %f\n",fLcCuts[11]);
     printf("  Ds->KKpi cuts:\n");
-    printf("    |M-MDs| [GeV]    < %f\n",fDsCuts[0]);
-    printf("  Lc->pKpi cuts:\n");
-    printf("    |M-MD+| [GeV]    < %f\n",fLcCuts[0]);
   }
 
   return;
@@ -1473,7 +1471,8 @@ void AliAnalysisVertexingHF::SetDsCuts(Double_t cut0,Double_t cut1,
                                   Double_t cut2,Double_t cut3,Double_t cut4,
                                   Double_t cut5,Double_t cut6,
                                   Double_t cut7,Double_t cut8,
-                                  Double_t cut9,Double_t cut10,Double_t cut11)
+                                  Double_t cut9,Double_t cut10,
+                                  Double_t cut11,Double_t cut12)
 {
   // Set the cuts for Ds->KKpi selection
   fDsCuts[0] = cut0;
@@ -1488,15 +1487,16 @@ void AliAnalysisVertexingHF::SetDsCuts(Double_t cut0,Double_t cut1,
   fDsCuts[9] = cut9;
   fDsCuts[10] = cut10;
   fDsCuts[11] = cut11;
+  fDsCuts[12] = cut12;
 
   return;
 }
 //-----------------------------------------------------------------------------
-void AliAnalysisVertexingHF::SetDsCuts(const Double_t cuts[12]) 
+void AliAnalysisVertexingHF::SetDsCuts(const Double_t cuts[13]) 
 {
   // Set the cuts for Ds->KKpi selection
 
-  for(Int_t i=0; i<12; i++) fDsCuts[i] = cuts[i];
+  for(Int_t i=0; i<13; i++) fDsCuts[i] = cuts[i];
 
   return;
 }
index e0edcd6..7bb3ff8 100644 (file)
@@ -95,21 +95,21 @@ class AliAnalysisVertexingHF : public TNamed {
                    Double_t cut5=0.,Double_t cut6=10000000000.,
                    Double_t cut7=0.,Double_t cut8=0.,
                    Double_t cut9=-1.1,Double_t cut10=0.,
-                   Double_t cut11=0.); 
+                   Double_t cut11=10000000000.); 
   void SetDplusCuts(const Double_t cuts[12]); 
   void SetDsCuts(Double_t cut0=1000.,Double_t cut1=0.,
                Double_t cut2=0.,Double_t cut3=0.,Double_t cut4=0.,
                Double_t cut5=0.,Double_t cut6=10000000000.,
                Double_t cut7=0.,Double_t cut8=0.,
                Double_t cut9=-1.1,Double_t cut10=0.,
-               Double_t cut11=0.); 
-  void SetDsCuts(const Double_t cuts[12]); 
+               Double_t cut11=10000000000., Double_t cut12=1000.); 
+  void SetDsCuts(const Double_t cuts[13]); 
   void SetLcCuts(Double_t cut0=1000.,Double_t cut1=0.,
                 Double_t cut2=0.,Double_t cut3=0.,Double_t cut4=0.,
                 Double_t cut5=0.,Double_t cut6=10000000000.,
                 Double_t cut7=0.,Double_t cut8=0.,
                 Double_t cut9=-1.1,Double_t cut10=0.,
-                Double_t cut11=0.); 
+                Double_t cut11=10000000000.); 
   void SetLcCuts(const Double_t cuts[12]); 
 
   //
@@ -179,7 +179,7 @@ class AliAnalysisVertexingHF : public TNamed {
                           // 9 = cosThetaPoint
                           // 10 = Sum d0^2 (cm^2)
                           // 11 = dca cut (cm)
-  Double_t fDsCuts[12]; // cuts on Ds candidates
+  Double_t fDsCuts[13]; // cuts on Ds candidates
                         // (to be passed to AliAODRecoDecayHF3Prong::SelectDs())
                         // 0 = inv. mass half width [GeV]   
                         // 1 = pTK [GeV/c]
@@ -193,7 +193,8 @@ class AliAnalysisVertexingHF : public TNamed {
                         // 9 = cosThetaPoint
                         // 10 = Sum d0^2 (cm^2)
                         // 11 = dca cut (cm)
-  Double_t fLcCuts[12]; // cuts on Lambdac candidates
+                        // 12 = inv. mass cut arounf phi and K0* [GeV]
+   Double_t fLcCuts[12]; // cuts on Lambdac candidates
                         // (to be passed to AliAODRecoDecayHF3Prong::SelectLc())
                         // 0 = inv. mass half width [GeV]   
                         // 1 = pTP [GeV/c]
index d6ab89f..7bf491d 100644 (file)
@@ -21,7 +21,7 @@ AliAnalysisVertexingHF* ConfigVertexingHF() {
   vHF->SetD0toKpiCuts(0.2,999999.,1.1,0.,0.,999999.,999999.,999999.,0.3);
   vHF->SetBtoJPSICuts(0.350);
   vHF->SetDplusCuts(0.2,0.,0.,0.,0.,0.01,0.06,0.,0.,0.8);
-  vHF->SetDsCuts(0.2,0.,0.,0.,0.,0.01,0.06,0.,0.,0.8);
+  vHF->SetDsCuts(0.2,0.,0.,0.,0.,0.005,0.06,0.,0.,0.8,0.,0.1,0.1);
   vHF->SetLcCuts(0.2,0.,0.,0.,0.,0.01,0.06,0.,0.,0.8);
   //--- set this if you want to reconstruct primary vertex candidate by
   //    candidate using other tracks in the event (for pp, broad