38 int ri, fi, isotopeID=-1;
41 if(verbose>0) printf(
"dftDecayCorrection(dft, %g, %d, %d, %d, %d, ...)\n",
45 if(status!=NULL) strcpy(status,
"invalid input");
46 if(dft==NULL)
return(1);
53 if(verbose>0) printf(
"dft->timeunit := %d\n", dft->
timeunit);
54 if(status!=NULL) strcpy(status,
"sample time unit is not specified");
65 if(verbose>1) printf(
" isotope := %s\n", dft->
isotope);
69 fprintf(stderr,
"Warning: halflife %g min is not identified.\n", hl);
74 if(verbose>0) printf(
"dft->isotope := %s\n", dft->
isotope);
75 if(status!=NULL) strcpy(status,
"valid isotope is not specified");
78 if(verbose>1) printf(
" half-life := %g min\n", hl);
84 if(dft->
timeunit==TUNIT_SEC) hl*=60.0;
85 else if(dft->
timeunit==TUNIT_HOUR) hl/=60.0;
86 lambda=
hl2lambda(hl);
if(mode==0) lambda=-lambda;
87 if(verbose>1) printf(
"lambda := %e\n", lambda);
93 if(mode!=0) printf(
"decay correction\n");
94 else printf(
"removing decay correction\n");
96 for(fi=0; fi<dft->
frameNr; fi++) {
99 if(isnan(dft->
x1[fi]) || isnan(dft->
x2[fi]))
continue;
102 if(isnan(dft->
x[fi]))
continue;
105 if(verbose>4) printf(
" %10.4f -> %e\n", dft->
x[fi], dc);
107 for(ri=0; ri<dft->
voiNr; ri++) {
108 if(y!=0 && !isnan(dft->
voi[ri].
y[fi])) dft->
voi[ri].
y[fi]*=dc;
109 if(y2!=0 && !isnan(dft->
voi[ri].
y2[fi])) dft->
voi[ri].
y2[fi]*=dc;
110 if(y3!=0 && !isnan(dft->
voi[ri].
y3[fi])) dft->
voi[ri].
y3[fi]*=dc;
115 if(status!=NULL) strcpy(status,
"decay corrected");
118 if(status!=NULL) strcpy(status,
"decay correction removed");
int dftDecayCorrection(DFT *dft, double hl, int mode, int y, int y2, int y3, char *status, int verbose)
double hl2lambda(double halflife)
char * hlIsotopeCode(int isotope)
double hlLambda2factor(double lambda, double frametime, double framedur)
double hlFromIsotope(char *isocode)
int hlIsotopeFromHalflife(double halflife)
Header file for libtpccurveio.
#define DFT_DECAY_NOTCORRECTED
#define DFT_DECAY_CORRECTED
#define DFT_TIME_STARTEND