More code clean up.
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliFMDEventInspector.h
CommitLineData
8565b10b 1#ifndef ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H
2#define ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H
3#include <TNamed.h>
4class AliESDEvent;
5class TH2D;
6class TH1D;
7class TH1I;
8class TAxis;
9class TList;
10
11/**
12 * This class inspects the event
13 *
14 * @par Input:
15 * - AliESDFMD object possibly corrected for sharing
16 *
17 * @par Output:
18 * - A histogram of v_z of events with triggers.
19 * - A histogram of v_z of events with vertex and triggers
20 * - A histogram of trigger counters
21 *
22 * Note, that these are added to the master output list
23 *
24 * @par Corrections used:
25 * - None
26 *
27 * @ingroup pwg2_forward_analysis
28 */
29class AliFMDEventInspector : public TNamed
30{
31public:
32 /**
33 * Return codes
34 */
35 enum ECodes {
36 /** all ok */
37 kOk = 0,
38 /** No ESD event */
39 kNoEvent = 0x1,
40 /** No triggers found */
41 kNoTriggers = 0x2,
42 /** No SPD data */
43 kNoSPD = 0x4,
44 /** No FMD data */
45 kNoFMD = 0x8,
46 /** No vertex found */
47 kNoVertex = 0x10,
48 /** Vertex out of range */
49 kBadVertex = 0x20
50 };
51 /**
52 * Trigger bins
53 */
54 enum ETrgBins {
55 kInel,
56 kInelGt0,
57 kNSD,
58 kEmpty,
59 kA,
60 kB,
61 kC,
62 kE
63 };
0bd4b00f 64 /**
65 * Collision systems
66 */
67 enum ECollisionSystem {
68 kUnknown,
69 kPP,
70 kPbPb
71 };
8565b10b 72 /**
73 * Constructor
74 */
75 AliFMDEventInspector();
76 /**
77 * Constructor
78 *
79 * @param name Name of object
80 */
81 AliFMDEventInspector(const char* name);
82 /**
83 * Copy constructor
84 *
85 * @param o Object to copy from
86 */
87 AliFMDEventInspector(const AliFMDEventInspector& o);
88 /**
89 * Destructor
90 */
91 virtual ~AliFMDEventInspector();
92 /**
93 * Assignement operator
94 *
95 * @param o Object to assign from
96 *
97 * @return Reference to this object
98 */
99 AliFMDEventInspector& operator=(const AliFMDEventInspector&);
100
101 /**
102 * Initialize the object
103 *
104 * @param vtxAxis Vertex axis in use
105 */
106 void Init(const TAxis& vtxAxis);
107 /**
108 * Process the event
109 *
110 * @param event Input event
0bd4b00f 111 * @param first True on first event
8565b10b 112 * @param triggers On return, the triggers fired
113 * @param lowFlux On return, true if the event is considered a low-flux
114 * event (according to the setting of fLowFluxCut)
0bd4b00f 115 * @param ivz On return, the found vertex bin (1-based). A zero
116 * means outside of the defined vertex range
c389303e 117 * @param vz On return, the z position of the interaction
8565b10b 118 *
119 * @return 0 (or kOk) on success, otherwise a bit mask of error codes
120 */
121 UInt_t Process(const AliESDEvent* event,
122 UInt_t& triggers,
123 Bool_t& lowFlux,
0bd4b00f 124 UShort_t& ivz,
8565b10b 125 Double_t& vz);
126 /**
127 * Define the output histograms. These are put in a sub list of the
128 * passed list. The histograms are merged before the parent task calls
129 * AliAnalysisTaskSE::Terminate
130 *
131 * @param dir Directory to add to
132 */
133 void DefineOutput(TList* dir);
134 /**
135 * Set the number of SPD tracklets for which we consider the event a
136 * low-flux event or not .
137 *
138 * @param c Cut (default 1000)
139 */
140 void SetLowFluxCut(Int_t c) { fLowFluxCut = c; }
141 /**
142 * Set the maximum error on @f$ v_z@f$
143 *
144 * @param c Maximum error (in centimeters)
145 */
146 void SetMaxVzErr(Double_t c=0.1) { fMaxVzErr = c; }
147 /**
148 * Set the debug level. The higher the value the more output
149 *
150 * @param dbg Debug level
151 */
152 void SetDebug(Int_t dbg=1) { fDebug = dbg; }
153 /**
154 * Fetch our histograms from the passed list
155 *
156 * @param d Input
157 * @param hEventsTr On return, pointer to histogram, or null
158 * @param hEventsTrVtx On return, pointer to histogram, or null
159 * @param hTriggers On return, pointer to histogram, or null
160 *
161 * @return true on success, false otherwise
162 */
163 Bool_t FetchHistograms(TList* d,
164 TH1I*& hEventsTr,
165 TH1I*& hEventsTrVtx,
166 TH1I*& hTriggers) const;
0bd4b00f 167 /**
168 * Read the collision system, collision energy, and L3 field setting
169 * from the ESD
170 *
171 * @param esd ESD to get information from
172 *
173 * @return true on success, false
174 */
175 Bool_t ReadRunDetails(const AliESDEvent* esd);
176 /**
177 * Get the collision system (one of the value in ECollisionSystem)
178 *
179 * @return Collision system
180 */
181 UShort_t GetCollisionSystem() const { return fCollisionSystem; }
182 /**
183 * Get the center of mass energy (per nucleon pair) in GeV
184 *
185 * @return center of mass energy (per nucleon pair) in GeV
186 */
187 UShort_t GetEnergy() const { return fEnergy; }
188 /**
189 * Get the magnetic field setting of the L3 magnet in kilo Gauss.
190 *
191 * @return The magnetic field setting
192 */
193 Short_t GetField() const { return fField; }
194 /**
195 * Print information
196 *
197 * @param option Not used
198 */
199 void Print(Option_t* option="") const;
8565b10b 200protected:
201 /**
202 * Read the trigger information from the ESD event
203 *
204 * @param esd ESD event
205 * @param triggers On return, contains the trigger bits
206 *
207 * @return @c true on success, @c false otherwise
208 */
209 Bool_t ReadTriggers(const AliESDEvent* esd, UInt_t& triggers);
210 /**
211 * Read the vertex information from the ESD event
212 *
213 * @param esd ESD event
214 * @param vz On return, the vertex Z position
215 *
216 * @return @c true on success, @c false otherwise
217 */
218 Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz);
219
220 TH1I* fHEventsTr; //! Histogram of events w/trigger
221 TH1I* fHEventsTrVtx; //! Events w/trigger and vertex
222 TH1I* fHTriggers; //! Triggers
0bd4b00f 223 TH1I* fHType; //! Type (low/high flux) of event
8565b10b 224 Int_t fLowFluxCut; // Low flux cut
225 Double_t fMaxVzErr; // Maximum error on v_z
226 TList* fList; //! Histogram container
0bd4b00f 227 UShort_t fEnergy; // CMS energy (per nucleon pair) [GeV]
228 Short_t fField; // L3 magnetic field [kG]
229 UShort_t fCollisionSystem; //
8565b10b 230 Int_t fDebug; // Debug level
231 ClassDef(AliFMDEventInspector,1); // Inspect the event
232};
233
234#endif
235// Local Variables:
236// mode: C++
237// End:
238
239
240