#include #include #include #include #include "nrutil.h" #include "nrutil.c" #include "nrfitting.c" #include "UVStruct.c" #include "UVCommon.c" int main(void) { int i, j, n; int n_wl, j_peak; float *wl, *nom_wl, *trans, **data, **rdata; float x_in, y_in, z_in; float bw; char st[20], in_file[20], out_file[20]; struct scan_header S; FILE *fp_in, *fp_out; bw = 2.0; printf("Filter Trans. Data File: "); scanf("%s", &in_file); printf("Filter Centroid Output File: "); scanf("%s", &out_file); fp_in = fopen(in_file, "r"); read_scan_header(fp_in, &S); printf("%d\t%d\n", S.n_row, S.n_col); wl = vector(1, S.n_row); nom_wl = vector(1, 18); trans = vector(1, S.n_row); data = matrix(1, S.n_row, 1, 19); rdata = matrix(1, S.n_row, 1, 2); for(i = 1; i <= 18; i++){ nom_wl[i] = 290.0 + (i - 1)*2.0; } read_data(fp_in, S.n_row, S.n_col, data); fclose(fp_in); fp_out = fopen(out_file, "w"); fprintf(fp_out, "Nominal\tPeak\t\tCentroid\t\t\t\t\t\tBandwidth\n"); fprintf(fp_out, "Wavelength\tWavelength\tTrans.\t0.5\t0.25\t0.10\tBW\tALL\tFWHM\tFWHM\n"); fprintf(fp_out, "(nm)\t(nm)\t\t(nm)\t(nm)\t(nm)\t(nm)\t(nm)\t(nm)\n\n"); for(i = 1; i <= S.n_row; i++){ rdata[i][1] = data[i][1]; } for(i = 2; i <= 19; i++){ for(j = 1; j <= S.n_row; j++){ rdata[j][2] = data[j][i]; /*printf("%.2f\t%f\n", wl[j], trans[j]);*/ } j_peak = find_peak(S.n_row, bw, nom_wl[i-1], rdata); printf("peak wl = %.2f\t%.2f\t trans = %f\n", nom_wl[i-1], rdata[j_peak][1], rdata[j_peak][2]); fprintf(fp_out, "%.2f\t%.2f\t%.6f\t", nom_wl[i-1], rdata[j_peak][1], rdata[j_peak][2]); calc_filter_cents(fp_out, j_peak, S.n_row, bw, rdata); } fclose(fp_out); return 1; }