ecat 6.0.0
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__
27typedef 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
58
59/*
60typedef enum {
61 UnknownMatDataType, ByteData, VAX_Ix2, VAX_Ix4,
62 VAX_Rx4, IeeeFloat, SunShort, SunLong, NumMatrixDataTypes, ColorData,
63 BitData
64} MatrixDataType;
65*/
66typedef enum {
69/* Unsigned Short Big and Little Endian, PseudoColor, TrueColor, BitData*/
72
75
76
82
85
86
90
95
97
99
123
126 ArcPrc=256, DecayPrc=512, OnComPrc=1024, RandomSub=2048 };
127
128
129extern int numDisplayUnits;
130extern char* datasettype[NumDataSetTypes];
131extern char* dstypecode[NumDataSetTypes];
132extern char* scantype[NumScanTypes];
133extern char* scantypecode[NumScanTypes];
134extern char* customDisplayUnits[];
135extern float ecfconverter[NumOldUnits];
136extern char* calstatus[NumCalibrationStatus];
137extern char* sexcode;
138extern char* dexteritycode;
139extern char* typeFilterLabel[NumDataMasks];
140
142extern char matrix_errtxt[];
143
144
145/*
146 ecat 6.4 compatibility definitions
147*/
148typedef enum { /* matrix data types */
157 }
159
160#define MAT_SUB_HEADER 255 /* operation to sub-header only */
161
170
171/*
172 end of ecat 6.4 definitions
173*/
174
175struct MatDir {
179 int matstat; };
180
181
182struct matdir
183 { int nmats,
185 struct MatDir *entry;
186 };
187
188
189struct Matval {
191 };
192
200
201
202typedef
203 struct matdirnode
204 {
205 int matnum ;
207 int endblk ;
209 struct matdirnode *next ;
210 }
212
213typedef
214 struct matdirlist
215 {
216 int nmats ;
219 }
221
222typedef
223 struct matdirblk
224 {
226 struct MatDir matdir[31] ;
227 }
229
230typedef 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
257
258typedef struct XMAIN_HEAD {
259 char magic_number[14];
265 short align_0; /* 4 byte alignment purpose */
266 unsigned int scan_start_time;
281 short align_1;
286 char study_name[12];
287 char patient_id[16];
288 char patient_name[32];
289 char patient_sex[1];
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];
321 short align_3;
323
357
390
391typedef struct XIMAGE_SUB {
397 short align_0;
398 float z_offset;
399 float x_offset;
400 float y_offset;
408 unsigned int frame_duration;
409 unsigned int frame_start_time;
411 short align_1;
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;
454 short align_3;
456
475
494
526
527typedef enum { ECAT6, ECAT7, Interfile } FileFormat;
528typedef
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
541typedef
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)
572extern "C" {
573/*
574 * high level user functions
575 */
576#endif
577void SWAB(const void *from, void *to, int len);
578void SWAW(const short *from, short *to, int len);
579int find_bmin(const u_char*, int size);
580int find_bmax(const u_char*, int size);
581int find_smin(const short*, int size);
582int find_smax(const short*, int size);
583int find_imin(const int*, int size);
584int find_imax(const int*, int size);
585float find_fmin(const float*, int size);
586float find_fmax(const float*, int size);
587int matspec(const char* specs, char* fname ,int* matnum);
588char* is_analyze(const char* );
590MatrixFile* matrix_open(const char*,int,int);
591MatrixData* matrix_read(MatrixFile*, int matnum, int type);
593 int segment);
595 int segment);
597int mat_numcod(int frame, int plane, int gate, int data, int bed);
598int mat_numdoc(int, struct Matval*);
600void matrix_perror(const char*);
602int matrix_find(MatrixFile*, int matnum, struct MatDir*);
603int crash(char *fmt, ...);
604MatrixData *load_volume7(MatrixFile *matrix_file, int frame, int gate, int data, int bedstart, int bedend);
605int 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 */
641struct matdir *mat_read_dir(FILE *, Main_header*, char *selector);
642int mat_read_matrix_data(FILE *, Main_header*, int blk, int nblks, short* bufr);
643int mat_enter(FILE *, Main_header *mhptr, int matnum, int nblks);
644int mat_lookup(FILE *fptr, Main_header *mhptr, int matnum, struct MatDir *entry);
645int mat_rblk(FILE *fptr, int blkno, char *bufr, int nblks);
646int mat_wblk(FILE *fptr, int blkno, char *bufr, int nblks);
647void swaw(short *from, short *to, int length);
648int insert_mdir(struct MatDir matdir,MatDirList *dirlist);
649FILE *mat_create( char *fname, Main_header *mhead );
650
651#if defined(__cplusplus)
652}
653#endif
654#else /* __cplusplus */
655extern float find_fmin(), find_fmax();
657extern MatrixData *matrix_read(), *matrix_object_create();
659extern Main_header *matrix_init_main_header();
660extern FILE* mat_open();
661extern MatDirList *mat_read_directory();
662extern char* is_analyze();
663extern void free_matrix_data();
664#endif /* __cplusplus */
665extern int ecat_default_version;
666#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)
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 *)
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)
MatrixData * matrix_read_view(MatrixFile *, MatrixData *volume, int view, int segment)
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)
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 *)
struct matdir * mat_read_dir(FILE *, Main_header *, char *selector)
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
MatrixFile * matrix_create(const char *, int, Main_header *)
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
char * is_analyze(const char *)
MatrixData * matrix_read_slice(MatrixFile *, MatrixData *volume, int slice_num, int segment)
int mat_read_Scan3D_subheader(FILE *, Main_header *, int blknum, Scan3D_subheader *)
char * typeFilterLabel[NumDataMasks]
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 *)
MatrixData * load_volume7(MatrixFile *matrix_file, int frame, int gate, int data, int bedstart, int bedend)
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
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
MatrixData * matrix_read(MatrixFile *, int matnum, int type)
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 *)
MatrixFile * matrix_open(const char *, int, int)
int insert_mdir(struct MatDir matdir, MatDirList *dirlist)
int mat_write_attn_subheader(FILE *, Main_header *, int blknum, Attn_subheader *)
char * customDisplayUnits[]
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 *)
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
FILE * mat_create(char *fname, Main_header *mhead)
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)
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
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
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
struct MatDir matdir[31]
Definition matrix.h:226
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 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