diff options
author | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2012-03-02 10:06:04 +0000 |
---|---|---|
committer | astrojhgu <astrojhgu@ed2142bd-67ad-457f-ba7c-d818d4011675> | 2012-03-02 10:06:04 +0000 |
commit | ca0c4dc55821d4ce5231132806c27ef4a87a895b (patch) | |
tree | a3ed4aa4a74666cdf0d9cf351e9f510a74dcdd2a | |
parent | 61ccc92efe31b5cb72d8face87f9ce4eab120e62 (diff) | |
download | opt-utilities-ca0c4dc55821d4ce5231132806c27ef4a87a895b.tar.bz2 |
git-svn-id: file:///home/svn/opt_utilities@228 ed2142bd-67ad-457f-ba7c-d818d4011675
-rw-r--r-- | vmodels/exp_bkg.hpp | 62 | ||||
-rw-r--r-- | vmodels/pl_bkg.hpp | 61 |
2 files changed, 123 insertions, 0 deletions
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 <core/fitter.hpp> +#include <cmath> +#include <misc/optvec.hpp> + +namespace opt_utilities +{ + template <typename T> + class exp_bkg + :public model<optvec<T>,optvec<T>,optvec<T>,std::string> + { + private: + exp_bkg* do_clone()const + { + return new exp_bkg<T>(*this); + } + + const char* do_get_type_name()const + { + return "exp with bkg"; + } + public: + exp_bkg() + { + this->push_param_info(param_info<optvec<T> >("Ampl",1)); + this->push_param_info(param_info<optvec<T> >("scale",1)); + this->push_param_info(param_info<optvec<T> >("bkg",1)); + + } + + optvec<T> do_eval(const optvec<T>& x,const optvec<T>& 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 <model_doc/exp_bkg.info> +#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 <core/fitter.hpp> +#include <cmath> +#include <misc/optvec.hpp> + +namespace opt_utilities +{ + template <typename T> + class pl_bkg + :public model<optvec<T>,optvec<T>,optvec<T>,std::string> + { + private: + pl_bkg* do_clone()const + { + return new pl_bkg<T>(*this); + } + + const char* do_get_type_name()const + { + return "power law with bkg"; + } + public: + pl_bkg() + { + this->push_param_info(param_info<optvec<T> >("Ampl",1)); + this->push_param_info(param_info<optvec<T> >("gamma",1)); + this->push_param_info(param_info<optvec<T> >("bkg",1)); + } + + optvec<T> do_eval(const optvec<T>& x,const optvec<T>& 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 <model_doc/pl_bkg.info> +#endif + return ""; + } + }; +} + + + +#endif +//EOF |