21int main(
int argc,
char *argv[])
24 int nfiles = argc - 2;
25 cout <<
" TRT_StrawStatus_merge. nfiles= " << nfiles << endl;
31 std::unique_ptr<int[][5482][6]> accumulateHits(
new int[32][5482][6]);
34 for (
int irun = 0; irun < nfiles; irun++)
36 std::string filename = argv[irun + 2];
37 printf(
"reading file %s \n", filename.c_str());
38 FILE *f = fopen(filename.c_str(),
"r");
41 fprintf(stderr,
" - file %s missing\n", filename.c_str());
45 int nItems = fscanf(f,
"%d %d %d %d %d %d %d %d %d\n", tmp, tmp + 1, tmp + 2, tmp + 3, tmp + 4, tmp + 5, tmp + 6, tmp + 7, tmp + 8);
47 std::cerr<<
"TRTCalib_StrawStatus_merge: Incorrect fline in "<<filename<<std::endl;
53 printf(
"read %d events from %d files\n", nevents, nfiles);
55 FILE *
fout = fopen(argv[1],
"w");
58 fprintf(stderr,
"could not open file %s for writing, EXIT", argv[1]);
61 printf(
"writing to merged file: %s\n", argv[1]);
62 for (
int i = 0; i < 8; i++)
63 fprintf(
fout,
"%d ", 0);
64 fprintf(
fout,
"%d\n", nevents);
66 for (
int side = 0; side < 2; side++)
69 cout <<
" reset status for all straws on side " << side * 2 - 1 << endl;
70 for (
int j = 0; j < 32; j++)
71 for (
int k = 0; k < 5482; k++)
72 for (
int m = 0; m < 6; m++)
73 accumulateHits[j][k][m] = 0;
75 for (
int irun = 0; irun < nfiles; irun++)
78 snprintf(filename, 999,
"%s", argv[irun + 2]);
79 FILE *f = fopen(filename,
"r");
85 int nItems = fscanf(f,
"%d %d %d %d %d %d %d %d %d\n", tmp, tmp + 1, tmp + 2, tmp + 3, tmp + 4, tmp + 5, tmp + 6, tmp + 7, tmp + 8);
87 std::cerr<<
"TRTCalib_StrawStatus_merge: Incorrect line in "<<filename<<std::endl;
91 while (fscanf(f,
"%d %d %d %d %d %d %d %d %d\n", tmp, tmp + 1, tmp + 2, tmp + 3, tmp + 4, tmp + 5, tmp + 6, tmp + 7, tmp + 8) == 9)
94 if (tmp[0] < 0 && side == 1)
96 if (tmp[0] > 0 && side == 0)
100 for (
int k = 0; k < 6; k++)
102 accumulateHits[tmp[1]][tmp[2]][k] += tmp[3 + k];
105 printf(
"read %7d lines from file %s \n",
count, argv[irun + 2]);
109 for (
int j = 0; j < 32; j++)
110 for (
int k = 0; k < 5482; k++)
112 int bec = 2 * side - 1;
115 fprintf(
fout,
"%d %d %d", bec, j, k);
116 for (
int m = 0; m < 6; m++)
117 fprintf(
fout,
" %d", accumulateHits[j][k][m]);
123 printf(
"closed merged file: %s\n", argv[1]);