127 lines
6.1 KiB
C
127 lines
6.1 KiB
C
|
#ifndef PACKAGING_H
|
|||
|
#define PACKAGING_H
|
|||
|
////////////////////////////////////////////////////////////////////////
|
|||
|
// 类说明:此类为b_g谱业务逻辑
|
|||
|
//
|
|||
|
// 注意事项:1、ExtractSROIcts 用到2次拟合算法 请注意
|
|||
|
//
|
|||
|
////////////////////////////////////////////////////////////////////////
|
|||
|
#include <QVector>
|
|||
|
#include <QString>
|
|||
|
#include "BgWorkDef.h"
|
|||
|
|
|||
|
class CBgWork
|
|||
|
{
|
|||
|
public:
|
|||
|
CBgWork();
|
|||
|
CBgWork(BgFileI& _fileHanle);
|
|||
|
~CBgWork();
|
|||
|
//log拆分而来,错误日志
|
|||
|
static QString BgAnlyseError(const BgErrorType& _error);
|
|||
|
void SetBgFile(BgFileI& _fileHanle);
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:重新设置要分析的文件名
|
|||
|
// _fileHanle
|
|||
|
// 返回值:void
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
void RenameAnalyseFile(BgFileI& _fileHanle);
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:界面交互分析
|
|||
|
// 函数参数:b_e_cal:b能刻度计数方程系数
|
|||
|
// g_e_cal: g能刻度计数方程系数
|
|||
|
// 返回值:void
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
bool MutialAnalyse(BgCalibratePara& _BgCalPara);
|
|||
|
////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:自动分析
|
|||
|
// 函数参数:void
|
|||
|
// 返回值:void
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
bool AutoAnalyse();
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:GetAllValue 获取所有分析结果
|
|||
|
// 函数参数:void
|
|||
|
// 返回值: 分析的所有结构 详解请看结构
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
BgAllGenerate GetAllValue();
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:GetUIValue 获取与界面相关的结果
|
|||
|
// 函数参数:void
|
|||
|
// 返回值: 分析的所有结构 详解请看结构
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
BgUINeed GetUIValue();
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:GetLastError 返回计算标示
|
|||
|
// 函数参数:void
|
|||
|
// 返回值: 分析的所有结构 详解请看结构
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
BgErrorType GetLastError();
|
|||
|
BgSample GetSampleUseData();
|
|||
|
BgGas GetGasUseData();
|
|||
|
BgDetbgr GetDetbgrUseData();
|
|||
|
/////////////////////////////////////////////////////////////////////
|
|||
|
// 函数说明:CaculateXeActivity 计算符合外推 核素活动值
|
|||
|
// 函数参数: _watch_x:拟合观察点x; _watch_y:拟合观察点y;_lamadaXe:Xe参数;_acqRealTime:生存时间;,QVector<double> &_fittingPara:拟合系数返回;_fittingType:拟合方式
|
|||
|
// 返回值: 分析的所有结构 详解请看结构
|
|||
|
//////////////////////////////////////////////////////////////////////
|
|||
|
static double CaculateXeActivity(QVector<double>&_watch_x,QVector<double>&_watch_y,const double& _lamadaXe,const double& _acqRealTime,QVector<double> &_fittingPara,int _fittingType=_default);
|
|||
|
static bool GetFittingPara(QVector<double>& _watch_x,QVector<double> &_watch_y,FitType _fittype,QVector<double> &_fittingPara);
|
|||
|
static bool GetFittingData(QVector<double>& _watch,FitType _fittype,QVector<double> &_fittingPara,QVector<int> &_rData);
|
|||
|
static bool GetFittingData(QVector<double>& _watch,FitType _fittype,QVector<double> &_fittingPara,QVector<double> &_rData);
|
|||
|
static bool GetFileFittingPara(QVector<double>& _watch_x,QVector<double> &_watch_y,QVector<double> &_fittingPara);
|
|||
|
static bool GetFileFittingData(QVector<double>& _watch,QVector<double> &_fittingPara,QVector<int> &_rData);
|
|||
|
static bool GetFileFittingData(QVector<double>& _watch,QVector<double> &_fittingPara,QVector<double> &_rData);
|
|||
|
static QString GetFittingDescriptionByType(int _type);
|
|||
|
static QString GetFittingEquation(int _type);
|
|||
|
|
|||
|
// 根据不同的拟合方法计算边界值, 默认2次拟合 可以继承书写新的拟合
|
|||
|
virtual bool CalcBgBoundary(BgROILimit& _roi_limit,BgEC& _b_g_e_c,BgCalibratePara& _BgCalPara,BgBoundary& _output);
|
|||
|
protected:
|
|||
|
// 根据不同的拟合方法计算边界值, 默认2次拟合 可以继承书写新的拟合
|
|||
|
virtual bool CalcBgBoundary(BgROILimit& _roi_limit,BgEC& _b_g_e_c,BgCalibratePara& _BgCalPara,BgBoundary& _output,BgFittingPara& _fittingPara);
|
|||
|
private:
|
|||
|
//初始化
|
|||
|
bool SetPara(BgFileI& _fileHanle);
|
|||
|
//处理流程
|
|||
|
bool Analyse();
|
|||
|
//获取样品谱感兴趣区计数
|
|||
|
bool ExtractSROIcts();
|
|||
|
//获取气体本底谱感兴趣区计数
|
|||
|
bool ExtractGROIcts();
|
|||
|
//获取探测器本底谱感兴趣区计数
|
|||
|
bool ExtractDROIcts();
|
|||
|
//样品谱扣除探测器本底谱计数
|
|||
|
bool SDetuctDcts();
|
|||
|
//气体本底谱扣除探测器本底谱计数
|
|||
|
bool GDetuctDcts();
|
|||
|
//获取净计数
|
|||
|
bool ExtractNetCounts();
|
|||
|
//日期差值计算
|
|||
|
double SubtractTime(QString _begin,QString _end);
|
|||
|
//计算感兴趣区浓度和不确定度
|
|||
|
bool CalcRoiConUncer();
|
|||
|
//计算同位素浓度和不确定度
|
|||
|
bool CalcXeConUncer();
|
|||
|
//MDC计算
|
|||
|
bool MDC();
|
|||
|
//所需数据
|
|||
|
BgSample m_sampleData; //样品谱数据
|
|||
|
BgGas m_gasData; //气体本底谱数据
|
|||
|
BgDetbgr m_detbgrData; //探测器本地谱数据
|
|||
|
BgAllGenerate m_allGenerate;
|
|||
|
BgUINeed m_uiNeed;
|
|||
|
BgSampleGenerate m_sampleGenerate; //样品谱生成数据
|
|||
|
BgGasGenerate m_gasGenerate; //气体本底谱生成数据
|
|||
|
BgDetbgrGenerate m_detbgrGenerate; //探测器本地谱生成数据
|
|||
|
BgOtherGenerate m_otherGenerate; //生成的其他数据
|
|||
|
const static double cst_fixed_volXe;
|
|||
|
const static double cst_defvolXe; // Value substituted when Xe volume read as below 0.1 ml - warning issued.
|
|||
|
static bool m_initAlgorithm;
|
|||
|
BgCalibratePara m_bgCalPara;
|
|||
|
BgFileI m_file;
|
|||
|
bool m_flag_read_file;
|
|||
|
BgErrorType m_lastError;
|
|||
|
};
|
|||
|
|
|||
|
#endif
|