X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=tools%2Fphm2pj.cpp;h=f42dd1293d475fe9e20a1050235c98c1cd1a76a3;hb=55426f4170ed9dc777c3cec3741e4a59e6eebd38;hp=0459f53f7b10bdfa87c61656a8963bcdb112232d;hpb=6bfb747f8163381d94a02c03a0351e9ca6815d22;p=ctsim.git diff --git a/tools/phm2pj.cpp b/tools/phm2pj.cpp index 0459f53..f42dd12 100644 --- a/tools/phm2pj.cpp +++ b/tools/phm2pj.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: phm2pj.cpp,v 1.11 2000/08/27 20:32:55 kevin Exp $ +** $Id: phm2pj.cpp,v 1.16 2000/11/24 12:08:10 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -50,7 +50,7 @@ static struct option phm2pj_options[] = {0, 0, 0, 0} }; -static const char* g_szIdStr = "$Id: phm2pj.cpp,v 1.11 2000/08/27 20:32:55 kevin Exp $"; +static const char* g_szIdStr = "$Id: phm2pj.cpp,v 1.16 2000/11/24 12:08:10 kevin Exp $"; void @@ -72,6 +72,10 @@ phm2pj_usage (const char *program) cout << " --nray Number of rays per detector (default = 1)\n"; cout << " --rotangle Degrees to rotate view through (multiple of PI)\n"; cout << " (default = 1)\n"; + cout << " --geometry Geometry of scanning\n"; + cout << " parallel Parallel scan beams (default)\n"; + cout << " equilinear Equilinear divergent scan beams\n"; + cout << " equiangular Equiangular divergent scan beams\n"; cout << " --focal-length Focal length ratio (ratio to radius of phantom)\n"; cout << " (default = 1)\n"; cout << " --field-of-view Field of view (ratio to diameter of phantom square)\n"; @@ -100,6 +104,7 @@ phm2pj_main (int argc, char* argv[]) string optGeometryName = Scanner::convertGeometryIDToName(Scanner::GEOMETRY_PARALLEL); char *opt_outfile = NULL; string opt_desc; + string optPhmName; string optPhmFileName; int opt_ndet; int opt_nview; @@ -107,7 +112,6 @@ phm2pj_main (int argc, char* argv[]) double dOptFocalLength = 1.; double dOptFieldOfView = 1.; int opt_trace = Trace::TRACE_NONE; - string optPhmName (Phantom::convertPhantomIDToName(Phantom::PHM_HERMAN)); int opt_verbose = 0; int opt_debug = 0; double opt_rotangle = 1; @@ -235,7 +239,7 @@ phm2pj_main (int argc, char* argv[]) } ostringstream desc; - desc << "phm2pj: NDet=" << opt_ndet << ", Nview=" << opt_nview << ", NRay=" << opt_nray << ", RotAngle=" << opt_rotangle << ", "; + desc << "phm2pj: NDet=" << opt_ndet << ", Nview=" << opt_nview << ", NRay=" << opt_nray << ", RotAngle=" << opt_rotangle << ", Geometry=" << optGeometryName << ", "; if (optPhmFileName.length()) { desc << "PhantomFile=" << optPhmFileName; } else if (optPhmName != "") { @@ -296,8 +300,11 @@ phm2pj_main (int argc, char* argv[]) if (mpiWorld.getRank() == 0) pjGlobal.initFromScanner (scanner); - if (opt_verbose) - pjGlobal.printScanInfo(); + if (opt_verbose) { + ostringstream os; + pjGlobal.printScanInfo(os); + cout << os.str(); + } Projections pjLocal (scanner); pjLocal.setNView (mpiWorld.getMyLocalWorkUnits()); @@ -348,8 +355,9 @@ phm2pj_main (int argc, char* argv[]) if (opt_verbose) { phm.print(); cout << endl; - pjGlobal.printScanInfo(); - cout << endl; + ostringstream os; + pjGlobal.printScanInfo (os); + cout << os.str() << endl; cout << " Remark: " << pjGlobal.remark() << endl; cout << "Run time: " << pjGlobal.calcTime() << " seconds\n"; }