]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliAnalysisTask3PCorrelations.h
Corrected end-of-line behavior
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTask3PCorrelations.h
1 #ifndef AliAnalysisTask3PCorrelations_H_Included
2 #define AliAnalysisTask3PCorrelations_H_Included
3
4 #include "AliAnalysisTaskSE.h"
5 #include "TString.h"
6 #include "AliLog.h"
7
8 class AliAODEvent;
9 class AliESDEvent;
10 class AliInputEventHandler;
11 //class AliMCEvent;
12 //class AliMCEventHandler;
13 class TH1;
14 class TH2;
15 class TH2;
16 class TH3;
17 class TH1F;
18 class TH2F;
19 class TH2F;
20 class TH3F;
21 class TH1D;
22 class TH2D;
23 class TH2D;
24 class TH3D;
25 class TProfile;
26
27 ///This class is designed for 3 particle analysis.
28 ///There are 3 sets of cuts 
29 /// #1 : 'trigger'
30 /// #2 : low pt associates
31 /// #3 : low pt associates
32 class AliAnalysisTask3PCorrelations : public AliAnalysisTaskSE
33 {
34 public:
35   AliAnalysisTask3PCorrelations();  
36   AliAnalysisTask3PCorrelations(const TString & name);
37   
38 private:
39   AliAnalysisTask3PCorrelations(const  AliAnalysisTask3PCorrelations&);
40   const AliAnalysisTask3PCorrelations& operator=(const  AliAnalysisTask3PCorrelations&);
41
42 public:
43   virtual ~AliAnalysisTask3PCorrelations();
44
45   // Implementation of interace methods
46   //virtual void   ConnectInputData(Option_t *);
47   virtual void   UserCreateOutputObjects();
48   virtual void   UserExec(Option_t *option);
49   virtual void   FinishTaskOutput();
50   virtual void   Terminate(Option_t* );   
51   virtual void   createHistograms();
52   virtual void   finalizeHistograms();
53   
54   virtual void   addToList(TH1 *h);
55
56   TH1D * createHisto1D(const TString &  name, const TString &  title,int n, double xmin, double xmax,const TString &  xTitle, const TString &  yTitle);
57   TH1D * createHisto1D(const TString &  name, const TString &  title,int n, double * bins,const TString &  xTitle, const TString &  yTitle);
58   TH2D * createHisto2D(const TString &  name, const TString &  title, 
59                        int nx, double xmin, double xmax, int ny, double ymin, double ymax, const TString &  xTitle, const TString &  yTitle, const TString &  zTitle);
60   TH2D * createHisto2D(const TString &  name, const TString &  title, int nx, double* xbins, int ny, double ymin, double ymax, 
61                        const TString &  xTitle, const TString &  yTitle, const TString &  zTitle);
62   
63   TH1F * createHisto1F(const TString &  name, const TString &  title,int n, double xmin, double xmax,const TString &  xTitle, const TString &  yTitle);
64   TH1F * createHisto1F(const TString &  name, const TString &  title,int n, double * bins,const TString &  xTitle, const TString &  yTitle);
65   TH2F * createHisto2F(const TString &  name, const TString &  title, 
66                        int nx, double xmin, double xmax, int ny, double ymin, double ymax, const TString &  xTitle, const TString &  yTitle, const TString &  zTitle);
67   TH2F * createHisto2F(const TString &  name, const TString &  title, int nx, double* xbins, int ny, double ymin, double ymax, 
68                        const TString &  xTitle, const TString &  yTitle, const TString &  zTitle);
69   TH3F * createHisto3F(const TString &  name, const TString &  title, 
70                        int nx, double xmin, double xmax, int ny, double ymin, double ymax, int nz, double zmin, double zmax, 
71                        const TString &  xTitle, const TString &  yTitle, const TString &  zTitle);  
72   TProfile * createProfile(const TString &  title,const TString &  description, int n,  double xMin,double xMax,
73                            const TString &  xTitle, const TString &  yTitle);
74   TProfile * createProfile(const TString &  name,const TString &  description, 
75                            int nx,  double* bins,
76                            const TString &  xTitle, const TString &  yTitle);
77   
78   //________________________________________________________________________
79   
80   float  * getFloatArray(int size, float v);
81   double * getDoubleArray(int size, double v);
82   void fillHistoWithArray(TH1 * h, double * array, int size);
83   void fillHistoWithArray(TH2 * h, double * array, int size1, int size2);
84   void fillHistoWithArray(TH3 * h, double * array, int size1, int size2, int size3);
85   void fillHistoWithArray(TH1 * h, float * array, int size);
86   void fillHistoWithArray(TH2 * h, float * array, int size1, int size2);
87   void fillHistoWithArray(TH3 * h, float * array, int size1, int size2, int size3);
88   
89   virtual     void    SetDebugLevel( int v )              { _debugLevel   = v; }
90   virtual     void    SetSinglesOnly(int v)               { _singlesOnly  = v; } 
91   virtual     void    SetUseWeights(int v)                { _useWeights   = v; } 
92   
93   virtual     void    SetRejectPileup(int v)              { _rejectPileup         = v; } 
94   virtual     void    SetRejectPairConversion(int v)      { _rejectPairConversion = v; } 
95   virtual     void    SetVertexZMin(double v)             { _vertexZMin           = v; } 
96   virtual     void    SetVertexZMax(double v)             { _vertexZMax           = v; } 
97   virtual     void    SetVertexXYMin(double v)            { _vertexXYMin          = v; } 
98   virtual     void    SetVertexXYMax(double v)            { _vertexXYMax          = v; } 
99   virtual     void    SetCentralityMethod(int v)          { _centralityMethod     = v; }
100   virtual     void    SetCentrality(double centralityMin, double centralityMax)
101   {
102     _centralityMin = centralityMin;
103     _centralityMax = centralityMax;
104   }
105   virtual     void    SetPtMin1( double v)            { _min_pt_1          = v; } 
106   virtual     void    SetPtMax1( double v)            { _max_pt_1          = v; } 
107   virtual     void    SetEtaMin1(double v)            { _min_eta_1         = v; } 
108   virtual     void    SetEtaMax1(double v)            { _max_eta_1         = v; } 
109   virtual     void    SetPtMin2( double v)            { _min_pt_2          = v; } 
110   virtual     void    SetPtMax2( double v)            { _max_pt_2          = v; } 
111   virtual     void    SetEtaMin2(double v)            { _min_eta_2         = v; } 
112   virtual     void    SetEtaMax2(double v)            { _max_eta_2         = v; } 
113   virtual     void    SetPtMin3( double v)            { _min_pt_3          = v; } 
114   virtual     void    SetPtMax3( double v)            { _max_pt_3          = v; } 
115   virtual     void    SetEtaMin3(double v)            { _min_eta_3         = v; } 
116   virtual     void    SetEtaMax3(double v)            { _max_eta_3         = v; } 
117   virtual     void    SetDcaZMin(double v)            { _dcaZMin           = v; } 
118   virtual     void    SetDcaZMax(double v)            { _dcaZMax           = v; } 
119   virtual     void    SetDcaXYMin(double v)           { _dcaXYMin          = v; } 
120   virtual     void    SetDcaXYMax(double v)           { _dcaXYMax          = v; } 
121   virtual     void    SetDedxMin(double v)            { _dedxMin           = v; } 
122   virtual     void    SetDedxMax(double v)            { _dedxMax           = v; } 
123   virtual     void    SetNClusterMin(int v)           { _nClusterMin       = v; } 
124   virtual     void    SetTrackFilterBit(int v)        { _trackFilterBit    = v; }
125   virtual     void    SetWeigth_1P(TH3F * v)          { _weight_1P          = v; }
126   virtual     void    SetWeigth_1M(TH3F * v)          { _weight_1M          = v; }
127   virtual     void    SetWeigth_2P(TH3F * v)          { _weight_2P          = v; }
128   virtual     void    SetWeigth_2M(TH3F * v)          { _weight_2M          = v; }
129   virtual     void    SetWeigth_3P(TH3F * v)          { _weight_3P          = v; }
130   virtual     void    SetWeigth_3M(TH3F * v)          { _weight_3M          = v; }
131   
132   
133 protected:      
134   
135   // Handlers and events
136   AliAODEvent*             fAODEvent;             //! AOD Event 
137   AliESDEvent*             fESDEvent;             //! ESD Event 
138   AliInputEventHandler*    fInputHandler;    //! Generic InputEventHandler 
139   
140   // Histogram settings
141   //TList*              _inputHistoList;
142   TList*              _outputHistoList;
143   //int _outputSlot;
144   
145   
146   double   _twoPi;
147   long     _eventCount;
148   
149   //configuration variables and filters
150   int      _debugLevel;
151   int      _singlesOnly; 
152   int      _useWeights; 
153   int      _rejectPileup; 
154   int      _rejectPairConversion; 
155   double   _vertexZMin; 
156   double   _vertexZMax; 
157   double   _vertexXYMin; 
158   double   _vertexXYMax; 
159   int      _centralityMethod;
160   double   _centralityMin;
161   double   _centralityMax;
162   double   _dcaZMin; 
163   double   _dcaZMax; 
164   double   _dcaXYMin; 
165   double   _dcaXYMax;
166   double   _dedxMin;
167   double   _dedxMax;
168   int      _nClusterMin; 
169   int      _trackFilterBit;
170   
171  
172   // event and track wise variables
173   
174   double _field;
175   int    _nTracks;
176   double _mult0;
177   double _mult1;
178   double _mult2;
179   double _mult3;
180   double _mult4;
181   double _mult5;
182   double _mult6;
183   
184   //particle 1
185   int     arraySize;
186   
187   int    *_id_1;              //!
188   int    *_charge_1;          //! 
189   int    *_iPhi_1;            //!
190   float  *_pt_1;              //!
191   float  *_px_1;              //!
192   float  *_py_1;              //!
193   float  *_pz_1;              //!
194   float  *_correction_1;      //!
195   float  *_dedx_1;            //!
196   
197   //particle 2
198   int    *_id_2;              //!
199   int    *_charge_2;          //!
200   int    *_iPhi_2;            //!
201   float  *_pt_2;              //!
202   float  *_px_2;              //!
203   float  *_py_2;              //!
204   float  *_pz_2;              //!
205   float  *_correction_2;      //!
206   float  *_dedx_2;            //!
207   
208   //particle 3
209   int    *_id_3;              //!
210   int    *_charge_3;          //!
211   int    *_iPhi_3;            //!
212   float  *_pt_3;              //!
213   float  *_px_3;              //!
214   float  *_py_3;              //!
215   float  *_pz_3;              //!
216   float  *_correction_3;      //!
217   float  *_dedx_3;            //!
218   
219   float * _correctionWeight_1P;           //!
220   float * _correctionWeight_1M;           //!
221   float * _correctionWeight_2P;           //!
222   float * _correctionWeight_2M;           //!
223   float * _correctionWeight_3P;           //!
224   float * _correctionWeight_3M;           //!
225   
226   //histograming
227   int _nBins_M0;       double _min_M0;       double _max_M0;       double _width_M0;
228   int _nBins_M1;       double _min_M1;       double _max_M1;       double _width_M1;
229   int _nBins_M2;       double _min_M2;       double _max_M2;       double _width_M2;
230   int _nBins_M3;       double _min_M3;       double _max_M3;       double _width_M3;
231   int _nBins_M4;       double _min_M4;       double _max_M4;       double _width_M4;
232   int _nBins_M5;       double _min_M5;       double _max_M5;       double _width_M5;
233   int _nBins_M6;       double _min_M6;       double _max_M6;       double _width_M6;
234   int _nBins_vsM;      double _min_vsM;      double _max_vsM;      double _width_vsM;
235   
236   int _nBins_vertexZ;  double _min_vertexZ;  double _max_vertexZ;  double _width_vertexZ;
237   
238   int _nBins_pt_1;     double _min_pt_1;     double _max_pt_1;     double _width_pt_1;
239   int _nBins_phi_1;    double _min_phi_1;    double _max_phi_1;    double _width_phi_1;
240   int _nBins_eta_1;    double _min_eta_1;    double _max_eta_1;    double _width_eta_1;
241   int _nBins_etaPhi_1; 
242   int _nBins_etaPhiPt_1;
243   int _nBins_zEtaPhiPt_1;
244   
245   int _nBins_pt_2;     double _min_pt_2;     double _max_pt_2;     double _width_pt_2;
246   int _nBins_phi_2;    double _min_phi_2;    double _max_phi_2;    double _width_phi_2;
247   int _nBins_eta_2;    double _min_eta_2;    double _max_eta_2;    double _width_eta_2;
248   int _nBins_etaPhi_2; 
249   int _nBins_etaPhiPt_2;
250   int _nBins_zEtaPhiPt_2;
251   
252   int _nBins_pt_3;     double _min_pt_3;     double _max_pt_3;     double _width_pt_3;
253   int _nBins_phi_3;    double _min_phi_3;    double _max_phi_3;    double _width_phi_3;
254   int _nBins_eta_3;    double _min_eta_3;    double _max_eta_3;    double _width_eta_3;
255   int _nBins_etaPhi_3; 
256   int _nBins_etaPhiPt_3;
257   int _nBins_zEtaPhiPt_3;
258
259   int _nBins_phi_12;
260   int _nBins_phi_13;
261   int _nBins_phi_23;
262   int _nBins_phi_123;
263   
264   int _nBins_etaPhi_12;
265   int _nBins_etaPhi_13;
266   int _nBins_etaPhi_23;
267   int _nBins_etaPhi_123;
268     
269   double __n1_1;
270   double __n1_2;
271   double __n1_3;
272   double __n2_12;   
273   double __n2_13;   
274   double __n2_23;   
275   double __n3_123;   
276   
277   double __n1Nw_1;
278   double __n1Nw_2;
279   double __n1Nw_3;
280   double __n2Nw_12;   
281   double __n2Nw_13;   
282   double __n2Nw_23;   
283   
284   double __n3Nw_123;   
285   
286   double * __n1_1_vsPt;   //!
287   double * __n1_1_vsPhi;     //! 
288   float  * __n1_1P_vsZEtaPhiPt;    //!
289   float  * __n1_1M_vsZEtaPhiPt;    //!
290     
291   double * __n1_2_vsPt;   //!
292   double * __n1_2_vsPhi;     //! 
293   float  * __n1_2P_vsZEtaPhiPt;    //!
294   float  * __n1_2M_vsZEtaPhiPt;    //!
295   
296   double * __n1_3_vsPt;   //!
297   double * __n1_3_vsPhi;     //! 
298   float  * __n1_3P_vsZEtaPhiPt;    //!
299   float  * __n1_3M_vsZEtaPhiPt;    //!
300   
301   float  * __n2_12_vsPhi;   //!
302   float  * __n2_13_vsPhi;   //!
303   float  * __n2_23_vsPhi;   //!
304   float  * __n3_123_vsPhi;   //!
305   
306   TH3F * _weight_1P;
307   TH3F * _weight_1M;
308   TH3F * _weight_2P;
309   TH3F * _weight_2M;
310   TH3F * _weight_3P;
311   TH3F * _weight_3M;
312   TH1D * _eventAccounting;
313   TH1D * _m0;
314   TH1D * _m1;
315   TH1D * _m2;
316   TH1D * _m3;
317   TH1D * _m4;
318   TH1D * _m5;
319   TH1D * _m6;
320   TH1D * _vertexZ;
321   
322   // PARTICLE 1 (satisfies filter 1)
323   // Primary filled quantities
324   TH1F      *  _n1_1_vsPhi;
325   TProfile  *  _n1_1_vsM;  // w/ weight
326   TProfile  *  _n1Nw_1_vsM; // w/o weight
327
328   TH1F      *  _n1_1_vsPt;         
329   TH3F      *  _n1_1P_vsZVsEtaVsPhiVsPt;
330   TH3F      *  _n1_1M_vsZVsEtaVsPhiVsPt;
331   TH2F      *  _dedxVsP_1;
332   TH2F      *  _corrDedxVsP_1;
333   TH2F      *  _betaVsP_1;
334   
335   // PARTICLE 2 (satisfies filter 2)
336   // Primary filled quantities
337   TH1F      *  _n1_2_vsPhi;
338   TProfile  *  _n1_2_vsM;  // w/ weight
339   TProfile  *  _n1Nw_2_vsM; // w/o weight
340
341   TH1F      *  _n1_2_vsPt;         
342   TH3F      *  _n1_2P_vsZVsEtaVsPhiVsPt;
343   TH3F      *  _n1_2M_vsZVsEtaVsPhiVsPt;
344   TH2F      *  _dedxVsP_2;
345   TH2F      *  _corrDedxVsP_2;
346   TH2F      *  _betaVsP_2;
347
348   // PARTICLE 3 (satisfies filter 3)
349   // Primary filled quantities
350   TH1F      *  _n1_3_vsPhi;
351   TProfile  *  _n1_3_vsM;  // w/ weight
352   TProfile  *  _n1Nw_3_vsM; // w/o weight
353
354   TH1F      *  _n1_3_vsPt;         
355   TH3F      *  _n1_3P_vsZVsEtaVsPhiVsPt;
356   TH3F      *  _n1_3M_vsZVsEtaVsPhiVsPt;
357   TH2F      *  _dedxVsP_3;
358   TH2F      *  _corrDedxVsP_3;
359   TH2F      *  _betaVsP_3;
360
361   // Pairs 1 & 2  
362   TH2F      * _n2_12_vsPhi;        
363   TH2F      * _n2_13_vsPhi;        
364   TH2F      * _n2_23_vsPhi;        
365
366   // Triplets
367   TH3F      * _n3_123_vsPhi;        
368   
369   TProfile * _n2_12_vsM;        
370   TProfile * _n2_13_vsM;        
371   TProfile * _n2_23_vsM;        
372   TProfile * _n3_123_vsM;        
373   TProfile * _n2Nw_12_vsM;        
374   TProfile * _n2Nw_13_vsM;        
375   TProfile * _n2Nw_23_vsM;        
376   TProfile * _n3Nw_123_vsM;        
377   
378   TString n1Name;
379   TString n2Name;
380   TString n3Name;
381   TString n1NwName;
382   TString n2NwName;
383   TString n3NwName;
384   TString n1n1Name;
385   TString n1n1n1Name;
386   TString n2n1Name;
387   TString r1Name;
388   TString r2Name;
389   TString r3Name;
390   TString r2r1Name;
391   TString c2Name;
392   TString c3Name;
393   TString d3Name;
394   TString p3Name;
395
396   TString intR2Name;
397   TString binCorrName;
398   TString intBinCorrName;
399   
400   TString countsName;
401   TString part_1_Name;
402   TString part_1P_Name;
403   TString part_1M_Name;
404   TString part_2_Name;
405   TString part_2P_Name;
406   TString part_2M_Name;
407   TString part_3_Name;
408   TString part_3P_Name;
409   TString part_3M_Name;
410   TString pair_12_Name;
411   TString pair_13_Name;
412   TString pair_23_Name;
413   TString triplet_Name;
414   
415   TString _title_counts;
416   TString _title_m0;
417   TString _title_m1;
418   TString _title_m2;
419   TString _title_m3;
420   TString _title_m4;
421   TString _title_m5;
422   TString _title_m6;
423   
424   TString _title_phi_1;
425   TString _title_phi_2;
426   TString _title_phi_3;
427   TString _title_phi_12;
428   TString _title_phi_13;
429   TString _title_phi_23;
430   TString _title_phi_123;
431    
432   TString vsZ;
433   TString vsM;
434   TString vsPt;
435   TString vsPhi; 
436   TString vsEta; 
437   TString vsEtaPhi; 
438   
439   ClassDef(AliAnalysisTask3PCorrelations,1)
440 }; 
441
442
443 #endif
444
445