#ifndef __DGFTauDisplayPanel_h__
#define __DGFTauDisplayPanel_h__
#include "TList.h"
#include "TRootEmbeddedCanvas.h"
#include "TCanvas.h"
#include "TGWindow.h"
#include "TGFrame.h"
#include "TGButton.h"
#include "TGFileDialog.h"
#include "TGMenu.h"
#include "TMrbLofNamedX.h"
#include "TMrbNamedX.h"
#include "TMrbDGF.h"
#include "TMrbDGFEventBuffer.h"
#include "HistPresent.h"
#include "FitHist.h"
#include "TGMrbTextButton.h"
#include "TGMrbRadioButton.h"
#include "TGMrbLabelEntry.h"
#include "TGMrbFileEntry.h"
#include "TGMrbLabelCombo.h"
#include "TGMrbMacroBrowser.h"
#include "DGFControlCommon.h"
class DGFTauDisplayPanel : public TGCompositeFrame {
public:
enum EDGFTauCmdId {
kDGFTauSelectModule,
kDGFTauSelectChannel,
kDGFTauTraceLength,
kDGFTauXwait,
kDGFTauTraceNofTraces,
kDGFTauFitFrom,
kDGFTauFitTo,
kDGFTauFitParamA0,
kDGFTauFitParamA1,
kDGFTauFitParamA2,
kDGFTauFitError,
kDGFTauFitChiSquare,
kDGFTauDispTraceNo,
kDGFTauDispCurTau,
kDGFTauDispBestTau,
kDGFTauDispFile,
kDGFTauButtonAcquire,
kDGFTauButtonTauOK,
kDGFTauButtonBestTau,
kDGFTauButtonRemoveTraces,
kDGFTauButtonSaveTrace,
kDGFTauButtonReset,
};
enum EDGFFitButtonsId {
kDGFTauFitTraceYes = kDGFChannel3 << 1,
kDGFTauFitTraceNo = kDGFChannel3 << 2
};
enum EDGFStatBoxButtonsId
{
kDGFTauDispStatBoxYes = kDGFChannel3 << 3,
kDGFTauDispStatBoxNo = kDGFChannel3 << 4
};
public:
DGFTauDisplayPanel(TGCompositeFrame * TabFrame);
virtual ~DGFTauDisplayPanel() { fHeap.Delete(); };
void PerformAction(Int_t FrameId, Int_t Selection);
void EntryChanged(Int_t FrameId, Int_t Selection);
void SelectModule(Int_t FrameId, Int_t Selection);
void RadioButtonPressed(Int_t FrameId, Int_t Selection);
protected:
Bool_t ResetValues();
Bool_t Update(Int_t EntryId);
void MoveFocus(Int_t EntryId);
Bool_t AcquireTraces();
Bool_t RemoveTrace(Int_t ModuleId = -1, Int_t ChannelId = -1);
Bool_t SaveTrace(const Char_t * FileName, Int_t ModuleId = -1, Int_t ChannelId = -1);
TMrbDGFEventBuffer * FindBuffer(Int_t TraceNo);
void SetRunning(Bool_t RunFlag);
const Char_t * TraceFileName(const Char_t * Text = "", Int_t ModuleId = -1, Int_t ChannelId = -1);
const Char_t * HistogramName(Int_t TraceNo = 1, Int_t ModuleId = -1, Int_t ChannelId = -1);
const Char_t * BufferName(Int_t Index = 1, Int_t ModuleId = -1, Int_t ChannelId = -1);
protected:
TList fHeap;
TGGroupFrame * fSelectFrame;
TGMrbLabelCombo * fSelectModule;
TGMrbRadioButtonList * fSelectChannel;
TGGroupFrame * fTraceFrame;
TGMrbLabelEntry * fTraceLengthEntry;
TGMrbLabelEntry * fNofTracesEntry;
TGMrbLabelEntry * fXwaitEntry;
TGHorizontalFrame * fHFrame;
TGGroupFrame * fFitFrame;
TGMrbRadioButtonList * fFitTraceYesNo;
TGMrbLabelEntry * fFitFromEntry;
TGMrbLabelEntry * fFitToEntry;
TGMrbLabelEntry * fFitA0Entry;
TGMrbLabelEntry * fFitA1Entry;
TGMrbLabelEntry * fFitA2Entry;
TGMrbLabelEntry * fFitErrorEntry;
TGMrbLabelEntry * fFitChiSquareEntry;
TGGroupFrame * fDisplayFrame;
TGMrbLabelEntry * fDispTraceNoEntry;
TGMrbRadioButtonList * fDispStatBox;
TGMrbLabelEntry * fDispCurTauEntry;
TGMrbLabelEntry * fDispBestTauEntry;
TGMrbFileEntry * fDispFileEntry;
FitHist * fFitTrace;
FitHist * fFitTau;
TGMrbTextButtonGroup * fButtonFrame;
TMrbLofNamedX fLofModuleKeys;
TMrbLofNamedX fLofChannels;
TGFileInfo fTraceFileInfo;
TFile * fTraceFile;
TMrbString fTraceFileName;
TH1F * fHistogram;
TMrbString fHistoName;
TMrbString fHistoTitle;
TMrbString fEbuName;
TObjArray fLofBuffers;
TH1F * fTauDistr;
TF1 * fGaussian;
TMrbDGFEventBuffer * fBuffer;
Bool_t fIsRunning;
TMrbLofNamedX fFitTraceButtons;
TMrbLofNamedX fDispStatBoxButtons;
TMrbLofNamedX fTauActions;
TGMrbFocusList fFocusList;
ClassDef(DGFTauDisplayPanel, 0)
};
#endif