#ifndef GAMMAANALYDATAINTERFACE_H #define GAMMAANALYDATAINTERFACE_H //#include "datamanager_global.h" #include "../DataManager/ReportOutput.h" #include #include "GammaAnalyALG.h" #include "GammaAnalyAlgLib.h" //#include "ReportFactory.h" typedef struct GStoreMiddleProcessDataNuclLinesIded { // gards_ nucl_lines_ided数据表 QVector nuclideFullname; //FullName QVector idPeak; //峰序号 QVector Energy; //核素库中核素对应的能量(keV) QVector uncEnergy; //核素库中核素对应峰的能量不确定度(keV) QVector Abundance; //核素库中核素对应峰的发射几率 QVector uncAbundance; //核素库中核素对应峰的发射几率不确定度 QVector Activity; //利用该峰计算得到的活度 QVector uncActivity; //利用该峰计算得到的活度不确定度 QVector Effic; //该峰处的探测效率 QVector uncEffic; //该峰处的探测效率不确定度 QVector Mda; //利用该峰计算得到的最小可探测活度 QVector key_flag; //主射线标识:0-否;1-是 QVector csc_ratio; //符合相加校正因子(无设为1) QVector csc_ratio_err; //符合相加校正因子不确定度(无设为0) QVector csc_mod_flag; //活度是否经过符合相加校正0 未知 QVector MDC; QVector 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 calibration_pairs_E_idCalPoint; //刻度点ID号 QVector calibration_pairs_E_xValue; // QVector calibration_pairs_E_yValue; // QVector calibration_pairs_E_uncYValue; // QString calibration_pairs_EF_Caltype; //Efficiency:效率刻度; QString calibration_pairs_EF_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_EF_idCalPoint; //刻度点ID号 QVector calibration_pairs_EF_xValue; // QVector calibration_pairs_EF_yValue; // QVector calibration_pairs_EF_uncYValue; // QString calibration_pairs_R_Caltype; //Resolution:分辨率刻度; QString calibration_pairs_R_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_R_idCalPoint; //刻度点ID号 QVector calibration_pairs_R_xValue; // QVector calibration_pairs_R_yValue; // QVector calibration_pairs_R_uncYValue; // QString calibration_pairs_T_Caltype; //TotalEfficiency:总效率刻度; QString calibration_pairs_T_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_T_idCalPoint; //刻度点ID号 QVector calibration_pairs_T_xValue; // QVector calibration_pairs_T_yValue; // QVector calibration_pairs_T_uncYValue; // //原始谱 数据 QString calibration_pairs_S_E_Caltype; //energy:能量刻度 QString calibration_pairs_S_E_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_S_E_idCalPoint; //刻度点ID号 QVector calibration_pairs_S_E_xValue; // QVector calibration_pairs_S_E_yValue; // QVector calibration_pairs_S_E_uncYValue; // QString calibration_pairs_S_EF_Caltype; //Efficiency:效率刻度; QString calibration_pairs_S_EF_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_S_EF_idCalPoint; //刻度点ID号 QVector calibration_pairs_S_EF_xValue; // QVector calibration_pairs_S_EF_yValue; // QVector calibration_pairs_S_EF_uncYValue; // QString calibration_pairs_S_R_Caltype; //Resolution:分辨率刻度; QString calibration_pairs_S_R_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_S_R_idCalPoint; //刻度点ID号 QVector calibration_pairs_S_R_xValue; // QVector calibration_pairs_S_R_yValue; // QVector calibration_pairs_S_R_uncYValue; // QString calibration_pairs_S_T_Caltype; //TotalEfficiency:总效率刻度; QString calibration_pairs_S_T_Input; //PHD:代表数据来自PHD文件;External:代表数据来自外部,如刻度工具、其它文件等 QVector calibration_pairs_S_T_idCalPoint; //刻度点ID号 QVector calibration_pairs_S_T_xValue; // QVector calibration_pairs_S_T_yValue; // QVector 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 peaks_idPeak; //峰序号 QVector peaks_peakCentroid; //峰中心道(道址) QVector peaks_uncpeakCentroid; //峰中心道不确定度(道址) QVector peaks_Energy; //峰中心道能量(keV) QVector peaks_uncEnergy; //峰中心道能量不确定度(keV) QVector peaks_Area; //峰面积(计数)。已扣除基线面积,但未扣除空白样品计数和探测器本底计数 QVector peaks_areaErr; //峰面积不确定度(以计数为单位) QVector peaks_netCountRate; //峰的净计数率(1/s)=峰面积/活时间 未知 QVector peaks_uncNetCountRate; //峰的净计数率的不确定度(1/s) 未知 QVector peaks_Efficiency; //测量系统在峰能量处的绝对效率 QVector peaks_Uncefficiency; //测量系统在峰能量处的绝对效率的不确定度 QVector peaks_Fwhm; //峰的半高宽(keV) QVector peaks_Fwhmc; //峰的半高宽(Channel) QVector peaks_Significance; //峰的灵敏度 QVector peaks_Sensitivity; //重峰序号 QVector peaks_multiIndex; //峰的感兴趣区的起始道left QVector peaks_ROIstart; //峰的感兴趣区的结束道right QVector peaks_ROIend; //峰序号 QVector peaks_tail; // QVector peaks_tailAlpha; // QVector peaks_upperTail; // QVector peaks_upperTailAlpha; // QVector peaks_BWWidthChan; // QVector peaks_recoilBetaChan; QVector peaks_recoilDeltaChan; // QVector peaks_stepRatio; // QVector peaks_backgroundArea; //在峰区域下的基线面积(计数) QVector peaks_meanBackCount; //基线面积/道数(计数) QVector peaks_Lc; //峰的可探测线Lc QVector peaks_Ld; //峰的可探测线Ld QVector peaks_Nuclide_name; //文件名称 QVector peaks_comments; // gards_ nucl_lines_ided数据表 QMap nucl_lines_ided_data; //gards_ nucl_ided数据表 QVector nucl_ided_Nuclidename; // 核素名称 QVector nucl_ided_Type; //核素类型 未知 QVector nucl_ided_Halflife; //核素半衰期 QVector nucl_ided_ave_activ; //平均活度值NULL QVector nucl_ided_ave_activ_err; //平均活度值不确定度NULL QVector nucl_ided_activ_key; //主射线活度值 未知 QVector nucl_ided_activ_key_err; //主射线活度值不确定度 QVector nucl_ided_mda; //核素的最小可探测活度 QVector nucl_ided_mda_err; //核素的最小可探测活度不确定度 QVector nucl_ided_nid_flag; //核素识别标志未知 QVector nucl_ided_csc_ratio; //符合相加校正因子(无设为1) QVector nucl_ided_csc_ratio_err; //符合相加校正因子不确定度(无设为0) QVector nucl_ided_csc_mod_flag; //活度是否经过符合相加校正0 QVector nucl_ided_MDC; QVector nucl_ided_Concentration; QVector nucl_ided_Key_Energy; // QVector nucl_ided_Key_Yield; // //GARDS_QC_CHECK QVector QC_CHECK_QC_NAME; QVector QC_CHECK_QC_VALUE; QVector QC_CHECK_QC_STANDARD; QVector 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 &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 &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 DoubleLimit(QVector &data); QVector DoubleLimit(QVector _data); QVector DoubleLimit_G(QVector _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 GetPercent(QVector &one,QVector &two); QVector GetThreePoint(QVector source); QVector GetPass(QVector 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