91 #include <uves_physmod_qc1pmtbl.h>
93 #include <uves_error.h>
125 int rlineRowNumber=0;
134 char lineTbl[FILESIZE];
135 char rLineTbl[FILESIZE];
136 char aHeading[FILESIZE];
160 memset(lineTbl, 0, FILESIZE);
161 memset(rLineTbl, 0, FILESIZE);
162 memset(aHeading, 0, FILESIZE);
163 memset(tmps, 0, FILESIZE);
168 check(nCol=cpl_table_get_ncol(*rline_tbl),
"Error getting ncol");
169 rlineRowNumber=cpl_table_get_nrow(*rline_tbl);
171 "rline.tbl" ,nCol,rlineRowNumber);
173 nCol=cpl_table_get_ncol(*lin_tbl);
174 lineRowNo=cpl_table_get_nrow(*lin_tbl);
177 lineTbl ,nCol,lineRowNo);
180 if(cpl_table_has_column(*lin_tbl,
"XDIF")){
181 cpl_table_erase_column(*lin_tbl,
"XDIF");
185 if(cpl_table_has_column(*lin_tbl,
"YDIF")){
186 cpl_table_erase_column(*lin_tbl,
"YDIF");
190 if(cpl_table_has_column(*lin_tbl,
"SELPLOT")){
191 cpl_table_erase_column(*lin_tbl,
"SELPLOT");
195 if(cpl_table_has_column(*lin_tbl,
"XPRED")){
196 cpl_table_erase_column(*lin_tbl,
"XPRED");
200 if(cpl_table_has_column(*lin_tbl,
"YPRED")){
201 cpl_table_erase_column(*lin_tbl,
"YPRED");
207 cpl_table_new_column(*lin_tbl,
"XPRED",CPL_TYPE_DOUBLE);
208 cpl_table_set_column_unit(*lin_tbl,
"XPRED",
"pix");
210 cpl_table_new_column(*lin_tbl,
"YPRED",CPL_TYPE_DOUBLE);
211 cpl_table_set_column_unit(*lin_tbl,
"YPRED",
"pix");
213 cpl_table_new_column(*lin_tbl,
"XDIF",CPL_TYPE_DOUBLE);
214 cpl_table_set_column_unit(*lin_tbl,
"XDIF",
"pix");
216 cpl_table_new_column(*lin_tbl,
"YDIF",CPL_TYPE_DOUBLE);
217 cpl_table_set_column_unit(*lin_tbl,
"YDIF",
"pix");
219 cpl_table_new_column(*lin_tbl,
"SELPLOT",CPL_TYPE_INT);
220 cpl_table_set_column_unit(*lin_tbl,
"YDIF",
"pix");
229 cpl_table_set_column_invalid(*lin_tbl,
"SELPLOT",0,
230 cpl_table_get_nrow(*lin_tbl));
238 for (l=0; l< rlineRowNumber; l++) {
241 xModReg=cpl_table_get_double(*rline_tbl,
"XMODREG",l,&null);
242 yModReg=cpl_table_get_double(*rline_tbl,
"YMODREG",l,&null);
243 xDif=cpl_table_get_double(*rline_tbl,
"XDIF",l,&null);
244 yDif=cpl_table_get_double(*rline_tbl,
"YDIF",l,&null);
245 xPred=cpl_table_get_double(*rline_tbl,
"XMOD",l,&null);
246 yPred=cpl_table_get_double(*rline_tbl,
"YMOD",l,&null);
247 waveReg=cpl_table_get_double(*rline_tbl,
"WAVE",l,&null);
248 check_nomsg(orderReg=cpl_table_get_int(*rline_tbl,
"ORDER",l,&null));
253 for (i=0; i< lineRowNo; i++) {
255 x=cpl_table_get_double(*lin_tbl,
"X",i,&null);
256 yNew=cpl_table_get_double(*lin_tbl,
"YNEW",i,&null);
257 wavec=cpl_table_get_double(*lin_tbl,
"WAVEC",i,&null);
258 check_nomsg(order=cpl_table_get_int(*lin_tbl,
"Order",i,&null));
259 diffX=fabs(x-xModReg);
260 diffY=fabs(yNew-yModReg);
265 if ( (fabs(10.*waveReg - wavec) <= 0.01) &&
267 (fabs(orderReg-order)<0.1) ) {
269 cpl_table_set_double(*lin_tbl,
"XPRED",i,xPred);
270 cpl_table_set_double(*lin_tbl,
"YPRED",i,yPred);
271 cpl_table_set_double(*lin_tbl,
"XDIF",i,xDif);
272 cpl_table_set_double(*lin_tbl,
"YDIF",i,yDif);
274 if ((diffX <= 0.001) && (diffY <= 0.001)) {
276 cpl_table_set_double(*lin_tbl,
"XPRED",i,xPred);
277 cpl_table_set_double(*lin_tbl,
"YPRED",i,yPred);
278 cpl_table_set_double(*lin_tbl,
"XDIF",i,xDif);
279 cpl_table_set_double(*lin_tbl,
"YDIF",i,yDif);
281 cpl_table_set_int(*lin_tbl,
"SELPLOT",i,selIdx);
292 for (l=0; l< rlineRowNumber; l++) {
293 xModReg=cpl_table_get_double(*rline_tbl,
"XMODREG",l,&null);
294 yModReg=cpl_table_get_double(*rline_tbl,
"YMODREG",l,&null);
295 xDif=cpl_table_get_double(*rline_tbl,
"XDIF",l,&null);
296 yDif=cpl_table_get_double(*rline_tbl,
"YDIF",l,&null);
297 xPred=cpl_table_get_double(*rline_tbl,
"XMOD",l,&null);
298 yPred=cpl_table_get_double(*rline_tbl,
"YMOD",l,&null);
299 waveReg=cpl_table_get_double(*rline_tbl,
"WAVE",l,&null);
300 check_nomsg(orderReg=cpl_table_get_int(*rline_tbl,
"ORDER",l,&null));
303 for (i=0; i< lineRowNo; i++) {
305 x=cpl_table_get_double(*lin_tbl,
"X",i,&null);
306 yNew=cpl_table_get_double(*lin_tbl,
"YNEW",i,&null);
307 wavec=cpl_table_get_double(*lin_tbl,
"WAVEC",i,&null);
308 check_nomsg(order=cpl_table_get_int(*lin_tbl,
"Order",i,&null));
309 check_nomsg(selIdx=cpl_table_get_int(*lin_tbl,
"SELPLOT",i,&null));
310 diffX=fabs(x-xModReg);
311 diffY=fabs(yNew-yModReg);
314 (fabs(orderReg-order)<0.1) ) {
315 cpl_table_set_double(*lin_tbl,
"XPRED",i,xPred);
316 cpl_table_set_double(*lin_tbl,
"YPRED",i,yPred);
317 cpl_table_set_double(*lin_tbl,
"XDIF",i,xDif);
318 cpl_table_set_double(*lin_tbl,
"YDIF",i,yDif);
331 cpl_table_fill_invalid_int(*lin_tbl,
"SELPLOT",-1);