22{
23
24 int nfiles =
argc - 2;
25 cout << " TRT_StrawStatus_merge. nfiles= " << nfiles << endl;
26
27
28
29
30
31 std::unique_ptr<int[][5482][6]> accumulateHits(new int[32][5482][6]);
32
34 for (int irun = 0; irun < nfiles; irun++)
35 {
37 printf(
"reading file %s \n",
filename.c_str());
39 if (f==nullptr)
40 {
41 fprintf(stderr,
" - file %s missing\n",
filename.c_str());
43 }
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);
46 if (nItems !=9){
47 std::cerr<<
"TRTCalib_StrawStatus_merge: Incorrect fline in "<<
filename<<std::endl;
48 continue;
49 }
51 fclose(f);
52 }
53 printf("read %d events from %d files\n", nevents, nfiles);
54
55 FILE *
fout = fopen(argv[1],
"w");
57 {
58 fprintf(stderr,"could not open file %s for writing, EXIT", argv[1]);
60 }
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);
65
67 {
68
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;
74
75 for (int irun = 0; irun < nfiles; irun++)
76 {
78 snprintf(filename, 999, "%s", argv[irun + 2]);
79 FILE *
f = fopen(filename,
"r");
80 if (!f)
81 continue;
84
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);
86 if (nItems !=9){
87 std::cerr<<
"TRTCalib_StrawStatus_merge: Incorrect line in "<<
filename<<std::endl;
88 continue;
89 }
90
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)
92 {
93
94 if (tmp[0] < 0 && side == 1)
95 continue;
96 if (tmp[0] > 0 && side == 0)
97 continue;
99
100 for (
int k = 0;
k < 6;
k++)
101
102 accumulateHits[tmp[1]][tmp[2]][k] += tmp[3 + k];
103 }
104 fclose(f);
105 printf(
"read %7d lines from file %s \n",
count, argv[irun + 2]);
106 }
107
108
109 for (int j = 0; j < 32; j++)
110 for (
int k = 0;
k < 5482;
k++)
111 {
113 if (k >= 1642)
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]);
119 }
120 }
121
123 printf("closed merged file: %s\n", argv[1]);
125}
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string