From ca0c4dc55821d4ce5231132806c27ef4a87a895b Mon Sep 17 00:00:00 2001 From: astrojhgu Date: Fri, 2 Mar 2012 10:06:04 +0000 Subject: git-svn-id: file:///home/svn/opt_utilities@228 ed2142bd-67ad-457f-ba7c-d818d4011675 --- vmodels/exp_bkg.hpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ vmodels/pl_bkg.hpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 vmodels/exp_bkg.hpp create mode 100644 vmodels/pl_bkg.hpp diff --git a/vmodels/exp_bkg.hpp b/vmodels/exp_bkg.hpp new file mode 100644 index 0000000..d2c7c7e --- /dev/null +++ b/vmodels/exp_bkg.hpp @@ -0,0 +1,62 @@ +/** + \file exp_bkg.hpp + \brief power law model + \author Junhua Gu + */ + + +#ifndef EXP_BKG_MODEL_H_ +#define EXP_BKG_MODEL_H_ +#define OPT_HEADER +#include +#include +#include + +namespace opt_utilities +{ + template + class exp_bkg + :public model,optvec,optvec,std::string> + { + private: + exp_bkg* do_clone()const + { + return new exp_bkg(*this); + } + + const char* do_get_type_name()const + { + return "exp with bkg"; + } + public: + exp_bkg() + { + this->push_param_info(param_info >("Ampl",1)); + this->push_param_info(param_info >("scale",1)); + this->push_param_info(param_info >("bkg",1)); + + } + + optvec do_eval(const optvec& x,const optvec& param) + { + T A=get_element(param,0); + T scale=get_element(param,1); + T bkg=get_element(param,2); + return A*exp(-x/abs(scale))+bkg; + } + + private: + std::string do_get_information()const + { +#ifdef WITH_OPT_DOC +#include +#endif + return ""; + } + }; +} + + + +#endif +//EOF diff --git a/vmodels/pl_bkg.hpp b/vmodels/pl_bkg.hpp new file mode 100644 index 0000000..3b787b9 --- /dev/null +++ b/vmodels/pl_bkg.hpp @@ -0,0 +1,61 @@ +/** + \file pl_bkg.hpp + \brief power law model + \author Junhua Gu + */ + + +#ifndef POWER_LAW_BKG_MODEL_H_ +#define POWER_LAW_BKG_MODEL_H_ +#define OPT_HEADER +#include +#include +#include + +namespace opt_utilities +{ + template + class pl_bkg + :public model,optvec,optvec,std::string> + { + private: + pl_bkg* do_clone()const + { + return new pl_bkg(*this); + } + + const char* do_get_type_name()const + { + return "power law with bkg"; + } + public: + pl_bkg() + { + this->push_param_info(param_info >("Ampl",1)); + this->push_param_info(param_info >("gamma",1)); + this->push_param_info(param_info >("bkg",1)); + } + + optvec do_eval(const optvec& x,const optvec& param) + { + T A=get_element(param,0); + T gamma=get_element(param,1); + T bkg=get_element(param,2); + return A*pow(x,gamma)+bkg; + } + + private: + std::string do_get_information()const + { +#ifdef WITH_OPT_DOC +#include +#endif + return ""; + } + }; +} + + + +#endif +//EOF -- cgit v1.2.2