]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
AliESDtrackCuts used for single track selection
authordainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Dec 2008 10:51:12 +0000 (10:51 +0000)
committerdainese <dainese@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Dec 2008 10:51:12 +0000 (10:51 +0000)
PWG3/vertexingHF/AliAnalysisVertexingHF.cxx
PWG3/vertexingHF/AliAnalysisVertexingHF.h
PWG3/vertexingHF/ConfigVertexingHF.C

index c12b1b26a832964ac50d9c54618bcf648c8d9d46..184b5b925b3f357b5a38557e515c0a77fd05c4e3 100644 (file)
 #include "AliESDEvent.h"
 #include "AliESDVertex.h"
 #include "AliESDtrack.h"
+#include "AliESDtrackCuts.h"
 #include "AliAODEvent.h"
 #include "AliAODRecoDecay.h"
 #include "AliAODRecoDecayHF.h"
 #include "AliAODRecoDecayHF2Prong.h"
 #include "AliAODRecoDecayHF3Prong.h"
 #include "AliAODRecoDecayHF4Prong.h"
+#include "AliAnalysisFilter.h"
 #include "AliAnalysisVertexingHF.h"
 
 ClassImp(AliAnalysisVertexingHF)
@@ -58,11 +60,7 @@ fD0toKpi(kTRUE),
 fJPSItoEle(kTRUE),
 f3Prong(kTRUE),
 f4Prong(kTRUE),
-fITSrefit(kFALSE),
-fBothSPD(kTRUE),
-fMinITSCls(5),
-fMinPtCut(0.),
-fMind0rphiCut(0.)
+fTrackFilter(0x0)
 {
   // Default constructor
 
@@ -71,6 +69,7 @@ fMind0rphiCut(0.)
   SetDplusCuts();
   SetDsCuts();
   SetLcCuts();
+
 }
 //--------------------------------------------------------------------------
 AliAnalysisVertexingHF::AliAnalysisVertexingHF(const AliAnalysisVertexingHF &source) : 
@@ -86,11 +85,7 @@ fD0toKpi(source.fD0toKpi),
 fJPSItoEle(source.fJPSItoEle),
 f3Prong(source.f3Prong),
 f4Prong(source.f4Prong),
-fITSrefit(source.fITSrefit),
-fBothSPD(source.fBothSPD),
-fMinITSCls(source.fMinITSCls),
-fMinPtCut(source.fMinPtCut),
-fMind0rphiCut(source.fMind0rphiCut)
+fTrackFilter(source.fTrackFilter)
 {
   //
   // Copy constructor
@@ -118,11 +113,7 @@ AliAnalysisVertexingHF &AliAnalysisVertexingHF::operator=(const AliAnalysisVerte
   fJPSItoEle = source.fJPSItoEle;
   f3Prong = source.f3Prong;
   f4Prong = source.f4Prong;
-  fITSrefit = source.fITSrefit;
-  fBothSPD = source.fBothSPD;
-  fMinITSCls = source.fMinITSCls;
-  fMinPtCut = source.fMinPtCut;
-  fMind0rphiCut = source.fMind0rphiCut;
+  fTrackFilter = source.fTrackFilter;
 
   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];
@@ -136,6 +127,7 @@ AliAnalysisVertexingHF &AliAnalysisVertexingHF::operator=(const AliAnalysisVerte
 AliAnalysisVertexingHF::~AliAnalysisVertexingHF() {
   // Destructor
   if(fV1) { delete fV1; fV1=0; }
+  if(fTrackFilter) { delete fTrackFilter; fTrackFilter=0; }
 }
 //----------------------------------------------------------------------------
 void AliAnalysisVertexingHF::FindCandidates(AliVEvent *event,
@@ -863,12 +855,8 @@ AliAODVertex* AliAnalysisVertexingHF::OwnPrimaryVertex(TObjArray *trkArray,
 void AliAnalysisVertexingHF::PrintStatus() const {
   // Print parameters being used
 
-  printf("Preselections:\n");
-  printf("    fITSrefit   = %d\n",(Int_t)fITSrefit);
-  printf("    fBothSPD   = %d\n",(Int_t)fBothSPD);
-  printf("    fMinITSCls   = %d\n",fMinITSCls);
-  printf("    fMinPtCut   = %f GeV/c\n",fMinPtCut);
-  printf("    fMind0rphiCut   = %f cm\n",fMind0rphiCut);
+  //printf("Preselections:\n");
+  //   fTrackFilter->Dump();
   if(fSecVtxWithKF) {
     printf("Secondary vertex with Kalman filter package (AliKFParticle)\n");
   } else {
@@ -1102,7 +1090,6 @@ void AliAnalysisVertexingHF::SelectTracksAndCopyVertex(AliVEvent *event,
  
   // transfer ITS tracks from event to arrays
   for(Int_t i=0; i<entries; i++) {
-
     AliVTrack *track = (AliVTrack*)event->GetTrack(i);
 
     if(fInputAOD) {
@@ -1113,26 +1100,6 @@ void AliAnalysisVertexingHF::SelectTracksAndCopyVertex(AliVEvent *event,
       fAODMap[(Int_t)aodt->GetID()] = i;
     }
 
-    // require refit in ITS 
-    UInt_t status = track->GetStatus();
-    if(fITSrefit && !(status&AliESDtrack::kITSrefit)) {
-      AliDebug(2,Form("track %d is not kITSrefit",i));
-      continue;
-    }
-
-    Int_t ncls0=0;
-    for(Int_t l=0;l<6;l++) if(TESTBIT(track->GetITSClusterMap(),l)) ncls0++;
-
-    // require minimum # of ITS points    
-    if(ncls0<fMinITSCls)  {
-      AliDebug(2,Form("track %d has %d ITS cls",i,ncls0));
-      continue;
-    }
-    // require points on the 2 pixel layers
-    if(fBothSPD) 
-      if(!TESTBIT(track->GetITSClusterMap(),0) || 
-        !TESTBIT(track->GetITSClusterMap(),1)) continue;
-
     AliESDtrack *esdt = 0;
     if(!fInputAOD) {
       esdt = (AliESDtrack*)track;
@@ -1141,7 +1108,7 @@ void AliAnalysisVertexingHF::SelectTracksAndCopyVertex(AliVEvent *event,
     }
 
     // single track selection
-    if(!SingleTrkCuts(*esdt)) {
+    if(!SingleTrkCuts(esdt)) {
       if(fInputAOD) delete esdt; 
       esdt = NULL;
       continue;
@@ -1330,21 +1297,22 @@ void AliAnalysisVertexingHF::SetLcCuts(const Double_t cuts[12])
   return;
 }
 //-----------------------------------------------------------------------------
-Bool_t AliAnalysisVertexingHF::SingleTrkCuts(AliESDtracktrk) const 
+Bool_t AliAnalysisVertexingHF::SingleTrkCuts(AliESDtrack *trk) const 
 {
   // Check if track passes some kinematical cuts  
 
-  if(trk.Pt() < fMinPtCut) {
-    //printf("pt %f\n",1./trk.GetParameter()[4]);
-    return kFALSE;
-  }
-  Double_t d0z0[2],covd0z0[3];
-  trk.PropagateToDCA(fV1,fBzkG,kVeryBig,d0z0,covd0z0);
-  if(TMath::Abs(d0z0[0]) < fMind0rphiCut) {
-    //printf("d0rphi %f\n",TMath::Abs(d0z0[0]));
-    return kFALSE;
+  // this is needed to store the impact parameters
+  trk->RelateToVertex(fV1,fBzkG,kVeryBig);
+
+  UInt_t selectInfo = 0;
+  //
+  // Track selection
+  if(fTrackFilter) {
+    selectInfo = fTrackFilter->IsSelected(trk);
   }
 
+  if (!selectInfo) return kFALSE;
+
   return kTRUE;
 }
 //-----------------------------------------------------------------------------
index aff2e8391e6187b4caacf39337b9249f8f3f3014..96616f0ebc0a8dd144ad0eb577b1d3b6213c48a4 100644 (file)
@@ -17,6 +17,7 @@
 #include "AliAODRecoDecayHF2Prong.h"
 #include "AliAODRecoDecayHF3Prong.h"
 #include "AliAODRecoDecayHF4Prong.h"
+#include "AliAnalysisFilter.h"
 
 class AliESDtrack;
 class AliVEvent;
@@ -56,13 +57,7 @@ class AliAnalysisVertexingHF : public TNamed {
     { fRecoPrimVtxSkippingTrks=kTRUE; fRmTrksFromPrimVtx=kFALSE;}
   void SetRmTrksFromPrimVtx() 
     {fRmTrksFromPrimVtx=kTRUE; fRecoPrimVtxSkippingTrks=kFALSE; }
-  void SetITSrefitRequired() { fITSrefit=kTRUE; }
-  void SetITSrefitNotRequired() { fITSrefit=kFALSE; }
-  void SetBothSPDRequired() { fBothSPD=kTRUE; }
-  void SetBothSPDNotRequired() {fBothSPD=kFALSE;}
-  void SetMinITSCls(Int_t n=6) { fMinITSCls=n; }
-  void SetMinPtCut(Double_t pt=0.) { fMinPtCut=pt; }
-  void SetMind0Cut(Double_t d0=0.) { fMind0rphiCut=d0; } 
+  void SetTrackFilter(AliAnalysisFilter* trackF) { fTrackFilter = trackF; }
   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.,
@@ -120,11 +115,7 @@ class AliAnalysisVertexingHF : public TNamed {
   Bool_t f4Prong;
 
   // single-track cuts
-  Bool_t   fITSrefit;   // require kITSrefit
-  Bool_t   fBothSPD;    // require both SPD layers
-  Int_t    fMinITSCls;  // minimum number of ITS clusters
-  Double_t fMinPtCut;   // minimum track pt [GeV/c]
-  Double_t fMind0rphiCut;  // minimum track |rphi impact parameter| [cm] 
+  AliAnalysisFilter *fTrackFilter; //  Track Filter
   // candidates cuts
   Double_t fD0toKpiCuts[9]; // cuts on D0->Kpi candidates
                   // (to be passed to AliAODRecoDecayHF2Prong::SelectD0())
@@ -220,9 +211,9 @@ class AliAnalysisVertexingHF : public TNamed {
                    TObjArray &trksP,Int_t &nTrksP,
                    TObjArray &trksN,Int_t &nTrksN);
   void   SetPrimaryVertex(AliESDVertex *v1) { fV1 = v1; }
-  Bool_t SingleTrkCuts(AliESDtrack &trk) const;
+  Bool_t SingleTrkCuts(AliESDtrack *trk) const;
   //
-  ClassDef(AliAnalysisVertexingHF,4)  // Reconstruction of HF decay candidates
+  ClassDef(AliAnalysisVertexingHF,5)  // Reconstruction of HF decay candidates
 };
 
 
index ea6f2a97cb692f5cb2f74b4b70622c67bee07aa3..30e2f4b00dcd623bfafa69751d077c3cf1f600ed 100644 (file)
@@ -11,11 +11,17 @@ AliAnalysisVertexingHF* ConfigVertexingHF() {
   //--- secondary vertex with KF?
   //vHF->SetSecVtxWithKF();
   //--- set cuts for single-track selection
-  vHF->SetITSrefitRequired();
-  vHF->SetBothSPDRequired();
-  vHF->SetMinITSCls(5);
-  vHF->SetMinPtCut(0.3);
-  vHF->SetMind0Cut(0.);
+  
+  AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("AliESDtrackCuts","default");
+  esdTrackCuts->SetRequireITSRefit(kTRUE);
+  esdTrackCuts->SetMinNClustersITS(5);
+  esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+                                       AliESDtrackCuts::kBoth);
+  esdTrackCuts->SetMinDCAToVertexXY(0.);
+  esdTrackCuts->SetPtRange(0.3,1.e10);
+  AliAnalysisFilter *trkFilter = new AliAnalysisFilter("trackFilter");
+  trkFilter->AddCuts(esdTrackCuts);
+  vHF->SetTrackFilter(trkFilter);
   //--- set cuts for candidates selection
   vHF->SetD0toKpiCuts(0.7,999999.,1.1,0.,0.,999999.,999999.,999999.,0.);
   vHF->SetBtoJPSICuts(0.350);