** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: projections.h,v 1.12 2000/08/27 20:32:55 kevin Exp $
+** $Id: projections.h,v 1.17 2000/12/16 03:29:02 kevin Exp $
**
**
** This program is free software; you can redistribute it and/or modify
public:
Projections (const int nView, const int nDet);
Projections (const Scanner& scanner);
- Projections (void);
- ~Projections (void);
+ Projections ();
+ ~Projections ();
void initFromScanner (const Scanner& scanner);
- void printProjectionData (void);
- void printScanInfo (void) const;
+ void printProjectionData (int startView, int endView);
+ void printProjectionData ();
+ void printScanInfo (ostringstream& os) const;
+ bool read (const string& fname);
bool read (const char* fname);
bool write (const char* fname);
+ bool write (const string& fname);
bool detarrayRead (fnetorderstream& fs, DetectorArray& darray, const int view_num);
bool detarrayWrite (fnetorderstream& fs, const DetectorArray& darray, const int view_num);
void setDetInc (double detInc) { m_detInc = detInc;}
void setPhmLen (double phmLen) { m_phmLen = phmLen;}
void setCalcTime (double calcTime) {m_calcTime = calcTime;}
- void setRemark (const char* remark) {m_remark = remark;}
- void setRemark (const string remark) {m_remark = remark;}
-
- const double detStart(void) const {return m_detStart;}
- const double rotStart(void) const {return m_rotStart;}
- const double calcTime(void) const {return m_calcTime;}
- const double phmLen(void) const {return m_phmLen;}
- const char* remark(void) const {return m_remark.c_str();}
- const double detInc(void) const {return m_detInc;}
- const double rotInc(void) const {return m_rotInc;}
- const int nDet(void) const {return m_nDet;}
- const int nView(void) const {return m_nView;}
- const string& getFilename(void) const {return m_filename;}
- Array2dFileLabel& getLabel(void) {return m_label;}
- const Array2dFileLabel& getLabel(void) const {return m_label;}
+ void setRemark (const char* remark) {m_remark = remark; m_label.setLabelString(remark);}
+ void setRemark (const string& remark) {setRemark(remark.c_str());}
+
+ double detStart() const {return m_detStart;}
+ double rotStart() const {return m_rotStart;}
+ double calcTime() const {return m_calcTime;}
+ double phmLen() const {return m_phmLen;}
+ const char* remark() const {return m_remark.c_str();}
+ double detInc() const {return m_detInc;}
+ double rotInc() const {return m_rotInc;}
+ int nDet() const {return m_nDet;}
+ int nView() const {return m_nView;}
+ int geometry() const {return m_geometry;}
+ double focalLength() const {return m_focalLength;}
+ double fieldOfView() const {return m_fieldOfView;}
+
+ const string& getFilename() const {return m_filename;}
+ Array2dFileLabel& getLabel() {return m_label;}
+ const Array2dFileLabel& getLabel() const {return m_label;}
DetectorArray& getDetectorArray (const int iview)
{ return (*m_projData[iview]); }
const DetectorArray& getDetectorArray (const int iview) const
{ return (*m_projData[iview]); }
+
+ static bool copyHeader (const char* const filename, std::ostream& os);
+ static bool copyHeader (const string& filename, std::ostream& os);
+
+ static bool copyViewData (const char* const filename, std::ostream& os, int startView, int endView);
+ static bool copyViewData (const string& filename, std::ostream& os, int startView, int endView);
private:
int m_headerSize; // Size of disk file header
int m_geometry; // Geometry of scanner
- struct DetectorArray **m_projData; // Pointer to array of detarray_st pointers
+ class DetectorArray **m_projData; // Pointer to array of detarray_st pointers
string m_remark; // description of raysum data
int m_nDet; // number of detectors in array
int m_nView; // number of rotated views
string m_filename;
Array2dFileLabel m_label;
- const static kuint16 m_signature = ('P'*256 + 'J');
+ const static kuint16 m_signature;
- bool headerRead (void);
- bool headerWrite (void);
- bool headerRead (fnetorderstream& fs);
bool headerWrite (fnetorderstream& fs);
- void newProjData (void);
- void deleteProjData (void);
+ bool headerRead (fnetorderstream& fs);
+ void newProjData ();
+ void deleteProjData ();
void init (const int nView, const int nDet);