]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWG3/vertexingHF/AliRDHFCuts.cxx
Added list of good runs (from RCT) for LHC10b and LHC10c
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliRDHFCuts.cxx
index e83d335695f1ab6da3b40bb9743a8e2ff5662b81..9ef087085679abf8e5d7373612f2aabf71b15e49 100644 (file)
@@ -54,7 +54,9 @@ fVarsForOpt(0),
 fGlobalIndex(1),
 fCutsRD(0),
 fIsUpperCut(0),
-fUsePID(kFALSE)
+fUsePID(kFALSE),
+fPidHF(0),
+fWhyRejection(0)
 {
   //
   // Default Constructor
@@ -79,7 +81,9 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) :
   fGlobalIndex(source.fGlobalIndex),
   fCutsRD(0),
   fIsUpperCut(0),
-  fUsePID(source.fUsePID)
+  fUsePID(source.fUsePID),
+  fPidHF(0),
+  fWhyRejection(source.fWhyRejection)
 {
   //
   // Copy constructor
@@ -90,6 +94,7 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) :
   if(source.fVarNames) SetVarNames(source.fnVars,source.fVarNames,source.fIsUpperCut);
   if(source.fCutsRD) SetCuts(source.fGlobalIndex,source.fCutsRD);
   if(source.fVarsForOpt) SetVarsForOpt(source.fnVarsForOpt,source.fVarsForOpt);
+  if(source.fPidHF) SetPidHF(source.fPidHF);
   PrintAll();
 
 }
@@ -113,6 +118,8 @@ AliRDHFCuts &AliRDHFCuts::operator=(const AliRDHFCuts &source)
   fGlobalIndex=source.fGlobalIndex;
   fnVarsForOpt=source.fnVarsForOpt;
   fUsePID=source.fUsePID;
+  SetPidHF(source.GetPidHF());
+  fWhyRejection=source.fWhyRejection;
 
   if(source.GetTrackCuts()) AddTrackCuts(source.GetTrackCuts());
   if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
@@ -136,7 +143,10 @@ AliRDHFCuts::~AliRDHFCuts() {
     fCutsRD=0;
   }
   if(fIsUpperCut) {delete [] fIsUpperCut; fIsUpperCut=0;}
-
+  if(fPidHF){ 
+    delete fPidHF;
+    fPidHF=0;
+  }
 }
 //---------------------------------------------------------------------------
 Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const {
@@ -167,12 +177,11 @@ Bool_t AliRDHFCuts::AreDaughtersSelected(AliAODRecoDecayHF *d) const {
   if(!fTrackCuts) return kTRUE;
 
   Int_t ndaughters = d->GetNDaughters();
-  AliESDtrack* esdTrack=0;
   AliAODVertex *vAOD = d->GetPrimaryVtx();
   Double_t pos[3],cov[6];
   vAOD->GetXYZ(pos);
   vAOD->GetCovarianceMatrix(cov);
-  const AliESDVertex *vESD = new AliESDVertex(pos,cov,100.,100);
+  const AliESDVertex vESD(pos,cov,100.,100);
 
   Bool_t retval=kTRUE;
 
@@ -181,19 +190,30 @@ Bool_t AliRDHFCuts::AreDaughtersSelected(AliAODRecoDecayHF *d) const {
     if(!dgTrack) retval = kFALSE;
     //printf("charge %d\n",dgTrack->Charge());
     if(dgTrack->Charge()==0) continue; // it's not a track, but a V0
-    // convert to ESD track here
-    esdTrack=new AliESDtrack(dgTrack);
-    // needed to calculate the impact parameters
-    esdTrack->RelateToVertex(vESD,0.,3.); 
-    if(!fTrackCuts->IsSelected(esdTrack)) retval = kFALSE;
-    delete esdTrack; esdTrack=0;
-  }
 
-  delete vESD; vESD=0;
+    if(!IsDaughterSelected(dgTrack,&vESD,fTrackCuts)) retval = kFALSE;
+  }
 
   return retval;
 }
 //---------------------------------------------------------------------------
+Bool_t AliRDHFCuts::IsDaughterSelected(AliAODTrack *track,const AliESDVertex *primary,AliESDtrackCuts *cuts) const {
+  //
+  // Convert to ESDtrack, relate to vertex and check cuts
+  //
+  if(!cuts) return kTRUE;
+
+  Bool_t retval=kTRUE;
+
+  // convert to ESD track here
+  AliESDtrack esdTrack(track);
+  // needed to calculate the impact parameters
+  esdTrack.RelateToVertex(primary,0.,3.); 
+  if(!cuts->IsSelected(&esdTrack)) retval = kFALSE;
+  return retval; 
+}
+//---------------------------------------------------------------------------
 void AliRDHFCuts::SetPtBins(Int_t nPtBinLimits,Float_t *ptBinLimits) {
   // Set the pt bins