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 #define NMAX_MODES  10
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   
00062 
00063   typedef struct bpmconf   bpmconf_t;   
00064   typedef struct bpmsignal bpmsignal_t; 
00065   typedef struct bpmcalib  bpmcalib_t;  
00066   typedef struct bpmproc   bpmproc_t;   
00067   typedef struct beamconf  beamconf_t;  
00068   typedef struct bpmmode   bpmmode_t;   
00069   typedef struct rfmodel   rfmodel_t;
00070   
00071 
00075   struct bpmconf {
00076     char     name[20];              
00078     enum bpmtype_t  cav_type;         
00079     enum bpmpol_t   cav_polarisation; 
00080     enum bpmphase_t cav_phasetype;    
00082     rfmodel_t *cav_model;
00083     double     cav_length;          
00085     double     cav_freq;            
00086     double     cav_decaytime;       
00087     double     cav_phase;           
00088     double     cav_iqrotation;      
00089     double     cav_chargesens;      
00090     double     cav_possens;         
00091     double     cav_tiltsens;        
00093     double     rf_LOfreq;           
00095     double     digi_trigtimeoffset; 
00096     double     digi_freq;           
00097     int        digi_nbits;          
00098     int        digi_nsamples;       
00099     double     digi_ampnoise;       
00100     int        digi_voltageoffset;  
00101     double     digi_phasenoise;     
00104     double     geom_pos[3];         
00105     double     geom_tilt[3];        
00107     int        ref_idx;             
00108     int        diode_idx;           
00109   };
00110 
00111   
00115   struct bpmsignal {
00116     int             *wf;      
00117     int              ns;      
00118   };
00119 
00120 
00124   struct bpmcalib {
00125     double   freq;            
00126     double   tdecay;          
00127     double   ddcfiltBW;       
00128     double   ddcepsFilt;      
00129     double   t0Offset;        
00130     double   IQphase;         
00131     double   posscale;        
00132     double   slopescale;      
00133   };
00134 
00138   struct bpmproc {
00139     
00140     double   ampnoise;        
00141     double   voltageoffset;   
00143     double   t0;              
00145     double **ddcwf;           
00146     double **fftwf;           
00148     int      fft_success;     
00149     double   fft_freq;        
00150     double   fft_tdecay;      
00152     int      ddc_success;     
00153     double   ddc_Q;           
00154     double   ddc_I;           
00155     double   ddc_amp;         
00156     double   ddc_phase;       
00157     double   ddc_tdecay;      
00158     double   ddc_pos;         
00159     double   ddc_slope;       
00161     int      fit_success;     
00162     double   fit_Q;           
00163     double   fit_I;           
00164     double   fit_amp;         
00165     double   fit_phase;       
00166     double   fit_freq;        
00167     double   fit_tdecay;      
00168     double   fit_pos;         
00169     double   fit_slope;       
00170   };
00171   
00172   
00176   struct beamconf {
00177     double   energy;          
00178     double   sig_energy;      
00179     double   charge;          
00180     double   sig_charge;      
00182     double   bunchlength;     
00184     double   arrival_time;    
00186     double   beampos[2];      
00187     double   beamslope[2];    
00188     double   bunchtilt[2];     
00190     double   bpmhit[3];       
00191     double   bpmslope[2];     
00192     double   bpmtilt[2];      
00193   };
00194   
00195   
00196 
00201   struct bpmmode {
00202     char          name[20];     
00203     double        frequency;    
00204     double        Q;            
00205     int           order;        
00206     enum bpmpol_t polarisation; 
00207     double        sensitivity;  
00208   };
00209 
00213   struct rfmodel {
00214     char       name[20];          
00215     int        nmodes;            
00216     bpmmode_t *mode[NMAX_MODES];  
00217   };
00218 
00219 
00220 
00221 
00222 /* -----------------------------------------------------------------------------
00223    function prototypes and declarations
00224    -------------------------------------------------------------------------- */
00225   EXTERN int bpm_verbose; 
00282   EXTERN int load_bpmconf( const char *fname, bpmconf_t **conf, int *num_conf );
00283 
00284   
00301   EXTERN int get_header( FILE *file, double *version, int *num_structs );
00302 
00303 
00320   EXTERN int load_struct( FILE *file, char ***arg_list, char ***val_list, int *num_args );
00321 
00322   
00332   EXTERN int save_signals( char *fname, bpmsignal_t *sigs, int num_evts );
00333 
00334 
00343   EXTERN int load_signals( char *fname, bpmsignal_t **sigs );
00344   
00345 
00346   
00347 
00348 #ifdef __cplusplus
00349 }
00350 #endif
00351 
00352 
00353 #endif /* #ifndef BPMINTERFACE_H__ */
00354 
00355 /* ================================ end of file ============================= */

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