1 #ifndef ALIESDTRACKCUTS_H
2 #define ALIESDTRACKCUTS_H
4 //****************************************************************
6 // Class for handling of ESD track cuts
9 // - add functionality to save and load cuts
10 // - fix the n sigma cut so it is really a n sigma cut
11 // - add different ways to make track to vertex cut
12 // - add histograms for kinematic cut variables?
13 // - upper and lower cuts for all (non-boolean) cuts
14 // - update print method
15 // - is there a smarter way to manage the cuts?
28 #include "AliESDtrack.h"
31 class AliESDtrackCuts : public TObject
35 //######################################################
36 // esd track quality cuts
37 static const Int_t fNCuts = 21;
38 Char_t* fCutNames[21];
40 Int_t fCut_MinNClusterTPC; // min number of tpc clusters
41 Int_t fCut_MinNClusterITS; // min number of its clusters
43 Float_t fCut_MaxChi2PerClusterTPC; // max tpc fit chi2 per tpc cluster
44 Float_t fCut_MaxChi2PerClusterITS; // max its fit chi2 per its cluster
46 Float_t fCut_MaxC11; // max resolutions of covariance matrix diag. elements
52 Bool_t fCut_AcceptKinkDaughters; // accepting kink daughters?
53 Bool_t fCut_RequireTPCRefit; // require TPC refit
54 Bool_t fCut_RequireITSRefit; // require ITS refit
56 // track to vertex cut
57 Float_t fCut_NsigmaToVertex; // max number of estimated sigma from track-to-vertex
58 Bool_t fCut_SigmaToVertexRequired; // cut track if sigma from track-to-vertex could not be calculated
60 // esd kinematics cuts
61 Float_t fPMin, fPMax; // definition of the range of the P
62 Float_t fPtMin, fPtMax; // definition of the range of the Pt
63 Float_t fPxMin, fPxMax; // definition of the range of the Px
64 Float_t fPyMin, fPyMax; // definition of the range of the Py
65 Float_t fPzMin, fPzMax; // definition of the range of the Pz
66 Float_t fEtaMin, fEtaMax; // definition of the range of the eta
67 Float_t fRapMin, fRapMax; // definition of the range of the y
69 //######################################################
70 // array of accepted ESD tracks
72 TObjArray* fAcceptedTracks; // List of accepted esd tracks after cuts
75 //######################################################
76 // diagnostics histograms
82 TH1F** hChi2PerClusterITS;
83 TH1F** hChi2PerClusterTPC;
95 TH1F** hDXYNormalized;
97 TH2F** hDXYvsDZNormalized;
100 TH2F* hCutCorrelation;
109 Bool_t AcceptTrack(AliESDtrack* esdTrack);
111 TObjArray* GetAcceptedTracks(AliESD* esd);
113 //######################################################
114 // track quality cut setters
115 void SetMinNClustersTPC(Int_t min=-1) {fCut_MinNClusterTPC=min;}
116 void SetMinNClustersITS(Int_t min=-1) {fCut_MinNClusterITS=min;}
117 void SetMaxChi2PerClusterTPC(Float_t max=1e99) {fCut_MaxChi2PerClusterTPC=max;}
118 void SetMaxChi2PerClusterITS(Float_t max=1e99) {fCut_MaxChi2PerClusterITS=max;}
119 void SetRequireTPCRefit(Bool_t b=kFALSE) {fCut_RequireTPCRefit=b;}
120 void SetRequireITSRefit(Bool_t b=kFALSE) {fCut_RequireITSRefit=b;}
121 void SetAcceptKingDaughters(Bool_t b=kFALSE) {fCut_AcceptKinkDaughters=b;}
122 void SetMaxCovDiagonalElements(Float_t c1=1e99, Float_t c2=1e99, Float_t c3=1e99, Float_t c4=1e99, Float_t c5=1e99)
123 {fCut_MaxC11=c1; fCut_MaxC22=c2; fCut_MaxC33=c3; fCut_MaxC44=c4; fCut_MaxC55=c5;}
125 // track to vertex cut setters
126 void SetMinNsigmaToVertex(Float_t sigma=1e99) {fCut_NsigmaToVertex = sigma;}
127 void SetRequireSigmaToVertex(Bool_t b=kTRUE ) {fCut_SigmaToVertexRequired = b;}
129 // track kinmatic cut setters
130 void SetPRange(Float_t r1=0, Float_t r2=1e99) {fPMin=r1; fPMax=r2;}
131 void SetPtRange(Float_t r1=0, Float_t r2=1e99) {fPtMin=r1; fPtMax=r2;}
132 void SetPxRange(Float_t r1=-1e99, Float_t r2=1e99) {fPxMin=r1; fPxMax=r2;}
133 void SetPyRange(Float_t r1=-1e99, Float_t r2=1e99) {fPyMin=r1; fPyMax=r2;}
134 void SetPzRange(Float_t r1=-1e99, Float_t r2=1e99) {fPzMin=r1; fPzMax=r2;}
135 void SetEtaRange(Float_t r1=-1e99, Float_t r2=1e99) {fEtaMin=r1; fEtaMax=r2;}
136 void SetRapRange(Float_t r1=-1e99, Float_t r2=1e99) {fRapMin=r1; fRapMax=r2;}
138 //######################################################
139 void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;}
140 void DefineHistograms(Int_t color=1);
141 void SaveHistograms(Char_t* dir="track_selection");
143 virtual void Print(const Option_t* = "") const;
145 // void SaveQualityCuts(Char_t* file)
146 // void LoadQualityCuts(Char_t* file)
148 ClassDef(AliESDtrackCuts,0)