diff options
| -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 | 
