]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FORWARD/analysis2/AliFMDEventInspector.h
Doc fixes
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliFMDEventInspector.h
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 
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    * Collision systems
66    */
67   enum ECollisionSystem { 
68     kUnknown,
69     kPP, 
70     kPbPb
71   };
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 
111    * @param triggers  On return, the triggers fired 
112    * @param lowFlux   On return, true if the event is considered a low-flux 
113    *                  event (according to the setting of fLowFluxCut) 
114    * @param ivz       On return, the found vertex bin (1-based).  A zero
115    *                  means outside of the defined vertex range
116    * @param vz        On return, the z position of the interaction
117    * 
118    * @return 0 (or kOk) on success, otherwise a bit mask of error codes 
119    */
120   UInt_t Process(const AliESDEvent* event, 
121                  UInt_t&            triggers,
122                  Bool_t&            lowFlux,
123                  UShort_t&          ivz, 
124                  Double_t&          vz);
125   /** 
126    * Define the output histograms.  These are put in a sub list of the
127    * passed list.   The histograms are merged before the parent task calls 
128    * AliAnalysisTaskSE::Terminate 
129    * 
130    * @param dir Directory to add to 
131    */
132   void DefineOutput(TList* dir);
133   /** 
134    * Set the number of SPD tracklets for which we consider the event a
135    * low-flux event or not .
136    * 
137    * @param c Cut (default 1000)
138    */
139   void SetLowFluxCut(Int_t c) { fLowFluxCut = c; }
140   /** 
141    * Set the maximum error on @f$ v_z@f$
142    * 
143    * @param c Maximum error (in centimeters)
144    */
145   void SetMaxVzErr(Double_t c=0.1) { fMaxVzErr = c; }
146   /** 
147    * Set the debug level.  The higher the value the more output 
148    * 
149    * @param dbg Debug level 
150    */
151   void SetDebug(Int_t dbg=1) { fDebug = dbg; }
152   /** 
153    * Fetch our histograms from the passed list 
154    * 
155    * @param d             Input
156    * @param hEventsTr     On return, pointer to histogram, or null
157    * @param hEventsTrVtx  On return, pointer to histogram, or null
158    * @param hTriggers     On return, pointer to histogram, or null
159    * 
160    * @return true on success, false otherwise 
161    */
162   Bool_t FetchHistograms(TList* d, 
163                          TH1I*& hEventsTr, 
164                          TH1I*& hEventsTrVtx, 
165                          TH1I*& hTriggers) const;
166   /** 
167    * Read the collision system, collision energy, and L3 field setting
168    * from the ESD
169    * 
170    * @param esd ESD to get information from 
171    * 
172    * @return true on success, false 
173    */
174   Bool_t ReadRunDetails(const AliESDEvent* esd);
175   /** 
176    * Get the collision system (one of the value in ECollisionSystem)
177    * 
178    * @return Collision system 
179    */
180   UShort_t GetCollisionSystem() const { return fCollisionSystem; }
181   /** 
182    * Get the center of mass energy (per nucleon pair) in GeV 
183    * 
184    * @return center of mass energy (per nucleon pair) in GeV 
185    */
186   UShort_t GetEnergy() const { return fEnergy; }
187   /** 
188    * Get the magnetic field setting of the L3 magnet in kilo Gauss. 
189    * 
190    * @return The magnetic field setting 
191    */
192   Short_t  GetField() const { return fField; }
193   /** 
194    * Print information
195    * 
196    * @param option Not used 
197    */
198   void Print(Option_t* option="") const;
199 protected:
200   /** 
201    * Read the trigger information from the ESD event 
202    * 
203    * @param esd        ESD event 
204    * @param triggers   On return, contains the trigger bits 
205    * 
206    * @return @c true on success, @c false otherwise 
207    */
208   Bool_t ReadTriggers(const AliESDEvent* esd, UInt_t& triggers);
209   /** 
210    * Read the vertex information from the ESD event 
211    * 
212    * @param esd  ESD event 
213    * @param vz   On return, the vertex Z position 
214    * 
215    * @return @c true on success, @c false otherwise 
216    */
217   Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz);
218
219   TH1I*    fHEventsTr;    //! Histogram of events w/trigger
220   TH1I*    fHEventsTrVtx; //! Events w/trigger and vertex 
221   TH1I*    fHTriggers;    //! Triggers
222   TH1I*    fHType;        //! Type (low/high flux) of event
223   Int_t    fLowFluxCut;   //  Low flux cut
224   Double_t fMaxVzErr;     //  Maximum error on v_z
225   TList*   fList;         //! Histogram container 
226   UShort_t fEnergy;       // CMS energy (per nucleon pair) [GeV]
227   Short_t  fField;        // L3 magnetic field [kG]
228   UShort_t fCollisionSystem; //  
229   Int_t    fDebug;        //  Debug level 
230   ClassDef(AliFMDEventInspector,1); // Inspect the event 
231 };
232
233 #endif
234 // Local Variables:
235 //   mode: C++
236 // End:
237
238
239