EnergySpectrumAnalyer/src/2DSpectralCompliance/TwoDSpectralCompliance.h

57 lines
1.4 KiB
C
Raw Normal View History

2026-04-07 18:15:20 +08:00
#ifndef TWODSPECTRALCOMPLIANCE_H
#define TWODSPECTRALCOMPLIANCE_H
#include <QWidget>
#include <MeasureAnalysisView.h>
#include <QVector>
class CustomQwtPlot;
class QwtPlotSpectrogram;
namespace Ui {
class TwoDSpectralCompliance;
}
//// 用于存储三维数据点(初级能量,次级能量和,计数)
struct TwoSurfacePoint {
float primaryEnergy;
float secondaryEnergySum;
int count;
};
class TwoDSpectralCompliance : public MeasureAnalysisView
{
Q_OBJECT
public:
explicit TwoDSpectralCompliance(QWidget *parent = nullptr);
~TwoDSpectralCompliance();
virtual void InitViewWorkspace(const QString& project_name) override final;
virtual void SetAnalyzeDataFilename(const QMap<QString, QVariant>& data_files_set) override;
private:
void setupPlot();
void readCsv(const QString& filename);
void generateSurfaceData();
void updateSpectrogram();
private:
Ui::TwoDSpectralCompliance *ui;
CustomQwtPlot* _plot = nullptr;
QwtPlotSpectrogram* _spectrogram = nullptr;
// 原始数据
struct EventData {
int eventId;
int board;
int channel;
double energy;
unsigned long long timeCounter;
};
QVector<EventData> m_rawData; // 从 CSV 读取的原始数据
QVector<TwoSurfacePoint> m_surfaceData; // 生成的曲面点(每个事件一个点,计数累加)
};
#endif // TWODSPECTRALCOMPLIANCE_H