49#include "irplib_utils.h"
53#define pdist(x1,y1,x2,y2) (((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))
55#define cpl_drand() ((double)rand()/(double)RAND_MAX)
70#define HIST_FACT 2.354820045
133 const char *recipe_name,
134 const char *pipeline_name,
142 int pars_counter = 0;
144 group_name = cpl_sprintf(
"%s.%s", pipeline_name, recipe_name);
145 assert(group_name != NULL);
147#define insert_par(PARNAME, PARDESC, PARVALUE, PARTYPE) \
149 char * par_name = cpl_sprintf("%s.%s", group_name, PARNAME); \
151 assert(par_name != NULL); \
152 p = cpl_parameter_new_value(par_name, PARTYPE, \
153 PARDESC, group_name, PARVALUE); \
154 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI, PARNAME); \
155 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV); \
156 cpl_parameterlist_append(parlist, p); \
157 cpl_free(par_name); \
163 while(pars_counter < npars) {
164 char *name = va_arg(ap,
char *);
165 char *desc = va_arg(ap,
char *);
166 char *type = va_arg(ap,
char *);
168 if(!strcmp(type,
"CPL_TYPE_INT")) {
169 int v1 = va_arg(ap,
int);
172 }
else if(!strcmp(type,
"CPL_TYPE_BOOL")) {
173 char *v2 = va_arg(ap,
char *);
175 if(!strcmp(v2,
"CPL_FALSE"))
176 insert_par(name, desc, CPL_FALSE, CPL_TYPE_BOOL);
177 if(!strcmp(v2,
"CPL_TRUE"))
178 insert_par(name, desc, CPL_TRUE, CPL_TYPE_BOOL);
179 }
else if(!strcmp(type,
"CPL_TYPE_STRING")) {
180 char *v2 = va_arg(ap,
char *);
183 }
else if(!strcmp(type,
"CPL_TYPE_DOUBLE")) {
184 double v3 = va_arg(ap,
double);
193 cpl_free(group_name);
212 const char *pipeline_name,
213 const char *recipe_name,
214 const cpl_parameterlist * parlist)
217 const cpl_parameter *par;
220 par_name = cpl_sprintf(
"%s.%s.%s", pipeline_name, recipe_name, parn);
221 assert(par_name != NULL);
222 par = cpl_parameterlist_find_const(parlist, par_name);
223 value = cpl_parameter_get_int(par);
242 const char *pipeline_name,
243 const char *recipe_name,
244 const cpl_parameterlist * parlist)
247 const cpl_parameter *par;
250 par_name = cpl_sprintf(
"%s.%s.%s", pipeline_name, recipe_name, parn);
251 assert(par_name != NULL);
252 par = cpl_parameterlist_find_const(parlist, par_name);
253 value = cpl_parameter_get_double(par);
275 exptime = cpl_propertylist_get_double(plist,
"EXPTIME");
292 const char * protype,
293 const char * protech,
294 cpl_boolean proscience)
296 cpl_propertylist * prolist = cpl_propertylist_new();
298 cpl_propertylist_append_string(prolist, CPL_DFS_PRO_CATG, procatg);
299 cpl_propertylist_append_bool(prolist, CPL_DFS_PRO_SCIENCE, proscience);
301 cpl_propertylist_append_string(prolist, CPL_DFS_PRO_TYPE, protype);
304 cpl_propertylist_append_string(prolist, CPL_DFS_PRO_TECH, protech);
326 const double kappa,
int nffts,
int nsamples)
330 float *
data = cpl_image_get_data_float(*image);
332 for(i = 0; i < nffts; i++) {
333 for(j = 0; j < nsamples; j++) {
334 float neighbours = 0;
344 neighbours += *(
data + (i - 1) * nsamples + j);
348 neighbours += *(
data + (i + 1) * nsamples + j);
352 neighbours += *(
data + i * nsamples + (j - 1));
355 if(j < nsamples - 1) {
356 neighbours += *(
data + i * nsamples + (j + 1));
359 average = neighbours / nneighs;
361 if(*(
data + i * nsamples + j) < average * (-1 *
kappa) ||
362 *(
data + i * nsamples + j) > average * (
kappa)) {
364 *(
data + i * nsamples + j) = average;
368 if(*(
data + i * nsamples + j) > average * (-1 *
kappa) ||
369 *(
data + i * nsamples + j) < average * (
kappa)) {
371 *(
data + i * nsamples + j) = average;
379 return cpl_error_get_code();
385 if(cpl_error_get_code() != CPL_ERROR_NONE) {
387 cpl_msg_error(cpl_func,
"%s",(
const char*) cpl_error_get_message());
388 cpl_msg_error(cpl_func,
"%s",(
const char*) cpl_error_get_where());
cpl_error_code xsh_detmon_rm_bpixs(cpl_image **, const double, int, int)
double xsh_detmon_retrieve_par_double(const char *parn, const char *pipeline_name, const char *recipe_name, const cpl_parameterlist *parlist)
cpl_error_code xsh_detmon_fill_parlist(cpl_parameterlist *parlist, const char *recipe_name, const char *pipeline_name, int npars,...)
#define insert_par(PARNAME, PARDESC, PARVALUE, PARTYPE)
void detmon_print_rec_status(void)
static struct @1 xsh_detmon_dark_config
int xsh_detmon_retrieve_par_int(const char *parn, const char *pipeline_name, const char *recipe_name, const cpl_parameterlist *parlist)
cpl_propertylist * xsh_detmon_fill_prolist(const char *procatg, const char *protype, const char *protech, cpl_boolean proscience)
double irplib_pfits_get_exptime(const cpl_propertylist *plist)