#ifndef CONFORMITYANALYSIS_H #define CONFORMITYANALYSIS_H #include #include #include "ParticleDataStatistics.h" #include "ThreeDDisplay.h" #include "csv.h" #include "MeasureAnalysisView.h" #include //using namespace CoincidenceSpectrum; namespace Ui { class ConformityAnalysis; } typedef struct particleCoincidenceEvent { int eventId;//事件ID int board;//板卡号 int channel;//通道号 double energy;//能量 qulonglong timeCounter;//时间计数 }PARTICLECOINCIDENCEEVENT; //// 用于存储三维数据 //typedef struct SurfacePoint { // float primaryEnergy; // 初级粒子能量 // float secondaryEnergySum; // 次级粒子能量和 // int count; // 符合事件计数 //}SURFACEPOINT; class ConformityAnalysis : public MeasureAnalysisView { Q_OBJECT private: QMap m_FirstParticle; QMap m_subordinate; QVector m_beginVector; QVector 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(); //处理当前板卡初级粒子信息 QVector handleBasicSubordinate(int Board, int Channel); //处理次级粒子信息 QMap handleSubordinate(QVector &eventData, int Board, int Channel); // 获取最大值 int getMaxValue(); //计算全部的初级粒子范围 和 次级粒子范围 void calculateFirstSecondRange(); //设置板卡数据信息 void setAllBoardData(); //设置符合事件相关信息 void setThreeUiData(); //全部谱图数据处理 void generateSurfaceData(const QVector events); private: Ui::ConformityAnalysis *ui; QString m_fileName; // std::vector m_CoincidenceEventVector;//所有的能谱符合处理 int m_boardChannel[MAX_BOARD][MAX_CHANNEL]; QVector _spectrumDataList;//所有的能谱符合处理 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