Coding conventions
[u/mrichter/AliRoot.git] / PWG0 / esdTrackCuts / AliESDtrackCuts.h
CommitLineData
5c834ad5 1#ifndef ALIESDTRACKCUTS_H
2#define ALIESDTRACKCUTS_H
3
4//****************************************************************
5//
6// Class for handling of ESD track cuts
7//
8// TODO:
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?
16//
49dc84d9 17//
18// NOTE:
19// -
20//
21
5c834ad5 22
5c834ad5 23#include "TObject.h"
aea6943b 24#include "TH1.h"
5c834ad5 25#include "TH2.h"
aea6943b 26class TTree;
5c834ad5 27
28#include "AliESD.h"
29#include "AliESDtrack.h"
30#include "AliLog.h"
31
32class AliESDtrackCuts : public TObject
33{
34protected:
35
36 //######################################################
37 // esd track quality cuts
38 static const Int_t fNCuts = 21;
39 Char_t* fCutNames[21];
40
41 Int_t fCut_MinNClusterTPC; // min number of tpc clusters
42 Int_t fCut_MinNClusterITS; // min number of its clusters
43
44 Float_t fCut_MaxChi2PerClusterTPC; // max tpc fit chi2 per tpc cluster
45 Float_t fCut_MaxChi2PerClusterITS; // max its fit chi2 per its cluster
46
47 Float_t fCut_MaxC11; // max resolutions of covariance matrix diag. elements
48 Float_t fCut_MaxC22;
49 Float_t fCut_MaxC33;
50 Float_t fCut_MaxC44;
51 Float_t fCut_MaxC55;
52
53 Bool_t fCut_AcceptKinkDaughters; // accepting kink daughters?
54 Bool_t fCut_RequireTPCRefit; // require TPC refit
55 Bool_t fCut_RequireITSRefit; // require ITS refit
56
57 // track to vertex cut
58 Float_t fCut_NsigmaToVertex; // max number of estimated sigma from track-to-vertex
59 Bool_t fCut_SigmaToVertexRequired; // cut track if sigma from track-to-vertex could not be calculated
60
61 // esd kinematics cuts
62 Float_t fPMin, fPMax; // definition of the range of the P
63 Float_t fPtMin, fPtMax; // definition of the range of the Pt
64 Float_t fPxMin, fPxMax; // definition of the range of the Px
65 Float_t fPyMin, fPyMax; // definition of the range of the Py
66 Float_t fPzMin, fPzMax; // definition of the range of the Pz
67 Float_t fEtaMin, fEtaMax; // definition of the range of the eta
68 Float_t fRapMin, fRapMax; // definition of the range of the y
69
70 //######################################################
71 // array of accepted ESD tracks
72
73 TObjArray* fAcceptedTracks; // List of accepted esd tracks after cuts
74
75
76 //######################################################
77 // diagnostics histograms
78 Bool_t fHistogramsOn;
79
aea6943b 80 TH1F *fhNClustersITS[2];
81 TH1F *fhNClustersTPC[2];
5c834ad5 82
aea6943b 83 TH1F* fhChi2PerClusterITS[2];
84 TH1F* fhChi2PerClusterTPC[2];
5c834ad5 85
aea6943b 86 TH1F* fhC11[2];
87 TH1F* fhC22[2];
88 TH1F* fhC33[2];
89 TH1F* fhC44[2];
90 TH1F* fhC55[2];
5c834ad5 91
aea6943b 92 TH1F* fhDXY[2];
93 TH1F* fhDZ[2];
94 TH2F* fhDXYvsDZ[2];
5c834ad5 95
aea6943b 96 TH1F* fhDXYNormalized[2];
97 TH1F* fhDZNormalized[2];
98 TH2F* fhDXYvsDZNormalized[2];
5c834ad5 99
aea6943b 100 TH1F* fhCutStatistics;
101 TH2F* fhCutCorrelation;
5c834ad5 102
103
104 // dummy array
105 Int_t fIdxInt[200];
106
107public:
108 AliESDtrackCuts();
109
110 Bool_t AcceptTrack(AliESDtrack* esdTrack);
49dc84d9 111
5c834ad5 112 TObjArray* GetAcceptedTracks(AliESD* esd);
113
114 //######################################################
115 // track quality cut setters
116 void SetMinNClustersTPC(Int_t min=-1) {fCut_MinNClusterTPC=min;}
117 void SetMinNClustersITS(Int_t min=-1) {fCut_MinNClusterITS=min;}
118 void SetMaxChi2PerClusterTPC(Float_t max=1e99) {fCut_MaxChi2PerClusterTPC=max;}
119 void SetMaxChi2PerClusterITS(Float_t max=1e99) {fCut_MaxChi2PerClusterITS=max;}
120 void SetRequireTPCRefit(Bool_t b=kFALSE) {fCut_RequireTPCRefit=b;}
121 void SetRequireITSRefit(Bool_t b=kFALSE) {fCut_RequireITSRefit=b;}
122 void SetAcceptKingDaughters(Bool_t b=kFALSE) {fCut_AcceptKinkDaughters=b;}
123 void SetMaxCovDiagonalElements(Float_t c1=1e99, Float_t c2=1e99, Float_t c3=1e99, Float_t c4=1e99, Float_t c5=1e99)
124 {fCut_MaxC11=c1; fCut_MaxC22=c2; fCut_MaxC33=c3; fCut_MaxC44=c4; fCut_MaxC55=c5;}
125
126 // track to vertex cut setters
127 void SetMinNsigmaToVertex(Float_t sigma=1e99) {fCut_NsigmaToVertex = sigma;}
128 void SetRequireSigmaToVertex(Bool_t b=kTRUE ) {fCut_SigmaToVertexRequired = b;}
129
130 // track kinmatic cut setters
131 void SetPRange(Float_t r1=0, Float_t r2=1e99) {fPMin=r1; fPMax=r2;}
132 void SetPtRange(Float_t r1=0, Float_t r2=1e99) {fPtMin=r1; fPtMax=r2;}
133 void SetPxRange(Float_t r1=-1e99, Float_t r2=1e99) {fPxMin=r1; fPxMax=r2;}
134 void SetPyRange(Float_t r1=-1e99, Float_t r2=1e99) {fPyMin=r1; fPyMax=r2;}
135 void SetPzRange(Float_t r1=-1e99, Float_t r2=1e99) {fPzMin=r1; fPzMax=r2;}
136 void SetEtaRange(Float_t r1=-1e99, Float_t r2=1e99) {fEtaMin=r1; fEtaMax=r2;}
137 void SetRapRange(Float_t r1=-1e99, Float_t r2=1e99) {fRapMin=r1; fRapMax=r2;}
138
139 //######################################################
140 void SetHistogramsOn(Bool_t b=kFALSE) {fHistogramsOn = b;}
141 void DefineHistograms(Int_t color=1);
142 void SaveHistograms(Char_t* dir="track_selection");
143
49dc84d9 144 virtual void Print(const Option_t* = "") const;
5c834ad5 145
146 // void SaveQualityCuts(Char_t* file)
147 // void LoadQualityCuts(Char_t* file)
148
149 ClassDef(AliESDtrackCuts,0)
150};
151
152
153#endif