59 #include <uves_cd_align_impl.h>
60 #include <uves_utils_wrappers.h>
61 #include <uves_error.h>
93 static double eval_gauss(
double x,
double my,
double sigma,
double norm,
double back)
109 CPL_ERROR_ILLEGAL_OUTPUT,
110 "Moffat evalutation failed");
127 const double maxrow = 61.1;
128 const double sigma = 2;
129 const double norm = 6000;
130 const double background = 200;
131 cpl_image *im[2] = {NULL, NULL};
132 cpl_table *cd_align = NULL;
136 im[0] = cpl_image_new(nx, ny, CPL_TYPE_DOUBLE);
137 im[1] = cpl_image_new(nx, ny, CPL_TYPE_DOUBLE);
144 for (shift = -20; shift < 5; shift = (shift < -5) ? shift/1.5 : shift + 0.7)
147 for (y = 1; y <= ny; y++)
149 for (x = 1; x <= nx; x++)
151 cpl_image_set(im[0], x, y,
152 eval_gauss(y, maxrow, sigma, norm, background));
153 cpl_image_set(im[1], x, y,
154 eval_gauss(y, maxrow+shift, sigma, norm, background));
164 bool debug_mode =
false;
165 enum uves_chip chip = UVES_CHIP_BLUE;
167 uves_free_table(&cd_align);
168 check( cd_align = uves_cd_align_process(
172 steps, xborder, window, debug_mode, chip),
173 "Processing failed");
177 assure_nomsg( cpl_table_has_column(cd_align,
"X" ), CPL_ERROR_ILLEGAL_OUTPUT);
178 assure_nomsg( cpl_table_has_column(cd_align,
"YCEN1"), CPL_ERROR_ILLEGAL_OUTPUT);
179 assure_nomsg( cpl_table_has_column(cd_align,
"YCEN2"), CPL_ERROR_ILLEGAL_OUTPUT);
180 assure_nomsg( cpl_table_has_column(cd_align,
"SIGMA1"), CPL_ERROR_ILLEGAL_OUTPUT);
181 assure_nomsg( cpl_table_has_column(cd_align,
"SIGMA2"), CPL_ERROR_ILLEGAL_OUTPUT);
182 assure_nomsg( cpl_table_has_column(cd_align,
"BACK1"), CPL_ERROR_ILLEGAL_OUTPUT);
183 assure_nomsg( cpl_table_has_column(cd_align,
"BACK2"), CPL_ERROR_ILLEGAL_OUTPUT);
184 assure_nomsg( cpl_table_has_column(cd_align,
"NORM1"), CPL_ERROR_ILLEGAL_OUTPUT);
185 assure_nomsg( cpl_table_has_column(cd_align,
"NORM2"), CPL_ERROR_ILLEGAL_OUTPUT);
186 assure_nomsg( cpl_table_has_column(cd_align,
"YDIFF"), CPL_ERROR_ILLEGAL_OUTPUT);
188 uves_msg(
"Shift: %f pixels. Measured shift: %f pixels",
189 shift, cpl_table_get_column_mean(cd_align,
"YDIFF"));
192 double abs_tolerance = 0.1;
194 cpl_test_rel(cpl_table_get_column_mean(cd_align,
"YDIFF"),
195 shift, abs_tolerance);
201 uves_free_image(&im[0]);
202 uves_free_image(&im[1]);
203 uves_free_table(&cd_align);
217 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
220 "Test of CD align failed");
223 return cpl_test_end(0);