ecat  5.1.2
matrix.h
Go to the documentation of this file.
1 /* @(#)matrix.h 1.5 2/8/93 */
2 
3 /* prevent recursive definition */
4 #ifndef matrix_ecat7_h
5 #define matrix_ecat7_h
6 /* 19-sep-2002:
7  * Merge with bug fixes and support for CYGWIN provided by Kris Thielemans@csc.mrc.ac.uk
8  * 09-jan-2003:
9  * in #define W_MODE, replace "wb" and "w" by "wb+" and "w+" respectively for windows and unix
10  * 12-sep-2003:
11  * Remove ntohs and ntohl declarations for Windows
12  */
13 
14 #include <stdio.h>
15 #include <sys/types.h>
17 
18 /*
19 #define R_MODE "rb"
20 #define RW_MODE "rb+"
21 #define W_MODE "wb+"
22 */
23 #ifdef _WIN32
24 #define swab _swab
25 #define strdup _strdup
26 #ifndef __CYGWIN__
27 typedef char *caddr_t;
28 // typedef unsigned char u_char;
29 // typedef unsigned short u_short;
30 #endif /* __CYGWIN__ */
31 // extern unsigned short ntohs(unsigned short);
32 // extern unsigned long ntohl(unsigned long);
33 #else /* _WIN32 */
34 #include <netinet/in.h>
35 #endif
36 
37 #define MatBLKSIZE 512
38 #define MatFirstDirBlk 2
39 #define MatMagic 0x67452301
40 #define V7 70
41 #define MagicNumLen 14
42 #define NameLen 32
43 #define IDLen 16
44 #define NumDataMasks 12
45 
46 #define MAX_FRAMES 512
47 #define MAX_SLICES 1024
48 #define MAX_GATES 32
49 #define MAX_BED_POS 32
50 
51 
52 typedef enum {
58 
59 /*
60 typedef enum {
61  UnknownMatDataType, ByteData, VAX_Ix2, VAX_Ix4,
62  VAX_Rx4, IeeeFloat, SunShort, SunLong, NumMatrixDataTypes, ColorData,
63  BitData
64 } MatrixDataType;
65 */
66 typedef enum {
69 /* Unsigned Short Big and Little Endian, PseudoColor, TrueColor, BitData*/
72 
75 
76 
82 
85 
86 
90 
95 
97 
99 
100 typedef enum {
121  }
123 
125  Smooth_X=8, Smooth_Y=16, Smooth_Z=32, Scat2d=64, Scat3d=128,
126  ArcPrc=256, DecayPrc=512, OnComPrc=1024, RandomSub=2048 };
127 
128 
129 extern int numDisplayUnits;
130 extern char* datasettype[NumDataSetTypes];
131 extern char* dstypecode[NumDataSetTypes];
132 extern char* scantype[NumScanTypes];
133 extern char* scantypecode[NumScanTypes];
134 extern char* customDisplayUnits[];
135 extern float ecfconverter[NumOldUnits];
136 extern char* calstatus[NumCalibrationStatus];
137 extern char* sexcode;
138 extern char* dexteritycode;
139 extern char* typeFilterLabel[NumDataMasks];
140 
142 extern char matrix_errtxt[];
143 
144 
145 /*
146  ecat 6.4 compatibility definitions
147 */
148 typedef enum { /* matrix data types */
156  SUN_I4
157  }
159 
160 #define MAT_SUB_HEADER 255 /* operation to sub-header only */
161 
162 typedef enum { /* matrix file types */
168  }
170 
171 /*
172  end of ecat 6.4 definitions
173 */
174 
175 struct MatDir {
176  int matnum;
177  int strtblk;
178  int endblk;
179  int matstat; };
180 
181 
182 struct matdir
183  { int nmats,
185  struct MatDir *entry;
186  };
187 
188 
189 struct Matval {
191  };
192 
193 struct Matlimits {
199  };
200 
201 
202 typedef
203  struct matdirnode
204  {
205  int matnum ;
206  int strtblk ;
207  int endblk ;
208  int matstat ;
209  struct matdirnode *next ;
210  }
212 
213 typedef
214  struct matdirlist
215  {
216  int nmats ;
219  }
221 
222 typedef
223  struct matdirblk
224  {
226  struct MatDir matdir[31] ;
227  }
229 
230 typedef enum { /* matrix file access modes */
231  MAT_READ_WRITE, /* allow read and/or write */
232  MAT_READ_ONLY, /* only allow read */
233  MAT_CREATE, /* create if non-existant */
234  MAT_OPEN_EXISTING, /* open existing file read/write */
235  MAT_CREATE_NEW_FILE /* force new file creation */
236  }
238 
239 /* object creation attributes */
240 
241 typedef enum
242  {
254  MAT_PROTO
255  }
257 
258 typedef struct XMAIN_HEAD {
259  char magic_number[14];
261  short sw_version;
262  short system_type;
263  short file_type;
264  char serial_number[10];
265  short align_0; /* 4 byte alignment purpose */
266  unsigned int scan_start_time;
267  char isotope_code[8];
270  float gantry_tilt;
281  short align_1;
286  char study_name[12];
287  char patient_id[16];
288  char patient_name[32];
289  char patient_sex[1];
291  float patient_age;
295  char physician_name[32];
296  char operator_name[32];
300  char facility_name[20];
301  short num_planes;
302  short num_frames;
303  short num_gates;
304  short num_bed_pos;
306  float bed_offset[15];
313  short align_2;
314  float bin_size;
316  unsigned int dose_start_time;
317  float dosage;
319  char data_units[32];
320  short septa_state;
321  short align_3;
323 
324 typedef struct XSCAN_SUB {
325  short data_type;
328  short num_angles;
332  short align_0;
337  unsigned int gate_duration;
341  short scan_min;
342  short scan_max;
343  int prompts;
344  int delayed;
347  float cor_singles[16];
348  float uncor_singles[16];
349  float tot_avg_cor;
352  unsigned int frame_start_time;
353  unsigned int frame_duration;
355  short phy_planes[8];
357 
358 typedef struct X3DSCAN_SUB {
359  short data_type;
362  short num_angles;
364  short num_z_elements[64];
372  unsigned int gate_duration;
376  short scan_min;
377  short scan_max;
378  int prompts;
379  int delayed;
382  float tot_avg_cor;
385  unsigned int frame_start_time;
386  unsigned int frame_duration;
388  float uncor_singles[128];
390 
391 typedef struct XIMAGE_SUB {
392  short data_type;
394  short x_dimension;
395  short y_dimension;
396  short z_dimension;
397  short align_0;
398  float z_offset;
399  float x_offset;
400  float y_offset;
401  float recon_zoom;
403  short image_min;
404  short image_max;
408  unsigned int frame_duration;
409  unsigned int frame_start_time;
410  short filter_code;
411  short align_1;
416  float num_angles;
420  unsigned int gate_duration;
427  short align_2;
430  char annotation[40];
431  float mt_1_1;
432  float mt_1_2;
433  float mt_1_3;
434  float mt_2_1;
435  float mt_2_2;
436  float mt_2_3;
437  float mt_3_1;
438  float mt_3_2;
439  float mt_3_3;
448  float mt_1_4;
449  float mt_2_4;
450  float mt_3_4;
452  short recon_type;
453  short recon_views;
454  short align_3;
456 
457 typedef struct XNORM_SUB {
458  short data_type;
461  short num_angles;
465  float norm_min;
466  float norm_max;
471  short span;
472  short z_elements[64];
473  short align_0;
475 
476 typedef struct X3DNORM_SUB {
477  short data_type;
483  short uld;
484  short lld;
488  float ring_dtcor1[32];
489  float ring_dtcor2[32];
490  float crystal_dtcor[8];
491  short span;
494 
495 typedef struct XATTEN_SUB {
496  short data_type;
500  short num_angles;
503  short align_0;
509  float x_offset;
510  float y_offset;
511  float x_radius;
512  float y_radius;
513  float tilt_angle;
519  short align_1;
523  short span;
524  short z_elements[64];
526 
527 typedef enum { ECAT6, ECAT7, Interfile } FileFormat;
528 typedef
529  struct matrix_file
530  {
531  char *fname ; /* file path */
532  Main_header *mhptr ; /* pointer to main header */
533  MatDirList *dirlist ; /* directory */
534  FILE *fptr ; /* file ptr for I/O calls */
535  int acs ; /* ACS flag for ACS files */
538  }
540 
541 typedef
542  struct matrixdata
543  {
544  int matnum ; /* matrix number */
545  MatrixFile *matfile ; /* pointer to parent */
546  DataSetType mat_type ; /* type of matrix? */
547  MatrixDataType data_type ; /* type of data */
548  caddr_t shptr ; /* pointer to sub-header */
549  caddr_t data_ptr ; /* pointer to data */
550  int data_size ; /* size of data in bytes */
551  int xdim; /* dimensions of data */
552  int ydim; /* y dimension */
553  int zdim; /* for volumes */
554  float scale_factor ; /* valid if data is int? */
555  float pixel_size; /* xdim data spacing (cm) */
556  float y_size; /* ydim data spacing (cm) */
557  float z_size; /* zdim data spacing (cm) */
558  float data_min; /* min value of data */
559  float data_max; /* max value of data */
560  float x_origin; /* x origin of data */
561  float y_origin; /* y origin of data */
562  float z_origin; /* z origin of data */
563  }
565 
566 #if defined(sun) && !defined(__SVR4) /* sunos 4.1 */
567 #define OLD_C 1
568 #endif
569 
570 #if !defined(OLD_C) || defined(__cplusplus)
571 #if defined(__cplusplus)
572 extern "C" {
573 /*
574  * high level user functions
575  */
576 #endif
577 void SWAB(const void *from, void *to, int len);
578 void SWAW(const short *from, short *to, int len);
579 int find_bmin(const u_char*, int size);
580 int find_bmax(const u_char*, int size);
581 int find_smin(const short*, int size);
582 int find_smax(const short*, int size);
583 int find_imin(const int*, int size);
584 int find_imax(const int*, int size);
585 float find_fmin(const float*, int size);
586 float find_fmax(const float*, int size);
587 int matspec(const char* specs, char* fname ,int* matnum);
588 char* is_analyze(const char* );
590 MatrixFile* matrix_open(const char*,int,int);
591 MatrixData* matrix_read(MatrixFile*, int matnum, int type);
593  int segment);
595  int segment);
596 int matrix_write(MatrixFile*, int matnum, MatrixData*);
597 int mat_numcod(int frame, int plane, int gate, int data, int bed);
598 int mat_numdoc(int, struct Matval*);
600 void matrix_perror(const char*);
602 int matrix_find(MatrixFile*, int matnum, struct MatDir*);
603 int crash(char *fmt, ...);
604 MatrixData *load_volume7(MatrixFile *matrix_file, int frame, int gate, int data, int bedstart, int bedend);
605 int save_volume7( MatrixFile *mfile, Image_subheader *shptr, float *data_ptr, int frame, int gate, int data, int bed );
606 
607 
608 /*
609  * low level functions prototypes, don't use
610  */
611 int unmap64_main_header(char *buf, Main_header *h);
616 int map64_main_header(char *buf, Main_header *h);
621 int unmap_main_header(char *buf, Main_header *h);
628 int mat_read_main_header(FILE *fptr, Main_header *h);
635 int mat_write_main_header(FILE *fptr, Main_header *h);
641 struct matdir *mat_read_dir(FILE *, Main_header*, char *selector);
642 int mat_read_matrix_data(FILE *, Main_header*, int blk, int nblks, short* bufr);
643 int mat_enter(FILE *, Main_header *mhptr, int matnum, int nblks);
644 int mat_lookup(FILE *fptr, Main_header *mhptr, int matnum, struct MatDir *entry);
645 int mat_rblk(FILE *fptr, int blkno, char *bufr, int nblks);
646 int mat_wblk(FILE *fptr, int blkno, char *bufr, int nblks);
647 void swaw(short *from, short *to, int length);
648 int insert_mdir(struct MatDir matdir,MatDirList *dirlist);
649 
650 #if defined(__cplusplus)
651 }
652 #endif
653 #else /* __cplusplus */
654 extern float find_fmin(), find_fmax();
655 extern MatrixFile *matrix_open(), *matrix_create();
656 extern MatrixData *matrix_read(), *matrix_object_create();
658 extern Main_header *matrix_init_main_header();
659 extern FILE* mat_open();
660 extern MatDirList *mat_read_directory();
661 extern char* is_analyze();
662 extern void free_matrix_data();
663 #endif /* __cplusplus */
664 extern int ecat_default_version;
665 #endif /* matrix_ecat7_h */
int save_volume7(MatrixFile *mfile, Image_subheader *shptr, float *data_ptr, int frame, int gate, int data, int bed)
CalibrationStatus
Definition: matrix.h:73
@ Uncalibrated
Definition: matrix.h:73
@ Processed
Definition: matrix.h:73
@ Calibrated
Definition: matrix.h:73
@ NumCalibrationStatus
Definition: matrix.h:74
struct XMAIN_HEAD Main_header
int mat_write_main_header(FILE *fptr, Main_header *h)
int mat_lookup(FILE *fptr, Main_header *mhptr, int matnum, struct MatDir *entry)
int unmap_main_header(char *buf, Main_header *h)
MatrixData * matrix_read_view(MatrixFile *, MatrixData *volume, int view, int segment)
float find_fmin(const float *, int size)
char * calstatus[NumCalibrationStatus]
int crash(char *fmt,...)
int unmap64_main_header(char *buf, Main_header *h)
char * sexcode
struct XIMAGE_SUB Image_subheader
struct matdirnode MatDirNode
int mat_read_image_subheader(FILE *, Main_header *, int blknum, Image_subheader *)
int unmap_norm_header(char *buf, Norm_subheader *)
MatrixFile * matrix_open(const char *, int, int)
MatrixFile * matrix_create(const char *, int, Main_header *)
MatrixErrorCode matrix_errno
int unmap_Scan3D_header(char *buf, Scan3D_subheader *)
struct XNORM_SUB Norm_subheader
int mat_write_Scan3D_subheader(FILE *, Main_header *, int blknum, Scan3D_subheader *)
int unmap_image_header(char *buf, Image_subheader *)
int mat_read_matrix_data(FILE *, Main_header *, int blk, int nblks, short *bufr)
int find_smax(const short *, int size)
struct matrixdata MatrixData
struct matdirblk MatDirBlk
char * scantypecode[NumScanTypes]
struct XSCAN_SUB Scan_subheader
int map64_attn_header(char *buf, Attn_subheader *, Main_header *)
OldDisplayUnits
Definition: matrix.h:87
@ MlPerMinPer100g
Definition: matrix.h:89
@ LMRGlu
Definition: matrix.h:88
@ LMRGluUmol
Definition: matrix.h:88
@ MlPerMinPer1g
Definition: matrix.h:89
@ NCiPerCC
Definition: matrix.h:88
@ LMRGluMg
Definition: matrix.h:88
@ EcatCountsPerSec
Definition: matrix.h:87
@ NumOldUnits
Definition: matrix.h:89
@ BecquerelsPerCC
Definition: matrix.h:89
@ TotalCounts
Definition: matrix.h:87
@ UCiPerCC
Definition: matrix.h:88
@ WellCounts
Definition: matrix.h:88
@ UnknownEcfUnits
Definition: matrix.h:87
FileFormat
Definition: matrix.h:527
@ Interfile
Definition: matrix.h:527
@ ECAT7
Definition: matrix.h:527
@ ECAT6
Definition: matrix.h:527
#define NumDataMasks
Definition: matrix.h:44
char matrix_errtxt[]
int unmap64_attn_header(char *buf, Attn_subheader *, Main_header *)
void SWAB(const void *from, void *to, int len)
MatrixData * matrix_read_slice(MatrixFile *, MatrixData *volume, int slice_num, int segment)
struct X3DNORM_SUB Norm3D_subheader
ProcessingCode
Definition: matrix.h:124
@ ArcPrc
Definition: matrix.h:126
@ Smooth_X
Definition: matrix.h:125
@ Norm
Definition: matrix.h:124
@ Atten_Meas
Definition: matrix.h:124
@ Scat3d
Definition: matrix.h:125
@ OnComPrc
Definition: matrix.h:126
@ DecayPrc
Definition: matrix.h:126
@ Smooth_Y
Definition: matrix.h:125
@ Atten_Calc
Definition: matrix.h:124
@ NotProc
Definition: matrix.h:124
@ Smooth_Z
Definition: matrix.h:125
@ RandomSub
Definition: matrix.h:126
@ Scat2d
Definition: matrix.h:125
int map64_image_header(char *buf, Image_subheader *, Main_header *)
int mat_read_main_header(FILE *fptr, Main_header *h)
void matrix_perror(const char *)
int unmap64_image_header(char *buf, Image_subheader *, Main_header *)
MatrixErrorCode
Definition: matrix.h:100
@ MAT_WRITE_ERROR
Definition: matrix.h:103
@ MAT_BAD_FILE_ACCESS_MODE
Definition: matrix.h:116
@ MAT_MATRIX_NOT_FOUND
Definition: matrix.h:112
@ MAT_NOMHD_FILE_OBJECT
Definition: matrix.h:109
@ MAT_NIL_SHPTR
Definition: matrix.h:110
@ MAT_READ_FROM_NILFPTR
Definition: matrix.h:108
@ MAT_READ_ERROR
Definition: matrix.h:102
@ MAT_OK
Definition: matrix.h:101
@ MAT_BAD_ATTRIBUTE
Definition: matrix.h:115
@ MAT_INVALID_DIMENSION
Definition: matrix.h:117
@ MAT_ACS_CREATE_ERR
Definition: matrix.h:114
@ MAT_NO_SLICES_FOUND
Definition: matrix.h:118
@ MAT_ACS_FILE_NOT_FOUND
Definition: matrix.h:105
@ MAT_INVALID_DATA_TYPE
Definition: matrix.h:119
@ MAT_INVALID_DIRBLK
Definition: matrix.h:104
@ MAT_FILE_TYPE_NOT_MATCH
Definition: matrix.h:107
@ MAT_NIL_DATA_PTR
Definition: matrix.h:111
@ MAT_UNKNOWN_FILE_TYPE
Definition: matrix.h:113
@ MAT_INVALID_MBED_POSITION
Definition: matrix.h:120
@ MAT_INTERFILE_OPEN_ERR
Definition: matrix.h:106
int find_imin(const int *, int size)
int mat_numcod(int frame, int plane, int gate, int data, int bed)
int map64_norm_header(char *buf, Norm_subheader *, Main_header *)
int mat_read_norm3d_subheader(FILE *, Main_header *, int blknum, Norm3D_subheader *)
int mat_enter(FILE *, Main_header *mhptr, int matnum, int nblks)
int unmap_attn_header(char *buf, Attn_subheader *)
int unmap_scan_header(char *buf, Scan_subheader *)
void SWAW(const short *from, short *to, int len)
int mat_numdoc(int, struct Matval *)
char * dexteritycode
struct matdirlist MatDirList
int find_bmax(const u_char *, int size)
int map64_main_header(char *buf, Main_header *h)
struct matrix_file MatrixFile
SeptaPos
Definition: matrix.h:96
@ SeptaExtended
Definition: matrix.h:96
@ SeptaRetracted
Definition: matrix.h:96
@ NoSeptaInstalled
Definition: matrix.h:96
Sino3dOrder
Definition: matrix.h:98
@ ElVwAxRd
Definition: matrix.h:98
@ NumSino3dOrders
Definition: matrix.h:98
@ ElAxVwRd
Definition: matrix.h:98
int mat_read_Scan3D_subheader(FILE *, Main_header *, int blknum, Scan3D_subheader *)
char * typeFilterLabel[NumDataMasks]
MatrixData * load_volume7(MatrixFile *matrix_file, int frame, int gate, int data, int bedstart, int bedend)
int map64_scan_header(char *buf, Scan_subheader *, Main_header *)
float ecfconverter[NumOldUnits]
void swaw(short *from, short *to, int length)
int mat_read_attn_subheader(FILE *, Main_header *, int blknum, Attn_subheader *)
CurrentModels
Definition: matrix.h:83
@ E962
Definition: matrix.h:84
@ NumEcatModels
Definition: matrix.h:84
@ E953
Definition: matrix.h:83
@ E925
Definition: matrix.h:84
@ E951
Definition: matrix.h:83
@ E953B
Definition: matrix.h:83
@ E951R
Definition: matrix.h:83
@ E961
Definition: matrix.h:83
@ E921
Definition: matrix.h:83
int find_imax(const int *, int size)
MatrixFileType_64
Definition: matrix.h:162
@ MAT_UNKNOWN_FTYPE
Definition: matrix.h:163
@ MAT_NORM_DATA
Definition: matrix.h:167
@ MAT_ATTN_DATA
Definition: matrix.h:166
@ MAT_IMAGE_DATA
Definition: matrix.h:165
@ MAT_SCAN_DATA
Definition: matrix.h:164
int ecat_default_version
MatrixData * matrix_read(MatrixFile *, int matnum, int type)
MatrixObjectAttribute
Definition: matrix.h:242
@ MAT_ZDIM
Definition: matrix.h:246
@ MAT_PROTO
Definition: matrix.h:254
@ MAT_DATA_MAX
Definition: matrix.h:252
@ MAT_YDIM
Definition: matrix.h:245
@ MAT_SCALE_FACTOR
Definition: matrix.h:248
@ MAT_PIXEL_SIZE
Definition: matrix.h:249
@ MAT_DATA_TYPE
Definition: matrix.h:247
@ MAT_Z_SIZE
Definition: matrix.h:251
@ MAT_Y_SIZE
Definition: matrix.h:250
@ MAT_NULL
Definition: matrix.h:243
@ MAT_DATA_MIN
Definition: matrix.h:253
@ MAT_XDIM
Definition: matrix.h:244
float find_fmax(const float *, int size)
int matspec(const char *specs, char *fname, int *matnum)
int matrix_write(MatrixFile *, int matnum, MatrixData *)
int mat_read_norm_subheader(FILE *, Main_header *, int blknum, Norm_subheader *)
int unmap64_scan_header(char *buf, Scan_subheader *, Main_header *)
MatrixFileAccessMode
Definition: matrix.h:230
@ MAT_CREATE_NEW_FILE
Definition: matrix.h:235
@ MAT_READ_ONLY
Definition: matrix.h:232
@ MAT_READ_WRITE
Definition: matrix.h:231
@ MAT_OPEN_EXISTING
Definition: matrix.h:234
@ MAT_CREATE
Definition: matrix.h:233
int unmap64_norm_header(char *buf, Norm_subheader *, Main_header *)
MatrixDataType
Definition: matrix.h:66
@ Color_24
Definition: matrix.h:70
@ UnknownMatDataType
Definition: matrix.h:67
@ UShort_LE
Definition: matrix.h:70
@ VAX_Rx4
Definition: matrix.h:68
@ Color_8
Definition: matrix.h:70
@ VAX_Ix2
Definition: matrix.h:67
@ NumMatrixDataTypes
Definition: matrix.h:68
@ SunLong
Definition: matrix.h:68
@ IeeeFloat
Definition: matrix.h:68
@ BitData
Definition: matrix.h:70
@ UShort_BE
Definition: matrix.h:70
@ VAX_Ix4
Definition: matrix.h:67
@ ByteData
Definition: matrix.h:67
@ SunShort
Definition: matrix.h:68
char * datasettype[NumDataSetTypes]
int mat_wblk(FILE *fptr, int blkno, char *bufr, int nblks)
int mat_write_image_subheader(FILE *, Main_header *, int blknum, Image_subheader *)
int mat_rblk(FILE *fptr, int blkno, char *bufr, int nblks)
int numDisplayUnits
int unmap_norm3d_header(char *buf, Norm3D_subheader *)
void free_matrix_data(MatrixData *)
struct X3DSCAN_SUB Scan3D_subheader
int matrix_find(MatrixFile *, int matnum, struct MatDir *)
int insert_mdir(struct MatDir matdir, MatDirList *dirlist)
int mat_write_attn_subheader(FILE *, Main_header *, int blknum, Attn_subheader *)
char * customDisplayUnits[]
char * is_analyze(const char *)
ScanType
Definition: matrix.h:77
@ UndefScan
Definition: matrix.h:77
@ GatedEmission
Definition: matrix.h:79
@ NumScanTypes
Definition: matrix.h:81
@ TransRectilinear
Definition: matrix.h:80
@ StaticEmission
Definition: matrix.h:78
@ BlankScan
Definition: matrix.h:77
@ TransmissionScan
Definition: matrix.h:78
@ DynamicEmission
Definition: matrix.h:79
@ EmissionRectilinear
Definition: matrix.h:80
int mat_write_scan_subheader(FILE *, Main_header *, int blknum, Scan_subheader *)
struct XATTEN_SUB Attn_subheader
int matrix_close(MatrixFile *)
int mat_write_norm_subheader(FILE *, Main_header *, int blknum, Norm_subheader *)
struct matdir * mat_read_dir(FILE *, Main_header *, char *selector)
int find_smin(const short *, int size)
DataSetType
Definition: matrix.h:52
@ InterfileImage
Definition: matrix.h:56
@ Byte3dSinogram
Definition: matrix.h:55
@ Float3dSinogram
Definition: matrix.h:56
@ PetVolume
Definition: matrix.h:54
@ PolarMap
Definition: matrix.h:54
@ NumDataSetTypes
Definition: matrix.h:56
@ NoData
Definition: matrix.h:53
@ PetProjection
Definition: matrix.h:55
@ Normalization
Definition: matrix.h:53
@ ByteProjection
Definition: matrix.h:54
@ Sinogram
Definition: matrix.h:53
@ Norm3d
Definition: matrix.h:55
@ ByteImage
Definition: matrix.h:55
@ ByteVolume
Definition: matrix.h:54
@ AttenCor
Definition: matrix.h:53
@ Short3dSinogram
Definition: matrix.h:55
@ PetImage
Definition: matrix.h:53
MatrixDataType_64
Definition: matrix.h:148
@ VAX_I4
Definition: matrix.h:152
@ SUN_I2
Definition: matrix.h:155
@ VAX_R4
Definition: matrix.h:153
@ SUN_I4
Definition: matrix.h:156
@ GENERIC
Definition: matrix.h:149
@ BYTE_TYPE
Definition: matrix.h:150
@ SUN_R4
Definition: matrix.h:154
@ VAX_I2
Definition: matrix.h:151
char * scantype[NumScanTypes]
int mat_read_scan_subheader(FILE *, Main_header *, int blknum, Scan_subheader *)
char * dstypecode[NumDataSetTypes]
PatientOrientation
Definition: matrix.h:91
@ FeetFirstLeft
Definition: matrix.h:94
@ HeadFirstProne
Definition: matrix.h:91
@ FeetFirstRight
Definition: matrix.h:93
@ FeetFirstSupine
Definition: matrix.h:92
@ NumOrientations
Definition: matrix.h:94
@ FeetFirstProne
Definition: matrix.h:91
@ UnknownOrientation
Definition: matrix.h:94
@ HeadFirstSupine
Definition: matrix.h:92
@ HeadFirstRight
Definition: matrix.h:93
@ HeadFirstLeft
Definition: matrix.h:94
int find_bmin(const u_char *, int size)
Definition: matrix.h:175
int matstat
Definition: matrix.h:179
int endblk
Definition: matrix.h:178
int matnum
Definition: matrix.h:176
int strtblk
Definition: matrix.h:177
int bedend
Definition: matrix.h:198
int frameend
Definition: matrix.h:194
int datastart
Definition: matrix.h:197
int planeend
Definition: matrix.h:195
int gateend
Definition: matrix.h:196
int bedstart
Definition: matrix.h:198
int dataend
Definition: matrix.h:197
int framestart
Definition: matrix.h:194
int gatestart
Definition: matrix.h:196
int planestart
Definition: matrix.h:195
Definition: matrix.h:189
int bed
Definition: matrix.h:190
int frame
Definition: matrix.h:190
int gate
Definition: matrix.h:190
int plane
Definition: matrix.h:190
int data
Definition: matrix.h:190
short max_ring_diff
Definition: matrix.h:492
float crystal_dtcor[8]
Definition: matrix.h:490
short norm_quality_factor_code
Definition: matrix.h:486
short num_crystal_rings
Definition: matrix.h:480
float norm_quality_factor
Definition: matrix.h:487
short crystals_per_ring
Definition: matrix.h:481
float ring_dtcor1[32]
Definition: matrix.h:488
short num_r_elements
Definition: matrix.h:478
short uld
Definition: matrix.h:483
short data_type
Definition: matrix.h:477
short num_geo_corr_planes
Definition: matrix.h:482
short scatter_energy
Definition: matrix.h:485
short span
Definition: matrix.h:491
short num_transaxial_crystals
Definition: matrix.h:479
short lld
Definition: matrix.h:484
float ring_dtcor2[32]
Definition: matrix.h:489
int prompts
Definition: matrix.h:378
short num_r_elements
Definition: matrix.h:361
int total_coin_rate
Definition: matrix.h:384
float uncor_singles[128]
Definition: matrix.h:388
float scale_factor
Definition: matrix.h:375
short num_dimensions
Definition: matrix.h:360
short scan_min
Definition: matrix.h:376
float x_resolution
Definition: matrix.h:368
short ring_difference
Definition: matrix.h:365
float tot_avg_cor
Definition: matrix.h:382
short storage_order
Definition: matrix.h:366
int multiples
Definition: matrix.h:380
float v_resolution
Definition: matrix.h:369
float z_resolution
Definition: matrix.h:370
short axial_compression
Definition: matrix.h:367
short corrections_applied
Definition: matrix.h:363
unsigned int frame_start_time
Definition: matrix.h:385
int num_accepted_beats
Definition: matrix.h:374
int delayed
Definition: matrix.h:379
float tot_avg_uncor
Definition: matrix.h:383
short num_angles
Definition: matrix.h:362
float w_resolution
Definition: matrix.h:371
short scan_max
Definition: matrix.h:377
int r_wave_offset
Definition: matrix.h:373
float loss_correction_fctr
Definition: matrix.h:387
unsigned int gate_duration
Definition: matrix.h:372
int net_trues
Definition: matrix.h:381
unsigned int frame_duration
Definition: matrix.h:386
short data_type
Definition: matrix.h:359
short num_z_elements[64]
Definition: matrix.h:364
float z_resolution
Definition: matrix.h:506
float w_resolution
Definition: matrix.h:507
short num_r_elements
Definition: matrix.h:499
float skull_thickness
Definition: matrix.h:517
short attenuation_type
Definition: matrix.h:498
float x_offset
Definition: matrix.h:509
float y_radius
Definition: matrix.h:512
short storage_order
Definition: matrix.h:522
float x_resolution
Definition: matrix.h:504
float tilt_angle
Definition: matrix.h:513
float scale_factor
Definition: matrix.h:508
float attenuation_max
Definition: matrix.h:516
short z_elements[64]
Definition: matrix.h:524
short num_additional_atten_coeff
Definition: matrix.h:518
short span
Definition: matrix.h:523
short align_0
Definition: matrix.h:503
float attenuation_min
Definition: matrix.h:515
float edge_finding_threshold
Definition: matrix.h:521
short ring_difference
Definition: matrix.h:502
float additional_atten_coeff[8]
Definition: matrix.h:520
short data_type
Definition: matrix.h:496
short align_1
Definition: matrix.h:519
float y_offset
Definition: matrix.h:510
float attenuation_coeff
Definition: matrix.h:514
short num_dimensions
Definition: matrix.h:497
short num_z_elements
Definition: matrix.h:501
short num_angles
Definition: matrix.h:500
float x_radius
Definition: matrix.h:511
float y_resolution
Definition: matrix.h:505
float filter_cutoff_frequency
Definition: matrix.h:423
float y_offset
Definition: matrix.h:400
float mt_3_3
Definition: matrix.h:439
unsigned int gate_duration
Definition: matrix.h:420
unsigned int frame_start_time
Definition: matrix.h:409
short align_3
Definition: matrix.h:454
float mt_3_4
Definition: matrix.h:450
float z_rotation_angle
Definition: matrix.h:417
float filter_ramp_slope
Definition: matrix.h:425
float rfilter_cutoff
Definition: matrix.h:440
short recon_views
Definition: matrix.h:453
short align_0
Definition: matrix.h:397
float mt_2_4
Definition: matrix.h:449
short recon_type
Definition: matrix.h:452
float mt_3_1
Definition: matrix.h:437
short align_2
Definition: matrix.h:427
short align_1
Definition: matrix.h:411
float z_resolution
Definition: matrix.h:414
short filter_code
Definition: matrix.h:410
short image_max
Definition: matrix.h:404
float filter_scatter_slope
Definition: matrix.h:429
float recon_zoom
Definition: matrix.h:401
short z_dimension
Definition: matrix.h:396
float decay_corr_fctr
Definition: matrix.h:418
short y_dimension
Definition: matrix.h:395
unsigned int frame_duration
Definition: matrix.h:408
float scale_factor
Definition: matrix.h:402
float mt_1_2
Definition: matrix.h:432
int num_accepted_beats
Definition: matrix.h:422
short rfilter_code
Definition: matrix.h:442
short data_type
Definition: matrix.h:392
short num_dimensions
Definition: matrix.h:393
short filter_order
Definition: matrix.h:426
short zfilter_order
Definition: matrix.h:447
float mt_1_1
Definition: matrix.h:431
int r_wave_offset
Definition: matrix.h:421
float z_offset
Definition: matrix.h:398
float num_angles
Definition: matrix.h:416
float x_resolution
Definition: matrix.h:412
float mt_1_3
Definition: matrix.h:433
short rfilter_order
Definition: matrix.h:443
short image_min
Definition: matrix.h:403
float filter_resolution
Definition: matrix.h:424
int processing_code
Definition: matrix.h:419
float x_offset
Definition: matrix.h:399
float mt_2_2
Definition: matrix.h:435
float mt_2_1
Definition: matrix.h:434
float y_resolution
Definition: matrix.h:413
float zfilter_resolution
Definition: matrix.h:445
short x_dimension
Definition: matrix.h:394
float rfilter_resolution
Definition: matrix.h:441
short zfilter_code
Definition: matrix.h:446
float filter_scatter_fraction
Definition: matrix.h:428
float mt_2_3
Definition: matrix.h:436
char annotation[40]
Definition: matrix.h:430
float zfilter_cutoff
Definition: matrix.h:444
float mt_1_4
Definition: matrix.h:448
float z_pixel_size
Definition: matrix.h:407
float num_r_elements
Definition: matrix.h:415
short scatter_type
Definition: matrix.h:451
float y_pixel_size
Definition: matrix.h:406
float mt_3_2
Definition: matrix.h:438
float x_pixel_size
Definition: matrix.h:405
float distance_scanned
Definition: matrix.h:276
char user_process_code[10]
Definition: matrix.h:311
float intrinsic_tilt
Definition: matrix.h:273
short axial_samp_mode
Definition: matrix.h:280
short file_type
Definition: matrix.h:263
short compression_code
Definition: matrix.h:285
char physician_name[32]
Definition: matrix.h:295
float bed_elevation
Definition: matrix.h:272
float branching_fraction
Definition: matrix.h:315
short calibration_units
Definition: matrix.h:283
short align_0
Definition: matrix.h:265
short coin_samp_mode
Definition: matrix.h:279
float bin_size
Definition: matrix.h:314
char isotope_code[8]
Definition: matrix.h:267
float well_counter_factor
Definition: matrix.h:318
char patient_dexterity[1]
Definition: matrix.h:290
char study_name[12]
Definition: matrix.h:286
short transm_source_type
Definition: matrix.h:275
short num_planes
Definition: matrix.h:301
short align_1
Definition: matrix.h:281
short lwr_true_thres
Definition: matrix.h:309
char operator_name[32]
Definition: matrix.h:296
float gantry_tilt
Definition: matrix.h:270
int patient_birth_date
Definition: matrix.h:294
float isotope_halflife
Definition: matrix.h:268
char patient_id[16]
Definition: matrix.h:287
short wobble_speed
Definition: matrix.h:274
float patient_weight
Definition: matrix.h:293
char serial_number[10]
Definition: matrix.h:264
float patient_age
Definition: matrix.h:291
short lwr_sctr_thres
Definition: matrix.h:308
short align_3
Definition: matrix.h:321
char radiopharmaceutical[32]
Definition: matrix.h:269
short align_2
Definition: matrix.h:313
unsigned int scan_start_time
Definition: matrix.h:266
short patient_orientation
Definition: matrix.h:299
char magic_number[14]
Definition: matrix.h:259
float dosage
Definition: matrix.h:317
float init_bed_position
Definition: matrix.h:305
short sw_version
Definition: matrix.h:261
short angular_compression
Definition: matrix.h:278
char original_file_name[32]
Definition: matrix.h:260
char study_description[32]
Definition: matrix.h:297
short acquisition_mode
Definition: matrix.h:312
short num_gates
Definition: matrix.h:303
short septa_state
Definition: matrix.h:320
char facility_name[20]
Definition: matrix.h:300
float patient_height
Definition: matrix.h:292
short num_bed_pos
Definition: matrix.h:304
short acquisition_type
Definition: matrix.h:298
float bed_offset[15]
Definition: matrix.h:306
char patient_name[32]
Definition: matrix.h:288
char data_units[32]
Definition: matrix.h:319
short system_type
Definition: matrix.h:262
unsigned int dose_start_time
Definition: matrix.h:316
float gantry_rotation
Definition: matrix.h:271
short upr_true_thres
Definition: matrix.h:310
short calibration_units_label
Definition: matrix.h:284
float transaxial_fov
Definition: matrix.h:277
float calibration_factor
Definition: matrix.h:282
short num_frames
Definition: matrix.h:302
char patient_sex[1]
Definition: matrix.h:289
float plane_separation
Definition: matrix.h:307
short z_elements[64]
Definition: matrix.h:472
short ring_difference
Definition: matrix.h:463
float norm_quality_factor
Definition: matrix.h:468
short storage_order
Definition: matrix.h:470
float fov_source_width
Definition: matrix.h:467
float norm_min
Definition: matrix.h:465
short num_r_elements
Definition: matrix.h:460
short num_dimensions
Definition: matrix.h:459
float scale_factor
Definition: matrix.h:464
short num_angles
Definition: matrix.h:461
short span
Definition: matrix.h:471
short norm_quality_factor_code
Definition: matrix.h:469
short data_type
Definition: matrix.h:458
short num_z_elements
Definition: matrix.h:462
float norm_max
Definition: matrix.h:466
short align_0
Definition: matrix.h:473
int total_coin_rate
Definition: matrix.h:351
float y_resolution
Definition: matrix.h:334
unsigned int frame_duration
Definition: matrix.h:353
float w_resolution
Definition: matrix.h:336
short scan_max
Definition: matrix.h:342
short phy_planes[8]
Definition: matrix.h:355
short num_dimensions
Definition: matrix.h:326
short num_angles
Definition: matrix.h:328
float z_resolution
Definition: matrix.h:335
short data_type
Definition: matrix.h:325
float x_resolution
Definition: matrix.h:333
short corrections_applied
Definition: matrix.h:329
int r_wave_offset
Definition: matrix.h:338
unsigned int gate_duration
Definition: matrix.h:337
float tot_avg_cor
Definition: matrix.h:349
unsigned int frame_start_time
Definition: matrix.h:352
short scan_min
Definition: matrix.h:341
short num_r_elements
Definition: matrix.h:327
int num_accepted_beats
Definition: matrix.h:339
float scale_factor
Definition: matrix.h:340
short num_z_elements
Definition: matrix.h:330
float loss_correction_fctr
Definition: matrix.h:354
float tot_avg_uncor
Definition: matrix.h:350
int net_trues
Definition: matrix.h:346
short align_0
Definition: matrix.h:332
int multiples
Definition: matrix.h:345
float uncor_singles[16]
Definition: matrix.h:348
float cor_singles[16]
Definition: matrix.h:347
short ring_difference
Definition: matrix.h:331
int delayed
Definition: matrix.h:344
int prompts
Definition: matrix.h:343
Definition: matrix.h:183
int nmats
Definition: matrix.h:183
int nmax
Definition: matrix.h:184
struct MatDir * entry
Definition: matrix.h:185
int nused
Definition: matrix.h:225
int nextblk
Definition: matrix.h:225
int prvblk
Definition: matrix.h:225
int nfree
Definition: matrix.h:225
int nmats
Definition: matrix.h:216
MatDirNode * first
Definition: matrix.h:217
MatDirNode * last
Definition: matrix.h:218
int matstat
Definition: matrix.h:208
int endblk
Definition: matrix.h:207
int strtblk
Definition: matrix.h:206
int matnum
Definition: matrix.h:205
struct matdirnode * next
Definition: matrix.h:209
FileFormat file_format
Definition: matrix.h:536
char * fname
Definition: matrix.h:531
Main_header * mhptr
Definition: matrix.h:532
FILE * fptr
Definition: matrix.h:534
MatDirList * dirlist
Definition: matrix.h:533
char ** interfile_header
Definition: matrix.h:537
int acs
Definition: matrix.h:535
int zdim
Definition: matrix.h:553
MatrixDataType data_type
Definition: matrix.h:547
float z_size
Definition: matrix.h:557
float data_min
Definition: matrix.h:558
float z_origin
Definition: matrix.h:562
int data_size
Definition: matrix.h:550
int xdim
Definition: matrix.h:551
caddr_t data_ptr
Definition: matrix.h:549
float y_origin
Definition: matrix.h:561
float y_size
Definition: matrix.h:556
int matnum
Definition: matrix.h:544
DataSetType mat_type
Definition: matrix.h:546
float data_max
Definition: matrix.h:559
float pixel_size
Definition: matrix.h:555
float x_origin
Definition: matrix.h:560
int ydim
Definition: matrix.h:552
MatrixFile * matfile
Definition: matrix.h:545
float scale_factor
Definition: matrix.h:554
caddr_t shptr
Definition: matrix.h:548