EnergySpectrumAnalyer/src/ThreeDimensionalConformityAnalysisView/ConformityAnalysis.h

87 lines
2.5 KiB
C
Raw Normal View History

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 "CoincidenceSpectrumProcess.h"
#include "MeasureAnalysisView.h"
using namespace CoincidenceSpectrum;
namespace Ui {
class ConformityAnalysis;
}
class ConformityAnalysis : public MeasureAnalysisView
{
Q_OBJECT
private:
QMap<QString, int> m_FirstParticle;
QMap<QString, int> m_subordinate;
std::vector<F2t9Order::SpectrumData> m_beginVector;
std::vector<F2t9Order::SpectrumData> m_secondVector;
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();
//处理当前板卡初级粒子信息
std::vector<F2t9Order::CoincidenceEvent> handleBasicSubordinate(std::vector<F2t9Order::CoincidenceEvent> &eventData,int Board, int Channel);
//处理次级粒子信息
QMap<QString,int> handleSubordinate(std::vector<F2t9Order::CoincidenceEvent> &eventData, int Board, int Channel);
// 获取最大值
int getMaxValue();
//计算全部的初级粒子范围 和 次级粒子范围
void calculateFirstSecondRange();
//设置板卡数据信息
void setAllBoardData();
//设置符合事件相关信息
void setThreeUiData();
//全部谱图数据处理
void generateSurfaceData(const std::vector<F2t9Order::CoincidenceEvent>& events);
private:
Ui::ConformityAnalysis *ui;
QString m_fileName;
std::vector<F2t9Order::CoincidenceEvent> 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