bpminterface/bpm_interface.h

Go to the documentation of this file.
00001 
00014 #ifndef BPMINTERFACE_H__
00015 #define BPMINTERFACE_H__
00016 
00017 /* -----------------------------------------------------------------------------
00018 // includes
00019 // -------------------------------------------------------------------------- */
00020 #include <stdio.h>
00021 #include <stdlib.h>
00022 #include <string.h>
00023 #include <bpm/bpm_defs.h>
00024 
00025 /* -----------------------------------------------------------------------------
00026 // macro definitions
00027 // -------------------------------------------------------------------------- */
00028 
00029 
00030 /* -----------------------------------------------------------------------------
00031 // typedefs, enums and other declarations
00032 // -------------------------------------------------------------------------- */
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00040   enum bpmtype_t  { 
00041     diode,    
00042     monopole, 
00043     dipole    
00044   };
00045   
00049   enum bpmpol_t   { 
00050     horiz, 
00051     vert   
00052   };
00053   
00057   enum bpmphase_t { 
00058     randomised,  
00059     locked       
00060   };
00061   
00067   enum rffiltertype_t { 
00068     nofilter,                
00069     butterworth_low_pass,    
00070     butterworth_band_pass,   
00071     butterworth_high_pass    
00072   };
00073 
00074   
00075   typedef struct bpmconf   bpmconf_t;   
00076   typedef struct bpmsignal bpmsignal_t; 
00077   typedef struct bpmcalib  bpmcalib_t;  
00078   typedef struct bpmproc   bpmproc_t;   
00079   typedef struct beamconf  beamconf_t;  
00085   struct bpmconf {
00086     char     name[20];            
00088     enum bpmtype_t      cav_type;           
00089     enum bpmpol_t       cav_polarisation;   
00090     enum bpmphase_t     cav_phasetype;      
00092     double   cav_freq;            
00093     double   cav_decaytime;       
00094     double   cav_phase;           
00095     double   cav_iqrotation;      
00096     double   cav_chargesens;      
00097     double   cav_possens;         
00098     double   cav_tiltsens;        
00100     double   rf_LOfreq;           
00101     enum rffiltertype_t rf_filtertype; 
00102     int      rf_nfiltpars;
00103     double  *rf_filterpars;       
00104     double   rf_gain;             
00106     double   digi_trigtimeoffset; 
00107     double   digi_freq;           
00108     int      digi_nbits;          
00109     int      digi_nsamples;       
00110     double   digi_ampnoise;       
00111     int      digi_voltageoffset;  
00112     double   digi_phasenoise;     
00115     double   geom_pos[3];         
00116     double   geom_tilt[3];        
00118     int      ref_idx;             
00119     int      diode_idx;           
00120   };
00121 
00122   
00126   struct bpmsignal {
00127     int             *wf;      
00128     int              ns;      
00129   };
00130 
00131 
00135   struct bpmcalib {
00136     double   freq;            
00137     double   tdecay;          
00138     double   ddcfiltBW;       
00139     double   ddcepsFilt;      
00140     double   t0Offset;        
00141     double   IQphase;         
00142     double   posscale;        
00143     double   slopescale;      
00144   };
00145 
00149   struct bpmproc {
00150     
00151     double   ampnoise;        
00152     double   voltageoffset;   
00154     double   t0;              
00156     double **ddcwf;           
00157     double **fftwf;           
00159     int      fft_success;     
00160     double   fft_freq;        
00161     double   fft_tdecay;      
00163     int      ddc_success;     
00164     double   ddc_Q;           
00165     double   ddc_I;           
00166     double   ddc_amp;         
00167     double   ddc_phase;       
00168     double   ddc_tdecay;      
00169     double   ddc_pos;         
00170     double   ddc_slope;       
00172     int      fit_success;     
00173     double   fit_Q;           
00174     double   fit_I;           
00175     double   fit_amp;         
00176     double   fit_phase;       
00177     double   fit_freq;        
00178     double   fit_tdecay;      
00179     double   fit_pos;         
00180     double   fit_slope;       
00181   };
00182   
00183   
00187   struct beamconf {
00188     double   energy;          
00189     double   sig_energy;      
00190     double   charge;          
00191     double   sig_charge;      
00193     double   arrival_time;    
00195     double   beampos[2];      
00196     double   beamslope[2];    
00198     double   bpmhit[3];       
00199     double   bpmtilt[3];      
00200   };
00201   
00202   
00203 /* -----------------------------------------------------------------------------
00204    function prototypes and declarations
00205    -------------------------------------------------------------------------- */
00206   EXTERN int bpm_verbose; 
00266   EXTERN int load_bpmconf( const char *fname, bpmconf_t **conf, int *num_conf );
00267 
00268   
00285   EXTERN int get_header( FILE *file, double *version, int *num_structs );
00286 
00287 
00304   EXTERN int load_struct( FILE *file, char ***arg_list, char ***val_list, int *num_args );
00305 
00306   
00316   EXTERN int save_signals( char *fname, bpmsignal_t *sigs, int num_evts );
00317 
00318 
00327   EXTERN int load_signals( char *fname, bpmsignal_t **sigs );
00328   
00329 
00330   
00331 
00332 #ifdef __cplusplus
00333 }
00334 #endif
00335 
00336 
00337 #endif /* #ifndef BPMINTERFACE_H__ */
00338 
00339 /* ================================ end of file ============================= */

Generated on Fri Nov 9 21:17:10 2007 for libbpm by  doxygen 1.5.1