AnalysisSystemForRadionucli.../gammaanalydatainterface.h

395 lines
23 KiB
C
Raw Normal View History

2024-06-04 15:25:02 +08:00
#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