]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/FORWARD/analysis2/AliForwardMultiplicityDistribution.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / FORWARD / analysis2 / AliForwardMultiplicityDistribution.h
1 /**
2  * @file   AliForwardMultiplicityDistribution.h
3  * @author Christian Holm Christensen <cholm@master.hehi.nbi.dk>
4  * @date   Thu Feb  7 01:02:42 2013
5  * 
6  * @brief  
7  * 
8  * 
9  * @ingroup pwglf_forward_multdist
10  */
11 #ifndef ALIFORWARDMULTIPLICITYDISTRIBUTION_H
12 #define ALIFORWARDMULTIPLICITYDISTRIBUTION_H
13 #include "AliBaseAODTask.h"
14
15 class TH2D;
16
17 /**
18  * Task to do the multiplicity distibution
19  * 
20  * @ingroup pwglf_forward Tasks
21  * @ingroup pwglf_forward_multdist
22  * @todo Should not inherit from AliBasedNdetaTask 
23  */
24 class AliForwardMultiplicityDistribution : public AliBaseAODTask
25 {
26 public:
27   /**
28    * Default Constructor
29    */
30   AliForwardMultiplicityDistribution();
31   /**
32    * Constructor
33    */
34   AliForwardMultiplicityDistribution(const char* name);
35   /**
36    * Destructor
37    */
38   virtual ~AliForwardMultiplicityDistribution(){}
39   /**
40    * Embedded Class begins here
41    */
42   struct Bin : public TNamed
43   {
44     /**
45      * Default Constructor
46      */
47     Bin();
48     /**
49      * Constructor
50      */
51     Bin(Double_t etaLow, Double_t etaHigh);
52     /**
53      * Copy Constructor
54      */    
55     Bin(const Bin&){;}
56     /**
57      * Assignment operator
58      */
59     Bin& operator=(const Bin&){return*this;}
60     /**
61      * Destructor
62      */    
63     ~Bin(){}
64     /**
65      *  Define outputs of a single eta bin
66      */
67     virtual void CreateOutputObjectss(TList* cont,  Int_t max);
68     /**
69      * Process a single eta bin
70      */
71     virtual void Process(TH1D* dndetaForward, TH1D* dndetaCentral, TH1D* normForward,   TH1D* normCentral, Double_t VtxZ);
72     Double_t fEtaLow;           // low eta limit 
73     Double_t fEtaHigh;          // high eta limit 
74     TH1D*    fHist;             // multiplicity distribution hist 
75     TH1D*    fHistPlus05;       // mult. dist. hist scaled up with 5%
76     TH1D*    fHistPlus075;      // mult. dist. hist scaled up with 7.5%
77     TH1D*    fHistPlus10;       // mult. dist. hist scaled up with 10%
78     TH1D*    fHistMinus05;      // mult. dist. hist scaled down with 5%
79     TH1D*    fHistMinus075;     // mult. dist. hist scaled down with 7.5%
80     TH1D*    fHistMinus10;      // mult. dist. hist scaled down with 10%
81     TH1D*    fHistPlusSys;      // mult. dist. hist scaled up with the event uncertainty
82     TH1D*    fHistMinusSys;     // mult. dist, hist scaled down with the event uncertainty
83     TH2D*    fAcceptance;       // histogram showing the 'holes' in acceptance. 
84                                 // BinContent of 1 shows a hole, and BinContent of 10 shows data coverage
85     TH2D*    fVtxZvsNdataBins;  // VtxZ vs. number of data acceptance bins (normalised to the eta range) 
86     
87     ClassDef(Bin,3);  // Manager of data 
88   };
89   /**
90    * Create Output Objects
91    */
92   virtual Bool_t Book();
93   /**
94    * User Exec
95    */
96   Bool_t Event(AliAODEvent& aod);
97   /**
98    * Terminate
99    */
100   Bool_t Finalize() { return true; }
101   /**
102    * Set Centrality
103    */
104   void SetCentrality(Int_t low, Int_t high) { SetCentralityAxis(low, high); }
105   /**
106    * Set fNBins, multiplicity histos run from 0 to fNBins
107    */
108   void SetNBins(Int_t n){fNBins= n;}
109   /** 
110    * Add another eta bin to the task
111    */
112   void AddBin(Double_t etaLow, Double_t etaHigh){fBins.Add(new Bin(etaLow, etaHigh)); }
113   /**
114    *  Form name of eta bin
115    */
116   static const Char_t* FormBinName(Double_t etaLow, Double_t etaHigh);
117 protected:
118   /**
119    * Copy Constructor
120    */ 
121   AliForwardMultiplicityDistribution(const AliForwardMultiplicityDistribution&);
122   /**
123    * Assignment Operator
124    */
125   AliForwardMultiplicityDistribution& 
126   operator=(const AliForwardMultiplicityDistribution&);
127
128   TList  fBins;      // eta bin list
129   Int_t  fNBins;     // multiplicity axis' runs from 0 to fNbins
130   ClassDef(AliForwardMultiplicityDistribution, 3); 
131 };
132
133 #endif
134 // Local Variables:
135 //   mode: C++
136 // End: