]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.h
d1258cb5f07a7784fb78613762cddfc90e6d62ef
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowTasks / AliFlowEventCuts.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. */
2 /* See cxx source for full Copyright notice */
3 /* $Id$ */
4
5 // AliFlowEventCuts:
6 // An event cut class
7 // origin: Mikolaj Krzewicki (mikolaj.krzewicki@cern.ch)
8
9 #ifndef ALIFLOWEVENTCUTS_H
10 #define ALIFLOWEVENTCUTS_H
11
12 #include <float.h>
13 #include <limits.h>
14 #include "TNamed.h"
15
16 class AliVEvent;
17 class AliFlowTrackCuts;
18
19 class AliFlowEventCuts : public TNamed {
20
21  public:
22   enum refMultMethod { kTPConly, kSPDtracklets };
23
24   AliFlowEventCuts();
25   AliFlowEventCuts(const char* name, const char* title = "AliFlowEventCuts");
26   AliFlowEventCuts(const AliFlowEventCuts& someCuts);
27   AliFlowEventCuts& operator=(const AliFlowEventCuts& someCuts);
28   virtual  ~AliFlowEventCuts() {}
29   
30   virtual Bool_t IsSelected(const TObject* obj);
31
32   Bool_t PassesCuts(const AliVEvent* event);
33   
34   static AliFlowEventCuts* StandardCuts();
35   
36   void SetNumberOfTracksMax(Int_t value) {fNumberOfTracksMax=value;fCutNumberOfTracks=kTRUE;}
37   void SetNumberOfTracksMin(Int_t value) {fNumberOfTracksMin=value;fCutNumberOfTracks=kTRUE;}
38   void SetNumberOfTracksRange(Int_t min, Int_t max) {fNumberOfTracksMin=min;fNumberOfTracksMax=max;fCutNumberOfTracks=kTRUE;}
39   void SetRefMultMax(Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
40   void SetRefMultMin(Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
41   void SetRefMultRange(Int_t min, Int_t max) {fRefMultMin=min;fRefMultMax=max;fCutRefMult=kTRUE;}
42   void SetPrimaryVertexXrange(Double_t min, Double_t max)
43        {fCutPrimaryVertexX=kTRUE; fPrimaryVertexXmin=min; fPrimaryVertexXmax=max;}
44   void SetPrimaryVertexYrange(Double_t min, Double_t max)
45        {fCutPrimaryVertexY=kTRUE; fPrimaryVertexYmin=min; fPrimaryVertexYmax=max;}
46   void SetPrimaryVertexZrange(Double_t min, Double_t max)
47        {fCutPrimaryVertexZ=kTRUE; fPrimaryVertexZmin=min; fPrimaryVertexZmax=max;}
48   void SetNContributorsRange(Int_t min, Int_t max=INT_MAX) 
49        {fCutNContributors=kTRUE; fNContributorsMin=min; fNContributorsMax=max;}
50
51   Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
52   Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
53   Int_t GetRefMultMax() const {return fRefMultMax;}
54   Int_t GetRefMultMin() const {return fRefMultMin;}
55   void SetRefMultMethod(refMultMethod m) {fRefMultMethod=m;}
56   refMultMethod GetRefMultMethod() const {return fRefMultMethod;}
57   void SetRefMultCuts( AliFlowTrackCuts* cuts ) {fRefMultCuts=cuts;}
58   AliFlowTrackCuts* GetRefMultCuts() const {return fRefMultCuts;}
59
60   Int_t RefMult(const AliVEvent* event);
61   //Int_t GetRefMult() {return fRefMult;}
62   Int_t GetReferenceMultiplicity(const AliVEvent* event) {return RefMult(event);}
63
64  private:
65   Bool_t fCutNumberOfTracks;//cut on # of tracks
66   Int_t fNumberOfTracksMax;  //limits
67   Int_t fNumberOfTracksMin;  //limits
68   Bool_t fCutRefMult; //cut on refmult
69   refMultMethod fRefMultMethod; //how do we calculate refmult?
70   Int_t fRefMultMax; //max refmult
71   Int_t fRefMultMin; //min refmult
72   AliFlowTrackCuts* fRefMultCuts; //cuts
73   Bool_t fCutPrimaryVertexX; //cut on x of prim vtx
74   Double_t fPrimaryVertexXmax; //max x prim vtx
75   Double_t fPrimaryVertexXmin; //min x prim vtx
76   Bool_t fCutPrimaryVertexY; //cut on y of prim vtx
77   Double_t fPrimaryVertexYmax; //max y prim vtx
78   Double_t fPrimaryVertexYmin; //min y prim vtx
79   Bool_t fCutPrimaryVertexZ; //cut on z of prim vtx
80   Double_t fPrimaryVertexZmax; //max z prim vtx
81   Double_t fPrimaryVertexZmin; //min z prim vtx
82   Bool_t fCutNContributors; //cut on number of contributors
83   Int_t fNContributorsMax; //maximal number of contrib
84   Int_t fNContributorsMin; //minimal number of contrib
85
86
87   ClassDef(AliFlowEventCuts,2)
88 };
89
90 #endif
91
92