Added some more scripts
[u/mrichter/AliRoot.git] / PWG2 / FORWARD / analysis2 / AliForwardMCCorrectionsTask.h
1 #ifndef ALIROOT_PWG2_FORWARD_ALIFORWARDCORRECTIONS_H
2 #define ALIROOT_PWG2_FORWARD_ALIFORWARDCORRECTIONS_H
3 #include <AliAnalysisTaskSE.h>
4 #include "AliForwardUtil.h"
5 #include "AliFMDSharingFilter.h"
6 #include "AliFMDDensityCalculator.h"
7 #include "AliFMDCorrections.h"
8 #include "AliFMDHistCollector.h"
9 #include "AliAODForwardMult.h"
10 #include <AliESDFMD.h>
11 #include <TH1I.h>
12 class AliFMDAnaParameters;
13 class AliESDEvent;
14 class TH2D;
15 class TH3D;
16 class TList;
17 class TTree;
18
19
20 /** 
21  * Calculate the corrections in the forward regions
22  * 
23  * @par Inputs: 
24  *   - AliESDEvent 
25  *
26  * @par Outputs: 
27  *   - AliAODForwardMult 
28  * 
29  * @par Histograms 
30  *   
31  * @par Corrections used 
32  * 
33  * @ingroup pwg2_forward_analysis 
34  * 
35  */
36 class AliForwardMCCorrectionsTask : public AliAnalysisTaskSE
37 {
38 public:
39   /** 
40    * Constructor 
41    * 
42    * @param name Name of task 
43    */
44   AliForwardMCCorrectionsTask(const char* name);
45   /** 
46    * Constructor
47    */
48   AliForwardMCCorrectionsTask();
49   /** 
50    * Copy constructor 
51    * 
52    * @param o Object to copy from 
53    */
54   AliForwardMCCorrectionsTask(const AliForwardMCCorrectionsTask& o);
55   /** 
56    * Assignment operator 
57    * 
58    * @param o Object to assign from 
59    * 
60    * @return Reference to this object 
61    */
62   AliForwardMCCorrectionsTask& operator=(const AliForwardMCCorrectionsTask& o);
63   /** 
64    * @{ 
65    * @name Interface methods 
66    */
67   /** 
68    * Initialize the task 
69    * 
70    */
71   virtual void Init();
72   /** 
73    * Create output objects 
74    * 
75    */
76   virtual void UserCreateOutputObjects();
77   /** 
78    * Process each event 
79    *
80    * @param option Not used
81    */  
82   virtual void UserExec(Option_t* option);
83   /** 
84    * End of job
85    * 
86    * @param option Not used 
87    */
88   virtual void Terminate(Option_t* option);
89   /** 
90    * @} 
91    */
92   void         Print(Option_t* option="") const;
93
94   void SetVertexAxis(Int_t nBins, Double_t vzMin, Double_t vzMax=-1000000);
95   void SetVertexAxis(const TAxis& axis);
96   void SetEtaAxis(Int_t nBins, Double_t etaMin, Double_t etaMax=-1000000);
97   void SetEtaAxis(const TAxis& axis);
98 protected: 
99   TH2D*  GetVertexProj(Int_t v, TH3D* src) const;
100   TH3D* Make3D(const char* name, const char* title, Int_t nPhi) const;
101   TH1D* Make1D(const char* name, const char* title) const;
102   void  FillPrimary(Bool_t gotInel, Bool_t gotVtx, 
103                     Double_t vz, Double_t eta, Double_t phi);
104   void FillStrip(UShort_t d, Char_t r, 
105                  Double_t vz, Double_t eta, Double_t phi,
106                  Bool_t first);
107   TH1I*  fHEvents;           // All Events
108   TH1I*  fHEventsTr;         // Histogram of events w/trigger
109   TH1I*  fHEventsTrVtx;      // Events w/trigger and vertex 
110   TH1I*  fHEventsVtx;        // Events w/vertex 
111   TH1I*  fHTriggers;         // Triggers
112   TH3D*  fPrimaryInnerAll;   // Distribution of primaries - all events
113   TH3D*  fPrimaryOuterAll;   // Distribution of primaries - all events
114   TH3D*  fPrimaryInnerTrVtx; // Distribution of primaries - trg+vtx events
115   TH3D*  fPrimaryOuterTrVtx; // Distribution of primaries - trg+vtx events
116   TH3D*  fHitsFMD1i;         // Distribution of FMD1i hits 
117   TH3D*  fHitsFMD2i;         // Distribution of FMD2i hits 
118   TH3D*  fHitsFMD2o;         // Distribution of FMD2o hits 
119   TH3D*  fHitsFMD3i;         // Distribution of FMD3i hits 
120   TH3D*  fHitsFMD3o;         // Distribution of FMD3o hits 
121   TH1D*  fStripsFMD1i;       // Distribution of FMD1i # strips hit
122   TH1D*  fStripsFMD2i;       // Distribution of FMD2i # strips hit 
123   TH1D*  fStripsFMD2o;       // Distribution of FMD2o # strips hit 
124   TH1D*  fStripsFMD3i;       // Distribution of FMD3i # strips hit 
125   TH1D*  fStripsFMD3o;       // Distribution of FMD3o # strips hit 
126   TAxis  fVtxAxis;           // Vertex axis 
127   TAxis  fEtaAxis;           // Eta axis 
128
129   TList* fList; // Output list 
130
131   ClassDef(AliForwardMCCorrectionsTask,1) // Forward corrections class
132 };
133
134 #endif
135 // Local Variables:
136 //  mode: C++
137 // End:
138