00001
00006 #include <stdio.h>
00007 #include <bpm/bpm_messages.h>
00008 #include <bpm/bpm_process.h>
00009
00010 int correct_gain( bpmproc_t *proc, bpmcalib_t *cal, unsigned int mode ) {
00011
00012 if ( ! proc || ! cal ) {
00013 bpm_error( "Invalid pointer arguments in correct_gain(...)", __FILE__, __LINE__ );
00014 return BPM_FAILURE;
00015 }
00016
00017 if ( proc->ddc_success ) {
00018
00019
00020
00021 if ( ( mode & PROC_CORR_AMP ) && ( fabs( proc->ddc_ct_amp ) > 0. ) ) {
00022 proc->ddc_amp *= cal->ddc_ct_amp / proc->ddc_ct_amp;
00023 }
00024
00025
00026 if ( mode & PROC_CORR_PHASE ) {
00027 proc->ddc_phase -= ( proc->ddc_ct_phase - cal->ddc_ct_phase );
00028 }
00029
00030 }
00031
00032
00033 if ( proc->fit_success ) {
00034
00035
00036 if ( ( mode & PROC_CORR_AMP ) && ( fabs( proc->fit_ct_amp ) > 0. ) ) {
00037 proc->fit_amp *= cal->fit_ct_amp / proc->fit_ct_amp;
00038 }
00039
00040 if ( mode & PROC_CORR_PHASE ) {
00041 proc->fit_phase -= ( proc->fit_ct_phase - cal->fit_ct_phase );
00042 }
00043 }
00044
00045 return BPM_SUCCESS;
00046 }