9#include "tpcclibConfig.h"
23static char *info[] = {
24 "Lists the information in a SIF file.",
26 "Usage: @P [Options] sif",
29 " -i=<Br76|Cu62|C11|Ga68|Ge68|F18|N13|O15|Rb2>",
30 " Isotope, in case it is needed but not given inside SIF file.",
31 " -decay=<corrected|non-corrected>",
32 " Weights are calculated for TACs corrected or non-corrected (default)",
33 " for physical decay.",
36 "See also: sifisot, sifcat, eframe, tacframe, tacformat, taclist, tacweigh",
38 "Keywords: image, SIF, time, head-curve",
57int main(
int argc,
char **argv)
59 int ai, help=0, version=0, verbose=1;
60 int ret, decay_corrected=0;
61 char *cptr, siffile[FILENAME_MAX];
68 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
71 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
72 cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(cptr==NULL)
continue;
74 if(strncasecmp(cptr,
"I=", 2)==0) {
75 cptr+=2; halflife=60.*
hlFromIsotope(cptr);
if(halflife>0.0)
continue;
76 }
else if(strncasecmp(cptr,
"DECAY=", 6)==0) {
78 if(strncasecmp(cptr,
"C", 1)==0 || strncasecmp(cptr,
"Y", 1)==0) {
79 decay_corrected=1;
continue;}
80 else if(strncasecmp(cptr,
"N", 1)==0) {decay_corrected=0;
continue;}
83 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
88 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
93 if(ai<argc) {
strlcpy(siffile, argv[ai], FILENAME_MAX); ai++;}
94 if(ai<argc) {fprintf(stderr,
"Error: too many arguments.\n");
return(1);}
98 fprintf(stderr,
"Error: missing command-line argument; use option --help\n");
104 printf(
"siffile := %s\n", siffile);
105 printf(
"decay_corrected := %d\n", decay_corrected);
106 if(halflife>0) printf(
"halflife := %g\n", halflife);
113 if(verbose>1) printf(
"reading file %s\n", siffile);
118 fprintf(stderr,
"Error (%d) in reading '%s': %s\n", ret, siffile,
siferrmsg);
125 if(verbose>1) printf(
"halflife := %g\n", halflife);
133 if(verbose>1) printf(
"calculating weights\n");
136 if(decay_corrected!=0 && halflife<=0.0) {
137 fprintf(stderr,
"Error: isotope is required for decay correction.\n");
142 if(decay_corrected==0) halflife=0.0;
145 if(verbose>2) printf(
"halflife := %g\n", halflife);
151 if(verbose>10) printf(
"printing SIF contents\n");
158 if(verbose>10) printf(
"exiting\n");
double hlFromIsotope(char *isocode)
Header file for libtpcimgio.
void sifWeight(SIF *data, double halflife)
Calculate weights for frames in SIF data based on true counts. Weights are normalized to have an aver...
int sifRead(char *filename, SIF *data)
Header file for libtpcmisc.
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
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)