#ifndef __DGFInstrumentPanel_h__
#define __DGFInstrumentPanel_h__
#include "TList.h"
#include "TGWindow.h"
#include "TGFrame.h"
#include "TGButton.h"
#include "TGMenu.h"
#include "TMrbLofNamedX.h"
#include "TMrbNamedX.h"
#include "TMrbDGF.h"
#include "TGMrbTextButton.h"
#include "TGMrbRadioButton.h"
#include "TGMrbLabelEntry.h"
#include "TGMrbLabelCombo.h"
#include "TGMrbMacroBrowser.h"
#include "DGFModule.h"
#include "DGFControlCommon.h"
class DGFInstrumentPanel : public TGCompositeFrame {
public:
enum EVMEServerCmdId {
kDGFInstrSelectModule = 100,
kDGFInstrSelectChannel,
kDGFInstrEnergyPeakTimeEntry,
kDGFInstrEnergyGapTimeEntry,
kDGFInstrEnergyAveragingEntry,
kDGFInstrEnergyTauEntry,
kDGFInstrTriggerPeakTimeEntry,
kDGFInstrTriggerGapTimeEntry,
kDGFInstrTriggerThresholdEntry,
kDGFInstrTraceLengthEntry,
kDGFInstrTraceDelayEntry,
kDGFInstrTraceXPSAOffsetEntry,
kDGFInstrTraceXPSALengthEntry,
kDGFInstrTraceUPSAOnOffButton,
kDGFInstrTraceUPSABaselineEntry,
kDGFInstrTraceUPSAEnergyCutoffEntry,
kDGFInstrTraceUPSATriggerThreshEntry,
kDGFInstrTraceUPSAT90ThreshEntry,
kDGFInstrTraceUPSALengthEntry,
kDGFInstrTraceUPSAOffsetEntry,
kDGFInstrTraceUPSATFAEnergyCutoffEntry,
kDGFInstrStatRegModICSREntry,
kDGFInstrStatRegModICSREditButton,
kDGFInstrStatRegChanCSRAEntry,
kDGFInstrStatRegChanCSRAEditButton,
kDGFInstrStatRegUserPsaCSREntry,
kDGFInstrStatRegUserPsaCSREditButton,
kDGFInstrStatCoincPatternEntry,
kDGFInstrStatCoincPatternEditButton,
kDGFInstrStatRunTaskEntry,
kDGFInstrStatRunTaskEditButton,
kDGFInstrDACGainEntry,
kDGFInstrDACVVEntry,
kDGFInstrDACOffsetEntry,
kDGFInstrDACVoltEntry,
kDGFInstrCFDRegEntry,
kDGFInstrCFDOnOffButton,
kDGFInstrCFDDelayBeforeLEEntry,
kDGFInstrCFDDelayBipolarEntry,
kDGFInstrCFDWalkEntry,
kDGFInstrCFDFractionButton,
kDGFInstrMCAEnergyEntry,
kDGFInstrMCAEnergyBinsEntry,
kDGFInstrMCABaselineDCEntry,
kDGFInstrMCABaselineBinsEntry,
kDGFInstrButtonUpdateFPGAs,
kDGFInstrButtonShowParams,
};
enum EDGFInstrCDFOnOff {
kDGFInstrCFDOn = BIT(0),
kDGFInstrCFDOff = BIT(1)
};
enum EDGFInstrCDFFraction {
kDGFInstrCFDFract00 = BIT(0),
kDGFInstrCFDFract01 = BIT(1),
kDGFInstrCFDFract10 = BIT(2),
};
enum EDGFInstrUPSAOnOff {
kDGFInstrUPSAOn = BIT(0),
kDGFInstrUPSAOff = BIT(1)
};
public:
DGFInstrumentPanel(TGCompositeFrame * TabFrame);
virtual ~DGFInstrumentPanel() {
fFocusList.Clear();
fHeap.Delete();
};
Bool_t InitializeValues(Bool_t ReadFromDSP = kFALSE);
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);
void EditBits(Int_t ButtonId);
protected:
Bool_t WriteDSP(DGFModule * Module, Int_t ChannelId);
Bool_t ReadDSP(DGFModule * Module, Int_t ChannelId);
Bool_t ShowModuleSettings();
Bool_t UpdateValue(Int_t EntryId, Int_t ModuleId, Int_t ChannelId);
void MoveFocus(Int_t EntryId);
Bool_t SetGFLT(Bool_t OnFlag = kTRUE);
Bool_t UpdateCFD(TMrbDGF * Module, Int_t Channel);
Bool_t InitializeCFD(Int_t OnOff, Int_t Fraction);
Bool_t UpdateUPSA(TMrbDGF * Module, Int_t Channel);
Bool_t InitializeUPSA();
protected:
TList fHeap;
TGGroupFrame * fSelectFrame;
TGMrbLabelCombo * fSelectModule;
TGMrbRadioButtonList * fSelectChannel;
TGHorizontalFrame * fInstrFrame;
TGVerticalFrame * fLeftFrame;
TGGroupFrame * fFilterFrame;
TGGroupFrame * fEnergyFilterFrame;
TGMrbLabelEntry * fEnergyPeakTimeEntry;
TGMrbLabelEntry * fEnergyGapTimeEntry;
TGMrbLabelEntry * fEnergyAveragingEntry;
TGMrbLabelEntry * fEnergyTauEntry;
TGGroupFrame * fTriggerFilterFrame;
TGMrbLabelEntry * fTriggerPeakTimeEntry;
TGMrbLabelEntry * fTriggerGapTimeEntry;
TGMrbLabelEntry * fTriggerThresholdEntry;
TGGroupFrame * fTraceFrame;
TGVerticalFrame * fTraceLeftFrame;
TGVerticalFrame * fTraceRightFrame;
TGGroupFrame * fTraceLengthDelayFrame;
TGMrbLabelEntry * fTraceLengthEntry;
TGMrbLabelEntry * fTraceDelayEntry;
TGGroupFrame * fTraceXPSAFrame;
TGMrbLabelEntry * fTraceXPSAOffsetEntry;
TGMrbLabelEntry * fTraceXPSALengthEntry;
TGGroupFrame * fTraceUPSAFrame;
TGMrbRadioButtonList * fTraceUPSAOnOffButton;
TGMrbLabelEntry * fTraceUPSABaselineEntry;
TGMrbLabelEntry * fTraceUPSAEnergyCutoffEntry;
TGMrbLabelEntry * fTraceUPSATriggerThreshEntry;
TGMrbLabelEntry * fTraceUPSAT90ThreshEntry;
TGMrbLabelEntry * fTraceUPSALengthEntry;
TGMrbLabelEntry * fTraceUPSAOffsetEntry;
TGMrbLabelEntry * fTraceUPSATFAEnergyCutoffEntry;
TGGroupFrame * fStatRegFrame;
TGGroupFrame * fStatRegEntryFrame;
TGMrbLabelEntry * fStatRegModICSREntry;
TMrbNamedX * fModICSREditButton;
TGMrbLabelEntry * fStatRegChanCSRAEntry;
TMrbNamedX * fChanCSRAEditButton;
TGMrbLabelEntry * fStatCoincPatternEntry;
TMrbNamedX * fCoincPatternEditButton;
TGMrbLabelEntry * fStatRegUserPsaCSREntry;
TMrbNamedX * fUserPsaCSREditButton;
TGMrbLabelEntry * fStatRunTaskEntry;
TMrbNamedX * fRunTaskEditButton;
TGVerticalFrame * fRightFrame;
TGGroupFrame * fDACFrame;
TGGroupFrame * fDACGainFrame;
TGMrbLabelEntry * fDACGainEntry;
TGMrbLabelEntry * fDACVVEntry;
TGGroupFrame * fDACOffsetFrame;
TGMrbLabelEntry * fDACOffsetEntry;
TGMrbLabelEntry * fDACVoltEntry;
TGGroupFrame * fCFDFrame;
TGGroupFrame * fCFDDataFrame;
TGMrbLabelEntry * fCFDRegEntry;
TGMrbLabelEntry * fCFDDelayBeforeLEEntry;
TGMrbLabelEntry * fCFDDelayBipolarEntry;
TGMrbLabelEntry * fCFDWalkEntry;
TGMrbLabelEntry * fCFDFractionEntry;
TGMrbRadioButtonList * fCFDOnOffButton;
TGMrbRadioButtonList * fCFDFractionButton;
TGGroupFrame * fMCAFrame;
TGGroupFrame * fMCAEnergyFrame;
TGMrbLabelEntry * fMCAEnergyEntry;
TGMrbLabelEntry * fMCAEnergyBinsEntry;
TGGroupFrame * fMCABaselineFrame;
TGMrbLabelEntry * fMCABaselineDCEntry;
TGMrbLabelEntry * fMCABaselineBinsEntry;
TGMrbTextButtonGroup * fModuleButtonFrame;
TGLabel * fDummyLabel;
TMrbLofNamedX fLofModuleKeys;
TMrbLofNamedX fLofChannels;
TMrbLofNamedX fInstrChnActions;
TMrbLofNamedX fInstrModuleActions;
TMrbLofNamedX fInstrUPSAOnOff;
TMrbLofNamedX fInstrCFDOnOff;
TMrbLofNamedX fInstrCFDFraction;
TGMrbFocusList fFocusList;
ClassDef(DGFInstrumentPanel, 0)
};
#endif