#ifndef CIB_INTERFACE #define CIB_INTERFACE #include "Astro/utils.h" // Forward declaration class ClassEngine; namespace cib { struct cib_parameters { double Meffmax; double etamax; double sigmaMh; // double alpha; // double beta; // double delta; double tau; }; class cib_interface { public: /// Constructor cib_interface(); /// Destructor ~cib_interface(); /// Initialize method void initialize(ClassEngine* klass_); /// Update CIB parameters void update(const cib::cib_parameters & parameters_); /// Compute and retrieve Cls void compute_cls(cib::array3d & cl_cib_, cib::array3d & cl_tsz_, cib::array3d & cl_cibxtsz_) const; private: /// Compute djc_dlnMh void _compute_djc_dlnMh_(cib::array3d & dj_cen_) const; void _compute_djsub_dlnMh_(cib::array3d & dj_sub_) const; void _compute_sfr_(const cib::array1d & mhalo_, cib::array2d & sfr_) const; void _compute_sfr_mhdot_(const cib::array1d & mhalo_, cib::array2d & sfr_mhdot_) const; void _compute_Mdot_(const cib::array1d & mhalo_, cib::array2d & sfr_mhdot_) const; void _compute_msub_(const double mhalo_, cib::array1d & msub_) const; void _compute_subhmf_(const double mhalo_, const cib::array1d & ms_, cib::array1d & subhmf_) const; void _compute_J_nu_(cib::array3d & Jnu_, const cib::array3d & dj_cen_, const cib::array3d & dj_sub_) const; private: /// Initalized flag bool _initialized_; /// Class engine ClassEngine * _klass_; /// CIB parameter model cib_parameters _parameters_; /// Frequencies cib::array1d _nu_; size_t _nfreq_; /// Multipole cib::array1d _ell_; size_t _nell_; // Pk cib::array2d _power_; /// Color corrections cib::array1d _cc_; /// Calibration factors cib::array1d _fc_; /// Mass of halo cib::array1d _mh_; /// Redshift values cib::array1d _z_; /// Comoving distances in Mpc cib::array1d _comoving_distances_; /// cib::array1d _dVcdz_; cib::array1d _dchidz_; /// ? cib::array2d _hmfmz_; cib::array2d _snu_eff_; cib::array3d _unfw_; cib::array2d _biasmz_; }; } // end of namespace #endif