]>
Commit | Line | Data |
---|---|---|
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 | 16 | class AliVEvent; |
4aae2a93 | 17 | class AliMCEvent; |
499fe731 | 18 | class 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 | 25 | class 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 |