17 #include <gsl/gsl_interp.h> 23 int main(
int argc,
char *argv[])
26 fprintf(stderr,
"Usage: %s PacsAbsorption.txt PacsFilter.txt\n", argv[0]);
31 FILE *bolo = fopen(argv[1],
"r"), *band = fopen(argv[2],
"r");
36 std::vector<double> lBolo, rBolo, lBand, rBand;
38 while (fscanf(bolo,
"%lf%lf", &lamb, &resp) == 2) {
39 lBolo.push_back(lamb), rBolo.push_back(resp);
41 while (fscanf(band,
"%lf%lf", &lamb, &resp) == 2) {
42 lBand.push_back(lamb), rBand.push_back(resp);
48 gsl_interp_accel *acc = gsl_interp_accel_alloc();
49 gsl_interp *interp = gsl_interp_alloc(gsl_interp_cspline, lBolo.size());
50 MU_EXCEPTION_IF(gsl_interp_init(interp, &lBolo[0], &rBolo[0], lBolo.size()),
51 argv[0],
"Interpolator initialization failed");
53 puts(
" // {nu0, response0}");
54 for (
size_t i = lBand.size()-1; i != 0; i--) {
56 if (rBand[i] > 1e-4) {
58 gsl_interp_eval(interp, &lBolo[0], &rBolo[0], lBand[i], acc);
59 if (resp > 1e-4) { printf(
" {%.5e, %.5e},\n", nu, resp); }
#define MU_EXCEPTION_IF(cond, src, msg,...)
Conditionally throws mutils::Exception.
constexpr double c_light
Speed of light (cm/s).
int main(int argc, char *argv[])
#define MU_EXCEPTION_ERRNO_IF(cond, src, msg,...)
Conditionally throws mutils::Exception (including errno text).
The MathUtils miscellaneous utilities library.