]>
Commit | Line | Data |
---|---|---|
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 | ||
20 | class AliESDtrack; | |
21 | class AliAODTrack; | |
5f17a44d | 22 | class AliESDtrackCuts; |
35e49ca5 | 23 | |
2a1c7696 | 24 | class AliRsnCutTrackQuality : public AliRsnCut { |
25 | public: | |
26 | ||
27 | AliRsnCutTrackQuality(const char *name = "AliRsncutTrackQuality"); | |
61f275d1 | 28 | AliRsnCutTrackQuality(const AliRsnCutTrackQuality ©); |
29 | AliRsnCutTrackQuality &operator=(const AliRsnCutTrackQuality ©); | |
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 | ||
213adb92 | 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;} | |
2a1c7696 | 43 | void SetDCAZPtFormula(const char *formula) {fDCAZptFormula = formula; fDCAZfixed = kFALSE;} |
44 | void SetDCAZmax(Double_t value) {fDCAZmax = value; fDCAZptFormula = ""; fDCAZfixed = kTRUE;} | |
45 | ||
46 | void SetSPDminNClusters(Int_t value) {fSPDminNClusters = value;} | |
47 | void SetITSminNClusters(Int_t value) {fITSminNClusters = value;} | |
48 | void SetITSmaxChi2(Double_t value) {fITSmaxChi2 = value;} | |
49 | ||
50 | void SetTPCminNClusters(Int_t value) {fTPCminNClusters = value;} | |
51 | void SetTPCmaxChi2(Double_t value) {fTPCmaxChi2 = value;} | |
5f17a44d | 52 | void SetMaxChi2TPCConstrainedGlobal(Float_t max) {fCutMaxChi2TPCConstrainedVsGlobal = max; } |
953fadb4 FB |
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;} | |
2a1c7696 | 56 | void SetRejectKinkDaughters(Bool_t yn = kTRUE) {fRejectKinkDaughters = yn;} |
61f275d1 | 57 | |
f34f960b | 58 | void SetAODTestFilterBit(Int_t value) {fAODTestFilterBit = value;} |
9c569d46 | 59 | void SetCheckOnlyFilterBit(Bool_t on=kTRUE) {fCheckOnlyFilterBit=on;} |
953fadb4 | 60 | |
e5ebff7e | 61 | void SetDefaults2010(); |
953fadb4 FB |
62 | void SetDefaults2011(Bool_t useTPCCrossedRows = kTRUE); |
63 | void SetDefaultsHighPt2011(Bool_t useTPCCrossedRows = kTRUE); | |
74d60285 | 64 | void SetESDtrackCuts(AliESDtrackCuts *esdTrackCuts) {fESDtrackCuts = esdTrackCuts;} |
65 | AliESDtrackCuts *GetESDtrackCuts() {return fESDtrackCuts;} | |
e1fec9d4 | 66 | Double_t GetPtRange(Bool_t max) {return fPt[max];} |
67 | Double_t GetEtaRange(Bool_t max) {return fEta[max];} | |
68 | ||
2a1c7696 | 69 | virtual Bool_t IsSelected(TObject *obj); |
70 | virtual void Print(const Option_t *option = "") const; | |
71 | ||
72 | protected: | |
73 | ||
f34f960b | 74 | Bool_t CheckESD(AliESDtrack *track); |
75 | Bool_t CheckAOD(AliAODTrack *track); | |
61f275d1 | 76 | const char *Binary(UInt_t number); |
2a1c7696 | 77 | |
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 | |
83 | ||
213adb92 | 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) | |
2a1c7696 | 88 | Double_t fDCARmax; // maximum value for transverse DCA |
213adb92 | 89 | Double_t fDCARmin; // minimum value for transverse DCA |
2a1c7696 | 90 | |
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 | |
94 | ||
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 | |
98 | ||
99 | Int_t fTPCminNClusters; // minimum number of required clusters in TPC | |
100 | Double_t fTPCmaxChi2; // maximum chi2 / number of clusters in TPC | |
5f17a44d | 101 | Float_t fCutMaxChi2TPCConstrainedVsGlobal; // max chi2 TPC track constrained with vtx vs. global track |
e1fec9d4 | 102 | |
953fadb4 | 103 | Bool_t fIsUseCrossedRowsCut; //enable cut on minimum number of TPC crossed rows |
e1fec9d4 | 104 | Float_t fTPCminNCrossedRows; // minimum number of TPC crossed rows |
105 | Float_t fTPCminCrossedRowsOverFindableCls; // minimum number of crossed rows/findable clusters | |
953fadb4 | 106 | Bool_t fIsUseLengthActiveVolumeTPCCut; //enable cut on minimum track lenght in TPC active volume |
e1fec9d4 | 107 | Float_t fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries) |
108 | ||
f34f960b | 109 | Int_t fAODTestFilterBit; // test filter bit for AOD tracks |
9c569d46 | 110 | Bool_t fCheckOnlyFilterBit; // check only the filter bit |
5f17a44d | 111 | AliESDtrackCuts *fESDtrackCuts; // pointer to AliESDtrackCuts object |
2a1c7696 | 112 | |
213adb92 | 113 | ClassDef(AliRsnCutTrackQuality, 4) |
35e49ca5 | 114 | }; |
35e49ca5 | 115 | #endif |