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