#include "opt_parameter.h" #include #include #include #include #include "Database.h" #include "Peak.h" extern database db; // using namespace std; void compare_peak(int itr, double* sum_x, double* sum_y, double* sum_phi, double* sum_theta, double* sum_chi, int* sum_event, double beamx, double beamy) { // // first open the file for writing peaks // char fname[15]; fname[0]=itr + '0'; switch (db.fit_indx) { case 0: strcpy(fname+1,"_compare_off"); break; case 1: strcpy(fname+1,"_compare_ytg"); break; case 3: strcpy(fname+1,"_compare_ang"); break; default: // cout << "ERROR: undefined index: " << db.fit_indx // << "in compare_peak. Compare file not written." << endl; return; } FILE* results=fopen(fname ,"wb"); // file to write peak results switch (db.fit_indx) { case 0: // offsets: fprintf(results,"peak No. y_0 y_av th_0" " th_av ph_0 ph_av Chi_peak \n"); for(int peak=1;peak<=db.npeak; peak++) { // // Calculate the survey values for the average beam position // Peak thispeak(peak); thispeak.set(beamx, beamy, sum_x[peak]/sum_event[peak]); if(sum_event[peak] != 0 ) { fprintf(results," %i %6.2e %6.2e %6.2e %6.2e" " %6.2e %6.2e %6.2e \n ", peak, thispeak.ypeak(), sum_y[peak]/sum_event[peak], thispeak.thetapeak(), sum_theta[peak]/sum_event[peak], thispeak.phipeak(), sum_phi[peak]/sum_event[peak], sum_chi[peak]/sum_event[peak]); } } break; case 1: // y_tg fprintf(results," \n"); fprintf(results,"peak No. y_0 y_av Chi_peak \n"); for(int peak=1;peak<=db.npeak; peak++) { // // Calculate the survey values for the average beam position // Peak thispeak(peak); thispeak.set(beamx, beamy, sum_x[peak]/sum_event[peak]); if(sum_event[peak] != 0 ) { fprintf(results," %i %6.2e %6.2e %6.2e \n ", peak, thispeak.ypeak(), sum_y[peak]/sum_event[peak], sum_chi[peak]/sum_event[peak]); } } break; case 3: // angles fprintf(results," \n"); fprintf(results,"peak No. th_0 th_av ph_0 ph_tg Chi_peak \n"); for(int peak=1;peak<=db.npeak; peak++) { // // Calculate the survey values for the average beam position // // if(sum_event[peak] != 0 ) { cout << peak << " " << sum_x[peak]/sum_event[peak] << endl; Peak thispeak(peak); thispeak.set(beamx, beamy, sum_x[peak]/sum_event[peak]); fprintf(results," %i %6.2e %6.2e %6.2e " "%6.2e %6.2e \n ", peak, thispeak.thetapeak(), sum_theta[peak]/sum_event[peak], thispeak.phipeak(), sum_phi[peak]/sum_event[peak], sum_chi[peak]/sum_event[peak]); } } break; } fclose(results); }