#ifndef CONFORMITYANALYSIS_H #define CONFORMITYANALYSIS_H #include #include #include "ParticleDataStatistics.h" #include "ThreeDDisplay.h" #include "csv.h" #include "CoincidenceSpectrumProcess.h" #include "MeasureAnalysisView.h" using namespace CoincidenceSpectrum; namespace Ui { class ConformityAnalysis; } class ConformityAnalysis : public MeasureAnalysisView { Q_OBJECT private: QMap m_FirstParticle; QMap m_subordinate; std::vector m_beginVector; std::vector m_secondVector; QVector m_surfaceData; public: explicit ConformityAnalysis(QWidget *parent = nullptr); ~ConformityAnalysis(); virtual void InitViewWorkspace(const QString& project_name) override final; virtual void SetAnalyzeDataFilename(const QMap& data_files_set); //设置csv文件路径及文件名称 void setCsvFile(QString fileName); //读取csv文件 void readCsv(); private slots: void slot_InitialState(); void slot_ClickedBoard(int board,int channel); private: //处理板卡信息 void handleBoard(); //统计每个板卡的初级粒子计数 QMap statisticsFirstParticleQuantity(); //处理当前板卡初级粒子信息 std::vector handleBasicSubordinate(std::vector &eventData,int Board, int Channel); //处理次级粒子信息 QMap handleSubordinate(std::vector &eventData, int Board, int Channel); // 获取最大值 int getMaxValue(); //计算全部的初级粒子范围 和 次级粒子范围 void calculateFirstSecondRange(); //设置板卡数据信息 void setAllBoardData(); //设置符合事件相关信息 void setThreeUiData(); //全部谱图数据处理 void generateSurfaceData(const std::vector& events); private: Ui::ConformityAnalysis *ui; QString m_fileName; std::vector m_CoincidenceEventVector;//所有的能谱符合处理 int m_boardChannel[MAX_BOARD][MAX_CHANNEL]; double m_dFirstStart = 0.0;//初级粒子起始能量 double m_dFirstEnd = 0.0;//初级粒子终止能量 double m_dSecondStart = 0.0;//初级粒子起始能量 double m_dSecondEnd = 0.0;//初级粒子终止能量 int m_iComply = 0;//符合事件总计数 }; #endif // CONFORMITYANALYSIS_H