63 cpl_msg_info(__func__,
"**********************************************");
64 cpl_msg_info(__func__,
" Welcome to GRAVITY Pipeline release %s",
66 cpl_msg_info(__func__,
" Last rebuilt at %s %s",__DATE__,__TIME__);
67 cpl_msg_info(__func__,
"**********************************************");
79 cpl_ensure_code(set, CPL_ERROR_NULL_INPUT);
81 cpl_errorstate prestate = cpl_errorstate_get();
82 cpl_frame *frame = NULL;
84 nb_frame = cpl_frameset_get_size(set);
87 for (i = 0; i < nb_frame; i++) {
89 frame = cpl_frameset_get_position(set, i);
90 const char *tag = cpl_frame_get_tag(frame);
93 cpl_msg_warning(cpl_func,
"Frame %d has no tag", i);
122 cpl_frame_set_group(frame, CPL_FRAME_GROUP_RAW);
148 cpl_frame_set_group(frame, CPL_FRAME_GROUP_CALIB);
152 cpl_frame_set_group(frame, CPL_FRAME_GROUP_PRODUCT);
156 if (!cpl_errorstate_is_equal(prestate)) {
157 return cpl_error_set_message(cpl_func, cpl_error_get_code(),
158 "Could not identify RAW and CALIB "
162 return CPL_ERROR_NONE;
175 cpl_ensure_code (p, CPL_ERROR_NULL_INPUT);
176 cpl_parameter_disable (p, CPL_PARAMETER_MODE_CLI);
177 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
178 cpl_parameter_disable (p, CPL_PARAMETER_MODE_CFG);
179 return CPL_ERROR_NONE;
193 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
196 p = cpl_parameter_new_value (
"gravity.calib.bad-dark-threshold", CPL_TYPE_INT,
197 "the rms factor for "
198 "dark bad pixel threshold",
199 "gravity.calib", 10);
200 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"bad-dark-threshold");
201 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
202 cpl_parameterlist_append (self, p);
204 p = cpl_parameter_new_value (
"gravity.calib.lowflux-pixels-ft", CPL_TYPE_BOOL,
205 "Flag as bad pixels all pixels on the FT which "
206 "have a non-sgnificant flux "
207 "(less than 33% of neighbouring pixel)"
208 "to increase SNR on faint targets",
209 "gravity.calib", FALSE);
210 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"lowflux-pixels-ft");
211 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
212 cpl_parameterlist_append (self, p);
214 p = cpl_parameter_new_value (
"gravity.calib.bad-pixel-A-ft", CPL_TYPE_INT,
215 "flag a given pixel as bad on the FT detector"
216 "value is position of pixel (starting at 1)"
217 "a position of 0 means no pixel is flagged",
219 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"bad-pixel-A-ft");
220 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
221 cpl_parameterlist_append (self, p);
223 p = cpl_parameter_new_value (
"gravity.calib.bad-pixel-B-ft", CPL_TYPE_INT,
224 "flag a second pixel as bad on the FT detector"
225 "value is position of pixel (starting at 1)"
226 "a position of 0 means no pixel is flagged",
228 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"bad-pixel-B-ft");
229 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
230 cpl_parameterlist_append (self, p);
246 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
251 p = cpl_parameter_new_value(
"gravity.calib.pca-components", CPL_TYPE_INT,
252 "The number of PCA components to compute.",
254 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-components");
255 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
256 cpl_parameterlist_append (self, p);
259 p = cpl_parameter_new_value(
"gravity.calib.pca-tracking-ratio", CPL_TYPE_INT,
260 "The minimum tracking ratio to accept calibration frames for.",
261 "gravity.calib", 90);
262 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-tracking-ratio");
263 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
264 cpl_parameterlist_append (self, p);
267 p = cpl_parameter_new_value(
"gravity.calib.pca-clean-size", CPL_TYPE_INT,
268 "The window size to use for outlier cleaning.",
269 "gravity.calib", 20);
270 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-clean-size");
271 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
272 cpl_parameterlist_append (self, p);
275 p = cpl_parameter_new_value(
"gravity.calib.pca-clean-nstd", CPL_TYPE_DOUBLE,
276 "The sigma-clip n_std for outlier cleaning.",
277 "gravity.calib", 5.0);
278 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-clean-nstd");
279 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
280 cpl_parameterlist_append (self, p);
283 const char *PCA_FIT_TYPES[2] = {
"POLYNOMIAL",
"SPLINE"};
284 p = cpl_parameter_new_enum(
"gravity.calib.pca-fit-type", CPL_TYPE_STRING,
285 "The method to use for fitting the PCA components.",
287 PCA_FIT_TYPES[1], 2, PCA_FIT_TYPES[0], PCA_FIT_TYPES[1]
289 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-fit-type");
290 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
291 cpl_parameterlist_append (self, p);
294 p = cpl_parameter_new_value(
"gravity.calib.pca-fit-degree", CPL_TYPE_INT,
295 "The polynomial fit degree, or number of spline coefficients.",
296 "gravity.calib", 20);
297 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-fit-degree");
298 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
299 cpl_parameterlist_append (self, p);
302 p = cpl_parameter_new_value(
"gravity.calib.pca-save-residuals", CPL_TYPE_BOOL,
303 "Also save the residuals from the PCA fitting for inspection.",
304 "gravity.calib", CPL_FALSE);
305 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pca-save-residuals");
306 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
307 cpl_parameterlist_append (self, p);
324 cpl_parameter *p = cpl_parameter_new_value (
"gravity.vis.flatten-visphi", CPL_TYPE_BOOL,
325 "Use the PCA calibrator to flatten the VISPHI.",
326 "gravity.vis", CPL_FALSE);
327 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"flatten-visphi");
328 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
329 cpl_parameterlist_append (self, p);
345 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
350 p = cpl_parameter_new_enum (
"gravity.calib.profile-mode", CPL_TYPE_STRING,
351 "Method to compute the extraction profile. "
352 "PROFILE corresponds to the pixel intensities measured in the "
353 "FLAT files (Gaussian like with FWHM of approx 1.5 pixel). "
354 "This is the AUTO option for the Low and Med spectral resolution. "
355 "GAUSS corresponds to a Gaussian fit of the (non-zero) pixel intensities measured "
356 "in the FLAT files. BOX corresponds to a box-card of 6 pixels centered "
357 "on the spectra measured in the FLAT files. This is the AUTO option for High "
358 "spectral resolution",
359 "gravity.calib",
"AUTO",
360 4,
"AUTO",
"PROFILE",
"GAUSS",
"BOX");
361 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"profile-mode");
362 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
363 cpl_parameterlist_append (self, p);
366 p = cpl_parameter_new_value (
"gravity.calib.force-badpix-to-zero", CPL_TYPE_BOOL,
367 "Force the badpixel to zero in profile",
368 "gravity.calib", TRUE);
369 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"force-badpix-to-zero");
370 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
371 cpl_parameterlist_append (self, p);
374 p = cpl_parameter_new_value (
"gravity.calib.profile-width", CPL_TYPE_INT,
375 "Width of the detector window extracted around the default "
376 "position of each spectrum, and on which the profile "
377 "will be applied to perform the extraction.",
379 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"profile-width");
380 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
381 cpl_parameterlist_append (self, p);
396 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
398 cpl_parameter *p = NULL;
422 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
427 p = cpl_parameter_new_value (
"gravity.calib.force-wave-ft-equal", CPL_TYPE_BOOL,
428 "Force the spatial order of the wavelength 2D fit for FT to "
429 "zero (so all region share the same calibration). "
430 "This is used to build the P2VM calibration of the TAC "
431 "real-time code running on the instrument ifself.",
432 "gravity.calib", FALSE);
433 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"force-wave-ft-equal");
434 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
435 cpl_parameterlist_append (self, p);
458 p = cpl_parameter_new_enum(
"gravity.calib.wave-mode", CPL_TYPE_STRING,
459 "Method to use for additional per-pixel wavelength calibration in LOW mode.\n "
460 "INDIVIDUAL to fit wavelengths using an independent polynomial fit to each channel.\n "
461 "BANDPASS to fit wavelengths using the empirically measured bandpass (experimental).",
462 "gravity.calib",
"INDIVIDUAL", 2,
463 "INDIVIDUAL",
"BANDPASS"
465 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"wave-mode");
466 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
467 cpl_parameterlist_append(self, p);
475 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
478 p = cpl_parameter_new_value (
"gravity.dfs.static-name", CPL_TYPE_BOOL,
479 "Use static names for the products (for ESO)",
480 "gravity.dfs", FALSE);
481 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"static-name");
482 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
483 cpl_parameterlist_append (self, p);
490 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
493 p = cpl_parameter_new_value (
"gravity.dfs.debug-file", CPL_TYPE_BOOL,
494 "Save additional debug file(s)",
495 "gravity.dfs", FALSE);
496 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"debug-file");
497 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
498 cpl_parameterlist_append (self, p);
505 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
508 p = cpl_parameter_new_value (
"gravity.dfs.bias-subtracted-file", CPL_TYPE_BOOL,
509 "Save the BIAS_SUBTRACTED intermediate product",
510 "gravity.dfs", FALSE);
511 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"bias-subtracted-file");
512 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
513 cpl_parameterlist_append (self, p);
520 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
523 p = cpl_parameter_new_value (
"gravity.dfs.spectrum-file", CPL_TYPE_BOOL,
524 "Save the SPECTRUM intermediate product",
525 "gravity.dfs", FALSE);
526 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"spectrum-file");
527 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
528 cpl_parameterlist_append (self, p);
535 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
538 p = cpl_parameter_new_value (
"gravity.dfs.preproc-file", CPL_TYPE_BOOL,
539 "Save the PREPROC intermediate product",
540 "gravity.dfs", FALSE);
541 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"preproc-file");
542 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
543 cpl_parameterlist_append (self, p);
550 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
553 p = cpl_parameter_new_value (
"gravity.dfs.p2vmred-file", CPL_TYPE_BOOL,
554 "Save the P2VMRED intermediate product",
555 "gravity.dfs", FALSE);
556 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"p2vmreduced-file");
557 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
558 cpl_parameterlist_append (self, p);
565 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
568 p = cpl_parameter_new_value (
"gravity.dfs.vis-file", CPL_TYPE_BOOL,
569 "Save the VIS intermediate product",
570 "gravity.dfs", FALSE);
571 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"vis-file");
572 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
573 cpl_parameterlist_append (self, p);
580 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
583 p = cpl_parameter_new_value (
"gravity.dfs.astro-file", CPL_TYPE_BOOL,
584 "Save the ASTROREDUCED intermediate product",
585 "gravity.dfs", FALSE);
586 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"astro-file");
587 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
588 cpl_parameterlist_append (self, p);
595 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
598 p = cpl_parameter_new_enum (
"gravity.preproc.bias-method", CPL_TYPE_STRING,
599 "Method to average the biaspixels when cleaning-up\n "
600 "the SC detector (only applied to MED and LOW). Ideally\n "
601 "the same value shall be used when reducing the DARK\n "
602 "with gravity_dark and the OBJECT with gravity_vis. \n"
603 "AUTO is equivalent to MASKED_MEDIAN_PER_COLUMN if the data\n"
604 "contains in the IMAGING_DETECTOR_SC extension the\n"
605 "LEFT, HALFLEFT, CENTER, HALFRIGHT and RIGHT columns.\n"
606 "Otherwise it is like MEDIAN.\n",
607 "gravity.preproc",
"AUTO",
608 4,
"AUTO",
"MEDIAN",
"MEDIAN_PER_COLUMN",
609 "MASKED_MEDIAN_PER_COLUMN");
610 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"bias-method");
611 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
612 cpl_parameterlist_append (self, p);
614 p = cpl_parameter_new_value (
"gravity.preproc.remove-cosmicrays", CPL_TYPE_BOOL,
615 "Remove the cosmicrays with the statiscal method",
616 "gravity.preproc", TRUE);
617 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"remove-cosmicrays");
618 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
619 cpl_parameterlist_append (self, p);
626 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
629 p = cpl_parameter_new_value (
"gravity.metrology.acq-correction-delay",
631 "Delay between the end of ACQ frame and correction\n "
632 "offset seen by the metrology diodes, in seconds.",
633 "gravity.metrology", 0.25);
634 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"acq-correction-delay");
635 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
636 cpl_parameterlist_append (self, p);
638 p = cpl_parameter_new_value (
"gravity.metrology.use-fiber-dxy", CPL_TYPE_BOOL,
639 "Use the fiber position when computing OPD_TEL_CORR.",
640 "gravity.metrology", FALSE);
641 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-fiber-dxy");
642 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
643 cpl_parameterlist_append (self, p);
645 p = cpl_parameter_new_value (
"gravity.metrology.use-met-rtc", CPL_TYPE_BOOL,
646 "Reduce metrology voltage with the real time algorithm\n"
647 "instead of using the pipeline’s algorithm.",
648 "gravity.metrology", FALSE);
649 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-met-rtc");
650 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
651 cpl_parameterlist_append (self, p);
654 p = cpl_parameter_new_value (
"gravity.metrology.use-faint-met", CPL_TYPE_BOOL,
655 "In FAINT also the faint parts of the metrology \n"
656 "are used, not only the bright periods.",
657 "gravity.metrology", TRUE);
658 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-faint-met");
659 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
660 cpl_parameterlist_append (self, p);
662 p = cpl_parameter_new_value (
"gravity.metrology.preswitch-delay", CPL_TYPE_INT,
663 "Delay where metrology values are ignored before\n"
664 "laser brightness is switched in faint mode, ms.",
665 "gravity.metrology", 60);
666 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"preswitch-delay");
667 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
668 cpl_parameterlist_append (self, p);
670 p = cpl_parameter_new_value (
"gravity.metrology.postswitch-delay", CPL_TYPE_INT,
671 "Delay where metrology values are ignored after\n"
672 "laser brightness is switched in faint mode, ms.",
673 "gravity.metrology", 320);
674 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"postswitch-delay");
675 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
676 cpl_parameterlist_append (self, p);
678 p = cpl_parameter_new_value (
"gravity.metrology.demodulate-metrology", CPL_TYPE_BOOL,
679 "Perform demodulation on the raw metrology data.",
680 "gravity.metrology", CPL_TRUE);
681 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"demodulate-metrology");
682 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
683 cpl_parameterlist_append (self, p);
685 p = cpl_parameter_new_value (
"gravity.metrology.use-dark-offsets", CPL_TYPE_BOOL,
686 "Use diode zeros measured from the DARK when demodulating metrology.",
687 "gravity.metrology", CPL_TRUE);
688 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-dark-offsets");
689 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
690 cpl_parameterlist_append (self, p);
697 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
700 p = cpl_parameter_new_value (
"gravity.preproc.ditshift-sc", CPL_TYPE_INT,
701 "Shift the time of SC DITs by an integer value to\n "
702 "account for lost frames in exposure (issue on the\n "
703 "instrument side, report to instrument team). The\n "
704 "time of all DITs in exposure are increased by\n "
705 "ditshift x PERIOD. ditshift can be 0,\n "
706 "positive (system has lost one SC DIT), or negative "
707 "(SC desynchronized).",
708 "gravity.preproc",0);
709 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"ditshift-sc");
710 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
711 cpl_parameterlist_append (self, p);
713 p = cpl_parameter_new_value (
"gravity.preproc.extra-pixel-ft", CPL_TYPE_BOOL,
714 "Include the 6th pixels ot the FT",
715 "gravity.preproc", TRUE);
716 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"extra-pixel-ft");
717 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
718 cpl_parameterlist_append (self, p);
725 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
727 p = cpl_parameter_new_value (
"gravity.postprocess.average-vis", CPL_TYPE_BOOL,
728 "Average the results from the different input files (if any)\n "
729 "in the output product, instead of simply appending them.",
730 "gravity.postprocess", FALSE);
731 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"average-vis");
732 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
733 cpl_parameterlist_append (self, p);
740 cpl_ensure (self, CPL_ERROR_NULL_INPUT, NULL);
743 p = cpl_parameter_new_value (
"gravity.postprocess.fluxerr-sc", CPL_TYPE_DOUBLE,
744 "Force the uncertainty in FLUX of SC",
745 "gravity.postprocess", 0.0);
746 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"fluxerr-sc");
747 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
748 cpl_parameterlist_append (self, p);
750 p = cpl_parameter_new_value (
"gravity.postprocess.visamperr-sc", CPL_TYPE_DOUBLE,
751 "Force the uncertainty in VISAMP of SC",
752 "gravity.postprocess", 0.0);
753 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"visamperr-sc");
754 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
755 cpl_parameterlist_append (self, p);
757 p = cpl_parameter_new_value (
"gravity.postprocess.visphierr-sc", CPL_TYPE_DOUBLE,
758 "Force the uncertainty in VISPHI of SC",
759 "gravity.postprocess", 0.0);
760 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"visphierr-sc");
761 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
762 cpl_parameterlist_append (self, p);
764 p = cpl_parameter_new_value (
"gravity.postprocess.vis2err-sc", CPL_TYPE_DOUBLE,
765 "Force the uncertainty in VIS2 of SC",
766 "gravity.postprocess", 0.0);
767 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"vis2err-sc");
768 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
769 cpl_parameterlist_append (self, p);
776 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
780 p = cpl_parameter_new_value (
"gravity.signal.chi2r-threshold", CPL_TYPE_DOUBLE,
781 "Threshold in chi2r of the fringe-fit to declare\n "
782 "a bad value. This is usefull to detect outliers\n "
783 "or cosmic in individual frames",
784 "gravity.signal", 50.0);
785 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"chi2r-threshold");
786 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
787 cpl_parameterlist_append (self, p);
789 p = cpl_parameter_new_value (
"gravity.signal.chi2r-sigma", CPL_TYPE_DOUBLE,
790 "Threshold in chi2r of the fringe-fit (in unit of the \n "
791 "the std of chi2r in the spectral direction) to declare\n "
792 "a bad value. This is usefull to detect outliers\n "
793 "or cosmic in individual frames",
794 "gravity.signal", 100.0);
795 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"chi2r-sigma");
796 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
797 cpl_parameterlist_append (self, p);
800 p = cpl_parameter_new_value (
"gravity.signal.nsmooth-snr-ft", CPL_TYPE_INT,
801 "Number of samples to average coherently when computing\n "
802 "the real-time SNR and GDELAY of the FT (shall correspond\n "
803 "to the atmospheric coherence time). The integration\n "
804 "window runs from -nsmooth -> +nsmooth.",
805 "gravity.signal", 5);
806 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"nsmooth-snr-ft");
807 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
808 cpl_parameterlist_append (self, p);
810 return CPL_ERROR_NONE;
815 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
819 p = cpl_parameter_new_value (
"gravity.signal.phase-ref-sc-maxdeg", CPL_TYPE_INT,
820 "Maximum deg for the fit of PHASE_REF",
821 "gravity.signal", 3);
822 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"phase-ref-sc-maxdeg");
823 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
824 cpl_parameterlist_append (self, p);
827 p = cpl_parameter_new_value (
"gravity.signal.use-met-zero", CPL_TYPE_BOOL,
828 "Flag to add a constant value to OPD_DISP.\n "
829 "This constant value is taken from the header.",
830 "gravity.signal", FALSE);
831 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-met-zero");
832 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
833 cpl_parameterlist_append (self, p);
836 p = cpl_parameter_new_enum (
"gravity.signal.imaging-ref-met", CPL_TYPE_STRING,
837 "Metrology source used for IMAGING_REF calculation:\n "
838 "Use fibre coupler metrology (FC);\n "
839 "Use fibre coupler metrology corrected from pupil motion (FC_CORR);\n "
840 "Use telescope metrology (TEL).",
841 "gravity.signal",
"FC", 3,
842 "FC",
"FC_CORR",
"TEL");
843 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"imaging-ref-met");
844 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
845 cpl_parameterlist_append (self, p);
847 return CPL_ERROR_NONE;
861 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
864 p = cpl_parameter_new_value (
"gravity.signal.snr-min-ft", CPL_TYPE_DOUBLE,
865 "SNR threshold to accept FT frames (>0). It raises the first bit (<<0)\n "
866 "of column REJECTION_FLAG of FT.",
867 "gravity.signal", isCalib ? 30.0 : 3.0);
868 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"snr-min-ft");
869 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
870 cpl_parameterlist_append (self, p);
873 p = cpl_parameter_new_value (
"gravity.signal.global-state-min-ft", CPL_TYPE_DOUBLE,
874 "Minimum OPDC state to accept FT frames (>=0) It raises the second bit\n "
875 "(<<1) of column REJECTION_FLAG of FT.",
876 "gravity.signal", 2.0);
877 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"global-state-min-ft");
878 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
879 cpl_parameterlist_append (self, p);
881 p = cpl_parameter_new_value (
"gravity.signal.global-state-max-ft", CPL_TYPE_DOUBLE,
882 "Maximum OPDC state to accept FT frames (>=0) It raises the second bit\n "
883 "(<<1) of column REJECTION_FLAG of FT.",
884 "gravity.signal", 4.0);
885 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"global-state-max-ft");
886 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
887 cpl_parameterlist_append (self, p);
890 p = cpl_parameter_new_value (
"gravity.signal.state-min-ft", CPL_TYPE_DOUBLE,
891 "Minimum OPDC state per baseline to accept FT frames (>=0) It raises\n "
892 "the second bit (<<1) of column REJECTION_FLAG of FT.",
893 "gravity.signal", 1.0);
894 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"state-min-ft");
895 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
896 cpl_parameterlist_append (self, p);
899 p = cpl_parameter_new_value (
"gravity.signal.tracking-min-sc", CPL_TYPE_DOUBLE,
900 "Minimum ratio of accepted FT frames in order to accept a SC frames (0..1),\n "
901 "that is, for each SC DIT, the fraction of the time the\n "
902 "REJECTION_FLAG of the FT is not 0.\n "
903 "It raises the first bit (<<0) of column REJECTION_FLAG of SC",
904 "gravity.signal", 0.8);
905 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"tracking-min-sc");
906 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
907 cpl_parameterlist_append (self, p);
910 p = cpl_parameter_new_value (
"gravity.signal.vfactor-min-sc", CPL_TYPE_DOUBLE,
911 "vFactor threshold to accept SC frame (0..1).\n ",
912 "It raises the second bit (<<1) of column REJECTION_FLAG of SC",
913 "gravity.signal", isCalib ? 0.8 : 0.1);
914 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"vfactor-min-sc");
915 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
916 cpl_parameterlist_append (self, p);
919 p = cpl_parameter_new_value (
"gravity.signal.opd-pupil-max-sc", CPL_TYPE_DOUBLE,
920 "Maximum OPD_PUPIL (abs) to accept SC frames. It raises the third bit\n "
921 "(<<2) of column REJECTION_FLAG of SC.",
922 "gravity.signal", 9999.0);
923 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"opd-pupil-max-sc");
924 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
925 cpl_parameterlist_append (self, p);
927 p = cpl_parameter_new_value (
"gravity.signal.opd-pupil-stddev-max-sc", CPL_TYPE_DOUBLE,
928 "Maximum OPD_PUPIL_STDDEV to accept SC frames. It\n "
929 "raises the fourth bit (<<3) of REJECTION_FLAG of SC.",
930 "gravity.signal", 2.9e-7);
931 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"opd-pupil-stddev-max-sc");
932 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
933 cpl_parameterlist_append (self, p);
935 return CPL_ERROR_NONE;
940 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
944 p = cpl_parameter_new_value (
"gravity.vis.max-frame", CPL_TYPE_INT,
945 "Maximum number of frames to integrate \n "
946 "coherently into an OIFITS entry",
947 "gravity.vis", 10000);
948 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"max-frame");
949 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
950 cpl_parameterlist_append (self, p);
953 p = cpl_parameter_new_value (
"gravity.vis.force-same-time", CPL_TYPE_BOOL,
954 "Force all baseline/quantities to have\n "
955 "strictly the same TIME and MJD columns",
956 "gravity.vis", FALSE);
957 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"force-same-time");
958 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
959 cpl_parameterlist_append (self, p);
962 p = cpl_parameter_new_value (
"gravity.vis.debias-sc", CPL_TYPE_BOOL,
963 "Subtract the V2 bias from SC",
964 "gravity.vis", TRUE);
965 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"debias-sc");
966 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
967 cpl_parameterlist_append (self, p);
970 p = cpl_parameter_new_value (
"gravity.vis.debias-ft", CPL_TYPE_BOOL,
971 "Subtract the V2 bias from FT",
972 "gravity.vis", TRUE);
973 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"debias-ft");
974 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
975 cpl_parameterlist_append (self, p);
978 p = cpl_parameter_new_value (
"gravity.vis.nboot", CPL_TYPE_INT,
979 "Number of bootstraps to compute error (1..100)",
980 "gravity.vis", isCalib ? 1 : 20);
981 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"nboot");
982 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
983 cpl_parameterlist_append (self, p);
986 p = cpl_parameter_new_enum (
"gravity.vis.vis-correction-sc", CPL_TYPE_STRING,
987 "Correction of SC visibility from losses due to long integration,\n "
988 "using the measured visibility losses with the FT (VFACTOR\n "
989 "and/or PFACTOR) or by forcing\n "
990 "the SC visibilities to match those of the FT (FORCE). Possible\n "
993 isCalib ?
"NONE" :
"VFACTOR", 5,
"VFACTOR",
"PFACTOR",
994 "VFACTOR_PFACTOR",
"FORCE",
"NONE");
995 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"vis-correction-sc");
996 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
997 cpl_parameterlist_append (self, p);
999 p = cpl_parameter_new_enum (
"gravity.vis.vis-correction-ft", CPL_TYPE_STRING,
1000 "Correction of FT visibility from losses due to long integration,\n "
1001 "using a sliding window P_FACTOR, or its square. Choices are:",
1002 "gravity.vis",
"NONE", 3,
"NONE",
"PFACTOR",
"PFACTOR_SQUARED");
1003 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"vis-correction-ft");
1004 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1005 cpl_parameterlist_append (self, p);
1008 p = cpl_parameter_new_value (
"gravity.vis.pfactor-window-length", CPL_TYPE_INT,
1009 "Length of the sliding window used to calculate the FT P_FACTOR.\n "
1010 "For each FT frame, the window will run from -window-length to +window-length inclusive.",
1012 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"pfactor-window-length");
1013 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1014 cpl_parameterlist_append (self, p);
1017 p = cpl_parameter_new_enum (
"gravity.vis.phase-ref-sc", CPL_TYPE_STRING,
1018 "Reference phase used to integrate the SC frames.\n "
1019 "Use a self-estimate of the phase, fitted by poly. (SELF_REF)\n "
1020 "Use the FT phase only, interpolated in lbd (PHASE_REF)\n "
1021 "Use the FT+MET-SEP.UV phase (IMAGING_REF).",
1022 "gravity.vis",
"AUTO", 5,
1023 "SELF_REF",
"PHASE_REF",
"IMAGING_REF",
"AUTO",
"NONE");
1024 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"phase-ref-sc");
1025 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1026 cpl_parameterlist_append (self, p);
1029 p = cpl_parameter_new_enum (
"gravity.vis.output-phase-sc", CPL_TYPE_STRING,
1030 "With DIFFERENTIAL, the mean group-delay and mean\n "
1031 "phases are removed from the output VISPHI in the\n "
1032 "final OIFITS file. With ABSOLUTE, the VISPHI is\n "
1033 "kept unmodified. With SELF_VISPHI, the internal differential\n "
1034 "phase between each spectral channel and a common \n "
1035 "reference channel is computed.\n",
1036 "gravity.vis",
"AUTO", 4,
1037 "DIFFERENTIAL",
"ABSOLUTE",
"AUTO",
"SELF_VISPHI");
1038 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"output-phase-sc");
1039 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1040 cpl_parameterlist_append (self, p);
1043 p = cpl_parameter_new_value (
"gravity.vis.output-phase-channels", CPL_TYPE_STRING,
1044 "range (string in the form [min,max]) of channels\n "
1045 "to use a SELF_VISPHI phase reference.\n",
1046 "gravity.vis",
"[0,0]");
1047 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"output-phase-channels");
1048 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1049 cpl_parameterlist_append (self, p);
1052 p = cpl_parameter_new_value (
"gravity.vis.outlier-fraction-threshold", CPL_TYPE_DOUBLE,
1053 "Flag channels with more than this fraction of the frames\n "
1054 "affected by outliers or cosmics. These are typically detected\n "
1055 "with the thresholds options in chi2 of the fringe-fit.",
1056 "gravity.vis", 0.5);
1057 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"outlier-fraction-threshold");
1058 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1059 cpl_parameterlist_append (self, p);
1061 return CPL_ERROR_NONE;
1066 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
1071 p = cpl_parameter_new_value(
"gravity.astrometry.use-swap-fiber-pos", CPL_TYPE_BOOL,
1072 "use fiber position for swap rather than computing an astrometric solution.",
"gravity.astrometry", CPL_FALSE);
1073 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"use-swap-fiber-pos");
1074 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1075 cpl_parameterlist_append (self, p);
1078 p = cpl_parameter_new_value(
"gravity.astrometry.ra-lim-swap", CPL_TYPE_DOUBLE,
1079 "specify the RA range (in mas) over which to search for the astrometry of the swap. Default specifies entire field of view.",
"gravity.astrometry", -1.0);
1080 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"ra-lim-swap");
1081 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1082 cpl_parameterlist_append (self, p);
1084 p = cpl_parameter_new_value(
"gravity.astrometry.nra-swap", CPL_TYPE_INT,
1085 "number of points over the RA range for the swap.",
"gravity.astrometry", 50);
1086 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"nra-swap");
1087 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1088 cpl_parameterlist_append (self, p);
1091 p = cpl_parameter_new_value(
"gravity.astrometry.dec-lim-swap", CPL_TYPE_DOUBLE,
1092 "specify the dec range (in mas) over which to search for the astrometry of the swap. Default specifies entire field of view.",
"gravity.astrometry", -1.0);
1093 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"dec-lim-swap");
1094 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1095 cpl_parameterlist_append (self, p);
1097 p = cpl_parameter_new_value(
"gravity.astrometry.ndec-swap", CPL_TYPE_INT,
1098 "number of points over the dec range for the swap.",
"gravity.astrometry", 50);
1099 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"ndec-swap");
1100 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1101 cpl_parameterlist_append (self, p);
1104 p = cpl_parameter_new_value(
"gravity.astrometry.average-over-dits", CPL_TYPE_BOOL,
1105 "Average over DITs before reducing astrometry for speed.",
"gravity.astrometry", CPL_FALSE);
1106 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"average-over-dits");
1107 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1108 cpl_parameterlist_append (self, p);
1110 p = cpl_parameter_new_value(
"gravity.astrometry.zoom-factor", CPL_TYPE_DOUBLE,
1111 "Factor to magnify ra/dec limits by after initial fit to find precise solution.",
"gravity.astrometry", 1.0);
1112 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"zoom-factor");
1113 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1114 cpl_parameterlist_append (self, p);
1138 p = cpl_parameter_new_value(
"gravity.astrometry.ft-mean-flux", CPL_TYPE_DOUBLE,
1139 "remove all data with FT flux below this factor times the mean",
"gravity.astrometry", 0.2);
1140 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"ft-mean-flux");
1141 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1142 cpl_parameterlist_append (self, p);
1145 const char * calib_strategies[] = {
"NONE",
"ALL",
"SELF",
"SWAP",
"NEAREST"};
1146 p = cpl_parameter_new_enum_from_array(
"gravity.astrometry.calib-strategy", CPL_TYPE_STRING,
1147 "how to calculate the reference coherent flux\n"
1148 "\t'NONE': do not use an amplitude reference\n"
1149 "\t'ALL': use all files\n"
1150 "\t'SELF': calibrate each file individually\n"
1151 "\t'SWAP': use the swap files\n"
1152 "\t'NEAREST': use the nearest two (in time) files.",
1153 "gravity.astrometry", 0, 5, calib_strategies);
1154 cpl_parameter_set_alias (p, CPL_PARAMETER_MODE_CLI,
"calib-strategy");
1155 cpl_parameter_disable (p, CPL_PARAMETER_MODE_ENV);
1156 cpl_parameterlist_append (self, p);
1165 return CPL_ERROR_NONE;
1170 cpl_ensure_code (self, CPL_ERROR_NULL_INPUT);
1183 p = cpl_parameter_new_value(
"gravi.gravity_image.pixelsize",
1184 CPL_TYPE_DOUBLE,
"size of the pixel (milliarcseconds)",
1185 "gravi.gravity_image", 0.2);
1186 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"pixelsize");
1187 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1188 cpl_parameterlist_append(self, p);
1191 p = cpl_parameter_new_value(
"gravi.gravity_image.dim",
1192 CPL_TYPE_INT,
"number of pixels per side of the image",
1193 "gravi.gravity_image", 100);
1194 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"dim");
1195 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1196 cpl_parameterlist_append(self, p);
1199 p = cpl_parameter_new_value(
"gravi.gravity_image.regul",
1200 CPL_TYPE_STRING,
"name of regularization method",
1201 "gravi.gravity_image",
"totvar");
1202 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"regul");
1203 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1204 cpl_parameterlist_append(self, p);
1207 p = cpl_parameter_new_value(
"gravi.gravity_image.regul_mu",
1208 CPL_TYPE_DOUBLE,
"global regularization weight",
1209 "gravi.gravity_image", 1E4);
1210 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"regul_mu");
1211 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1212 cpl_parameterlist_append(self, p);
1215 p = cpl_parameter_new_value(
"gravi.gravity_image.maxeval",
1216 CPL_TYPE_INT,
"maximum number of evaluations of the objective function",
1217 "gravi.gravity_image", 2000);
1218 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"maxeval");
1219 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1220 cpl_parameterlist_append(self, p);
1223 p = cpl_parameter_new_value(
"gravi.gravity_image.timeout",
1224 CPL_TYPE_DOUBLE,
"Maximum execution time of Mira process (s)",
1225 "gravi.gravity_image", 60.);
1226 cpl_parameter_set_alias(p, CPL_PARAMETER_MODE_CLI,
"timeout");
1227 cpl_parameter_disable(p, CPL_PARAMETER_MODE_ENV);
1228 cpl_parameterlist_append(self, p);
1231 return CPL_ERROR_NONE;
1249 const char ** frame_tags,
1252 cpl_ensure (frameset, CPL_ERROR_NULL_INPUT, NULL);
1253 cpl_ensure (frame_tags, CPL_ERROR_NULL_INPUT, NULL);
1254 cpl_ensure (nb_tags>0, CPL_ERROR_ILLEGAL_INPUT, NULL);
1256 int nb_frame = cpl_frameset_get_size (frameset);
1257 cpl_frameset * output_frameset = cpl_frameset_new();
1260 for (
int i = 0; i < nb_frame; i++){
1262 cpl_frame * frame = cpl_frameset_get_position (frameset, i);
1263 const char * frame_tag = cpl_frame_get_tag (frame) ;
1266 for (
int j = 0; j < nb_tags; j++) {
1267 if (strcmp(frame_tag, frame_tags[j]) == 0) {
1268 cpl_frameset_insert (output_frameset, cpl_frame_duplicate(frame));
1275 return output_frameset;
1460 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1463 return cpl_parameter_get_double (tmp);
1465 cpl_msg_info (cpl_func,
"Could not find the parameter '%s':, use %f", name, def);
1472 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1475 return cpl_parameter_get_int (tmp);
1477 cpl_msg_info (cpl_func,
"Could not find the parameter '%s': use %i", name, def);
1484 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1487 return cpl_parameter_get_bool (tmp);
1489 cpl_msg_info (cpl_func,
"Could not find the boolean parameter '%s': use %s", name, (def==0?
"FALSE":
"TRUE"));
1496 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1499 return cpl_parameter_get_string (tmp);
1501 cpl_msg_info (cpl_func,
"Could not find the string parameter '%s': use %s", name, def);
1508 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1512 return cpl_parameter_get_double (tmp);
1514 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
"Could not find the parameter '%s':, use %f", name, def);
1521 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1525 return cpl_parameter_get_int (tmp);
1527 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
"Could not find the parameter '%s': use %i", name, def);
1534 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1538 return cpl_parameter_get_bool (tmp);
1540 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
"Could not find the boolean parameter '%s': use %s", name, (def==0?
"FALSE":
"TRUE"));
1547 const cpl_parameter * tmp = cpl_parameterlist_find_const(parlist, name);
1550 return cpl_parameter_get_string (tmp);
1552 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
"Could not find the string parameter '%s': use UNKNOWN", name);
1560 int nf = cpl_frameset_count_tags (frameset, tag);
1561 char * msg = cpl_sprintf (
"Need %i<#<%i '%s' in frameset (%i provided)", min, max, tag, nf);
1563 if (nf < min || nf > max) {
1564 cpl_msg_error (cpl_func,
"%s",msg);
1565 cpl_error_set_message (cpl_func, CPL_ERROR_ILLEGAL_INPUT,
"%s", msg);
1572 return (flag) ? CPL_ERROR_ILLEGAL_INPUT : CPL_ERROR_NONE;
#define GRAVI_VISPHI_SINGLE_CALIB
#define GRAVI_P2VMRED_SINGLE_CALIB
#define GRAVI_TF_SINGLE_CALIB
#define GRAVI_SINGLE_SCIENCE_RAW
#define GRAVI_TF_DUAL_CALIB
#define GRAVI_PIEZOTF_MAP
#define GRAVI_SINGLE_SKY_RAW
#define GRAVI_ASTRO_TARGET
#define GRAVI_P2VMRED_DUAL_CALIB
#define GRAVI_DIODE_POSITION
#define GRAVI_VIS_DUAL_SCIENCE
#define GRAVI_VIS_SINGLE_SCIENCE
#define GRAVI_MIRA_OUTPUT_PROCATG
#define GRAVI_DUAL_CALIB_RAW
#define GRAVI_BIASMASK_MAP
#define GRAVI_P2VMRED_SINGLE_SCIENCE
#define GRAVI_DUAL_SKY_RAW
#define GRAVI_WAVELAMP_MAP
#define GRAVI_PIEZOTF_RAW
#define GRAVI_DIAMETER_CAT
#define GRAVI_STATIC_PARAM
#define GRAVI_SINGLE_CALIB_RAW
#define GRAVI_VIS_DUAL_CALIB
#define GRAVI_DUAL_SCIENCE_RAW
#define GRAVI_VIS_SINGLE_CALIBRATED
#define GRAVI_MIRA_INPUT_PROCATG
#define GRAVI_VIS_SINGLE_CALIB
#define GRAVI_TF_DUAL_SCIENCE
#define GRAVI_TF_SINGLE_SCIENCE
#define GRAVI_ASTRO_CAL_PHASEREF
#define GRAVI_WAVELAMP_RAW
#define GRAVI_P2VMRED_DUAL_SCIENCE
#define GRAVI_VISPHI_DUAL_CALIB
#define GRAVI_VISPHI_TF_DUAL_CALIB
#define GRAVI_VIS_DUAL_CALIBRATED
#define GRAVI_VISPHI_TF_SINGLE_CALIB
cpl_msg_info(cpl_func, "Compute WAVE_SCAN for %s", GRAVI_TYPE(type_data))
cpl_parameter * gravi_parameter_add_debug_file(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_wavesc_data(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_met_pos(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_astro_file(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_vis_calib(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_profile(cpl_parameterlist *self)
Add profile parameters to the input parameter list.
int gravi_param_get_bool(const cpl_parameterlist *parlist, const char *name)
cpl_parameter * gravi_parameter_add_static_name(cpl_parameterlist *self)
cpl_error_code gravi_parameter_add_astrometry(cpl_parameterlist *self)
cpl_parameter * gravi_parameter_add_p2vmred_file(cpl_parameterlist *self)
cpl_parameter * gravi_parameter_add_metrology(cpl_parameterlist *self)
cpl_error_code gravi_parameter_add_rejection(cpl_parameterlist *self, int isCalib)
Add rejection parameters to the input parameter list.
cpl_frameset * gravi_frameset_extract_vis_science(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_fringe_data(cpl_frameset *frameset)
int gravi_param_get_bool_default(const cpl_parameterlist *parlist, const char *name, int def)
cpl_error_code gravi_parameter_add_image(cpl_parameterlist *self)
cpl_error_code gravi_parameter_add_compute_snr(cpl_parameterlist *self)
cpl_parameter * gravi_parameter_add_pcacalib(cpl_parameterlist *self)
Add pca calibration parameters to the input parameter list.
cpl_parameter * gravi_parameter_add_extract(cpl_parameterlist *self)
cpl_parameter * gravi_parameter_add_biasmethod(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_patch(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_astro_target(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_vis_file(cpl_parameterlist *self)
cpl_parameter * gravi_parameter_add_average_vis(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_wave_map(cpl_frameset *frameset)
const char * gravi_param_get_string(const cpl_parameterlist *parlist, const char *name)
cpl_frameset * gravi_frameset_extract_astro_swap(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_disp_data(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_dispvis_data(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_wave(cpl_parameterlist *self)
Add wavelength calibration parameters to the input parameter list.
cpl_frameset * gravi_frameset_extract_bad_map(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_pca(cpl_parameterlist *self)
Add pca parameters to the input parameter list.
cpl_error_code gravi_parameter_disable(cpl_parameter *p)
Disable a parameter.
cpl_frameset * gravi_frameset_extract_piezotf_data(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_tf_calib(cpl_frameset *frameset)
cpl_error_code gravi_check_frameset(cpl_frameset *frameset, const char *tag, int min, int max)
cpl_frameset * gravi_frameset_extract_science_data(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_flat_data(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_spectrum_file(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract(cpl_frameset *frameset, const char **frame_tags, int nb_tags)
Extract a list of tags from a frameset.
int gravi_param_get_int(const cpl_parameterlist *parlist, const char *name)
cpl_frameset * gravi_frameset_extract_pca_calib(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_biasmask_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_wave_data(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_preproc(cpl_parameterlist *self)
Add preprocessing parameters to the input parameter list.
cpl_parameter * gravi_parameter_add_force_uncertainties(cpl_parameterlist *self)
int gravi_param_get_int_default(const cpl_parameterlist *parlist, const char *name, int def)
cpl_frameset * gravi_frameset_extract_dark_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_p2vm_data(cpl_frameset *frameset)
Extract P2VM_RAW frame from the input frameset.
const char * gravi_param_get_string_default(const cpl_parameterlist *parlist, const char *name, const char *def)
cpl_frameset * gravi_frameset_extract_wavelamp_map(cpl_frameset *frameset)
cpl_error_code gravi_dfs_set_groups(cpl_frameset *set)
Set the group as RAW or CALIB in a frameset.
cpl_parameter * gravi_parameter_add_preproc_file(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_p2vmred_data(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_p2vm_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_sky_data(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_badpix(cpl_parameterlist *self)
Add badpix parameters to the input parameter list.
cpl_frameset * gravi_frameset_extract_static_param(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_wave_param(cpl_frameset *frameset)
double gravi_param_get_double(const cpl_parameterlist *parlist, const char *name)
cpl_error_code gravi_parameter_add_compute_vis(cpl_parameterlist *self, int isCalib)
cpl_frameset * gravi_frameset_extract_wavelamp_data(cpl_frameset *frameset)
cpl_parameter * gravi_parameter_add_biassub_file(cpl_parameterlist *self)
cpl_frameset * gravi_frameset_extract_astro_phaseref(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_flat_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_eop_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_diamcat_map(cpl_frameset *frameset)
cpl_frameset * gravi_frameset_extract_disp_map(cpl_frameset *frameset)
void gravity_print_banner(void)
cpl_frameset * gravi_frameset_extract_dark_data(cpl_frameset *frameset)
Extract DARK_RAW frame from the input frameset.
cpl_error_code gravi_parameter_add_compute_signal(cpl_parameterlist *self)
double gravi_param_get_double_default(const cpl_parameterlist *parlist, const char *name, double def)
Get the parameter from the parameter list.