Added background check with cluster-vs-tracklet cut in AliAnalysisUtils
authorekryshen <evgeny.kryshen@cern.ch>
Tue, 26 Aug 2014 13:19:36 +0000 (15:19 +0200)
committerekryshen <evgeny.kryshen@cern.ch>
Tue, 26 Aug 2014 13:19:36 +0000 (15:19 +0200)
ANALYSIS/AliAnalysisUtils.cxx
ANALYSIS/AliAnalysisUtils.h

index 225c2b0..71f57da 100644 (file)
@@ -8,6 +8,7 @@
 #include "AliVEvent.h"
 #include <TMatrixDSym.h>
 #include <TMath.h>
+#include "AliVMultiplicity.h"
 
 #include "AliAnalysisUtils.h"
 
@@ -30,7 +31,9 @@ AliAnalysisUtils::AliAnalysisUtils():TObject(),
   fnSigmaPlpZdistSPD(3.),
   fnSigmaPlpDiamXYSPD(2.),
   fnSigmaPlpDiamZSPD(5.),
-  fUseSPDCutInMultBins(kFALSE)
+  fUseSPDCutInMultBins(kFALSE),
+  fASPDCvsTCut(65.),
+  fBSPDCvsTCut(4.)
 {
   // Default contructor
 }
@@ -222,6 +225,17 @@ Bool_t AliAnalysisUtils::IsOutOfBunchPileUp(AliVEvent *event)
   return kFALSE;
 }
 
+
+//______________________________________________________________________
+Bool_t AliAnalysisUtils::IsSPDClusterVsTrackletBG(AliVEvent *event){
+  Int_t nClustersLayer0 = event->GetNumberOfITSClusters(0);
+  Int_t nClustersLayer1 = event->GetNumberOfITSClusters(1);
+  Int_t nTracklets      = event->GetMultiplicity()->GetNumberOfTracklets();
+  if (nClustersLayer0 + nClustersLayer1 > fASPDCvsTCut + nTracklets*fBSPDCvsTCut) return kTRUE;
+  return kFALSE;
+}
+
+
 //______________________________________________________________________
 Double_t AliAnalysisUtils::GetWDist(const AliVVertex* v0, const AliVVertex* v1)
 {
@@ -250,3 +264,4 @@ Double_t AliAnalysisUtils::GetWDist(const AliVVertex* v0, const AliVVertex* v1)
   return dist>0 ? TMath::Sqrt(dist) : -1; 
 
 }
+
index 8218dc7..89c1e98 100644 (file)
@@ -30,6 +30,7 @@ class AliAnalysisUtils : public TObject {
   Bool_t IsPileUpMV(AliVEvent *event); //MV pileup selection implemented here
   Bool_t IsPileUpSPD(AliVEvent *event); //this calls IsPileUpFromSPD
   Bool_t IsOutOfBunchPileUp(AliVEvent *event); //out-of-bunch pileup rejection using trigger information
+  Bool_t IsSPDClusterVsTrackletBG(AliVEvent *event); // background rejection with cluster-vs-tracklet cut
   
   Double_t GetWDist(const AliVVertex* v0, const AliVVertex* v1);
   
@@ -54,6 +55,9 @@ class AliAnalysisUtils : public TObject {
   void SetnSigmaPlpDiamZSPD(Float_t nSigmaPlpDiamZSPD) { fnSigmaPlpDiamZSPD = nSigmaPlpDiamZSPD;}
   void SetUseSPDCutInMultBins(Bool_t useSPDCutInMultBins) { fUseSPDCutInMultBins = useSPDCutInMultBins;}
   
+  // SPD cluster-vs-tracklet cut
+  void SetASPDCvsTCut(Float_t a) { fASPDCvsTCut = a; }
+  void SetBSPDCvsTCut(Float_t b) { fBSPDCvsTCut = b; }
   
  private:
   
@@ -79,7 +83,10 @@ class AliAnalysisUtils : public TObject {
   Float_t  fnSigmaPlpDiamZSPD;  //cut on nsigma diamond Z for SPD pileup
   Bool_t  fUseSPDCutInMultBins;  //use IsPileupFromSPDInMultBins instead of IsPileupFromSPD
   
-  ClassDef(AliAnalysisUtils,1) // base helper class
+  Float_t fASPDCvsTCut; // constant for the linear cut in SPD clusters vs tracklets
+  Float_t fBSPDCvsTCut; // slope for the linear cut in SPD  clusters vs tracklets
+
+  ClassDef(AliAnalysisUtils,2) // base helper class
 };
 #endif