Splitted the PID cuts into three classes for ITS, TPC and TOF, and added the possibil...
[u/mrichter/AliRoot.git] / PWG2 / RESONANCES / AliRsnCut.h
1 //
2 // *** Class AliRsnCut ***
3 //
4 // Cut base class: all other cuts inherit from it.
5 // The 'core' of the class is the method "IsSelected()" which
6 // must be overloaded by any specific cut implementation.
7 //
8 // This class provides some default instruments to check values
9 // agains a reference or an allowed range, in order to permit
10 // a unique way to execute such kind of checks.
11 //
12 // authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
13 //          Martin Vala (martin.vala@cern.ch)
14 //
15
16 #ifndef ALIRSNCUT_H
17 #define ALIRSNCUT_H
18
19 #include "AliRsnTarget.h"
20
21 class AliRsnEvent;
22
23 class AliRsnCut : public AliRsnTarget
24 {
25   public:
26
27     AliRsnCut(const char *name = "dummy", RSNTARGET target = AliRsnTarget::kTargetTypes);
28     AliRsnCut(const char *name, RSNTARGET target, Int_t    imin, Int_t    imax=0 , Double_t dmin=0., Double_t dmax=0.);
29     AliRsnCut(const char *name, RSNTARGET target, Double_t dmin, Double_t dmax=0., Int_t    imin=0 , Int_t    imax=0 );
30     AliRsnCut(const AliRsnCut& copy);
31     AliRsnCut& operator=(const AliRsnCut& copy);
32     virtual ~AliRsnCut() { };
33     
34     Int_t            GetMinI()                  {return fMinI;}
35     Int_t            GetMaxI()                  {return fMaxI;}
36     Double_t         GetMinD()                  {return fMinD;}
37     Double_t         GetMaxD()                  {return fMaxD;}
38     Int_t            GetCutValueI()             {return fCutValueI;}
39     Double_t         GetCutValueD()             {return fCutValueD;}
40     Bool_t           GetCutResult()             {return fCutResult;}
41     
42     void             SetRangeI(Int_t    min, Int_t    max) {fMinI = min; fMaxI = max;}
43     void             SetRangeD(Double_t min, Double_t max) {fMinD = min; fMaxD = max;}
44
45     void             SetValueI(Int_t value)    {fMinI = value;}
46     void             SetValueD(Double_t value) {fMinD = value;}
47
48     Bool_t           OkValueI();
49     Bool_t           OkRangeI();
50     Bool_t           OkValueD();
51     Bool_t           OkRangeD();
52     
53     virtual Bool_t   IsSelected(TObject *object);
54     virtual void     Print(Option_t *opt = "") const;
55
56   protected:
57
58     Int_t        fMinI;       //  lower edge of INT range or ref. value for INT CUT
59     Int_t        fMaxI;       //  upper edge of INT range (not used for value cuts)
60     Double_t     fMinD;       //  lower edge of DOUBLE range or ref. value for DOUBLE CUT
61     Double_t     fMaxD;       //  upper edge of DOUBLE range (not used for value cuts)
62
63     Int_t        fCutValueI;  //  cut value INT
64     Double_t     fCutValueD;  //  cut value DOUBLE
65     
66     Bool_t       fCutResult;  //  tells if the cut is passed or not
67
68     ClassDef(AliRsnCut, 1)
69 };
70
71 #endif