]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/flow/AliFMDFlowBin.h
Added some fancy flow stuff and scripts
[u/mrichter/AliRoot.git] / FMD / flow / AliFMDFlowBin.h
CommitLineData
39eefe19 1// -*- mode: C++ -*-
97e94238 2/* Copyright (C) 2007 Christian Holm Christensen <cholm@nbi.dk>
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public License
6 * as published by the Free Software Foundation; either version 2.1 of
7 * the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
17 * USA
18 */
39eefe19 19/** @file
20 @brief Declaration of a Bin in a Flow "histogram" */
97e94238 21//____________________________________________________________________
22//
23// This contains an of class AliFMDFlowHarmonic and an object of
24// class AliFMDFlowEventPlane to calculate v_n and \Psi_k. It contain
25// two objects of class AliFMDFlowEventPlane to calculate the
26// sub-event event planes Psi_A, \Psi_B. It also contain 3 objects of
27// class AliFMDFlowResolution to calculate the event plane angle
28// resolution.
29//
30#ifndef ALIFMDFLOWBIN_H
31#define ALIFMDFLOWBIN_H
39eefe19 32#include <flow/AliFMDFlowEventPlane.h>
33#include <flow/AliFMDFlowHarmonic.h>
34#include <flow/AliFMDFlowResolution.h>
9b98d361 35#include <TH2D.h>
36#include <TH1D.h>
39eefe19 37#include <TObject.h>
38
824e71c1 39//Forward declaration
40class TBrowser;
41
39eefe19 42/** @defgroup c_binned Binned flow
43 @brief This group contains code for binned flow analysis. Two
44 kinds of "histograms" are defined - a 1 dimensional and a 2
45 dimensional set of binned objects of class AliFMDFlowBin.
46
47 Objects of class AliFMDFlowBin contains all the code needed to compute
48 flow in a given bin.
49
50 The class AliFMDFlowAxis encodes look-up of a object of class
51 AliFMDFlowBin in a flow "Histogram"
52*/
53//______________________________________________________
54/** @class AliFMDFlowBin flow/AliFMDFlowBin.h <flow/AliFMDFlowBin.h>
55 @brief A bin of flow.
56
57 This contains an of class AliFMDFlowHarmonic and an object of
58 class AliFMDFlowEventPlane to calculate @f$ v_n@f$ and
59 @f$\Psi_k@f$. It contain two objects of class
60 AliFMDFlowEventPlane to calculate the sub-event event planes
61 @f$\Psi_A, \Psi_B@f$. It also contain 3 objects of class
62 AliFMDFlowResolution to calculate the event plane angle
63 resolution.
64
65 @ingroup c_binned
66*/
67class AliFMDFlowBin : public TObject
68{
69public:
70 /** Correction type */
71 enum CorType {
72 /** No correction */
9b98d361 73 kNone = 1,
39eefe19 74 /** Naive, using the formulas in Voloshins paper */
9b98d361 75 kNaive = 2,
39eefe19 76 /** STARs way */
9b98d361 77 kStar = 4,
39eefe19 78 /** The way used in the TDR */
9b98d361 79 kTdr = 8
39eefe19 80 };
9b98d361 81 /** Types of things to draw */
82 enum DrawVar {
83 /** The harmonic */
84 kHarmonic,
85 /** The resolution */
86 kResolution,
87 /** The statistics */
88 kCounts
89 };
90 /** Default Ctor - do not use */
91 AliFMDFlowBin() {}
97e94238 92 /** Constructor
93 @param order Order of harmonic.
94 @param k Factor of event plane order=k * m */
9b98d361 95 AliFMDFlowBin(UShort_t order, UShort_t k=1);
97e94238 96 /** Copy constructor
97 @param o Object top copy from */
98 AliFMDFlowBin(const AliFMDFlowBin& o);
99 /** Assignment operator
100 @param o Object to assign from
101 @return Reference to this object */
102 AliFMDFlowBin& operator=(const AliFMDFlowBin& o);
103
39eefe19 104 /** Destructor */
105 virtual ~AliFMDFlowBin() {}
9b98d361 106
107 /** @{
108 @name Processing */
39eefe19 109 /** Should be called at the start of an event */
110 virtual void Begin();
111 /** Called to add a contribution to the event plane
112 @param phi The angle @f$ \varphi \in[0,2\pi]@f$
113 @param w Weight
114 @param a If true, add to sub-event A, otherwise to sub-event
115 B. */
116 virtual void AddToEventPlane(Double_t phi, Double_t w=1, Bool_t a=kTRUE);
117 /** Called to add a contribution to the harmonic.
118 @param phi The angle @f$ \varphi \in[0,2\pi]@f$
119 @param w Weight of @a phi (only used in the calculation of
9b98d361 120 the event plane).
121 @param wh Weight if the @f$ \varphi@f$ observation */
122 virtual void AddToHarmonic(Double_t phi, Double_t wp=1, Double_t wh=1);
39eefe19 123 /** Should be called at the end of an event */
124 virtual void End();
125 /** Analyse events
9b98d361 126 @param n Size of @a phis and possibly @a ws
39eefe19 127 @param phis @f$ (\varphi_i, \ldots, \varphi_n)@f$
9b98d361 128 @param wp Weights for event plane (optional)
129 @param wh Weights for harmonic (optional - can be the same as @a ws) */
130 virtual void Event(UInt_t n, Double_t* phis, Double_t* wp=0, Double_t* wh=0);
39eefe19 131 /** Finish run */
132 virtual void Finish();
9b98d361 133 /** @} */
134
135 /** @{
136 @name Orders */
137 /** Get the harmonic order
138 @return The harmonic order */
139 virtual UShort_t Order() const { return fHarmonic.Order(); }
140 /** Get the harmonic order
141 @return The harmonic order */
142 virtual UShort_t PsiOrder() const { return fPsi.Order(); }
143 /** @} */
144
145 /** @{
146 @name Values */
39eefe19 147 /** Get the value in this bin
148 @param t Which type of correction
149 @return the value of the harmonic */
97e94238 150 virtual Double_t Value(CorType t=kTdr) const;
39eefe19 151 /** Get the value in this bin
152 @param t Which type of correction
153 @return the error on the value of the harmonic */
97e94238 154 virtual Double_t EValue(CorType t=kTdr) const;
39eefe19 155 /** Get the value in this bin
156 @param e2 On return, the square error.
157 @param t Which type of correction
158 @return the value of the harmonic */
97e94238 159 virtual Double_t Value(Double_t& e2, CorType t=kTdr) const;
39eefe19 160 /** Get the value in this bin
161 @param e2 On return, the square error.
162 @param t Which type of correction
97e94238 163 @return the value of the event plane correction */
164 virtual Double_t Correction(Double_t& e2, CorType t=kTdr) const;
9b98d361 165 /** Get the number of counts used in this.
166 @return The number of counts used in this bin */
167 virtual ULong_t Counts() const;
168 /** @} */
169
170 /** @{
171 @name Utility */
39eefe19 172 /** Print summary to standard output */
824e71c1 173 virtual void Print(Option_t* option="") const; //*MENU*
174 /** Return true */
175 virtual Bool_t IsFolder() const { return kTRUE; }
176 /** Browse this item */
177 virtual void Browse(TBrowser* b);
39eefe19 178 /** Get the event plane angle */
179 virtual Double_t Psi() const { return fPsi.Psi(); }
180 /** Get the sub-event A plane angle */
181 virtual Double_t PsiA() const { return fPsiA.Psi(); }
182 /** Get the sub-event B plane angle */
183 virtual Double_t PsiB() const { return fPsiB.Psi(); }
9b98d361 184 /** @} */
39eefe19 185
9b98d361 186 /** @{
187 @name histograms */
188 /** @return Split histogram */
189 const TH2& SplitHistogram() const { return fSplit; }
190 /** @return Phi histogram */
191 const TH1& PhiHistogram() const { return fPhi; }
192 /** @} */
39eefe19 193protected:
194 /** Major event plane */
97e94238 195 AliFMDFlowEventPlane fPsi; // Major event plane
39eefe19 196 /** Sub-event A event plane */
97e94238 197 AliFMDFlowEventPlane fPsiA; // Sub-event A event plane
39eefe19 198 /** Sub-event B event plane */
97e94238 199 AliFMDFlowEventPlane fPsiB; // Sub-event B event plane
39eefe19 200 /** Resolution */
97e94238 201 AliFMDFlowResolution fRes; // Resolution
39eefe19 202 /** Resolution */
97e94238 203 AliFMDFlowResolutionStar fResStar; // Resolution
39eefe19 204 /** Resolution */
97e94238 205 AliFMDFlowResolutionTDR fResTdr; // Resolution
39eefe19 206 /** The harmonic */
97e94238 207 AliFMDFlowHarmonic fHarmonic; // Harmonic
9b98d361 208 /** Histogram of the relative split between A and B */
209 TH2D fSplit;
210 /** Histogram of relative phi's */
211 TH1D fPhi;
212 /** Counter of number of observations in sub-A */
213 ULong_t fNA;
214 /** Counter of number of observations in sub-B */
215 ULong_t fNB;
216 /** Counter of number of observations */
217 ULong_t fN;
218 /** Psi from A vs from B */
219 TH2D fAB;
220
39eefe19 221 /** Define for ROOT I/O */
97e94238 222 ClassDef(AliFMDFlowBin,1); // A flow analysis
39eefe19 223};
224
225
226#endif
227//
228// EOF
229//