int main (int argc, char **argv) { VERBOSE = 1; struct params p; processArgsAnalyze (argc, argv, p); gsl_matrix *atomsNonCrop = ReadFitsImg_gsl_matrix (p.atomsfile); //gsl_matrix *noatoms = ReadFitsImg_gsl_matrix (p.noatomsfile); gsl_matrix *atoms = cropImage (p.reportfile, atomsNonCrop); //gsl_matrix *cnoatoms = cropImage (p.reportfile, noatoms); double com[2]; COM (atoms, com); cout << "COM_X = " << com[0] << endl; cout << "COM_Y = " << com[1] << endl; setINI_num (p.reportfile, "CPP", "COM_X", com[0]); setINI_num (p.reportfile, "CPP", "COM_Y", com[1]); gsl_matrix_free (atomsNonCrop); gsl_matrix_free (atoms); }
int main (int argc, char **argv) { struct params p; processArgsBasler (argc, argv, p); VERBOSE = p.verbose; Basler *b = new Basler (&p); b->LoadFLUOR (); b->ComputeColumnDensity (); b->Fit2DGauss (); setINI_num (p.reportfile, "FLUORCPP", "offset", b->gaus2dfit[5] * b->GetNPixels ()); double nfit = b->gaus2dfit[4] * 3.14159 * b->gaus2dfit[1] * b->gaus2dfit[3]; double peakd = b->gaus2dfit[4] / (pow (M_PI * b->gaus2dfit[1] * b->gaus2dfit[3], 0.5)) / pow (p.magnif, 3); // cm^-3 setINI_num (p.reportfile, "FLUORCPP", "nfit", nfit); setINI_num (p.reportfile, "FLUORCPP", "peakd", peakd); setINI_num (p.reportfile, "FLUORCPP", "ax0w", b->gaus2dfit[1] * p.magnif); setINI_num (p.reportfile, "FLUORCPP", "ax1w", b->gaus2dfit[3] * p.magnif); setINI_num (p.reportfile, "FLUORCPP", "ax0w_err", b->gaus2dfit_err[1] * p.magnif); setINI_num (p.reportfile, "FLUORCPP", "ax1w_err", b->gaus2dfit_err[3] * p.magnif); setINI_num (p.reportfile, "FLUORCPP", "ax0c", b->abs_ci); setINI_num (p.reportfile, "FLUORCPP", "ax1c", b->abs_cj); cout << p. shotnum << " nfit = " << nfit << setprecision (3) << " , peakd = " << peakd << " , sizes = (" << b->gaus2dfit[1] * p. magnif << " +/- " << b->gaus2dfit_err[1] * p.magnif << "," << b->gaus2dfit[3] * p.magnif << " +/- " << b->gaus2dfit_err[3] * p. magnif << ") , center = (" << setiosflags (ios:: fixed) << setprecision (0) << b->abs_ci << "," << b->abs_cj << ")" << endl; cout << resetiosflags (ios::fixed) << setprecision (6); // f->ComputeRadialAxialDensity (); return EXIT_SUCCESS; }
int main (int argc, char **argv) { struct params p; processArgsAnalyze (argc, argv, p); VERBOSE = p.verbose; init_params (&p); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "phcdet", p.det); Fermions *f = new Fermions (&p); f->LoadFITS (); // LoadFITS already computes the column density setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "maxOD", f->maxOD); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "maxPHI", f->maxPHI); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "maxPHCSIG", f->maxPHCSIG); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "maxCD", f->maxCD); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "maxI", f->maxI); if (p.onlyCD) { f->SaveColumnDensity (); return EXIT_SUCCESS; } // f->FindMoments (); if (!p.keeproi) { f->MinimalCrop (5.0); } f->Fit2DGauss (p.gaus2d_mott); f->SaveColumnDensity (); if (!p.keeproi) { f->MinimalCrop (3.5); f->Fit2DGauss (); f->SaveColumnDensity (); } // f->FitScatt2DGauss (); // f->FitProbe2DGauss (); //Get center of cloud with respect to the Andor full frame f->abs_ci += f->gaus2dfit[0]; f->abs_cj += f->gaus2dfit[2]; setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "offset", f->gaus2dfit[5] * f->GetNPixels ()); if (p.gaus2d_mott) { setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "nfit_mott", f->nfit_mott); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "r0_mott", f->gaus2dfit_mott[5]); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "peakd_mott", f->peakd_mott); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax0w_mott", f->gaus2dfit_mott[1] * p.magnif); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax1w_mott", f->gaus2dfit_mott[3] * p.magnif); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax0c_mott", f->abs_ci - f->gaus2dfit[0] + f->gaus2dfit_mott[0]); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax1c_mott", f->abs_cj - f->gaus2dfit[2] + f->gaus2dfit_mott[2]); } setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "nfit", f->nfit); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "nfit_err", f->nfit_err); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "peakd", f->peakd); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "peakd_sph", f->peakd_sph); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax0w", f->gaus2dfit[1] * p.magnif); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax1w", f->gaus2dfit[3] * p.magnif); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax0c", f->abs_ci); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ax1c", f->abs_cj); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "TF", f->TF); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ph_per_at", f->Tsp / f->nfit); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "peak_cd", f->gaus2dfit[4]); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "photons_in_pulse", f->Tp0); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "alphastar", p.alphastar); f->GetAzimuthalAverageEllipse (); if (p.fermiazimuth) { //f->GetAzimuthalAverage (); f->FitAzimuthalFermi (); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "n0_az", f->n0_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "BetaMu_az", f->BetaMu_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "r_az", f->r_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "B_az", f->B_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "mx_az", f->mx_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "TF_az", f->TF_az); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "T_az", f->T_az); } if (p.fermi2d) { f->Fit2DFermi (); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "n0_Fermi", f->n0); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "BetaMU_Fermi", f->BetaMu); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ri_Fermi", f->ri_Fermi); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "rj_Fermi", f->rj_Fermi); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "ci_Fermi", f->ci_Fermi); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "cj_Fermi", f->cj_Fermi); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "B_Fermi", f->B_Fermi); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "TF_2d", f->TF_2d); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "T_2d_rd", f->T_2d_rd); setINI_num (p.reportfile, p.andor2 ? "CPP2" : "CPP", "T_2d_ax", f->T_2d_ax); } if (p.fitfermi1D || p.fermiazimuth || p.fermi2d || true) { f->ComputeIntegrated1DDensity (); f->MakePlots (); } printf ("%s %sN = %.2e%s", p.shotnum.c_str (), KCYN, f->nfit, KNRM); //Print number if (f->nfit_err * 50. > f->nfit) { printf ("\nNumber determination uncertainty might be too high: N = %.2e +/- %.0e\n", f->nfit, f->nfit_err); } if (!p.phc && !p.fluor) { //Print number from scattered photons //printf (", Nsp = %.2e", f->Nsp); //Print total number of photons in probe pulse //printf (", Ph = %.2e", f->Tp0); //Print average number of photons scattered per atom printf (", Ph/At = %.0f", f->Tsp / f->nfit); //Print peak density printf (", n = %.2e", f->peakd); //Print peak density printf (", %sn_sph = %.2e%s", KMAG, f->peakd_sph, KNRM); //Print axial size printf (", ax0w = %.1f +/- %.1f", f->gaus2dfit[1] * p.magnif, f->gaus2dfit_err[1] * p.magnif); //Print center printf (", %sc = (%.0f,%.0f)%s", KGRN, f->abs_ci, f->abs_cj, KNRM); //Print max intensity //printf (", Imax = %.2f", f->maxI); //Print max intensity smoothed //printf (", Imax(smoothed) = %.2f", f->maxIsmooth); //Print average intensity //printf (", Iave = %.2f", f->aveI); //Print average intensity printf (", I/Isat = %.2f", f->aveIweighted); //Print max optical density printf (", ODmax = %.1f", f->maxOD); //Print max column density printf (", CDmax = %.1f", f->maxCD); } else if (p.fluor || p.Nframes == 2) { printf (", MAX Counts/Px = %.1f", f->maxCD); //Print axial size printf (", ax0w = %.1f +/- %.1f", f->gaus2dfit[1] * p.magnif, f->gaus2dfit_err[1] * p.magnif); //Print center printf (", c = (%.0f,%.0f)", f->abs_ci, f->abs_cj); //Print range of counts in atoms and noatoms frames printf (", atoms:(%d to %d), noatoms:(%d to %d)", (int) f->minCA, (int) f->maxCA, (int) f->minCN, (int) f->maxCN); } else { //Print total number of photons in probe pulse printf (", Ph = %.2e", f->Tp0); //Print peak density printf (", n = %.2e", f->peakd); //Print peak density printf (", %sn_sph = %.2e%s", KMAG, f->peakd_sph, KNRM); //Print axial size printf (", ax0w = %.1f +/- %.1f", f->gaus2dfit[1] * p.magnif, f->gaus2dfit_err[1] * p.magnif); //Print center printf (", %sc = (%.0f,%.0f)%s", KGRN, f->abs_ci, f->abs_cj, KNRM); //Print max intensity //printf (", Imax = %.2f", f->maxI); //Print average intensity printf (", I/Isat = %.2f", f->aveIweighted); //Print max phase shift printf (", PHImax = %.3f", f->maxPHI); //Print max phase-contrast signal printf (", SIGmax = %.3f", f->maxPHCSIG); //Print max column density printf (", CDmax = %.1f", f->maxCD); //Print sqrt(N)/n parameter printf (", %ssqrt(N)/n = %.2e%s", KYEL, sqrt (f->nfit) / f->peakd_sph, KNRM); } // printf // ("%s N = %.2e +/- %.0e, n = %.2e , ax0w = %.1f +/- %.1f, c = (%.0f,%.0f), I_max = %.2f, OD_max = %.1f", // p.shotnum.c_str (), f->nfit, f->nfit_err, f->peakd, // f->wi_1e * p.magnif, f->gaus2dfit_err[1] * p.magnif, f->abs_ci, // f->abs_cj, f->maxI, f->maxOD); if (p.fermi2d) printf (", T/TF_2d = %.2f, z = %.2f, f(z) = %.2f", f->TF_2d, f->Fugacity_Fermi, f->f_Fermi); if (p.fermiazimuth) printf (", T/TF_az = %.2f, z = %.2f, f(z) = %.2f", f->TF_az, f->Fugacity_az, f->f_az); printf ("\n"); /* double pos[2]; double cts = img_counts (signal); double peak = img_peak (signal, pos); setINI_num (p.reportfile, p.andor2?"CPP2":"CPP", "peak", peak); setINI_num (p.reportfile, p.andor2?"CPP2":"CPP", "ipeak", pos[0]); setINI_num (p.reportfile, p.andor2?"CPP2":"CPP", "jpeak", pos[1]); cout << "#" << p. shotnum << " Counts=" << img_counts (signal) << " Peak=" << peak << endl; */ return EXIT_SUCCESS; }