First CVS version of the flow analysis code (Emanuele)
[u/mrichter/AliRoot.git] / PWG2 / FLOW / AliFlowSelection.h
CommitLineData
30a892e3 1//////////////////////////////////////////////////////////////////////
2//
3// $Id$
4//
5// Author: Emanuele Simili
6//
7//////////////////////////////////////////////////////////////////////
8//
9// Description: class for selections in flow study, adapted from STAR
10// Original Authors: Raimond Snellings & Art Poskanzer
11//
12//////////////////////////////////////////////////////////////////////
13
14#ifndef AliFlowSelection_h
15#define AliFlowSelection_h
16
17#include <iostream>
18#include <stdlib.h>
19#include <string.h>
20
21#include "TObject.h"
22#include "TVector.h"
23#include "TMath.h"
24#include <TROOT.h>
25
26#include "AliFlowSelection.h"
27#include "AliFlowEvent.h"
28#include "AliFlowTrack.h"
29#include "AliFlowV0.h"
30#include "AliFlowConstants.h"
31
32class AliFlowTrack ;
33class AliFlowEvent ;
34class Flow ;
35
36class AliFlowSelection : public TObject {
37
38 public:
39
40 AliFlowSelection();
41 virtual ~AliFlowSelection();
42
43 // Selection Methods for ...
44 Bool_t Select(AliFlowEvent*); // (dummy)
45 Bool_t Select(AliFlowTrack*); // selection for R.P.[nSel][nHar]
46 Bool_t Select(AliFlowV0*); // (dummy)
47 Bool_t SelectPart(AliFlowTrack*); // track selection for Correlation Analysis
48 Bool_t SelectPart(AliFlowV0*); // v0 selection for Correlation Analysis (mass window + sidebands)
49 Bool_t SelectV0Part(AliFlowV0*); // v0 mass window for Correlation Analysis
50 Bool_t SelectV0Side(AliFlowV0*); // v0 sidebands for Correlation Analysis
51 Bool_t SelectV0sxSide(AliFlowV0*); // selects v0s in the left hand sideband
52 Bool_t SelectV0dxSide(AliFlowV0*); // selects v0s in the right hand sideband
53
54 // Gets (Harmonic, Selection, Sub-event)
55 Int_t Sel() const; // Returns the Harmonic
56 Int_t Har() const; // Returns the Selection
57 Int_t Sub() const; // Returns the Sub-Event
58
59 // Gets (Event cuts)
60 Int_t CentralityCut() const ; // Returns Event Centrality class
61 Int_t RunIdCut() const ; // Returns Run number
62
63 // Gets (R.P. cuts) and CutList
64 Float_t EtaCutLo(Int_t harN, Int_t selN) const; // Returns lower eta cut for R.P.[harN][selN] calculation (absolute values)
65 Float_t EtaCutHi(Int_t harN, Int_t selN) const; // Returns upper eta cut for R.P.[harN][selN] calculation (absolute values)
66 Float_t PtCutLo(Int_t harN, Int_t selN) const; // Returns lower pT cut for R.P.[harN][selN] calculation
67 Float_t PtCutHi(Int_t harN, Int_t selN) const ; // Returns upper pT cut for R.P.[harN][selN] calculation
68 Float_t DcaGlobalCutLo() const; // Returns lower DCA cut for R.P. calculation
69 Float_t DcaGlobalCutHi() const; // Returns upper DCA cut for R.P. calculation
70 Char_t* Pid() const; // Returns particle specie used in R.P. calculation
71 Bool_t ConstrainCut() const; // Returns kTRUE/kFalse if the cut over un-constrainable tracks is enabled
72 Int_t NhitsCut(Int_t selN) const; // Returns the minimum number of TPC hits for R.P.[selN] calculation
73
74 // Gets (correlation cuts)
75 Char_t* PidPart() ; // Returns selected particle species wrt Reaction Plane
76 Float_t PtMaxPart() const ; // Returns the max pT for evt.plane calc.
77 Int_t PtBinsPart() const ; // Returns N. of pT binning
78 void SetPtBinsPart(const Int_t); // Sets N. of bins from fPtPart[0] to fPtPart[1]
79 void PrintList() const ; // Prints the tracks cut-list (for correlation analysis)
80 void PrintSelectionList() const ; // Prints a summary of the selection criteria (for RP determination)
81 void PrintV0List() const ; // Prints the v0s cut-list (for correlation analysis)
82
83 // Harmonic & Selection set (R.P.)
84 void SetHarmonic(const Int_t&); // Sets the Harmonic
85 void SetSelection(const Int_t&); // Sets the Selection
86 void SetSubevent(const Int_t&); // Sets the Sub-Event
87
88 // Cuts set (Events)
89 void SetCentralityCut(Int_t cent) ; // Sets Event Centrality class
90 void SetRunIdCut(Int_t run) ; // Sets Run number
91
92 // Cuts set (Reaction Plane)
93 static void SetPidCut(const Char_t* pid); // Sets the particle specie used in R.P. calculation
94 static void SetEtaCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN); // Sets |eta| cut for R.P.[harN][selN] calculation
95 static void SetPtCut(Float_t lo, Float_t hi, Int_t harN, Int_t selN); // Sets pT cut for R.P.[harN][selN] calculation
96 static void SetDcaGlobalCut(Float_t lo, Float_t hi); // Sets DCA cut for R.P. calculation
97 static void SetConstrainCut(Bool_t tf = kTRUE) ; // Sets the cut over un-constrainable tracks
98 static void SetNhitsCut(Int_t hits, Int_t selN) ; // Sets the minimum number of TPC hits for R.P.[selN] calculation
99
100 // Cuts set (Correlation Analysis)
101 void SetPidPart(const Char_t*); // Sets PID for particles wrt Reaction plane
102 void SetPidProbPart(const Float_t, const Float_t); // Sets PID probability for particles wrt Reaction plane
103 void SetPtPart(const Float_t, const Float_t); // Sets pT for particles wrt Reaction plane
104 void SetPPart(const Float_t, const Float_t); // Sets Momentum for particles wrt Reaction plane
105 void SetEtaPart(const Float_t, const Float_t); // Sets Eta for particles wrt Reaction plane
106 void SetEtaAbsPart(const Float_t, const Float_t); // Sets |Eta| for particles wrt Reaction plane
107 void SetYPart(const Float_t, const Float_t); // Sets Rapidity for particles (with sign.) wrt Reaction plane
108 void SetFitPtsPart(const Int_t, const Int_t); // Sets FitPoints for particles wrt Reaction plane
109 void SetDedxPtsPart(const Int_t, const Int_t); // Sets dE/dx for particles wrt Reaction plane
110 void SetFitOverMaxPtsPart(const Float_t, const Float_t); // Sets FitPoints/MaxPoints for particles wrt Reaction plane
111 void SetChiSqPart(const Float_t, const Float_t); // Sets Chi^2 for particles wrt Reaction plane
112 void SetDcaGlobalPart(const Float_t, const Float_t); // Sets d.c.a. for particles wrt Reaction plane
113 void SetConstrainablePart(Bool_t constr = kTRUE); // Sets constrainability for particles wrt Reaction plane
114
115 // Cuts set (V0 Analysis)
116 void SetV0Pid(const Char_t*) ; // Sets PID for v0 wrt plane (...)
117 void SetV0Mass(const Float_t, const Float_t) ; // Sets invariant mass cut for v0 wrt plane
118 void SetV0Pt(const Float_t, const Float_t) ; // Sets pT for v0 wrt plane
119 void SetV0P(const Float_t, const Float_t) ; // Sets Momentum for v0 wrt plane
120 void SetV0Eta(const Float_t, const Float_t) ; // Sets Eta cut for v0 wrt plane
121 void SetV0EtaAbs(const Float_t, const Float_t) ; // Sets |Eta| cut (absolute value) for v0 wrt plane
122 void SetV0Y(const Float_t, const Float_t) ; // Sets Rapidity for v0 wrt plane
123 void SetV0ChiSqPart(const Float_t, const Float_t) ; // Sets Chi^2 for v0 wrt plane
124 void SetV0DcaCross(const Float_t, const Float_t) ; // Sets distance to the main vertex for v0 wrt plane
125 void SetV0Lenght(const Float_t, const Float_t) ; // Sets distance to the main vertex in sigma units for v0 wrt plane
126 void SetV0LenghtOverSigma(const Float_t, const Float_t) ; // Sets closest approach (between the 2 daughter tracks) for v0 wrt plane
127 void SetV0SideBands() ; // Includes the v0 sideband analysis wrt plane
128 void SetV0SideBands(const Float_t) ; // Includes the v0 sideband analysis and a width
129
130 // For just constrainable track analysis (main loop, R.P. excluded)
131 void SetJustLoopConstrainable() ; // Sets for the analysis loop just over constrainable track
132 Bool_t JustLoopConstrainable() const ; // kFALSE (default) or kTRUE (set it above)
133
134 private:
135
136 // These are just 3 integers - simple way to look at the [nHar][nSel] and [nSub] array
137 Int_t fHarmonic; // harmonic
138 Int_t fSelection; // selection
139 Int_t fSubevent; // sub-event
140
141 Int_t fPtBinsPart; // N. of bins in pT histograms (pT binning)
142
143 // Event Cuts (new)
144 Int_t fCent ; // Event Centrality class
145 Int_t fRun ; // Run number
146
147 // Cuts for V0 correlated to the Raction Plane (new)
148 Char_t fV0Pid[10]; // PID for v0 wrt plane (...)
149 Float_t fV0SideBand ; // width of the sidebands (using the sidebands' candidates)
150 Float_t fV0Mass[2] ; // mass cut for v0 wrt plane
151 Float_t fV0Pt[2]; // pT for v0 wrt plane
152 Float_t fV0P[2]; // Momentum for v0 wrt plane
153 Float_t fV0Eta[2]; // Eta cut for v0 wrt plane
154 Float_t fV0EtaAbs[2]; // |Eta| cut (absolute value) for v0 wrt plane
155 Float_t fV0Y[2]; // Rapidity for v0 wrt plane
156 Float_t fV0ChiSq[2]; // Chi^2 for v0 wrt plane
157 Float_t fV0Lenght[2]; // distance to the main vertex for v0 wrt plane
158 Float_t fV0LenghtOverSigma[2]; // distance to the main vertex in sigma units for v0 wrt plane
159 Float_t fV0DcaCross[2]; // closest approach (between the 2 daughter tracks) for v0 wrt plane
160
161 // Cuts for Tracks that will be related to the Raction Plane (original strategy from STAR)
162 Char_t fPidPart[10]; // PID for parts. wrt plane (h+, h-, pi-, pi+, pi, k+, k-, k, pr+, pr-, pr, d+, d-, d, e+, e-, e)
163 Float_t fPidProbPart[2] ; // probability of the most likelihood p.id. (you should specify also PidPart())
164 Float_t fPtPart[2]; // pT for parts. wrt plane
165 Float_t fPPart[2]; // Momentum for parts. wrt plane
166 Float_t fEtaPart[2]; // Eta cut for parts. wrt plane
167 Float_t fEtaAbsPart[2]; // |Eta| cut (absolute value) for parts. wrt plane
168 Float_t fYPart[2]; // Rapidity for parts. wrt plane
169 Int_t fFitPtsPart[2]; // FitPoints for parts. wrt plane
170 Int_t fDedxPtsPart[2]; // dE/dx for parts. wrt plane
171 Float_t fFitOverMaxPtsPart[2]; // FitPoints/MaxPoints for parts. wrt plane
172 Float_t fChiSqPart[2]; // Chi^2 for parts. wrt plane
173 Float_t fDcaGlobalPart[2]; // closest approach (to the main vertex) for parts. wrt plane
174 Bool_t fConstrainablePart; // constrainability for parts. wrt plane
175
176 // Cuts for Tracks used in determining the Raction Plane (in STAR this selection was done inside the AliFlowEvent class)
177 static Float_t fEtaTpcCuts[2][Flow::nHars][Flow::nSels]; //! eta range (absolute values)
178 static Float_t fPtTpcCuts[2][Flow::nHars][Flow::nSels]; //! pT range
179 static Float_t fDcaGlobalCuts[2]; //! DCA cuts
180 static Char_t fPid[10]; //! h+, h-, pi-, pi+, pi, k+, k-, k, pr+, pr-, pr, e+, e-, e, d+, d-, d
181 static Int_t fTPChits[Flow::nSels]; //! minimum number of TPC hits
182 static Bool_t fConstrainable; //! cut un-constrainable tracks
183
184 // Cuts for all tracks entering the main loop (R.P. loop is excluded)
185 Bool_t fJustLoopConstrainable ; // constrainability for tracks entering the main loop
186
187 ClassDef(AliFlowSelection,1) // macro for rootcint
188};
189
190#endif