Algorithm to do event inspection - trigger, vertex
[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 };
64 /**
65 * Constructor
66 */
67 AliFMDEventInspector();
68 /**
69 * Constructor
70 *
71 * @param name Name of object
72 */
73 AliFMDEventInspector(const char* name);
74 /**
75 * Copy constructor
76 *
77 * @param o Object to copy from
78 */
79 AliFMDEventInspector(const AliFMDEventInspector& o);
80 /**
81 * Destructor
82 */
83 virtual ~AliFMDEventInspector();
84 /**
85 * Assignement operator
86 *
87 * @param o Object to assign from
88 *
89 * @return Reference to this object
90 */
91 AliFMDEventInspector& operator=(const AliFMDEventInspector&);
92
93 /**
94 * Initialize the object
95 *
96 * @param vtxAxis Vertex axis in use
97 */
98 void Init(const TAxis& vtxAxis);
99 /**
100 * Process the event
101 *
102 * @param event Input event
103 * @param triggers On return, the triggers fired
104 * @param lowFlux On return, true if the event is considered a low-flux
105 * event (according to the setting of fLowFluxCut)
106 * @param ivz On return, the found vertex bin (zero-based)
107 *
108 * @return 0 (or kOk) on success, otherwise a bit mask of error codes
109 */
110 UInt_t Process(const AliESDEvent* event,
111 UInt_t& triggers,
112 Bool_t& lowFlux,
113 Int_t& ivz,
114 Double_t& vz);
115 /**
116 * Define the output histograms. These are put in a sub list of the
117 * passed list. The histograms are merged before the parent task calls
118 * AliAnalysisTaskSE::Terminate
119 *
120 * @param dir Directory to add to
121 */
122 void DefineOutput(TList* dir);
123 /**
124 * Set the number of SPD tracklets for which we consider the event a
125 * low-flux event or not .
126 *
127 * @param c Cut (default 1000)
128 */
129 void SetLowFluxCut(Int_t c) { fLowFluxCut = c; }
130 /**
131 * Set the maximum error on @f$ v_z@f$
132 *
133 * @param c Maximum error (in centimeters)
134 */
135 void SetMaxVzErr(Double_t c=0.1) { fMaxVzErr = c; }
136 /**
137 * Set the debug level. The higher the value the more output
138 *
139 * @param dbg Debug level
140 */
141 void SetDebug(Int_t dbg=1) { fDebug = dbg; }
142 /**
143 * Fetch our histograms from the passed list
144 *
145 * @param d Input
146 * @param hEventsTr On return, pointer to histogram, or null
147 * @param hEventsTrVtx On return, pointer to histogram, or null
148 * @param hTriggers On return, pointer to histogram, or null
149 *
150 * @return true on success, false otherwise
151 */
152 Bool_t FetchHistograms(TList* d,
153 TH1I*& hEventsTr,
154 TH1I*& hEventsTrVtx,
155 TH1I*& hTriggers) const;
156protected:
157 /**
158 * Read the trigger information from the ESD event
159 *
160 * @param esd ESD event
161 * @param triggers On return, contains the trigger bits
162 *
163 * @return @c true on success, @c false otherwise
164 */
165 Bool_t ReadTriggers(const AliESDEvent* esd, UInt_t& triggers);
166 /**
167 * Read the vertex information from the ESD event
168 *
169 * @param esd ESD event
170 * @param vz On return, the vertex Z position
171 *
172 * @return @c true on success, @c false otherwise
173 */
174 Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz);
175
176 TH1I* fHEventsTr; //! Histogram of events w/trigger
177 TH1I* fHEventsTrVtx; //! Events w/trigger and vertex
178 TH1I* fHTriggers; //! Triggers
179 Int_t fLowFluxCut; // Low flux cut
180 Double_t fMaxVzErr; // Maximum error on v_z
181 TList* fList; //! Histogram container
182 Int_t fDebug; // Debug level
183 ClassDef(AliFMDEventInspector,1); // Inspect the event
184};
185
186#endif
187// Local Variables:
188// mode: C++
189// End:
190
191
192