]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/RESONANCES/AliRsnCutTrackQuality.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / RESONANCES / AliRsnCutTrackQuality.h
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;
22 class AliESDtrackCuts;
23
24 class AliRsnCutTrackQuality : public AliRsnCut {
25 public:
26
27    AliRsnCutTrackQuality(const char *name = "AliRsncutTrackQuality");
28    AliRsnCutTrackQuality(const AliRsnCutTrackQuality &copy);
29    AliRsnCutTrackQuality &operator=(const AliRsnCutTrackQuality &copy);
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);
37    void      SetEtaRange(Double_t a, Double_t b);
38
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;}
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;}
52    void      SetMaxChi2TPCConstrainedGlobal(Float_t max) {fCutMaxChi2TPCConstrainedVsGlobal = max; }
53    void      SetTrackMaxChi2(Double_t value)           {fTrackMaxChi2 = value;}
54    void      SetMinNCrossedRowsTPC(Double_t min, Bool_t useTPCCrossedRows) {fTPCminNCrossedRows=min; fIsUseCrossedRowsCut=useTPCCrossedRows;}
55    void      SetMinNCrossedRowsOverFindableClsTPC(Double_t min, Bool_t useTPCCrossedRows) {fTPCminCrossedRowsOverFindableCls=min; fIsUseCrossedRowsCut=useTPCCrossedRows;}
56    void      SetMinLengthActiveVolumeTPC(Double_t min, Bool_t on = kFALSE) {fCutMinLengthActiveVolumeTPC=min; fIsUseLengthActiveVolumeTPCCut=on;}
57    void      SetRejectKinkDaughters(Bool_t yn = kTRUE) {fRejectKinkDaughters = yn;}
58
59    void      SetAODTestFilterBit(Int_t value)          {fAODTestFilterBit = value;}
60    void      SetCheckOnlyFilterBit(Bool_t on=kTRUE)    {fCheckOnlyFilterBit=on;}
61  
62    void      SetDefaults2010(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
63    void      SetDefaults2011(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
64    void      SetDefaultsHighPt2011(Bool_t useTPCCrossedRows = kTRUE, Bool_t useDefaultKinematicCuts=kTRUE);
65    void      SetESDtrackCuts(AliESDtrackCuts *esdTrackCuts) {fESDtrackCuts = esdTrackCuts;}
66    AliESDtrackCuts  *GetESDtrackCuts() {return fESDtrackCuts;}
67    Double_t   GetPtRange(Bool_t max) {return fPt[max];}
68    Double_t   GetEtaRange(Bool_t max) {return fEta[max];}
69    
70    virtual Bool_t IsSelected(TObject *obj);
71    virtual void   Print(const Option_t *option = "") const;
72
73 protected:
74
75    Bool_t      CheckESD(AliESDtrack *track);
76    Bool_t      CheckAOD(AliAODTrack *track);
77    const char *Binary(UInt_t number);
78
79    ULong_t    fFlagsOn;                // status flags which must be ON (used AliESDtrack ones, connected with '|')
80    ULong_t    fFlagsOff;               // status flags which must be OFF (used AliESDtrack ones, connected with '|')
81    Double_t   fPt[2];                  // pt range
82    Double_t   fEta[2];                 // eta range
83    Bool_t     fRejectKinkDaughters;    // switch to kTRUE if daughters of kinks must be rejected
84
85    Bool_t     fDCARmaxfixed;           // flag to switch between fixed and pt-dependent DCA cut (maximum)
86    Bool_t     fDCARminfixed;           // flag to switch between fixed and pt-dependent DCA cut (minimum)
87    TString    fDCARptFormula;          // expression to compute transverse DCA sigma w.r. to pt (maximum)
88    TString    fDCARptFormulaMin;       // expression to compute transverse DCA sigma w.r. to pt (minimum)
89    Double_t   fDCARmax;                // maximum value for transverse DCA
90    Double_t   fDCARmin;                // minimum value for transverse DCA
91
92    Bool_t     fDCAZfixed;              // flag to switch between fixed and pt-dependent DCA cut
93    TString    fDCAZptFormula;          // expression to compute longitudinal DCA sigma w.r. to pt
94    Double_t   fDCAZmax;                // maximum value for longitudinal DCA
95
96    Int_t      fSPDminNClusters;        // minimum number of required clusters in SPD
97    Int_t      fITSminNClusters;        // minimum number of required clusters in ITS
98    Double_t   fITSmaxChi2;             // maximum chi2 / number of clusters in ITS
99
100    Int_t      fTPCminNClusters;        // minimum number of required clusters in TPC
101    Double_t   fTPCmaxChi2;             // maximum chi2 / number of clusters in TPC
102    Float_t    fCutMaxChi2TPCConstrainedVsGlobal;  // max chi2 TPC track constrained with vtx vs. global track
103    
104    Double_t   fTrackMaxChi2;           // maximum track chi2/NDF
105    
106    Bool_t     fIsUseCrossedRowsCut;     //enable cut on minimum number of TPC crossed rows
107    Float_t    fTPCminNCrossedRows;     // minimum number of TPC crossed rows
108    Float_t    fTPCminCrossedRowsOverFindableCls;     // minimum number of crossed rows/findable clusters
109    Bool_t     fIsUseLengthActiveVolumeTPCCut;     //enable cut on minimum track lenght in TPC active volume
110    Float_t    fCutMinLengthActiveVolumeTPC; // mininum length (in cm) over which the track is sampled in the active volume of the TPC (outside boundaries)
111
112    Int_t      fAODTestFilterBit;       // test filter bit for AOD tracks
113    Bool_t     fCheckOnlyFilterBit;     // check only the filter bit
114    AliESDtrackCuts *fESDtrackCuts;     // pointer to AliESDtrackCuts object
115
116    ClassDef(AliRsnCutTrackQuality, 5)
117 };
118 #endif