00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifdef HAVE_CONFIG_H
00028 #include <config.h>
00029 #endif
00030
00031
00032
00033
00034
00035
00036 #include <xsh_dump.h>
00037 #include <xsh_utils.h>
00038 #include <xsh_error.h>
00039 #include <xsh_msg.h>
00040 #include <xsh_qc_handling.h>
00041 #include <xsh_data_instrument.h>
00042 #include <xsh_pfits.h>
00043 #include <string.h>
00044 #include <cpl.h>
00045 #include <stdbool.h>
00046 #include <xsh_pfits_qc.h>
00047
00048
00054
00055
00058
00059
00060
00061
00062
00063
00064
00065
00074 int xsh_pfits_get_qc_ncrh( const cpl_propertylist * plist)
00075 {
00076 int returnvalue = -1 ;
00077
00078 check_msg( xsh_get_property_value( plist, XSH_QC_CRH_NUMBER,
00079 CPL_TYPE_INT, &returnvalue ),
00080 "Error reading Keyword '%s'", XSH_QC_CRH_NUMBER ) ;
00081 cleanup:
00082 return returnvalue ;
00083 }
00084
00085
00086
00087
00093
00094 double
00095 xsh_pfits_get_qc_mbiasavg (const cpl_propertylist * plist)
00096 {
00097 double returnvalue = 0.0;
00098
00099 check_msg (xsh_get_property_value (plist, XSH_QC_MASTER_BIAS_MEAN,
00100 CPL_TYPE_DOUBLE, &returnvalue),
00101 "Error reading keyword '%s'", XSH_QC_MASTER_BIAS_MEAN);
00102
00103 cleanup:
00104 return returnvalue;
00105 }
00106
00107
00113
00114 double
00115 xsh_pfits_get_qc_mbiasmed (const cpl_propertylist * plist)
00116 {
00117 double returnvalue = 0.0;
00118
00119 check_msg (xsh_get_property_value (plist, XSH_QC_MASTER_BIAS_MEDIAN,
00120 CPL_TYPE_DOUBLE, &returnvalue),
00121 "Error reading keyword '%s'", XSH_QC_MASTER_BIAS_MEDIAN);
00122
00123 cleanup:
00124 return returnvalue;
00125 }
00126
00127
00133
00134 double
00135 xsh_pfits_get_qc_mbiasrms (const cpl_propertylist * plist)
00136 {
00137 double returnvalue = 0.0;
00138
00139 check_msg (xsh_get_property_value (plist, XSH_QC_MASTER_BIAS_RMS,
00140 CPL_TYPE_DOUBLE, &returnvalue),
00141 "Error reading keyword '%s'", XSH_QC_MASTER_BIAS_RMS);
00142
00143 cleanup:
00144 return returnvalue;
00145 }
00146
00147
00153
00154 double
00155 xsh_pfits_get_qc_nhpix (const cpl_propertylist * plist)
00156 {
00157 double returnvalue = 0.0;
00158 cpl_type type;
00159
00160 type = cpl_propertylist_get_type (plist, XSH_QC_NHPIX);
00161
00162 check_msg (xsh_get_property_value (plist, XSH_QC_NHPIX,
00163 type, &returnvalue),
00164 "Error reading keyword '%s'", XSH_QC_NHPIX);
00165
00166 cleanup:
00167 return returnvalue;
00168 }
00169
00170
00176
00177 double
00178 xsh_pfits_get_qc_mbiasslope (const cpl_propertylist * plist)
00179 {
00180 double returnvalue = 0.0;
00181 cpl_type type;
00182
00183 type = cpl_propertylist_get_type (plist, XSH_QC_MBIASSLOPE);
00184
00185 check_msg (xsh_get_property_value (plist, XSH_QC_MBIASSLOPE,
00186 type, &returnvalue),
00187 "Error reading keyword '%s'", XSH_QC_MBIASSLOPE);
00188
00189 cleanup:
00190 return returnvalue;
00191 }
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203 double xsh_pfits_get_qc_structx( const cpl_propertylist * plist)
00204 {
00205 double returnvalue = 0;
00206
00207 check_msg( xsh_get_property_value( plist, XSH_QC_STRUCT_X_REG1,
00208 CPL_TYPE_DOUBLE, &returnvalue),
00209 "Error reading keyword '%s'", XSH_QC_STRUCT_X_REG1);
00210
00211 cleanup:
00212 return returnvalue;
00213 }
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225 double xsh_pfits_get_qc_structy( const cpl_propertylist * plist)
00226 {
00227 double returnvalue = 0;
00228
00229 check_msg( xsh_get_property_value( plist, XSH_QC_STRUCT_Y_REG1,
00230 CPL_TYPE_DOUBLE, &returnvalue),
00231 "Error reading keyword '%s'", XSH_QC_STRUCT_Y_REG1);
00232
00233 cleanup:
00234 return returnvalue;
00235 }
00236
00237
00238
00239
00240
00241
00242
00243
00244
00245
00246
00247
00248 double xsh_pfits_get_qc_ron( const cpl_propertylist * plist)
00249 {
00250 double returnvalue = 0;
00251
00252 check_msg( xsh_get_property_value( plist, XSH_QC_RON_REG1,
00253 CPL_TYPE_DOUBLE, &returnvalue),
00254 "Error reading keyword '%s'", XSH_QC_RON_REG1);
00255
00256 cleanup:
00257 return returnvalue;
00258 }
00259
00260
00266
00267 void
00268 xsh_pfits_set_qc_ron_master (cpl_propertylist * plist, double value)
00269 {
00270 check_msg (cpl_propertylist_update_double (plist,XSH_QC_MASTER_RON,value),
00271 "Error writing keyword '%s'", XSH_QC_MASTER_RON);
00272 cpl_propertylist_set_comment(plist,XSH_QC_MASTER_RON,XSH_QC_MASTER_RON_C);
00273
00274 cleanup:
00275 return;
00276 }
00277
00283
00284 void
00285 xsh_pfits_set_qc_fpn_master (cpl_propertylist * plist, double value)
00286 {
00287 check_msg (cpl_propertylist_update_double (plist,XSH_QC_MASTER_FPN,value),
00288 "Error writing keyword '%s'", XSH_QC_MASTER_FPN);
00289 cpl_propertylist_set_comment(plist,XSH_QC_MASTER_FPN,XSH_QC_MASTER_FPN_C);
00290
00291 cleanup:
00292 return;
00293 }
00294
00300
00301 void
00302 xsh_pfits_set_qc_fpn(cpl_propertylist * plist, double value)
00303 {
00304 check_msg (cpl_propertylist_update_double (plist,XSH_QC_FPN,value),
00305 "Error writing keyword '%s'", XSH_QC_FPN);
00306 cpl_propertylist_set_comment(plist,XSH_QC_FPN,XSH_QC_FPN_C);
00307
00308 cleanup:
00309 return;
00310 }
00311
00312
00318
00319 void
00320 xsh_pfits_set_qc_fpn_err(cpl_propertylist * plist, double value)
00321 {
00322 check_msg (cpl_propertylist_update_double (plist,XSH_QC_FPN_ERR,value),
00323 "Error writing keyword '%s'", XSH_QC_FPN_ERR);
00324 cpl_propertylist_set_comment(plist,XSH_QC_FPN_ERR,XSH_QC_FPN_ERR_C);
00325
00326 cleanup:
00327 return;
00328 }
00329
00330
00336
00337 void
00338 xsh_pfits_set_qc_norm_fpn(cpl_propertylist * plist, double value)
00339 {
00340 check_msg (cpl_propertylist_update_double (plist,XSH_QC_NORM_FPN,value),
00341 "Error writing keyword '%s'", XSH_QC_NORM_FPN);
00342 cpl_propertylist_set_comment(plist,XSH_QC_NORM_FPN,XSH_QC_NORM_FPN_C);
00343
00344 cleanup:
00345 return;
00346 }
00347
00353
00354 void
00355 xsh_pfits_set_qc_norm_fpn_err(cpl_propertylist * plist, double value)
00356 {
00357 check_msg (cpl_propertylist_update_double (plist,XSH_QC_NORM_FPN_ERR,value),
00358 "Error writing keyword '%s'", XSH_QC_NORM_FPN_ERR);
00359 cpl_propertylist_set_comment(plist,XSH_QC_NORM_FPN_ERR,XSH_QC_NORM_FPN_ERR_C);
00360
00361 cleanup:
00362 return;
00363 }
00364
00365
00371
00372 void
00373 xsh_pfits_set_qc_reg1_structx (cpl_propertylist * plist, double value)
00374 {
00375 check_msg (cpl_propertylist_update_double (plist,XSH_QC_STRUCT_X_REG1,value),
00376 "Error writing keyword '%s'", XSH_QC_STRUCT_X_REG1);
00377 cpl_propertylist_set_comment(plist,XSH_QC_STRUCT_X_REG1,XSH_QC_STRUCT_X_REG1_C);
00378
00379 cleanup:
00380 return;
00381 }
00382
00388
00389 void
00390 xsh_pfits_set_qc_reg1_structy (cpl_propertylist * plist, double value)
00391 {
00392 check_msg (cpl_propertylist_update_double (plist,XSH_QC_STRUCT_Y_REG1, value),
00393 "Error writing keyword '%s'",XSH_QC_STRUCT_Y_REG1);
00394 cpl_propertylist_set_comment(plist,XSH_QC_STRUCT_Y_REG1,XSH_QC_STRUCT_Y_REG1_C);
00395
00396 cleanup:
00397 return;
00398 }
00399
00400
00401
00407
00408 void
00409 xsh_pfits_set_qc_reg2_structx (cpl_propertylist * plist, double value)
00410 {
00411 check_msg (cpl_propertylist_update_double (plist,XSH_QC_STRUCT_X_REG2, value),
00412 "Error writing keyword '%s'", XSH_QC_STRUCT_X_REG2);
00413 cpl_propertylist_set_comment(plist,XSH_QC_STRUCT_X_REG2,XSH_QC_STRUCT_X_REG2_C);
00414
00415 cleanup:
00416 return;
00417 }
00418
00424
00425 void
00426 xsh_pfits_set_qc_reg2_structy (cpl_propertylist * plist, double value)
00427 {
00428 check_msg (cpl_propertylist_update_double (plist,XSH_QC_STRUCT_Y_REG2, value),
00429 "Error writing keyword '%s'",XSH_QC_STRUCT_Y_REG2);
00430 cpl_propertylist_set_comment(plist,XSH_QC_STRUCT_Y_REG2,XSH_QC_STRUCT_Y_REG2_C);
00431
00432 cleanup:
00433 return;
00434 }
00435
00436
00437
00438
00439
00440
00441
00442
00443
00444
00445
00446
00447 void
00448 xsh_pfits_set_qc_ron1( cpl_propertylist * plist, double value)
00449 {
00450 check_msg( cpl_propertylist_update_double( plist,XSH_QC_RON_REG1, value),
00451 "Error writing keyword '%s'",XSH_QC_RON_REG1);
00452 cpl_propertylist_set_comment( plist,XSH_QC_RON_REG1,XSH_QC_RON_REG1_C);
00453
00454 cleanup:
00455 return;
00456 }
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469 void
00470 xsh_pfits_set_qc_ron2( cpl_propertylist * plist, double value)
00471 {
00472 check_msg( cpl_propertylist_update_double( plist,XSH_QC_RON_REG2, value),
00473 "Error writing keyword '%s'",XSH_QC_RON_REG2);
00474 cpl_propertylist_set_comment( plist,XSH_QC_RON_REG2,XSH_QC_RON_REG2_C);
00475
00476 cleanup:
00477 return;
00478 }
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492 void
00493 xsh_pfits_set_qc_ron1_err( cpl_propertylist * plist, double value)
00494 {
00495 check_msg( cpl_propertylist_update_double( plist,XSH_QC_RON_REG1_ERR, value),
00496 "Error writing keyword '%s'",XSH_QC_RON_REG1_ERR);
00497 cpl_propertylist_set_comment( plist,XSH_QC_RON_REG1_ERR,XSH_QC_RON_REG1_ERR_C);
00498
00499 cleanup:
00500 return;
00501 }
00502
00503
00504
00505
00506
00507
00508
00509
00510
00511
00512
00513
00514 void
00515 xsh_pfits_set_qc_ron2_err( cpl_propertylist * plist, double value)
00516 {
00517 check_msg( cpl_propertylist_update_double( plist,XSH_QC_RON_REG2_ERR, value),
00518 "Error writing keyword '%s'",XSH_QC_RON_REG2_ERR);
00519 cpl_propertylist_set_comment( plist,XSH_QC_RON_REG2_ERR,XSH_QC_RON_REG2_ERR_C);
00520
00521 cleanup:
00522 return;
00523 }
00524
00525
00526 void xsh_pfits_set_qc_nlinecat(cpl_propertylist * plist, double value)
00527 {
00528 check_msg (cpl_propertylist_update_double (plist, XSH_QC_NLINE_CAT, value),
00529 "Error writing keyword '%s'", XSH_QC_NLINE_CAT);
00530 cpl_propertylist_set_comment (plist, XSH_QC_NLINE_CAT,XSH_QC_NLINE_CAT_C);
00531 cleanup:
00532 return;
00533 }
00534
00535
00536 void xsh_pfits_set_qc_nlinecat_clean(cpl_propertylist * plist, double value)
00537 {
00538 check_msg (cpl_propertylist_update_double (plist, XSH_QC_NLINE_CAT_CLEAN, value),
00539 "Error writing keyword '%s'", XSH_QC_NLINE_CAT_CLEAN);
00540 cpl_propertylist_set_comment (plist, XSH_QC_NLINE_CAT_CLEAN,XSH_QC_NLINE_CAT_CLEAN_C);
00541 cleanup:
00542 return;
00543 }
00544
00545
00546 void xsh_pfits_set_qc_nlinefound(cpl_propertylist * plist, double value)
00547 {
00548 check_msg (cpl_propertylist_update_double (plist, XSH_QC_NLINE_FOUND, value),
00549 "Error writing keyword '%s'", XSH_QC_NLINE_FOUND);
00550 cpl_propertylist_set_comment (plist, XSH_QC_NLINE_FOUND,XSH_QC_NLINE_FOUND_C);
00551 cleanup:
00552 return;
00553 }
00554
00555 void xsh_pfits_set_qc_nlinefound_clean(cpl_propertylist * plist, double value)
00556 {
00557 check_msg (cpl_propertylist_update_double (plist, XSH_QC_NLINE_FOUND_CLEAN, value),
00558 "Error writing keyword '%s'", XSH_QC_NLINE_FOUND_CLEAN);
00559 cpl_propertylist_set_comment (plist, XSH_QC_NLINE_FOUND_CLEAN,XSH_QC_NLINE_FOUND_CLEAN_C);
00560 cleanup:
00561 return;
00562 }
00563
00569
00570 void
00571 xsh_pfits_set_qc_mbiasavg (cpl_propertylist * plist, double value)
00572 {
00573 check_msg (cpl_propertylist_update_double (plist,XSH_QC_MASTER_BIAS_MEAN, value),
00574 "Error writing keyword '%s'",XSH_QC_MASTER_BIAS_MEAN);
00575 cpl_propertylist_set_comment(plist,XSH_QC_MASTER_BIAS_MEAN,XSH_QC_MASTER_BIAS_MEAN_C);
00576
00577 cleanup:
00578 return;
00579 }
00580
00586
00587 void
00588 xsh_pfits_set_qc_mbiasmed (cpl_propertylist * plist, double value)
00589 {
00590 check_msg (cpl_propertylist_update_double (plist,XSH_QC_MASTER_BIAS_MEDIAN, value),
00591 "Error writing keyword '%s'",XSH_QC_MASTER_BIAS_MEDIAN);
00592 cpl_propertylist_set_comment(plist,XSH_QC_MASTER_BIAS_MEDIAN,XSH_QC_MASTER_BIAS_MEDIAN_C);
00593
00594 cleanup:
00595 return;
00596 }
00597
00598
00604
00605 void
00606 xsh_pfits_set_qc_mbiasrms (cpl_propertylist * plist, double value)
00607 {
00608 check_msg (cpl_propertylist_update_double (plist,XSH_QC_MASTER_BIAS_RMS, value),
00609 "Error writing keyword '%s'",XSH_QC_MASTER_BIAS_RMS);
00610 cpl_propertylist_set_comment(plist,XSH_QC_MASTER_BIAS_RMS,XSH_QC_MASTER_BIAS_RMS_C);
00611
00612 cleanup:
00613 return;
00614 }
00615
00621
00622 void
00623 xsh_pfits_set_qc_nhpix (cpl_propertylist * plist, double value)
00624 {
00625 check_msg (cpl_propertylist_update_double (plist, XSH_QC_NHPIX, value),
00626 "Error writing keyword '%s'", XSH_QC_NHPIX);
00627
00628 cleanup:
00629 return;
00630 }
00631
00632
00638
00639 void
00640 xsh_pfits_set_qc_mbiasslope (cpl_propertylist * plist, double value)
00641 {
00642 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MBIASSLOPE, value),
00643 "Error writing keyword '%s'", XSH_QC_MBIASSLOPE);
00644
00645 cleanup:
00646 return;
00647 }
00648
00649
00655
00656 void
00657 xsh_pfits_set_qc_ncrh (cpl_propertylist * plist, int value)
00658 {
00659 check_msg (cpl_propertylist_update_int (plist, XSH_QC_CRH_NUMBER, value),
00660 "Error writing keyword '%s'", XSH_QC_CRH_NUMBER);
00661 cpl_propertylist_set_comment(plist, XSH_QC_CRH_NUMBER,XSH_QC_CRH_NUMBER_C);
00662
00663 cleanup:
00664 return;
00665 }
00666
00672
00673 void
00674 xsh_pfits_set_qc_ncrh_mean (cpl_propertylist * plist, int value)
00675 {
00676 check_msg (cpl_propertylist_update_int (plist, XSH_QC_CRH_NUMBER_MEAN, value),
00677 "Error writing keyword '%s'", XSH_QC_CRH_NUMBER_MEAN);
00678 cpl_propertylist_set_comment(plist, XSH_QC_CRH_NUMBER_MEAN,XSH_QC_CRH_NUMBER_MEAN_C);
00679
00680 cleanup:
00681 return;
00682 }
00683
00689
00690 void
00691 xsh_pfits_set_qc_crrate (cpl_propertylist * plist, double value)
00692 {
00693 check_msg (cpl_propertylist_update_double (plist, XSH_QC_CRH_RATE, value),
00694 "Error writing keyword '%s'", XSH_QC_CRH_RATE);
00695 cpl_propertylist_set_comment(plist,XSH_QC_CRH_RATE,XSH_QC_CRH_RATE_C);
00696
00697 cleanup:
00698 return;
00699 }
00700
00706
00707 void
00708 xsh_pfits_set_qc_mdarkmed (cpl_propertylist * plist, double value)
00709 {
00710 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MASTER_DARK_MEDIAN, value),
00711 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_MEDIAN);
00712 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_MEDIAN,XSH_QC_MASTER_DARK_MEDIAN_C);
00713
00714 cleanup:
00715 return;
00716 }
00717
00723
00724 void
00725 xsh_pfits_set_qc_mdarkrms (cpl_propertylist * plist, double value)
00726 {
00727 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MASTER_DARK_RMS, value),
00728 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_RMS);
00729 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_RMS,XSH_QC_MASTER_DARK_RMS_C);
00730
00731 cleanup:
00732 return;
00733 }
00734
00740
00741 void
00742 xsh_pfits_set_qc_mdarkslope (cpl_propertylist * plist, double value)
00743 {
00744 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MDARKSLOPE, value),
00745 "Error writing keyword '%s'", XSH_QC_MDARKSLOPE);
00746
00747 cleanup:
00748 return;
00749 }
00750
00751
00752
00758
00759 void
00760 xsh_pfits_set_qc_bp_map_ntotal(cpl_propertylist * plist, int value)
00761 {
00762 check_msg (cpl_propertylist_update_int
00763 (plist, XSH_QC_BP_MAP_NTOTAL, value),
00764 "Error writing keyword '%s'", XSH_QC_BP_MAP_NTOTAL);
00765 cpl_propertylist_set_comment(plist, XSH_QC_BP_MAP_NTOTAL, XSH_QC_BP_MAP_NTOTAL_C);
00766
00767 cleanup:
00768 return;
00769 }
00770
00771
00777
00778 void
00779 xsh_pfits_set_qc_contamination(cpl_propertylist * plist, double value)
00780 {
00781 check_msg (cpl_propertylist_update_double
00782 (plist, XSH_QC_CONTAM, value),
00783 "Error writing keyword '%s'", XSH_QC_CONTAM);
00784 cpl_propertylist_set_comment(plist, XSH_QC_CONTAM, XSH_QC_CONTAM_C);
00785
00786 cleanup:
00787 return;
00788 }
00789
00790
00791
00797
00798 void
00799 xsh_pfits_set_qc_mdarkavg (cpl_propertylist * plist, double value)
00800 {
00801 check_msg(cpl_propertylist_update_double(plist,XSH_QC_MASTER_DARK_MEAN,value),
00802 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_MEAN);
00803 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_MEAN,XSH_QC_MASTER_DARK_MEAN_C);
00804
00805 cleanup:
00806 return;
00807 }
00808
00814
00815 void
00816 xsh_pfits_set_qc_darkmed_ave (cpl_propertylist * plist, double value)
00817 {
00818 check_msg (cpl_propertylist_update_double (plist, XSH_QC_DARKMED_AVE, value),
00819 "Error writing keyword '%s'", XSH_QC_DARKMED_AVE);
00820
00821 cleanup:
00822 return;
00823 }
00824
00830
00831 void
00832 xsh_pfits_set_qc_darkmed_stdev (cpl_propertylist * plist, double value)
00833 {
00834 check_msg (cpl_propertylist_update_double
00835 (plist, XSH_QC_DARKMED_STDEV, value),
00836 "Error writing keyword '%s'", XSH_QC_DARKMED_STDEV);
00837
00838 cleanup:
00839 return;
00840 }
00841
00847
00848 void xsh_pfits_set_qc_ord_orderpos_residmin( cpl_propertylist * plist,
00849 double value )
00850 {
00851 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDMIN,
00852 value),
00853 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDMIN);
00854 cleanup:
00855 return ;
00856 }
00857
00858 void xsh_pfits_set_qc_ord_orderpos_residmax( cpl_propertylist * plist,
00859 double value )
00860 {
00861 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDMAX,
00862 value),
00863 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDMAX);
00864 cleanup:
00865 return ;
00866 }
00867
00868 void xsh_pfits_set_qc_ord_orderpos_residavg( cpl_propertylist * plist,
00869 double value )
00870 {
00871 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDAVG,
00872 value),
00873 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDAVG);
00874 cleanup:
00875 return ;
00876 }
00877
00878 void xsh_pfits_set_qc_ord_orderpos_residrms( cpl_propertylist * plist,
00879 double value )
00880 {
00881 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDRMS,
00882 value),
00883 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDRMS );
00884 cleanup:
00885 return ;
00886 }
00887
00888
00889 void xsh_pfits_set_qc_eff_fclip( cpl_propertylist * plist,
00890 double value )
00891 {
00892 check_msg(cpl_propertylist_update_double(plist,XSH_QC_EFF_FCLIP,value),
00893 "error writing keyword '%s'", XSH_QC_EFF_FCLIP);
00894 cleanup:
00895 return ;
00896 }
00897
00898 void xsh_pfits_set_qc_eff_nclip( cpl_propertylist * plist,
00899 int value )
00900 {
00901 check_msg(cpl_propertylist_update_int(plist,XSH_QC_EFF_NCLIP,value),
00902 "error writing keyword '%s'", XSH_QC_EFF_NCLIP);
00903 cleanup:
00904 return ;
00905 }
00906
00907 void xsh_pfits_set_qc_ord_orderpos_max_pred( cpl_propertylist * plist,
00908 int value )
00909 {
00910 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_MAX_PRED,value),
00911 "error writing keyword '%s'", QC_ORD_ORDERPOS_MAX_PRED);
00912 cleanup:
00913 return ;
00914 }
00915
00916 void xsh_pfits_set_qc_ord_orderpos_min_pred( cpl_propertylist * plist,
00917 int value )
00918 {
00919 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_MIN_PRED,value),
00920 "error writing keyword '%s'", QC_ORD_ORDERPOS_MIN_PRED);
00921 cleanup:
00922 return ;
00923 }
00924
00925 void xsh_pfits_set_qc_ord_orderpos_ndet( cpl_propertylist * plist,
00926 int value )
00927 {
00928 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NDET,value),
00929 "error writing keyword '%s'", QC_ORD_ORDERPOS_NDET);
00930 cleanup:
00931 return ;
00932 }
00933
00934 void xsh_pfits_set_qc_ord_orderpos_nposall( cpl_propertylist * plist,
00935 int value )
00936 {
00937 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPOSALL,value),
00938 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPOSALL);
00939 cleanup:
00940 return ;
00941 }
00942
00943 void xsh_pfits_set_qc_ord_orderpos_npossel( cpl_propertylist * plist,
00944 int value )
00945 {
00946 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPOSSEL,value),
00947 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPOSSEL);
00948 cleanup:
00949 return ;
00950 }
00951
00952 void xsh_pfits_set_qc_ord_orderpos_npred( cpl_propertylist * plist,
00953 int value )
00954 {
00955 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPRED,value),
00956 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPRED);
00957 cleanup:
00958 return ;
00959 }
00960
00976 void xsh_pfits_set_qc_multi( cpl_propertylist *plist, void *value,
00977 const char * kw, xsh_instrument * instrument,
00978 int idx )
00979 {
00980 qc_description *pqc = NULL ;
00981 char real_kw[32] ;
00982
00983 XSH_ASSURE_NOT_NULL( plist ) ;
00984 XSH_ASSURE_NOT_NULL( value ) ;
00985 XSH_ASSURE_NOT_NULL( kw ) ;
00986 XSH_ASSURE_NOT_NULL( instrument ) ;
00987 XSH_ASSURE_NOT_NULL( instrument->recipe_id ) ;
00988
00989 pqc = xsh_get_qc_desc_by_kw( kw ) ;
00990 XSH_ASSURE_NOT_NULL( pqc ) ;
00991
00992 if ( xsh_qc_in_recipe( pqc, instrument ) != 0 ) {
00993 xsh_msg( "QC Parameter '%s' not in recipe '%s'",
00994 kw, instrument->recipe_id ) ;
00995 return ;
00996 }
00997
00998
00999 if ( strchr( pqc->kw_name, 'i' ) != NULL ) {
01000
01001 char kformat[80];
01002 const char *pk;
01003 char* pm;
01004 xsh_msg_dbg_high( " ++++ Multiple KW '%s'", pqc->kw_name ) ;
01005
01006 for( pk = pqc->kw_name, pm = kformat ; *pk != '\0' ; pk++ )
01007 if ( *pk == 'i' ) {
01008 strcpy( pm, "%d" ) ;
01009 pm += 2 ;
01010 }
01011 else *pm++ = *pk ;
01012 *pm = '\0' ;
01013
01014 sprintf( real_kw, kformat, idx ) ;
01015 }
01016
01017 switch ( pqc->kw_type ) {
01018 case CPL_TYPE_INT:
01019 check_msg(cpl_propertylist_update_int( plist, real_kw,
01020 *(int *)value),
01021 "error writing keyword '%s'", kw ) ;
01022 break ;
01023 case CPL_TYPE_FLOAT:
01024 check_msg(cpl_propertylist_update_float( plist, real_kw,
01025 *(float *)value),
01026 "error writing keyword '%s'", kw ) ;
01027 break ;
01028 case CPL_TYPE_DOUBLE:
01029 check_msg(cpl_propertylist_update_double( plist, real_kw,
01030 *(double *)value),
01031 "error writing keyword '%s'", kw ) ;
01032 break ;
01033 case CPL_TYPE_STRING:
01034 check_msg(cpl_propertylist_update_string( plist, real_kw, (char *)value),
01035 "error writing keyword '%s'", kw ) ;
01036 break ;
01037 default:
01038 break ;
01039 }
01040 cleanup:
01041 return ;
01042 }
01043
01055 void xsh_pfits_set_qc( cpl_propertylist *plist, void *value,
01056 const char *kw, xsh_instrument * instrument )
01057 {
01058 qc_description *pqc = NULL ;
01059
01060 XSH_ASSURE_NOT_NULL( plist ) ;
01061 XSH_ASSURE_NOT_NULL( value ) ;
01062 XSH_ASSURE_NOT_NULL( kw ) ;
01063 XSH_ASSURE_NOT_NULL( instrument ) ;
01064 XSH_ASSURE_NOT_NULL( instrument->recipe_id ) ;
01065
01066 pqc = xsh_get_qc_desc_by_kw( kw);
01067 XSH_ASSURE_NOT_NULL( pqc ) ;
01068
01069 if ( xsh_qc_in_recipe( pqc, instrument ) != 0 ) {
01070 xsh_msg( "QC Parameter '%s' not in recipe '%s'",
01071 kw, instrument->recipe_id ) ;
01072 return ;
01073 }
01074
01075
01076 switch ( pqc->kw_type ) {
01077 case CPL_TYPE_INT:
01078 check_msg(cpl_propertylist_update_int( plist, pqc->kw_name,
01079 *(int *)value),
01080 "error writing keyword '%s'", kw ) ;
01081 break ;
01082 case CPL_TYPE_FLOAT:
01083 check_msg(cpl_propertylist_update_float( plist, pqc->kw_name,
01084 *(float *)value),
01085 "error writing keyword '%s'", kw ) ;
01086 break ;
01087 case CPL_TYPE_DOUBLE:
01088 check_msg(cpl_propertylist_update_double( plist, pqc->kw_name,
01089 *(double *)value),
01090 "error writing keyword '%s'", kw ) ;
01091 break ;
01092 case CPL_TYPE_STRING:
01093 check_msg(cpl_propertylist_update_string( plist, pqc->kw_name,
01094 (char *)value),
01095 "error writing keyword '%s'", kw ) ;
01096 break ;
01097 default:
01098 break ;
01099 }
01100 cleanup:
01101 return ;
01102 }
01103