#ifndef TWODSPECTRALCOMPLIANCE_H #define TWODSPECTRALCOMPLIANCE_H #include #include #include 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& 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 m_rawData; // 从 CSV 读取的原始数据 QVector m_surfaceData; // 生成的曲面点(每个事件一个点,计数累加) }; #endif // TWODSPECTRALCOMPLIANCE_H