My Project
ecat63.h
Go to the documentation of this file.
1/******************************************************************************
2
3 Copyright (c) 2003-2008 Turku PET Centre
4
5 ecat63.h
6
7 Date:
8 1996-10-30 VO
9 2002-01-20 VO
10 2002-02-01 VO
11 2002-02-12 VO
12 2002-08-23 VO
13 2003-07-21 VO
14 2003-08-05 VO
15 2003-09-08 VO
16 2004-06-27 VO
17 2004-12-28 VO
18 2007-02-27 VO
19 2007-03-13 VO
20 2008-07-24 VO
21
22
23******************************************************************************/
24#ifndef _ECAT63_H_
25#define _ECAT63_H_
26/*****************************************************************************/
27#define MatBLKSIZE 512
28#define MatFirstDirBlk 2
29/* Data types */
30#define BYTE_TYPE 1
31#define VAX_I2 2
32#define VAX_I4 3
33#define VAX_R4 4
34#define IEEE_R4 5
35#define SUN_I2 6
36#define SUN_I4 7
37/* File types */
38#define RAW_DATA 1
39#define IMAGE_DATA 2
40#define ATTN_DATA 3
41#define NORM_DATA 4
42/*****************************************************************************/
43#define ECAT63_SYSTEM_TYPE_DEFAULT 931
44/*****************************************************************************/
45/* Backup file extension */
46#ifndef BACKUP_EXTENSION
47#define BACKUP_EXTENSION ".bak"
48#endif
49/*****************************************************************************/
50char ecat63errmsg[128];
51/*****************************************************************************/
53/*****************************************************************************/
54
55typedef struct {
56 int matnum;
58 int endblk;
60} MatDir;
61
62typedef struct {
67
68typedef struct {
69 int frame, plane, gate, data, bed;
70} Matval;
71
104
125
145
153
162
170
176
186
192/*****************************************************************************/
193/* Read functions */
194extern int ecat63ReadMainheader(FILE *fp, ECAT63_mainheader *h);
195extern int ecat63ReadImageheader(FILE *fp, int blk, ECAT63_imageheader *h);
196extern int ecat63ReadScanheader(FILE *fp, int blk, ECAT63_scanheader *h);
197extern int ecat63ReadAttnheader(FILE *fp, int blk, ECAT63_attnheader *h);
198extern int ecat63ReadNormheader(FILE *fp, int blk, ECAT63_normheader *h);
199extern int ecat63ReadMatdata(FILE *fp, int strtblk, int blkNr, char *data, int dtype);
200extern int ecat63ReadImageMatrix(FILE *fp, int strtblk, int lastblk, ECAT63_imageheader *h, float **f);
201extern int ecat63ReadScanMatrix(FILE *fp, int strtblk, int lastblk, ECAT63_scanheader *h, float **f);
202extern float ecat63rFloat(void *bufi, int isvax, int islittle);
203extern int ecat63rInt(void *bufi, int isvax, int islittle);
204extern int ecat63pxlbytes(short int data_type);
205/*****************************************************************************/
206/* Matrix list functions */
207extern void ecat63InitMatlist(MATRIXLIST *mlist);
208extern void ecat63EmptyMatlist(MATRIXLIST *mlist);
209extern int ecat63ReadMatlist(FILE *fp, MATRIXLIST *ml);
210extern void ecat63PrintMatlist(MATRIXLIST *ml);
211extern int mat_numcod(int frame, int plane, int gate, int data, int bed);
212extern void mat_numdoc(int matnum, Matval *matval);
213extern int ecat63Matenter(FILE *fp, int matnum, int blkNr);
214extern void ecat63SortMatlistByPlane(MATRIXLIST *ml);
215extern void ecat63SortMatlistByFrame(MATRIXLIST *ml);
216extern int ecat63CheckMatlist(MATRIXLIST *ml);
217extern int ecat63DeleteLateFrames(MATRIXLIST *ml, int frame_nr);
218extern int ecat63GetMatrixBlockSize(MATRIXLIST *mlist, int *blk_nr);
219extern int ecat63GetPlaneAndFrameNr(MATRIXLIST *mlist, ECAT63_mainheader *h, int *plane_nr, int *frame_nr);
220extern int ecat63GetNums(MATRIXLIST *ml, short int *num_planes, short int *num_frames, short int *num_gates, short int *num_bed_pos);
221extern int ecat63GatherMatlist(MATRIXLIST *ml, short int do_planes, short int do_frames, short int do_gates, short int do_beds);
222/*****************************************************************************/
223/* Write functions */
224extern int ecat63WriteMainheader(FILE *fp, ECAT63_mainheader *h);
225extern int ecat63WriteImageheader(FILE *fp, int block, ECAT63_imageheader *h);
226extern int ecat63WriteScanheader(FILE *fp, int block, ECAT63_scanheader *h);
227extern int ecat63WriteAttnheader(FILE *fp, int block, ECAT63_attnheader *h);
228extern int ecat63WriteNormheader(FILE *fp, int block, ECAT63_normheader *h);
229extern FILE *ecat63Create(const char *fname, ECAT63_mainheader *h);
230extern int ecat63WriteMatdata(FILE *fp, int strtblk, char *data, int pxlNr, int pxlSize);
231extern int ecat63WriteScan(FILE *fp, int matnum, ECAT63_scanheader *h, void *data);
232extern int ecat63WriteImage(FILE *fp, int matnum, ECAT63_imageheader *h, void *data);
233extern int ecat63WriteNorm(FILE *fp, int matnum, ECAT63_normheader *h, void *data);
234extern int ecat63WriteAttn(FILE *fp, int matnum, ECAT63_attnheader *h, void *data);
235extern int ecat63WriteImageMatrix(FILE *fp, int matnum, ECAT63_imageheader *h, float *fdata);
236extern int ecat63WriteScanMatrix(FILE *fp, int matnum, ECAT63_scanheader *h, float *fdata);
237extern void ecat63wFloat(float *bufi, void *bufo, int tovax, int islittle);
238extern void ecat63wInt(int *bufi, void *bufo, int tovax, int islittle);
239extern int ecat63_is_scaling_needed(float amax, float *data, int nr);
240/*****************************************************************************/
241/* Printing functions */
242extern void ecat63PrintMainheader(ECAT63_mainheader *h, FILE *fp);
243extern void ecat63PrintImageheader(ECAT63_imageheader *h, FILE *fp);
244extern void ecat63PrintScanheader(ECAT63_scanheader *h, FILE *fp);
245extern void ecat63PrintAttnheader(ECAT63_attnheader *h, FILE *fp);
246extern void ecat63PrintNormheader(ECAT63_normheader *h, FILE *fp);
247extern int ecat6PrintSubheader(ECAT63_mainheader mh, FILE *fp,
248 int plane, int frame, FILE *ofp);
249extern char *ecat63Datatype(short int dtype);
250extern char *ecat63Unit(short int dunit);
251extern void float2parts(float *buf);
252/*****************************************************************************/
253#endif
254
int ecat63Matenter(FILE *fp, int matnum, int blkNr)
Definition ecat63ml.c:186
struct ecat63_normheader ECAT63_normheader
struct ecat63_mainheader ECAT63_mainheader
float ecat63rFloat(void *bufi, int isvax, int islittle)
Definition ecat63r.c:671
int ecat63WriteScan(FILE *fp, int matnum, ECAT63_scanheader *h, void *data)
Definition ecat63w.c:478
void ecat63PrintMainheader(ECAT63_mainheader *h, FILE *fp)
Definition ecat63p.c:62
struct ecat63_attnheader ECAT63_attnheader
char ecat63errmsg[128]
Definition ecat63.h:50
struct matdirnode MatDirNode
int ecat63GetPlaneAndFrameNr(MATRIXLIST *mlist, ECAT63_mainheader *h, int *plane_nr, int *frame_nr)
Definition ecat63ml.c:414
void ecat63InitMatlist(MATRIXLIST *mlist)
Definition ecat63ml.c:69
char * ecat63Datatype(short int dtype)
Definition ecat63p.c:227
int ecat63rInt(void *bufi, int isvax, int islittle)
Definition ecat63r.c:694
void ecat63EmptyMatlist(MATRIXLIST *mlist)
Definition ecat63ml.c:80
int ECAT63_TEST
Definition ecat63.h:52
int ecat63WriteImageheader(FILE *fp, int block, ECAT63_imageheader *h)
Definition ecat63w.c:150
struct ecat63_imageheader ECAT63_imageheader
int ecat63WriteScanMatrix(FILE *fp, int matnum, ECAT63_scanheader *h, float *fdata)
Definition ecat63w.c:784
int ecat63GatherMatlist(MATRIXLIST *ml, short int do_planes, short int do_frames, short int do_gates, short int do_beds)
Definition ecat63ml.c:519
struct matrixdata MatrixData
int ecat63WriteAttnheader(FILE *fp, int block, ECAT63_attnheader *h)
Definition ecat63w.c:221
void ecat63wFloat(float *bufi, void *bufo, int tovax, int islittle)
Definition ecat63w.c:863
struct ecat63_scanheader ECAT63_scanheader
void ecat63PrintImageheader(ECAT63_imageheader *h, FILE *fp)
Definition ecat63p.c:115
int ecat63WriteScanheader(FILE *fp, int block, ECAT63_scanheader *h)
Definition ecat63w.c:269
void ecat63PrintScanheader(ECAT63_scanheader *h, FILE *fp)
Definition ecat63p.c:152
int ecat63ReadNormheader(FILE *fp, int blk, ECAT63_normheader *h)
Definition ecat63r.c:375
int ecat63_is_scaling_needed(float amax, float *data, int nr)
Definition ecat63w.c:672
int ecat63ReadMatlist(FILE *fp, MATRIXLIST *ml)
Definition ecat63ml.c:97
void ecat63PrintNormheader(ECAT63_normheader *h, FILE *fp)
Definition ecat63p.c:208
int mat_numcod(int frame, int plane, int gate, int data, int bed)
Definition ecat63ml.c:266
int ecat63ReadMatdata(FILE *fp, int strtblk, int blkNr, char *data, int dtype)
Definition ecat63r.c:432
int ecat63ReadScanheader(FILE *fp, int blk, ECAT63_scanheader *h)
Definition ecat63r.c:296
int ecat63WriteAttn(FILE *fp, int matnum, ECAT63_attnheader *h, void *data)
Definition ecat63w.c:576
int ecat63WriteNorm(FILE *fp, int matnum, ECAT63_normheader *h, void *data)
Definition ecat63w.c:527
void float2parts(float *buf)
Definition ecat63p.c:282
int ecat63GetNums(MATRIXLIST *ml, short int *num_planes, short int *num_frames, short int *num_gates, short int *num_bed_pos)
Definition ecat63ml.c:462
int ecat63GetMatrixBlockSize(MATRIXLIST *mlist, int *blk_nr)
Definition ecat63ml.c:382
struct matdirlist MatDirList
int ecat63WriteImageMatrix(FILE *fp, int matnum, ECAT63_imageheader *h, float *fdata)
Definition ecat63w.c:700
int ecat63DeleteLateFrames(MATRIXLIST *ml, int frame_nr)
Definition ecat63ml.c:360
void ecat63SortMatlistByPlane(MATRIXLIST *ml)
Definition ecat63ml.c:291
int ecat63ReadImageMatrix(FILE *fp, int strtblk, int lastblk, ECAT63_imageheader *h, float **f)
Definition ecat63r.c:494
void ecat63PrintMatlist(MATRIXLIST *ml)
Definition ecat63ml.c:160
int ecat63WriteNormheader(FILE *fp, int block, ECAT63_normheader *h)
Definition ecat63w.c:336
int ecat63WriteImage(FILE *fp, int matnum, ECAT63_imageheader *h, void *data)
Definition ecat63w.c:429
FILE * ecat63Create(const char *fname, ECAT63_mainheader *h)
Definition ecat63w.c:386
void ecat63PrintAttnheader(ECAT63_attnheader *h, FILE *fp)
Definition ecat63p.c:186
char * ecat63Unit(short int dunit)
Definition ecat63p.c:250
void ecat63wInt(int *bufi, void *bufo, int tovax, int islittle)
Definition ecat63w.c:885
int ecat63ReadAttnheader(FILE *fp, int blk, ECAT63_attnheader *h)
Definition ecat63r.c:238
int ecat6PrintSubheader(ECAT63_mainheader mh, FILE *fp, int plane, int frame, FILE *ofp)
Definition ecat63p.c:296
struct matrix_file Matrix_file
int ecat63CheckMatlist(MATRIXLIST *ml)
Definition ecat63ml.c:342
int ecat63ReadImageheader(FILE *fp, int blk, ECAT63_imageheader *h)
Definition ecat63r.c:152
int ecat63WriteMatdata(FILE *fp, int strtblk, char *data, int pxlNr, int pxlSize)
Definition ecat63w.c:629
int ecat63ReadScanMatrix(FILE *fp, int strtblk, int lastblk, ECAT63_scanheader *h, float **f)
Definition ecat63r.c:586
void mat_numdoc(int matnum, Matval *matval)
Definition ecat63ml.c:276
int ecat63pxlbytes(short int data_type)
Definition ecat63r.c:711
int ecat63WriteMainheader(FILE *fp, ECAT63_mainheader *h)
Definition ecat63w.c:73
void ecat63SortMatlistByFrame(MATRIXLIST *ml)
Definition ecat63ml.c:316
int ecat63ReadMainheader(FILE *fp, ECAT63_mainheader *h)
Definition ecat63r.c:50
MatDir * matdir
Definition ecat63.h:65
int matrixNr
Definition ecat63.h:63
int matrixSpace
Definition ecat63.h:64
int matstat
Definition ecat63.h:59
int endblk
Definition ecat63.h:58
int matnum
Definition ecat63.h:56
int strtblk
Definition ecat63.h:57
int bed
Definition ecat63.h:69
float attenuation_coeff
Definition ecat63.h:159
float scale_factor
Definition ecat63.h:157
float sample_distance
Definition ecat63.h:160
short int data_type
Definition ecat63.h:155
short int dimension_1
Definition ecat63.h:156
short int dimension_2
Definition ecat63.h:156
short int attenuation_type
Definition ecat63.h:155
short int data_type
Definition ecat63.h:107
short int recon_start_day
Definition ecat63.h:120
short int quant_units
Definition ecat63.h:119
short int num_dimensions
Definition ecat63.h:107
float decay_corr_fctr
Definition ecat63.h:118
float well_counter_cal_fctr
Definition ecat63.h:121
short int fill2[26]
Definition ecat63.h:123
short int image_max
Definition ecat63.h:109
float image_rotation
Definition ecat63.h:117
char annotation[40]
Definition ecat63.h:122
float plane_eff_corr_fctr
Definition ecat63.h:117
short int dimension_1
Definition ecat63.h:107
short int recon_start_month
Definition ecat63.h:120
float ecat_calibration_fctr
Definition ecat63.h:121
char fill1[126]
Definition ecat63.h:106
short int slice_location
Definition ecat63.h:112
float loss_corr_fctr
Definition ecat63.h:118
short int dimension_2
Definition ecat63.h:107
short int processing_code
Definition ecat63.h:119
short int image_min
Definition ecat63.h:109
short int filter_code
Definition ecat63.h:115
short int recon_start_hour
Definition ecat63.h:113
short int recon_start_sec
Definition ecat63.h:113
float intrinsic_tilt
Definition ecat63.h:118
short int recon_start_year
Definition ecat63.h:120
short int recon_start_min
Definition ecat63.h:113
float filter_params[6]
Definition ecat63.h:121
short int num_frames
Definition ecat63.h:97
short int upr_true_thres
Definition ecat63.h:99
char fill1[14]
Definition ecat63.h:73
short int lwr_sctr_thres
Definition ecat63.h:99
short int scan_start_minute
Definition ecat63.h:81
short int acquisition_type
Definition ecat63.h:95
short int scan_start_hour
Definition ecat63.h:81
short int scan_start_day
Definition ecat63.h:80
float gantry_rotation
Definition ecat63.h:85
char patient_age[10]
Definition ecat63.h:92
float transaxial_fov
Definition ecat63.h:87
char patient_weight[10]
Definition ecat63.h:92
float gantry_tilt
Definition ecat63.h:85
float bed_offset[15]
Definition ecat63.h:98
short int sw_version
Definition ecat63.h:75
short int bed_type
Definition ecat63.h:95
short int num_gates
Definition ecat63.h:97
char radiopharmaceutical[32]
Definition ecat63.h:84
short int axial_samp_mode
Definition ecat63.h:88
char node_id[10]
Definition ecat63.h:79
char study_description[32]
Definition ecat63.h:94
short int lwr_true_thres
Definition ecat63.h:99
float bed_elevation
Definition ecat63.h:85
short int data_type
Definition ecat63.h:76
short int septa_type
Definition ecat63.h:95
char patient_name[32]
Definition ecat63.h:91
short int system_type
Definition ecat63.h:77
char physician_name[32]
Definition ecat63.h:93
float init_bed_position
Definition ecat63.h:98
char original_file_name[20]
Definition ecat63.h:74
short int fill2[20]
Definition ecat63.h:102
float isotope_halflife
Definition ecat63.h:83
char patient_dexterity
Definition ecat63.h:93
short int transm_source_type
Definition ecat63.h:86
short int compression_code
Definition ecat63.h:90
float calibration_factor
Definition ecat63.h:89
char operator_name[32]
Definition ecat63.h:93
char ecat_format[14]
Definition ecat63.h:73
char patient_id[16]
Definition ecat63.h:91
short int rot_source_speed
Definition ecat63.h:86
short int scan_start_year
Definition ecat63.h:80
short int wobble_speed
Definition ecat63.h:86
short int scan_start_month
Definition ecat63.h:80
float axial_fov
Definition ecat63.h:87
char patient_height[10]
Definition ecat63.h:92
char isotope_code[8]
Definition ecat63.h:82
short int calibration_units
Definition ecat63.h:90
short int num_bed_pos
Definition ecat63.h:97
char study_name[12]
Definition ecat63.h:91
short int scan_start_second
Definition ecat63.h:81
char facility_name[20]
Definition ecat63.h:96
char user_process_code[10]
Definition ecat63.h:101
short int file_type
Definition ecat63.h:78
short int num_planes
Definition ecat63.h:97
short int coin_samp_mode
Definition ecat63.h:88
float plane_separation
Definition ecat63.h:98
short int transaxial_samp_mode
Definition ecat63.h:88
short int norm_month
Definition ecat63.h:150
short int norm_second
Definition ecat63.h:150
short int norm_year
Definition ecat63.h:150
short int dimension_1
Definition ecat63.h:148
float fov_source_width
Definition ecat63.h:151
short int norm_hour
Definition ecat63.h:150
float scale_factor
Definition ecat63.h:149
short int norm_minute
Definition ecat63.h:150
short int dimension_2
Definition ecat63.h:148
short int data_type
Definition ecat63.h:147
short int norm_day
Definition ecat63.h:150
float cor_singles[16]
Definition ecat63.h:138
float uncor_singles[16]
Definition ecat63.h:138
short int fill2[22]
Definition ecat63.h:143
float loss_correction_fctr
Definition ecat63.h:142
float isotope_halflife
Definition ecat63.h:132
short int processing_code
Definition ecat63.h:130
short int dimension_2
Definition ecat63.h:129
short int scan_max
Definition ecat63.h:136
short int frame_duration_sec
Definition ecat63.h:133
short int scan_min
Definition ecat63.h:136
float sample_distance
Definition ecat63.h:131
float scale_factor
Definition ecat63.h:135
short int data_type
Definition ecat63.h:128
short int dimension_1
Definition ecat63.h:129
char fill1[126]
Definition ecat63.h:127
short int smoothing
Definition ecat63.h:130
float tot_avg_uncor
Definition ecat63.h:139
float tot_avg_cor
Definition ecat63.h:139
int nmats
Definition ecat63.h:172
MatDirNode * first
Definition ecat63.h:173
MatDirNode * last
Definition ecat63.h:174
int matstat
Definition ecat63.h:167
int endblk
Definition ecat63.h:166
int strtblk
Definition ecat63.h:165
int matnum
Definition ecat63.h:164
struct matdirnode * next
Definition ecat63.h:168
FILE * fptr
Definition ecat63.h:190
MatDirList * dirlist
Definition ecat63.h:189
ECAT63_mainheader * mhptr
Definition ecat63.h:188
int nelements
Definition ecat63.h:182
char * shptr
Definition ecat63.h:179
int mat_type
Definition ecat63.h:178
int data_type
Definition ecat63.h:184
char * data_ptr
Definition ecat63.h:180
int nviews
Definition ecat63.h:181
int nblks
Definition ecat63.h:183