27 #ifndef GMODELSPATIALRADIALPROFILEDMZHAO_HPP
28 #define GMODELSPATIALRADIALPROFILEDMZHAO_HPP
62 virtual void clear(
void);
64 virtual std::string
classname(
void)
const;
78 double alpha(
void)
const;
79 void alpha(
const double& alpha);
80 double beta(
void)
const;
81 void beta(
const double& beta);
82 double gamma(
void)
const;
83 void gamma(
const double& gamma);
99 const double& halo_distance,
104 const double& core_radius) :
112 double eval(
const double& los);
150 return (
"GModelSpatialRadialProfileDMZhao");
virtual double theta_min(void) const
Return minimum model radius (in radians)
double scale_radius(void) const
Return scale radius.
GModelPar m_alpha
Power index, inverse transition region width.
GModelPar m_beta
Power index, slope at >> m_scale_radius.
GModelPar m_gamma
Power index, slope at << m_scale_radius.
virtual void read(const GXmlElement &xml)
Read model from XML element.
void free_members(void)
Delete class members.
virtual GModelSpatialRadialProfileDMZhao * clone(void) const
Clone radial DMZhao profile model.
GModelPar m_scale_radius
Scale radius of halo profile.
virtual void clear(void)
Clear radial DMZhao profile model.
double gamma(void) const
Return Zhao gamma power index.
Radial profile model class interface definition.
double halo_distance(void) const
Return halo distance.
virtual void write(GXmlElement &xml) const
Write model into XML element.
Model parameter class interface definition.
double beta(void) const
Return Zhao beta power index.
Single parameter function abstract base class definition.
double mass_density(const double &radius) const
Calculate Halo Mass Density.
halo_kernel_los(const double &scale_radius, const double &halo_distance, const double &alpha, const double &beta, const double &gamma, const double &theta, const double &core_radius)
virtual GModelSpatialRadialProfileDMZhao & operator=(const GModelSpatialRadialProfileDMZhao &model)
Assignment operator.
double angle(const GVector &a, const GVector &b)
Computes angle between vectors.
virtual double profile_value(const double &theta) const
Radial profile.
double alpha(void) const
Return Zhao alpha power index.
void copy_members(const GModelSpatialRadialProfileDMZhao &model)
Copy class members.
GModelPar m_core_radius
Core radius.
void init_members(void)
Initialise class members.
void update(void) const
Update precomputation cache.
double m_last_scale_radius
GModelPar m_scale_density
Scale density of halo profile.
double m_last_scale_density
virtual std::string classname(void) const
Return class name.
GModelPar m_halo_distance
Distance from earth to halo center.
double jfactor(const double &angle) const
Calculate J-factor.
GModelSpatialRadialProfileDMZhao(void)
Void constructor.
double value(void) const
Return parameter value.
Single parameter function abstract base class.
double scale_density(void) const
Return scale density.
GModelPar m_theta_min
Minimum theta angle.
virtual double theta_max(void) const
Return maximum model radius (in radians)
double m_scale_density_squared
virtual ~GModelSpatialRadialProfileDMZhao(void)
Destructor.
Integration class interface definition.
double eval(const double &los)
Kernel for zhao halo density profile squared.
virtual std::string print(const GChatter &chatter=NORMAL) const
Print information.
GModelPar m_theta_max
Maximum theta angle.