]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFTrackQualityCuts.h
Fix
[u/mrichter/AliRoot.git] / CORRFW / AliCFTrackQualityCuts.h
index 99f364b94ea6b561bb0dec3e52a7f98686d07977..05e9ec629ec4e3d37d54bdef0ee29de408b9d1f1 100644 (file)
 // ESD and AOD data.
 // It mainly consists of a IsSelected function that returns a boolean.
 // This function checks whether the considered track passes a set of cuts:
-// - number of clusters in the TPC
 // - number of clusters in the ITS
-// - chi2 / cluster in the TPC
+// - number of clusters in the TPC
+// - number of clusters in the TRD
+// - ratio of found / finable number of clusters in the TPC
+// - number of tracklets in the TRD
+// - number TRD tracklets used for pid
 // - chi2 / cluster in the ITS
-// - successful TPC refit
-// - successful ITS refit
+// - chi2 / cluster in the TPC
+// - chi2 / tracklet in the TRD
+// - number of clusters in the TPC used for dEdx calculation
 // - covariance matrix diagonal elements
+// - track status (cf AliESDtrack.h)
 //
 // The cut values for these cuts are set with the corresponding set functions.
 // All cut classes provided by the correction framework are supposed to be
 
 #include "AliCFCutBase.h"
 
-class TH2;
+class TH2F;
+class TH1F;
 class TBits;
-class AliESDtrack ;
+class AliESDtrack;
+class AliESDtrackCuts;
 
 class AliCFTrackQualityCuts : public AliCFCutBase
 {
@@ -58,26 +65,28 @@ class AliCFTrackQualityCuts : public AliCFCutBase
   ~AliCFTrackQualityCuts();
   void Copy(TObject &c) const;
 
-  void GetBitMap(TObject* obj, TBits *bitmap) ;
   Bool_t IsSelected(TObject* obj);
-  void Init();
+  Bool_t IsSelected(TList* /*list*/) {return kTRUE;}
 
   // cut value setter
   void SetMinNClusterTPC(Int_t cluster=-1)             {fMinNClusterTPC = cluster;}
   void SetMinNClusterITS(Int_t cluster=-1)             {fMinNClusterITS = cluster;}
-  void SetMaxChi2PerClusterTPC(Double_t chi=1e99)      {fMaxChi2PerClusterTPC = chi;}
-  void SetMaxChi2PerClusterITS(Double_t chi=1e99)      {fMaxChi2PerClusterITS = chi;}
-  void SetRequireTPCRefit(Bool_t b=kFALSE)             {fRequireTPCRefit = b;}
-  void SetRequireITSRefit(Bool_t b=kFALSE)             {fRequireITSRefit = b;}
-  void SetMaxCovDiagonalElements(Float_t c1=1e99, Float_t c2=1e99, Float_t c3=1e99, Float_t c4=1e99, Float_t c5=1e99) 
+  void SetMinNClusterTRD(Int_t cluster=-1)             {fMinNClusterTRD = cluster;}
+  void SetMinFoundClusterTPC(Double_t fraction=-1)     {fMinFoundClusterTPC = fraction;}
+  void SetMinNTrackletTRD(Int_t tracklet=-1)           {fMinNTrackletTRD = tracklet;}
+  void SetMinNTrackletTRDpid(Int_t tracklet=-1)                {fMinNTrackletTRDpid = tracklet;}
+  void SetMaxChi2PerClusterTPC(Double_t chi=1.e+09)    {fMaxChi2PerClusterTPC = chi;}
+  void SetMaxChi2PerClusterITS(Double_t chi=1.e+09)    {fMaxChi2PerClusterITS = chi;}
+  void SetMaxChi2PerTrackletTRD(Double_t chi=1.e+09)   {fMaxChi2PerTrackletTRD = chi;}
+  void SetMinNdEdxClusterTPC(UShort_t cluster=0)       {fMinNdEdxClusterTPC = cluster;}
+  void SetMaxCovDiagonalElements(Float_t c1=1.e+09, Float_t c2=1.e+09, Float_t c3=1.e+09, Float_t c4=1.e+09, Float_t c5=1.e+09) 
 {fCovariance11Max=c1;fCovariance22Max=c2;fCovariance33Max=c3;fCovariance44Max=c4;fCovariance55Max=c5;}
+  void SetStatus(ULong_t status=0) {fStatus = status ;}
 
   // QA histograms
-  void FillHistogramsBeforeCuts(TObject* obj) {return FillHistograms(obj,kFALSE);}
-  void FillHistogramsAfterCuts(TObject* obj)  {return FillHistograms(obj,kTRUE);}
   void DrawHistograms(Bool_t drawLogScale=kTRUE);
   void SaveHistograms(const Char_t* dir = 0);
-  void AddQAHistograms(TList *qaList) const;
+  void AddQAHistograms(TList *qaList);
   // QA histogram setter
   // please use indices from the enumeration below
   void SetHistogramBins(Int_t index, Int_t nbins, Double_t *bins);
@@ -87,71 +96,90 @@ class AliCFTrackQualityCuts : public AliCFCutBase
   enum { 
     kCutClusterTPC=0,  // number of clusters in TPC
     kCutClusterITS,    // number of clusters in ITS
+    kCutClusterTRD,    // number of clusters in TRD
+    kCutMinFoundClusterTPC,    // ratio found / findable number of clusters in TPC
+    kCutTrackletTRD,   // number of tracklets in TRD
+    kCutTrackletTRDpid,        // tracklets for TRD pid
     kCutChi2TPC,       // chi2 per cluster in TPC
     kCutChi2ITS,       // chi2 per cluster in ITS
-    kCutRefitTPC,      // require TPC refit
-    kCutRefitITS,      // require ITS refit
+    kCutChi2TRD,       // chi2 per cluster in TRD
+    kCutdEdxClusterTPC,        // number of points used for dEdx
     kCutCovElement11,  // diagonal element 11 of covariance matrix
     kCutCovElement22,  // diagonal element 22 of covariance matrix
     kCutCovElement33,  // diagonal element 33 of covariance matrix
     kCutCovElement44,  // diagonal element 44 of covariance matrix
     kCutCovElement55,  // diagonal element 55 of covariance matrix
-    kNCuts=11,         // number of single selections
+    kCutStatus,         // track status
+    kNCuts,            // number of single selections
     kNStepQA=2,                // number of QA steps (before/after the cuts)
-    kNHist=11          // number of QA histograms
+    kNHist=15          // number of QA histograms
   };
 
  private:
-  TBits* SelectionBitMap(TObject* obj);
+  void SelectionBitMap(TObject* obj);
   void DefineHistograms();             // books histograms and TList
   void Initialise();                   // sets everything to 0
   void FillHistograms(TObject* obj, Bool_t b);
                                        // Fills histograms before and after cuts
-  Double_t fMinNClusterTPC;            // min number of clusters in TPC
-  Double_t fMinNClusterITS;            // min number of clusters in ITS
+  Int_t fMinNClusterTPC;               // min number of clusters in TPC
+  Int_t fMinNClusterITS;               // min number of clusters in ITS
+  Double_t fMinNClusterTRD;            // min number of clusters in TRD
+  Double_t fMinFoundClusterTPC;                // min ratio found / findable number of clusters in TPC
+  Double_t fMinNTrackletTRD;           // min number of tracklets in TRD
+  Double_t fMinNTrackletTRDpid;                // min number of tracklets for TRD pid
   Double_t fMaxChi2PerClusterTPC;      // max chi2 per clusters in TPC
   Double_t fMaxChi2PerClusterITS;      // max chi2 per clusters in ITS
-  Bool_t fRequireTPCRefit;             // require TPC refit
-  Bool_t fRequireITSRefit;             // require ITS refit
-
+  Double_t fMaxChi2PerTrackletTRD;     // max chi2 per clusters in TRD
+  UShort_t fMinNdEdxClusterTPC;                // number of points used for dEdx
   Double_t fCovariance11Max ;          // max covariance matrix element 11
   Double_t fCovariance22Max ;          // max covariance matrix element 22
   Double_t fCovariance33Max ;          // max covariance matrix element 33
   Double_t fCovariance44Max ;          // max covariance matrix element 44
   Double_t fCovariance55Max ;          // max covariance matrix element 55
 
-  TH1F* fhCutStatistics;              // Histogram: statistics of what cuts the tracks did not survive
-  TH2F* fhCutCorrelation;             // Histogram: 2d statistics plot
+  ULong_t fStatus;    // track status
+
+  TH1F* fhCutStatistics;               // Histogram: statistics of what cuts the tracks did not survive
+  TH2F* fhCutCorrelation;              // Histogram: 2d statistics plot
 
   TH1F* fhQA[kNHist][kNStepQA];                // QA Histograms
-  TBits *fBitmap ;                             // stores single selection decisions
+  TBits *fBitmap ;                     // stores single selection decisions
+  AliESDtrackCuts *fTrackCuts;         // use some functionality from this class
 
   // QA histogram setters
-  Int_t fhNBinsClusterTPC;             // number of bins: cluster TPC
-  Int_t fhNBinsClusterITS;             // number of bins: cluster ITS
-  Int_t fhNBinsChi2TPC;                        // number of bins: chi2 per cluster TPC
-  Int_t fhNBinsChi2ITS;                        // number of bins: chi2 per cluster ITS
-  Int_t fhNBinsRefitTPC;                       // number of bins: require refit TPC
-  Int_t fhNBinsRefitITS;                       // number of bins: require refit ITS  
-  Int_t fhNBinsCovariance11;           // number of bins: covariance matrix element 11
-  Int_t fhNBinsCovariance22;           // number of bins: covariance matrix element 22
-  Int_t fhNBinsCovariance33;           // number of bins: covariance matrix element 33
-  Int_t fhNBinsCovariance44;           // number of bins: covariance matrix element 44
-  Int_t fhNBinsCovariance55;           // number of bins: covariance matrix element 55
-  
-  Double_t *fhBinLimClusterTPC;        // bin limits: cluster TPC
-  Double_t *fhBinLimClusterITS;        // bin limits: cluster ITS
-  Double_t *fhBinLimChi2TPC;   // bin limits: chi2 per cluster TPC
-  Double_t *fhBinLimChi2ITS;   // bin limits: chi2 per cluster ITS
-  Double_t *fhBinLimRefitTPC;  // bin limits: require refit TPC
-  Double_t *fhBinLimRefitITS;  // bin limits: require refit ITS
-  Double_t *fhBinLimCovariance11;      // bin limits: covariance matrix element 11
-  Double_t *fhBinLimCovariance22;      // bin limits: covariance matrix element 22
-  Double_t *fhBinLimCovariance33;      // bin limits: covariance matrix element 33
-  Double_t *fhBinLimCovariance44;      // bin limits: covariance matrix element 44
-  Double_t *fhBinLimCovariance55;      // bin limits: covariance matrix element 55
-  
-  ClassDef(AliCFTrackQualityCuts,1);
+  Int_t fhNBinsClusterTPC;             // number of bins+1: cluster TPC
+  Int_t fhNBinsClusterITS;             // number of bins+1: cluster ITS
+  Int_t fhNBinsClusterTRD;             // number of bins+1: cluster TRD
+  Int_t fhNBinsFoundClusterTPC;                // number of bins+1: ratio found / findable number of clusters in TPC
+  Int_t fhNBinsTrackletTRD;            // number of bins+1: number of tracklets in TRD
+  Int_t fhNBinsTrackletTRDpid;         // number of bins+1: number of tracklets for TRD pid
+  Int_t fhNBinsChi2TPC;                        // number of bins+1: chi2 per cluster TPC
+  Int_t fhNBinsChi2ITS;                        // number of bins+1: chi2 per cluster ITS
+  Int_t fhNBinsChi2TRD;                        // number of bins+1: chi2 per cluster TRD
+  Int_t fhNBinsdEdxClusterTPC;         // number of bins+1: cluster TPC used for dEdx
+  Int_t fhNBinsCovariance11;           // number of bins+1: covariance matrix element 11
+  Int_t fhNBinsCovariance22;           // number of bins+1: covariance matrix element 22
+  Int_t fhNBinsCovariance33;           // number of bins+1: covariance matrix element 33
+  Int_t fhNBinsCovariance44;           // number of bins+1: covariance matrix element 44
+  Int_t fhNBinsCovariance55;           // number of bins+1: covariance matrix element 55
+
+  Double_t *fhBinLimClusterTPC;        //[fhNBinsClusterTPC] bin limits: cluster TPC
+  Double_t *fhBinLimClusterITS;        //[fhNBinsClusterITS] bin limits: cluster ITS
+  Double_t *fhBinLimClusterTRD;        //[fhNBinsClusterTRD] bin limits: cluster TRD
+  Double_t *fhBinLimFoundClusterTPC;//[fhNBinsFoundClusterTPC] bin limits: ratio found / findable number of clusters in TPC
+  Double_t *fhBinLimTrackletTRD;    //[fhNBinsTrackletTRD] bin limits: number of tracklets in TRD
+  Double_t *fhBinLimTrackletTRDpid; //[fhNBinsTrackletTRDpid] bin limits: number of tracklets for TRD pid
+  Double_t *fhBinLimChi2TPC;   //[fhNBinsChi2TPC] bin limits: chi2 per cluster TPC
+  Double_t *fhBinLimChi2ITS;   //[fhNBinsChi2ITS] bin limits: chi2 per cluster ITS
+  Double_t *fhBinLimChi2TRD;   //[fhNBinsChi2TRD] bin limits: chi2 per cluster TRD
+  Double_t *fhBinLimdEdxClusterTPC;    //[fhNBinsdEdxClusterTPC] bin limits: cluster TPC used for dEdx
+  Double_t *fhBinLimCovariance11;//[fhNBinsCovariance11] bin limits: covariance matrix element 11
+  Double_t *fhBinLimCovariance22;//[fhNBinsCovariance22] bin limits: covariance matrix element 22
+  Double_t *fhBinLimCovariance33;//[fhNBinsCovariance33] bin limits: covariance matrix element 33
+  Double_t *fhBinLimCovariance44;//[fhNBinsCovariance44] bin limits: covariance matrix element 44
+  Double_t *fhBinLimCovariance55;//[fhNBinsCovariance55] bin limits: covariance matrix element 55
+
+  ClassDef(AliCFTrackQualityCuts,4);
 };
 
 #endif