AnalysisSystemForRadionucli.../gammaanalydatainterface.h
2024-06-04 15:25:02 +08:00

395 lines
23 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef GAMMAANALYDATAINTERFACE_H
#define GAMMAANALYDATAINTERFACE_H
//#include "datamanager_global.h"
#include "../DataManager/ReportOutput.h"
#include <QObject>
#include "GammaAnalyALG.h"
#include "GammaAnalyAlgLib.h"
//#include "ReportFactory.h"
typedef struct GStoreMiddleProcessDataNuclLinesIded
{
// gards_ nucl_lines_ided数据表
QVector<QString> nuclideFullname; //FullName
QVector<QString> idPeak; //峰序号
QVector<QString> Energy; //核素库中核素对应的能量keV
QVector<QString> uncEnergy; //核素库中核素对应峰的能量不确定度keV
QVector<QString> Abundance; //核素库中核素对应峰的发射几率
QVector<QString> uncAbundance; //核素库中核素对应峰的发射几率不确定度
QVector<QString> Activity; //利用该峰计算得到的活度
QVector<QString> uncActivity; //利用该峰计算得到的活度不确定度
QVector<QString> Effic; //该峰处的探测效率
QVector<QString> uncEffic; //该峰处的探测效率不确定度
QVector<QString> Mda; //利用该峰计算得到的最小可探测活度
QVector<QString> key_flag; //主射线标识01
QVector<QString> csc_ratio; //符合相加校正因子无设为1
QVector<QString> csc_ratio_err; //符合相加校正因子不确定度无设为0
QVector<QString> csc_mod_flag; //活度是否经过符合相加校正0 未知
QVector<QString> MDC;
QVector<QString> Concentration;
}structGStoreMiddleProcessDataNuclLinesIded,*pGStoreMiddleProcessDataNuclLinesIded;
typedef struct GStoreMiddleProcessData
{
bool dbWriteFlag; //数据库存储标示 例如
QString dbWriteStatusFlag; //数据写入状态标示 例如 P U F 等
QString ErrorInfo; //错误信息
//gards_analyses数据表数据
QString IdAnalysis; //分析ID号
QString sample_id; //样品ID号
QString analyses_analysisBegin; //分析开始时
QString analyses_analysisEnd; //分析的结束时间
QString analyses_type; //Reviewed:交互 Auto自动
QString analyses_software; //使用的软件
QString analyses_swVersion; //软件版本号
QString analyses_analyst; //分析员名称
QString analyses_baseline_filePath; //基线数据路径
QString analyses_lc_filePath; //lc数据基线路径
QString analyses_scac_filePath; //scac数据路径
QString analyses_save_filePath; //原始文件存储文件名
QString analyses_baselineMethod; //基线计数方
QString analyses_peaksMethod; //寻峰方法描
QString analyses_nuclideMethod; //核素识别方
QString analyses_uncCalcMethod; //不确定度计
QString analyses_lcMethod; //Lc计算方法
QString analyses_LogPath; //日志路径
QString analyses_ReportPath; //报告路径
QString analyses_baseline_absolute_filePath; //基线数据绝对路径
QString analyses_lc_absolute_filePath; //lc数据基线绝对路径
QString analyses_scac_absolute_filePath; //scac数据绝对路径
QString analyses_save_absolute_filePath; //原始文件存储绝对文件名
QString analyses_absolute_LogPath; //日志绝对路径
QString analyses_absolute_ReportPath; //报告绝对路径
double analyses_searchStartChannel; //寻峰起始道
double analyses_searchEndChannel; //寻峰结束道
double analyses_searchThreshold; //寻峰阈值
double analyses_numberOfPeaks; //峰数目
double analyses_totalCounts; //总计数 未知
double analyses_category; //分级结果
QString analyses_comments; //注释
//gards_ calibration_pairs数据表
QString calibration_pairs_sample_type; //Ggamma探测器的数据#g_Bbeta探测器的数据,#b_
QString calibration_pairs_E_Caltype; //energy能量刻度
QString calibration_pairs_E_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_E_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_E_xValue; //
QVector<QString> calibration_pairs_E_yValue; //
QVector<QString> calibration_pairs_E_uncYValue; //
QString calibration_pairs_EF_Caltype; //Efficiency效率刻度
QString calibration_pairs_EF_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_EF_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_EF_xValue; //
QVector<QString> calibration_pairs_EF_yValue; //
QVector<QString> calibration_pairs_EF_uncYValue; //
QString calibration_pairs_R_Caltype; //Resolution分辨率刻度
QString calibration_pairs_R_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_R_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_R_xValue; //
QVector<QString> calibration_pairs_R_yValue; //
QVector<QString> calibration_pairs_R_uncYValue; //
QString calibration_pairs_T_Caltype; //TotalEfficiency总效率刻度
QString calibration_pairs_T_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_T_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_T_xValue; //
QVector<QString> calibration_pairs_T_yValue; //
QVector<QString> calibration_pairs_T_uncYValue; //
//原始谱 数据
QString calibration_pairs_S_E_Caltype; //energy能量刻度
QString calibration_pairs_S_E_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_S_E_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_S_E_xValue; //
QVector<QString> calibration_pairs_S_E_yValue; //
QVector<QString> calibration_pairs_S_E_uncYValue; //
QString calibration_pairs_S_EF_Caltype; //Efficiency效率刻度
QString calibration_pairs_S_EF_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_S_EF_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_S_EF_xValue; //
QVector<QString> calibration_pairs_S_EF_yValue; //
QVector<QString> calibration_pairs_S_EF_uncYValue; //
QString calibration_pairs_S_R_Caltype; //Resolution分辨率刻度
QString calibration_pairs_S_R_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_S_R_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_S_R_xValue; //
QVector<QString> calibration_pairs_S_R_yValue; //
QVector<QString> calibration_pairs_S_R_uncYValue; //
QString calibration_pairs_S_T_Caltype; //TotalEfficiency总效率刻度
QString calibration_pairs_S_T_Input; //PHD代表数据来自PHD文件External代表数据来自外部如刻度工具、其它文件等
QVector<QString> calibration_pairs_S_T_idCalPoint; //刻度点ID号
QVector<QString> calibration_pairs_S_T_xValue; //
QVector<QString> calibration_pairs_S_T_yValue; //
QVector<QString> calibration_pairs_S_T_uncYValue; //
//gards_ calibration 数据表
QString calibration_sample_type; //Ggamma探测器的数据#g_Bbeta探测器的数据,#b_
QString calibration_E_Caltype; //energy能量刻度
double calibration_E_function; //拟合方程ID号统一定义
QString calibration_E_functionTypeDef; //函数类型描述
QString calibration_E_functionDef; //拟合方程描述
double calibration_E_startOfRange; //拟合的起始值
double calibration_E_endOfRange; //拟合的结束值
QString calibration_E_coeff_string; //拟合系数
QString calibration_E_uncoeff_string; //拟合系数1不确定度
QString calibration_EF_Caltype; //Efficiency效率刻度
double calibration_EF_function; //拟合方程ID号统一定义
QString calibration_EF_functionTypeDef; //函数类型描述
QString calibration_EF_functionDef; //拟合方程描述
double calibration_EF_startOfRange; //拟合的起始值
double calibration_EF_endOfRange; //拟合的结束值
QString calibration_EF_coeff_string; //拟合系数
QString calibration_EF_uncoeff_string; //拟合系数1不确定度
QString calibration_R_Caltype; //Resolution分辨率刻度
double calibration_R_function; //拟合方程ID号统一定义
QString calibration_R_functionTypeDef; //函数类型描述
QString calibration_R_functionDef; //拟合方程描述
double calibration_R_startOfRange; //拟合的起始值
double calibration_R_endOfRange; //拟合的结束值
QString calibration_R_coeff_string; //拟合系数
QString calibration_R_uncoeff_string; //拟合系数1不确定度
QString calibration_T_Caltype; //TotalEfficiency总效率刻度
double calibration_T_function; //拟合方程ID号统一定义
QString calibration_T_functionTypeDef; //函数类型描述
QString calibration_T_functionDef; //拟合方程描述
double calibration_T_startOfRange; //拟合的起始值
double calibration_T_endOfRange; //拟合的结束值
QString calibration_T_coeff_string; //拟合系数
QString calibration_T_uncoeff_string; //拟合系数1不确定度
//gards_ peaks数据表
QVector<QString> peaks_idPeak; //峰序号
QVector<QString> peaks_peakCentroid; //峰中心道(道址)
QVector<QString> peaks_uncpeakCentroid; //峰中心道不确定度(道址)
QVector<QString> peaks_Energy; //峰中心道能量keV
QVector<QString> peaks_uncEnergy; //峰中心道能量不确定度keV
QVector<QString> peaks_Area; //峰面积(计数)。已扣除基线面积,但未扣除空白样品计数和探测器本底计数
QVector<QString> peaks_areaErr; //峰面积不确定度(以计数为单位)
QVector<QString> peaks_netCountRate; //峰的净计数率1/s=峰面积/活时间 未知
QVector<QString> peaks_uncNetCountRate; //峰的净计数率的不确定度1/s 未知
QVector<QString> peaks_Efficiency; //测量系统在峰能量处的绝对效率
QVector<QString> peaks_Uncefficiency; //测量系统在峰能量处的绝对效率的不确定度
QVector<QString> peaks_Fwhm; //峰的半高宽keV
QVector<QString> peaks_Fwhmc; //峰的半高宽Channel
QVector<QString> peaks_Significance; //峰的灵敏度
QVector<QString> peaks_Sensitivity; //重峰序号
QVector<QString> peaks_multiIndex; //峰的感兴趣区的起始道left
QVector<QString> peaks_ROIstart; //峰的感兴趣区的结束道right
QVector<QString> peaks_ROIend; //峰序号
QVector<QString> peaks_tail; //
QVector<QString> peaks_tailAlpha; //
QVector<QString> peaks_upperTail; //
QVector<QString> peaks_upperTailAlpha; //
QVector<QString> peaks_BWWidthChan; //
QVector<QString> peaks_recoilBetaChan;
QVector<QString> peaks_recoilDeltaChan; //
QVector<QString> peaks_stepRatio; //
QVector<QString> peaks_backgroundArea; //在峰区域下的基线面积(计数)
QVector<QString> peaks_meanBackCount; //基线面积/道数(计数)
QVector<QString> peaks_Lc; //峰的可探测线Lc
QVector<QString> peaks_Ld; //峰的可探测线Ld
QVector<QString> peaks_Nuclide_name; //文件名称
QVector<QString> peaks_comments;
// gards_ nucl_lines_ided数据表
QMap<QString,structGStoreMiddleProcessDataNuclLinesIded> nucl_lines_ided_data;
//gards_ nucl_ided数据表
QVector<QString> nucl_ided_Nuclidename; // 核素名称
QVector<QString> nucl_ided_Type; //核素类型 未知
QVector<QString> nucl_ided_Halflife; //核素半衰期
QVector<QString> nucl_ided_ave_activ; //平均活度值NULL
QVector<QString> nucl_ided_ave_activ_err; //平均活度值不确定度NULL
QVector<QString> nucl_ided_activ_key; //主射线活度值 未知
QVector<QString> nucl_ided_activ_key_err; //主射线活度值不确定度
QVector<QString> nucl_ided_mda; //核素的最小可探测活度
QVector<QString> nucl_ided_mda_err; //核素的最小可探测活度不确定度
QVector<QString> nucl_ided_nid_flag; //核素识别标志未知
QVector<QString> nucl_ided_csc_ratio; //符合相加校正因子无设为1
QVector<QString> nucl_ided_csc_ratio_err; //符合相加校正因子不确定度无设为0
QVector<QString> nucl_ided_csc_mod_flag; //活度是否经过符合相加校正0
QVector<QString> nucl_ided_MDC;
QVector<QString> nucl_ided_Concentration;
QVector<QString> nucl_ided_Key_Energy; //
QVector<QString> nucl_ided_Key_Yield; //
//GARDS_QC_CHECK
QVector<QString> QC_CHECK_QC_NAME;
QVector<QString> QC_CHECK_QC_VALUE;
QVector<QString> QC_CHECK_QC_STANDARD;
QVector<QString> QC_CHECK_QC_RESULT;
//sample information
QString sample_collection_start;
QString sample_collection_stop;
QString sample_time;
QString sample_quantity;
QString sample_decay_time;
QString sample_acquisiton_start;
QString sample_acquistion_stop;
QString sample_acquistion_time;
QString sample_Geometry;
QString sample_Avg_Flow_Rate;
QString sample_stationID; //
QString sample_detectID; //
QString sample_Type; //
QString Collection_Station_Comments;
QString NDC_Analysis_General_Comments;
//SpecSetup
SpecSetup setting_specSetup;
}structGStoreMiddleProcessData,*pGStoreMiddleProcessData;
class GAMMAANALYALGSHARED_EXPORT GammaAnalyDataInterface: public QObject
{
Q_OBJECT
public:
explicit GammaAnalyDataInterface(QObject *parent = 0);
~GammaAnalyDataInterface();
public:
/////////////////////////////////////////////////////////////////////
// GetAutoMiddleData 获取自动处理G算法中间值
// 参数说明fileAnlyse 算法需要的PHD信息 请将filepath初始化
// nucline :初始化的基线信息 例如fileAnlyse.header.system_type == "P"
// middleData :输入输出
// 注意返回值中没有对IdAnalysis;sample_id; 赋值,请自行赋值
// 返回值: true:正确返回
// fale:错误返回
//////////////////////////////////////////////////////////////////////
bool GetAutoMiddleData(PHDFile& fileAnlyse,QMap<QString, NuclideLines> &nucline,structGStoreMiddleProcessData& middleData);
/////////////////////////////////////////////////////////////////////
// GetInterMiddlData 获取交互分析G算法中间值
// 参数说明fileAnlyse 算法需要的PHD信息 请将filepath初始化
// nucline :初始化的基线信息 例如fileAnlyse.header.system_type == "P"
// middleData :输入输出 请将analyses_analyst自行初始化
// 注意返回值中没有对analyses_analysisBeginanalyses_analysisEnd,IdAnalysis;sample_id; 赋值,请自行赋值
// 返回值: true:正确返回
// fale:错误返回
//////////////////////////////////////////////////////////////////////
bool GetInterMiddlData(PHDFile& fileAnlyse,structGStoreMiddleProcessData& middleData);
enum enum_middleDataType{Auto//自动处理类型
,InterAction//交互分析类型
};
enum ReportType{Report_text,Report_exel,Report_html};
/////////////////////////////////////////////////////////////////////
// GetMiddleData 获取G算法中间值
// 参数说明fileAnlyse 算法需要的PHD信息 请将filepath初始化
// nucline :初始化的基线信息 例如fileAnlyse.header.system_type == "P"
// middleData :输出
// 返回值: true:正确返回
// fale:错误返回
//////////////////////////////////////////////////////////////////////
bool GetMiddleData(PHDFile& fileAnlyse,QMap<QString, NuclideLines> &nucline,structGStoreMiddleProcessData& middleData,enum_middleDataType type=Auto);
QString GetLogContent(structGStoreMiddleProcessData &middleData);
QString GetReportContent(structGStoreMiddleProcessData &middleData);
MyReport::REPORTINPUTPARA GetReportData(structGStoreMiddleProcessData& middleData);
bool WriteLog(structGStoreMiddleProcessData& middleData);
bool WriteReport(structGStoreMiddleProcessData& middleData,ReportType _report_type = Report_text, QString rpt_path = "");
QString GetLastInfo();
QString GetAppName();
QString GetAppVersion();
QString GetAnlyseName();
void SetAnalyseName(QString name) { m_analyst = name; }
QString DateTimeStandard(const QDateTime&_data);
double DoubleLimit(const double& _data);
double DoubleLimit(const QString& _data);
QVector<QString> DoubleLimit(QVector<QString> &data);
QVector<QString> DoubleLimit(QVector<double> _data);
QVector<QString> DoubleLimit_G(QVector<double> _data);
static QString SqlSpecialCharHandle(const QString &str);
private:
QStringList GetSysTemSubdir(const QString& _systemType);
QStringList GetDateTypeSubdir(const QString& _dateType);
QStringList GetSubDirByFileName(const QString& _fileName);
void GetReportFixedWidth(MyReport::reportTableCell& _cell,MyReport::reportTableGroup& _group,int width,QString _data);
void SetFileDir();
QString GetDataStandardFile();
QString GetLCPathFileName();
QString GetLCFileName();
QString GetLCFilePath();
QString GetBasePathFileName();
QString GetBaseFileName();
QString GetBaseFilePath();
QString GetScacPathFileName();
QString GetScacFileName();
QString GetScacFilePath();
QString GetLogPathFileName();
QString GetLogFileName();
QString GetLogFilePath();
QString GetReportPathFileName();
QString GetReportFileName();
QString GetReportFilePath();
QString GetSavePathFileName();
QString GetSaveFileName();
QString GetSaveFilePath();
void MkDir(QString fileName);
QString PathStandard(const QString& _path);
QString GetDataLogFileName();
void SetSaveSubdir(const QStringList& _data);
void SetDataFile(const QString& _fileName);
bool NameStandard(PHDFile& fileAnlyse);
void NameStandardByName(const QString&_dateTimeFormat,const QString& _suffix);
QVector<QString> GetPercent(QVector<QString> &one,QVector<QString> &two);
QVector<QString> GetThreePoint(QVector<QString> source);
QVector<QString> GetPass(QVector<QString> source);
QString GetFileNameFromDateTime(const QString& _timeString,QString suffix);
QString DateTimeStandardToFileFormat(const QString&_data);\
QString GetDataFile();
QString GetDataFileName();
QString GetDataFilePath();
QString GetSuffix(const QString& _dataType);
QString GetSuffix(const QString& _dataType,const QString& _sysType,const QString& _Fulltype,const QString& _LT);
QString GetSavefileRelationPathFileName();
QString GetDataStandardFileName();
QString DateTimeSpaceStandard(const QString&_data);
QDateTime StringToDateTimeStandard(const QString&_data);
QString DateTimeSpaceStandard(const QDateTime&_data);
QString m_analyst;
QStringList m_subDir;
QString m_info;
QString m_fileName;
QString m_standardFileName;
QString m_SavefilePath;
QString m_SavefileRelationPath;
QString m_logFilePath;
QString m_logFileRelationPath;
QString m_reportFileName;
QString m_logfileName;
QString m_saveFileName;
QString m_lcFileName;
QString m_baseLineFileName;
QString m_scacFileName;
};
#endif // GAMMAANALYDATAINTERFACE_H