New shortcut methods for setting range of primary vertex
[u/mrichter/AliRoot.git] / ANALYSIS / AliEventCut.h
1 #ifndef ALIEVENTCUT_H
2 #define ALIEVENTCUT_H
3 //________________________________
4 ///////////////////////////////////////////////////////////
5 //
6 // class AliEventCut
7 //
8 // Event cut. It has list of base event cuts. 
9 // Each of base event cut checks only one property.
10 // Logical base cuts also exists that point to other base cuts.
11 // Using them one can build complicated cut with binary tree structure
12 //
13 ///////////////////////////////////////////////////////////
14
15 #include <TObject.h>
16 #include <TObjArray.h>
17 #include "AliEventBaseCut.h"
18
19 class AliAOD;
20 enum AliEventBaseCut::EEventCutProperty;
21
22 class AliEventCut: public TObject
23 {
24   public: 
25     AliEventCut();
26     AliEventCut(const AliEventCut& in);
27     virtual ~AliEventCut();
28     
29     virtual Bool_t Rejected(AliAOD* aod) const;//returns kTRUE if rejected
30     void           AddBasePartCut(AliEventBaseCut* ebcut);
31
32     void           SetNChargedRange(Int_t min,Int_t max, Double_t etamin = -10.0,Double_t etamax = 10.0);
33     void           SetVertexXRange(Int_t min,Int_t max);
34     void           SetVertexYRange(Int_t min,Int_t max);
35     void           SetVertexZRange(Int_t min,Int_t max);
36     
37   protected:
38     AliEventBaseCut* FindCut(AliEventBaseCut::EEventCutProperty prop);
39     
40     TObjArray fBaseCuts;
41   private:
42     ClassDef(AliEventCut,1)
43 };
44
45 class AliEventEmptyCut: public TObject
46 {
47   public: 
48     AliEventEmptyCut(){}
49     virtual ~AliEventEmptyCut(){}
50     
51     Bool_t Rejected(AliAOD* /*aod*/) const {return kFALSE;}//always accept
52     
53   protected:
54   private:
55     ClassDef(AliEventEmptyCut,1)
56 };
57
58 #endif