Various fixes to deal with centrality
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliFMDMCEventInspector.h
1 // 
2 // This class inspects the event 
3 //
4 #ifndef ALIFMDMCEVENTINSPECTOR_H
5 #define ALIFMDMCEVENTINSPECTOR_H
6 #include "AliFMDEventInspector.h"
7 class AliMCEvent;
8 class TH2F;
9
10 /** 
11  * This class inspects the event 
12  *
13  * @par Input:
14  *   - AliESDFMD object possibly corrected for sharing
15  *
16  * @par Output:
17  *   - A histogram of v_z of events with triggers. 
18  *   - A histogram of v_z of events with vertex and triggers 
19  *   - A histogram of trigger counters 
20  * 
21  * Note, that these are added to the master output list 
22  *
23  * @par Corrections used: 
24  *   - None
25  *
26  * @ingroup pwg2_forward_algo 
27  */
28 class AliFMDMCEventInspector : public AliFMDEventInspector
29 {
30 public:
31   /** 
32    * Constructor 
33    */
34   AliFMDMCEventInspector();
35   /** 
36    * Constructor 
37    * 
38    * @param name Name of object
39    */
40   AliFMDMCEventInspector(const char* name);
41   /** 
42    * Copy constructor 
43    * 
44    * @param o Object to copy from 
45    */
46   AliFMDMCEventInspector(const AliFMDMCEventInspector& o);
47   /** 
48    * Destructor 
49    */
50   virtual ~AliFMDMCEventInspector();
51   /** 
52    * Assignement operator
53    * 
54    * @param o Object to assign from 
55    * 
56    * @return Reference to this object
57    */
58   AliFMDMCEventInspector& operator=(const AliFMDMCEventInspector&);
59
60   /** 
61    * Initialize the object 
62    * 
63    * @param vtxAxis Vertex axis in use 
64    */
65   void Init(const TAxis& vtxAxis);
66   /** 
67    * Process MC truth event.  Note, returned values are the MC truth
68    * values
69    * 
70    * @param event     Input event 
71    * @param triggers  On return, the triggers fired 
72    * @param lowFlux   On return, true if the event is considered a low-flux 
73    *                  event (according to the setting of fLowFluxCut) 
74    * @param ivz       On return, the found vertex bin (1-based).  A zero
75    *                  means outside of the defined vertex range
76    * @param vz        On return, the z position of the interaction
77    * @param cent      On return, the centrality (in percent) or < 0 
78    *                  if not found
79    * 
80    * @return 0 (or kOk) on success, otherwise a bit mask of error codes 
81    */
82   UInt_t ProcessMC(AliMCEvent*       event, 
83                    UInt_t&           triggers,
84                    UShort_t&         ivz, 
85                    Double_t&         vz,
86                    Double_t&         b,
87                    Int_t&            npart, 
88                    Int_t&            nbin,
89                    Double_t&         phiR);
90   /** 
91    * Compare the result of analysing the ESD for 
92    * the inclusive charged particle density to analysing 
93    * MC truth 
94    * 
95    * @param esd 
96    * @param mc 
97    * 
98    * @return 
99    */
100   virtual Bool_t CompareResults(Double_t vz,    Double_t trueVz, 
101                                 Double_t cent,  Double_t b,
102                                 Int_t    npart, Int_t    nbin);
103 protected:
104   /** 
105    * Read centrality from event 
106    * 
107    * @param esd  Event 
108    * @param cent On return, the centrality or negative if not found
109    * 
110    * @return False on error, true otherwise 
111    */
112   virtual Bool_t ReadCentrality(const AliESDEvent* esd, Double_t& cent,
113                                 UShort_t& qual) const;
114
115   TH1F* fHVertex;  // Histogram of vertex 
116   TH1F* fHPhiR;    // Histogram of event plane 
117   TH1F* fHB;       // Histogram of impact parameter 
118   TH2F* fHBvsPart; // Impact parameter vs # participants 
119   TH2F* fHBvsBin;  // Impact parameter vs # participants 
120   TH2F* fHBvsCent; // Impact parameter vs centrality
121   TH2F* fHVzComp;  // True vs reconstructed vz
122   TH2F* fHCentVsPart; // Centrality versus # participants 
123   TH2F* fHCentVsBin;  // Centrality versus # binary collisions 
124   ClassDef(AliFMDMCEventInspector,2); // Inspect the event 
125 };
126
127 #endif
128 // Local Variables:
129 //   mode: C++
130 // End:
131
132
133