eis/eqpalg/algs/exp_sample2D.h

122 lines
2.9 KiB
C
Raw Normal View History

#pragma once
/**
* @file exp_sample2D.h
* @brief /线
* 12 13
* exp_type_
* 12-;13-
* task进程 /
* mon进程
* @author your name (you@domain.com)
* @version 0.1
* @date 2023-12-13
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#include <eqpalg/algs/exp_base.h>
class ExpSample2D : public ExpBase {
public:
ExpSample2D(const string& name, const mix_cc::json& rule_json,
const string& ruleId, size_t exp_type);
~ExpSample2D() override;
AlarmInfo doMonProc() override;
virtual int init() override;
/**
* @brief
* @return AlarmInfo
*/
virtual AlarmInfo mon_proc() override;
/**
* @brief
* @param time_range My Param doc
* @return std::vector<AlarmInfo>
*/
std::vector<AlarmInfo> exec_task(mix_cc::time_range_t time_range) override;
protected:
/**
* @brief X Y表达式
* @return int
*/
int reload_samples();
/**
* @brief
* @return true
* @return false
*/
bool check_polyFit();
/**
* @brief
* @return true
* @return false
*/
bool check_pear();
/**
* @brief
* @param x My Param doc
* @param fit_coefs My Param doc
* @param orders My Param doc
* @return double
*/
double PolyFitValue(double x, std::vector<double>& fit_coefs, size_t orders);
/**
* @brief
* @param X My Param doc
* @param Y My Param doc
* @return double
*/
double PearValue(std::vector<double>& X, std::vector<double>& Y);
/**
* @brief /
* @return int
*/
int reload_param();
/**
* @brief T_SAMPLE_MAG
* @param sample_id My Param doc
* @return int
*/
int insert_mag(std::string sample_id);
/**
* @brief T_SAMPLE_FIT
* @param sample_id My Param doc
* @param X My Param doc
* @param Y My Param doc
* @return int
*/
int insert_fit(std::string sample_id, double X, double Y, int seq);
private:
int orders_;
std::vector<double> fit_coefs_;
double pear_coefs_;
double scale_;
mix_cc::json sample_param_;
const string SampleType_ = "T_SAMPLE_FIT";
int data_len_ = 0;
int min_len_ = 1000;
std::vector<double> SampleX_;
std::vector<double> SampleY_;
std::unique_ptr<DAA::LSM> lsm_ptr_;
private:
/**
* @brief
*/
void reset_SampleXY();
protected:
/**
* @brief task执行函数
*/
void task_mon_pro();
};