** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: scanner.h,v 1.7 2000/07/20 11:17:31 kevin Exp $
+** $Id: scanner.h,v 1.8 2000/07/22 15:45:33 kevin Exp $
**
**
** This program is free software; you can redistribute it and/or modify
DetectorArray (const DetectorArray& rhs); // copy constructor
};
+
class Scanner
{
public:
- typedef enum {
- GEOMETRY_INVALID,
- GEOMETRY_PARALLEL,
- GEOMETRY_EQUILINEAR,
- GEOMETRY_EQUIANGULAR,
- } GeometryID;
-
- static const char GEOMETRY_PARALLEL_STR[];
- static const char GEOMETRY_EQUILINEAR_STR[];
- static const char GEOMETRY_EQUIANGULAR_STR[];
-
- static const char GEOMETRY_PARALLEL_TITLE_STR[];
- static const char GEOMETRY_EQUILINEAR_TITLE_STR[];
- static const char GEOMETRY_EQUIANGULAR_TITLE_STR[];
+ static const int Scanner::GEOMETRY_INVALID;
+ static const int Scanner::GEOMETRY_PARALLEL;
+ static const int Scanner::GEOMETRY_EQUILINEAR;
+ static const int Scanner::GEOMETRY_EQUIANGULAR;
+
Scanner (const Phantom& phm, const char* const geometryName, int nDet, int nView, int nSample, const double rot_anglen);
~Scanner();
const double detInc(void) const {return m_detInc;}
const double radius(void) const {return m_radius;}
-
+ static const int getGeometryCount() {return s_iGeometryCount;}
+ static const char** getGeometryNameArray() {return s_aszGeometryName;}
+ static const char** getGeometryTitleArray() {return s_aszGeometryTitle;}
+ static int convertGeometryNameToID (const char* const geometryName);
+ static const char* convertGeometryIDToName (const int idGeometry);
+ static const char* convertGeometryIDToTitle (const int idGeometry);
+
private:
bool m_fail;
string m_failMessage;
- GeometryID m_idGeometry;
+ int m_idGeometry;
unsigned int m_nDet; /* Number of detectors in array */
unsigned int m_nView; /* Number of rotated views */
unsigned int m_nSample; /* Number of rays per detector */
double angle; /* Starting angle */
} m_initPos;
+ static const char* s_aszGeometryName[];
+ static const char* s_aszGeometryTitle[];
+ static const int s_iGeometryCount;
static const int N_EXTRA_DETECTORS=4; /* Number of extra detectors widths when calculating detlen */
- static GeometryID convertGeometryNameToID (const char* const geometryName);
-
void projectSingleView (const Phantom& phm, DetectorArray& darray, const double xd1, const double yd1, const double xd2, const double yd2, const double xs1, const double ys1, const double xs2, const double ys2);
double projectSingleLine (const Phantom& phm, const double x1, const double y1, const double x2, const double y2);