new analysis classes, not yet in build system
[u/mrichter/AliRoot.git] / HLT / JET / analysis / AliHLTJETAnalysisMerge.h
1 //-*- Mode: C++ -*-
2
3 // $Id: AliHLTJETAnalysisMerge.h  $
4
5 #ifndef ALIHLTJETANALYSISMERGE_H
6 #define ALIHLTJETANALYSISMERGE_H
7
8 /* This file is property of and copyright by the ALICE HLT Project        * 
9  * ALICE Experiment at CERN, All rights reserved.                         *
10  * See cxx source for full Copyright notice                               */
11
12 /** @file   AliHLTJETAnalysisMerge.h
13     @author Jochen Thaeder
14     @date   
15     @brief  Container merging analysis objects
16 */
17
18 // see below for class documentation
19 // or
20 // refer to README to build package
21 // or
22 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
23
24
25 #include "AliHLTLogging.h"
26
27 #include "AliHLTJETAnalysisBase.h"
28 #include "AliHLTJETAnalysisJets.h"
29
30 class TH1;
31 class TCanvas;
32 class TObjArray;
33
34 class AliHLTJETJets;
35
36
37 /**
38  * @class AliHLTJETAnalysisMerge
39  * This class merges analysis objects oft the type
40  * AliHLTJETAnalysisJets. It takes care of the plotting.
41  *
42  * @ingroup alihlt_jet
43  * @ingroup alihlt_jet_analysis
44  */
45
46 class AliHLTJETAnalysisMerge : public TObject, public AliHLTLogging {
47 public:
48   
49   /*
50    * ---------------------------------------------------------------------------------
51    *                            Constructor / Destructor
52    * ---------------------------------------------------------------------------------
53    */
54
55   /** Constructor */
56   AliHLTJETAnalysisMerge();
57   
58   /** Destructor */
59   ~AliHLTJETAnalysisMerge();
60
61   /*
62    * ---------------------------------------------------------------------------------
63    *                         Initialize / Setup / Reset - public
64    * ---------------------------------------------------------------------------------
65    */
66
67   /** Initialize class and members */
68   Int_t Initialize();
69
70   /*
71    * ---------------------------------------------------------------------------------
72    *                                Setter - public
73    * ---------------------------------------------------------------------------------
74    */
75
76   /** Add analysis histogram object to list of AliHLTJETAnalysisJets
77    * param jets  Ptr to AliHLTJETAnalysisJets
78    */
79   void AddJets( AliHLTJETAnalysisJets* jets );
80
81   /*
82    * ---------------------------------------------------------------------------------
83    *                                 Getter - public
84    * ---------------------------------------------------------------------------------
85    */
86
87   /** Get List of canvases */
88   TObjArray* GetCanvasList() const { return fCanvasArray; }
89
90   /*
91    * ---------------------------------------------------------------------------------
92    *                             Output - public
93    * ---------------------------------------------------------------------------------
94    */
95
96   /** Create all Canvases */
97   void CreateCanvas();
98   
99   ///////////////////////////////////////////////////////////////////////////////////
100   
101  private:
102  
103   /** copy constructor prohibited */
104   AliHLTJETAnalysisMerge(const AliHLTJETAnalysisMerge&);
105   
106   /** assignment operator prohibited */
107   AliHLTJETAnalysisMerge& operator=(const AliHLTJETAnalysisMerge&);
108
109   /*
110    * ---------------------------------------------------------------------------------
111    *                             Output - private
112    * ---------------------------------------------------------------------------------
113    */
114
115   /** Create canvas for spectra histograms */
116   void CreateCanvasSpectra();
117
118   /** Create canvas for delta histograms */
119   void CreateCanvasDelta();
120
121   /** Create canvas for matched histograms */
122   void CreateCanvasMatched();
123   
124   /*
125    * ---------------------------------------------------------------------------------
126    *                               Helper - private
127    * ---------------------------------------------------------------------------------
128    */
129
130   /** Add a new canvas to the canvas list
131    *  @param name     Name of the canvas
132    *  @param divideX  Number of columns of histograms
133    *  @param divideY  Number of lines of histograms
134    *  @return         Ptr to new created canvas
135    */
136   TCanvas* AddCanvas( TString name, Int_t divideX, Int_t divideY ); 
137
138   /** Draw a histogram
139    *  @param canvas  Ptr to canvas, to be drawn in.
140    *  @param idx     Pad index in the canvas
141    *  @param hist    Ptr to histogram
142    *  @param bScale  If hist should be scaled 
143    *  @param bLogY   If hist Y-axis should be logarithmic 
144    */
145   void DrawHistogram( TCanvas* canvas, Int_t idx, TH1* hist, Bool_t bScale, Bool_t bLogY);
146
147   /*
148    * ---------------------------------------------------------------------------------
149    *                             Members - private
150    * ---------------------------------------------------------------------------------
151    */
152
153   /** List of canvases */ 
154   TObjArray *fCanvasArray;            //! transient
155
156   /** List of AliHLTJETAnalysisJets objects */
157   TObjArray *fAnalysisJetsArray;      //! transient
158
159   ClassDef(AliHLTJETAnalysisMerge, 2);
160 };
161 #endif