For each individual measurement (during a fill and/or spin flip) which takes about 5-15 minutes, there is one line of entries in a text based A_results_db file. The content of each entry in A_results_db file can be divided into three parts. 1) Indexing. Polarization measurements are grouped according to a well defined period of time, and during this period of time the polarization of the beam is assumed to be constant, and there is no change in Compton Polarimeter. For example, gun re-cesiation, laser or collimator scans, change/cleaning in Compton optics marks the beginning and ending of these period. There are two numbers in this section. The format used during file creation and its explanation is as follows. // indexing fprintf(fd, "%4d ", run_period); A unique number defining the period. December run is started at 100. fprintf(fd, "%4d ", m->index); Index of individual measurements in this period. 2) Individual measurement details. During the on-line analysis, we observe the data points on the Compton screen as fill number changes or a flip occurs. This portion of the entry is dedicated the details of those points. // individual measurement fprintf(fd, "%15.6lf ", m->pol); Polarization value. fprintf(fd, "%15.6lf ", m->pol_err); Associated statistical error. fprintf(fd, "%15.6lf ", m->pol_chi2n); Chi square / (n.d.f) of the fit while extracting the polarization. fprintf(fd, "%15.3lf ", m->ped); Pedestal of the ADC spectra fprintf(fd, "%15.3lf ", m->ped_err); Associated statistical error. fprintf(fd, "%15.3lf ", m->ped_chi2n); Chi square / (n.d.f) of the Gaussian fit of the pedestals. fprintf(fd, "%15.3lf ", m->edg_0); Compton edge of the ADC spectrum for one Laser helicity state. fprintf(fd, "%15.3lf ", m->edg_err_0); Associated statistical error. fprintf(fd, "%15.3lf ", m->edg_chi2n_0); Chi square / (n.d.f) of the Compton edge function (uses a model). fprintf(fd, "%15.3lf ", m->edg_1); Compton edge of the ADC spectrum for the other Laser helicity state. fprintf(fd, "%15.3lf ", m->edg_err_1); Associated statistical error. fprintf(fd, "%15.3lf ", m->edg_chi2n_1); Chi square / (n.d.f) of the Compton edge function (uses a model). fprintf(fd, "%15.3lf ", m->edg); Average Compton edge (that corresponds 22.5 MeV). fprintf(fd, "%15.3lf ", m->edg_err); Statistical error of the above value. fprintf(fd, "%15.3lf ", m->Pcirc); Circular polarization of the laser. fprintf(fd, "%7d ", m->runno_i); Initial run number. fprintf(fd, "%7d ", m->runno_f); Final run number (note that a measurement may span two runs). fprintf(fd, "%7d ", m->fillno); Fill number. fprintf(fd, "%2d ", m->lambda_half); Wave-plate (lambda_half) state. 0 -> "-" , 1 -> "+" polarization. fprintf(fd, "%3d ", m->flip_count); Number of flips that has happened before beginning of this measurement. (Note that this number was never more than one for blast production data) fprintf(fd, "%2d ", m->flag_enough_statistics); Some bookkeeping for the compton_analyzer. fprintf(fd, "%2d ", m->flag_edge_found); Some bookkeeping for the compton_analyzer. fprintf(fd, "%2d ", m->flag_ped_found); Some bookkeeping for the compton_analyzer. fprintf(fd, "%2d ", m->flag_valid); Some bookkeeping for the compton_analyzer. fprintf(fd, "%2d ", m->bad_count); Some bookkeeping for the compton_analyzer. fprintf(fd, "%10ld ", m->t_i.tv_sec); fprintf(fd, "%06ld ", m->t_i.tv_usec); fprintf(fd, "%s ", ts2str_f(&(m->t_i), "%Y-%m-%d-%H-%M-%S")); Time stamp marking the beginning of this measurement. fprintf(fd, "%10ld ", m->t_f.tv_sec); fprintf(fd, "%06ld ", m->t_f.tv_usec); fprintf(fd, "%s ", ts2str_f(&(m->t_f), "%Y-%m-%d-%H-%M-%S")); Time stamp marking the end of this measurement. fprintf(fd, "%15.3lf ", m->beam_current_max); Maximum beam current for this measurement. fprintf(fd, "%15.3lf ", m->charge_tot); Total charge accumulated during this measurement. (not precise; 10 sec sampling.) fprintf(fd, "%12d ", m->trigger_tot); Total number of Compton triggers during this measurement. fprintf(fd, "%12.0lf ", m->good_triggers[0]); Valid triggers for state 0. fprintf(fd, "%12.0lf ", m->good_triggers[1]); Valid triggers for state 1. fprintf(fd, "%12.0lf ", m->good_triggers[2]); Valid triggers for state 2. fprintf(fd, "%12.0lf ", m->good_triggers[3]); Valid triggers for state 3. fprintf(fd, "%12.0lf ", m->bad_triggers[0]); Invalid triggers for state 0. fprintf(fd, "%12.0lf ", m->bad_triggers[1]); Invalid triggers for state 1. fprintf(fd, "%12.0lf ", m->bad_triggers[2]); Invalid triggers for state 2. fprintf(fd, "%12.0lf ", m->bad_triggers[3]); Invalid triggers for state 3. 3) Overall measurement for the run period. As said before, the polarization in a run period is assumed to be stable ("run period" is defined accordingly). In this portion of the entry the average polarization that has been extracted from the above measurements is presented. Thus for a given "run period" this portion of the entry is identical for each entry. It is repeated just for convenience of the parsing tool. // overall measurement fprintf(fd, "%10ld ", t_i.tv_sec); fprintf(fd, "%06ld ", t_i.tv_usec); fprintf(fd, "%s ", ts2str_f(&t_i, "%Y-%m-%d-%H-%M-%S")); Time stamp that marks the beginning of the run period. fprintf(fd, "%10ld ", t_f.tv_sec); fprintf(fd, "%06ld ", t_f.tv_usec); fprintf(fd, "%s ", ts2str_f(&t_f, "%Y-%m-%d-%H-%M-%S")); Time stamp that marks the end of the run period. fprintf(fd, "%15.6lf ", P_average); Average overall polarization for the run period. fprintf(fd, "%15.6lf ", P_average_sigma); Associated statistical error. fprintf(fd, "%15.6lf ", Flip_efficiency); Flip efficiency of the spin flipper. Always defined as a positive number. When the flipper is not used it is set to 1.0. fprintf(fd, "%15.6lf ", Flip_efficiency_sigma); Associated statistical error. fprintf(fd, "%15.6lf ", False_asym_corrected); The corrected false asymmetry found by using the flipper information. fprintf(fd, "%15.6lf ", False_asym_corrected_sigma); Associated statistical error. fprintf(fd, "%15.6lf ", False_asym_remain); The remaining false asymmetry (if any), after the correction by the spin flipper. fprintf(fd, "%15.6lf ", False_asym_remain_sigma); Associated statistical error. Note 1: Each time stamp is given in three entry. a) Unix second, b) + micro-seconds, c) date as a string starting from the most significant part (useful for sorting). Note 2: The recommended way of extracting the beam polarization from this DB is using the average polarization, as follows: First, find the entry according to initial and final time stamp time-window. If the spin flipper is not used, you can alternatively use the fill_number for this search. Note that there may be two states for the same fill number when the flipper is used. Then: ************************************************************** * * * P = P_average * (-1)^(lambda_half+1) * (-eff)^(flip_count) * * * ************************************************************** where, P_average : The average polarization presented in sect-3. eff : Flipper efficiency presented in sect-3. lambda_half: The lambda half for the entry found during the time stamp search. flip_count : Flip count for the entry found during the time stamp search. Taylan