26 {
return static_cast<Detector*>(d)->response(nu)/nu; }
35 const char *
const fn =
"Detector::init";
39 MU_DEBUG(fn,
"%s response range is [%.2f, %.2f] microns",
name(),
60 return gsl_spline_eval(
spline_, nu, acc);
77 const char *
const fn =
"Detector::calcWidth";
80 MU_DEBUG(fn,
"%s reference bandwidth: %.2f microns, %.3e Hz",
std::pair< double, double > freqRange_
Response edge frequencies (Hz).
double center_
Effective band center (Hz).
MathUtils numerical mathematics library.
virtual void init()
Initializes detector characteristics.
#define MU_DEBUG(src, msg,...)
Log a message at level Log::DEBUG.
virtual std::string name() const =0
Official detector name (INSTRUMENT-BAND).
virtual double ccf(const Graybody &gray, double T, double Sigma=1.0) const
Color correction factor.
double F(double T, double Sigma, const Detector *detect, double sr=1.0) const
Single-temperature graybody integrated flux (erg/cm^2/s).
constexpr double c_light
Speed of light (cm/s).
virtual double response(double nu, gsl_interp_accel *acc=nullptr) const
Absolute spectral response function.
double fWidth(double nu, void *d)
Reference bandwidth integrand.
double width_
Effective (flux) bandwidth (Hz).
gsl_spline * spline_
Response interpolator.
gsl_spline * initSpline(const tableType &table, bool ln, unsigned stride)
Initializes cubic spline interpolator.
double Inu(double nu, double T, double Sigma) const
Single-temperature graybody specific intensity (erg/cm^2/s/Hz/sr).
double kgauss_r(double(*f_r)(double x, void *), void *fdata, double a, double b, double err)
tableType resp_
Spectral response table.
void calcWidth()
Calculates effective bandwidth using standard prescription.