]>
Commit | Line | Data |
---|---|---|
8565b10b | 1 | #ifndef ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H |
2 | #define ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H | |
3 | #include <TNamed.h> | |
4 | class AliESDEvent; | |
5 | class TH2D; | |
6 | class TH1D; | |
7 | class TH1I; | |
8 | class TAxis; | |
9 | class 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 | */ | |
29 | class AliFMDEventInspector : public TNamed | |
30 | { | |
31 | public: | |
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) | |
c389303e | 107 | * @param vz On return, the z position of the interaction |
8565b10b | 108 | * |
109 | * @return 0 (or kOk) on success, otherwise a bit mask of error codes | |
110 | */ | |
111 | UInt_t Process(const AliESDEvent* event, | |
112 | UInt_t& triggers, | |
113 | Bool_t& lowFlux, | |
114 | Int_t& ivz, | |
115 | Double_t& vz); | |
116 | /** | |
117 | * Define the output histograms. These are put in a sub list of the | |
118 | * passed list. The histograms are merged before the parent task calls | |
119 | * AliAnalysisTaskSE::Terminate | |
120 | * | |
121 | * @param dir Directory to add to | |
122 | */ | |
123 | void DefineOutput(TList* dir); | |
124 | /** | |
125 | * Set the number of SPD tracklets for which we consider the event a | |
126 | * low-flux event or not . | |
127 | * | |
128 | * @param c Cut (default 1000) | |
129 | */ | |
130 | void SetLowFluxCut(Int_t c) { fLowFluxCut = c; } | |
131 | /** | |
132 | * Set the maximum error on @f$ v_z@f$ | |
133 | * | |
134 | * @param c Maximum error (in centimeters) | |
135 | */ | |
136 | void SetMaxVzErr(Double_t c=0.1) { fMaxVzErr = c; } | |
137 | /** | |
138 | * Set the debug level. The higher the value the more output | |
139 | * | |
140 | * @param dbg Debug level | |
141 | */ | |
142 | void SetDebug(Int_t dbg=1) { fDebug = dbg; } | |
143 | /** | |
144 | * Fetch our histograms from the passed list | |
145 | * | |
146 | * @param d Input | |
147 | * @param hEventsTr On return, pointer to histogram, or null | |
148 | * @param hEventsTrVtx On return, pointer to histogram, or null | |
149 | * @param hTriggers On return, pointer to histogram, or null | |
150 | * | |
151 | * @return true on success, false otherwise | |
152 | */ | |
153 | Bool_t FetchHistograms(TList* d, | |
154 | TH1I*& hEventsTr, | |
155 | TH1I*& hEventsTrVtx, | |
156 | TH1I*& hTriggers) const; | |
157 | protected: | |
158 | /** | |
159 | * Read the trigger information from the ESD event | |
160 | * | |
161 | * @param esd ESD event | |
162 | * @param triggers On return, contains the trigger bits | |
163 | * | |
164 | * @return @c true on success, @c false otherwise | |
165 | */ | |
166 | Bool_t ReadTriggers(const AliESDEvent* esd, UInt_t& triggers); | |
167 | /** | |
168 | * Read the vertex information from the ESD event | |
169 | * | |
170 | * @param esd ESD event | |
171 | * @param vz On return, the vertex Z position | |
172 | * | |
173 | * @return @c true on success, @c false otherwise | |
174 | */ | |
175 | Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz); | |
176 | ||
177 | TH1I* fHEventsTr; //! Histogram of events w/trigger | |
178 | TH1I* fHEventsTrVtx; //! Events w/trigger and vertex | |
179 | TH1I* fHTriggers; //! Triggers | |
180 | Int_t fLowFluxCut; // Low flux cut | |
181 | Double_t fMaxVzErr; // Maximum error on v_z | |
182 | TList* fList; //! Histogram container | |
183 | Int_t fDebug; // Debug level | |
184 | ClassDef(AliFMDEventInspector,1); // Inspect the event | |
185 | }; | |
186 | ||
187 | #endif | |
188 | // Local Variables: | |
189 | // mode: C++ | |
190 | // End: | |
191 | ||
192 | ||
193 |