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 #ifdef HAVE_CONFIG_H
00027 # include <config.h>
00028 #endif
00029
00030
00036
00039
00040
00041
00042
00043
00044 #include <xsh_data_pre.h>
00045 #include <xsh_error.h>
00046 #include <xsh_msg.h>
00047 #include <xsh_data_instrument.h>
00048 #include <xsh_dfs.h>
00049 #include <xsh_pfits.h>
00050 #include <tests.h>
00051 #include <cpl.h>
00052 #include <math.h>
00053 #include <string.h>
00054
00055
00056
00057
00058 #define MODULE_ID "XSH_CREATE_MASTER_DARK"
00059
00060
00061
00062
00063
00070
00071
00072 int main(void)
00073 {
00074 xsh_instrument* instrument = NULL;
00075 cpl_frame* frame = NULL;
00076 cpl_frame* med_frame = NULL;
00077 cpl_frame* mbias = NULL;
00078 cpl_frameset* set = NULL;
00079 xsh_pre* pre = NULL;
00080 float mean = 0.0,median = 0.0, stdev = 0.0;
00081 xsh_clipping_param crh_clipping = {0.3, 4, 2, 0.7, 0};
00082 xsh_hot_cold_pix_param hp_clip_param = {0, 3.0, 3, 3.0, 3};
00083 xsh_fpn_param fpn_param = {1,1,9,9,4,10};
00084 xsh_ron_param ron_param = {"ALL",
00085 4,100,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3,25};
00086 xsh_struct_param struct_param = {-1,-1};
00087 const char* MBIAS_RECIPE_ID="xsh_mbias";
00088 cpl_parameterlist* parameters=NULL;
00089 xsh_stack_param stack_param = {"median",5.,5.,5};
00090 const char* ftag=NULL;
00091 cpl_frame* product=NULL;
00092 const char* name=NULL;
00093 cpl_propertylist* header=NULL;
00094 cpl_image* ima=NULL;
00095 const int decode_bp=2147483647;
00096
00097 TESTS_INIT(MODULE_ID);
00098
00099
00100 instrument = xsh_instrument_new() ;
00101 xsh_instrument_set_mode( instrument, XSH_MODE_IFU ) ;
00102 xsh_instrument_set_arm( instrument, XSH_ARM_UVB ) ;
00103 xsh_instrument_set_lamp( instrument, XSH_LAMP_QTH ) ;
00104 xsh_instrument_set_recipe_id(instrument, "xsh_mbias");
00105
00106 ftag=XSH_GET_TAG_FROM_ARM(XSH_MASTER_BIAS,instrument);
00107
00108
00109 parameters = cpl_parameterlist_new();
00110 check(xsh_parameters_generic( MBIAS_RECIPE_ID, parameters ));
00111
00112
00113 check(xsh_parameters_clipping_crh_create(MBIAS_RECIPE_ID,parameters,crh_clipping));
00114
00115 check(xsh_parameters_hot_cold_pix_create(MBIAS_RECIPE_ID,parameters,hp_clip_param));
00116
00117
00118 check(xsh_parameters_fpn_create(MBIAS_RECIPE_ID,parameters,fpn_param));
00119 check(xsh_parameters_ron_create(MBIAS_RECIPE_ID,parameters,ron_param));
00120 check(xsh_parameters_struct_create(MBIAS_RECIPE_ID,parameters,struct_param));
00121
00122
00123
00124 frame = xsh_test_create_frame("frame.fits",10,10,
00125 XSH_BIAS_UVB,CPL_FRAME_GROUP_RAW, instrument);
00126 set = cpl_frameset_new();
00127 cpl_frameset_insert(set,frame);
00128 xsh_instrument_set_decode_bp( instrument, decode_bp ) ;
00129
00130 check(xsh_prepare(set,NULL, NULL, "PRE",instrument,0,CPL_FALSE));
00131
00132
00133 check (med_frame = xsh_remove_crh_multiple( set, "remove_crh.fits",
00134 &stack_param,NULL,
00135 instrument,
00136 NULL,NULL,0 ));
00137
00138 check(mbias = xsh_create_master_bias2(set,&stack_param,instrument,ftag,0));
00139 check(product=xsh_compute_qc_on_master_bias(set,mbias,instrument,parameters));
00140 name=cpl_frame_get_filename(product);
00141 header=cpl_propertylist_load(name,0);
00142 ima=cpl_image_load(name,CPL_TYPE_FLOAT,0,0);
00143 xsh_free_frame(&product);
00144 check(product=xsh_frame_product(name,ftag,
00145 CPL_FRAME_TYPE_IMAGE,
00146 CPL_FRAME_GROUP_PRODUCT,
00147 CPL_FRAME_LEVEL_FINAL));
00148
00149
00150
00151
00152
00153 assure( strcmp(xsh_pfits_get_pcatg(header),"MASTER_BIAS_UVB")
00154 == 0,CPL_ERROR_ILLEGAL_OUTPUT,"Wrong pcatg keyword");
00155
00156 check(mean = xsh_pfits_get_qc_mbiasavg (header));
00157 check(median = xsh_pfits_get_qc_mbiasmed(header));
00158 check(stdev = xsh_pfits_get_qc_mbiasrms (header));
00159
00160 assure( mean - cpl_image_get_mean(ima) < XSH_FLOAT_PRECISION,
00161 CPL_ERROR_ILLEGAL_OUTPUT,"Wrong mean value in QC");
00162 assure( median - cpl_image_get_median(ima) < XSH_FLOAT_PRECISION,
00163 CPL_ERROR_ILLEGAL_OUTPUT,"Wrong median value in QC");
00164 assure( stdev - cpl_image_get_stdev(ima) < XSH_FLOAT_PRECISION,
00165 CPL_ERROR_ILLEGAL_OUTPUT,"Wrong rms value in QC");
00166 xsh_msg("header is ok");
00167
00168
00169 assure(cpl_frame_get_group(product) == CPL_FRAME_GROUP_PRODUCT,
00170 CPL_ERROR_ILLEGAL_OUTPUT,"Wrong group for MASTER BIAS frame");
00171 assure(strcmp(cpl_frame_get_tag(product),XSH_MASTER_BIAS_UVB) == 0,
00172 CPL_ERROR_ILLEGAL_OUTPUT,"Wrong tag (%s) for MASTER BIAS frame ",
00173 cpl_frame_get_tag(product));
00174 xsh_msg("frame is ok");
00175 cleanup:
00176 xsh_free_parameterlist(¶meters);
00177 xsh_free_frame(&med_frame);
00178 xsh_pre_free(&pre);
00179 xsh_free_frameset(&set);
00180 xsh_free_frame(&mbias);
00181 xsh_free_frame(&product);
00182 xsh_free_propertylist(&header);
00183 xsh_free_image(&ima);
00184
00185 xsh_instrument_free(&instrument);
00186 if (cpl_error_get_code() != CPL_ERROR_NONE) {
00187 xsh_error_dump(CPL_MSG_ERROR);
00188 return 1;
00189 } else {
00190 return 0;
00191 }
00192 }
00193