2 // Class AliRsnCutRange
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.
8 // authors: Martin Vala (martin.vala@cern.ch)
9 // Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
12 #ifndef ALIRSNCUTTRACKQUALITY_H
13 #define ALIRSNCUTTRACKQUALITY_H
18 #include "AliRsnCut.h"
22 class AliESDtrackCuts;
24 class AliRsnCutTrackQuality : public AliRsnCut {
27 AliRsnCutTrackQuality(const char *name = "AliRsncutTrackQuality");
28 AliRsnCutTrackQuality(const AliRsnCutTrackQuality ©);
29 AliRsnCutTrackQuality &operator=(const AliRsnCutTrackQuality ©);
30 virtual ~AliRsnCutTrackQuality() { }
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);}
39 void SetDCARPtFormula(const char *formula) {fDCARptFormula = formula; fDCARmaxfixed = kFALSE;}
40 void SetDCARPtFormulaMin(const char *formula) {fDCARptFormulaMin = formula; fDCARminfixed = kFALSE;}
41 void SetDCARmax(Double_t value) {fDCARmax = value; fDCARptFormula = ""; fDCARmaxfixed = kTRUE;}
42 void SetDCARmin(Double_t value) {fDCARmin = value; fDCARptFormulaMin = ""; fDCARminfixed = kTRUE;}
43 void SetDCAZPtFormula(const char *formula) {fDCAZptFormula = formula; fDCAZfixed = kFALSE;}
44 void SetDCAZmax(Double_t value) {fDCAZmax = value; fDCAZptFormula = ""; fDCAZfixed = kTRUE;}
46 void SetSPDminNClusters(Int_t value) {fSPDminNClusters = value;}
47 void SetITSminNClusters(Int_t value) {fITSminNClusters = value;}
48 void SetITSmaxChi2(Double_t value) {fITSmaxChi2 = value;}
50 void SetTPCminNClusters(Int_t value) {fTPCminNClusters = value;}
51 void SetTPCmaxChi2(Double_t value) {fTPCmaxChi2 = value;}
52 void SetMaxChi2TPCConstrainedGlobal(Float_t max) {fCutMaxChi2TPCConstrainedVsGlobal = max; }
53 void SetMinNCrossedRowsTPC(Double_t min, Bool_t useTPCCrossedRows) {fTPCminNCrossedRows=min; fIsUseCrossedRowsCut=useTPCCrossedRows;}
54 void SetMinNCrossedRowsOverFindableClsTPC(Double_t min, Bool_t useTPCCrossedRows) {fTPCminCrossedRowsOverFindableCls=min; fIsUseCrossedRowsCut=useTPCCrossedRows;}
55 void SetMinLengthActiveVolumeTPC(Double_t min, Bool_t on = kFALSE) {fCutMinLengthActiveVolumeTPC=min; fIsUseLengthActiveVolumeTPCCut=on;}
56 void SetRejectKinkDaughters(Bool_t yn = kTRUE) {fRejectKinkDaughters = yn;}
58 void SetAODTestFilterBit(Int_t value) {fAODTestFilterBit = value;}
59 void SetCheckOnlyFilterBit(Bool_t on=kTRUE) {fCheckOnlyFilterBit=on;}
61 void SetDefaults2010();
62 void SetDefaults2011(Bool_t useTPCCrossedRows = kTRUE);
63 void SetDefaultsHighPt2011(Bool_t useTPCCrossedRows = kTRUE);
64 void SetESDtrackCuts(AliESDtrackCuts *esdTrackCuts) {fESDtrackCuts = esdTrackCuts;}
65 AliESDtrackCuts *GetESDtrackCuts() {return fESDtrackCuts;}
66 Double_t GetPtRange(Bool_t max) {return fPt[max];}
67 Double_t GetEtaRange(Bool_t max) {return fEta[max];}
69 virtual Bool_t IsSelected(TObject *obj);
70 virtual void Print(const Option_t *option = "") const;
74 Bool_t CheckESD(AliESDtrack *track);
75 Bool_t CheckAOD(AliAODTrack *track);
76 const char *Binary(UInt_t number);
78 ULong_t fFlagsOn; // status flags which must be ON (used AliESDtrack ones, connected with '|')
79 ULong_t fFlagsOff; // status flags which must be OFF (used AliESDtrack ones, connected with '|')
80 Double_t fPt[2]; // pt range
81 Double_t fEta[2]; // eta range
82 Bool_t fRejectKinkDaughters; // switch to kTRUE if daughters of kinks must be rejected
84 Bool_t fDCARmaxfixed; // flag to switch between fixed and pt-dependent DCA cut (maximum)
85 Bool_t fDCARminfixed; // flag to switch between fixed and pt-dependent DCA cut (minimum)
86 TString fDCARptFormula; // expression to compute transverse DCA sigma w.r. to pt (maximum)
87 TString fDCARptFormulaMin; // expression to compute transverse DCA sigma w.r. to pt (minimum)
88 Double_t fDCARmax; // maximum value for transverse DCA
89 Double_t fDCARmin; // minimum value for transverse DCA
91 Bool_t fDCAZfixed; // flag to switch between fixed and pt-dependent DCA cut
92 TString fDCAZptFormula; // expression to compute longitudinal DCA sigma w.r. to pt
93 Double_t fDCAZmax; // maximum value for longitudinal DCA
95 Int_t fSPDminNClusters; // minimum number of required clusters in SPD
96 Int_t fITSminNClusters; // minimum number of required clusters in ITS
97 Double_t fITSmaxChi2; // maximum chi2 / number of clusters in ITS
99 Int_t fTPCminNClusters; // minimum number of required clusters in TPC
100 Double_t fTPCmaxChi2; // maximum chi2 / number of clusters in TPC
101 Float_t fCutMaxChi2TPCConstrainedVsGlobal; // max chi2 TPC track constrained with vtx vs. global track
103 Bool_t fIsUseCrossedRowsCut; //enable cut on minimum number of TPC crossed rows
104 Float_t fTPCminNCrossedRows; // minimum number of TPC crossed rows
105 Float_t fTPCminCrossedRowsOverFindableCls; // minimum number of crossed rows/findable clusters
106 Bool_t fIsUseLengthActiveVolumeTPCCut; //enable cut on minimum track lenght in TPC active volume
107 Float_t fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries)
109 Int_t fAODTestFilterBit; // test filter bit for AOD tracks
110 Bool_t fCheckOnlyFilterBit; // check only the filter bit
111 AliESDtrackCuts *fESDtrackCuts; // pointer to AliESDtrackCuts object
113 ClassDef(AliRsnCutTrackQuality, 4)