8#include "tpcclibConfig.h"
26static char *info[] = {
27 "Calculates the decay correction factor between specified times, optionally",
30 "Usage: @P [options] Isotope time0 time1 [> outputfile]",
34 " Print title line (y, default), or do not print title (n).",
38 " @P Zr-89 2018-03-21 15:22:00 2018-03-27 15:46:00",
39 " @P C-11 11:08:13 12:16:52",
41 "See also: halflife, tacdecay, imgdecay, tactime, ecattime",
43 "Keywords: physical decay, decay correction, halflife, isotope",
62int main(
int argc,
char **argv)
64 int ai, help=0, version=0, verbose=1;
67 char datestr0[128], timestr0[128], datestr1[128], timestr1[128];
73 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
74 datestr0[0]=timestr0[0]=datestr1[0]=timestr1[0]=(char)0;
76 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
78 char *cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
79 if(strncasecmp(cptr,
"TITLE=", 6)==0) {
81 if(printTitle>=0)
continue;
83 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
92 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
100 fprintf(stderr,
"Error: invalid isotope '%s'\n", argv[ai]);
return(1);}
106 else {fprintf(stderr,
"Error: invalid date/time '%s'\n", argv[ai]);
return(1);}
111 else {fprintf(stderr,
"Error: invalid time '%s'\n", argv[ai]);
return(1);}
114 else {fprintf(stderr,
"Error: invalid time '%s'\n", argv[ai]);
return(1);}
116 if(timestr1[0] && ai<argc) {fprintf(stderr,
"Error: too many arguments: '%s'.\n", argv[ai]);
return(1);}
121 else {fprintf(stderr,
"Error: invalid date/time '%s'\n", argv[ai]);
return(1);}
124 if(timestr1[0]) {fprintf(stderr,
"Error: too many arguments: '%s'.\n", argv[ai]);
return(1);}
126 else {fprintf(stderr,
"Error: invalid date/time '%s'\n", argv[ai]);
return(1);}
128 if(ai<argc) {fprintf(stderr,
"Error: too many arguments: '%s'.\n", argv[ai]);
return(1);}
132 if(!timestr1[0]) {fprintf(stderr,
"Error: missing date/time.\n");
return(1);}
136 for(ai=0; ai<argc; ai++) printf(
"%s ", argv[ai]);
139 printf(
"time0 := %s %s\n", datestr0, timestr0);
140 printf(
"time1 := %s %s\n", datestr1, timestr1);
141 printf(
"printTitle := %d\n", printTitle);
148 char datetimestr0[128], datetimestr1[128];
150 strcpy(datetimestr0, datestr0); datetimestr0[10]=(char)0;
151 if(datestr1[0]) {strcpy(datetimestr1, datestr1); datetimestr1[10]=(char)0;}
152 else strcpy(datetimestr1, datestr0);
154 strcpy(datetimestr0,
"2018-05-10");
155 strcpy(datetimestr1, datetimestr0);
157 strcat(datetimestr0,
" ");
158 strcat(datetimestr1,
" ");
159 strlcat(datetimestr0, timestr0, 128);
160 strlcat(datetimestr1, timestr1, 128);
162 printf(
"datetime0 := %s\n", datetimestr0);
163 printf(
"datetime1 := %s\n", datetimestr1);
167 printf(
"time_difference := %g min\n", tdiff);
176 fprintf(stderr,
"Error: cannot calculate decay correction factor.\n");
184 if(printTitle) printf(
"time[min]\tDCF\n");
185 printf(
"%g\t%g\n", tdiff, dcf);
int strDateValid(const char *str)
double strDateTimeDifference(const char *dt1, const char *dt0)
int strTimeValid(const char *str)
double decayCorrectionFactorFromIsotope(int isotope, double starttime, double duration)
char * isotopeName(int isotope_code)
int isotopeIdentify(const char *isotope)
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
int tpcYesNo(const char *s)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
void statusInit(TPCSTATUS *s)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
size_t strlcat(char *dst, const char *src, size_t dstsize)
int verbose
Verbose level, used by statusPrint() etc.
Header file for library libtpcextensions.
Header file for library libtpcisotope.
@ ISOTOPE_UNKNOWN
Unknown.