]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/AliFlowTasks/AliFlowEventCuts.h
centrality fixes and ....
[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 #include "AliTriggerAnalysis.h"
18 #include "AliFlowTrackCuts.h"
19
20 class AliFlowEventCuts : public TNamed {
21
22  public:
23   enum refMultMethod { kTPConly, kSPDtracklets, kV0, kSPD1clusters };
24
25   AliFlowEventCuts();
26   AliFlowEventCuts(const char* name, const char* title = "AliFlowEventCuts");
27   AliFlowEventCuts(const AliFlowEventCuts& someCuts);
28   AliFlowEventCuts& operator=(const AliFlowEventCuts& someCuts);
29   virtual  ~AliFlowEventCuts();
30   
31   virtual Bool_t IsSelected(TObject* obj);
32
33   Bool_t PassesCuts(AliVEvent* event);
34   
35   static AliFlowEventCuts* StandardCuts();
36   
37   void SetNumberOfTracksMax(Int_t value) {fNumberOfTracksMax=value;fCutNumberOfTracks=kTRUE;}
38   void SetNumberOfTracksMin(Int_t value) {fNumberOfTracksMin=value;fCutNumberOfTracks=kTRUE;}
39   void SetNumberOfTracksRange(Int_t min, Int_t max) {fNumberOfTracksMin=min;fNumberOfTracksMax=max;fCutNumberOfTracks=kTRUE;}
40   void SetRefMultMax(Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
41   void SetRefMultMin(Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
42   void SetRefMultRange(Int_t min, Int_t max) {fRefMultMin=min;fRefMultMax=max;fCutRefMult=kTRUE;}
43   void SetPrimaryVertexXrange(Double_t min, Double_t max)
44        {fCutPrimaryVertexX=kTRUE; fPrimaryVertexXmin=min; fPrimaryVertexXmax=max;}
45   void SetPrimaryVertexYrange(Double_t min, Double_t max)
46        {fCutPrimaryVertexY=kTRUE; fPrimaryVertexYmin=min; fPrimaryVertexYmax=max;}
47   void SetPrimaryVertexZrange(Double_t min, Double_t max)
48        {fCutPrimaryVertexZ=kTRUE; fPrimaryVertexZmin=min; fPrimaryVertexZmax=max;}
49   void SetNContributorsRange(Int_t min, Int_t max=INT_MAX) 
50        {fCutNContributors=kTRUE; fNContributorsMin=min; fNContributorsMax=max;}
51   void SetMeanPtRange(Double_t min, Double_t max) {fCutMeanPt=kTRUE; fMeanPtMax=max; fMeanPtMin=min;}
52   void SetCutSPDvertexerAnomaly(Bool_t b=kTRUE) {fCutSPDvertexerAnomaly=b;}
53   void SetCutZDCtiming(Bool_t c=kTRUE) {fCutZDCtiming=c;}
54
55   Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
56   Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
57   Int_t GetRefMultMax() const {return fRefMultMax;}
58   Int_t GetRefMultMin() const {return fRefMultMin;}
59   void SetRefMultMethod(refMultMethod m) {fRefMultMethod=m;}
60   refMultMethod GetRefMultMethod() const {return fRefMultMethod;}
61   void SetRefMultCuts( AliFlowTrackCuts* cuts ) {fRefMultCuts=static_cast<AliFlowTrackCuts*>(cuts->Clone());}
62   void SetMeanPtCuts( AliFlowTrackCuts* cuts ) {fMeanPtCuts=static_cast<AliFlowTrackCuts*>(cuts->Clone());}
63   AliFlowTrackCuts* GetRefMultCuts() const {return fRefMultCuts;}
64
65   Int_t RefMult(AliVEvent* event);
66   //Int_t GetRefMult() {return fRefMult;}
67   Int_t GetReferenceMultiplicity(AliVEvent* event) {return RefMult(event);}
68   const char* CentrMethName(refMultMethod method) const;
69   void SetCentralityPercentileRange(Float_t min, Float_t max){ fCentralityPercentileMin=min;
70                                                                fCentralityPercentileMax=max;
71                                                                fCutCentralityPercentile=kTRUE; }
72   void SetCentralityPercentileMethod( refMultMethod m) {fCentralityPercentileMethod=m;}
73
74  private:
75   Bool_t fCutNumberOfTracks;//cut on # of tracks
76   Int_t fNumberOfTracksMax;  //limits
77   Int_t fNumberOfTracksMin;  //limits
78   Bool_t fCutRefMult; //cut on refmult
79   refMultMethod fRefMultMethod; //how do we calculate refmult?
80   Int_t fRefMultMax; //max refmult
81   Int_t fRefMultMin; //min refmult
82   AliFlowTrackCuts* fRefMultCuts; //cuts
83   AliFlowTrackCuts* fMeanPtCuts; //mean pt cuts
84   Bool_t fCutPrimaryVertexX; //cut on x of prim vtx
85   Double_t fPrimaryVertexXmax; //max x prim vtx
86   Double_t fPrimaryVertexXmin; //min x prim vtx
87   Bool_t fCutPrimaryVertexY; //cut on y of prim vtx
88   Double_t fPrimaryVertexYmax; //max y prim vtx
89   Double_t fPrimaryVertexYmin; //min y prim vtx
90   Bool_t fCutPrimaryVertexZ; //cut on z of prim vtx
91   Double_t fPrimaryVertexZmax; //max z prim vtx
92   Double_t fPrimaryVertexZmin; //min z prim vtx
93   Bool_t fCutNContributors; //cut on number of contributors
94   Int_t fNContributorsMax; //maximal number of contrib
95   Int_t fNContributorsMin; //minimal number of contrib
96   Bool_t fCutMeanPt; //cut on mean pt
97   Double_t fMeanPtMax; //max mean pt
98   Double_t fMeanPtMin; //min mean pt
99   Bool_t fCutSPDvertexerAnomaly; //cut on the spd vertexer anomaly
100   Bool_t fCutCentralityPercentile; //cut on centrality perc. from AliESDCentrality
101   refMultMethod fCentralityPercentileMethod; //where to get the percentile from
102   Float_t fCentralityPercentileMax; // max centr. perc
103   Float_t fCentralityPercentileMin; // min centr. perc
104   Bool_t fCutZDCtiming;   //cut on ZDC timing
105   AliTriggerAnalysis fTrigAna; //trigger analysis object
106
107   ClassDef(AliFlowEventCuts,2)
108 };
109
110 #endif
111
112