FSUDAQ_Qt6/DigiSettingsPanel.h

201 lines
7.0 KiB
C
Raw Normal View History

2023-04-24 17:37:03 -04:00
#ifndef DigiSettings_H
#define DigiSettings_H
#include <QMainWindow>
#include <QTabWidget>
#include <QLineEdit>
#include <QGridLayout>
2023-04-25 17:04:46 -04:00
#include <QCheckBox>
#include <QGroupBox>
#include <QPushButton>
2023-04-24 17:37:03 -04:00
#include "macro.h"
#include "ClassDigitizer.h"
#include "CustomWidgets.h"
class DigiSettingsPanel : public QMainWindow{
Q_OBJECT
public:
DigiSettingsPanel(Digitizer ** digi, unsigned int nDigi, QString rawDataPath, QMainWindow * parent = nullptr);
2023-04-24 17:37:03 -04:00
~DigiSettingsPanel();
private slots:
2023-04-25 17:04:46 -04:00
void UpdatePanelFromMemory();
void ReadSettingsFromBoard();
void SaveSetting(int opt);
void LoadSetting();
2023-04-24 17:37:03 -04:00
signals:
void SendLogMsg(const QString &msg);
private:
2023-04-25 17:04:46 -04:00
void SetUpInfo(QString label, std::string value, QGridLayout *gLayout, int row, int col);
void SetUpCheckBox(QCheckBox * &chkBox, QString label, QGridLayout *gLayout, int row, int col, Reg para, std::pair<unsigned short, unsigned short> bit);
void SetUpComboBoxBit(RComboBox * &cb, QString label, QGridLayout *gLayout, int row, int col, std::vector<std::pair<std::string, unsigned int>> items, Reg para, std::pair<unsigned short, unsigned short> bit, int colspan = 1);
void SetUpComboBox(RComboBox * &cb, QString label, QGridLayout *gLayout, int row, int col, Reg para);
void SetUpSpinBox(RSpinBox * &sb, QString label, QGridLayout *gLayout, int row, int col, Reg para);
2023-04-25 17:04:46 -04:00
void CleanUpGroupBox(QGroupBox * & gBox);
void SetUpGlobalTriggerMaskAndFrontPanelMask(QGridLayout * & gLayout);
2023-04-25 17:04:46 -04:00
void SetUpPHABoard();
2023-04-28 18:18:34 -04:00
void SetUpPHAChannel();
2023-04-25 17:04:46 -04:00
void SetUpPSDBoard();
2023-04-24 17:37:03 -04:00
void UpdatePHASetting();
2023-04-24 17:37:03 -04:00
Digitizer ** digi;
unsigned int nDigi;
2023-04-25 17:04:46 -04:00
unsigned short ID;
2023-04-24 17:37:03 -04:00
QString rawDataPath;
2023-04-24 17:37:03 -04:00
bool enableSignalSlot;
QTabWidget * tabWidget;
2023-04-25 17:04:46 -04:00
QGroupBox * infoBox[MaxNDigitizer];
QGridLayout * infoLayout[MaxNDigitizer];
QLineEdit * leSaveFilePath[MaxNDigitizer];
2023-04-28 18:18:12 -04:00
2023-04-25 17:04:46 -04:00
QPushButton * bnRefreshSetting; // read setting from board
2023-04-26 16:39:54 -04:00
QPushButton * bnProgramPreDefined;
QPushButton * bnClearBuffer;
QPushButton * bnSendSoftwareTriggerSignal;
QPushButton * bnSendSoftwareClockSyncSignal;
QPushButton * bnSaveSettings;
QPushButton * bnLoadSettings;
QPushButton * bnSaveSettingsToText;
2023-04-26 16:39:54 -04:00
2023-04-28 18:18:12 -04:00
/// ============================= Board Configure
// QGroupBox * boardSettingBox[MaxNDigitizer];
QGridLayout * bdCfgLayout[MaxNDigitizer];
QGridLayout * bdACQLayout[MaxNDigitizer];
QGridLayout * bdGlbTRGOUTLayout[MaxNDigitizer];
QGridLayout * bdTriggerLayout[MaxNDigitizer];
QGridLayout * bdLVDSLayout[MaxNDigitizer];
2023-04-25 17:04:46 -04:00
QCheckBox * chkAutoDataFlush[MaxNDigitizer];
QCheckBox * chkDecimateTrace[MaxNDigitizer];
QCheckBox * chkTrigPropagation[MaxNDigitizer];
QCheckBox * chkDualTrace[MaxNDigitizer];
QCheckBox * chkTraceRecording[MaxNDigitizer];
QCheckBox * chkEnableExtra2[MaxNDigitizer];
RComboBox * cbAnaProbe1[MaxNDigitizer];
RComboBox * cbAnaProbe2[MaxNDigitizer];
RComboBox * cbDigiProbe1[MaxNDigitizer];
RComboBox * cbDigiProbe2[MaxNDigitizer];
2023-04-26 16:39:54 -04:00
QPushButton * bnChEnableMask[MaxNDigitizer][MaxNChannels];
2023-04-25 17:04:46 -04:00
RComboBox * cbAggOrg[MaxNDigitizer];
2023-04-26 16:39:54 -04:00
RSpinBox * sbAggNum[MaxNDigitizer];
QCheckBox * chkEnableExternalTrigger[MaxNDigitizer];
RSpinBox * sbRunDelay[MaxNDigitizer];
RComboBox * cbAnalogMonitorMode[MaxNDigitizer];
RSpinBox * sbBufferGain[MaxNDigitizer];
RSpinBox * sbVoltageLevel[MaxNDigitizer];
2023-04-26 16:39:54 -04:00
RComboBox * cbStartStopMode[MaxNDigitizer];
RComboBox * cbAcqStartArm[MaxNDigitizer];
RComboBox * cbPLLRefClock[MaxNDigitizer];
2023-04-28 18:18:12 -04:00
RComboBox * cbLEMOMode[MaxNDigitizer];
RComboBox * cbTRGOUTMode[MaxNDigitizer];
RComboBox * cbTRGINMode[MaxNDigitizer];
RComboBox * cbTRINMezzanines[MaxNDigitizer];
RSpinBox * sbVMEInterruptLevel[MaxNDigitizer];
QCheckBox * chkEnableOpticalInterrupt[MaxNDigitizer];
QCheckBox * chkEnableVMEReadoutStatus[MaxNDigitizer];
QCheckBox * chkEnableVME64Aligment[MaxNDigitizer];
QCheckBox * chkEnableAddRelocation[MaxNDigitizer];
RComboBox * cbInterruptMode[MaxNDigitizer];
QCheckBox * chkEnableExtendedBlockTransfer[MaxNDigitizer];
/// ============================= trigger validation mask
RComboBox * cbMaskLogic[MaxNDigitizer][MaxNChannels/2];
RSpinBox * sbMaskMajorLevel[MaxNDigitizer][MaxNChannels/2];
QCheckBox * chkMaskExtTrigger[MaxNDigitizer][MaxNChannels/2];
QCheckBox * chkMaskSWTrigger[MaxNDigitizer][MaxNChannels/2];
QPushButton * bnTriggerMask[MaxNDigitizer][MaxNChannels/2][MaxNChannels/2];
2023-04-28 18:18:12 -04:00
/// ============================= board Status
2023-04-26 16:39:54 -04:00
QPushButton * bnACQStatus[MaxNDigitizer][9];
QPushButton * bnBdFailStatus[MaxNDigitizer][3];
QPushButton * bnReadOutStatus[MaxNDigitizer][3];
2023-04-25 17:04:46 -04:00
/// ============================= Mask Configure
2023-04-28 18:18:12 -04:00
QPushButton * bnGlobalTriggerMask[MaxNDigitizer][MaxNChannels/2];
RSpinBox * sbGlbMajCoinWin[MaxNDigitizer];
RSpinBox * sbGlbMajLvl[MaxNDigitizer];
RComboBox * cbGlbUseOtherTriggers[MaxNDigitizer]; // combine bit 30, 31
QPushButton * bnTRGOUTMask[MaxNDigitizer][MaxNChannels/2];
RSpinBox * sbTRGOUTMajLvl[MaxNDigitizer];
RComboBox * cbTRGOUTLogic[MaxNDigitizer];
RComboBox * cbTRGOUTUseOtherTriggers[MaxNDigitizer]; // combine bit 30, 31
2023-04-28 18:18:34 -04:00
/// ============================ Channel
QWidget * chAllSetting;
QWidget * chStatus;
QWidget * chInput;
QWidget * chTrap;
QWidget * chOthers;
2023-04-25 17:04:46 -04:00
RComboBox * chSelection[MaxNDigitizer];
//---------- PHA
RSpinBox * sbRecordLength[MaxNChannels + 1];
RComboBox * cbDynamicRange[MaxNChannels + 1];
RSpinBox * sbPreTrigger[MaxNChannels + 1];
RComboBox * cbRCCR2Smoothing[MaxNChannels + 1];
RSpinBox * sbInputRiseTime[MaxNChannels + 1];
RSpinBox * sbThreshold[MaxNChannels + 1];
RSpinBox * sbRiseTimeValidWin[MaxNChannels + 1];
RSpinBox * sbTriggerHoldOff[MaxNChannels + 1];
RSpinBox * sbShapedTrigWidth[MaxNChannels + 1];
RSpinBox * sbDCOffset[MaxNChannels + 1];
RComboBox * cbPolarity[MaxNChannels + 1];
RSpinBox * sbTrapRiseTime[MaxNChannels + 1];
RSpinBox * sbTrapFlatTop[MaxNChannels + 1];
RSpinBox * sbDecay[MaxNChannels + 1];
RSpinBox * sbTrapScaling[MaxNChannels + 1];
RSpinBox * sbPeaking[MaxNChannels + 1];
RSpinBox * sbPeakingHoldOff[MaxNChannels + 1];
RComboBox * cbPeakAvg[MaxNChannels + 1];
RComboBox * cBaseLineAvg[MaxNChannels + 1];
QCheckBox * chkActiveBaseline[MaxNChannels + 1];
QCheckBox * chkBaselineRestore[MaxNChannels + 1];
RSpinBox * sbFineGain[MaxNChannels + 1];
QCheckBox * chkDisableSelfTrigger[MaxNChannels + 1];
QCheckBox * chkEnableRollOver[MaxNChannels + 1];
QCheckBox * chkEnablePileUp[MaxNChannels + 1];
QCheckBox * chkTagCorrelation[MaxNChannels + 1];
RComboBox * cbDecimateTrace[MaxNChannels + 1];
RComboBox * cbDecimateGain[MaxNChannels + 1];
RSpinBox * sbNumEventAgg[MaxNChannels + 1];
RComboBox * cbTriggerValid[MaxNChannels + 1];
RComboBox * cbTrigCount[MaxNChannels + 1];
RComboBox * cbTrigMode[MaxNChannels + 1];
RComboBox * cbShapedTrigger[MaxNChannels + 1];
RComboBox * cbExtra2Option[MaxNChannels + 1];
RComboBox * cbVetoSource[MaxNChannels + 1];
RSpinBox * sbVetoWidth[MaxNChannels + 1];
RComboBox * cbVetoStep[MaxNChannels + 1];
2023-04-28 18:18:12 -04:00
//QPushButton * bnTriggerValidMask[MaxNDigitizer][MaxNChannels/2];
2023-04-24 17:37:03 -04:00
};
#endif