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 int
00155 xsh_pfits_get_qc_nhpix (const cpl_propertylist * plist)
00156 {
00157 int 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, int value)
00624 {
00625 check_msg (cpl_propertylist_update_int (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_noisepix (cpl_propertylist * plist, int value)
00641 {
00642 check_msg (cpl_propertylist_update_int (plist, XSH_QC_BP_MAP_PICKUP_NOISE_PIX, value),
00643 "Error writing keyword '%s'", XSH_QC_BP_MAP_PICKUP_NOISE_PIX);
00644
00645 cleanup:
00646 return;
00647 }
00648
00649
00655
00656 void
00657 xsh_pfits_set_qc_mbiasslope (cpl_propertylist * plist, double value)
00658 {
00659 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MBIASSLOPE, value),
00660 "Error writing keyword '%s'", XSH_QC_MBIASSLOPE);
00661
00662 cleanup:
00663 return;
00664 }
00665
00666
00672
00673 void
00674 xsh_pfits_set_qc_ncrh (cpl_propertylist * plist, int value)
00675 {
00676 check_msg (cpl_propertylist_update_int (plist, XSH_QC_CRH_NUMBER, value),
00677 "Error writing keyword '%s'", XSH_QC_CRH_NUMBER);
00678 cpl_propertylist_set_comment(plist, XSH_QC_CRH_NUMBER,XSH_QC_CRH_NUMBER_C);
00679
00680 cleanup:
00681 return;
00682 }
00683
00689
00690 void
00691 xsh_pfits_set_qc_ncrh_mean (cpl_propertylist * plist, int value)
00692 {
00693 check_msg (cpl_propertylist_update_int (plist, XSH_QC_CRH_NUMBER_MEAN, value),
00694 "Error writing keyword '%s'", XSH_QC_CRH_NUMBER_MEAN);
00695 cpl_propertylist_set_comment(plist, XSH_QC_CRH_NUMBER_MEAN,XSH_QC_CRH_NUMBER_MEAN_C);
00696
00697 cleanup:
00698 return;
00699 }
00700
00706
00707 void
00708 xsh_pfits_set_qc_crrate (cpl_propertylist * plist, double value)
00709 {
00710 check_msg (cpl_propertylist_update_double (plist, XSH_QC_CRH_RATE, value),
00711 "Error writing keyword '%s'", XSH_QC_CRH_RATE);
00712 cpl_propertylist_set_comment(plist,XSH_QC_CRH_RATE,XSH_QC_CRH_RATE_C);
00713
00714 cleanup:
00715 return;
00716 }
00717
00723
00724 void
00725 xsh_pfits_set_qc_mdarkmed (cpl_propertylist * plist, double value)
00726 {
00727 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MASTER_DARK_MEDIAN, value),
00728 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_MEDIAN);
00729 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_MEDIAN,XSH_QC_MASTER_DARK_MEDIAN_C);
00730
00731 cleanup:
00732 return;
00733 }
00734
00740
00741 void
00742 xsh_pfits_set_qc_mdarkrms (cpl_propertylist * plist, double value)
00743 {
00744 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MASTER_DARK_RMS, value),
00745 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_RMS);
00746 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_RMS,XSH_QC_MASTER_DARK_RMS_C);
00747
00748 cleanup:
00749 return;
00750 }
00751
00757
00758 void
00759 xsh_pfits_set_qc_mdarkslope (cpl_propertylist * plist, double value)
00760 {
00761 check_msg (cpl_propertylist_update_double (plist, XSH_QC_MDARKSLOPE, value),
00762 "Error writing keyword '%s'", XSH_QC_MDARKSLOPE);
00763
00764 cleanup:
00765 return;
00766 }
00767
00768
00769
00775
00776 void
00777 xsh_pfits_set_qc_bp_map_ntotal(cpl_propertylist * plist, int value)
00778 {
00779 check_msg (cpl_propertylist_update_int
00780 (plist, XSH_QC_BP_MAP_NTOTAL, value),
00781 "Error writing keyword '%s'", XSH_QC_BP_MAP_NTOTAL);
00782 cpl_propertylist_set_comment(plist, XSH_QC_BP_MAP_NTOTAL, XSH_QC_BP_MAP_NTOTAL_C);
00783
00784 cleanup:
00785 return;
00786 }
00787
00788
00794
00795 void
00796 xsh_pfits_set_qc_contamination(cpl_propertylist * plist, double value)
00797 {
00798 check_msg (cpl_propertylist_update_double
00799 (plist, XSH_QC_CONTAM, value),
00800 "Error writing keyword '%s'", XSH_QC_CONTAM);
00801 cpl_propertylist_set_comment(plist, XSH_QC_CONTAM, XSH_QC_CONTAM_C);
00802
00803 cleanup:
00804 return;
00805 }
00806
00807
00808
00814
00815 void
00816 xsh_pfits_set_qc_mdarkavg (cpl_propertylist * plist, double value)
00817 {
00818 check_msg(cpl_propertylist_update_double(plist,XSH_QC_MASTER_DARK_MEAN,value),
00819 "Error writing keyword '%s'", XSH_QC_MASTER_DARK_MEAN);
00820 cpl_propertylist_set_comment(plist, XSH_QC_MASTER_DARK_MEAN,XSH_QC_MASTER_DARK_MEAN_C);
00821
00822 cleanup:
00823 return;
00824 }
00825
00831
00832 void
00833 xsh_pfits_set_qc_darkmed_ave (cpl_propertylist * plist, double value)
00834 {
00835 check_msg (cpl_propertylist_update_double (plist, XSH_QC_DARKMED_AVE, value),
00836 "Error writing keyword '%s'", XSH_QC_DARKMED_AVE);
00837
00838 cleanup:
00839 return;
00840 }
00841
00847
00848 void
00849 xsh_pfits_set_qc_darkmed_stdev (cpl_propertylist * plist, double value)
00850 {
00851 check_msg (cpl_propertylist_update_double
00852 (plist, XSH_QC_DARKMED_STDEV, value),
00853 "Error writing keyword '%s'", XSH_QC_DARKMED_STDEV);
00854
00855 cleanup:
00856 return;
00857 }
00858
00864
00865 void xsh_pfits_set_qc_ord_orderpos_residmin( cpl_propertylist * plist,
00866 double value )
00867 {
00868 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDMIN,
00869 value),
00870 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDMIN);
00871 cleanup:
00872 return ;
00873 }
00874
00875 void xsh_pfits_set_qc_ord_orderpos_residmax( cpl_propertylist * plist,
00876 double value )
00877 {
00878 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDMAX,
00879 value),
00880 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDMAX);
00881 cleanup:
00882 return ;
00883 }
00884
00885 void xsh_pfits_set_qc_ord_orderpos_residavg( cpl_propertylist * plist,
00886 double value )
00887 {
00888 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDAVG,
00889 value),
00890 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDAVG);
00891 cleanup:
00892 return ;
00893 }
00894
00895 void xsh_pfits_set_qc_ord_orderpos_residrms( cpl_propertylist * plist,
00896 double value )
00897 {
00898 check_msg(cpl_propertylist_update_double(plist,QC_ORD_ORDERPOS_RESIDRMS,
00899 value),
00900 "error writing keyword '%s'", QC_ORD_ORDERPOS_RESIDRMS );
00901 cleanup:
00902 return ;
00903 }
00904
00905
00906 void xsh_pfits_set_qc_eff_fclip( cpl_propertylist * plist,
00907 double value )
00908 {
00909 check_msg(cpl_propertylist_update_double(plist,XSH_QC_EFF_FCLIP,value),
00910 "error writing keyword '%s'", XSH_QC_EFF_FCLIP);
00911 cleanup:
00912 return ;
00913 }
00914
00915 void xsh_pfits_set_qc_eff_nclip( cpl_propertylist * plist,
00916 int value )
00917 {
00918 check_msg(cpl_propertylist_update_int(plist,XSH_QC_EFF_NCLIP,value),
00919 "error writing keyword '%s'", XSH_QC_EFF_NCLIP);
00920 cleanup:
00921 return ;
00922 }
00923
00924 void xsh_pfits_set_qc_ord_orderpos_max_pred( cpl_propertylist * plist,
00925 int value )
00926 {
00927 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_MAX_PRED,value),
00928 "error writing keyword '%s'", QC_ORD_ORDERPOS_MAX_PRED);
00929 cleanup:
00930 return ;
00931 }
00932
00933 void xsh_pfits_set_qc_ord_orderpos_min_pred( cpl_propertylist * plist,
00934 int value )
00935 {
00936 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_MIN_PRED,value),
00937 "error writing keyword '%s'", QC_ORD_ORDERPOS_MIN_PRED);
00938 cleanup:
00939 return ;
00940 }
00941
00942 void xsh_pfits_set_qc_ord_orderpos_ndet( cpl_propertylist * plist,
00943 int value )
00944 {
00945 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NDET,value),
00946 "error writing keyword '%s'", QC_ORD_ORDERPOS_NDET);
00947 cleanup:
00948 return ;
00949 }
00950
00951 void xsh_pfits_set_qc_ord_orderpos_nposall( cpl_propertylist * plist,
00952 int value )
00953 {
00954 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPOSALL,value),
00955 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPOSALL);
00956 cleanup:
00957 return ;
00958 }
00959
00960 void xsh_pfits_set_qc_ord_orderpos_npossel( cpl_propertylist * plist,
00961 int value )
00962 {
00963 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPOSSEL,value),
00964 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPOSSEL);
00965 cleanup:
00966 return ;
00967 }
00968
00969 void xsh_pfits_set_qc_ord_orderpos_npred( cpl_propertylist * plist,
00970 int value )
00971 {
00972 check_msg(cpl_propertylist_update_int(plist,QC_ORD_ORDERPOS_NPRED,value),
00973 "error writing keyword '%s'", QC_ORD_ORDERPOS_NPRED);
00974 cleanup:
00975 return ;
00976 }
00977
00993 void xsh_pfits_set_qc_multi( cpl_propertylist *plist, void *value,
00994 const char * kw, xsh_instrument * instrument,
00995 int idx )
00996 {
00997 qc_description *pqc = NULL ;
00998 char real_kw[32] ;
00999
01000 XSH_ASSURE_NOT_NULL( plist ) ;
01001 XSH_ASSURE_NOT_NULL( value ) ;
01002 XSH_ASSURE_NOT_NULL( kw ) ;
01003 XSH_ASSURE_NOT_NULL( instrument ) ;
01004 XSH_ASSURE_NOT_NULL( instrument->recipe_id ) ;
01005
01006 pqc = xsh_get_qc_desc_by_kw( kw ) ;
01007 XSH_ASSURE_NOT_NULL( pqc ) ;
01008
01009 if ( xsh_qc_in_recipe( pqc, instrument ) != 0 ) {
01010 xsh_msg( "QC Parameter '%s' not in recipe '%s'",
01011 kw, instrument->recipe_id ) ;
01012 return ;
01013 }
01014
01015
01016 if ( strchr( pqc->kw_name, 'i' ) != NULL ) {
01017
01018 char kformat[256];
01019 const char *pk;
01020 char* pm;
01021 xsh_msg_dbg_high( " ++++ Multiple KW '%s'", pqc->kw_name ) ;
01022
01023 for( pk = pqc->kw_name, pm = kformat ; *pk != '\0' ; pk++ )
01024 if ( *pk == 'i' ) {
01025 strcpy( pm, "%d" ) ;
01026 pm += 2 ;
01027 }
01028 else *pm++ = *pk ;
01029 *pm = '\0' ;
01030
01031 sprintf( real_kw, kformat, idx ) ;
01032 }
01033
01034 switch ( pqc->kw_type ) {
01035 case CPL_TYPE_INT:
01036 check_msg(cpl_propertylist_update_int( plist, real_kw,
01037 *(int *)value),
01038 "error writing keyword '%s'", kw ) ;
01039 break ;
01040 case CPL_TYPE_FLOAT:
01041 check_msg(cpl_propertylist_update_float( plist, real_kw,
01042 *(float *)value),
01043 "error writing keyword '%s'", kw ) ;
01044 break ;
01045 case CPL_TYPE_DOUBLE:
01046 check_msg(cpl_propertylist_update_double( plist, real_kw,
01047 *(double *)value),
01048 "error writing keyword '%s'", kw ) ;
01049 break ;
01050 case CPL_TYPE_STRING:
01051 check_msg(cpl_propertylist_update_string( plist, real_kw, (char *)value),
01052 "error writing keyword '%s'", kw ) ;
01053 break ;
01054 default:
01055 break ;
01056 }
01057 cleanup:
01058 return ;
01059 }
01060
01072 void xsh_pfits_set_qc( cpl_propertylist *plist, void *value,
01073 const char *kw, xsh_instrument * instrument )
01074 {
01075 qc_description *pqc = NULL ;
01076
01077 XSH_ASSURE_NOT_NULL( plist ) ;
01078 XSH_ASSURE_NOT_NULL( value ) ;
01079 XSH_ASSURE_NOT_NULL( kw ) ;
01080 XSH_ASSURE_NOT_NULL( instrument ) ;
01081 XSH_ASSURE_NOT_NULL( instrument->recipe_id ) ;
01082
01083 pqc = xsh_get_qc_desc_by_kw( kw);
01084 XSH_ASSURE_NOT_NULL( pqc ) ;
01085
01086 if ( xsh_qc_in_recipe( pqc, instrument ) != 0 ) {
01087 xsh_msg( "QC Parameter '%s' not in recipe '%s'",
01088 kw, instrument->recipe_id ) ;
01089 return ;
01090 }
01091
01092
01093 switch ( pqc->kw_type ) {
01094 case CPL_TYPE_INT:
01095 check_msg(cpl_propertylist_update_int( plist, pqc->kw_name,
01096 *(int *)value),
01097 "error writing keyword '%s'", kw ) ;
01098 break ;
01099 case CPL_TYPE_FLOAT:
01100 check_msg(cpl_propertylist_update_float( plist, pqc->kw_name,
01101 *(float *)value),
01102 "error writing keyword '%s'", kw ) ;
01103 break ;
01104 case CPL_TYPE_DOUBLE:
01105 check_msg(cpl_propertylist_update_double( plist, pqc->kw_name,
01106 *(double *)value),
01107 "error writing keyword '%s'", kw ) ;
01108 break ;
01109 case CPL_TYPE_STRING:
01110 check_msg(cpl_propertylist_update_string( plist, pqc->kw_name,
01111 (char *)value),
01112 "error writing keyword '%s'", kw ) ;
01113 break ;
01114 default:
01115 break ;
01116 }
01117 cleanup:
01118 return ;
01119 }
01120