bpmsimulation/generate_bpmsignal.c

Go to the documentation of this file.
00001 
00006 #include <bpm/bpm_simulation.h>
00007 
00008 int generate_bpmsignal( bpmconf_t *bpm, beamconf_t *beam, doublewf_t *rf ) {
00009 
00010   int i = 0;
00011   static char msg[80];
00012   complexwf_t *rf_compl;
00013   doublewf_t  *rf_im;
00014 
00015   if ( ! bpm || ! beam || ! rf ) {
00016     bpm_error( "Invalid pointer arguments in generate_bpmsignal(...)",
00017                __FILE__, __LINE__ );
00018     return BPM_FAILURE;
00019   }
00020 
00021   // reset the rf waveform
00022   doublewf_reset( rf );
00023 
00024   rf_compl = complexwf( rf->ns, rf->fs );
00025   rf_im    = doublewf(  rf->ns, rf->fs );
00026   
00027   // add all the modes
00028   for ( i=0; i<bpm->cav_model->nmodes; i++ ) {
00029     
00030     if ( add_mode_response( rf_compl, bpm, bpm->cav_model->mode[i], beam ) ) {
00031       sprintf( msg, "Cannot add response for mode %s in generate_bpmsignal", 
00032                bpm->cav_model->mode[i]->name );
00033       bpm_error( msg, __FILE__, __LINE__ );
00034       return BPM_FAILURE;
00035     }
00036 
00037   } /* for ( i=0; i<model->nmodes; i++ ) */
00038 
00039   complexwf_getreal( rf,    rf_compl );
00040   complexwf_getimag( rf_im, rf_compl );
00041   doublewf_add( rf, rf_im );
00042  
00043   complexwf_delete( rf_compl );
00044   doublewf_delete(  rf_im    );
00045 
00046   return BPM_SUCCESS;
00047 }

Generated on Thu Jan 10 10:18:04 2008 for libbpm by  doxygen 1.5.1