My Project
ecat7h.c
Go to the documentation of this file.
1/******************************************************************************
2
3 ecat7h.c (c) 2008 by Turku PET Centre
4
5 Procedures for editing ECAT 7.x header contents.
6
7 Version:
8 2008-07-24 Vesa Oikonen
9 Content functions copied from previous programs.
10
11******************************************************************************/
12#include <stdio.h>
13#include <stdlib.h>
14#include <math.h>
15#include <ctype.h>
16#include <string.h>
17#include <strings.h>
18#include <unistd.h>
19#include <time.h>
20/*****************************************************************************/
21#include <swap.h>
22#include "include/ecat7.h"
24/*****************************************************************************/
25
26/*****************************************************************************/
34 char *field,
36 char *value
37) {
38 int ii, yy, mm, dd, ho, mi, se;
39 struct tm *st;
40 time_t timet;
41 short int si;
42 float f;
43
44 si=atoi(value); ii=atoi(value); f=atof(value);
45 if(strcmp(field, "magic_number")==0) {
46 strncpy(h->magic_number, value, 14);
47 } else if(strcmp(field, "original_file_name")==0) {
48 strncpy(h->original_file_name, value, 32);
49 } else if(strcmp(field, "sw_version")==0) {
50 if(si<=0) return(2); else h->sw_version=si;
51 } else if(strcmp(field, "system_type")==0) {
52 if(si<0) return(2); else h->system_type=si;
53 } else if(strcmp(field, "file_type")==0) {
54 if(si<0) return(2); else h->file_type=si;
55 } else if(strcmp(field, "serial_number")==0) {
56 strncpy(h->serial_number, value, 10);
57 } else if(strcmp(field, "scan_start_time")==0) {
58 timet=time(NULL); st=localtime(&timet);
59 if(sscanf(value, "%d-%d-%d %d:%d:%d", &yy, &mm, &dd, &ho, &mi, &se)!=6)
60 return(2);
61 st->tm_mday=dd; st->tm_mon=mm-1; st->tm_year=yy-1900;
62 st->tm_hour=ho; st->tm_min=mi; st->tm_sec=se; st->tm_isdst=-1;
63 h->scan_start_time=mktime(st);
64 } else if(strcmp(field, "isotope_name")==0) {
65 strncpy(h->isotope_name, value, 8);
66 } else if(strcmp(field, "isotope_halflife")==0) {
67 if(f<=1.0E-3) return(2); else h->isotope_halflife=f;
68 } else if(strcmp(field, "radiopharmaceutical")==0) {
69 strncpy(h->radiopharmaceutical, value, 32);
70 } else if(strcmp(field, "gantry_tilt")==0) {
71 h->gantry_tilt=f;
72 } else if(strcmp(field, "gantry_rotation")==0) {
73 h->gantry_rotation=f;
74 } else if(strcmp(field, "bed_elevation")==0) {
75 h->bed_elevation=f;
76 } else if(strcmp(field, "intrinsic_tilt")==0) {
77 h->intrinsic_tilt=f;
78 } else if(strcmp(field, "wobble_speed")==0) {
79 h->wobble_speed=si;
80 } else if(strcmp(field, "transm_source_type")==0) {
82 } else if(strcmp(field, "distance_scanned")==0) {
84 } else if(strcmp(field, "transaxial_fov")==0) {
85 h->transaxial_fov=f;
86 } else if(strcmp(field, "angular_compression")==0) {
88 } else if(strcmp(field, "coin_samp_mode")==0) {
89 h->coin_samp_mode=si;
90 } else if(strcmp(field, "axial_samp_mode")==0) {
91 h->axial_samp_mode=si;
92 } else if(strcmp(field, "ecat_calibration_factor")==0) {
94 } else if(strcmp(field, "calibration_units")==0) {
96 } else if(strcmp(field, "calibration_units_label")==0) {
98 } else if(strcmp(field, "compression_code")==0) {
99 h->compression_code=si;
100 } else if(strcmp(field, "study_type")==0) {
101 strncpy(h->study_type, value, 12);
102 } else if(strcmp(field, "patient_id")==0) {
103 strncpy(h->patient_id, value, 16);
104 } else if(strcmp(field, "patient_name")==0) {
105 strncpy(h->patient_name, value, 32);
106 } else if(strcmp(field, "patient_sex")==0) {
107 h->patient_sex=value[0];
108 } else if(strcmp(field, "patient_dexterity")==0) {
109 h->patient_dexterity=value[0];
110 } else if(strcmp(field, "patient_age")==0) {
111 h->patient_age=f;
112 } else if(strcmp(field, "patient_height")==0) {
113 h->patient_height=f;
114 } else if(strcmp(field, "patient_weight")==0) {
115 h->patient_weight=f;
116 } else if(strcmp(field, "patient_birth_date")==0) {
117 timet=time(NULL); st=localtime(&timet);
118 if(sscanf(value, "%d-%d-%d", &yy, &mm, &dd)!=3) return(2);
119 st->tm_mday=dd; st->tm_mon=mm-1; st->tm_year=yy-1900;
120 st->tm_hour=0; st->tm_min=0; st->tm_sec=0; st->tm_isdst=-1;
121 h->patient_birth_date=mktime(st);
122 } else if(strcmp(field, "physician_name")==0) {
123 strncpy(h->physician_name, value, 32);
124 } else if(strcmp(field, "operator_name")==0) {
125 strncpy(h->operator_name, value, 32);
126 } else if(strcmp(field, "study_description")==0) {
127 strncpy(h->study_description, value, 32);
128 } else if(strcmp(field, "acquisition_type")==0) {
129 h->acquisition_type=si;
130 } else if(strcmp(field, "patient_orientation")==0) {
132 } else if(strcmp(field, "facility_name")==0) {
133 strncpy(h->facility_name, value, 20);
134 } else if(strcmp(field, "num_planes")==0) {
135 h->num_planes=si;
136 } else if(strcmp(field, "num_frames")==0) {
137 h->num_frames=si;
138 } else if(strcmp(field, "num_gates")==0) {
139 h->num_gates=si;
140 } else if(strcmp(field, "num_bed_pos")==0) {
141 h->num_bed_pos=si;
142 } else if(strcmp(field, "init_bed_position")==0) {
144 } else if(strcmp(field, "bed_position")==0) {
145 sscanf(value, "%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f",
146 h->bed_position+0, h->bed_position+1, h->bed_position+2,
147 h->bed_position+3, h->bed_position+4, h->bed_position+5,
148 h->bed_position+6, h->bed_position+7, h->bed_position+8,
149 h->bed_position+9, h->bed_position+10, h->bed_position+11,
150 h->bed_position+12, h->bed_position+13, h->bed_position+14
151 );
152 } else if(strcmp(field, "plane_separation")==0) {
153 h->plane_separation=f;
154 } else if(strcmp(field, "lwr_sctr_thres")==0) {
155 h->lwr_sctr_thres=si;
156 } else if(strcmp(field, "lwr_true_thres")==0) {
157 h->lwr_true_thres=si;
158 } else if(strcmp(field, "upr_true_thres")==0) {
159 h->upr_true_thres=si;
160 } else if(strcmp(field, "user_process_code")==0) {
161 strncpy(h->user_process_code, value, 10);
162 } else if(strcmp(field, "acquisition_mode")==0) {
163 h->acquisition_mode=si;
164 } else if(strcmp(field, "bin_size")==0) {
165 h->bin_size=f;
166 } else if(strcmp(field, "branching_fraction")==0) {
168 } else if(strcmp(field, "dose_start_time")==0) {
169 timet=time(NULL); st=localtime(&timet);
170 if(sscanf(value, "%d-%d-%d %d:%d:%d", &yy, &mm, &dd, &ho, &mi, &se)!=6)
171 return(2);
172 st->tm_mday=dd; st->tm_mon=mm-1; st->tm_year=yy-1900;
173 st->tm_hour=ho; st->tm_min=mi; st->tm_sec=se; st->tm_isdst=-1;
174 h->dose_start_time=mktime(st);
175 } else if(strcmp(field, "dosage")==0) {
176 h->dosage=f;
177 } else if(strcmp(field, "well_counter_corr_factor")==0) {
179 } else if(strcmp(field, "data_units")==0) {
180 strncpy(h->data_units, value, 32);
181 } else if(strcmp(field, "septa_state")==0) {
182 h->septa_state=si;
183 } else
184 return(1);
185
186 return(0);
187}
188/*****************************************************************************/
189
190/*****************************************************************************/
199 char *field,
201 char *value
202) {
203 int i, ii;
204 short int si;
205 float f;
206 char *cptr;
207
208 si=atoi(value); ii=atoi(value); f=atof(value);
209
210 if(strcasecmp(field, "DATA_TYPE")==0) {
211 h->data_type=si;
212 } else if(strcasecmp(field, "NUM_DIMENSIONS")==0) {
213 h->num_dimensions=si;
214 } else if(strcasecmp(field, "NUM_R_ELEMENTS")==0) {
215 h->num_r_elements=si;
216 } else if(strcasecmp(field, "NUM_ANGLES")==0) {
217 h->num_angles=si;
218 } else if(strcasecmp(field, "CORRECTIONS_APPLIED")==0) {
220 } else if(strncasecmp(field, "NUM_Z_ELEMENTS", 14)==0) {
221 cptr=strtok(value, " \t,;\n\r");
222 for(i=0; i<64; i++) {
223 if(cptr==NULL) break;
224 h->num_z_elements[i]=(short int)atoi(cptr);
225 cptr=strtok(NULL, " \t,;\n\r");
226 }
227 } else if(strcasecmp(field, "RING_DIFFERENCE")==0) {
228 h->ring_difference=si;
229 } else if(strcasecmp(field, "STORAGE_ORDER")==0) {
230 h->storage_order=si;
231 } else if(strcasecmp(field, "AXIAL_COMPRESSION")==0) {
232 h->axial_compression=si;
233 } else if(strcasecmp(field, "X_RESOLUTION")==0) {
234 h->x_resolution=f;
235 } else if(strcasecmp(field, "V_RESOLUTION")==0) {
236 h->v_resolution=f;
237 } else if(strcasecmp(field, "Z_RESOLUTION")==0) {
238 h->z_resolution=f;
239 } else if(strcasecmp(field, "W_RESOLUTION")==0) {
240 h->w_resolution=f;
241 } else if(strncasecmp(field, "FILL_GATE", 9)==0) {
242 cptr=strtok(value, " \t,;\n\r");
243 for(i=0; i<6; i++) {
244 if(cptr==NULL) break;
245 h->fill_gate[i]=(short int)atoi(cptr);
246 cptr=strtok(NULL, " \t,;\n\r");
247 }
248 } else if(strcasecmp(field, "GATE_DURATION")==0) {
249 h->gate_duration=ii;
250 } else if(strcasecmp(field, "R_WAVE_OFFSET")==0) {
251 h->r_wave_offset=ii;
252 } else if(strcasecmp(field, "NUM_ACCEPTED_BEATS")==0) {
253 h->num_accepted_beats=ii;
254 } else if(strcasecmp(field, "SCALE_FACTOR")==0) {
255 h->scale_factor=f;
256 } else if(strcasecmp(field, "SCAN_MIN")==0) {
257 h->scan_min=si;
258 } else if(strcasecmp(field, "SCAN_MAX")==0) {
259 h->scan_max=si;
260 } else if(strcasecmp(field, "PROMPTS")==0) {
261 h->prompts=ii;
262 } else if(strcasecmp(field, "DELAYED")==0) {
263 h->delayed=ii;
264 } else if(strcasecmp(field, "MULTIPLES")==0) {
265 h->multiples=ii;
266 } else if(strcasecmp(field, "NET_TRUES")==0) {
267 h->net_trues=ii;
268 } else if(strcasecmp(field, "TOT_AVG_COR")==0) {
269 h->tot_avg_cor=f;
270 } else if(strcasecmp(field, "TOT_AVG_UNCOR")==0) {
271 h->tot_avg_uncor=f;
272 } else if(strcasecmp(field, "TOTAL_COIN_RATE")==0) {
273 h->total_coin_rate=ii;
274 } else if(strcasecmp(field, "FRAME_START_TIME")==0) {
275 h->frame_start_time=ii;
276 } else if(strcasecmp(field, "FRAME_DURATION")==0) {
277 h->frame_duration=ii;
278 } else if(strcasecmp(field, "DEADTIME_CORRECTION_FACTOR")==0) {
280 } else if(strncasecmp(field, "FILL_CTI", 8)==0) {
281 cptr=strtok(value, " \t,;\n\r");
282 for(i=0; i<90; i++) {
283 if(cptr==NULL) break;
284 h->fill_cti[i]=(short int)atoi(cptr);
285 cptr=strtok(NULL, " \t,;\n\r");
286 }
287 } else if(strncasecmp(field, "FILL_USER", 9)==0) {
288 cptr=strtok(value, " \t,;\n\r");
289 for(i=0; i<50; i++) {
290 if(cptr==NULL) break;
291 h->fill_user[i]=(short int)atoi(cptr);
292 cptr=strtok(NULL, " \t,;\n\r");
293 }
294 } else if(strncasecmp(field, "UNCOR_SINGLES", 13)==0) {
295 cptr=strtok(value, " \t,;\n\r");
296 for(i=0; i<128; i++) {
297 if(cptr==NULL) break;
298 h->fill_user[i]=(float)atof(cptr);
299 cptr=strtok(NULL, " \t,;\n\r");
300 }
301 } else
302 return(1);
303 return(0);
304}
305/*****************************************************************************/
306
307/*****************************************************************************/
316 char *field,
318 char *value
319) {
320 int ii;
321 short int si;
322 float f;
323
324 si=atoi(value); ii=atoi(value); f=atof(value);
325
326 if(strcasecmp(field, "DATA_TYPE")==0) {
327 h->data_type=si;
328 } else if(strcasecmp(field, "NUM_DIMENSIONS")==0) {
329 h->num_dimensions=si;
330 } else if(strcasecmp(field, "X_DIMENSION")==0) {
331 h->x_dimension=si;
332 } else if(strcasecmp(field, "Y_DIMENSION")==0) {
333 h->y_dimension=si;
334 } else if(strcasecmp(field, "Z_DIMENSION")==0) {
335 h->z_dimension=si;
336 } else if(strcasecmp(field, "X_OFFSET")==0) {
337 h->x_offset=f;
338 } else if(strcasecmp(field, "Y_OFFSET")==0) {
339 h->y_offset=f;
340 } else if(strcasecmp(field, "Z_OFFSET")==0) {
341 h->z_offset=f;
342 } else if(strcasecmp(field, "RECON_ZOOM")==0) {
343 h->recon_zoom=f;
344 } else if(strcasecmp(field, "SCALE_FACTOR")==0) {
345 h->scale_factor=f;
346 } else if(strcasecmp(field, "IMAGE_MIN")==0) {
347 h->image_min=si;
348 } else if(strcasecmp(field, "IMAGE_MAX")==0) {
349 h->image_max=si;
350 } else if(strcasecmp(field, "X_PIXEL_SIZE")==0) {
351 h->x_pixel_size=f;
352 } else if(strcasecmp(field, "Y_PIXEL_SIZE")==0) {
353 h->y_pixel_size=f;
354 } else if(strcasecmp(field, "Z_PIXEL_SIZE")==0) {
355 h->z_pixel_size=f;
356 } else if(strcasecmp(field, "FRAME_DURATION")==0) {
357 h->frame_duration=ii;
358 } else if(strcasecmp(field, "FRAME_START_TIME")==0) {
359 h->frame_start_time=ii;
360 } else if(strcasecmp(field, "FILTER_CODE")==0) {
361 h->filter_code=si;
362 } else if(strcasecmp(field, "X_RESOLUTION")==0) {
363 h->x_resolution=f;
364 } else if(strcasecmp(field, "Y_RESOLUTION")==0) {
365 h->y_resolution=f;
366 } else if(strcasecmp(field, "Z_RESOLUTION")==0) {
367 h->z_resolution=f;
368 } else if(strcasecmp(field, "NUM_R_ELEMENTS")==0) {
369 h->num_r_elements=f;
370 } else if(strcasecmp(field, "NUM_ANGLES")==0) {
371 h->num_angles=f;
372 } else if(strcasecmp(field, "Z_ROTATION_ANGLES")==0) {
373 h->z_rotation_angle=f;
374 } else if(strcasecmp(field, "DECAY_CORR_FCTR")==0) {
375 h->decay_corr_fctr=f;
376 } else if(strcasecmp(field, "PROCESSING_CODE")==0) {
377 h->processing_code=ii;
378 } else if(strcasecmp(field, "GATE_DURATIONR")==0) {
379 h->gate_duration=ii;
380 } else if(strcasecmp(field, "R_WAVE_OFFSET")==0) {
381 h->r_wave_offset=ii;
382 } else if(strcasecmp(field, "NUM_ACCEPTED_BEATS")==0) {
383 h->num_accepted_beats=ii;
384 } else if(strcasecmp(field, "FILTER_CUTOFF_FREQUENCY")==0) {
386 } else if(strcasecmp(field, "FILTER_RESOLUTION")==0) {
388 } else if(strcasecmp(field, "FILTER_RAMP_SLOPE")==0) {
390 } else if(strcasecmp(field, "FILTER_ORDER")==0) {
391 h->filter_order=f;
392 } else if(strcasecmp(field, "FILTER_SCATTER_FRACTION")==0) {
394 } else if(strcasecmp(field, "FILTER_SCATTER_SLOPE")==0) {
396 } else if(strcasecmp(field, "ANNOTATION")==0) {
397 strncpy(h->annotation, value, 40);
398 } else if(strcasecmp(field, "MT_1_1")==0) {
399 h->mt_1_1=f;
400 } else if(strcasecmp(field, "MT_1_2")==0) {
401 h->mt_1_2=f;
402 } else if(strcasecmp(field, "MT_1_3")==0) {
403 h->mt_1_3=f;
404 } else if(strcasecmp(field, "MT_2_1")==0) {
405 h->mt_2_1=f;
406 } else if(strcasecmp(field, "MT_2_2")==0) {
407 h->mt_2_2=f;
408 } else if(strcasecmp(field, "MT_2_3")==0) {
409 h->mt_2_3=f;
410 } else if(strcasecmp(field, "MT_3_1")==0) {
411 h->mt_3_1=f;
412 } else if(strcasecmp(field, "MT_3_2")==0) {
413 h->mt_3_2=f;
414 } else if(strcasecmp(field, "MT_3_3")==0) {
415 h->mt_3_3=f;
416 } else if(strcasecmp(field, "RFILTER_CUTOFF")==0) {
417 h->rfilter_cutoff=f;
418 } else if(strcasecmp(field, "RFILTER_RESOLUTION")==0) {
420 } else if(strcasecmp(field, "RFILTER_CODE")==0) {
421 h->rfilter_code=si;
422 } else if(strcasecmp(field, "RFILTER_ORDER")==0) {
423 h->rfilter_order=si;
424 } else if(strcasecmp(field, "ZFILTER_CUTOFF")==0) {
425 h->zfilter_cutoff=f;
426 } else if(strcasecmp(field, "ZFILTER_RESOLUTION")==0) {
428 } else if(strcasecmp(field, "ZFILTER_CODE")==0) {
429 h->zfilter_code=si;
430 } else if(strcasecmp(field, "ZFILTER_ORDER")==0) {
431 h->zfilter_order=si;
432 } else if(strcasecmp(field, "MT_1_4")==0) {
433 h->mt_1_4=f;
434 } else if(strcasecmp(field, "MT_2_4")==0) {
435 h->mt_2_4=f;
436 } else if(strcasecmp(field, "MT_3_4")==0) {
437 h->mt_3_4=f;
438 } else if(strcasecmp(field, "SCATTER_TYPE")==0) {
439 h->scatter_type=si;
440 } else if(strcasecmp(field, "RECON_TYPE")==0) {
441 h->recon_type=si;
442 } else if(strcasecmp(field, "RECON_VIEWS")==0) {
443 h->recon_views=si;
444 } else
445 return(1);
446
447 return(0);
448}
449/*****************************************************************************/
450
451/*****************************************************************************/
452
int ecat7EditMHeader(ECAT7_mainheader *h, char *field, char *value)
Definition ecat7h.c:30
int ecat7EditSHeader(ECAT7_scanheader *h, char *field, char *value)
Definition ecat7h.c:195
int ecat7EditVHeader(ECAT7_imageheader *h, char *field, char *value)
Definition ecat7h.c:312
float num_angles
Definition ecat7.h:274
short int recon_type
Definition ecat7.h:344
short int image_max
Definition ecat7.h:252
short int filter_order
Definition ecat7.h:294
short int y_dimension
Definition ecat7.h:236
float filter_scatter_slope
Definition ecat7.h:298
short int scatter_type
Definition ecat7.h:342
float scale_factor
Definition ecat7.h:248
short int rfilter_code
Definition ecat7.h:324
short int x_dimension
Definition ecat7.h:234
float x_pixel_size
Definition ecat7.h:254
float z_pixel_size
Definition ecat7.h:258
float zfilter_cutoff
Definition ecat7.h:328
int frame_start_time
Definition ecat7.h:262
int processing_code
Definition ecat7.h:280
float recon_zoom
Definition ecat7.h:246
float decay_corr_fctr
Definition ecat7.h:278
short int z_dimension
Definition ecat7.h:238
short int rfilter_order
Definition ecat7.h:326
float num_r_elements
Definition ecat7.h:272
float y_resolution
Definition ecat7.h:268
short int zfilter_order
Definition ecat7.h:334
float filter_resolution
Definition ecat7.h:290
float x_resolution
Definition ecat7.h:266
int num_accepted_beats
Definition ecat7.h:286
short int data_type
Definition ecat7.h:230
float z_resolution
Definition ecat7.h:270
float filter_ramp_slope
Definition ecat7.h:292
float zfilter_resolution
Definition ecat7.h:330
float rfilter_resolution
Definition ecat7.h:322
float filter_scatter_fraction
Definition ecat7.h:296
float z_rotation_angle
Definition ecat7.h:276
short int num_dimensions
Definition ecat7.h:232
short int image_min
Definition ecat7.h:250
short int filter_code
Definition ecat7.h:264
char annotation[40]
Definition ecat7.h:300
short int recon_views
Definition ecat7.h:346
short int zfilter_code
Definition ecat7.h:332
float y_pixel_size
Definition ecat7.h:256
float rfilter_cutoff
Definition ecat7.h:320
float filter_cutoff_frequency
Definition ecat7.h:288
char serial_number[10]
Definition ecat7.h:115
char patient_name[32]
Definition ecat7.h:158
char study_description[32]
Definition ecat7.h:178
float well_counter_corr_factor
Definition ecat7.h:219
short int compression_code
Definition ecat7.h:152
char physician_name[32]
Definition ecat7.h:174
short int patient_orientation
Definition ecat7.h:183
short int file_type
Definition ecat7.h:113
char isotope_name[8]
Definition ecat7.h:119
int scan_start_time
Definition ecat7.h:117
float distance_scanned
Definition ecat7.h:137
char original_file_name[32]
Definition ecat7.h:107
char facility_name[20]
Definition ecat7.h:185
char patient_id[16]
Definition ecat7.h:156
float transaxial_fov
Definition ecat7.h:139
short int sw_version
Definition ecat7.h:109
short int num_gates
Definition ecat7.h:191
short int upr_true_thres
Definition ecat7.h:205
short int angular_compression
Definition ecat7.h:141
short int calibration_units
Definition ecat7.h:148
float patient_weight
Definition ecat7.h:168
float gantry_tilt
Definition ecat7.h:125
short int transm_source_type
Definition ecat7.h:135
short int wobble_speed
Definition ecat7.h:133
char magic_number[14]
Definition ecat7.h:105
float plane_separation
Definition ecat7.h:199
int dose_start_time
Definition ecat7.h:215
short int num_frames
Definition ecat7.h:189
float gantry_rotation
Definition ecat7.h:127
float init_bed_position
Definition ecat7.h:195
short int coin_samp_mode
Definition ecat7.h:143
short int acquisition_type
Definition ecat7.h:181
float bed_elevation
Definition ecat7.h:129
float isotope_halflife
Definition ecat7.h:121
char user_process_code[10]
Definition ecat7.h:207
short int axial_samp_mode
Definition ecat7.h:145
char operator_name[32]
Definition ecat7.h:176
short int calibration_units_label
Definition ecat7.h:150
char data_units[32]
Definition ecat7.h:221
short int num_planes
Definition ecat7.h:187
short int acquisition_mode
Definition ecat7.h:209
float patient_height
Definition ecat7.h:166
char radiopharmaceutical[32]
Definition ecat7.h:123
int patient_birth_date
Definition ecat7.h:172
short int septa_state
Definition ecat7.h:223
float bin_size
Definition ecat7.h:211
float intrinsic_tilt
Definition ecat7.h:131
float branching_fraction
Definition ecat7.h:213
char patient_dexterity
Definition ecat7.h:162
short int num_bed_pos
Definition ecat7.h:193
float patient_age
Definition ecat7.h:164
float ecat_calibration_factor
Definition ecat7.h:146
short int lwr_true_thres
Definition ecat7.h:203
short int lwr_sctr_thres
Definition ecat7.h:201
short int system_type
Definition ecat7.h:111
char patient_sex
Definition ecat7.h:160
char study_type[12]
Definition ecat7.h:154
float bed_position[15]
Definition ecat7.h:197
short int corrections_applied
Definition ecat7.h:363
float z_resolution
Definition ecat7.h:377
float w_resolution
Definition ecat7.h:379
float v_resolution
Definition ecat7.h:375
float x_resolution
Definition ecat7.h:373
short int fill_cti[90]
Definition ecat7.h:415
short int num_dimensions
Definition ecat7.h:357
short int num_angles
Definition ecat7.h:361
int gate_duration
Definition ecat7.h:383
short int scan_max
Definition ecat7.h:393
short int num_z_elements[64]
Definition ecat7.h:365
int frame_start_time
Definition ecat7.h:409
float scale_factor
Definition ecat7.h:389
float tot_avg_uncor
Definition ecat7.h:405
short int fill_user[50]
Definition ecat7.h:417
float deadtime_correction_factor
Definition ecat7.h:413
float tot_avg_cor
Definition ecat7.h:403
short int data_type
Definition ecat7.h:355
short int axial_compression
Definition ecat7.h:371
short int fill_gate[6]
Definition ecat7.h:381
short int ring_difference
Definition ecat7.h:367
int r_wave_offset
Definition ecat7.h:385
int frame_duration
Definition ecat7.h:411
int num_accepted_beats
Definition ecat7.h:387
short int scan_min
Definition ecat7.h:391
short int num_r_elements
Definition ecat7.h:359
short int storage_order
Definition ecat7.h:369
int total_coin_rate
Definition ecat7.h:407