]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliFMDMCEventInspector.h
Transition PWG2/FORWARD -> PWGLF
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliFMDMCEventInspector.h
1 // 
2 // This class inspects the event 
3 //
4 #ifndef ALIFMDMCEVENTINSPECTOR_H
5 #define ALIFMDMCEVENTINSPECTOR_H
6 /**
7  * @file   AliFMDMCEventInspector.h
8  * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
9  * @date   Wed Mar 23 14:03:40 2011
10  * 
11  * @brief  
12  * 
13  * 
14  * @ingroup pwg2_forward_aod
15  */
16 #include "AliFMDEventInspector.h"
17 class AliMCEvent;
18 class TH2F;
19 class AliStack;
20
21 /** 
22  * This class inspects the event 
23  *
24  * @par Input:
25  *   - AliESDFMD object possibly corrected for sharing
26  *
27  * @par Output:
28  *   - A histogram of v_z of events with triggers. 
29  *   - A histogram of v_z of events with vertex and triggers 
30  *   - A histogram of trigger counters 
31  * 
32  * Note, that these are added to the master output list 
33  *
34  * @par Corrections used: 
35  *   - None
36  *
37  * @ingroup pwg2_forward_algo 
38  * @ingroup pwg2_forward_mc
39  * @ingroup pwg2_forward_aod
40  */
41 class AliFMDMCEventInspector : public AliFMDEventInspector
42 {
43 public:
44   /** 
45    * Constructor 
46    */
47   AliFMDMCEventInspector();
48   /** 
49    * Constructor 
50    * 
51    * @param name Name of object
52    */
53   AliFMDMCEventInspector(const char* name);
54   /** 
55    * Copy constructor 
56    * 
57    * @param o Object to copy from 
58    */
59   AliFMDMCEventInspector(const AliFMDMCEventInspector& o);
60   /** 
61    * Destructor 
62    */
63   virtual ~AliFMDMCEventInspector();
64   /** 
65    * Assignement operator
66    * 
67    * @param o Object to assign from 
68    * 
69    * @return Reference to this object
70    */
71   AliFMDMCEventInspector& operator=(const AliFMDMCEventInspector&);
72
73   /** 
74    * Initialize the object 
75    * 
76    * @param vtxAxis Vertex axis in use 
77    */
78   void Init(const TAxis& vtxAxis);
79   /** 
80    * Process MC truth event.  Note, returned values are the MC truth
81    * values
82    * 
83    * @param event     Input event 
84    * @param triggers  On return, the triggers fired 
85    * @param ivz       On return, the found vertex bin (1-based).  A zero
86    *                  means outside of the defined vertex range
87    * @param vz        On return, the z position of the interaction
88    * @param b         On return, impact parameter [fm] (if available)
89    * @param npart     On return, number of participants (if available)
90    * @param nbin      On return, number of binary collisions (if available)
91    * @param phiR      On return, reaction plane angle (if available)
92    * 
93    * @return 0 (or kOk) on success, otherwise a bit mask of error codes 
94    */
95   UInt_t ProcessMC(AliMCEvent*       event, 
96                    UInt_t&           triggers,
97                    UShort_t&         ivz, 
98                    Double_t&         vz,
99                    Double_t&         b,
100                    Int_t&            npart, 
101                    Int_t&            nbin,
102                    Double_t&         phiR);
103   /** 
104    * Compare the result of analysing the ESD for 
105    * the inclusive charged particle density to analysing 
106    * MC truth 
107    * 
108    * @param vz       Found @f$ v_z@f$
109    * @param trueVz   True  @f$ v_z@f$
110    * @param cent     Centrality
111    * @param b        Impact parameter (if available)
112    * @param npart    Number of participants (if available)
113    * @param nbin     Number of binary collisions (if available)
114    * 
115    * @return true
116    */
117   virtual Bool_t CompareResults(Double_t vz,    Double_t trueVz, 
118                                 Double_t cent,  Double_t b,
119                                 Int_t    npart, Int_t    nbin);
120   /** 
121    * Store information about running conditions in output list 
122    * 
123    * The 3 TNamed objects from AliFMDEventInspector::StoreInformation
124    * are defined.  In addition, a fourth TNamed object is defined.
125    * The presence of this indicate MC data.
126    *
127    * - mc    Nothing special, and unique id is 1
128    * 
129    * @param runNo Run number 
130    */
131   virtual void StoreInformation(Int_t runNo);
132   /** 
133    * Read the production details 
134    * 
135    * @param event MC event
136    */
137   virtual void ReadProductionDetails(AliMCEvent* event);
138 protected:
139   /** 
140    * Read centrality from event 
141    * 
142    * @param esd  Event 
143    * @param cent On return, the centrality or negative if not found
144    * @param qual Quality flag 
145    * 
146    * @return False on error, true otherwise 
147    */
148   virtual Bool_t ReadCentrality(const AliESDEvent* esd, Double_t& cent,
149                                 UShort_t& qual) const;
150   /** 
151    * Check if the event is single diffractive 
152    * 
153    * @param stack  Stack of MC particles 
154    * @param xiMin  Lower cut off
155    * @param xiMax  Upper cut off 
156    * 
157    * @return 
158    */
159   Bool_t IsSingleDiffractive(AliStack* stack,
160                              Double_t xiMin=0, 
161                              Double_t xiMax=1./81) const;
162   TH1F* fHVertex;  // Histogram of vertex 
163   TH1F* fHPhiR;    // Histogram of event plane 
164   TH1F* fHB;       // Histogram of impact parameter 
165   TH2F* fHBvsPart; // Impact parameter vs # participants 
166   TH2F* fHBvsBin;  // Impact parameter vs # participants 
167   TH2F* fHBvsCent; // Impact parameter vs centrality
168   TH2F* fHVzComp;  // True vs reconstructed vz
169   TH2F* fHCentVsPart; // Centrality versus # participants 
170   TH2F* fHCentVsBin;  // Centrality versus # binary collisions 
171   TString fProduction; // Production information 
172   ClassDef(AliFMDMCEventInspector,3); // Inspect the event 
173 };
174
175 #endif
176 // Local Variables:
177 //   mode: C++
178 // End:
179
180
181