Fixes in order to treat correctly event and sub-event header extensions.
[u/mrichter/AliRoot.git] / MONITOR / AliMonitor.cxx
1 /**************************************************************************
2  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3  *                                                                        *
4  * Author: The ALICE Off-line Project.                                    *
5  * Contributors are mentioned in the code where appropriate.              *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          *
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /* $Id$ */
17
18 ///////////////////////////////////////////////////////////////////////////////
19 //                                                                           //
20 //  This is the base class for the creation and filling of monitor           //
21 //  histograms.                                                              //
22 //  Derived classes have to implement the methods CreateHistos and           //
23 //  FillHistos. CreateHistos has to create the monitor histograms, put       //
24 //  them into a new folder and add this folder to the given root folder.     //
25 //  FillHistos has to fill the data of the current event into the created    //
26 //  monitor histograms.                                                      //
27 //                                                                           //
28 ///////////////////////////////////////////////////////////////////////////////
29
30
31 #include <TFolder.h>
32 #include <TH1.h>
33 #include <TH2.h>
34
35 #include "AliLog.h"
36 #include "AliMonitorTrend.h"
37
38 #include "AliMonitor.h"
39
40
41 ClassImp(AliMonitor) 
42
43
44 //_____________________________________________________________________________
45 AliMonitor::AliMonitor():
46   TObject(),
47   fFolder(NULL)
48 {
49 }
50
51 //_____________________________________________________________________________
52 void AliMonitor::CreateBranches(TTree*)
53 {
54 // add branches to the monitor tree
55 // by default no branches are added
56 // this method can be overwritten by derived classes
57
58 }
59
60
61 //_____________________________________________________________________________
62 AliMonitorHisto* AliMonitor::CreateHisto1(const char* name, const char* title,
63                               Int_t xBins, Double_t xMin, Double_t xMax,
64                               const char* xTitle, const char* yTitle,
65                               AliMonitorHisto::ENorm norm)
66 {
67 // create a 1 dimensional monitor histogram and add it to fFolder
68
69   TH1F* histo = new TH1F(name, title, xBins, xMin, xMax);
70   histo->SetMarkerStyle(kFullCircle);
71   histo->GetXaxis()->SetTitle(xTitle);
72   histo->GetYaxis()->SetTitle(yTitle);
73   AliMonitorHisto* result = new AliMonitorHisto(histo, norm);
74   fFolder->Add(result);
75   return result;
76 }
77
78 //_____________________________________________________________________________
79 AliMonitorHisto* AliMonitor::CreateHisto2(const char* name, const char* title,
80                               Int_t xBins, Double_t xMin, Double_t xMax,
81                               Int_t yBins, Double_t yMin, Double_t yMax,
82                               const char* xTitle, const char* yTitle,
83                               const char* zTitle,
84                               AliMonitorHisto::ENorm norm)
85 {
86 // create a 2 dimensional monitor histogram and add it to fFolder
87
88   TH2F* histo = new TH2F(name, title, xBins, xMin, xMax, yBins, yMin, yMax);
89   histo->SetOption("BOX");
90   histo->GetXaxis()->SetTitle(xTitle);
91   histo->GetYaxis()->SetTitle(yTitle);
92   histo->GetZaxis()->SetTitle(zTitle);
93   AliMonitorHisto* result = new AliMonitorHisto(histo, norm);
94   fFolder->Add(result);
95   return result;
96 }
97
98 //_____________________________________________________________________________
99 AliMonitorTrend* AliMonitor::CreateTrend(const char* name, const char* title,
100                                          const char* label, 
101                                          Double_t min, Double_t max)
102 {
103 // create a trend monitor histogram and add it to fFolder
104
105   AliMonitorTrend* result = new AliMonitorTrend(name, title, label, min, max);
106   fFolder->Add(result);
107   return result;
108 }
109