125 int version_check = (rdat[0] >> 12) & 0xf;
126 if (version_check != 15)
return;
129 unsigned char check_sum = (rdat[nnn - 1] >> 24) & 0xFF;
130 unsigned char data_sum = 0;
131 unsigned char kdat[4] = {0};
132 for (
int j = nnn - 2; j > -1; j--) {
133 kdat[0] = rdat[j] & 0xff;
134 kdat[1] = (rdat[j] >> 8) & 0xff;
135 kdat[2] = (rdat[j] >> 16) & 0xff;
136 kdat[3] = (rdat[j] >> 24) & 0xff;
137 for (
int k = 0; k < 4; k++) {
138 data_sum = data_sum + kdat[k];
142 int flag_checksum = 0;
144 if (check_sum == data_sum) {
151 int l1_revo = rdat[0] & 0x7ff;
157 int summary_data = 0;
158 int summary_recon = 0;
160 int summary_revo = 0;
162 bool summary_trg =
false;
175 int win3_revo = -9999;
177 vector<unsigned> sum_data;
178 vector<vector<unsigned>> sum_info;
181 vector<vector<int>> tc_info;
182 vector<vector<int>> tc_info_FE1;
183 vector<vector<int>> tc_info_FE2;
184 vector<vector<int>> tc_info_BE1;
185 vector<vector<int>> tc_info_BE2;
188 while (i < nnn - 2) {
189 summary_data = rdat[i + 1];
190 summary_trg = (summary_data >> 23) & 0x1;
191 summary_revo = (summary_data >> 16) & 0x7f;
192 ntc_win = summary_data & 0x3ff;
198 data_win = window_num;
199 if (window_num == 3) win3_revo = summary_revo;
201 if (summary_trg ==
true) {
203 sum_data.push_back(data_win);
204 sum_data.push_back(summary_revo);
205 for (
int j = 0; j < 12; j++) {
207 (((rdat[i + j + 2] >> 0) & 0xFF) << 24) +
208 (((rdat[i + j + 2] >> 8) & 0xFF) << 16) +
209 (((rdat[i + j + 2] >> 16) & 0xFF) << 8) +
210 (((rdat[i + j + 2] >> 24) & 0xFF) << 0);
211 sum_data.push_back(summary_recon);
213 sum_info.push_back(sum_data);
217 if (tc_trg ==
true) {
218 for (
int j = 0; j < ntc_win; j++) {
219 tc_id = (rdat[i + j] >> 20) & 0x3FF;
220 tc_t = (rdat[i + j] >> 12) & 0x7F;
221 tc_e = rdat[i + j] & 0xFFF;
222 conv_tc_t = (data_win - 3) * 128 + tc_t;
225 tc_data.push_back(tc_id);
226 tc_data.push_back(conv_tc_t);
227 tc_data.push_back(tc_e);
228 tc_data.push_back(data_win);
231 tc_info_FE1.push_back(tc_data);
233 tc_info_FE2.push_back(tc_data);
235 }
else if (tc_id > 512) {
237 tc_info_BE1.push_back(tc_data);
239 tc_info_BE2.push_back(tc_data);
242 tc_info.push_back(tc_data);
250 if (tc_trg ==
true) {
251 for (
int j = 0; j < ntc_win; j++) {
252 tc_id = (rdat[i + j + 2] >> 20) & 0x3FF;
253 tc_t = (rdat[i + j + 2] >> 12) & 0x7F;
254 conv_tc_t = (data_win - 3) * 128 + tc_t;
255 tc_e = rdat[i + j + 2] & 0xFFF;
258 tc_data.push_back(tc_id);
259 tc_data.push_back(conv_tc_t);
260 tc_data.push_back(tc_e);
261 tc_data.push_back(data_win);
264 tc_info_FE1.push_back(tc_data);
266 tc_info_FE2.push_back(tc_data);
268 }
else if (tc_id > 512) {
270 tc_info_BE1.push_back(tc_data);
272 tc_info_BE2.push_back(tc_data);
275 tc_info.push_back(tc_data);
296 int cl_theta[6] = {0};
298 int cl_time[6] = { -9999};
299 int cl_energy[6] = {0};
300 int cl_1gev[6] = {0};
301 int cl_2gev[6] = {0};
327 vector<vector<int>> cl_2d;
329 vector<int> evt_1d_vector;
330 vector<vector<int>> evt_2d_vector;
333 int sum_size = sum_info.size();
335 for (
int j = 0; j < sum_size; j++) {
336 sum_num = sum_info[j][0];
337 sum_revo = sum_info[j][1];
339 time = (sum_info[j][2]) & 0x7F;
340 time_type = (sum_info[j][2] >> 7) & 0x7;
341 physics = (sum_info[j][2] >> 10) & 0x1;
342 b1bhabha = (sum_info[j][2] >> 11) & 0x1;
343 b1_type = (sum_info[j][2] >> 12) & 0x3FFF;
344 etot = ((sum_info[j][3] & 0x7F) << 6) + ((sum_info[j][2] >> 26) & 0x3F);
345 etot_type = (sum_info[j][3] >> 7) & 0x7;
346 icn = (sum_info[j][3] >> 10) & 0x7F;
347 bg_veto = (sum_info[j][3] >> 17) & 0x7;
348 icn_over = (sum_info[j][3] >> 20) & 0x1;
349 b2bhabha_v = (sum_info[j][3] >> 21) & 0x1;
350 low_multi = (((sum_info[j][4] >> 6) & 0x3) << 12) + ((sum_info[j][4] & 0x3) << 10) + ((sum_info[j][3] >> 22) & 0x3FF);
351 b2bhabha_s = (sum_info[j][4] >> 2) & 0x1;
352 mumu = (sum_info[j][4] >> 3) & 0x1;
353 prescale = (sum_info[j][4] >> 4) & 0x1;
354 ecl_bst = (sum_info[j][4] >> 5) & 0x1;
356 cl_energy[0] = (sum_info[j][5]) & 0xFFF;
357 cl_time[0] = (sum_info[j][5] >> 12) & 0xFF;
358 cl_phi[0] = (sum_info[j][5] >> 20) & 0xFF;
359 cl_theta[0] = ((sum_info[j][6] & 0x7) << 4) + ((sum_info[j][5] >> 28) & 0xF);
361 cl_energy[1] = (sum_info[j][6] >> 3) & 0xFFF;
362 cl_time[1] = (sum_info[j][6] >> 15) & 0xFF;
363 cl_phi[1] = (sum_info[j][6] >> 23) & 0xFF;
364 cl_theta[1] = ((sum_info[j][7] & 0x3F) << 1) + ((sum_info[j][6] >> 31) & 0x1);
366 cl_energy[2] = (sum_info[j][7] >> 6) & 0xFFF;
367 cl_time[2] = (sum_info[j][7] >> 18) & 0xFF;
368 cl_phi[2] = ((sum_info[j][8] & 0x3) << 6) + ((sum_info[j][7] >> 26) & 0x3F);
369 cl_theta[2] = (sum_info[j][8] >> 2) & 0x7F;
371 cl_energy[3] = (sum_info[j][8] >> 9) & 0xFFF;
372 cl_time[3] = (sum_info[j][8] >> 21) & 0xFF;
373 cl_phi[3] = ((sum_info[j][9] & 0x1F) << 3) + ((sum_info[j][8] >> 29) & 0x7);
374 cl_theta[3] = (sum_info[j][9] >> 5) & 0x7F;
376 cl_energy[4] = (sum_info[j][ 9] >> 12) & 0xFFF;
377 cl_time[4] = (sum_info[j][ 9] >> 24) & 0xFF;
378 cl_phi[4] = (sum_info[j][10]) & 0xFF;
379 cl_theta[4] = (sum_info[j][10] >> 8) & 0x7F;
381 cl_energy[5] = (sum_info[j][10] >> 15) & 0xFFF;
382 cl_time[5] = ((sum_info[j][11] & 0x7) << 5) + ((sum_info[j][10] >> 27) & 0x1F);
383 cl_phi[5] = (sum_info[j][11] >> 3) & 0xFF;
384 cl_theta[5] = (sum_info[j][11] >> 11) & 0x7F;
387 for (
int k = 0; k < 6; k++) {
388 cl_1gev[k] = (sum_info[j][12] >> k) & 0x1;
389 cl_2gev[k] = (sum_info[j][12] >> (k + 6)) & 0x1;
390 cl_bha[k] = (sum_info[j][12] >> (k + 12)) & 0x1;
392 ncl = (sum_info[j][13]) & 0x7;
424 for (
int k = 0; k < 6; k++) {
425 cl_1d.push_back(cl_theta[k]);
426 cl_1d.push_back(cl_phi[k]);
427 cl_1d.push_back(cl_time[k]);
428 cl_1d.push_back(cl_energy[k]);
429 cl_1d.push_back(cl_1gev[k]);
430 cl_1d.push_back(cl_2gev[k]);
431 cl_1d.push_back(cl_bha[k]);
432 cl_2d.push_back(cl_1d);
435 sort(cl_2d.begin(), cl_2d.end(),
436 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[3] > aa2[3];});
438 if (sum_num == -9999) {
440 }
else if (sum_num <= 3) {
441 sum_num_ord = 2 * abs(sum_num - 3);
443 sum_num_ord = (sum_num * 2) - 7;
445 evt_1d_vector.push_back(sum_num_ord);
446 evt_1d_vector.push_back(sum_revo);
447 evt_1d_vector.push_back(sum_num);
448 evt_1d_vector.push_back(time);
449 for (
int k = 0; k < 6; k++) {
450 for (
int l = 0; l < 7; l++) {
451 evt_1d_vector.push_back(cl_2d[k][l]);
455 evt_1d_vector.push_back(ncl);
456 evt_1d_vector.push_back(low_multi);
457 evt_1d_vector.push_back(b2bhabha_v);
458 evt_1d_vector.push_back(b2bhabha_s);
459 evt_1d_vector.push_back(mumu);
460 evt_1d_vector.push_back(prescale);
461 evt_1d_vector.push_back(icn);
462 evt_1d_vector.push_back(icn_over);
463 evt_1d_vector.push_back(etot_type);
464 evt_1d_vector.push_back(etot);
465 evt_1d_vector.push_back(ecl_bst);
466 evt_1d_vector.push_back(b1_type);
467 evt_1d_vector.push_back(b1bhabha);
468 evt_1d_vector.push_back(physics);
469 evt_1d_vector.push_back(time_type);
470 evt_2d_vector.push_back(evt_1d_vector);
471 evt_1d_vector.clear();
474 for (
int k = 0; k < 6; k++) {
532 tc_info.insert(tc_info.end(), tc_info_FE1.begin(), tc_info_FE1.end());
533 tc_info.insert(tc_info.end(), tc_info_FE2.begin(), tc_info_FE2.end());
534 tc_info.insert(tc_info.end(), tc_info_BE1.begin(), tc_info_BE1.end());
535 tc_info.insert(tc_info.end(), tc_info_BE2.begin(), tc_info_BE2.end());
551 int m_caltime = -9999;
553 int tot_ntc = tc_info.size();
557 int evt_revo = -9999;
561 int evt_timing = -9999;
562 int evt_cl_theta[6] = {0};
563 int evt_cl_phi[6] = {0};
564 int evt_cl_time[6] = { -9999};
565 int evt_cl_energy[6] = {0};
566 int evt_cl_1gev[6] = {0};
567 int evt_cl_2gev[6] = {0};
568 int evt_cl_bha[6] = {0};
572 int evt_low_multi = 0;
574 int evt_b2bhabha_v = 0;
576 int evt_b2bhabha_s = 0;
580 int evt_prescale = 0;
584 int evt_icn_over = 0;
586 int evt_etot_type = 0;
594 int evt_b1bhabha = 0;
598 int evt_time_type = 0;
600 int evt_etot_all = 0;
602 int evt_time_min = 0;
604 int evt_time_max = 0;
606 int evt_time_win = 0;
623 int evt_v_size = evt_2d_vector.size();
624 if (evt_v_size != 0) {
626 sort(evt_2d_vector.begin(), evt_2d_vector.end(),
627 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[0] < aa2[0];});
630 if (tot_ntc != 0 && flag_checksum == 0 && nnn > 7) {
631 if (evt_v_size == 0) {
633 sort(tc_info.begin(), tc_info.end(),
634 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[2] > aa2[2];});
635 evt_revo = win3_revo;
636 evt_win = tc_info[0][3];
637 evt_timing = tc_info[0][1];
638 for (
int k = 0; k < 6; k++) {
642 evt_cl_energy[k] = 0;
663 evt_revo = evt_2d_vector[0][1];
664 evt_win = evt_2d_vector[0][2];
665 evt_timing = evt_2d_vector[0][3];
666 for (
int k = 0; k < 6; k++) {
667 evt_cl_theta[k] = evt_2d_vector[0][ 4 + k * 7];
668 evt_cl_phi[k] = evt_2d_vector[0][ 5 + k * 7];
669 evt_cl_time[k] = evt_2d_vector[0][ 6 + k * 7];
670 evt_cl_energy[k] = evt_2d_vector[0][ 7 + k * 7];
671 evt_cl_1gev[k] = evt_2d_vector[0][ 8 + k * 7];
672 evt_cl_2gev[k] = evt_2d_vector[0][ 9 + k * 7];
673 evt_cl_bha[k] = evt_2d_vector[0][10 + k * 7];
675 evt_ncl = evt_2d_vector[0][46];
676 evt_low_multi = evt_2d_vector[0][47];
677 evt_b2bhabha_v = evt_2d_vector[0][48];
678 evt_b2bhabha_s = evt_2d_vector[0][49];
679 evt_mumu = evt_2d_vector[0][50];
680 evt_prescale = evt_2d_vector[0][51];
681 evt_icn = evt_2d_vector[0][52];
682 evt_icn_over = evt_2d_vector[0][53];
683 evt_etot_type = evt_2d_vector[0][54];
684 evt_etot = evt_2d_vector[0][55];
685 evt_ecl_bst = evt_2d_vector[0][56];
686 evt_b1_type = evt_2d_vector[0][57];
687 evt_b1bhabha = evt_2d_vector[0][58];
688 evt_physics = evt_2d_vector[0][59];
689 evt_time_type = evt_2d_vector[0][60];
692 sort(tc_info.begin(), tc_info.end(),
693 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[0] < aa2[0];});
695 for (
int ii = 0; ii < tot_ntc; ii++) {
696 m_tcid = tc_info[ii][0];
697 m_time = tc_info[ii][1];
698 m_energy = tc_info[ii][2];
699 m_win = tc_info[ii][3];
701 m_caltime = m_time - ((evt_win - 3) * 128 + evt_timing);
713 if (m_win == evt_win || m_win == evt_win + 1) evt_ntc++;
714 if (m_win == evt_win - 1) {
717 if (m_win == evt_win) {
720 if (m_win == evt_win + 1) {
725 if (etot_i == 0 && etot_f == 0) {
726 evt_etot_all = etot_c;
727 evt_time_min = - evt_timing;
728 evt_time_max = 256 - evt_timing;
730 }
else if (etot_i >= etot_f) {
731 evt_etot_all = etot_c + etot_i;
732 evt_time_min = -128 - evt_timing;
733 evt_time_max = 128 - evt_timing;
736 evt_etot_all = etot_c + etot_f;
737 evt_time_min = - evt_timing;
738 evt_time_max = 256 - evt_timing;
742 for (
int icluster = 0; icluster < 6; icluster++) {
743 if (evt_cl_energy[icluster] == 0 || evt_cl_theta[icluster] == 0 || evt_cl_phi[icluster] == 0) {
continue;}
745 if (cl_tcid == 0) {
continue;}
760 double cl_timing = -1000;
761 for (
int i_tc = 0; i_tc < tot_ntc; i_tc++) {
762 if (cl_tcid == tc_info[i_tc][0]) {
763 cl_timing = tc_info[i_tc][1];
831 for (
int k = 0; k < 6; k++) {
834 evt_cl_time[k] = -9999;
835 evt_cl_energy[k] = 0;
877 int version_check = (rdat[0] >> 12) & 0xf;
878 if (version_check != 15)
return;
881 unsigned char check_sum = (rdat[nnn - 1] >> 24) & 0xFF;
882 unsigned char data_sum = 0;
883 unsigned char kdat[4] = {0};
884 for (
int j = nnn - 2; j > -1; j--) {
885 kdat[0] = rdat[j] & 0xff;
886 kdat[1] = (rdat[j] >> 8) & 0xff;
887 kdat[2] = (rdat[j] >> 16) & 0xff;
888 kdat[3] = (rdat[j] >> 24) & 0xff;
889 for (
int k = 0; k < 4; k++) {
890 data_sum = data_sum + kdat[k];
894 int flag_checksum = 0;
896 if (check_sum == data_sum) {
903 int l1_revo = rdat[0] & 0x7ff;
909 int summary_data = 0;
911 int summary_revo = 0;
913 bool summary_trg =
false;
926 int win3_revo = -9999;
928 vector<unsigned> sum_data;
929 vector<vector<unsigned>> sum_info;
932 vector<vector<int>> tc_info;
933 vector<vector<int>> tc_info_FE1;
934 vector<vector<int>> tc_info_FE2;
935 vector<vector<int>> tc_info_BE1;
936 vector<vector<int>> tc_info_BE2;
939 while (i < nnn - 2) {
940 summary_data = rdat[i + 1];
941 summary_trg = (summary_data >> 23) & 0x1;
942 summary_revo = (summary_data >> 16) & 0x7f;
943 ntc_win = summary_data & 0x3ff;
949 data_win = window_num;
950 if (window_num == 3) win3_revo = summary_revo;
952 if (summary_trg ==
true) {
954 sum_data.push_back(data_win);
955 sum_data.push_back(summary_revo);
956 for (
int j = 0; j < 9; j++) {
957 sum_data.push_back(rdat[i + j + 2]);
959 sum_info.push_back(sum_data);
963 if (tc_trg ==
true) {
964 for (
int j = 0; j < ntc_win; j++) {
965 tc_id = (rdat[i + j] >> 20) & 0x3FF;
966 tc_t = (rdat[i + j] >> 12) & 0x7F;
967 tc_e = rdat[i + j] & 0xFFF;
968 conv_tc_t = (data_win - 3) * 128 + tc_t;
971 tc_data.push_back(tc_id);
972 tc_data.push_back(conv_tc_t);
973 tc_data.push_back(tc_e);
974 tc_data.push_back(data_win);
977 tc_info_FE1.push_back(tc_data);
979 tc_info_FE2.push_back(tc_data);
981 }
else if (tc_id > 512) {
983 tc_info_BE1.push_back(tc_data);
985 tc_info_BE2.push_back(tc_data);
988 tc_info.push_back(tc_data);
996 if (tc_trg ==
true) {
997 for (
int j = 0; j < ntc_win; j++) {
998 tc_id = (rdat[i + j + 2] >> 20) & 0x3FF;
999 tc_t = (rdat[i + j + 2] >> 12) & 0x7F;
1000 conv_tc_t = (data_win - 3) * 128 + tc_t;
1001 tc_e = rdat[i + j + 2] & 0xFFF;
1004 tc_data.push_back(tc_id);
1005 tc_data.push_back(conv_tc_t);
1006 tc_data.push_back(tc_e);
1007 tc_data.push_back(data_win);
1010 tc_info_FE1.push_back(tc_data);
1012 tc_info_FE2.push_back(tc_data);
1014 }
else if (tc_id > 512) {
1016 tc_info_BE1.push_back(tc_data);
1018 tc_info_BE2.push_back(tc_data);
1021 tc_info.push_back(tc_data);
1025 i = i + ntc_win + 1;
1040 int cl_theta[6] = {0};
1041 int cl_phi[6] = {0};
1042 int cl_time[6] = { -9999};
1043 int cl_energy[6] = {0};
1068 vector<vector<int>> cl_2d;
1070 vector<int> evt_1d_vector;
1071 vector<vector<int>> evt_2d_vector;
1074 int sum_size = sum_info.size();
1075 if (sum_size != 0) {
1076 for (
int j = 0; j < sum_size; j++) {
1077 sum_num = sum_info[j][0];
1078 sum_revo = sum_info[j][1];
1080 ecl_bst = (sum_info[j][2] >> 26) & 0x1;
1083 cl_theta[5] = (sum_info[j][2] >> 19) & 0x7f;
1084 cl_phi[5] = (sum_info[j][2] >> 11) & 0xff;
1085 cl_time[5] = (sum_info[j][2] >> 3) & 0xff;
1086 cl_energy[5] = ((sum_info[j][2] & 0x7) << 9) + ((sum_info[j][3] >> 23) & 0x1ff);
1088 cl_theta[4] = (sum_info[j][3] >> 16) & 0x7f;
1089 cl_phi[4] = (sum_info[j][3] >> 8) & 0xff;
1090 cl_time[4] = (sum_info[j][3]) & 0xff;
1091 cl_energy[4] = (sum_info[j][4] >> 20) & 0xfff;
1093 cl_theta[3] = (sum_info[j][4] >> 13) & 0x7f;
1094 cl_phi[3] = (sum_info[j][4] >> 5) & 0xff;
1095 cl_time[3] = ((sum_info[j][4] & 0x1f) << 3) + ((sum_info[j][5] >> 29) & 0x7);
1096 cl_energy[3] = (sum_info[j][5] >> 17) & 0xfff;
1098 cl_theta[2] = (sum_info[j][5] >> 10) & 0x7f;
1099 cl_phi[2] = (sum_info[j][5] >> 2) & 0xff;
1100 cl_time[2] = ((sum_info[j][5] & 0x3) << 6) + ((sum_info[j][6] >> 26) & 0x3f);
1101 cl_energy[2] = (sum_info[j][6] >> 14) & 0xfff;
1103 cl_theta[1] = (sum_info[j][6] >> 7) & 0x7f;
1104 cl_phi[1] = ((sum_info[j][6] & 0x7f) << 1) + ((sum_info[j][7] >> 31) & 0x1);
1105 cl_time[1] = (sum_info[j][7] >> 23) & 0xff;
1106 cl_energy[1] = (sum_info[j][7] >> 11) & 0xfff;
1108 cl_theta[0] = (sum_info[j][7] >> 4) & 0x7f;
1109 cl_phi[0] = ((sum_info[j][7] & 0xf) << 4) + ((sum_info[j][8] >> 28) & 0xf);
1110 cl_time[0] = (sum_info[j][8] >> 20) & 0xff;
1111 cl_energy[0] = (sum_info[j][8] >> 8) & 0xfff;
1113 ncl = (sum_info[j][8] >> 5) & 0x7;
1115 prescale = (sum_info[j][8] >> 4) & 0x1;
1116 mumu = (sum_info[j][8] >> 3) & 0x1;
1117 b2bhabha_s = (sum_info[j][8] >> 2) & 0x1;
1119 low_multi = (((sum_info[j][2] >> 27) & 0x3) << 12) + ((sum_info[j][8] & 0x3) << 10) + ((sum_info[j][9] >> 22) & 0x3ff);
1121 low_multi = ((sum_info[j][8] & 0x3) << 10) + ((sum_info[j][9] >> 22) & 0x3ff);
1123 b2bhabha_v = (sum_info[j][9] >> 21) & 0x1;
1124 icn_over = (sum_info[j][9] >> 20) & 0x1;
1125 bg_veto = (sum_info[j][9] >> 17) & 0x7;
1126 icn = (sum_info[j][9] >> 10) & 0x7f;
1127 etot_type = (sum_info[j][9] >> 7) & 0x7;
1128 etot = ((sum_info[j][9] & 0x7f) << 6) + ((sum_info[j][10] >> 26) & 0x3f);
1129 b1_type = (sum_info[j][10] >> 12) & 0x3fff;
1130 b1bhabha = (sum_info[j][10] >> 11) & 0x1;
1131 physics = (sum_info[j][10] >> 10) & 0x1;
1132 time_type = (sum_info[j][10] >> 7) & 0x7;
1133 time = (sum_info[j][10]) & 0x7f;
1135 cl_theta[5] = (sum_info[j][2] >> 24) & 0x7f;
1136 cl_phi[5] = (sum_info[j][2] >> 16) & 0xff;
1137 cl_time[5] = (sum_info[j][2] >> 8) & 0xff;
1138 cl_energy[5] = ((sum_info[j][2] & 0xff) << 4) + ((sum_info[j][3] >> 28) & 0xf);
1140 cl_theta[4] = (sum_info[j][3] >> 21) & 0x7f;
1141 cl_phi[4] = (sum_info[j][3] >> 13) & 0xff;
1142 cl_time[4] = (sum_info[j][3] >> 5) & 0xff;
1143 cl_energy[4] = ((sum_info[j][3] & 0x1f) << 7) + ((sum_info[j][4] >> 25) & 0x7f);
1145 cl_theta[3] = (sum_info[j][4] >> 18) & 0x7f;
1146 cl_phi[3] = (sum_info[j][4] >> 10) & 0xff;
1147 cl_time[3] = (sum_info[j][4] >> 2) & 0xff;
1148 cl_energy[3] = ((sum_info[j][4] & 0x3) << 10) + ((sum_info[j][5] >> 22) & 0x3ff);
1150 cl_theta[2] = (sum_info[j][5] >> 15) & 0x7f;
1151 cl_phi[2] = (sum_info[j][5] >> 7) & 0xff;
1152 cl_time[2] = ((sum_info[j][5] & 0x7f) << 1) + ((sum_info[j][6] >> 31) & 0x1);
1153 cl_energy[2] = (sum_info[j][6] >> 19) & 0xfff;
1155 cl_theta[1] = (sum_info[j][6] >> 12) & 0x7f;
1156 cl_phi[1] = (sum_info[j][6] >> 4) & 0xff;
1157 cl_time[1] = ((sum_info[j][6] & 0xf) << 4) + ((sum_info[j][7] >> 28) & 0xf);
1158 cl_energy[1] = (sum_info[j][7] >> 16) & 0xfff;
1160 cl_theta[0] = (sum_info[j][7] >> 9) & 0x7f;
1161 cl_phi[0] = (sum_info[j][7] >> 1) & 0xff;
1162 cl_time[0] = ((sum_info[j][7] & 0x1) << 7) + ((sum_info[j][8] >> 25) & 0x7f);
1163 cl_energy[0] = (sum_info[j][8] >> 13) & 0xfff;
1165 ncl = (sum_info[j][8] >> 10) & 0x7;
1167 low_multi = ((sum_info[j][8] & 0x3ff) << 2) + ((sum_info[j][9] >> 30) & 0x3);
1168 b2bhabha_v = (sum_info[j][9] >> 29) & 0x1;
1169 icn_over = (sum_info[j][9] >> 28) & 0x1;
1170 bg_veto = (sum_info[j][9] >> 25) & 0x7;
1171 icn = (sum_info[j][9] >> 18) & 0x7f;
1172 etot_type = (sum_info[j][9] >> 15) & 0x7;
1173 etot = (sum_info[j][9] >> 2) & 0x1fff;
1175 b1_type = ((sum_info[j][9] & 0x3) << 12) + ((sum_info[j][10] >> 20) & 0xfff);
1176 b1bhabha = (sum_info[j][10] >> 19) & 0x1;
1177 physics = (sum_info[j][10] >> 18) & 0x1;
1178 time_type = (sum_info[j][10] >> 15) & 0x7;
1179 time = (sum_info[j][10] >> 8) & 0x7f;
1213 for (
int k = 0; k < 6; k++) {
1214 cl_1d.push_back(cl_theta[k]);
1215 cl_1d.push_back(cl_phi[k]);
1216 cl_1d.push_back(cl_time[k]);
1217 cl_1d.push_back(cl_energy[k]);
1218 cl_2d.push_back(cl_1d);
1221 sort(cl_2d.begin(), cl_2d.end(),
1222 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[3] > aa2[3];});
1224 evt_1d_vector.push_back(abs(sum_num - 3));
1225 evt_1d_vector.push_back(sum_revo);
1226 evt_1d_vector.push_back(sum_num);
1227 evt_1d_vector.push_back(time);
1228 for (
int k = 0; k < 6; k++) {
1229 evt_1d_vector.push_back(cl_2d[k][0]);
1230 evt_1d_vector.push_back(cl_2d[k][1]);
1231 evt_1d_vector.push_back(cl_2d[k][2]);
1232 evt_1d_vector.push_back(cl_2d[k][3]);
1235 evt_1d_vector.push_back(ncl);
1236 evt_1d_vector.push_back(low_multi);
1237 evt_1d_vector.push_back(b2bhabha_v);
1238 evt_1d_vector.push_back(b2bhabha_s);
1239 evt_1d_vector.push_back(mumu);
1240 evt_1d_vector.push_back(prescale);
1241 evt_1d_vector.push_back(icn);
1242 evt_1d_vector.push_back(icn_over);
1243 evt_1d_vector.push_back(etot_type);
1244 evt_1d_vector.push_back(etot);
1245 evt_1d_vector.push_back(ecl_bst);
1246 evt_1d_vector.push_back(b1_type);
1247 evt_1d_vector.push_back(b1bhabha);
1248 evt_1d_vector.push_back(physics);
1249 evt_1d_vector.push_back(time_type);
1250 evt_2d_vector.push_back(evt_1d_vector);
1251 evt_1d_vector.clear();
1255 for (
int k = 0; k < 6; k++) {
1307 tc_info.insert(tc_info.end(), tc_info_FE1.begin(), tc_info_FE1.end());
1308 tc_info.insert(tc_info.end(), tc_info_FE2.begin(), tc_info_FE2.end());
1309 tc_info.insert(tc_info.end(), tc_info_BE1.begin(), tc_info_BE1.end());
1310 tc_info.insert(tc_info.end(), tc_info_BE2.begin(), tc_info_BE2.end());
1326 int m_caltime = -9999;
1328 int tot_ntc = tc_info.size();
1332 int evt_revo = -9999;
1336 int evt_timing = -9999;
1337 int evt_cl_theta[6] = {0};
1338 int evt_cl_phi[6] = {0};
1339 int evt_cl_time[6] = { -9999};
1340 int evt_cl_energy[6] = {0};
1344 int evt_low_multi = 0;
1346 int evt_b2bhabha_v = 0;
1348 int evt_b2bhabha_s = 0;
1352 int evt_prescale = 0;
1356 int evt_icn_over = 0;
1358 int evt_etot_type = 0;
1362 int evt_ecl_bst = 0;
1364 int evt_b1_type = 0;
1366 int evt_b1bhabha = 0;
1368 int evt_physics = 0;
1370 int evt_time_type = 0;
1372 int evt_etot_all = 0;
1374 int evt_time_min = 0;
1376 int evt_time_max = 0;
1378 int evt_time_win = 0;
1395 int evt_v_size = evt_2d_vector.size();
1396 if (evt_v_size != 0) {
1398 sort(evt_2d_vector.begin(), evt_2d_vector.end(),
1399 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[0] < aa2[0];});
1402 if (tot_ntc != 0 && flag_checksum == 0 && nnn > 7) {
1403 if (evt_v_size == 0) {
1405 sort(tc_info.begin(), tc_info.end(),
1406 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[2] > aa2[2];});
1407 evt_revo = win3_revo;
1408 evt_win = tc_info[0][3];
1409 evt_timing = tc_info[0][1];
1410 for (
int k = 0; k < 6; k++) {
1411 evt_cl_theta[k] = 0;
1414 evt_cl_energy[k] = 0;
1432 evt_revo = evt_2d_vector[0][1];
1433 evt_win = evt_2d_vector[0][2];
1434 evt_timing = evt_2d_vector[0][3];
1435 for (
int k = 0; k < 6; k++) {
1436 evt_cl_theta[k] = evt_2d_vector[0][4 + k * 4];
1437 evt_cl_phi[k] = evt_2d_vector[0][5 + k * 4];
1438 evt_cl_time[k] = evt_2d_vector[0][6 + k * 4];
1439 evt_cl_energy[k] = evt_2d_vector[0][7 + k * 4];
1441 evt_ncl = evt_2d_vector[0][28];
1442 evt_low_multi = evt_2d_vector[0][29];
1443 evt_b2bhabha_v = evt_2d_vector[0][30];
1444 evt_b2bhabha_s = evt_2d_vector[0][31];
1445 evt_mumu = evt_2d_vector[0][32];
1446 evt_prescale = evt_2d_vector[0][33];
1447 evt_icn = evt_2d_vector[0][34];
1448 evt_icn_over = evt_2d_vector[0][35];
1449 evt_etot_type = evt_2d_vector[0][36];
1450 evt_etot = evt_2d_vector[0][37];
1451 evt_ecl_bst = evt_2d_vector[0][38];
1452 evt_b1_type = evt_2d_vector[0][39];
1453 evt_b1bhabha = evt_2d_vector[0][40];
1454 evt_physics = evt_2d_vector[0][41];
1455 evt_time_type = evt_2d_vector[0][42];
1458 sort(tc_info.begin(), tc_info.end(),
1459 [](
const vector<int>& aa1,
const vector<int>& aa2) {return aa1[0] < aa2[0];});
1461 for (
int ii = 0; ii < tot_ntc; ii++) {
1462 m_tcid = tc_info[ii][0];
1463 m_time = tc_info[ii][1];
1464 m_energy = tc_info[ii][2];
1465 m_win = tc_info[ii][3];
1467 m_caltime = m_time - ((evt_win - 3) * 128 + evt_timing);
1479 if (m_win == evt_win || m_win == evt_win + 1) evt_ntc++;
1480 if (m_win == evt_win - 1) {
1483 if (m_win == evt_win) {
1486 if (m_win == evt_win + 1) {
1491 if (etot_i == 0 && etot_f == 0) {
1492 evt_etot_all = etot_c;
1493 evt_time_min = - evt_timing;
1494 evt_time_max = 256 - evt_timing;
1496 }
else if (etot_i >= etot_f) {
1497 evt_etot_all = etot_c + etot_i;
1498 evt_time_min = -128 - evt_timing;
1499 evt_time_max = 128 - evt_timing;
1502 evt_etot_all = etot_c + etot_f;
1503 evt_time_min = - evt_timing;
1504 evt_time_max = 256 - evt_timing;
1508 for (
int icluster = 0; icluster < 6; icluster++) {
1509 if (evt_cl_energy[icluster] == 0 || evt_cl_theta[icluster] == 0 || evt_cl_phi[icluster] == 0) {
continue;}
1511 if (cl_tcid == 0) {
continue;}
1526 double cl_timing = -1000;
1527 for (
int i_tc = 0; i_tc < tot_ntc; i_tc++) {
1528 if (cl_tcid == tc_info[i_tc][0]) {
1529 cl_timing = tc_info[i_tc][1];
1594 for (
int k = 0; k < 6; k++) {
1595 evt_cl_theta[k] = 0;
1597 evt_cl_time[k] = -9999;
1598 evt_cl_energy[k] = 0;