1 #ifndef ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H
2 #define ALIROOT_PWG2_FORWARD_ANALYSIS2_ALIFMDEVENTINSPECTOR_H
12 * This class inspects the event
15 * - AliESDFMD object possibly corrected for sharing
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
22 * Note, that these are added to the master output list
24 * @par Corrections used:
27 * @ingroup pwg2_forward_analysis
29 class AliFMDEventInspector : public TNamed
40 /** No triggers found */
46 /** No vertex found */
48 /** Vertex out of range */
67 enum ECollisionSystem {
75 AliFMDEventInspector();
79 * @param name Name of object
81 AliFMDEventInspector(const char* name);
85 * @param o Object to copy from
87 AliFMDEventInspector(const AliFMDEventInspector& o);
91 virtual ~AliFMDEventInspector();
93 * Assignement operator
95 * @param o Object to assign from
97 * @return Reference to this object
99 AliFMDEventInspector& operator=(const AliFMDEventInspector&);
102 * Initialize the object
104 * @param vtxAxis Vertex axis in use
106 void Init(const TAxis& vtxAxis);
110 * @param event Input event
111 * @param first True on first event
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)
115 * @param ivz On return, the found vertex bin (1-based). A zero
116 * means outside of the defined vertex range
117 * @param vz On return, the z position of the interaction
119 * @return 0 (or kOk) on success, otherwise a bit mask of error codes
121 UInt_t Process(const AliESDEvent* event,
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
131 * @param dir Directory to add to
133 void DefineOutput(TList* dir);
135 * Set the number of SPD tracklets for which we consider the event a
136 * low-flux event or not .
138 * @param c Cut (default 1000)
140 void SetLowFluxCut(Int_t c) { fLowFluxCut = c; }
142 * Set the maximum error on @f$ v_z@f$
144 * @param c Maximum error (in centimeters)
146 void SetMaxVzErr(Double_t c=0.1) { fMaxVzErr = c; }
148 * Set the debug level. The higher the value the more output
150 * @param dbg Debug level
152 void SetDebug(Int_t dbg=1) { fDebug = dbg; }
154 * Fetch our histograms from the passed list
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
161 * @return true on success, false otherwise
163 Bool_t FetchHistograms(TList* d,
166 TH1I*& hTriggers) const;
168 * Read the collision system, collision energy, and L3 field setting
171 * @param esd ESD to get information from
173 * @return true on success, false
175 Bool_t ReadRunDetails(const AliESDEvent* esd);
177 * Get the collision system (one of the value in ECollisionSystem)
179 * @return Collision system
181 UShort_t GetCollisionSystem() const { return fCollisionSystem; }
183 * Get the center of mass energy (per nucleon pair) in GeV
185 * @return center of mass energy (per nucleon pair) in GeV
187 UShort_t GetEnergy() const { return fEnergy; }
189 * Get the magnetic field setting of the L3 magnet in kilo Gauss.
191 * @return The magnetic field setting
193 Short_t GetField() const { return fField; }
197 * @param option Not used
199 void Print(Option_t* option="") const;
202 * Read the trigger information from the ESD event
204 * @param esd ESD event
205 * @param triggers On return, contains the trigger bits
207 * @return @c true on success, @c false otherwise
209 Bool_t ReadTriggers(const AliESDEvent* esd, UInt_t& triggers);
211 * Read the vertex information from the ESD event
213 * @param esd ESD event
214 * @param vz On return, the vertex Z position
216 * @return @c true on success, @c false otherwise
218 Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz);
220 TH1I* fHEventsTr; //! Histogram of events w/trigger
221 TH1I* fHEventsTrVtx; //! Events w/trigger and vertex
222 TH1I* fHTriggers; //! Triggers
223 TH1I* fHType; //! Type (low/high flux) of event
224 Int_t fLowFluxCut; // Low flux cut
225 Double_t fMaxVzErr; // Maximum error on v_z
226 TList* fList; //! Histogram container
227 UShort_t fEnergy; // CMS energy (per nucleon pair) [GeV]
228 Short_t fField; // L3 magnetic field [kG]
229 UShort_t fCollisionSystem; //
230 Int_t fDebug; // Debug level
231 ClassDef(AliFMDEventInspector,1); // Inspect the event