void StarCatalog::writeAscii(std::string file, std::string delim) const { Assert(int(_id.size()) == size()); Assert(int(_pos.size()) == size()); Assert(int(_sky.size()) == size()); Assert(int(_noise.size()) == size()); Assert(int(_flags.size()) == size()); Assert(int(_mag.size()) == size()); Assert(int(_sg.size()) == size()); Assert(int(_objsize.size()) == size()); Assert(int(_is_star.size()) == size()); std::ofstream fout(file.c_str()); if (!fout) { throw WriteException("Error opening stars file"+file); } Form sci8; sci8.sci().trail(0).prec(8); Form fix3; fix3.fix().trail(0).prec(3); Form fix6; fix6.fix().trail(0).prec(6); const int ntot = size(); for (int i=0; i<ntot; ++i) { fout << _id[i] << delim << fix3(_pos[i].getX()) << delim << fix3(_pos[i].getY()) << delim << fix3(_sky[i]) << delim << sci8(_noise[i]) << delim << _flags[i] << delim << fix3(_mag[i]) << delim << fix3(_sg[i]) << delim << fix6(_objsize[i]) << delim << _is_star[i] << delim << std::endl; } }
void PsfCatalog::writeAscii(std::string file, std::string delim) const { Assert(int(_id.size()) == size()); Assert(int(_pos.size()) == size()); Assert(int(_sky.size()) == size()); Assert(int(_noise.size()) == size()); Assert(int(_flags.size()) == size()); Assert(int(_nu.size()) == size()); Assert(int(_psf.size()) == size()); const int npsf = size(); std::ofstream fout(file.c_str()); if (!fout) { throw WriteException("Error opening psf file"+file); } Form sci8; sci8.sci().trail(0).prec(8); Form fix3; fix3.fix().trail(0).prec(3); Form fix6; fix6.fix().trail(0).prec(3); for(int i=0;i<npsf;++i) { fout << _id[i] << delim << fix3(_pos[i].getX()) << delim << fix3(_pos[i].getY()) << delim << fix3(_sky[i]) << delim << sci8(_noise[i]) << delim << _flags[i] << delim << fix3(_nu[i]) << delim << _psf[i].getOrder() << delim << fix6(_psf[i].getSigma()); const int ncoeff = _psf[i].size(); for(int j=0;j<ncoeff;++j) { fout << delim << sci8(_psf[i](j)); } fout << std::endl; } }
int main() { cout << setiosflags(ios::uppercase); //ofstream dout("RegE2_MP.out"); //dout << setiosflags(ios::uppercase); mp_init(); double s_in, h_in, b1_in, b2_in, db, dfactor, dpi, x1_in, x2_in, dxi; int N, m, Nb; dpi = 4.0 * atan(1.0); mp_real pi = mppic; // pi aus der Bibliothek !!! mp_real pi2 = pi * pi; static mp_real factor; mp_real b, b1, b2, bstep, x0, s, h, x1, x2, xi; /* Parameter als doubles einlesen */ cin >> b1_in >> b2_in >> Nb; cin >> s_in >> h_in >> N; cin >> x1_in >> x2_in >> m >> dxi; /* Konversion: double -> mp_real */ b1 = mp_real(b1_in); b2 = mp_real(b2_in); s = mp_real(s_in); h = mp_real(h_in); x1 = mp_real(x1_in); x2 = mp_real(x2_in); xi = mp_real(dxi); mp_real step = (x2 - x1)/m; bstep = (b2 -b1)/mp_real(Nb); cout << "+++ Precision = " << mpipl << " +++" << endl; cout << "b1 = " << b1 ; cout << "b2 = " << b2 ; cout << "hb = " << bstep; cout << "s = " << s; cout << "h = " << h; cout << "N = " << N << endl; cout << '\v' ; cout << "x1 = " << x1; cout << "x2 = " << x2; cout << "m = " << m << endl; cout << "xi = " << dxi << endl; cout << "xh = " << step; cout << "xmax = " << h * N << endl; //cout << "dfaktor = " <<dfactor << endl; //cout << "Faktor = " <<factor << endl; String data = "Data-N" ; data = data + strdup(fix3(N)) + "-xb" +strdup(fix3(h_in*N)) + ".out"; ofstream fout(data()); cout << "*** Begin: Write Data ***" << endl; for(int j = 0; j <= m; j++) { x0 = (j * h) - (h*N); mp_real datamp = mpe2(x0,xi); mp_real fexaktmp = mpe2exakt(x0); mp_real Errormp = datamp - fexaktmp; mp_real Errorrelmp = 100.0 * (abs(Errormp)/abs(fexaktmp)); double data = dble(datamp); double fexakt = dble(fexaktmp); double Error = dble(Errormp); double Errorrel = dble(Errorrelmp); double xd0 = dble(x0); (ostream&) fout << xd0 << '\t' << fexakt << '\t' << data << '\t' << Error << '\t' << Errorrel << endl; } cout << "*** End : Write Data ***" << endl; mp_real Regtheo_mp; mp_real RegSol_mp, RelError_mp; double xod, RegSol, Regtheo, RelError; /* if(Control == 1) { cout << " *** Beginn Testrechnung *** " << endl; x0 = x1; s = x0; Regpure_mp = mptrapez(mpkernpurereg,x0,b,s,h,N); Regpure_mp *= factor; Regtheo_mp = mpRegexakt(x0,b); RelNumerror_mp = abs(Regpure_mp - Regtheo_mp)/abs(Regtheo_mp); RelNumerror_mp *= 100.0; cout << "x0 = " << x0; cout << Regpure_mp << Regtheo_mp << RelNumerror_mp; x0 = mp_real(0.0); s = x0; Regpure_mp = mptrapez(mpkernpurereg,x0,b,s,h,N); Regpure_mp *= factor; Regtheo_mp = mpRegexakt(x0,b); RelNumerror_mp = abs(Regpure_mp - Regtheo_mp)/abs(Regtheo_mp); RelNumerror_mp *= 100.0; cout << "x0 = " << x0; cout << Regpure_mp << Regtheo_mp << RelNumerror_mp; x0 = x2; s = x0; Regpure_mp = mptrapez(mpkernpurereg,x0,b,s,h,N); Regpure_mp *= factor; Regtheo_mp = mpRegexakt(x0,b); RelNumerror_mp = abs(Regpure_mp - Regtheo_mp)/abs(Regtheo_mp); RelNumerror_mp *= 100.0; cout << "x0 = " << x0; cout << Regpure_mp << Regtheo_mp << RelNumerror_mp; cout << " *** End Testrechnung *** " << endl; } */ cout << '\v' ; cout << " *** Beginn PureRegularisation *** " << endl; for(int jj=0; jj <=Nb; jj++) { b = b1 + jj * bstep; db = dble(b); String reg = "RegGaussE2_MP-N" ; reg = reg + strdup(fix3(N)) + "-xb" + strdup(fix3(x2_in)) + "-b" + strdup(fix3(db)) + ".out"; ofstream out(reg()); /* Vorfaktor */ factor = mp_real(2.0)*b/power(pi,mp_real(1.5)); factor *= exp(mp_real(0.25) * pi2 * b * b); dfactor = 2.0 * (db/pow(dpi,1.5)) * exp(db*db*dpi*dpi*.25); cout << " +++ b = " << db << " ; j = " << jj << " +++" << endl; cout << '\v' ; for(int j = 0; j <= m; j++) { x0 = x1 + j * step; s = x0; RegSol_mp = mptrapezxi(mpkern,x0,b,xi,s,h,N); RegSol_mp *= factor; Regtheo_mp = mpRegexakt(x0,b); RelError_mp = abs(RegSol_mp - Regtheo_mp)/abs(Regtheo_mp); RelError_mp *= 100.0; /* Konversion mp_real -> double */ xod = dble(x0); RegSol = dble(RegSol_mp); Regtheo = dble(Regtheo_mp); RelError = dble(RelError_mp); cout << x0 << Regtheo_mp << RegSol_mp << RelError_mp << endl; (ostream&) out << xod << '\t' << Regtheo << '\t' << RegSol << '\t' << RelError << endl; } } return 0; }
void ShearCatalog::writeAscii(std::string file, std::string delim) const { Assert(int(_id.size()) == size()); Assert(int(_pos.size()) == size()); Assert(int(_sky.size()) == size()); Assert(int(_noise.size()) == size()); Assert(int(_flags.size()) == size()); Assert(int(_skypos.size()) == size()); Assert(int(_shear.size()) == size()); Assert(int(_nu.size()) == size()); Assert(int(_cov.size()) == size()); Assert(int(_meas_galorder.size()) == size()); Assert(int(_shape.size()) == size()); std::ofstream fout(file.c_str()); if (!fout) { throw WriteException("Error opening shear file"+file); } bool output_psf = _params.read("shear_output_psf",false); Form sci8; sci8.sci().trail(0).prec(8); Form fix3; fix3.fix().trail(0).prec(3); Form fix8; fix8.fix().trail(0).prec(8); Form fix6; fix6.fix().trail(0).prec(6); const int ngals = size(); for(int i=0;i<ngals;++i) { fout << _id[i] << delim << fix3(_pos[i].getX()) << delim << fix3(_pos[i].getY()) << delim << fix3(_sky[i]) << delim << sci8(_noise[i]) << delim << _flags[i] << delim << fix8(_skypos[i].getX()/3600.) << delim << fix8(_skypos[i].getY()/3600.) << delim << sci8(real(_shear[i])) << delim << sci8(imag(_shear[i])) << delim << fix3(_nu[i]) << delim << sci8(_cov[i](0,0)) << delim << sci8(_cov[i](0,1)) << delim << sci8(_cov[i](1,1)) << delim //<< _shape[i].getOrder() << delim << _meas_galorder[i] << delim << fix6(_shape[i].getSigma()); const int ncoeff = _shape[i].size(); for(int j=0;j<ncoeff;++j) fout << delim << sci8(_shape[i](j)); if (output_psf) { Assert(_fitpsf); BVec interp_psf(_fitpsf->getPsfOrder(),_fitpsf->getSigma()); interp_psf = (*_fitpsf)(_pos[i]); fout << delim << interp_psf.getOrder() << delim << fix6(interp_psf.getSigma()); const int npsf_coeff = interp_psf.size(); for(int j=0;j<npsf_coeff;++j) fout << delim << sci8(interp_psf(j)); } fout << std::endl; } }
int main() { cout << setiosflags(ios::uppercase); /* ofstream out("GAUSS.out"); out << setiosflags(ios::uppercase); ofstream dout("GAUSSMOD.out"); dout << setiosflags(ios::uppercase); */ mp_init(); cout << "+++ Precision = " << mpipl << " +++" << endl; double s_in, h_in , b1_in, b2_in, db, g_in, dpi, x1_in, x2_in; int N, Nb, m, Control; dpi = 4.0 * atan(1.0); mp_real pi = mppic; // pi aus der Bibliothek !!! mp_real pi2 = pi * pi; static mp_real factor; mp_real b, b1, b2, bstep, g, x0, s, h, x1, x2; /* Parameter als doubles einlesen */ cin >> b1_in >> b2_in >> Nb; cin >> g_in >> Control; cin >> s_in >> h_in >> N; cin >> x1_in >> x2_in >> m; /* Konversion: double -> mp_real */ b1 = mp_real(b1_in); b2 = mp_real(b2_in); g = mp_real(g_in); s = mp_real(s_in); h = mp_real(h_in); x1 = mp_real(x1_in); x2 = mp_real(x2_in); // a = 1/(mp_real(2.0)*b1); bstep = (b2 - b1)/mp_real(Nb); /* Vorfaktor */ // factor = mp_real(2.0)*b/power(pi,mp_real(1.5)); // factor *= exp(mp_real(0.25) * pi2 * b * b); //dfactor = 2.0 * (b_in/pow(dpi,1.5)) * exp(b_in*b_in*dpi*dpi*.25); cout << "*** Parameter ***" << endl; cout << "b1 = " << b1 ; cout << "b2 = " << b2 ; cout << "bstep = " << bstep ; //cout << "a = " << a; cout << "g = " << g; cout << "h = " << h; cout << "N = " << N << endl; cout << '\v' ; cout << "x1 = " << x1; cout << "x2 = " << x2; cout << "m = " << m << endl; cout << "xmax = " << h * N << endl; // cout << "dfaktor = " <<dfactor << endl; // cout << "Faktor = " <<factor << endl; /* Datendatei */ String data = "GAUSSMOD-N" ; data = data + N + "-xb" + x2_in + "-beta" + strdup(fix3(g_in)) + ".out"; ofstream dout(data()); mp_real mp_E2_Gauss, mp_E2_Gausstheo, mp_Reg, mp_Regtheo, mp_ModGauss, step; mp_real mp_diffrel, mp_diffrelreg; double E2, E2_Gauss, E2_Gausstheo, Reg, Reg_theod, ModGauss, diffrel, x0d; double diffrelreg; step = (x2 -x1)/mp_real(m); if(Control == 1) { cout << "*** Begin: Read Data ***" << endl; for(int j = 0; j <= m; j++) { x0 = x1 + j * step; mp_E2_Gauss = mpe2gauss(x0,g); mp_E2_Gausstheo = mpe2gausstheo(x0,g); mp_real mpdeltarel = abs(mp_E2_Gauss - mp_E2_Gausstheo)/abs(mp_E2_Gausstheo); mpdeltarel *= mp_real(100.0); x0d = dble(x0); E2 = e2(x0d); E2_Gauss = dble(mp_E2_Gauss); E2_Gausstheo = dble(mp_E2_Gausstheo); double deltarel = dble(mpdeltarel); cout << x0 << mp_E2_Gausstheo << mp_E2_Gauss << mpdeltarel << endl;; (ostream&) dout << x0d << '\t' << E2 << '\t' << E2_Gausstheo <<'\t' << E2_Gauss << '\t' << deltarel << endl; } cout << "*** End: Read Data ***" << endl; } cout << "*** Begin: Regularisation Scan ***" << endl; for(int i = 0; i <= Nb; i++) { b = b1 + i * bstep; db = dble(b); factor = mp_real(2.0)*b/power(pi,mp_real(1.5)); factor *= exp(mp_real(0.25) * pi2 * b * b); /* RegDatei */ String reg = "GAUSSREG-N" ; reg = reg + N + "-xb" + x2_in + "-beta" + strdup(fix3(g_in)) + "-b" + strdup(fix3(db)) + ".out"; ofstream out(reg()); cout << " +++ i = " << i << ", " << " b = " << db << " +++ " << endl; cout << '\v' ; for(int jj = 0; jj <= m; jj++) { x0 = x1 + jj * step; s = x0; mp_Reg = mptrapez(mpkern,x0,b,g,s,h,N); mp_Reg *= factor; mp_Regtheo = Regtheo(x0,b,g); //reine Regularisierte mp_ModGauss = GaussDichte(x0,g); //Gaussdichte als Modell mp_diffrel = abs(mp_Reg - mp_Regtheo)/abs(mp_Regtheo); mp_diffrel *= mp_real(100.0); mp_diffrelreg = abs(mp_Reg - mp_ModGauss)/abs(mp_ModGauss); mp_diffrelreg *= mp_real(100.0); Reg_theod = dble(mp_Regtheo); Reg = dble(mp_Reg); ModGauss = dble(mp_ModGauss); diffrel = dble(mp_diffrel); diffrelreg = dble(mp_diffrelreg); x0d = dble(x0); cout << x0 << mp_Reg << mp_Regtheo << mp_ModGauss << mp_diffrel << mp_diffrelreg<< endl; (ostream&) out << x0d << '\t' << ModGauss << '\t' << Reg << '\t' << Reg_theod<< '\t' << diffrel <<'\t' << diffrelreg << endl; } } cout << "*** End: Regularisation Scan ***" << endl; return 0; }