// 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 TH2F ;
-class TH1F ;
+class TH2F;
+class TH1F;
class TBits;
-class AliESDtrack ;
+class AliESDtrack;
+class AliESDtrackCuts;
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);
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
+ 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
+ AliESDtrackCuts *fTrackCuts; // use some functionality from this class
// QA histogram setters
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 fhNBinsRefitTPC; // number of bins+1: require refit TPC
- Int_t fhNBinsRefitITS; // number of bins+1: require refit 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
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 *fhBinLimRefitTPC; //[fhNBinsRefitTPC] bin limits: require refit TPC
- Double_t *fhBinLimRefitITS; //[fhNBinsRefitITS] bin limits: require refit 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,2);
+ ClassDef(AliCFTrackQualityCuts,4);
};
#endif