** Date Started: Aug 84
**
** This is part of the CTSim program
-** Copyright (C) 1983-2000 Kevin Rosenberg
+** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: reconstruct.cpp,v 1.1 2000/09/02 05:13:57 kevin Exp $
+** $Id: reconstruct.cpp,v 1.11 2001/01/30 05:05:41 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
{
#if HAVE_SGP
int nVecFilter = m_pProcessSignal->getNFilterPoints();
- double adPlotXAxis [nVecFilter];
+ double* adPlotXAxis = new double [nVecFilter];
if (nVecFilter > 0 && pSGP) {
double f = m_pProcessSignal->getFilterMin();
adPlotXAxis[i] = f;
if (m_pProcessSignal->getFilter()) {
- EZPlot ezplot (*pSGP);
+ EZPlot ezplot;
ezplot.ezset ("title Filter Response");
ezplot.addCurve (adPlotXAxis, m_pProcessSignal->getFilter(), nVecFilter);
- ezplot.plot();
+ ezplot.plot (pSGP);
}
}
+ delete adPlotXAxis;
#endif
}
void
-Reconstructor::reconstructView (int iStartView, int iViewCount, SGP* pSGP)
+Reconstructor::reconstructView (int iStartView, int iViewCount, SGP* pSGP, bool bBackprojectView, double dGraphWidth)
{
- double adFilteredProj [m_nFilteredProjections]; // filtered projections
+ double* adFilteredProj = new double [m_nFilteredProjections]; // filtered projections
if (iViewCount <= 0)
iViewCount = m_rProj.nView() - iStartView;
for (int iView = iStartView; iView < (iStartView + iViewCount); iView++) {
if (m_iTrace == Trace::TRACE_CONSOLE)
- cout <<"Reconstructing view " << iView << " (last = " << m_rProj.nView() - 1 << ")\n";
+ std::cout <<"Reconstructing view " << iView << " (last = " << m_rProj.nView() - 1 << ")\n";
const DetectorArray& rDetArray = m_rProj.getDetectorArray (iView);
const DetectorValue* detval = rDetArray.detValues();
#endif
#endif
- m_pBackprojector->BackprojectView (adFilteredProj, rDetArray.viewAngle());
+ if (bBackprojectView)
+ m_pBackprojector->BackprojectView (adFilteredProj, rDetArray.viewAngle());
#ifdef HAVE_SGP
if (m_iTrace >= Trace::TRACE_PLOT && pSGP) {
- EZPlot ezplotProj (*pSGP);
+ EZPlot ezplotProj;
+
+ std::ostringstream osXLength;
+ osXLength << "xlength " << dGraphWidth;
- ezplotProj.ezset ("clear");
- ezplotProj.ezset ("title Raw Projection");
- ezplotProj.ezset ("xticks major 5");
- ezplotProj.ezset ("xlabel ");
- ezplotProj.ezset ("ylabel ");
- ezplotProj.ezset ("yporigin .5");
- ezplotProj.ezset ("ylength .5");
- ezplotProj.ezset ("box.");
- ezplotProj.ezset ("grid.");
- ezplotProj.addCurve (m_adPlotXAxis, detval, m_rProj.nDet());
- ezplotProj.plot();
ezplotProj.ezset ("clear");
ezplotProj.ezset ("title Filtered Projection");
ezplotProj.ezset ("xticks major 5");
ezplotProj.ezset ("xlabel ");
ezplotProj.ezset ("ylabel ");
- ezplotProj.ezset ("ylength .5");
+ ezplotProj.ezset ("yticks major 5");
+ ezplotProj.ezset ("yporigin 0.10");
+ ezplotProj.ezset ("ylength 0.45");
+ ezplotProj.ezset (osXLength.str().c_str());
ezplotProj.ezset ("box");
ezplotProj.ezset ("grid");
ezplotProj.addCurve (m_adPlotXAxis, adFilteredProj, m_nFilteredProjections);
- ezplotProj.plot();
+ pSGP->setTextPointSize (12);
+ ezplotProj.plot (pSGP);
+
+ ezplotProj.ezset ("clear");
+ ezplotProj.ezset ("title Raw Projection");
+ ezplotProj.ezset ("xticks major 5");
+ ezplotProj.ezset ("yticks major 5");
+ ezplotProj.ezset ("xlabel ");
+ ezplotProj.ezset ("ylabel ");
+ ezplotProj.ezset ("yporigin 0.55");
+ ezplotProj.ezset ("ylength 0.45");
+ ezplotProj.ezset (osXLength.str().c_str());
+ ezplotProj.ezset ("box.");
+ ezplotProj.ezset ("grid.");
+ ezplotProj.addCurve (m_adPlotXAxis, detval, m_rProj.nDet());
+ pSGP->setTextPointSize (12);
+ ezplotProj.plot (pSGP);
}
#endif //HAVE_SGP
}
+
+ delete adFilteredProj;
}