]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Add selection on track filter mask in D meson tasks
authorprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Nov 2011 21:49:26 +0000 (21:49 +0000)
committerprino <prino@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 3 Nov 2011 21:49:26 +0000 (21:49 +0000)
PWG3/vertexingHF/AliRDHFCutsD0toKpi.cxx
PWG3/vertexingHF/AliRDHFCutsD0toKpipipi.cxx
PWG3/vertexingHF/AliRDHFCutsDStartoKpipi.cxx
PWG3/vertexingHF/AliRDHFCutsDplustoKpipi.cxx
PWG3/vertexingHF/AliRDHFCutsDstoKKpi.cxx
PWG3/vertexingHF/AliRDHFCutsJpsitoee.cxx
PWG3/vertexingHF/AliRDHFCutsLctoV0.cxx
PWG3/vertexingHF/AliRDHFCutsLctopKpi.cxx

index 2f19b92cb5afef3e966c2b787e4bd7fe1fc51553..e3dda8dea75a7daba2c9eee09790e14f8ebeafc4 100644 (file)
@@ -254,7 +254,9 @@ Int_t AliRDHFCutsD0toKpi::IsSelected(TObject* obj,Int_t selectionLevel,AliAODEve
   Double_t ptD=d->Pt();
   if(ptD<fMinPtCand) return 0;
   if(ptD>fMaxPtCand) return 0;
+
+  if(d->HasBadDaughters()) return 0;
+
   // returnvalue: 0 not sel, 1 only D0, 2 only D0bar, 3 both
   Int_t returnvaluePID=3;
   Int_t returnvalueCuts=3;
index 078a335ab845a235227539a955d6333e474946a6..3b743746d9e72e92b8618cbf75def375e7f54d0a 100644 (file)
-/**************************************************************************\r
- * Copyright(c) 1998-2010, ALICE Experiment at CERN, All rights reserved. *\r
- *                                                                        *\r
- * Author: The ALICE Off-line Project.                                    *\r
- * Contributors are mentioned in the code where appropriate.              *\r
- *                                                                        *\r
- * Permission to use, copy, modify and distribute this software and its   *\r
- * documentation strictly for non-commercial purposes is hereby granted   *\r
- * without fee, provided that the above copyright notice appears in all   *\r
- * copies and that both the copyright notice and this permission notice   *\r
- * appear in the supporting documentation. The authors make no claims     *\r
- * about the suitability of this software for any purpose. It is          *\r
- * provided "as is" without express or implied warranty.                  *\r
- **************************************************************************/\r
-\r
-/////////////////////////////////////////////////////////////\r
-//\r
-// Class for cuts on AOD reconstructed D0->Kpipipi\r
-//\r
+/**************************************************************************
+ * 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->Kpipipi
+//
 // Author: r.romita@gsi.de, andrea.dainese@pd.infn.it,
-//        fabio.colamaria@ba.infn.it\r
-/////////////////////////////////////////////////////////////\r
-\r
-#include <TDatabasePDG.h>\r
-#include <Riostream.h>\r
-\r
-#include "AliRDHFCutsD0toKpipipi.h"\r
-#include "AliAODRecoDecayHF4Prong.h"\r
-#include "AliAODTrack.h"\r
-#include "AliESDtrack.h"\r
+//        fabio.colamaria@ba.infn.it
+/////////////////////////////////////////////////////////////
+
+#include <TDatabasePDG.h>
+#include <Riostream.h>
+
+#include "AliRDHFCutsD0toKpipipi.h"
+#include "AliAODRecoDecayHF4Prong.h"
+#include "AliAODTrack.h"
+#include "AliESDtrack.h"
 #include "AliAODPidHF.h"
-\r
-ClassImp(AliRDHFCutsD0toKpipipi)\r
-\r
-//--------------------------------------------------------------------------\r
-AliRDHFCutsD0toKpipipi::AliRDHFCutsD0toKpipipi(const char* name) : \r
-AliRDHFCuts(name)\r
-{\r
-  //\r
-  // Default Constructor\r
-  //\r
-  Int_t nvars=9;\r
-  SetNVars(nvars);\r
-  TString varNames[9]={"inv. mass [GeV]",   \r
-                      "dca [cm]",\r
-                       "Dist 2-trk Vtx to PrimVtx [cm]",\r
-                      "Dist 3-trk Vtx to PrimVtx [cm]",\r
-                      "Dist 4-trk Vtx to PrimVtx [cm]",\r
-                      "cosThetaPoint",\r
-                      "pt [GeV/c]",\r
-                      "rho mass [GeV]",\r
-                      "PID cut"};\r
-  Bool_t isUpperCut[9]={kTRUE,\r
-                       kTRUE,\r
-                       kFALSE,\r
-                       kFALSE,\r
-                       kFALSE,\r
-                       kFALSE,\r
-                       kFALSE,\r
-                       kTRUE,\r
-                       kFALSE};\r
-  SetVarNames(nvars,varNames,isUpperCut);\r
-  Bool_t forOpt[9]={kFALSE,\r
-                   kTRUE,\r
-                   kTRUE,\r
-                   kTRUE,\r
-                   kTRUE,\r
-                   kTRUE,\r
-                   kFALSE,\r
-                   kFALSE,\r
-                   kFALSE};\r
-  SetVarsForOpt(5,forOpt);\r
-  Float_t limits[2]={0,999999999.};\r
-  SetPtBins(2,limits);\r
-}\r
-//--------------------------------------------------------------------------\r
-AliRDHFCutsD0toKpipipi::AliRDHFCutsD0toKpipipi(const AliRDHFCutsD0toKpipipi &source) :\r
-  AliRDHFCuts(source)\r
-{\r
-  //\r
-  // Copy constructor\r
-  //\r
-\r
-}\r
-//--------------------------------------------------------------------------\r
-AliRDHFCutsD0toKpipipi &AliRDHFCutsD0toKpipipi::operator=(const AliRDHFCutsD0toKpipipi &source)\r
-{\r
-  //\r
-  // assignment operator\r
-  //\r
-  if(&source == this) return *this;\r
-\r
-  AliRDHFCuts::operator=(source);\r
-\r
-  return *this;\r
-}\r
-\r
-\r
-//---------------------------------------------------------------------------\r
-void AliRDHFCutsD0toKpipipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars,Int_t nvars,Int_t *pdgdaughters,AliAODEvent* aod) {\r
-  // \r
-  // Fills in vars the values of the variables \r
-  //\r
-\r
-  if(nvars!=fnVarsForOpt) {\r
-    printf("AliRDHFCutsD0toKpipipi::GetCutsVarsForOpt: wrong number of variables\n");\r
-    return;\r
-  }\r
-\r
-  AliAODRecoDecayHF4Prong *dd = (AliAODRecoDecayHF4Prong*)d;\r
-\r
+
+ClassImp(AliRDHFCutsD0toKpipipi)
+
+//--------------------------------------------------------------------------
+AliRDHFCutsD0toKpipipi::AliRDHFCutsD0toKpipipi(const char* name) : 
+AliRDHFCuts(name)
+{
+  //
+  // Default Constructor
+  //
+  Int_t nvars=9;
+  SetNVars(nvars);
+  TString varNames[9]={"inv. mass [GeV]",   
+                      "dca [cm]",
+                       "Dist 2-trk Vtx to PrimVtx [cm]",
+                      "Dist 3-trk Vtx to PrimVtx [cm]",
+                      "Dist 4-trk Vtx to PrimVtx [cm]",
+                      "cosThetaPoint",
+                      "pt [GeV/c]",
+                      "rho mass [GeV]",
+                      "PID cut"};
+  Bool_t isUpperCut[9]={kTRUE,
+                       kTRUE,
+                       kFALSE,
+                       kFALSE,
+                       kFALSE,
+                       kFALSE,
+                       kFALSE,
+                       kTRUE,
+                       kFALSE};
+  SetVarNames(nvars,varNames,isUpperCut);
+  Bool_t forOpt[9]={kFALSE,
+                   kTRUE,
+                   kTRUE,
+                   kTRUE,
+                   kTRUE,
+                   kTRUE,
+                   kFALSE,
+                   kFALSE,
+                   kFALSE};
+  SetVarsForOpt(5,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,AliAODEvent* aod) {
+  // 
+  // Fills in vars the values of the variables 
+  //
+
+  if(nvars!=fnVarsForOpt) {
+    printf("AliRDHFCutsD0toKpipipi::GetCutsVarsForOpt: wrong number of variables\n");
+    return;
+  }
+
+  AliAODRecoDecayHF4Prong *dd = (AliAODRecoDecayHF4Prong*)d;
+
   //recalculate vertex w/o daughters
   Bool_t cleanvtx=kFALSE;
   AliAODVertex *origownvtx=0x0;
@@ -121,135 +121,137 @@ void AliRDHFCutsD0toKpipipi::GetCutVarsForOpt(AliAODRecoDecayHF *d,Float_t *vars
     }
   }
 
-  Int_t iter=-1;\r
-\r
-  if(fVarsForOpt[0]) {\r
-    iter++;\r
-    Double_t mD0[2],mD0bar[2];\r
-    if(TMath::Abs(pdgdaughters[1])==321 || TMath::Abs(pdgdaughters[3])==321) {\r
-      dd->InvMassD0(mD0);\r
-      if(TMath::Abs(pdgdaughters[1])==321) {\r
-       vars[iter]=mD0[0];\r
-      }else{\r
-       vars[iter]=mD0[1];\r
-      }\r
-    } else {\r
-      dd->InvMassD0bar(mD0bar);\r
-      if(TMath::Abs(pdgdaughters[0])==321) {\r
-       vars[iter]=mD0bar[0];\r
-      }else{\r
-       vars[iter]=mD0bar[1];\r
-      }\r
-   }\r
-  }\r
-\r
-  if(fVarsForOpt[1]){\r
-    iter++;\r
-    vars[iter]=dd->GetDCA();\r
-  }\r
-\r
-  if(fVarsForOpt[2]){\r
-    iter++;\r
-    vars[iter]=dd->GetDist12toPrim();\r
-  }\r
-  if(fVarsForOpt[3]){\r
-    iter++;\r
-    vars[iter]=dd->GetDist3toPrim();\r
-  }\r
-  if(fVarsForOpt[4]){\r
-    iter++;\r
-    vars[iter]=dd->GetDist4toPrim();\r
-  }\r
-  if(fVarsForOpt[5]){\r
-    iter++;\r
-    vars[iter]=dd->CosPointingAngle();\r
-  }\r
-  if(fVarsForOpt[6]){\r
-    iter++;\r
-    vars[iter]=dd->Pt();\r
-  }\r
-  if(fVarsForOpt[7]){\r
-    iter++;\r
-    vars[iter]=999999999.;\r
-    printf("ERROR: optmization for rho mass cut not implemented\n");\r
-  }\r
-  if(fVarsForOpt[8]){\r
-    iter++;\r
-    vars[iter]=999999999.;\r
-    printf("ERROR: optmization for PID cut not implemented\n");\r
-  }\r
-  \r
+  Int_t iter=-1;
+
+  if(fVarsForOpt[0]) {
+    iter++;
+    Double_t mD0[2],mD0bar[2];
+    if(TMath::Abs(pdgdaughters[1])==321 || TMath::Abs(pdgdaughters[3])==321) {
+      dd->InvMassD0(mD0);
+      if(TMath::Abs(pdgdaughters[1])==321) {
+       vars[iter]=mD0[0];
+      }else{
+       vars[iter]=mD0[1];
+      }
+    } else {
+      dd->InvMassD0bar(mD0bar);
+      if(TMath::Abs(pdgdaughters[0])==321) {
+       vars[iter]=mD0bar[0];
+      }else{
+       vars[iter]=mD0bar[1];
+      }
+   }
+  }
+
+  if(fVarsForOpt[1]){
+    iter++;
+    vars[iter]=dd->GetDCA();
+  }
+
+  if(fVarsForOpt[2]){
+    iter++;
+    vars[iter]=dd->GetDist12toPrim();
+  }
+  if(fVarsForOpt[3]){
+    iter++;
+    vars[iter]=dd->GetDist3toPrim();
+  }
+  if(fVarsForOpt[4]){
+    iter++;
+    vars[iter]=dd->GetDist4toPrim();
+  }
+  if(fVarsForOpt[5]){
+    iter++;
+    vars[iter]=dd->CosPointingAngle();
+  }
+  if(fVarsForOpt[6]){
+    iter++;
+    vars[iter]=dd->Pt();
+  }
+  if(fVarsForOpt[7]){
+    iter++;
+    vars[iter]=999999999.;
+    printf("ERROR: optmization for rho mass cut not implemented\n");
+  }
+  if(fVarsForOpt[8]){
+    iter++;
+    vars[iter]=999999999.;
+    printf("ERROR: optmization for PID cut not implemented\n");
+  }
+  
     if(cleanvtx)CleanOwnPrimaryVtx(dd,aod,origownvtx);
-  return;\r
-}\r
-//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::IsSelected(TObject* obj,Int_t selectionLevel) {\r
-  //\r
-  // Apply selection\r
-  //\r
-\r
-  if(!fCutsRD){\r
-    cout<<"Cut matrix not inizialized. Exit..."<<endl;\r
-    return 0;\r
-  }\r
-  //PrintAll();\r
-  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;\r
-\r
-  if(!d){\r
-    cout<<"AliAODRecoDecayHF4Prong null"<<endl;\r
-    return 0;\r
-  }\r
-\r
-  Double_t ptD=d->Pt();\r
-  if(ptD<fMinPtCand) return 0;\r
+  return;
+}
+//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::IsSelected(TObject* obj,Int_t selectionLevel) {
+  //
+  // Apply selection
+  //
+
+  if(!fCutsRD){
+    cout<<"Cut matrix not inizialized. Exit..."<<endl;
+    return 0;
+  }
+  //PrintAll();
+  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+  if(!d){
+    cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+    return 0;
+  }
+
+  Double_t ptD=d->Pt();
+  if(ptD<fMinPtCand) return 0;
   if(ptD>fMaxPtCand) return 0;
-\r
-  // selection on daughter tracks \r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kTracks) {\r
-    if(!AreDaughtersSelected(d)) return 0;\r
-  }\r
-\r
-\r
-  Int_t returnvalue=1;\r
-\r
-  // selection on candidate\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kCandidate) {\r
-\r
-    Int_t ptbin=PtBin(d->Pt());\r
+
+  if(d->HasBadDaughters()) 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) {
+
+    Int_t ptbin=PtBin(d->Pt());
   
-    Int_t okD0=1,okD0bar=1;       \r
-    Double_t mD0[2],mD0bar[2];\r
-    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
-\r
-    d->InvMassD0(mD0);\r
-    if(TMath::Abs(mD0[0]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)] &&\r
-       TMath::Abs(mD0[1]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okD0 = 0;\r
-    d->InvMassD0bar(mD0bar);\r
-    if(TMath::Abs(mD0bar[0]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)] &&\r
-       TMath::Abs(mD0bar[1]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okD0bar = 0;\r
-    if(!okD0 && !okD0bar) return 0;\r
-    \r
+    Int_t okD0=1,okD0bar=1;       
+    Double_t mD0[2],mD0bar[2];
+    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
+
+    d->InvMassD0(mD0);
+    if(TMath::Abs(mD0[0]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)] &&
+       TMath::Abs(mD0[1]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okD0 = 0;
+    d->InvMassD0bar(mD0bar);
+    if(TMath::Abs(mD0bar[0]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)] &&
+       TMath::Abs(mD0bar[1]-mD0PDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okD0bar = 0;
+    if(!okD0 && !okD0bar) return 0;
+    
     if(d->GetDCA() > fCutsRD[GetGlobalIndex(1,ptbin)]
        || d->GetDCA(3) > fCutsRD[GetGlobalIndex(1,ptbin)]
        || d->GetDCA(2) > fCutsRD[GetGlobalIndex(1,ptbin)]
-       || d->GetDCA(5) > fCutsRD[GetGlobalIndex(1,ptbin)]) return 0;\r
-    if(d->GetDist12toPrim() < fCutsRD[GetGlobalIndex(2,ptbin)]) return 0;\r
-    if(d->GetDist3toPrim() < fCutsRD[GetGlobalIndex(3,ptbin)]) return 0;\r
-    if(d->GetDist4toPrim() < fCutsRD[GetGlobalIndex(4,ptbin)]) return 0;\r
-    if(d->CosPointingAngle() < fCutsRD[GetGlobalIndex(5,ptbin)]) return 0;\r
-    if(d->Pt() < fCutsRD[GetGlobalIndex(6,ptbin)]) return 0;\r
-    if(!d->CutRhoMass(mD0,mD0bar,fCutsRD[GetGlobalIndex(0,ptbin)],fCutsRD[GetGlobalIndex(7,ptbin)])) return 0;\r
-
-    if (okD0) returnvalue=1; //cuts passed as D0\r
-    if (okD0bar) returnvalue=2; //cuts passed as D0bar\r
-    if (okD0 && okD0bar) returnvalue=3; //cuts passed as D0 and D0bar\r
-  }\r
-
-  // selection on PID (from AliAODPidHF)\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kPID) {\r
+       || d->GetDCA(5) > fCutsRD[GetGlobalIndex(1,ptbin)]) return 0;
+    if(d->GetDist12toPrim() < fCutsRD[GetGlobalIndex(2,ptbin)]) return 0;
+    if(d->GetDist3toPrim() < fCutsRD[GetGlobalIndex(3,ptbin)]) return 0;
+    if(d->GetDist4toPrim() < fCutsRD[GetGlobalIndex(4,ptbin)]) return 0;
+    if(d->CosPointingAngle() < fCutsRD[GetGlobalIndex(5,ptbin)]) return 0;
+    if(d->Pt() < fCutsRD[GetGlobalIndex(6,ptbin)]) return 0;
+    if(!d->CutRhoMass(mD0,mD0bar,fCutsRD[GetGlobalIndex(0,ptbin)],fCutsRD[GetGlobalIndex(7,ptbin)])) return 0;
+
+    if (okD0) returnvalue=1; //cuts passed as D0
+    if (okD0bar) returnvalue=2; //cuts passed as D0bar
+    if (okD0 && okD0bar) returnvalue=3; //cuts passed as D0 and D0bar
+  }
+
+  // selection on PID (from AliAODPidHF)
+  if(selectionLevel==AliRDHFCuts::kAll || 
+     selectionLevel==AliRDHFCuts::kPID) {
 
     Int_t selD01 = D01Selected(d,AliRDHFCuts::kCandidate);
     Int_t selD02 = D02Selected(d,AliRDHFCuts::kCandidate);  
@@ -261,23 +263,23 @@ Int_t AliRDHFCutsD0toKpipipi::IsSelected(TObject* obj,Int_t selectionLevel) {
 
 returnvalue = 0;
 
-    if((selD01 == 1 && d01PID == 1)||(selD02 == 1 && d02PID == 1)||(selD0bar1 == 1 && d0bar1PID == 1)||(selD0bar2 == 1 && d0bar2PID == 1)) returnvalue = 1;\r
+    if((selD01 == 1 && d01PID == 1)||(selD02 == 1 && d02PID == 1)||(selD0bar1 == 1 && d0bar1PID == 1)||(selD0bar2 == 1 && d0bar2PID == 1)) returnvalue = 1;
   }
 
-  return returnvalue;\r
+  return returnvalue;
 }
-\r
-//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::IsSelectedFromPID(AliAODRecoDecayHF4Prong *d, Int_t *hyp1, Int_t *hyp2, Int_t *hyp3, Int_t *hyp4) {\r
-  //\r
+
+//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::IsSelectedFromPID(AliAODRecoDecayHF4Prong *d, Int_t *hyp1, Int_t *hyp2, Int_t *hyp3, Int_t *hyp4) {
+  //
   // Apply selection (using AliAODPidHF methods)
-  // Mass hypothesis true if each particle is at least compatible with specie of hypothesis\r
-  // \r
+  // Mass hypothesis true if each particle is at least compatible with specie of hypothesis
+  // 
 
   Int_t output=0;
 
   Int_t matchK[4], matchPi[4];
-  Double_t ptlimit[2] = {0.6,0.8};\r
+  Double_t ptlimit[2] = {0.6,0.8};
   AliAODTrack* trk[4];
   trk[0] = (AliAODTrack*)d->GetDaughter(0);
   trk[1] = (AliAODTrack*)d->GetDaughter(1);
@@ -318,152 +320,152 @@ Int_t AliRDHFCutsD0toKpipipi::IsSelectedFromPID(AliAODRecoDecayHF4Prong *d, Int_
   if(d0bar1rho12==1||d0bar1rho23==1) d0bar1rho = 1;
   if(d0bar2rho01==1||d0bar2rho03==1) d0bar2rho = 1;
 
-  //This way because there could be multiple hypotheses accepted\r
+  //This way because there could be multiple hypotheses accepted
   if(d01rho==1 && (matchK[1]>=0 && matchPi[0]>=0 && matchPi[2]>=0 && matchPi[3]>=0)) {*hyp1 = 1; output = 1;} //d01 hyp
   if(d02rho==1 && (matchK[3]>=0 && matchPi[0]>=0 && matchPi[1]>=0 && matchPi[2]>=0)) {*hyp2 = 1; output = 1;} //d02 hyp
   if(d0bar1rho==1 && (matchK[0]>=0 && matchPi[1]>=0 && matchPi[2]>=0 && matchPi[3]>=0)) {*hyp3 = 1; output = 1;} //d0bar1 hyp
   if(d0bar2rho==1 && (matchK[2]>=0 && matchPi[0]>=0 && matchPi[1]>=0 && matchPi[3]>=0)) {*hyp4 = 1; output = 1;} //d0bar2 hyp
 
-  return output;\r
-}\r
-//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::D01Selected(TObject* obj,Int_t selectionLevel) {\r
-  //\r
-  // Apply selection\r
-  //\r
-\r
-  if(!fCutsRD){\r
-    cout<<"Cut matrix not inizialized. Exit..."<<endl;\r
-    return 0;\r
-  }\r
-  //PrintAll();\r
-  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;\r
-\r
-  if(!d){\r
-    cout<<"AliAODRecoDecayHF4Prong null"<<endl;\r
-    return 0;\r
-  }\r
-\r
-  Int_t returnvalue=0;\r
-\r
-  // selection on candidate\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kCandidate) {\r
-\r
-    Int_t ptbin=PtBin(d->Pt());\r
-    \r
-    Double_t mD0[2];\r
-    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
-\r
-    d->InvMassD0(mD0);\r
-    if(TMath::Abs(mD0[0]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;\r
-  }\r
-\r
-  return returnvalue;\r
+  return output;
 }
-//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::D02Selected(TObject* obj,Int_t selectionLevel) {\r
-  //\r
-  // Apply selection\r
-  //\r
-\r
-  if(!fCutsRD){\r
-    cout<<"Cut matrix not inizialized. Exit..."<<endl;\r
-    return 0;\r
-  }\r
-  //PrintAll();\r
-  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;\r
-\r
-  if(!d){\r
-    cout<<"AliAODRecoDecayHF4Prong null"<<endl;\r
-    return 0;\r
-  }\r
-\r
-  Int_t returnvalue=0;\r
-\r
-  // selection on candidate\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kCandidate) {\r
-\r
-    Int_t ptbin=PtBin(d->Pt());\r
-      \r
-    Double_t mD0[2];\r
-    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
-\r
-    d->InvMassD0(mD0);\r
+//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::D01Selected(TObject* obj,Int_t selectionLevel) {
+  //
+  // Apply selection
+  //
+
+  if(!fCutsRD){
+    cout<<"Cut matrix not inizialized. Exit..."<<endl;
+    return 0;
+  }
+  //PrintAll();
+  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+  if(!d){
+    cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+    return 0;
+  }
+
+  Int_t returnvalue=0;
+
+  // selection on candidate
+  if(selectionLevel==AliRDHFCuts::kAll || 
+     selectionLevel==AliRDHFCuts::kCandidate) {
+
+    Int_t ptbin=PtBin(d->Pt());
+    
+    Double_t mD0[2];
+    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
+
+    d->InvMassD0(mD0);
+    if(TMath::Abs(mD0[0]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;
+  }
+
+  return returnvalue;
+}
+//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::D02Selected(TObject* obj,Int_t selectionLevel) {
+  //
+  // Apply selection
+  //
+
+  if(!fCutsRD){
+    cout<<"Cut matrix not inizialized. Exit..."<<endl;
+    return 0;
+  }
+  //PrintAll();
+  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+  if(!d){
+    cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+    return 0;
+  }
+
+  Int_t returnvalue=0;
+
+  // selection on candidate
+  if(selectionLevel==AliRDHFCuts::kAll || 
+     selectionLevel==AliRDHFCuts::kCandidate) {
+
+    Int_t ptbin=PtBin(d->Pt());
+      
+    Double_t mD0[2];
+    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
+
+    d->InvMassD0(mD0);
     if(TMath::Abs(mD0[1]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;
-  }\r
-\r
-  return returnvalue;\r
-}\r//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::D0bar1Selected(TObject* obj,Int_t selectionLevel) {\r
-  //\r
-  // Apply selection\r
-  //\r
-\r
-  if(!fCutsRD){\r
-    cout<<"Cut matrix not inizialized. Exit..."<<endl;\r
-    return 0;\r
-  }\r
-  //PrintAll();\r
-  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;\r
-\r
-  if(!d){\r
-    cout<<"AliAODRecoDecayHF4Prong null"<<endl;\r
-    return 0;\r
-  }\r
-\r
-  Int_t returnvalue=0;\r
-\r
-  // selection on candidate\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kCandidate) {\r
-\r
-    Int_t ptbin=PtBin(d->Pt());\r
\r
-    Double_t mD0bar[2];\r
-    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
-
-    d->InvMassD0bar(mD0bar);\r
-    if(TMath::Abs(mD0bar[0]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;\r
-  }\r
-\r
-  return returnvalue;\r
+  }
+
+  return returnvalue;
+}//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::D0bar1Selected(TObject* obj,Int_t selectionLevel) {
+  //
+  // Apply selection
+  //
+
+  if(!fCutsRD){
+    cout<<"Cut matrix not inizialized. Exit..."<<endl;
+    return 0;
+  }
+  //PrintAll();
+  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+  if(!d){
+    cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+    return 0;
+  }
+
+  Int_t returnvalue=0;
+
+  // selection on candidate
+  if(selectionLevel==AliRDHFCuts::kAll || 
+     selectionLevel==AliRDHFCuts::kCandidate) {
+
+    Int_t ptbin=PtBin(d->Pt());
+    Double_t mD0bar[2];
+    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
+
+    d->InvMassD0bar(mD0bar);
+    if(TMath::Abs(mD0bar[0]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;
+  }
+
+  return returnvalue;
 }
-//---------------------------------------------------------------------------\r
-Int_t AliRDHFCutsD0toKpipipi::D0bar2Selected(TObject* obj,Int_t selectionLevel) {\r
-  //\r
-  // Apply selection\r
-  //\r
-\r
-  if(!fCutsRD){\r
-    cout<<"Cut matrix not inizialized. Exit..."<<endl;\r
-    return 0;\r
-  }\r
-  //PrintAll();\r
-  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;\r
-\r
-  if(!d){\r
-    cout<<"AliAODRecoDecayHF4Prong null"<<endl;\r
-    return 0;\r
-  }\r
-\r
-  Int_t returnvalue=0;\r
-\r
-  // selection on candidate\r
-  if(selectionLevel==AliRDHFCuts::kAll || \r
-     selectionLevel==AliRDHFCuts::kCandidate) {\r
-\r
-    Int_t ptbin=PtBin(d->Pt());\r
-    \r
-    Double_t mD0bar[2];\r
-    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();\r
-
-    d->InvMassD0bar(mD0bar);\r
-    if(TMath::Abs(mD0bar[1]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;\r
-  }\r
-\r
-  return returnvalue;\r
+//---------------------------------------------------------------------------
+Int_t AliRDHFCutsD0toKpipipi::D0bar2Selected(TObject* obj,Int_t selectionLevel) {
+  //
+  // Apply selection
+  //
+
+  if(!fCutsRD){
+    cout<<"Cut matrix not inizialized. Exit..."<<endl;
+    return 0;
+  }
+  //PrintAll();
+  AliAODRecoDecayHF4Prong* d=(AliAODRecoDecayHF4Prong*)obj;
+
+  if(!d){
+    cout<<"AliAODRecoDecayHF4Prong null"<<endl;
+    return 0;
+  }
+
+  Int_t returnvalue=0;
+
+  // selection on candidate
+  if(selectionLevel==AliRDHFCuts::kAll || 
+     selectionLevel==AliRDHFCuts::kCandidate) {
+
+    Int_t ptbin=PtBin(d->Pt());
+    
+    Double_t mD0bar[2];
+    Double_t mD0PDG = TDatabasePDG::Instance()->GetParticle(421)->Mass();
+
+    d->InvMassD0bar(mD0bar);
+    if(TMath::Abs(mD0bar[1]-mD0PDG) < fCutsRD[GetGlobalIndex(0,ptbin)]) returnvalue = 1;
+  }
+
+  return returnvalue;
 }
 //---------------------------------------------------------------------------
 Bool_t AliRDHFCutsD0toKpipipi::IsInFiducialAcceptance(Double_t pt, Double_t y) const
index 3a70a6617cc7a9a67a919ed4fa51d0d32c5afa46..8913662efe17cb9ba70d37c129044539d174e929 100644 (file)
@@ -267,6 +267,8 @@ Int_t AliRDHFCutsDStartoKpipi::IsSelected(TObject* obj,Int_t selectionLevel) {
   Double_t ptD=d->Pt();
   if(ptD<fMinPtCand) return 0;
   if(ptD>fMaxPtCand) return 0;
+  
+  if(d->HasBadDaughters()) return 0;
 
   AliAODRecoDecayHF2Prong* dd = (AliAODRecoDecayHF2Prong*)d->Get2Prong();  
   if(!dd){
@@ -274,6 +276,8 @@ Int_t AliRDHFCutsDStartoKpipi::IsSelected(TObject* obj,Int_t selectionLevel) {
     return 0;
   }
 
+  if(dd->HasBadDaughters()) return 0;
+
   AliAODTrack *b = (AliAODTrack*)d->GetBachelor();
 
   
index 29625a49fbb75d61b1946fad7ad77dc85f4402af..c7e0e9a3e06afe7e99547409a521db09713977b4 100644 (file)
@@ -362,6 +362,7 @@ Int_t AliRDHFCutsDplustoKpipi::IsSelected(TObject* obj,Int_t selectionLevel, Ali
   if(pt<fMinPtCand) return 0;
   if(pt>fMaxPtCand) return 0;
 
+  if(d->HasBadDaughters()) return 0;
   
   // selection on candidate
   if(selectionLevel==AliRDHFCuts::kAll || 
index 564131a97f580b0c8d251f977d66793a67a21e00..851d9935e7af2014f7c6c72a72c7c2ab8d7a10d9 100644 (file)
@@ -414,6 +414,9 @@ Int_t AliRDHFCutsDstoKKpi::IsSelected(TObject* obj,Int_t selectionLevel, AliAODE
   if(ptD<fMinPtCand) return 0;
   if(ptD>fMaxPtCand) return 0;
 
+  if(d->HasBadDaughters()) return 0;
+  
+
   // selection on daughter tracks 
   if(selectionLevel==AliRDHFCuts::kAll || 
      selectionLevel==AliRDHFCuts::kTracks) {
index 5f927e85231125a77ff53960dc5ed8d5bce949e3..2767c32f7dd7077415f164010e6e1b848fd869a5 100644 (file)
@@ -167,6 +167,8 @@ Int_t AliRDHFCutsJpsitoee::IsSelected(TObject* obj,Int_t selectionLevel) {
     return 0;
   }
 
+  if(d->HasBadDaughters()) return 0;
+
 
   // selection on daughter tracks 
   if(selectionLevel==AliRDHFCuts::kAll || 
index 17dcba1b076d12aaa5d559a301f0840b0177bc22..b6eb1c58701d5893e66ae9b8e846f692a74a411a 100644 (file)
@@ -194,6 +194,7 @@ Int_t AliRDHFCutsLctoV0::IsSelected(TObject* obj,Int_t selectionLevel) {
     return 0;
   }
 
+  if(d->HasBadDaughters()) return 0;
 
   // selection on daughter tracks 
   if(selectionLevel==AliRDHFCuts::kAll || 
index 150bc6534991e801a9c392c992e343cf43362031..75323252bcfa7aa56a831e019632920c24e2bec9 100644 (file)
@@ -255,6 +255,9 @@ Int_t AliRDHFCutsLctopKpi::IsSelected(TObject* obj,Int_t selectionLevel,AliAODEv
   if(d->Pt()<fMinPtCand) return 0;
   if(d->Pt()>fMaxPtCand) return 0;
 
+  if(d->HasBadDaughters()) return 0;
+
+
   // selection on candidate
   if(selectionLevel==AliRDHFCuts::kAll || 
      selectionLevel==AliRDHFCuts::kCandidate) {