** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: pjrec.cpp,v 1.15 2000/08/27 20:32:55 kevin Exp $
+** $Id: pjrec.cpp,v 1.17 2000/09/02 05:10:39 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
{0, 0, 0, 0}
};
-static const char* g_szIdStr = "$Id: pjrec.cpp,v 1.15 2000/08/27 20:32:55 kevin Exp $";
+static const char* g_szIdStr = "$Id: pjrec.cpp,v 1.17 2000/09/02 05:10:39 kevin Exp $";
void
pjrec_usage (const char *program)
#ifdef HAVE_MPI
if (mpiWorld.getRank() == 0) {
projGlobal.read (pszFilenameProj);
- if (bOptVerbose)
- projGlobal.printScanInfo();
+ if (bOptVerbose) {
+ ostringstream os;
+ projGlobal.printScanInfo (os);
+ cout << os.str();
+ }
mpi_ndet = projGlobal.nDet();
mpi_nview = projGlobal.nView();
imLocal = new ImageFile (nx, ny);
#else
projGlobal.read (pszFilenameProj);
- if (bOptVerbose)
- projGlobal.printScanInfo();
+ if (bOptVerbose) {
+ ostringstream os;
+ projGlobal.printScanInfo(os);
+ cout << os.str();
+ }
imGlobal = new ImageFile (nx, ny);
#endif
#ifdef HAVE_MPI
TimerCollectiveMPI timerReconstruct (mpiWorld.getComm());
- projLocal.reconstruct (*imLocal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+
+ Reconstructor reconstruct (projLocal, *imLocal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+ if (reconstruct.fail()) {
+ cout << reconstruct.failMessage();
+ return (1);
+ }
+ reconstruct.reconstructAllViews();
+
if (bOptVerbose)
timerReconstruct.timerEndAndReport ("Time to reconstruct");
if (bOptVerbose)
timerReduce.timerEndAndReport ("Time to reduce image");
#else
- projGlobal.reconstruct (*imGlobal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+ Reconstructor reconstruct (projGlobal, *imGlobal, sOptFilterName.c_str(), dOptFilterParam, sOptFilterMethodName.c_str(), iOptZeropad, sOptFilterGenerationName.c_str(), sOptInterpName.c_str(), iOptPreinterpolationFactor, sOptBackprojectName.c_str(), optTrace);
+ if (reconstruct.fail()) {
+ cout << reconstruct.failMessage();
+ return (1);
+ }
+ reconstruct.reconstructAllViews();
#endif
#ifdef HAVE_MPI