ROOT logo
#ifndef HMONHIST_H
#define HMONHIST_H
using namespace std;
#include "TNamed.h"
#include "TString.h"
#include "TArrayI.h"
#include "TCanvas.h"
#include "TH1.h"
#include "TH2.h"
#include "TLegend.h"
#include <iostream> 
#include <iomanip>


/** Base Class of all Histogram classes.
* Contains all setup information of the histogram and the canvas.
*/

class HOnlineMonHistAddon: public TNamed {
protected:
    // hist properties
    Int_t fIsActive;    ///< switch for active/inactive
    Int_t fisResetable; ///< switch for resetable/not resetable
    Int_t refreshrate;  ///< refreshrate of the hist
    Int_t send;         ///< send/don't send to gui
    Int_t nBinsX;       ///< number of bins in X
    Float_t Xlo;        ///< min X range of hist
    Float_t Xup;        ///< max X range of hist
    Int_t nBinsY;       ///< number of bins in Y
    Float_t Ylo;        ///< min Y range of hist
    Float_t Yup;        ///< max Y range of hist
    Int_t arraySize1;   ///< size 1 of 2-Dim array (1 if only 1-Dim is reqested
    Int_t arraySize2;   ///< size 2 of 2-Dim array
    TString XTitle;     ///< X Title of hist
    TString YTitle;     ///< Y Title of hist
    TString ZTitle;     ///< Z Title of hist
    TString Option;     ///< draw option of hist
    TString directory;  ///< output directory of hist
    TString HistType;   ///< 1S,1F,1D,2S,2F,2D hist types
    TString format;     ///< mon,trend,array,trendarray
    Int_t stat;         ///< switch for Stats option of hist
    Int_t max;          ///< max range of hist
    Int_t min;          ///< min range of hist

    Int_t linecol;      ///< line color of hist
    Int_t linestyle;    ///< line style of hist
    Int_t fillcol;      ///< fill color of hist
    Int_t fillstyle;    ///< fill style of hist
    Int_t markercol;    ///< marker color of hist
    Int_t markerstyle;  ///< marker style of hist
    Float_t markersize; ///< marker size of hist

    // canvas properties
    Int_t logX;         ///< log X option of canvas
    Int_t logY;         ///< log Y option of canvas
    Int_t logZ;         ///< log Z option of canvas
    Int_t gridX;        ///< grid X option of canvas
    Int_t gridY;        ///< grid Y option of canvas
    Bool_t drawSame;    ///< draw same option on client side

    TLegend*  legend;   ///< legend for histogram arrays
    Float_t legxmin;    ///< legend for histogram arrays
    Float_t legymin;    ///< legend for histogram arrays
    Float_t legxmax;    ///< legend for histogram arrays
    Float_t legymax;    ///< legend for histogram arrays
    TString legform;    ///< legend for histogram arrays
public:
    HOnlineMonHistAddon (const Char_t* name   ="",
		   const Char_t* title  ="",
		   Int_t active=0,Int_t resetable=0,
		   Int_t nbinsX=0,Float_t xlo=0,Float_t xup=0,
		   Int_t nbinsY=0,Float_t ylo=0,Float_t yup=0);
    /// init data members from Text_t
    HOnlineMonHistAddon (Text_t*);
    virtual  ~HOnlineMonHistAddon(void);
    void     setActive   (Int_t active)  {fIsActive=active;}
    Int_t    getActive   ()              {return fIsActive;}
    void     setResetable(Int_t reset)   {fisResetable=reset;}
    Int_t    getResetable()              {return fisResetable;}
    void     setRefreshRate(Int_t fresh) {refreshrate=fresh;}
    Int_t    getRefreshRate()            {return refreshrate;}
    void     setSend(Int_t i)            {send=i;}
    Int_t    getSend()                   {return send;}
    void     setNBinsX(Int_t i)          {nBinsX=i;}
    Int_t    getNBinsX()                 {return nBinsX;}
    void     setXLo(Float_t i)           {Xlo=i;}
    Float_t  getXLo()                    {return Xlo;}
    void     setXUp(Float_t i)           {Xup=i;}
    Float_t  getXUp()                    {return Xup;}
    void     setNBinsY(Int_t i)          {nBinsY=i;}
    Int_t    getNBinsY()                 {return nBinsY;}
    void     setYLo(Float_t i)           {Ylo=i;}
    Float_t  getYLo()                    {return Ylo;}
    void     setYUp(Float_t i)           {Yup=i;}
    Float_t  getYUp()                    {return Yup;}
    void     setSize1(Int_t i)           {arraySize1=i;}
    Int_t    getSize1()                  {return arraySize1;}
    void     setSize2(Int_t i)           {arraySize2=i;}
    Int_t    getSize2()                  {return arraySize2;}
    void     setStat(Int_t i)            {stat=i;}
    Int_t    getStat()                   {return stat;}
    void     setMax(Int_t i)             {max=i;}
    Int_t    getMax()                    {return max;}
    void     setMin(Int_t i)             {min=i;}
    Int_t    getMin()                    {return min;}
    void     setLineCol(Int_t i)         {linecol=i;}
    Int_t    getLineCol()                {return linecol;}
    void     setLineStyle(Int_t i)       {linestyle=i;}
    Int_t    getLineStyle()              {return linestyle;}
    void     setFillCol(Int_t i)         {fillcol=i;}
    Int_t    getFillCol()                {return fillcol;}
    void     setFillStyle(Int_t i)       {fillstyle=i;}
    Int_t    getFillStyle()              {return fillstyle;}
    void     setMarkerCol(Int_t i)       {markercol=i;}
    Int_t    getMarkerCol()              {return markercol;}
    void     setMarkerStyle(Int_t i)     {markerstyle=i;}
    Int_t    getMarkerStyle()            {return markerstyle;}
    void     setMarkerSize(Float_t i)    {markersize=i;}
    Float_t  getMarkerSize()             {return markersize;}
    void     setLogX(Int_t i)            {logX=i;}
    Int_t    getLogX()                   {return logX;}
    void     setLogY(Int_t i)            {logY=i;}
    Int_t    getLogY()                   {return logY;}
    void     setLogZ(Int_t i)            {logZ=i;}
    Int_t    getLogZ()                   {return logZ;}
    void     setGridX(Int_t i)           {gridX=i;}
    Int_t    getGridX()                  {return gridX;}
    void     setGridY(Int_t i)           {gridY=i;}
    Int_t    getGridY()                  {return gridY;}
    void     setDirectory(TString dir)   {directory=dir;}
    TString  getDirectory()              {return directory;}
    void     setXTitle(TString title)    {XTitle=title;}
    TString  getXTitle()                 {return XTitle;}
    void     setYTitle(TString title)    {YTitle=title;}
    TString  getYTitle()                 {return YTitle;}
    void     setZTitle(TString title)    {ZTitle=title;}
    TString  getZTitle()                 {return ZTitle;}
    void     setOption(TString opt)      {Option=opt;}
    TString  getOption()                 {return Option;}
    void     setHistType(TString type)   {HistType=type;}
    TString  getHistType()               {return HistType;}
    void     setFormat(TString form)     {format=form;}
    TString  getFormat()                 {return format;}
    void     setDrawSame(Bool_t drawS)   { drawSame = drawS;}
    Bool_t   getDrawSame()               {return drawSame;}
    TLegend* getLegend()                 {return legend;}
    void     setLegend(TLegend* leg)     {legend = leg;}
    void     getLegDim(Float_t& xmin,Float_t& ymin,Float_t& xmax,Float_t& ymax,TString& form) {form = legform; xmin=legxmin;xmax=legxmax;ymin=legymin;ymax=legymax;}
    void     setLegDim(Float_t xmin,Float_t ymin,Float_t xmax,Float_t ymax,TString form)      {legform = form;legxmin=xmin;legxmax=xmax;legymin=ymin;legymax=ymax;}
    /// Copy a Addon object to own data members
    void     copySet(HOnlineMonHistAddon&);
    /// extract a Addon object from own data members
    void     getSet(HOnlineMonHistAddon& add);
    /// read all data members from Text_t
    void     read(const Text_t*);
    /// put all data members to a formated Text_t
    void     getText(Text_t* txt);
    /// set the histogram options for TH1
    void     setHist(TH1*);
    /// set the histogram options for TH2
    void     setHist(TH2*);
    /// set the options of the canvas
    void     setCanvas(TCanvas* c);
    HOnlineMonHistAddon* createHist();

    /// interface for all derived objects,
    /// needed in Slot class
    virtual  void draw(Bool_t allowHiddenZero=1);
    /// interface for all derived objects
    /// needed in Slot class
    virtual  void reset(Int_t level,Int_t count);
    /// interface for all derived objects
    /// needed in Slot class
    virtual  void add(HOnlineMonHistAddon*);
    /// interface for all derived objects
    virtual  TH1* getP(Int_t s=0,Int_t m=0);
    virtual void  fill(Stat_t i,Stat_t j = 0);
    virtual void  fill(Int_t,Int_t,Stat_t,Stat_t = 0);
    virtual void  getMinMax(Double_t& min,Double_t& max) { min=max=0; }
    ClassDef(HOnlineMonHistAddon,1) // mon hist addidional features
};


/** Histogram class of 1-dim hists.
* Contains a TH1S, TH1F or TH1D histogram.
* Via getP() the internal histogram can be
* accessed and manipulated as standard histogram.
*/
class HOnlineMonHist: public HOnlineMonHistAddon {
protected:
    TH1* h;
public:
    HOnlineMonHist(const Char_t* name   ="",
		const Char_t* title  ="",
		Int_t active=0,Int_t resetable=0,
		Int_t nbinsX=0,Float_t xlo=0,Float_t xup=0);
    /// create the HOnlineMonHist from a HOnlineMonHistAddon
    HOnlineMonHist(HOnlineMonHistAddon&);
    virtual ~HOnlineMonHist();
    /// get the pointer to the internal histogram (parameters are not used yet. call getP() )
    TH1*    getP(Int_t s=0,Int_t m=0)         {return h;}
    /// reset the internal histogram
    void    reset(Int_t level,Int_t count);
    /// create the internal histogram
    void    create();
    /// draw the internal histogram
    void    draw(Bool_t allowHiddenZero=1);
    /// add the HOnlineMonHist h2 to the own hist
    void    add(HOnlineMonHistAddon* h2);

    void    getMinMax(Double_t& min,Double_t& max);

    ClassDef(HOnlineMonHist,1) // mon hist
};

/** Histogram class of 2-dim hists.
* Contains a TH2S, TH2F or TH2D histogram.
* Via getP() the internal histogram can be
* accessed and manipulated as standard histogram.
*/

class HOnlineMonHist2: public HOnlineMonHistAddon {
protected:
    TH2* h;
public:
    HOnlineMonHist2(const Char_t* name   ="",
		 const Char_t* title  ="",
		 Int_t active=0,Int_t resetable=0,
		 Int_t nbinsX=0,Float_t xlo=0,Float_t xup=0,
		 Int_t nbinsY=0,Float_t ylo=0,Float_t yup=0);
    /// create the HOnlineMonHist2 from a HOnlineMonHistAddon
    HOnlineMonHist2(HOnlineMonHistAddon&);
    ~HOnlineMonHist2();
    /// get the pointer to the internal histogram (parameters are not used yet. call getP() )
    TH2*    getP(Int_t s=0,Int_t m=0)         {return h;}
    /// reset the internal histogram
    void    reset(Int_t level,Int_t count);
    /// create the internal histogram
    void    create();
    /// draw the internal histogram
    void    draw(Bool_t allowHiddenZero=1);
    /// add the HOnlineMonHist2 h2 to the own hist
    void    add(HOnlineMonHistAddon* h2);
    void    getMinMax(Double_t& min,Double_t& max);
    ClassDef(HOnlineMonHist2,1) // mon hist
};
#endif  /*!HMONHIST_H*/
 honlinemonhist.h:1
 honlinemonhist.h:2
 honlinemonhist.h:3
 honlinemonhist.h:4
 honlinemonhist.h:5
 honlinemonhist.h:6
 honlinemonhist.h:7
 honlinemonhist.h:8
 honlinemonhist.h:9
 honlinemonhist.h:10
 honlinemonhist.h:11
 honlinemonhist.h:12
 honlinemonhist.h:13
 honlinemonhist.h:14
 honlinemonhist.h:15
 honlinemonhist.h:16
 honlinemonhist.h:17
 honlinemonhist.h:18
 honlinemonhist.h:19
 honlinemonhist.h:20
 honlinemonhist.h:21
 honlinemonhist.h:22
 honlinemonhist.h:23
 honlinemonhist.h:24
 honlinemonhist.h:25
 honlinemonhist.h:26
 honlinemonhist.h:27
 honlinemonhist.h:28
 honlinemonhist.h:29
 honlinemonhist.h:30
 honlinemonhist.h:31
 honlinemonhist.h:32
 honlinemonhist.h:33
 honlinemonhist.h:34
 honlinemonhist.h:35
 honlinemonhist.h:36
 honlinemonhist.h:37
 honlinemonhist.h:38
 honlinemonhist.h:39
 honlinemonhist.h:40
 honlinemonhist.h:41
 honlinemonhist.h:42
 honlinemonhist.h:43
 honlinemonhist.h:44
 honlinemonhist.h:45
 honlinemonhist.h:46
 honlinemonhist.h:47
 honlinemonhist.h:48
 honlinemonhist.h:49
 honlinemonhist.h:50
 honlinemonhist.h:51
 honlinemonhist.h:52
 honlinemonhist.h:53
 honlinemonhist.h:54
 honlinemonhist.h:55
 honlinemonhist.h:56
 honlinemonhist.h:57
 honlinemonhist.h:58
 honlinemonhist.h:59
 honlinemonhist.h:60
 honlinemonhist.h:61
 honlinemonhist.h:62
 honlinemonhist.h:63
 honlinemonhist.h:64
 honlinemonhist.h:65
 honlinemonhist.h:66
 honlinemonhist.h:67
 honlinemonhist.h:68
 honlinemonhist.h:69
 honlinemonhist.h:70
 honlinemonhist.h:71
 honlinemonhist.h:72
 honlinemonhist.h:73
 honlinemonhist.h:74
 honlinemonhist.h:75
 honlinemonhist.h:76
 honlinemonhist.h:77
 honlinemonhist.h:78
 honlinemonhist.h:79
 honlinemonhist.h:80
 honlinemonhist.h:81
 honlinemonhist.h:82
 honlinemonhist.h:83
 honlinemonhist.h:84
 honlinemonhist.h:85
 honlinemonhist.h:86
 honlinemonhist.h:87
 honlinemonhist.h:88
 honlinemonhist.h:89
 honlinemonhist.h:90
 honlinemonhist.h:91
 honlinemonhist.h:92
 honlinemonhist.h:93
 honlinemonhist.h:94
 honlinemonhist.h:95
 honlinemonhist.h:96
 honlinemonhist.h:97
 honlinemonhist.h:98
 honlinemonhist.h:99
 honlinemonhist.h:100
 honlinemonhist.h:101
 honlinemonhist.h:102
 honlinemonhist.h:103
 honlinemonhist.h:104
 honlinemonhist.h:105
 honlinemonhist.h:106
 honlinemonhist.h:107
 honlinemonhist.h:108
 honlinemonhist.h:109
 honlinemonhist.h:110
 honlinemonhist.h:111
 honlinemonhist.h:112
 honlinemonhist.h:113
 honlinemonhist.h:114
 honlinemonhist.h:115
 honlinemonhist.h:116
 honlinemonhist.h:117
 honlinemonhist.h:118
 honlinemonhist.h:119
 honlinemonhist.h:120
 honlinemonhist.h:121
 honlinemonhist.h:122
 honlinemonhist.h:123
 honlinemonhist.h:124
 honlinemonhist.h:125
 honlinemonhist.h:126
 honlinemonhist.h:127
 honlinemonhist.h:128
 honlinemonhist.h:129
 honlinemonhist.h:130
 honlinemonhist.h:131
 honlinemonhist.h:132
 honlinemonhist.h:133
 honlinemonhist.h:134
 honlinemonhist.h:135
 honlinemonhist.h:136
 honlinemonhist.h:137
 honlinemonhist.h:138
 honlinemonhist.h:139
 honlinemonhist.h:140
 honlinemonhist.h:141
 honlinemonhist.h:142
 honlinemonhist.h:143
 honlinemonhist.h:144
 honlinemonhist.h:145
 honlinemonhist.h:146
 honlinemonhist.h:147
 honlinemonhist.h:148
 honlinemonhist.h:149
 honlinemonhist.h:150
 honlinemonhist.h:151
 honlinemonhist.h:152
 honlinemonhist.h:153
 honlinemonhist.h:154
 honlinemonhist.h:155
 honlinemonhist.h:156
 honlinemonhist.h:157
 honlinemonhist.h:158
 honlinemonhist.h:159
 honlinemonhist.h:160
 honlinemonhist.h:161
 honlinemonhist.h:162
 honlinemonhist.h:163
 honlinemonhist.h:164
 honlinemonhist.h:165
 honlinemonhist.h:166
 honlinemonhist.h:167
 honlinemonhist.h:168
 honlinemonhist.h:169
 honlinemonhist.h:170
 honlinemonhist.h:171
 honlinemonhist.h:172
 honlinemonhist.h:173
 honlinemonhist.h:174
 honlinemonhist.h:175
 honlinemonhist.h:176
 honlinemonhist.h:177
 honlinemonhist.h:178
 honlinemonhist.h:179
 honlinemonhist.h:180
 honlinemonhist.h:181
 honlinemonhist.h:182
 honlinemonhist.h:183
 honlinemonhist.h:184
 honlinemonhist.h:185
 honlinemonhist.h:186
 honlinemonhist.h:187
 honlinemonhist.h:188
 honlinemonhist.h:189
 honlinemonhist.h:190
 honlinemonhist.h:191
 honlinemonhist.h:192
 honlinemonhist.h:193
 honlinemonhist.h:194
 honlinemonhist.h:195
 honlinemonhist.h:196
 honlinemonhist.h:197
 honlinemonhist.h:198
 honlinemonhist.h:199
 honlinemonhist.h:200
 honlinemonhist.h:201
 honlinemonhist.h:202
 honlinemonhist.h:203
 honlinemonhist.h:204
 honlinemonhist.h:205
 honlinemonhist.h:206
 honlinemonhist.h:207
 honlinemonhist.h:208
 honlinemonhist.h:209
 honlinemonhist.h:210
 honlinemonhist.h:211
 honlinemonhist.h:212
 honlinemonhist.h:213
 honlinemonhist.h:214
 honlinemonhist.h:215
 honlinemonhist.h:216
 honlinemonhist.h:217
 honlinemonhist.h:218
 honlinemonhist.h:219
 honlinemonhist.h:220
 honlinemonhist.h:221
 honlinemonhist.h:222
 honlinemonhist.h:223
 honlinemonhist.h:224
 honlinemonhist.h:225
 honlinemonhist.h:226
 honlinemonhist.h:227
 honlinemonhist.h:228
 honlinemonhist.h:229
 honlinemonhist.h:230
 honlinemonhist.h:231
 honlinemonhist.h:232
 honlinemonhist.h:233
 honlinemonhist.h:234
 honlinemonhist.h:235
 honlinemonhist.h:236
 honlinemonhist.h:237
 honlinemonhist.h:238
 honlinemonhist.h:239
 honlinemonhist.h:240
 honlinemonhist.h:241
 honlinemonhist.h:242
 honlinemonhist.h:243
 honlinemonhist.h:244
 honlinemonhist.h:245
 honlinemonhist.h:246
 honlinemonhist.h:247