#ifndef HMDCEFFMENU_H
#define HMDCEFFMENU_H
#include "TObject.h"
#include "hmdcefficiency.h"
#include "TDialogCanvas.h"
#include "TButton.h"
#include "TPaveLabel.h"
#include "TText.h"
class TGTransientFrame;
class TList;
class TGLabel;
class TGTextEntry;
class TGTextButton;
class HMdcEffMenu : public TObject {
  protected:
    TGTransientFrame* fDialog;
    TList*            fWidgets;
    Int_t width;                 
    Int_t height;                
    Int_t sHeight;               
    Int_t dHeight;               
    Int_t sWidth;                
    Int_t dWidth;                
    Bool_t stopLoop;
  
    static HMdcEffMenu* fEffMenu;
    HMdcEfficiency* mdcEff;
    HMdcEfficiencySec* feffSec;
    HMdcEfficiencyMod* feffMod;
    HMdcEfficiencyLayer* feffLay;
    TGTextButton *bSecMod[6][4];
    TGTextButton *bLayer[6];
    TGTextButton *bGroupMdcLay[2];
    TGTextButton *button[30];
    TGTextButton *bPlot[3];
    TGTextButton *bTypePlot[3];
    TGTextButton *bDrClSel;
    TGTextButton *bHist[6];
    TGTextButton *bHistMb;
    TGTextButton *bXYlayer;
    TGTextButton *bTimes;
    TGTextButton *bSummary;
    Int_t         indSec[6];
    Int_t         indMod[6][4];
    Int_t         indLay[6];          
    Int_t         numLay;
    Int_t         indPlot[3];
    Int_t         typePlot;
    Int_t         indHist[6];
    Int_t         indHistMb;
    Int_t         numHists;
    Int_t         indXYlayers;
    Int_t         indTimes;
    Int_t         indSummary;
    Int_t         indGroup[2];
    Int_t         sumBnXY;
    Int_t         sumBnTimes;
    TGTextEntry  *pvLSumXY;
    TGTextEntry  *pvLSumTimes;
    Char_t        name[100];
    Char_t        doThis[100];
    TText*        text;
    Int_t         totModsSel;
    Int_t         nTotEv;
    Bool_t        calcEffFlag;
    Bool_t        eventLoopFlag;
    Int_t         nEvLoopAdd;
    Bool_t        endOfData;
    TGLabel      *lbEvTot;
    TGLabel      *lbEvLoop;
    
    HMdcEffMenu(HMdcEfficiency *feff);
    ~HMdcEffMenu();
    void menu();
    TGTextEntry* drawTextLine(Int_t x, Int_t y,const Char_t* name,Int_t textColor);
    TGLabel* drawLabel(Int_t x, Int_t y,const Char_t* name,Int_t textColor);
    TGTextButton* drawButton(Int_t x, Int_t y,const Char_t* name,const Char_t* doThis,Int_t textColor);
    TGTextButton* drawButtonXp(Int_t px, Int_t ,const Char_t* name,const Char_t* doThis,Int_t textColor);
    void setInitPoint(Int_t sw,Int_t dw,Int_t sh,Int_t dh);
    void drawNEvents(Int_t nEv);
    
  public:
    static HMdcEffMenu* makeMenu(HMdcEfficiency *feff);
    static void deleteMenu(void);
    void closeDial(void);
    void setSecMod(Int_t s, Int_t m);
    void setLayer(Int_t l);
    void setListPads();
    void setListLayer();
    void drawPlot(Int_t n);
    void setPlotType(Int_t n);
    void drawHist(Int_t n);
    void drawXYlayer();
    void drawTimes();
    void drawSummary();
    void drawHistMb();
    void setGroup(Int_t n);
    void rebinTimes(Int_t n);
    void rebinXY(Int_t n);
    void printClusters();
    void doDraw(Int_t ind=1);
    void doPlots(Int_t ind=1);
    void doEventPlots(Int_t ind=1);
    void loopEvents(Int_t nEv);
    void calcEff(void);
    void saveHist(void) {mdcEff->saveHist();}
    void clustSel();
    void stpLoop()      {stopLoop = kTRUE;}
    ClassDef(HMdcEffMenu,0) 
};
    
#endif