2026-03-26 17:35:58 +08:00
|
|
|
#ifndef CONFORMITYANALYSIS_H
|
|
|
|
|
#define CONFORMITYANALYSIS_H
|
|
|
|
|
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
#include <iostream>
|
|
|
|
|
#include "ParticleDataStatistics.h"
|
|
|
|
|
#include "ThreeDDisplay.h"
|
|
|
|
|
#include "csv.h"
|
|
|
|
|
#include "MeasureAnalysisView.h"
|
2026-03-27 10:24:41 +08:00
|
|
|
#include <QVector>
|
2026-05-09 16:50:34 +08:00
|
|
|
|
|
|
|
|
//using namespace CoincidenceSpectrum;
|
|
|
|
|
|
2026-03-26 17:35:58 +08:00
|
|
|
|
|
|
|
|
namespace Ui {
|
|
|
|
|
class ConformityAnalysis;
|
|
|
|
|
}
|
|
|
|
|
|
2026-05-09 16:50:34 +08:00
|
|
|
|
2026-03-27 10:24:41 +08:00
|
|
|
typedef struct particleCoincidenceEvent
|
|
|
|
|
{
|
|
|
|
|
int eventId;//事件ID
|
|
|
|
|
int board;//板卡号
|
|
|
|
|
int channel;//通道号
|
|
|
|
|
double energy;//能量
|
|
|
|
|
qulonglong timeCounter;//时间计数
|
|
|
|
|
}PARTICLECOINCIDENCEEVENT;
|
|
|
|
|
|
2026-05-09 16:50:34 +08:00
|
|
|
//// 用于存储三维数据
|
|
|
|
|
//typedef struct SurfacePoint {
|
|
|
|
|
// float primaryEnergy; // 初级粒子能量
|
|
|
|
|
// float secondaryEnergySum; // 次级粒子能量和
|
|
|
|
|
// int count; // 符合事件计数
|
|
|
|
|
//}SURFACEPOINT;
|
|
|
|
|
|
2026-03-26 17:35:58 +08:00
|
|
|
class ConformityAnalysis : public MeasureAnalysisView
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
QMap<QString, int> m_FirstParticle;
|
|
|
|
|
QMap<QString, int> m_subordinate;
|
2026-03-27 10:24:41 +08:00
|
|
|
QVector<particleCoincidenceEvent*> m_beginVector;
|
|
|
|
|
QVector<particleCoincidenceEvent*> m_secondVector;
|
2026-03-26 17:35:58 +08:00
|
|
|
QVector<SurfacePoint> m_surfaceData;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
explicit ConformityAnalysis(QWidget *parent = nullptr);
|
|
|
|
|
~ConformityAnalysis();
|
|
|
|
|
|
|
|
|
|
virtual void InitViewWorkspace(const QString& project_name) override final;
|
|
|
|
|
virtual void SetAnalyzeDataFilename(const QMap<QString, QVariant>& 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<QString, int> statisticsFirstParticleQuantity();
|
|
|
|
|
//处理当前板卡初级粒子信息
|
2026-03-27 10:24:41 +08:00
|
|
|
QVector<particleCoincidenceEvent*> handleBasicSubordinate(int Board, int Channel);
|
2026-03-26 17:35:58 +08:00
|
|
|
//处理次级粒子信息
|
2026-03-27 10:24:41 +08:00
|
|
|
QMap<QString,int> handleSubordinate(QVector<particleCoincidenceEvent*> &eventData, int Board, int Channel);
|
2026-03-26 17:35:58 +08:00
|
|
|
// 获取最大值
|
|
|
|
|
int getMaxValue();
|
|
|
|
|
//计算全部的初级粒子范围 和 次级粒子范围
|
|
|
|
|
void calculateFirstSecondRange();
|
|
|
|
|
//设置板卡数据信息
|
|
|
|
|
void setAllBoardData();
|
|
|
|
|
//设置符合事件相关信息
|
|
|
|
|
void setThreeUiData();
|
|
|
|
|
//全部谱图数据处理
|
2026-03-27 10:24:41 +08:00
|
|
|
void generateSurfaceData(const QVector<particleCoincidenceEvent*> events);
|
2026-03-26 17:35:58 +08:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
Ui::ConformityAnalysis *ui;
|
|
|
|
|
|
|
|
|
|
QString m_fileName;
|
|
|
|
|
|
2026-05-09 16:50:34 +08:00
|
|
|
// std::vector<F2t9Order::CoincidenceEvent> m_CoincidenceEventVector;//所有的能谱符合处理
|
2026-03-26 17:35:58 +08:00
|
|
|
|
|
|
|
|
int m_boardChannel[MAX_BOARD][MAX_CHANNEL];
|
|
|
|
|
|
2026-03-27 10:24:41 +08:00
|
|
|
QVector<particleCoincidenceEvent*> _spectrumDataList;//所有的能谱符合处理
|
2026-03-26 17:35:58 +08:00
|
|
|
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
|