]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/FLOW/Tasks/AliFlowEventCuts.h
from naghmeh: adding AOD outlier cut for 2010 and 2011 data to flow event cuts
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / 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 AliMCEvent;
18 class TBrowser;
19 #include "TList.h"
20 #include "TH1.h"
21 #include "AliTriggerAnalysis.h"
22 #include "AliFlowTrackCuts.h"
23
24 class AliFlowEventCuts : public TNamed {
25
26  public:
27   enum refMultMethod { kTPConly, kSPDtracklets, kV0, kSPD1clusters };
28
29   AliFlowEventCuts();
30   AliFlowEventCuts(const char* name, const char* title = "AliFlowEventCuts");
31   AliFlowEventCuts(const AliFlowEventCuts& someCuts);
32   AliFlowEventCuts& operator=(const AliFlowEventCuts& someCuts);
33   virtual  ~AliFlowEventCuts();
34    
35   virtual Bool_t IsSelected(TObject* obj, TObject *objmc);
36
37   Bool_t PassesCuts(AliVEvent* event, AliMCEvent *mcevent);
38   
39   static AliFlowEventCuts* StandardCuts();
40   
41   void SetNumberOfTracksMax(Int_t value) {fNumberOfTracksMax=value;fCutNumberOfTracks=kTRUE;}
42   void SetNumberOfTracksMin(Int_t value) {fNumberOfTracksMin=value;fCutNumberOfTracks=kTRUE;}
43   void SetNumberOfTracksRange(Int_t min, Int_t max) {fNumberOfTracksMin=min;fNumberOfTracksMax=max;fCutNumberOfTracks=kTRUE;}
44   void SetRefMultMax(Int_t value) {fRefMultMax=value;fCutRefMult=kTRUE;}
45   void SetRefMultMin(Int_t value) {fRefMultMin=value;fCutRefMult=kTRUE;}
46   void SetRefMultRange(Int_t min, Int_t max) {fRefMultMin=min;fRefMultMax=max;fCutRefMult=kTRUE;}
47   void SetImpactParameterMax(Double_t value) {fImpactParameterMax=value;fCutImpactParameter=kTRUE;}
48   void SetImpactParameterMin(Double_t value) {fImpactParameterMin=value;fCutImpactParameter=kTRUE;}
49   void SetImpactParameterRange(Double_t min, Double_t max) {fImpactParameterMin=min;fImpactParameterMax=max;fCutImpactParameter=kTRUE;}
50   void SetPrimaryVertexXrange(Double_t min, Double_t max)
51        {fCutPrimaryVertexX=kTRUE; fPrimaryVertexXmin=min; fPrimaryVertexXmax=max;}
52   void SetPrimaryVertexYrange(Double_t min, Double_t max)
53        {fCutPrimaryVertexY=kTRUE; fPrimaryVertexYmin=min; fPrimaryVertexYmax=max;}
54   void SetPrimaryVertexZrange(Double_t min, Double_t max)
55        {fCutPrimaryVertexZ=kTRUE; fPrimaryVertexZmin=min; fPrimaryVertexZmax=max;}
56   void SetNContributorsRange(Int_t min, Int_t max=INT_MAX) 
57        {fCutNContributors=kTRUE; fNContributorsMin=min; fNContributorsMax=max;}
58   void SetMeanPtRange(Double_t min, Double_t max) {fCutMeanPt=kTRUE; fMeanPtMax=max; fMeanPtMin=min;}
59   void SetCutSPDvertexerAnomaly(Bool_t b=kTRUE) {fCutSPDvertexerAnomaly=b;}
60   void SetCutZDCtiming(Bool_t c=kTRUE) {fCutZDCtiming=c;}
61   void SetCutSPDTRKVtxZ(Bool_t b=kTRUE) {fCutSPDTRKVtxZ=b;}
62   void SetCutTPCmultiplicityOutliers(Bool_t b=kTRUE) {fCutTPCmultiplicityOutliers=b;}  
63
64   Int_t GetNumberOfTracksMax() const {return fNumberOfTracksMax;}
65   Int_t GetNumberOfTracksMin() const {return fNumberOfTracksMin;}
66   Int_t GetRefMultMax() const {return fRefMultMax;}
67   Int_t GetRefMultMin() const {return fRefMultMin;}
68   void SetRefMultMethod(refMultMethod m) {fRefMultMethod=m;}
69   void SetRefMultMethod(AliESDtrackCuts::MultEstTrackType m) { fRefMultMethodAliESDtrackCuts=m; 
70                                                                fUseAliESDtrackCutsRefMult=kTRUE; }
71   refMultMethod GetRefMultMethod() const {return fRefMultMethod;}
72   void SetRefMultCuts( AliFlowTrackCuts* cuts ) {fRefMultCuts=static_cast<AliFlowTrackCuts*>(cuts->Clone());}
73   void SetMeanPtCuts( AliFlowTrackCuts* cuts ) {fMeanPtCuts=static_cast<AliFlowTrackCuts*>(cuts->Clone());}
74   AliFlowTrackCuts* GetRefMultCuts() const {return fRefMultCuts;}
75   void DefineHistograms();
76   void SetQA(Bool_t b=kTRUE) {if (b) DefineHistograms();}
77   TList* GetQA() const {return fQA;}
78   TH1* QAbefore(Int_t i) {return static_cast<TH1*>(static_cast<TList*>(fQA->At(0))->At(i));}
79   TH1* QAafter(Int_t i) {return static_cast<TH1*>(static_cast<TList*>(fQA->At(1))->At(i));}
80
81   Int_t RefMult(AliVEvent* event, AliMCEvent *mcEvent = 0x0);
82   //Int_t GetRefMult() {return fRefMult;}
83   Int_t GetReferenceMultiplicity(AliVEvent* event, AliMCEvent *mcEvent) {return RefMult(event,mcEvent);}
84   const char* CentrMethName(refMultMethod method) const;
85   void SetCentralityPercentileRange(Float_t min, Float_t max){ fCentralityPercentileMin=min;
86                                                                fCentralityPercentileMax=max;
87                                                                fCutCentralityPercentile=kTRUE; }
88   void SetCentralityPercentileMethod( refMultMethod m) {fCentralityPercentileMethod=m;}
89   void SetUseCentralityUnchecked(Bool_t b=kTRUE) {fUseCentralityUnchecked=b;}
90   void SetUsedDataset(Bool_t b=kTRUE) {fData2011=b;}
91   void Browse(TBrowser* b);
92   Long64_t Merge(TCollection* list);  
93   TH2F *GetCorrelationTPCvsGlobalMultiplicity() {return fhistTPCvsGlobalMult;}  
94
95
96  private:
97   TList* fQA; //QA
98   Bool_t fCutNumberOfTracks;//cut on # of tracks
99   Int_t fNumberOfTracksMax;  //limits
100   Int_t fNumberOfTracksMin;  //limits
101   Bool_t fCutRefMult; //cut on refmult
102   refMultMethod fRefMultMethod; //how do we calculate refmult?
103   Bool_t fUseAliESDtrackCutsRefMult; //use AliESDtrackCuts for refmult calculation
104   AliESDtrackCuts::MultEstTrackType fRefMultMethodAliESDtrackCuts;
105   Int_t fRefMultMax; //max refmult
106   Int_t fRefMultMin; //min refmult
107   AliFlowTrackCuts* fRefMultCuts; //cuts
108   AliFlowTrackCuts* fMeanPtCuts; //mean pt cuts
109   AliFlowTrackCuts* fStandardTPCcuts; //Standard TPC cuts
110   AliFlowTrackCuts* fStandardGlobalCuts; //StandardGlobalCuts
111   Bool_t fCutPrimaryVertexX; //cut on x of prim vtx
112   Double_t fPrimaryVertexXmax; //max x prim vtx
113   Double_t fPrimaryVertexXmin; //min x prim vtx
114   Bool_t fCutPrimaryVertexY; //cut on y of prim vtx
115   Double_t fPrimaryVertexYmax; //max y prim vtx
116   Double_t fPrimaryVertexYmin; //min y prim vtx
117   Bool_t fCutPrimaryVertexZ; //cut on z of prim vtx
118   Double_t fPrimaryVertexZmax; //max z prim vtx
119   Double_t fPrimaryVertexZmin; //min z prim vtx
120   Bool_t fCutNContributors; //cut on number of contributors
121   Int_t fNContributorsMax; //maximal number of contrib
122   Int_t fNContributorsMin; //minimal number of contrib
123   Bool_t fCutMeanPt; //cut on mean pt
124   Double_t fMeanPtMax; //max mean pt
125   Double_t fMeanPtMin; //min mean pt
126   Bool_t fCutSPDvertexerAnomaly; //cut on the spd vertexer anomaly
127   Bool_t fCutSPDTRKVtxZ; //require compatibility between SPDvertexz TRKvertexz
128   Bool_t fCutTPCmultiplicityOutliers; //cut TPC multiplicity outliers
129   Bool_t fCutCentralityPercentile; //cut on centrality perc. from AliESDCentrality
130   Bool_t fUseCentralityUnchecked; //use the unchecked method
131   refMultMethod fCentralityPercentileMethod; //where to get the percentile from
132   Float_t fCentralityPercentileMax; // max centr. perc
133   Float_t fCentralityPercentileMin; // min centr. perc
134   Bool_t fCutZDCtiming;   //cut on ZDC timing
135   AliTriggerAnalysis fTrigAna; //trigger analysis object
136   Bool_t fCutImpactParameter; //cut on impact parameter (MC header)
137   Double_t fImpactParameterMin; // min impact parameter
138   Double_t fImpactParameterMax; // max impact parameter
139   TH2F *fhistTPCvsGlobalMult; //correlation between TPCMult and GlobalMult
140   Bool_t fData2011; //2011 data is used
141
142   ClassDef(AliFlowEventCuts,4)
143 };
144
145 #endif
146
147