8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Delete initial \"bumps\" in Scanditronics, GEMS, or Allogg on-line blood",
23 "sampler data by setting the activities during the specified sample time",
24 "range (in seconds) to zero.",
25 "Notice that the original data file is overwritten by default.",
27 "Usage: @P [options] abssfile starttime endtime",
31 " Name for corrected file; by default the original file is overwritten.",
35 " @P us1328.bld 0 40",
37 "See also: abssbkg, absscal, absstime, abssfch, abssexam, fitdelay",
39 "Keywords: input, blood, background, ABSS",
58int main(
int argc,
char **argv)
60 int ai, help=0, version=0, verbose=1;
61 char abssfile[FILENAME_MAX], outfile[FILENAME_MAX];
63 double startTime=nan(
"");
64 double endTime=nan(
"");
71 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
72 abssfile[0]=outfile[0]=(char)0;
74 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
76 cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
77 if(strncasecmp(cptr,
"O=", 2)==0 && strlen(cptr)>2) {
78 strlcpy(outfile, cptr+2, FILENAME_MAX);
continue;
80 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
89 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
94 if(ai<argc)
strlcpy(abssfile, argv[ai++], FILENAME_MAX);
97 fprintf(stderr,
"Error: invalid time range.\n");
103 if(
atofCheck(argv[ai], &endTime) || endTime<=startTime) {
104 fprintf(stderr,
"Error: invalid time range.\n");
110 fprintf(stderr,
"Error: invalid argument '%s'.\n", argv[ai]);
115 fprintf(stderr,
"Error: missing command-line argument; use option --help\n");
118 if(!outfile[0]) strcpy(outfile, abssfile);
123 printf(
"abssfile := %s\n", abssfile);
124 printf(
"startTime := %g\n", startTime);
125 printf(
"endTime := %g\n", endTime);
126 printf(
"outfile := %s\n", outfile);
133 if(verbose>1) printf(
"reading %s\n", abssfile);
135 ret=
tacRead(&abss, abssfile, &status);
141 printf(
"sampleNr := %d\n", abss.
sampleNr);
144 printf(
"fileformat := %d\n", abss.
format);
145 printf(
"tacNr := %d\n", abss.
tacNr);
152 fprintf(stderr,
"Error: not valid ABSS format.\n");
155 if(verbose>100)
abssWrite(&abss, stdout, NULL);
157 fprintf(stderr,
"Error: not valid ABSS format.\n");
165 if(verbose>1) {printf(
"removing the background\n"); fflush(stdout);}
168 if(abss.
x[i]<startTime || abss.
x[i]>endTime)
continue;
169 for(j=0; j<abss.
tacNr; j++) abss.
c[j].
y[i]=0.0;
172 if(verbose>2) {printf(
"%d sample(s) set to zero.\n", n); fflush(stdout);}
174 fprintf(stderr,
"Warning: no samples inside the time range.\n");
175 if(verbose>0) {printf(
"Note: file not modified.\n"); fflush(stdout);}
180 printf(
"writing corrected data file in %s\n", outfile); fflush(stdout);}
182 fp=fopen(outfile,
"w");
184 fprintf(stderr,
"Error: cannot open file for writing.\n");
194 printf(
"corrected data written in %s\n", outfile);
int abssWrite(TAC *d, FILE *fp, TPCSTATUS *status)
int atofCheck(const char *s, double *v)
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
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)
char * errorMsg(tpcerror e)
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)
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
int tacRead(TAC *d, const char *fname, TPCSTATUS *status)
Header file for libtpcabss.
Header file for library libtpcextensions.
Header file for library libtpctac.
@ TAC_FORMAT_ABSS_ALLOGG
ALLOGG ABSS data; reading supported.
@ TAC_FORMAT_ABSS_GEMS
GEMS ABSS data; reading supported.
@ TAC_FORMAT_ABSS_ALLOGG_OLD
ALLOGG ABSS data (old format); reading supported.
@ TAC_FORMAT_ABSS_SCANDITRONICS
Scanditronics ABSS data; reading supported.