]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGLF/RESONANCES/AliRsnCutTrackQuality.h
Added TPC crossed rows customizable cuts and values; added TOF deltas values
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutTrackQuality.h
CommitLineData
35e49ca5 1//
2// Class AliRsnCutRange
3//
4// General implementation of cuts which check a value inside a range.
5// This range can be defined by two integers or two doubles.
6// A user-friendly enumeration allows to define what is checked.
7//
8// authors: Martin Vala (martin.vala@cern.ch)
9// Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
10//
11
12#ifndef ALIRSNCUTTRACKQUALITY_H
13#define ALIRSNCUTTRACKQUALITY_H
14
15#include <TMath.h>
16#include <TString.h>
17
18#include "AliRsnCut.h"
19
20class AliESDtrack;
21class AliAODTrack;
5f17a44d 22class AliESDtrackCuts;
35e49ca5 23
2a1c7696 24class AliRsnCutTrackQuality : public AliRsnCut {
25public:
26
27 AliRsnCutTrackQuality(const char *name = "AliRsncutTrackQuality");
61f275d1 28 AliRsnCutTrackQuality(const AliRsnCutTrackQuality &copy);
29 AliRsnCutTrackQuality &operator=(const AliRsnCutTrackQuality &copy);
2a1c7696 30 virtual ~AliRsnCutTrackQuality() { }
31
32 void DisableAll();
33
34 void AddStatusFlag(ULong_t f, Bool_t on) {if (on) fFlagsOn = fFlagsOn | f; else fFlagsOff = fFlagsOff | f;}
35 void SetStatusFlags(ULong_t f, Bool_t on) {if (on) fFlagsOn = f; else fFlagsOff = f;}
36 void SetPtRange(Double_t a, Double_t b) {fPt[0] = TMath::Min(a, b); fPt[1] = TMath::Max(a, b);}
37 void SetEtaRange(Double_t a, Double_t b) {fEta[0] = TMath::Min(a, b); fEta[1] = TMath::Max(a, b);}
38
39 void SetDCARPtFormula(const char *formula) {fDCARptFormula = formula; fDCARfixed = kFALSE;}
40 void SetDCARmax(Double_t value) {fDCARmax = value; fDCARptFormula = ""; fDCARfixed = kTRUE;}
41 void SetDCAZPtFormula(const char *formula) {fDCAZptFormula = formula; fDCAZfixed = kFALSE;}
42 void SetDCAZmax(Double_t value) {fDCAZmax = value; fDCAZptFormula = ""; fDCAZfixed = kTRUE;}
43
44 void SetSPDminNClusters(Int_t value) {fSPDminNClusters = value;}
45 void SetITSminNClusters(Int_t value) {fITSminNClusters = value;}
46 void SetITSmaxChi2(Double_t value) {fITSmaxChi2 = value;}
47
48 void SetTPCminNClusters(Int_t value) {fTPCminNClusters = value;}
49 void SetTPCmaxChi2(Double_t value) {fTPCmaxChi2 = value;}
5f17a44d 50 void SetMaxChi2TPCConstrainedGlobal(Float_t max) {fCutMaxChi2TPCConstrainedVsGlobal = max; }
e1fec9d4 51 void SetMinNCrossedRowsTPC(Double_t min) {fTPCminNCrossedRows=min;}
52 void SetMinNCrossedRowsOverFindableClsTPC(Double_t min) {fTPCminCrossedRowsOverFindableCls=min;}
53 void SetMinLengthActiveVolumeTPC(Double_t min) {fCutMinLengthActiveVolumeTPC=min;}
2a1c7696 54 void SetRejectKinkDaughters(Bool_t yn = kTRUE) {fRejectKinkDaughters = yn;}
61f275d1 55
f34f960b 56 void SetAODTestFilterBit(Int_t value) {fAODTestFilterBit = value;}
9c569d46 57 void SetCheckOnlyFilterBit(Bool_t on=kTRUE) {fCheckOnlyFilterBit=on;}
61f275d1 58
e5ebff7e 59 void SetDefaults2010();
b307bb43 60 void SetDefaults2011();
74d60285 61 void SetESDtrackCuts(AliESDtrackCuts *esdTrackCuts) {fESDtrackCuts = esdTrackCuts;}
62 AliESDtrackCuts *GetESDtrackCuts() {return fESDtrackCuts;}
e1fec9d4 63 Double_t GetPtRange(Bool_t max) {return fPt[max];}
64 Double_t GetEtaRange(Bool_t max) {return fEta[max];}
65
2a1c7696 66 virtual Bool_t IsSelected(TObject *obj);
67 virtual void Print(const Option_t *option = "") const;
68
69protected:
70
f34f960b 71 Bool_t CheckESD(AliESDtrack *track);
72 Bool_t CheckAOD(AliAODTrack *track);
61f275d1 73 const char *Binary(UInt_t number);
2a1c7696 74
75 ULong_t fFlagsOn; // status flags which must be ON (used AliESDtrack ones, connected with '|')
76 ULong_t fFlagsOff; // status flags which must be OFF (used AliESDtrack ones, connected with '|')
77 Double_t fPt[2]; // pt range
78 Double_t fEta[2]; // eta range
79 Bool_t fRejectKinkDaughters; // switch to kTRUE if daughters of kinks must be rejected
80
81 Bool_t fDCARfixed; // flag to switch between fixed and pt-dependent DCA cut
82 TString fDCARptFormula; // expression to compute transverse DCA sigma w.r. to pt
83 Double_t fDCARmax; // maximum value for transverse DCA
84
85 Bool_t fDCAZfixed; // flag to switch between fixed and pt-dependent DCA cut
86 TString fDCAZptFormula; // expression to compute longitudinal DCA sigma w.r. to pt
87 Double_t fDCAZmax; // maximum value for longitudinal DCA
88
89 Int_t fSPDminNClusters; // minimum number of required clusters in SPD
90 Int_t fITSminNClusters; // minimum number of required clusters in ITS
91 Double_t fITSmaxChi2; // maximum chi2 / number of clusters in ITS
92
93 Int_t fTPCminNClusters; // minimum number of required clusters in TPC
94 Double_t fTPCmaxChi2; // maximum chi2 / number of clusters in TPC
5f17a44d 95 Float_t fCutMaxChi2TPCConstrainedVsGlobal; // max chi2 TPC track constrained with vtx vs. global track
e1fec9d4 96
97 Float_t fTPCminNCrossedRows; // minimum number of TPC crossed rows
98 Float_t fTPCminCrossedRowsOverFindableCls; // minimum number of crossed rows/findable clusters
99 Float_t fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries)
100
f34f960b 101 Int_t fAODTestFilterBit; // test filter bit for AOD tracks
9c569d46 102 Bool_t fCheckOnlyFilterBit; // check only the filter bit
5f17a44d 103 AliESDtrackCuts *fESDtrackCuts; // pointer to AliESDtrackCuts object
2a1c7696 104
e1fec9d4 105 ClassDef(AliRsnCutTrackQuality, 3)
35e49ca5 106};
35e49ca5 107#endif