ROOT logo
#ifndef HHISTARRAY_H
#define HHISTARRAY_H
#include "TNamed.h"
#include "TString.h"
#include "TArrayI.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2.h"
#include "honlinemonhist.h"
#include "TLegend.h"

class HOnlineNamedLegend;

/** Class to draw automatic legends for HOnlineHistArrays in overlay plots.
*/
class HOnlineLegendDrawer : public TNamed {
TObjArray* array; //!< object to keep the created Legend objects
protected:
public:
    HOnlineLegendDrawer(const Char_t* name   ="",
		  const Char_t* title  ="");
    ~HOnlineLegendDrawer(void);
    /// draw Legend for HOnlineHistArray.
    /// Checks if Legend exist already, otherwise adds a new Legend
    void          draw(HOnlineMonHistAddon*);
    /// add a new Legend to the object array
    HOnlineNamedLegend* add (HOnlineMonHistAddon*);
    ClassDef(HOnlineLegendDrawer,1) // Legend drawer
};

/** Named Legend containing a TLegend
*/
class HOnlineNamedLegend : public TNamed {
protected:
TLegend* legend;  //!< pointer to internal TLegend
public:
    HOnlineNamedLegend (const Char_t* name   ="",
		  const Char_t* title  ="",HOnlineMonHistAddon* =0);
    ~HOnlineNamedLegend(void);
    /// get pointer to internal TLegend
    TLegend* getP(){return legend;}
    ClassDef(HOnlineNamedLegend,1) // Named Legend
};

//########################################################################
/**Array of 1-D Trend Histograms.
 * Contains a array of histograms of type 1S,1F or 1D.
 * The internal histograms can be acccessed via
 * getP(Int_t s,Int_t m) in coordinates od the array.
 * The call of the fill() function will shift the contents
 * of the specific histogram by on bin to the left and
 * add the new value at the right most bin.
 */
class HOnlineTrendArray : public HOnlineMonHistAddon{
protected:
    TObjArray* array; /// pointer to internal object array of hists
public:
    HOnlineTrendArray(const Char_t* name   ="",
		const Char_t* title  ="",
		Int_t active=0,Int_t resetable=0, Int_t size=1,Int_t size2=1,
		Int_t nBinsX=0,Float_t Xlo=0,Float_t Xup=0);
    /// create a HOnlineTrendArray from a HOnlineMonHistAddon
    HOnlineTrendArray(HOnlineMonHistAddon&);
    ~HOnlineTrendArray(void);
    /// get the dimensions of the array (in 2-Dim)
    void     getDim(Int_t* i,Int_t* j)    {*i=arraySize1;*j=arraySize2;}
    /// get the linear overall size of the array
    Int_t    getSizeAll()    {return arraySize1*arraySize2;}
    /// fill a histogram, moving the old content 1
    /// bin to the left and add the new value
    /// at the right most bin
    void     fill   (Int_t,Int_t,Stat_t,Stat_t val = 0);
    /// reset the histogram array
    void     reset(Int_t level,Int_t count);
    /// create the array of histograms
    void     create();
    /// draw overlay plot of all hists in array
    void     drawAll( Bool_t allowHiddenZero=1 , Double_t min = -1e200,Double_t max=1e200);
    /// draw calls drawAll();
    void     draw( Bool_t allowHiddenZero=1 );
    /// add a HOnlineTrendArray to the  own hists (see TH1::Add)
    void     add(HOnlineMonHistAddon* h2);
    /// get pointer to histogram inside the array
    TH1*     getP(Int_t s=0,Int_t m=0){return ((TH1*) (*array)[s*arraySize2+m]);}
    void     getMinMax(Double_t& min,Double_t& max);

    ClassDef(HOnlineTrendArray,1) // Mdc trend hist array
};

//#################################################################################

/**Array of 1-D Histograms.
 * Contains a array of histograms of type 1S,1F or 1D.
 * The internal histograms can be acccessed via
 * getP(Int_t s,Int_t m) in coordinates od the array.
 */

class HOnlineHistArray : public HOnlineMonHistAddon{
protected:
    TObjArray* array;
public:
    HOnlineHistArray(const Char_t* name   ="",
		  const Char_t* title  ="",
		  Int_t active=0,Int_t resetable=0, Int_t size=1,Int_t size2=1,
		  Int_t nBinsX=0,Float_t Xlo=0,Float_t Xup=0);
    /// create a HOnlineHistArray from a HOnlineMonHistAddon
    HOnlineHistArray(HOnlineMonHistAddon&);
    ~HOnlineHistArray(void);
    /// get the dimensions of the array (in 2-Dim)
    void     getDim(Int_t* i,Int_t* j)    {*i=arraySize1;*j=arraySize2;}
    /// get the linear overall size of the array
    Int_t    getSizeAll()    {return arraySize1*arraySize2;}
    /// fill a value in a given histogram inside the array
    void     fill   (Int_t,Int_t,Stat_t,Stat_t b = 0);
    /// set bin content of a given histogram inside the array
    void     setBinContent(Int_t,Int_t,Int_t,Stat_t);
    /// get bin content of a given histogram inside the array
    Stat_t   getBinContent(Int_t,Int_t,Int_t);
    /// set bin error of a given histogram inside the array
    void     setBinError  (Int_t,Int_t,Int_t,Stat_t);
    /// get bin error of a given histogram inside the array
    Stat_t   getBinError  (Int_t,Int_t,Int_t);
    /// reset the histogram array
    void     reset(Int_t level,Int_t count);
    /// create the histogram array
    void     create();
    /// draw overlay plot of all histograms
    /// insde the histogram array
    void     drawAll( Bool_t allowHiddenZero=1 , Double_t min = -1e200,Double_t max=1e200 );
    /// calls drawAll()
    void     draw( Bool_t allowHiddenZero=1 );
    /// add a HOnlineHistArray to the  own hists (see TH1::Add)
    void     add(HOnlineMonHistAddon* h2);
    /// get pointer to histogram inside the array
    TH1*     getP(Int_t s=0,Int_t m=0){return ((TH1*) (*array)[s*arraySize2+m]);}

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


    ClassDef(HOnlineHistArray,1) // Mdc mon hist array
};

//################################################################################
/**Array of 2-D Histograms.
 * Contains a array of histograms of type 2S,2F or 2D.
 * The internal histograms can be acccessed via
 * getP(Int_t s,Int_t m) in coordinates od the array.
*/

class HOnlineHistArray2 : public HOnlineMonHistAddon{
protected:
    TObjArray* array;
public:
    HOnlineHistArray2(const Char_t* name   ="",
		   const Char_t* title  ="",
		   Int_t active=0,Int_t resetable=0, Int_t size=1,Int_t size2=1,
		   Int_t nBinsX=0,Float_t Xlo=0,Float_t Xup=0);
    /// create a HOnlineHistArray2 from a HOnlineMonHistAddon
    HOnlineHistArray2(HOnlineMonHistAddon&);
    ~HOnlineHistArray2(void);
    /// get the dimensions of the array (in 2-Dim)
    void     getDim(Int_t* i,Int_t* j)    {*i=arraySize1;*j=arraySize2;}
    /// get the linear overall size of the array
    Int_t    getSizeAll()    {return arraySize1*arraySize2;}
    /// fill a value in a given histogram inside the array
    void     fill   (Int_t,Int_t,Stat_t,Stat_t);
    /// set bin content of a given histogram inside the array
    void     setBinContent(Int_t,Int_t,Int_t,Int_t,Stat_t);
    /// get bin content of a given histogram inside the array
    Stat_t   getBinContent(Int_t,Int_t,Int_t,Int_t);
    /// set bin error of a given histogram inside the array
    void     setBinError  (Int_t,Int_t,Int_t,Int_t,Stat_t);
    /// get bin error of a given histogram inside the array
    Stat_t   getBinError  (Int_t,Int_t,Int_t,Int_t);
    /// create the histogram array
    void     create();
    /// draw overlay plot of all histograms
    /// insde the histogram array
    void     drawAll( Bool_t allowHiddenZero=1, Double_t min = -1e200,Double_t max=1e200);
    /// calls drawAll()
    void     draw( Bool_t allowHiddenZero=1 );
    /// reset the histogram array
    void     reset(Int_t level,Int_t count);
    /// add a HOnlineHistArray2 to the  own hists (see TH1::Add)
    void     add(HOnlineMonHistAddon* h2);
    /// get pointer to histogram inside the array
    TH2*     getP(Int_t s=0,Int_t m=0){return ((TH2*) (*array)[s*arraySize2+m]);}

    void     getMinMax(Double_t& min,Double_t& max);
    ClassDef(HOnlineHistArray2,1) // mon hist array
};
#endif  /*!HHISTARRAY_H*/
 honlinehistarray.h:1
 honlinehistarray.h:2
 honlinehistarray.h:3
 honlinehistarray.h:4
 honlinehistarray.h:5
 honlinehistarray.h:6
 honlinehistarray.h:7
 honlinehistarray.h:8
 honlinehistarray.h:9
 honlinehistarray.h:10
 honlinehistarray.h:11
 honlinehistarray.h:12
 honlinehistarray.h:13
 honlinehistarray.h:14
 honlinehistarray.h:15
 honlinehistarray.h:16
 honlinehistarray.h:17
 honlinehistarray.h:18
 honlinehistarray.h:19
 honlinehistarray.h:20
 honlinehistarray.h:21
 honlinehistarray.h:22
 honlinehistarray.h:23
 honlinehistarray.h:24
 honlinehistarray.h:25
 honlinehistarray.h:26
 honlinehistarray.h:27
 honlinehistarray.h:28
 honlinehistarray.h:29
 honlinehistarray.h:30
 honlinehistarray.h:31
 honlinehistarray.h:32
 honlinehistarray.h:33
 honlinehistarray.h:34
 honlinehistarray.h:35
 honlinehistarray.h:36
 honlinehistarray.h:37
 honlinehistarray.h:38
 honlinehistarray.h:39
 honlinehistarray.h:40
 honlinehistarray.h:41
 honlinehistarray.h:42
 honlinehistarray.h:43
 honlinehistarray.h:44
 honlinehistarray.h:45
 honlinehistarray.h:46
 honlinehistarray.h:47
 honlinehistarray.h:48
 honlinehistarray.h:49
 honlinehistarray.h:50
 honlinehistarray.h:51
 honlinehistarray.h:52
 honlinehistarray.h:53
 honlinehistarray.h:54
 honlinehistarray.h:55
 honlinehistarray.h:56
 honlinehistarray.h:57
 honlinehistarray.h:58
 honlinehistarray.h:59
 honlinehistarray.h:60
 honlinehistarray.h:61
 honlinehistarray.h:62
 honlinehistarray.h:63
 honlinehistarray.h:64
 honlinehistarray.h:65
 honlinehistarray.h:66
 honlinehistarray.h:67
 honlinehistarray.h:68
 honlinehistarray.h:69
 honlinehistarray.h:70
 honlinehistarray.h:71
 honlinehistarray.h:72
 honlinehistarray.h:73
 honlinehistarray.h:74
 honlinehistarray.h:75
 honlinehistarray.h:76
 honlinehistarray.h:77
 honlinehistarray.h:78
 honlinehistarray.h:79
 honlinehistarray.h:80
 honlinehistarray.h:81
 honlinehistarray.h:82
 honlinehistarray.h:83
 honlinehistarray.h:84
 honlinehistarray.h:85
 honlinehistarray.h:86
 honlinehistarray.h:87
 honlinehistarray.h:88
 honlinehistarray.h:89
 honlinehistarray.h:90
 honlinehistarray.h:91
 honlinehistarray.h:92
 honlinehistarray.h:93
 honlinehistarray.h:94
 honlinehistarray.h:95
 honlinehistarray.h:96
 honlinehistarray.h:97
 honlinehistarray.h:98
 honlinehistarray.h:99
 honlinehistarray.h:100
 honlinehistarray.h:101
 honlinehistarray.h:102
 honlinehistarray.h:103
 honlinehistarray.h:104
 honlinehistarray.h:105
 honlinehistarray.h:106
 honlinehistarray.h:107
 honlinehistarray.h:108
 honlinehistarray.h:109
 honlinehistarray.h:110
 honlinehistarray.h:111
 honlinehistarray.h:112
 honlinehistarray.h:113
 honlinehistarray.h:114
 honlinehistarray.h:115
 honlinehistarray.h:116
 honlinehistarray.h:117
 honlinehistarray.h:118
 honlinehistarray.h:119
 honlinehistarray.h:120
 honlinehistarray.h:121
 honlinehistarray.h:122
 honlinehistarray.h:123
 honlinehistarray.h:124
 honlinehistarray.h:125
 honlinehistarray.h:126
 honlinehistarray.h:127
 honlinehistarray.h:128
 honlinehistarray.h:129
 honlinehistarray.h:130
 honlinehistarray.h:131
 honlinehistarray.h:132
 honlinehistarray.h:133
 honlinehistarray.h:134
 honlinehistarray.h:135
 honlinehistarray.h:136
 honlinehistarray.h:137
 honlinehistarray.h:138
 honlinehistarray.h:139
 honlinehistarray.h:140
 honlinehistarray.h:141
 honlinehistarray.h:142
 honlinehistarray.h:143
 honlinehistarray.h:144
 honlinehistarray.h:145
 honlinehistarray.h:146
 honlinehistarray.h:147
 honlinehistarray.h:148
 honlinehistarray.h:149
 honlinehistarray.h:150
 honlinehistarray.h:151
 honlinehistarray.h:152
 honlinehistarray.h:153
 honlinehistarray.h:154
 honlinehistarray.h:155
 honlinehistarray.h:156
 honlinehistarray.h:157
 honlinehistarray.h:158
 honlinehistarray.h:159
 honlinehistarray.h:160
 honlinehistarray.h:161
 honlinehistarray.h:162
 honlinehistarray.h:163
 honlinehistarray.h:164
 honlinehistarray.h:165
 honlinehistarray.h:166
 honlinehistarray.h:167
 honlinehistarray.h:168
 honlinehistarray.h:169
 honlinehistarray.h:170
 honlinehistarray.h:171
 honlinehistarray.h:172
 honlinehistarray.h:173
 honlinehistarray.h:174
 honlinehistarray.h:175
 honlinehistarray.h:176
 honlinehistarray.h:177
 honlinehistarray.h:178
 honlinehistarray.h:179
 honlinehistarray.h:180
 honlinehistarray.h:181
 honlinehistarray.h:182
 honlinehistarray.h:183
 honlinehistarray.h:184
 honlinehistarray.h:185
 honlinehistarray.h:186
 honlinehistarray.h:187
 honlinehistarray.h:188
 honlinehistarray.h:189
 honlinehistarray.h:190
 honlinehistarray.h:191
 honlinehistarray.h:192