395 lines
23 KiB
C++
395 lines
23 KiB
C++
#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; //主射线标识:0-否;1-是
|
||
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; //G:gamma探测器的数据,#g_;B:beta探测器的数据,#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; //G:gamma探测器的数据,#g_;B:beta探测器的数据,#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_analysisBegin,analyses_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
|