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
|