28 {
29 int iunit, punit;
30
31 if(verbose>0) printf("calibration_unit_check_dft_vs_img()\n");
32 if(errmsg!=NULL) sprintf(errmsg, "program error");
33 if(dft==NULL || img==NULL) return 1;
34
37
38 if(iunit==CUNIT_UNKNOWN) {
39
40 if(punit==CUNIT_UNKNOWN) {
41 if(errmsg!=NULL) sprintf(errmsg, "unknown concentration units");
42 return -1;
43 } else {
44 if(errmsg!=NULL)
45 sprintf(errmsg, "unknown input concentration unit, now set to PET unit");
47 return -2;
48 }
49 }
50
51
52 if(punit==CUNIT_UNKNOWN) {
53 if(errmsg!=NULL) sprintf(errmsg, "unknown concentration units in PET data");
54 return -3;
55 }
56
57
58 if(iunit==CUNIT_KBQ_PER_ML) {
59
60 if(punit==CUNIT_KBQ_PER_ML) {
61 if(errmsg!=NULL)
62 sprintf(errmsg, "input and PET data have the same concentration units.\n");
63 return 0;
64 } else if(punit==CUNIT_BQ_PER_ML) {
66 if(errmsg!=NULL)
67 sprintf(errmsg,
"input units converted to %s\n", dft->
unit);
68 return 0;
69 } else {
70 if(errmsg!=NULL)
71 sprintf(errmsg, "different concentration units in input and PET data");
72 return -4;
73 }
74 } else if(iunit==CUNIT_BQ_PER_ML) {
75
76 if(punit==CUNIT_BQ_PER_ML) {
77 if(errmsg!=NULL)
78 sprintf(errmsg, "input and PET data have the same concentration units.\n");
79 return 0;
80 } else if(punit==CUNIT_KBQ_PER_ML) {
82 if(errmsg!=NULL)
83 sprintf(errmsg,
"input units converted to %s\n", dft->
unit);
84 return 0;
85 } else {
86 if(errmsg!=NULL)
87 sprintf(errmsg, "different concentration units in input and PET data");
88 return -4;
89 }
90 } else {
91 if(errmsg!=NULL)
92 sprintf(errmsg, "check the concentration units in input and PET data");
93 return -5;
94 }
95
96 return 0;
97}
int dftUnitConversion(DFT *dft, int dunit)
char * imgUnit(int dunit)
int petCunitId(const char *unit)
char unit[MAX_UNITS_LEN+1]