00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkConeBeamProjectData_h
00012 #define __mitkConeBeamProjectData_h
00013
00014 #include "mitkProjectData.h"
00015 #include "mitkVolume.h"
00016
00039
00040 class MITK_RECONSTRUCTION_API mitkConeBeamProjectData : public mitkProjectData
00041 {
00042 public:
00043 MITK_TYPE(mitkConeBeamProjectData,mitkProjectData)
00044
00045 virtual void PrintSelf(ostream& os);
00046
00047 mitkConeBeamProjectData();
00048
00049 virtual void Initialize();
00050
00051
00055 virtual void const* GetData() const {return m_Data;}
00056
00060 virtual void* GetData() {return m_Data;}
00061
00065 void SetData(mitkVolume *m);
00066
00070 float GetDetectorMoveX(){ return detectormovex;}
00071
00075 void SetDetectorMoveX(float m){ detectormovex = m;}
00076
00080 float GetDetectorMoveZ(){ return detectormovez;}
00081
00085 void SetDetectorMoveZ(float m){ detectormovez = m;}
00086
00090 void SetDetectorLengthX(double m){lengthDetectorx = m; }
00091
00095 double GetDetectorLengthX(){return lengthDetectorx;}
00096
00100 void SetDetectorLengthZ(double m){lengthDetectorz = m; }
00101
00105 double GetDetectorLengthZ(){return lengthDetectorz;}
00106
00116 void SetFov(double *m){v[0] = m[0]; v[1] = m[1]; v[2] = m[2]; v[3] = m[3]; v[4] = m[4]; v[5] = m[5];}
00117 void SetFov(double xmin,double xmax,double ymin,double ymax,double zmin,double zmax){v[0] = xmin; v[1] = xmax; v[2] = ymin; v[3] = ymax; v[4] = zmin; v[5] = zmax;}
00118
00128 double* GetFov() {return v;}
00129
00133 void SetXrayNumX(int m){numXrayx = m;}
00134
00138 int GetXrayNumX() const {return numXrayx;}
00139
00143 void SetXrayNumZ(int m){numXrayz = m;}
00144
00148 int GetXrayNumZ() const {return numXrayz;}
00149
00150
00154 void SetSourceToCenterDistance(double m){sod = m;}
00155
00159 double GetSourceToCenterDistance() const {return sod;}
00160
00164 void SetSourceToDetectorDistance(double m){sdd = m;}
00165
00169 double GetSourceToDetectorDistance() const {return sdd;}
00170
00171
00179 virtual unsigned long long GetActualMemorySize() const=0;
00180
00184 virtual void ShallowCopy(mitkDataObject *src)=0;
00188 virtual void DeepCopy(mitkDataObject *src)=0;
00189
00193 virtual void const* GetAngleSliceForRead(int sliceIdx)=0;
00194 virtual void* GetAngleSliceForWrite(int sliceIdx)=0;
00195 virtual void* GetAngleSliceForReadWrite(int sliceIdx)=0 ;
00196
00197 virtual bool Allocate()=0;
00198
00199 protected:
00200 virtual ~mitkConeBeamProjectData();
00201 private:
00202
00203 double lengthDetectorx;
00204 double lengthDetectorz;
00205
00206 int numXrayx;
00207 int numXrayz;
00208 double sod;
00209 double sdd;
00210 double v[8];
00211 float detectormovex;
00212 float detectormovez;
00213
00214 };
00215
00216
00217
00218
00219
00220 #endif
00221