#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>
class HOnlineMonHistAddon: public TNamed {
protected:
Int_t fIsActive;
Int_t fisResetable;
Int_t refreshrate;
Int_t send;
Int_t nBinsX;
Float_t Xlo;
Float_t Xup;
Int_t nBinsY;
Float_t Ylo;
Float_t Yup;
Int_t arraySize1;
Int_t arraySize2;
TString XTitle;
TString YTitle;
TString ZTitle;
TString Option;
TString directory;
TString HistType;
TString format;
Int_t stat;
Int_t max;
Int_t min;
Int_t linecol;
Int_t linestyle;
Int_t fillcol;
Int_t fillstyle;
Int_t markercol;
Int_t markerstyle;
Float_t markersize;
Int_t logX;
Int_t logY;
Int_t logZ;
Int_t gridX;
Int_t gridY;
Bool_t drawSame;
TLegend* legend;
Float_t legxmin;
Float_t legymin;
Float_t legxmax;
Float_t legymax;
TString legform;
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);
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;}
void copySet(HOnlineMonHistAddon&);
void getSet(HOnlineMonHistAddon& add);
void read(const Text_t*);
void getText(Text_t* txt);
void setHist(TH1*);
void setHist(TH2*);
void setCanvas(TCanvas* c);
HOnlineMonHistAddon* createHist();
virtual void draw(Bool_t allowHiddenZero=1);
virtual void reset(Int_t level,Int_t count);
virtual void add(HOnlineMonHistAddon*);
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)
};
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);
HOnlineMonHist(HOnlineMonHistAddon&);
virtual ~HOnlineMonHist();
TH1* getP(Int_t s=0,Int_t m=0) {return h;}
void reset(Int_t level,Int_t count);
void create();
void draw(Bool_t allowHiddenZero=1);
void add(HOnlineMonHistAddon* h2);
void getMinMax(Double_t& min,Double_t& max);
ClassDef(HOnlineMonHist,1)
};
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);
HOnlineMonHist2(HOnlineMonHistAddon&);
~HOnlineMonHist2();
TH2* getP(Int_t s=0,Int_t m=0) {return h;}
void reset(Int_t level,Int_t count);
void create();
void draw(Bool_t allowHiddenZero=1);
void add(HOnlineMonHistAddon* h2);
void getMinMax(Double_t& min,Double_t& max);
ClassDef(HOnlineMonHist2,1)
};
#endif /*!HMONHIST_H*/