315 gROOT->LoadMacro(
"$VMCWORKDIR/macro/run/bmnloadlibs.C");
323 Int_t startEvent = 1;
327 TString outName =
Form(
"bmn_reco_DCH_run%04d.root", runId);
328 TFile* fReco =
new TFile(outName,
"RECREATE");
329 TTree* tReco =
new TTree(
"cbmsim",
"test_bmn");
335 tReco->
Branch(
"BmnDchHit", &dchHits);
336 tReco->
Branch(
"DchTracks", &dchTracks);
337 tReco->
Branch(
"DchMatchedTracks", &dchMatchedTracks);
341 float p1_xa, p0_xa, p1_xb, p0_xb, p1_ya, p0_ya, p1_yb, p0_yb, p1_ua, p0_ua, p1_ub, p0_ub, p1_va, p0_va, p1_vb,
345 double pol_par_dc[3][5][16];
350 fin.open(
"transfer_func.txt", ios::in);
351 for (
int fi = 0; fi < 16; fi++) {
352 fin >> t_dc[0][fi] >> t_dc[1][fi] >> t_dc[2][fi] >> t_dc[3][fi] >> t_dc[4][fi] >> pol_par_dc[0][0][fi]
353 >> pol_par_dc[0][1][fi] >> pol_par_dc[0][2][fi] >> pol_par_dc[0][3][fi] >> pol_par_dc[0][4][fi]
354 >> pol_par_dc[1][0][fi] >> pol_par_dc[1][1][fi] >> pol_par_dc[1][2][fi] >> pol_par_dc[1][3][fi]
355 >> pol_par_dc[1][4][fi] >> pol_par_dc[2][0][fi] >> pol_par_dc[2][1][fi] >> pol_par_dc[2][2][fi]
356 >> pol_par_dc[2][3][fi] >> pol_par_dc[2][4][fi] >> scaling[fi];
361 float scale[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
362 for (
Int_t sc = 0; sc < 16; sc++) {
371 for (
Int_t iEv = startEvent; iEv < startEvent + nEvents; iEv++) {
377 dchMatchedTracks->
Clear();
380 cout <<
"Event/last : " << iEv + 1 <<
"/" << startEvent + nEvents << endl;
385 double time_xa1[20] = {-99};
386 double time_xa2[20] = {-99};
387 double time_xb1[20] = {-99};
388 double time_xb2[20] = {-99};
389 double time_ya1[20] = {-99};
390 double time_ya2[20] = {-99};
391 double time_yb1[20] = {-99};
392 double time_yb2[20] = {-99};
393 double time_ua1[20] = {-99};
394 double time_ua2[20] = {-99};
395 double time_ub1[20] = {-99};
396 double time_ub2[20] = {-99};
397 double time_va1[20] = {-99};
398 double time_va2[20] = {-99};
399 double time_vb1[20] = {-99};
400 double time_vb2[20] = {-99};
402 float wirenr_xa1[20] = {-99};
403 float wirenr_xa2[20] = {-99};
404 float wirenr_xb1[20] = {-99};
405 float wirenr_xb2[20] = {-99};
406 float wirenr_ya1[20] = {-99};
407 float wirenr_ya2[20] = {-99};
408 float wirenr_yb1[20] = {-99};
409 float wirenr_yb2[20] = {-99};
410 float wirenr_ua1[20] = {-99};
411 float wirenr_ua2[20] = {-99};
412 float wirenr_ub1[20] = {-99};
413 float wirenr_ub2[20] = {-99};
414 float wirenr_va1[20] = {-99};
415 float wirenr_va2[20] = {-99};
416 float wirenr_vb1[20] = {-99};
417 float wirenr_vb2[20] = {-99};
419 bool used_xa1[20] = {0};
420 bool used_xa2[20] = {0};
421 bool used_xb1[20] = {0};
422 bool used_xb2[20] = {0};
423 bool used_ya1[20] = {0};
424 bool used_ya2[20] = {0};
425 bool used_yb1[20] = {0};
426 bool used_yb2[20] = {0};
427 bool used_ua1[20] = {0};
428 bool used_ua2[20] = {0};
429 bool used_ub1[20] = {0};
430 bool used_ub2[20] = {0};
431 bool used_va1[20] = {0};
432 bool used_va2[20] = {0};
433 bool used_vb1[20] = {0};
434 bool used_vb2[20] = {0};
454 bool written =
false;
468 prev_time = int(digit->
GetTime());
473 double times = digit->
GetTime();
474 bool secondaries =
false;
477 for (
int sec = 0; sec < it_va1 - 1; sec++) {
483 if (it_va1 == 19 || secondaries)
486 time_va1[it_va1] = times;
491 for (
int sec = 0; sec < it_vb1 - 1; sec++) {
497 if (it_vb1 == 19 || secondaries)
500 time_vb1[it_vb1] = times;
504 for (
int sec = 0; sec < it_ua1 - 1; sec++) {
511 if (it_ua1 == 19 || secondaries)
514 time_ua1[it_ua1] = times;
518 for (
int sec = 0; sec < it_ub1 - 1; sec++) {
525 if (it_ub1 == 19 || secondaries)
528 time_ub1[it_ub1] = times;
533 for (
int sec = 0; sec < it_ya1 - 1; sec++) {
539 if (it_ya1 == 19 || secondaries)
543 time_ya1[it_ya1] = times;
547 for (
int sec = 0; sec < it_yb1 - 1; sec++) {
553 if (it_yb1 == 19 || secondaries)
556 time_yb1[it_yb1] = times;
560 for (
int sec = 0; sec < it_xa1 - 1; sec++) {
567 if (it_xa1 == 19 || secondaries)
570 time_xa1[it_xa1] = times;
574 for (
int sec = 0; sec < it_xb1 - 1; sec++) {
581 if (it_xb1 == 19 || secondaries)
584 time_xb1[it_xb1] = times;
588 for (
int sec = 0; sec < it_va2 - 1; sec++) {
595 if (it_va2 == 19 || secondaries)
598 time_va2[it_va2] = times;
602 for (
int sec = 0; sec < it_vb2 - 1; sec++) {
609 if (it_vb2 == 19 || secondaries)
612 time_vb2[it_vb2] = times;
616 for (
int sec = 0; sec < it_ua2 - 1; sec++) {
622 if (it_ua2 == 19 || secondaries)
625 time_ua2[it_ua2] = times;
629 for (
int sec = 0; sec < it_ub2 - 1; sec++) {
636 if (it_ub2 == 19 || secondaries)
639 time_ub2[it_ub2] = times;
643 for (
int sec = 0; sec < it_ya2 - 1; sec++) {
651 if (it_ya2 == 19 || secondaries)
654 time_ya2[it_ya2] = times;
658 for (
int sec = 0; sec < it_yb2 - 1; sec++) {
665 if (it_yb2 == 19 || secondaries)
668 time_yb2[it_yb2] = times;
673 for (
int sec = 0; sec < it_xa2 - 1; sec++) {
679 if (it_xa2 == 19 || secondaries)
682 time_xa2[it_xa2] = times;
686 for (
int sec = 0; sec < it_xb2 - 1; sec++) {
692 if (it_xb2 == 19 || secondaries)
695 time_xb2[it_xb2] = times;
703 float rh_segDC1[8][150];
704 float rh_segDC2[8][150];
705 float rh_sigm_segDC1[8][150];
706 float rh_sigm_segDC2[8][150];
707 float xDC1_glob[150];
708 float yDC1_glob[150];
709 float xDC2_glob[150];
710 float yDC2_glob[150];
713 int size_segDC1[150];
714 int size_segDC2[150];
715 int nDC1_segments = 0;
716 int nDC2_segments = 0;
717 bool has7DC1 =
false;
718 bool has7DC2 =
false;
724 float sigm_x1_ab[2][150];
725 float sigm_y1_ab[2][150];
726 float sigm_u1_ab[2][150];
727 float sigm_v1_ab[2][150];
732 float sigm_x2_ab[2][150];
733 float sigm_y2_ab[2][150];
734 float sigm_u2_ab[2][150];
735 float sigm_v2_ab[2][150];
738 float x1_single[2][40];
739 float y1_single[2][40];
740 float u1_single[2][40];
741 float v1_single[2][40];
742 float sigm_x1_single[2][40];
743 float sigm_y1_single[2][40];
744 float sigm_u1_single[2][40];
745 float sigm_v1_single[2][40];
746 float x2_single[2][40];
747 float y2_single[2][40];
748 float u2_single[2][40];
749 float v2_single[2][40];
750 float sigm_x2_single[2][40];
751 float sigm_y2_single[2][40];
752 float sigm_u2_single[2][40];
753 float sigm_v2_single[2][40];
755 for (
int i = 0;
i < 8;
i++) {
756 for (
int j = 0; j < 150; j++) {
757 rh_segDC1[
i][j] = -999;
758 rh_segDC2[
i][j] = -999;
759 rh_sigm_segDC1[
i][j] = 1;
760 rh_sigm_segDC2[
i][j] = 1;
771 sigm_x1_ab[
i][j] = 1;
772 sigm_y1_ab[
i][j] = 1;
773 sigm_u1_ab[
i][j] = 1;
774 sigm_v1_ab[
i][j] = 1;
775 sigm_x2_ab[
i][j] = 1;
776 sigm_y2_ab[
i][j] = 1;
777 sigm_u2_ab[
i][j] = 1;
778 sigm_v2_ab[
i][j] = 1;
782 x1_single[
i][j] = -999;
783 y1_single[
i][j] = -999;
784 u1_single[
i][j] = -999;
785 v1_single[
i][j] = -999;
786 x2_single[
i][j] = -999;
787 y2_single[
i][j] = -999;
788 u2_single[
i][j] = -999;
789 v2_single[
i][j] = -999;
790 sigm_x1_single[
i][j] = 1;
791 sigm_y1_single[
i][j] = 1;
792 sigm_u1_single[
i][j] = 1;
793 sigm_v1_single[
i][j] = 1;
794 sigm_x2_single[
i][j] = 1;
795 sigm_y2_single[
i][j] = 1;
796 sigm_u2_single[
i][j] = 1;
797 sigm_v2_single[
i][j] = 1;
828 float xa1_pm[2] = {-999};
829 float xb1_pm[2] = {-999};
830 float ya1_pm[2] = {-999};
831 float yb1_pm[2] = {-999};
832 float ua1_pm[2] = {-999};
833 float ub1_pm[2] = {-999};
834 float va1_pm[2] = {-999};
835 float vb1_pm[2] = {-999};
839 for (
Int_t i = 0;
i < it_xa1; ++
i) {
840 for (
Int_t j = 0; j < it_xb1; ++j) {
843 if ((wirenr_xa1[
i] != wirenr_xb1[j] && wirenr_xa1[
i] != wirenr_xb1[j] + 1))
847 for (
int t_it = 0; t_it < 4; t_it++) {
848 if (time_xa1[
i] >= t_dc[t_it][0] && time_xa1[
i] < t_dc[t_it + 1][0]) {
853 double time_xa = time_xa1[
i];
856 if (func_nr_a == 1 || func_nr_a == 2)
859 * (pol_par_dc[1][0][0] + pol_par_dc[1][1][0] * time_xa + pol_par_dc[1][2][0] * time_xa * time_xa
860 + pol_par_dc[1][3][0] * time_xa * time_xa * time_xa
861 + pol_par_dc[1][4][0] * time_xa * time_xa * time_xa * time_xa);
867 * (pol_par_dc[2][0][0] + pol_par_dc[2][1][0] * time_xa + pol_par_dc[2][2][0] * time_xa * time_xa
868 + pol_par_dc[2][3][0] * time_xa * time_xa * time_xa
869 + pol_par_dc[2][4][0] * time_xa * time_xa * time_xa * time_xa);
871 for (
int t_it = 0; t_it < 4; t_it++) {
872 if (time_xb1[j] >= t_dc[t_it][1] && time_xb1[j] < t_dc[t_it + 1][1]) {
877 time_xa = time_xb1[j];
879 if (func_nr_b == 1 || func_nr_b == 2)
882 * (pol_par_dc[1][0][1] + pol_par_dc[1][1][1] * time_xa + pol_par_dc[1][2][1] * time_xa * time_xa
883 + pol_par_dc[1][3][1] * time_xa * time_xa * time_xa
884 + pol_par_dc[1][4][1] * time_xa * time_xa * time_xa * time_xa);
890 * (pol_par_dc[2][0][1] + pol_par_dc[2][1][1] * time_xa + pol_par_dc[2][2][1] * time_xa * time_xa
891 + pol_par_dc[2][3][1] * time_xa * time_xa * time_xa
892 + pol_par_dc[2][4][1] * time_xa * time_xa * time_xa * time_xa);
894 xa1_pm[0] = wirenr_xa1[
i] - 119 + d_a;
895 xa1_pm[1] = wirenr_xa1[
i] - 119 - d_a;
896 xb1_pm[0] = wirenr_xb1[j] - 118.5 + d_b;
897 xb1_pm[1] = wirenr_xb1[j] - 118.5 - d_b;
900 for (
int k = 0; k < 2; k++) {
901 for (
int m = 0;
m < 2;
m++) {
902 if (
fabs(xa1_pm[k] - xb1_pm[
m]) < dmin1) {
903 dmin1 =
fabs(xa1_pm[k] - xb1_pm[
m]);
904 x1_ab[0][pair_x1] = xa1_pm[k];
905 x1_ab[1][pair_x1] = xb1_pm[
m];
910 sigm_x1_ab[0][pair_x1] = 0.08 * 0.08;
912 if (d_a >= 0.02 && d_a < 0.1) {
913 sigm_x1_ab[0][pair_x1] = 0.06 * 0.06;
915 if (d_a >= 0.1 && d_a < 0.4) {
916 sigm_x1_ab[0][pair_x1] = 0.025 * 0.025;
918 if (d_a >= 0.4 && d_a < 0.41) {
919 sigm_x1_ab[0][pair_x1] = 0.08 * 0.08;
922 sigm_x1_ab[0][pair_x1] = 0.10 * 0.10;
926 sigm_x1_ab[1][pair_x1] = 0.08 * 0.08;
928 if (d_b >= 0.02 && d_b < 0.1) {
929 sigm_x1_ab[1][pair_x1] = 0.06 * 0.06;
931 if (d_b >= 0.1 && d_b < 0.4) {
932 sigm_x1_ab[1][pair_x1] = 0.025 * 0.025;
934 if (d_b >= 0.4 && d_b < 0.41) {
935 sigm_x1_ab[1][pair_x1] = 0.08 * 0.08;
938 sigm_x1_ab[1][pair_x1] = 0.10 * 0.10;
950 for (
Int_t i = 0;
i < it_xa1; ++
i) {
955 for (
int t_it = 0; t_it < 4; t_it++) {
956 if (time_xa1[
i] >= t_dc[t_it][0] && time_xa1[
i] < t_dc[t_it + 1][0]) {
961 double time_xa = time_xa1[
i];
965 if (func_nr_a == 1 || func_nr_a == 2)
967 * (pol_par_dc[1][0][0] + pol_par_dc[1][1][0] * time_xa + pol_par_dc[1][2][0] * time_xa * time_xa
968 + pol_par_dc[1][3][0] * time_xa * time_xa * time_xa
969 + pol_par_dc[1][4][0] * time_xa * time_xa * time_xa * time_xa);
974 * (pol_par_dc[2][0][0] + pol_par_dc[2][1][0] * time_xa + pol_par_dc[2][2][0] * time_xa * time_xa
975 + pol_par_dc[2][3][0] * time_xa * time_xa * time_xa
976 + pol_par_dc[2][4][0] * time_xa * time_xa * time_xa * time_xa);
978 x1_single[0][single_xa1] = wirenr_xa1[
i] - 119 + d_a;
979 x1_single[0][single_xa1 + 1] = wirenr_xa1[
i] - 119 - d_a;
982 sigm_x1_single[0][single_xa1] = 0.08 * 0.08;
983 sigm_x1_single[0][single_xa1 + 1] = 0.08 * 0.08;
985 if (d_a >= 0.02 && d_a < 0.1) {
986 sigm_x1_single[0][single_xa1] = 0.06 * 0.06;
987 sigm_x1_single[0][single_xa1 + 1] = 0.06 * 0.06;
989 if (d_a >= 0.1 && d_a < 0.4) {
990 sigm_x1_single[0][single_xa1] = 0.025 * 0.025;
991 sigm_x1_single[0][single_xa1 + 1] = 0.025 * 0.025;
993 if (d_a >= 0.4 && d_a < 0.41) {
994 sigm_x1_single[0][single_xa1] = 0.08 * 0.08;
995 sigm_x1_single[0][single_xa1 + 1] = 0.08 * 0.08;
998 sigm_x1_single[0][single_xa1] = 0.10 * 0.10;
999 sigm_x1_single[0][single_xa1 + 1] = 0.10 * 0.10;
1005 for (
Int_t j = 0; j < it_xb1; ++j) {
1010 double time_xa = time_xb1[j];
1013 for (
int t_it = 0; t_it < 4; t_it++) {
1014 if (time_xb1[j] >= t_dc[t_it][1] && time_xb1[j] < t_dc[t_it + 1][1]) {
1019 time_xa = time_xb1[j];
1020 if (func_nr_b == 1 || func_nr_b == 2)
1022 * (pol_par_dc[1][0][1] + pol_par_dc[1][1][1] * time_xa + pol_par_dc[1][2][1] * time_xa * time_xa
1023 + pol_par_dc[1][3][1] * time_xa * time_xa * time_xa
1024 + pol_par_dc[1][4][1] * time_xa * time_xa * time_xa * time_xa);
1029 * (pol_par_dc[2][0][1] + pol_par_dc[2][1][1] * time_xa + pol_par_dc[2][2][1] * time_xa * time_xa
1030 + pol_par_dc[2][3][1] * time_xa * time_xa * time_xa
1031 + pol_par_dc[2][4][1] * time_xa * time_xa * time_xa * time_xa);
1032 x1_single[1][single_xb1] = wirenr_xb1[j] - 118.5 + d_b;
1033 x1_single[1][single_xb1 + 1] = wirenr_xb1[j] - 118.5 - d_b;
1036 sigm_x1_single[1][single_xb1] = 0.08 * 0.08;
1037 sigm_x1_single[1][single_xb1 + 1] = 0.08 * 0.08;
1039 if (d_b >= 0.02 && d_b < 0.1) {
1040 sigm_x1_single[1][single_xb1] = 0.06 * 0.06;
1041 sigm_x1_single[1][single_xb1 + 1] = 0.06 * 0.06;
1043 if (d_b >= 0.1 && d_b < 0.4) {
1044 sigm_x1_single[1][single_xb1] = 0.0250 * 0.0250;
1045 sigm_x1_single[1][single_xb1 + 1] = 0.0250 * 0.0250;
1047 if (d_b >= 0.4 && d_b < 0.41) {
1048 sigm_x1_single[1][single_xb1] = 0.08 * 0.08;
1049 sigm_x1_single[1][single_xb1 + 1] = 0.08 * 0.08;
1052 sigm_x1_single[1][single_xb1] = 0.10 * 0.10;
1053 sigm_x1_single[1][single_xb1 + 1] = 0.10 * 0.10;
1062 for (
Int_t i = 0;
i < it_ya1; ++
i) {
1063 for (
Int_t j = 0; j < it_yb1; ++j) {
1066 if ((wirenr_ya1[
i] != wirenr_yb1[j] && wirenr_ya1[
i] != wirenr_yb1[j] + 1))
1070 for (
int t_it = 0; t_it < 4; t_it++) {
1071 if (time_ya1[
i] >= t_dc[t_it][2] && time_ya1[
i] < t_dc[t_it + 1][2]) {
1079 if (func_nr_a == 1 || func_nr_a == 2)
1081 * (pol_par_dc[1][0][2] + pol_par_dc[1][1][2] * time_ya1[
i]
1082 + pol_par_dc[1][2][2] * time_ya1[
i] * time_ya1[
i]
1083 + pol_par_dc[1][3][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]
1084 + pol_par_dc[1][4][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]);
1089 * (pol_par_dc[2][0][2] + pol_par_dc[2][1][2] * time_ya1[
i]
1090 + pol_par_dc[2][2][2] * time_ya1[
i] * time_ya1[
i]
1091 + pol_par_dc[2][3][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]
1092 + pol_par_dc[2][4][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]);
1093 for (
int t_it = 0; t_it < 4; t_it++) {
1094 if (time_yb1[j] >= t_dc[t_it][3] && time_yb1[j] < t_dc[t_it + 1][3]) {
1099 if (func_nr_b == 1 || func_nr_b == 2)
1101 * (pol_par_dc[1][0][3] + pol_par_dc[1][1][3] * time_yb1[j]
1102 + pol_par_dc[1][2][3] * time_yb1[j] * time_yb1[j]
1103 + pol_par_dc[1][3][3] * time_yb1[j] * time_yb1[j] * time_yb1[j]
1104 + pol_par_dc[1][4][3] * time_yb1[j] * time_yb1[j] * time_yb1[j] * time_yb1[j]);
1109 * (pol_par_dc[2][0][3] + pol_par_dc[2][1][3] * time_yb1[j]
1110 + pol_par_dc[2][2][3] * time_yb1[j] * time_yb1[j]
1111 + pol_par_dc[2][3][3] * time_yb1[j] * time_yb1[j] * time_yb1[j]
1112 + pol_par_dc[2][4][3] * time_yb1[j] * time_yb1[j] * time_yb1[j] * time_yb1[j]);
1114 ya1_pm[0] = wirenr_ya1[
i] - 119 + d_a;
1115 ya1_pm[1] = wirenr_ya1[
i] - 119 - d_a;
1116 yb1_pm[0] = wirenr_yb1[j] - 118.5 + d_b;
1117 yb1_pm[1] = wirenr_yb1[j] - 118.5 - d_b;
1121 for (
int k = 0; k < 2; k++) {
1122 for (
int m = 0;
m < 2;
m++) {
1123 if (
fabs(ya1_pm[k] - yb1_pm[
m]) < dmin1) {
1124 dmin1 =
fabs(ya1_pm[k] - yb1_pm[
m]);
1125 y1_ab[0][pair_y1] = ya1_pm[k];
1126 y1_ab[1][pair_y1] = yb1_pm[
m];
1131 sigm_y1_ab[0][pair_y1] = 0.08 * 0.08;
1133 if (d_a >= 0.02 && d_a < 0.1) {
1134 sigm_y1_ab[0][pair_y1] = 0.06 * 0.06;
1136 if (d_a >= 0.1 && d_a < 0.4) {
1137 sigm_y1_ab[0][pair_y1] = 0.025 * 0.025;
1139 if (d_a >= 0.4 && d_a < 0.41) {
1140 sigm_y1_ab[0][pair_y1] = 0.08 * 0.08;
1143 sigm_y1_ab[0][pair_y1] = 0.10 * 0.10;
1147 sigm_y1_ab[1][pair_y1] = 0.08 * 0.08;
1149 if (d_b >= 0.02 && d_b < 0.1) {
1150 sigm_y1_ab[1][pair_y1] = 0.06 * 0.06;
1152 if (d_b >= 0.1 && d_b < 0.4) {
1153 sigm_y1_ab[1][pair_y1] = 0.025 * 0.025;
1155 if (d_b >= 0.4 && d_b < 0.41) {
1156 sigm_y1_ab[1][pair_y1] = 0.08 * 0.08;
1159 sigm_y1_ab[1][pair_y1] = 0.10 * 0.10;
1171 for (
Int_t i = 0;
i < it_ya1; ++
i) {
1177 for (
int t_it = 0; t_it < 4; t_it++) {
1178 if (time_ya1[
i] >= t_dc[t_it][2] && time_ya1[
i] < t_dc[t_it + 1][2]) {
1183 if (func_nr_a == 1 || func_nr_a == 2)
1185 * (pol_par_dc[1][0][2] + pol_par_dc[1][1][2] * time_ya1[
i]
1186 + pol_par_dc[1][2][2] * time_ya1[
i] * time_ya1[
i]
1187 + pol_par_dc[1][3][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]
1188 + pol_par_dc[1][4][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]);
1193 * (pol_par_dc[2][0][2] + pol_par_dc[2][1][2] * time_ya1[
i]
1194 + pol_par_dc[2][2][2] * time_ya1[
i] * time_ya1[
i]
1195 + pol_par_dc[2][3][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]
1196 + pol_par_dc[2][4][2] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i] * time_ya1[
i]);
1198 y1_single[0][single_ya1] = wirenr_ya1[
i] - 119 + d_a;
1199 y1_single[0][single_ya1 + 1] = wirenr_ya1[
i] - 119 - d_a;
1202 sigm_y1_single[0][single_ya1] = 0.08 * 0.08;
1203 sigm_y1_single[0][single_ya1 + 1] = 0.08 * 0.08;
1205 if (d_a >= 0.02 && d_a < 0.1) {
1206 sigm_y1_single[0][single_ya1] = 0.06 * 0.06;
1207 sigm_y1_single[0][single_ya1 + 1] = 0.06 * 0.06;
1209 if (d_a >= 0.1 && d_a < 0.4) {
1210 sigm_y1_single[0][single_ya1] = 0.025 * 0.025;
1211 sigm_y1_single[0][single_ya1 + 1] = 0.025 * 0.025;
1213 if (d_a >= 0.4 && d_a < 0.41) {
1214 sigm_y1_single[0][single_ya1] = 0.08 * 0.08;
1215 sigm_y1_single[0][single_ya1 + 1] = 0.08 * 0.08;
1218 sigm_y1_single[0][single_ya1] = 0.10 * 0.10;
1219 sigm_y1_single[0][single_ya1 + 1] = 0.10 * 0.10;
1224 for (
Int_t j = 0; j < it_yb1; ++j) {
1227 double time_ya = time_yb1[j];
1229 for (
int t_it = 0; t_it < 4; t_it++) {
1230 if (time_yb1[j] >= t_dc[t_it][3] && time_yb1[j] < t_dc[t_it + 1][3]) {
1237 if (func_nr_b == 1 || func_nr_b == 2)
1239 * (pol_par_dc[1][0][3] + pol_par_dc[1][1][3] * time_yb1[j]
1240 + pol_par_dc[1][2][3] * time_yb1[j] * time_yb1[j]
1241 + pol_par_dc[1][3][3] * time_yb1[j] * time_yb1[j] * time_yb1[j]
1242 + pol_par_dc[1][4][3] * time_yb1[j] * time_yb1[j] * time_yb1[j] * time_yb1[j]);
1247 * (pol_par_dc[2][0][3] + pol_par_dc[2][1][3] * time_yb1[j]
1248 + pol_par_dc[2][2][3] * time_yb1[j] * time_yb1[j]
1249 + pol_par_dc[2][3][3] * time_yb1[j] * time_yb1[j] * time_yb1[j]
1250 + pol_par_dc[2][4][3] * time_yb1[j] * time_yb1[j] * time_yb1[j] * time_yb1[j]);
1251 y1_single[1][single_yb1] = wirenr_yb1[j] - 118.5 + d_b;
1252 y1_single[1][single_yb1 + 1] = wirenr_yb1[j] - 118.5 - d_b;
1255 sigm_y1_single[1][single_yb1] = 0.08 * 0.08;
1256 sigm_y1_single[1][single_yb1 + 1] = 0.08 * 0.08;
1258 if (d_b >= 0.02 && d_b < 0.1) {
1259 sigm_y1_single[1][single_yb1] = 0.06 * 0.06;
1260 sigm_y1_single[1][single_yb1 + 1] = 0.06 * 0.06;
1262 if (d_b >= 0.1 && d_b < 0.4) {
1263 sigm_y1_single[1][single_yb1] = 0.025 * 0.025;
1264 sigm_y1_single[1][single_yb1 + 1] = 0.025 * 0.025;
1266 if (d_b >= 0.4 && d_b < 0.41) {
1267 sigm_y1_single[1][single_yb1] = 0.10 * 0.10;
1268 sigm_y1_single[1][single_yb1 + 1] = 0.10 * 0.10;
1271 sigm_y1_single[1][single_yb1] = 0.10 * 0.10;
1272 sigm_y1_single[1][single_yb1 + 1] = 0.10 * 0.10;
1280 for (
Int_t i = 0;
i < it_ua1; ++
i) {
1281 for (
Int_t j = 0; j < it_ub1; ++j) {
1284 if ((wirenr_ua1[
i] != wirenr_ub1[j] && wirenr_ua1[
i] != wirenr_ub1[j] + 1))
1291 for (
int t_it = 0; t_it < 4; t_it++) {
1292 if (time_ua1[
i] >= t_dc[t_it][4] && time_ua1[
i] < t_dc[t_it + 1][4]) {
1301 * (pol_par_dc[2][0][4] + pol_par_dc[2][1][4] * time_ua1[
i]
1302 + pol_par_dc[2][2][4] * time_ua1[
i] * time_ua1[
i]
1303 + pol_par_dc[2][3][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]
1304 + pol_par_dc[2][4][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]);
1305 if (func_nr_a == 1 || func_nr_a == 2)
1307 * (pol_par_dc[1][0][4] + pol_par_dc[1][1][4] * time_ua1[
i]
1308 + pol_par_dc[1][2][4] * time_ua1[
i] * time_ua1[
i]
1309 + pol_par_dc[1][3][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]
1310 + pol_par_dc[1][4][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]);
1311 for (
int t_it = 0; t_it < 4; t_it++) {
1312 if (time_ub1[j] >= t_dc[t_it][5] && time_ub1[j] < t_dc[t_it + 1][5]) {
1322 * (pol_par_dc[2][0][5] + pol_par_dc[2][1][5] * time_ub1[j]
1323 + pol_par_dc[2][2][5] * time_ub1[j] * time_ub1[j]
1324 + pol_par_dc[2][3][5] * time_ub1[j] * time_ub1[j] * time_ub1[j]
1325 + pol_par_dc[2][4][5] * time_ub1[j] * time_ub1[j] * time_ub1[j] * time_ub1[j]);
1326 if (func_nr_b == 1 || func_nr_b == 2)
1328 * (pol_par_dc[1][0][5] + pol_par_dc[1][1][5] * time_ub1[j]
1329 + pol_par_dc[1][2][5] * time_ub1[j] * time_ub1[j]
1330 + pol_par_dc[1][3][5] * time_ub1[j] * time_ub1[j] * time_ub1[j]
1331 + pol_par_dc[1][4][5] * time_ub1[j] * time_ub1[j] * time_ub1[j] * time_ub1[j]);
1332 ua1_pm[0] = wirenr_ua1[
i] - 119 + d_a;
1333 ua1_pm[1] = wirenr_ua1[
i] - 119 - d_a;
1334 ub1_pm[0] = wirenr_ub1[j] - 118.5 + d_b;
1335 ub1_pm[1] = wirenr_ub1[j] - 118.5 - d_b;
1338 for (
int k = 0; k < 2; k++) {
1339 for (
int m = 0;
m < 2;
m++) {
1340 if (
fabs(ua1_pm[k] - ub1_pm[
m]) < dmin1) {
1341 dmin1 =
fabs(ua1_pm[k] - ub1_pm[
m]);
1342 u1_ab[0][pair_u1] = ua1_pm[k];
1343 u1_ab[1][pair_u1] = ub1_pm[
m];
1348 sigm_u1_ab[0][pair_u1] = 0.08 * 0.08;
1350 if (d_a >= 0.02 && d_a < 0.1) {
1351 sigm_u1_ab[0][pair_u1] = 0.06 * 0.06;
1353 if (d_a >= 0.1 && d_a < 0.4) {
1354 sigm_u1_ab[0][pair_u1] = 0.025 * 0.025;
1356 if (d_a >= 0.4 && d_a < 0.41) {
1357 sigm_u1_ab[0][pair_u1] = 0.08 * 0.08;
1360 sigm_u1_ab[0][pair_u1] = 0.10 * 0.10;
1364 sigm_u1_ab[1][pair_u1] = 0.08 * 0.08;
1366 if (d_b >= 0.02 && d_b < 0.1) {
1367 sigm_u1_ab[1][pair_u1] = 0.06 * 0.06;
1369 if (d_b >= 0.1 && d_b < 0.4) {
1370 sigm_u1_ab[1][pair_u1] = 0.025 * 0.025;
1372 if (d_b >= 0.4 && d_b < 0.41) {
1373 sigm_u1_ab[1][pair_u1] = 0.08 * 0.08;
1376 sigm_u1_ab[1][pair_u1] = 0.10 * 0.10;
1386 for (
Int_t i = 0;
i < it_ua1; ++
i) {
1393 for (
int t_it = 0; t_it < 4; t_it++) {
1394 if (time_ua1[
i] >= t_dc[t_it][4] && time_ua1[
i] < t_dc[t_it + 1][4]) {
1403 * (pol_par_dc[2][0][4] + pol_par_dc[2][1][4] * time_ua1[
i]
1404 + pol_par_dc[2][2][4] * time_ua1[
i] * time_ua1[
i]
1405 + pol_par_dc[2][3][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]
1406 + pol_par_dc[2][4][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]);
1407 if (func_nr_a == 1 || func_nr_a == 2)
1409 * (pol_par_dc[1][0][4] + pol_par_dc[1][1][4] * time_ua1[
i]
1410 + pol_par_dc[1][2][4] * time_ua1[
i] * time_ua1[
i]
1411 + pol_par_dc[1][3][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]
1412 + pol_par_dc[1][4][4] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i] * time_ua1[
i]);
1414 u1_single[0][single_ua1] = (wirenr_ua1[
i] - 119 + d_a);
1415 u1_single[0][single_ua1 + 1] = (wirenr_ua1[
i] - 119 - d_a);
1417 sigm_u1_single[0][single_ua1] = 0.08 * 0.08;
1418 sigm_u1_single[0][single_ua1 + 1] = 0.08 * 0.08;
1420 if (d_a >= 0.02 && d_a < 0.1) {
1421 sigm_u1_single[0][single_ua1] = 0.06 * 0.06;
1422 sigm_u1_single[0][single_ua1 + 1] = 0.06 * 0.06;
1424 if (d_a >= 0.1 && d_a < 0.4) {
1425 sigm_u1_single[0][single_ua1] = 0.025 * 0.025;
1426 sigm_u1_single[0][single_ua1 + 1] = 0.025 * 0.025;
1428 if (d_a >= 0.4 && d_a < 0.41) {
1429 sigm_u1_single[0][single_ua1] = 0.08 * 0.08;
1430 sigm_u1_single[0][single_ua1 + 1] = 0.08 * 0.08;
1433 sigm_u1_single[0][single_ua1] = 0.10 * 0.10;
1434 sigm_u1_single[0][single_ua1 + 1] = 0.10 * 0.10;
1439 for (
Int_t j = 0; j < it_ub1; ++j) {
1445 for (
int t_it = 0; t_it < 4; t_it++) {
1446 if (time_ub1[j] >= t_dc[t_it][5] && time_ub1[j] < t_dc[t_it + 1][5]) {
1455 * (pol_par_dc[2][0][5] + pol_par_dc[2][1][5] * time_ub1[j]
1456 + pol_par_dc[2][2][5] * time_ub1[j] * time_ub1[j]
1457 + pol_par_dc[2][3][5] * time_ub1[j] * time_ub1[j] * time_ub1[j]
1458 + pol_par_dc[2][4][5] * time_ub1[j] * time_ub1[j] * time_ub1[j] * time_ub1[j]);
1459 if (func_nr_b == 1 || func_nr_b == 2)
1461 * (pol_par_dc[1][0][5] + pol_par_dc[1][1][5] * time_ub1[j]
1462 + pol_par_dc[1][2][5] * time_ub1[j] * time_ub1[j]
1463 + pol_par_dc[1][3][5] * time_ub1[j] * time_ub1[j] * time_ub1[j]
1464 + pol_par_dc[1][4][5] * time_ub1[j] * time_ub1[j] * time_ub1[j] * time_ub1[j]);
1465 u1_single[1][single_ub1] = (wirenr_ub1[j] - 118.5 + d_b);
1466 u1_single[1][single_ub1 + 1] = (wirenr_ub1[j] - 118.5 - d_b);
1470 sigm_u1_single[1][single_ub1] = 0.08 * 0.08;
1471 sigm_u1_single[1][single_ub1 + 1] = 0.08 * 0.08;
1473 if (d_b >= 0.02 && d_b < 0.1) {
1474 sigm_u1_single[1][single_ub1] = 0.06 * 0.06;
1475 sigm_u1_single[1][single_ub1 + 1] = 0.06 * 0.06;
1477 if (d_b >= 0.1 && d_b < 0.4) {
1478 sigm_u1_single[1][single_ub1] = 0.025 * 0.025;
1479 sigm_u1_single[1][single_ub1 + 1] = 0.025 * 0.025;
1481 if (d_b >= 0.4 && d_b < 0.41) {
1482 sigm_u1_single[1][single_ub1] = 0.08 * 0.08;
1483 sigm_u1_single[1][single_ub1 + 1] = 0.08 * 0.08;
1486 sigm_u1_single[1][single_ub1] = 0.10 * 0.10;
1487 sigm_u1_single[1][single_ub1 + 1] = 0.10 * 0.10;
1494 for (
Int_t i = 0;
i < it_va1; ++
i) {
1495 for (
Int_t j = 0; j < it_vb1; ++j) {
1499 if ((wirenr_va1[
i] != wirenr_vb1[j] && wirenr_va1[
i] != wirenr_vb1[j] + 1))
1507 for (
int t_it = 0; t_it < 4; t_it++) {
1508 if (time_va1[
i] >= t_dc[t_it][6] && time_va1[
i] < t_dc[t_it + 1][6]) {
1518 * (pol_par_dc[2][0][6] + pol_par_dc[2][1][6] * time_va1[
i]
1519 + pol_par_dc[2][2][6] * time_va1[
i] * time_va1[
i]
1520 + pol_par_dc[2][3][6] * time_va1[
i] * time_va1[
i] * time_va1[
i]
1521 + pol_par_dc[2][4][6] * time_va1[
i] * time_va1[
i] * time_va1[
i] * time_va1[
i]);
1522 if (func_nr_a == 1 || func_nr_a == 2)
1524 * (pol_par_dc[1][0][6] + pol_par_dc[1][1][6] * time_va1[
i]
1525 + pol_par_dc[1][2][6] * time_va1[
i] * time_va1[
i]
1526 + pol_par_dc[1][3][6] * time_va1[
i] * time_va1[
i] * time_va1[
i]
1527 + pol_par_dc[1][4][6] * time_va1[
i] * time_va1[
i] * time_va1[
i] * time_va1[
i]);
1528 for (
int t_it = 0; t_it < 4; t_it++) {
1529 if (time_vb1[j] >= t_dc[t_it][7] && time_vb1[j] < t_dc[t_it + 1][7]) {
1535 if (func_nr_b == 1 || func_nr_b == 2)
1537 * (pol_par_dc[1][0][7] + pol_par_dc[1][1][7] * time_vb1[j]
1538 + pol_par_dc[1][2][7] * time_vb1[j] * time_vb1[j]
1539 + pol_par_dc[1][3][7] * time_vb1[j] * time_vb1[j] * time_vb1[j]
1540 + pol_par_dc[1][4][7] * time_vb1[j] * time_vb1[j] * time_vb1[j] * time_vb1[j]);
1546 * (pol_par_dc[2][0][7] + pol_par_dc[2][1][7] * time_vb1[j]
1547 + pol_par_dc[2][2][7] * time_vb1[j] * time_vb1[j]
1548 + pol_par_dc[2][3][7] * time_vb1[j] * time_vb1[j] * time_vb1[j]
1549 + pol_par_dc[2][4][7] * time_vb1[j] * time_vb1[j] * time_vb1[j] * time_vb1[j]);
1551 va1_pm[0] = wirenr_va1[
i] - 119 + d_a;
1552 va1_pm[1] = wirenr_va1[
i] - 119 - d_a;
1553 vb1_pm[0] = wirenr_vb1[j] - 118.5 + d_b;
1554 vb1_pm[1] = wirenr_vb1[j] - 118.5 - d_b;
1557 for (
int k = 0; k < 2; k++) {
1558 for (
int m = 0;
m < 2;
m++) {
1559 if (
fabs(va1_pm[k] - vb1_pm[
m]) < dmin1) {
1560 dmin1 =
fabs(va1_pm[k] - vb1_pm[
m]);
1561 v1_ab[0][pair_v1] = va1_pm[k];
1562 v1_ab[1][pair_v1] = vb1_pm[
m];
1567 sigm_v1_ab[0][pair_v1] = 0.08 * 0.08;
1569 if (d_a >= 0.02 && d_a < 0.1) {
1570 sigm_v1_ab[0][pair_v1] = 0.06 * 0.06;
1572 if (d_a >= 0.1 && d_a < 0.4) {
1573 sigm_v1_ab[0][pair_v1] = 0.025 * 0.025;
1575 if (d_a >= 0.4 && d_a < 0.41) {
1576 sigm_v1_ab[0][pair_v1] = 0.08 * 0.08;
1579 sigm_v1_ab[0][pair_v1] = 0.10 * 0.10;
1583 sigm_v1_ab[1][pair_v1] = 0.08 * 0.08;
1585 if (d_b >= 0.02 && d_b < 0.1) {
1586 sigm_v1_ab[1][pair_v1] = 0.06 * 0.06;
1588 if (d_b >= 0.1 && d_b < 0.4) {
1589 sigm_v1_ab[1][pair_v1] = 0.025 * 0.025;
1591 if (d_b >= 0.4 && d_b < 0.41) {
1592 sigm_v1_ab[1][pair_v1] = 0.08 * 0.08;
1595 sigm_v1_ab[1][pair_v1] = 0.10 * 0.10;
1606 for (
Int_t i = 0;
i < it_va1; ++
i) {
1613 for (
int t_it = 0; t_it < 4; t_it++) {
1614 if (time_va1[
i] >= t_dc[t_it][6] && time_va1[
i] < t_dc[t_it + 1][6]) {
1623 * (pol_par_dc[2][0][6] + pol_par_dc[2][1][6] * time_va1[
i]
1624 + pol_par_dc[2][2][6] * time_va1[
i] * time_va1[
i]
1625 + pol_par_dc[2][3][6] * time_va1[
i] * time_va1[
i] * time_va1[
i]
1626 + pol_par_dc[2][4][6] * time_va1[
i] * time_va1[
i] * time_va1[
i] * time_va1[
i]);
1627 if (func_nr_a == 1 || func_nr_a == 2)
1629 * (pol_par_dc[1][0][6] + pol_par_dc[1][1][6] * time_va1[
i]
1630 + pol_par_dc[1][2][6] * time_va1[
i] * time_va1[
i]
1631 + pol_par_dc[1][3][6] * time_va1[
i] * time_va1[
i] * time_va1[
i]
1632 + pol_par_dc[1][4][6] * time_va1[
i] * time_va1[
i] * time_va1[
i] * time_va1[
i]);
1634 v1_single[0][single_va1] = wirenr_va1[
i] - 119 + d_a;
1635 v1_single[0][single_va1 + 1] = wirenr_va1[
i] - 119 - d_a;
1638 sigm_v1_single[0][single_va1] = 0.08 * 0.08;
1639 sigm_v1_single[0][single_va1 + 1] = 0.08 * 0.08;
1641 if (d_a >= 0.02 && d_a < 0.1) {
1642 sigm_v1_single[0][single_va1] = 0.06 * 0.06;
1643 sigm_v1_single[0][single_va1 + 1] = 0.06 * 0.06;
1645 if (d_a >= 0.1 && d_a < 0.4) {
1646 sigm_v1_single[0][single_va1] = 0.025 * 0.025;
1647 sigm_v1_single[0][single_va1 + 1] = 0.025 * 0.025;
1649 if (d_a >= 0.4 && d_a < 0.41) {
1650 sigm_v1_single[0][single_va1] = 0.08 * 0.08;
1651 sigm_v1_single[0][single_va1 + 1] = 0.08 * 0.08;
1654 sigm_v1_single[0][single_va1] = 0.10 * 0.10;
1655 sigm_v1_single[0][single_va1 + 1] = 0.10 * 0.10;
1660 for (
Int_t j = 0; j < it_vb1; ++j) {
1666 for (
int t_it = 0; t_it < 4; t_it++) {
1667 if (time_vb1[j] >= t_dc[t_it][7] && time_vb1[j] < t_dc[t_it + 1][7]) {
1672 if (func_nr_b == 1 || func_nr_b == 2)
1674 * (pol_par_dc[1][0][7] + pol_par_dc[1][1][7] * time_vb1[j]
1675 + pol_par_dc[1][2][7] * time_vb1[j] * time_vb1[j]
1676 + pol_par_dc[1][3][7] * time_vb1[j] * time_vb1[j] * time_vb1[j]
1677 + pol_par_dc[1][4][7] * time_vb1[j] * time_vb1[j] * time_vb1[j] * time_vb1[j]);
1683 * (pol_par_dc[2][0][7] + pol_par_dc[2][1][7] * time_vb1[j]
1684 + pol_par_dc[2][2][7] * time_vb1[j] * time_vb1[j]
1685 + pol_par_dc[2][3][7] * time_vb1[j] * time_vb1[j] * time_vb1[j]
1686 + pol_par_dc[2][4][7] * time_vb1[j] * time_vb1[j] * time_vb1[j] * time_vb1[j]);
1688 v1_single[1][single_vb1] = wirenr_vb1[j] - 118.5 + d_b;
1689 v1_single[1][single_vb1 + 1] = wirenr_vb1[j] - 118.5 - d_b;
1691 sigm_v1_single[1][single_vb1] = 0.08 * 0.08;
1692 sigm_v1_single[1][single_vb1 + 1] = 0.08 * 0.08;
1694 if (d_b >= 0.02 && d_b < 0.1) {
1695 sigm_v1_single[1][single_vb1] = 0.06 * 0.06;
1696 sigm_v1_single[1][single_vb1 + 1] = 0.06 * 0.06;
1698 if (d_b >= 0.1 && d_b < 0.4) {
1699 sigm_v1_single[1][single_vb1] = 0.0250 * 0.0250;
1700 sigm_v1_single[1][single_vb1 + 1] = 0.0250 * 0.0250;
1702 if (d_b >= 0.4 && d_b < 0.41) {
1703 sigm_v1_single[1][single_vb1] = 0.08 * 0.08;
1704 sigm_v1_single[1][single_vb1 + 1] = 0.08 * 0.08;
1707 sigm_v1_single[1][single_vb1] = 0.10 * 0.10;
1708 sigm_v1_single[1][single_vb1 + 1] = 0.10 * 0.10;
1716 bool found_8p_seg =
false;
1717 float x_slope = 0.0;
1718 float y_slope = 0.0;
1720 if (pair_x1 * pair_y1 > 0) {
1721 for (
int i = 0;
i < pair_x1;
i++) {
1722 if (nDC1_segments > 48)
1724 float x_coord = (x1_ab[0][
i] + x1_ab[1][
i]) / 2;
1727 for (
int j = 0; j < pair_y1; j++) {
1728 if (nDC1_segments > 48)
1730 float y_coord = (y1_ab[0][j] + y1_ab[1][j]) / 2;
1733 float u_est =
isqrt_2 * (YU - XU);
1734 float v_est =
isqrt_2 * (YV + XV);
1735 bool foundU =
false;
1738 double dU_thresh = 1.3;
1739 for (
int k = 0; k < pair_u1; k++) {
1740 float u_coord = (u1_ab[0][k] + u1_ab[1][k]) / 2;
1741 if (
fabs(u_coord - u_est) > dU_thresh)
1743 dU_thresh =
fabs(u_coord - u_est);
1745 rh_segDC1[0][nDC1_segments] = x1_ab[0][
i];
1746 rh_segDC1[1][nDC1_segments] = x1_ab[1][
i];
1747 rh_segDC1[2][nDC1_segments] = y1_ab[0][j];
1748 rh_segDC1[3][nDC1_segments] = y1_ab[1][j];
1749 rh_segDC1[4][nDC1_segments] = u1_ab[0][k];
1750 rh_segDC1[5][nDC1_segments] = u1_ab[1][k];
1751 rh_sigm_segDC1[0][nDC1_segments] = sigm_x1_ab[0][
i];
1752 rh_sigm_segDC1[1][nDC1_segments] = sigm_x1_ab[1][
i];
1753 rh_sigm_segDC1[2][nDC1_segments] = sigm_y1_ab[0][j];
1754 rh_sigm_segDC1[3][nDC1_segments] = sigm_y1_ab[1][j];
1755 rh_sigm_segDC1[4][nDC1_segments] = sigm_u1_ab[0][k];
1756 rh_sigm_segDC1[5][nDC1_segments] = sigm_u1_ab[1][k];
1758 if (nDC1_segments > 48)
1762 if (found_8p_seg && !foundU)
1764 bool foundV =
false;
1766 double dV_thresh = 1.3;
1767 for (
int m = 0;
m < pair_v1;
m++) {
1768 if (nDC1_segments > 48)
1770 float v_coord = (v1_ab[0][
m] + v1_ab[1][
m]) / 2;
1771 if (
fabs(v_coord - v_est) > dV_thresh)
1773 dV_thresh =
fabs(v_coord - v_est);
1776 rh_segDC1[0][nDC1_segments] = x1_ab[0][
i];
1777 rh_segDC1[1][nDC1_segments] = x1_ab[1][
i];
1778 rh_segDC1[2][nDC1_segments] = y1_ab[0][j];
1779 rh_segDC1[3][nDC1_segments] = y1_ab[1][j];
1780 rh_segDC1[6][nDC1_segments] = v1_ab[0][
m];
1781 rh_segDC1[7][nDC1_segments] = v1_ab[1][
m];
1782 rh_sigm_segDC1[0][nDC1_segments] = sigm_x1_ab[0][
i];
1783 rh_sigm_segDC1[1][nDC1_segments] = sigm_x1_ab[1][
i];
1784 rh_sigm_segDC1[2][nDC1_segments] = sigm_y1_ab[0][j];
1785 rh_sigm_segDC1[3][nDC1_segments] = sigm_y1_ab[1][j];
1786 rh_sigm_segDC1[6][nDC1_segments] = sigm_v1_ab[0][
m];
1787 rh_sigm_segDC1[7][nDC1_segments] = sigm_v1_ab[1][
m];
1793 for (
int kk = 0; kk < single_ua1; kk++) {
1794 if (
fabs(u1_single[0][kk] - u_est) > 1.5)
1796 if (
fabs(u1_single[0][kk] - u_est) < min_a) {
1797 min_a =
fabs(u1_single[0][kk] - u_est);
1798 rh_segDC1[4][nDC1_segments] = u1_single[0][kk];
1799 rh_sigm_segDC1[4][nDC1_segments] = sigm_u1_single[0][kk];
1804 for (
int kk = 0; kk < single_ub1; kk++) {
1805 if (
fabs(u1_single[1][kk] - u_est) > 1.5)
1807 if (
fabs(u1_single[1][kk] - u_est) < min_b) {
1808 min_a =
fabs(u1_single[1][kk] - u_est);
1809 rh_segDC1[5][nDC1_segments] = u1_single[1][kk];
1810 rh_sigm_segDC1[5][nDC1_segments] = sigm_u1_single[1][kk];
1816 if (nDC1_segments > 48)
1820 if (nDC1_segments > 48)
1827 if (!foundV && foundU) {
1830 for (
int kk = 0; kk < single_va1; kk++) {
1831 if (
fabs(v1_single[0][kk] - v_est) > 1.5)
1834 if (
fabs(v1_single[0][kk] - v_est) < min_a) {
1835 min_a =
fabs(v1_single[0][kk] - v_est);
1836 rh_segDC1[6][nDC1_segments] = v1_single[0][kk];
1837 rh_sigm_segDC1[6][nDC1_segments] = sigm_v1_single[0][kk];
1841 for (
int kk = 0; kk < single_vb1; kk++) {
1842 if (
fabs(v1_single[1][kk] - v_est) > 1.5)
1844 if (
fabs(v1_single[1][kk] - v_est) < min_b) {
1845 min_b =
fabs(v1_single[1][kk] - v_est);
1846 rh_segDC1[7][nDC1_segments] = v1_single[1][kk];
1847 rh_sigm_segDC1[7][nDC1_segments] = sigm_v1_single[1][kk];
1853 if (foundV || foundU)
1860 if (pair_u1 * pair_v1 > 0 && !found_8p_seg) {
1862 for (
int i = 0;
i < pair_u1;
i++) {
1863 if (nDC1_segments > 48)
1865 float u_coord = (u1_ab[0][
i] + u1_ab[1][
i]) / 2;
1866 for (
int j = 0; j < pair_v1; j++) {
1867 if (nDC1_segments > 48)
1869 float v_coord = (v1_ab[0][j] + v1_ab[1][j]) / 2;
1870 bool foundX =
false;
1871 float y_est =
isqrt_2 * (u_coord + v_coord);
1872 float x_est =
isqrt_2 * (v_coord - u_coord);
1875 double dX_thresh = 1.5;
1876 for (
int k = 0; k < pair_x1; k++) {
1877 float x_coord = (x1_ab[0][k] + x1_ab[1][k]) / 2;
1878 if (nDC1_segments > 48)
1880 if (
fabs(x_coord - x_est) > dX_thresh)
1882 dX_thresh =
fabs(x_coord - x_est);
1884 rh_segDC1[0][nDC1_segments] = x1_ab[0][k];
1885 rh_segDC1[1][nDC1_segments] = x1_ab[1][k];
1886 rh_segDC1[4][nDC1_segments] = u1_ab[0][
i];
1887 rh_segDC1[5][nDC1_segments] = u1_ab[1][
i];
1888 rh_segDC1[6][nDC1_segments] = v1_ab[0][j];
1889 rh_segDC1[7][nDC1_segments] = v1_ab[1][j];
1890 rh_sigm_segDC1[0][nDC1_segments] = sigm_x1_ab[0][k];
1891 rh_sigm_segDC1[1][nDC1_segments] = sigm_x1_ab[1][k];
1892 rh_sigm_segDC1[4][nDC1_segments] = sigm_u1_ab[0][
i];
1893 rh_sigm_segDC1[5][nDC1_segments] = sigm_u1_ab[1][
i];
1894 rh_sigm_segDC1[6][nDC1_segments] = sigm_v1_ab[0][j];
1895 rh_sigm_segDC1[7][nDC1_segments] = sigm_v1_ab[1][j];
1898 if (nDC1_segments > 48)
1903 if (found_8p_seg && !foundX)
1905 bool foundY =
false;
1908 double dY_thresh = 1.0;
1909 for (
int m = 0;
m < pair_y1;
m++) {
1910 if (nDC1_segments > 48)
1912 float y_coord = (y1_ab[0][
m] + y1_ab[1][
m]) / 2;
1913 if (
fabs(y_coord - y_est) > dY_thresh)
1915 dY_thresh =
fabs(y_coord - y_est);
1918 if (nDC1_segments > 48)
1920 rh_segDC1[2][nDC1_segments] = y1_ab[0][
m];
1921 rh_segDC1[3][nDC1_segments] = y1_ab[1][
m];
1922 rh_segDC1[4][nDC1_segments] = u1_ab[0][
i];
1923 rh_segDC1[5][nDC1_segments] = u1_ab[1][
i];
1924 rh_segDC1[6][nDC1_segments] = v1_ab[0][j];
1925 rh_segDC1[7][nDC1_segments] = v1_ab[1][j];
1926 rh_sigm_segDC1[2][nDC1_segments] = sigm_y1_ab[0][
m];
1927 rh_sigm_segDC1[3][nDC1_segments] = sigm_y1_ab[1][
m];
1928 rh_sigm_segDC1[4][nDC1_segments] = sigm_u1_ab[0][
i];
1929 rh_sigm_segDC1[5][nDC1_segments] = sigm_u1_ab[1][
i];
1930 rh_sigm_segDC1[6][nDC1_segments] = sigm_v1_ab[0][j];
1931 rh_sigm_segDC1[7][nDC1_segments] = sigm_v1_ab[1][j];
1937 for (
int kk = 0; kk < single_xa1; kk++) {
1938 if (
fabs(x1_single[0][kk] - x_est) > 1.5)
1940 if (
fabs(x1_single[0][kk] - x_est) < min_a) {
1941 min_a =
fabs(x1_single[0][kk] - x_est);
1942 rh_segDC1[0][nDC1_segments] = x1_single[0][kk];
1943 rh_sigm_segDC1[0][nDC1_segments] = sigm_x1_single[0][kk];
1947 for (
int kk = 0; kk < single_xb1; kk++) {
1948 if (
fabs(x1_single[1][kk] - x_est) > 1.5)
1950 if (
fabs(x1_single[1][kk] - x_est) < min_b) {
1951 min_a =
fabs(x1_single[1][kk] - x_est);
1952 rh_segDC1[1][nDC1_segments] = x1_single[1][kk];
1953 rh_sigm_segDC1[1][nDC1_segments] = sigm_x1_single[1][kk];
1957 if (nDC1_segments > 48)
1962 if (!foundY && foundX) {
1965 for (
int kk = 0; kk < single_ya1; kk++) {
1966 if (
fabs(y1_single[0][kk] - y_est) > 1.5)
1968 if (
fabs(y1_single[0][kk] - y_est) < min_a) {
1969 min_a =
fabs(y1_single[0][kk] - y_est);
1970 rh_segDC1[2][nDC1_segments] = y1_single[0][kk];
1971 rh_sigm_segDC1[2][nDC1_segments] = sigm_y1_single[0][kk];
1975 for (
int kk = 0; kk < single_yb1; kk++) {
1976 if (
fabs(y1_single[1][kk] - y_est) > 1.5)
1978 if (
fabs(y1_single[1][kk] - y_est) < min_b) {
1979 min_b =
fabs(y1_single[1][kk] - y_est);
1980 rh_segDC1[3][nDC1_segments] = y1_single[1][kk];
1981 rh_sigm_segDC1[3][nDC1_segments] = sigm_y1_single[1][kk];
1987 if (foundX || foundY)
1994 float par_ab1[4][150];
1995 float par_ab2[4][150];
1996 for (
int i = 0;
i < 8;
i++) {
1997 for (
int j = 0; j < 150; j++) {
2000 par_ab1[
i][j] = -999;
2001 par_ab2[
i][j] = -999;
2017 float xa2_pm[2] = {-999};
2018 float xb2_pm[2] = {-999};
2019 float ya2_pm[2] = {-999};
2020 float yb2_pm[2] = {-999};
2021 float ua2_pm[2] = {-999};
2022 float ub2_pm[2] = {-999};
2023 float va2_pm[2] = {-999};
2024 float vb2_pm[2] = {-999};
2028 for (
Int_t i = 0;
i < it_xa2; ++
i) {
2029 for (
Int_t j = 0; j < it_xb2; ++j) {
2032 if ((wirenr_xa2[
i] != wirenr_xb2[j] && wirenr_xa2[
i] != wirenr_xb2[j] + 1))
2036 for (
int t_it = 0; t_it < 4; t_it++) {
2037 if (time_xa2[
i] >= t_dc[t_it][8] && time_xa2[
i] < t_dc[t_it + 1][8]) {
2042 double time_xa = time_xa2[
i];
2046 if (func_nr_a == 1 || func_nr_a == 2)
2049 * (pol_par_dc[1][0][8] + pol_par_dc[1][1][8] * time_xa + pol_par_dc[1][2][8] * time_xa * time_xa
2050 + pol_par_dc[1][3][8] * time_xa * time_xa * time_xa
2051 + pol_par_dc[1][4][8] * time_xa * time_xa * time_xa * time_xa);
2057 * (pol_par_dc[2][0][8] + pol_par_dc[2][1][8] * time_xa + pol_par_dc[2][2][8] * time_xa * time_xa
2058 + pol_par_dc[2][3][8] * time_xa * time_xa * time_xa
2059 + pol_par_dc[2][4][8] * time_xa * time_xa * time_xa * time_xa);
2061 for (
int t_it = 0; t_it < 4; t_it++) {
2062 if (time_xb2[j] >= t_dc[t_it][9] && time_xb2[j] < t_dc[t_it + 1][9]) {
2067 time_xa = time_xb2[j];
2069 if (func_nr_b == 1 || func_nr_b == 2)
2072 * (pol_par_dc[1][0][9] + pol_par_dc[1][1][9] * time_xa + pol_par_dc[1][2][9] * time_xa * time_xa
2073 + pol_par_dc[1][3][9] * time_xa * time_xa * time_xa
2074 + pol_par_dc[1][4][9] * time_xa * time_xa * time_xa * time_xa);
2080 * (pol_par_dc[2][0][9] + pol_par_dc[2][1][9] * time_xa + pol_par_dc[2][2][9] * time_xa * time_xa
2081 + pol_par_dc[2][3][9] * time_xa * time_xa * time_xa
2082 + pol_par_dc[2][4][9] * time_xa * time_xa * time_xa * time_xa);
2084 xa2_pm[0] = wirenr_xa2[
i] - 119 + d_a;
2085 xa2_pm[1] = wirenr_xa2[
i] - 119 - d_a;
2086 xb2_pm[0] = wirenr_xb2[j] - 118.5 + d_b;
2087 xb2_pm[1] = wirenr_xb2[j] - 118.5 - d_b;
2090 for (
int k = 0; k < 2; k++) {
2091 for (
int m = 0;
m < 2;
m++) {
2092 if (
fabs(xa2_pm[k] - xb2_pm[
m]) < dmin1) {
2093 dmin1 =
fabs(xa2_pm[k] - xb2_pm[
m]);
2094 x2_ab[0][pair_x2] = xa2_pm[k];
2095 x2_ab[1][pair_x2] = xb2_pm[
m];
2100 sigm_x2_ab[0][pair_x2] = 0.08 * 0.08;
2102 if (d_a >= 0.02 && d_a < 0.1) {
2103 sigm_x2_ab[0][pair_x2] = 0.06 * 0.06;
2105 if (d_a >= 0.1 && d_a < 0.4) {
2106 sigm_x2_ab[0][pair_x2] = 0.025 * 0.025;
2108 if (d_a >= 0.4 && d_a < 0.41) {
2109 sigm_x2_ab[0][pair_x2] = 0.08 * 0.08;
2112 sigm_x2_ab[0][pair_x2] = 0.10 * 0.10;
2116 sigm_x2_ab[1][pair_x2] = 0.08 * 0.08;
2118 if (d_b >= 0.02 && d_b < 0.1) {
2119 sigm_x2_ab[1][pair_x2] = 0.06 * 0.06;
2121 if (d_b >= 0.1 && d_b < 0.4) {
2122 sigm_x2_ab[1][pair_x2] = 0.025 * 0.025;
2124 if (d_b >= 0.4 && d_b < 0.41) {
2125 sigm_x2_ab[1][pair_x2] = 0.08 * 0.08;
2128 sigm_x2_ab[1][pair_x2] = 0.10 * 0.10;
2138 for (
Int_t i = 0;
i < it_xa2; ++
i) {
2145 for (
int t_it = 0; t_it < 4; t_it++) {
2146 if (time_xa2[
i] >= t_dc[t_it][8] && time_xa2[
i] < t_dc[t_it + 1][8]) {
2151 double time_xa = time_xa2[
i];
2152 if (func_nr_a == 1 || func_nr_a == 2)
2154 * (pol_par_dc[1][0][8] + pol_par_dc[1][1][8] * time_xa + pol_par_dc[1][2][8] * time_xa * time_xa
2155 + pol_par_dc[1][3][8] * time_xa * time_xa * time_xa
2156 + pol_par_dc[1][4][8] * time_xa * time_xa * time_xa * time_xa);
2161 * (pol_par_dc[2][0][8] + pol_par_dc[2][1][8] * time_xa + pol_par_dc[2][2][8] * time_xa * time_xa
2162 + pol_par_dc[2][3][8] * time_xa * time_xa * time_xa
2163 + pol_par_dc[2][4][8] * time_xa * time_xa * time_xa * time_xa);
2165 x2_single[0][single_xa2] = wirenr_xa2[
i] - 118.5 + d_a;
2166 x2_single[0][single_xa2 + 1] = wirenr_xa2[
i] - 118.5 - d_a;
2168 sigm_x2_single[0][single_xa2] = 0.08 * 0.08;
2169 sigm_x2_single[0][single_xa2 + 1] = 0.08 * 0.08;
2171 if (d_a >= 0.02 && d_a < 0.1) {
2172 sigm_x2_single[0][single_xa2] = 0.06 * 0.06;
2173 sigm_x2_single[0][single_xa2 + 1] = 0.06 * 0.06;
2175 if (d_a >= 0.1 && d_a < 0.4) {
2176 sigm_x2_single[0][single_xa2] = 0.0250 * 0.0250;
2177 sigm_x2_single[0][single_xa2 + 1] = 0.0250 * 0.0250;
2179 if (d_a >= 0.4 && d_a < 0.41) {
2180 sigm_x2_single[0][single_xa2] = 0.08 * 0.08;
2181 sigm_x2_single[0][single_xa2 + 1] = 0.08 * 0.08;
2184 sigm_x2_single[0][single_xa2] = 0.10 * 0.10;
2185 sigm_x2_single[0][single_xa2 + 1] = 0.10 * 0.10;
2190 for (
Int_t j = 0; j < it_xb2; ++j) {
2197 for (
int t_it = 0; t_it < 4; t_it++) {
2198 if (time_xb2[j] >= t_dc[t_it][9] && time_xb2[j] < t_dc[t_it + 1][9]) {
2203 double time_xa = time_xb2[j];
2204 if (func_nr_b == 1 || func_nr_b == 2)
2206 * (pol_par_dc[1][0][9] + pol_par_dc[1][1][9] * time_xa + pol_par_dc[1][2][9] * time_xa * time_xa
2207 + pol_par_dc[1][3][9] * time_xa * time_xa * time_xa
2208 + pol_par_dc[1][4][9] * time_xa * time_xa * time_xa * time_xa);
2213 * (pol_par_dc[2][0][9] + pol_par_dc[2][1][9] * time_xa + pol_par_dc[2][2][9] * time_xa * time_xa
2214 + pol_par_dc[2][3][9] * time_xa * time_xa * time_xa
2215 + pol_par_dc[2][4][9] * time_xa * time_xa * time_xa * time_xa);
2217 x2_single[1][single_xb2] = wirenr_xb2[j] - 118.5 + d_b;
2218 x2_single[1][single_xb2 + 1] = wirenr_xb2[j] - 118.5 - d_b;
2220 sigm_x2_single[1][single_xb2] = 0.08 * 0.08;
2221 sigm_x2_single[1][single_xb2 + 1] = 0.08 * 0.08;
2223 if (d_b >= 0.02 && d_b < 0.1) {
2224 sigm_x2_single[1][single_xb2] = 0.06 * 0.06;
2225 sigm_x2_single[1][single_xb2 + 1] = 0.06 * 0.06;
2227 if (d_b >= 0.1 && d_b < 0.4) {
2228 sigm_x2_single[1][single_xb2] = 0.0250 * 0.0250;
2229 sigm_x2_single[1][single_xb2 + 1] = 0.0250 * 0.0250;
2231 if (d_b >= 0.4 && d_b < 0.41) {
2232 sigm_x2_single[1][single_xb2] = 0.08 * 0.08;
2233 sigm_x2_single[1][single_xb2 + 1] = 0.08 * 0.08;
2236 sigm_x2_single[1][single_xb2] = 0.1 * 0.1;
2237 sigm_x2_single[1][single_xb2 + 1] = 0.1 * 0.1;
2244 for (
Int_t i = 0;
i < it_ya2; ++
i) {
2245 for (
Int_t j = 0; j < it_yb2; ++j) {
2248 if ((wirenr_ya2[
i] != wirenr_yb2[j] && wirenr_ya2[
i] != wirenr_yb2[j] + 1))
2255 for (
int t_it = 0; t_it < 4; t_it++) {
2256 if (time_ya2[
i] >= t_dc[t_it][10] && time_ya2[
i] < t_dc[t_it + 1][10]) {
2261 if (func_nr_a == 1 || func_nr_a == 2)
2263 * (pol_par_dc[1][0][10] + pol_par_dc[1][1][10] * time_ya2[
i]
2264 + pol_par_dc[1][2][10] * time_ya2[
i] * time_ya2[
i]
2265 + pol_par_dc[1][3][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]
2266 + pol_par_dc[1][4][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]);
2272 * (pol_par_dc[2][0][10] + pol_par_dc[2][1][10] * time_ya2[
i]
2273 + pol_par_dc[2][2][10] * time_ya2[
i] * time_ya2[
i]
2274 + pol_par_dc[2][3][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]
2275 + pol_par_dc[2][4][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]);
2277 for (
int t_it = 0; t_it < 4; t_it++) {
2278 if (time_yb2[j] >= t_dc[t_it][11] && time_yb2[j] < t_dc[t_it + 1][11]) {
2283 if (func_nr_b == 1 || func_nr_b == 2)
2285 * (pol_par_dc[1][0][11] + pol_par_dc[1][1][11] * time_yb2[j]
2286 + pol_par_dc[1][2][11] * time_yb2[j] * time_yb2[j]
2287 + pol_par_dc[1][3][11] * time_yb2[j] * time_yb2[j] * time_yb2[j]
2288 + pol_par_dc[1][4][11] * time_yb2[j] * time_yb2[j] * time_yb2[j] * time_yb2[j]);
2293 * (pol_par_dc[2][0][11] + pol_par_dc[2][1][11] * time_yb2[j]
2294 + pol_par_dc[2][2][11] * time_yb2[j] * time_yb2[j]
2295 + pol_par_dc[2][3][11] * time_yb2[j] * time_yb2[j] * time_yb2[j]
2296 + pol_par_dc[2][4][11] * time_yb2[j] * time_yb2[j] * time_yb2[j] * time_yb2[j]);
2298 ya2_pm[0] = wirenr_ya2[
i] - 119 + d_a;
2299 ya2_pm[1] = wirenr_ya2[
i] - 119 - d_a;
2300 yb2_pm[0] = wirenr_yb2[j] - 118.5 + d_b;
2301 yb2_pm[1] = wirenr_yb2[j] - 118.5 - d_b;
2304 for (
int k = 0; k < 2; k++) {
2305 for (
int m = 0;
m < 2;
m++) {
2306 if (
fabs(ya2_pm[k] - yb2_pm[
m]) < dmin1) {
2307 dmin1 =
fabs(ya2_pm[k] - yb2_pm[
m]);
2308 y2_ab[0][pair_y2] = ya2_pm[k];
2309 y2_ab[1][pair_y2] = yb2_pm[
m];
2314 sigm_y2_ab[0][pair_y2] = 0.08 * 0.08;
2316 if (d_a >= 0.02 && d_a < 0.1) {
2317 sigm_y2_ab[0][pair_y2] = 0.06 * 0.06;
2319 if (d_a >= 0.1 && d_a < 0.4) {
2320 sigm_y2_ab[0][pair_y2] = 0.025 * 0.025;
2322 if (d_a >= 0.4 && d_a < 0.41) {
2323 sigm_y2_ab[0][pair_y2] = 0.08 * 0.08;
2326 sigm_y2_ab[0][pair_y2] = 0.10 * 0.10;
2330 sigm_y2_ab[1][pair_y2] = 0.08 * 0.08;
2332 if (d_b >= 0.02 && d_b < 0.1) {
2333 sigm_y2_ab[1][pair_y2] = 0.06 * 0.06;
2335 if (d_b >= 0.1 && d_b < 0.4) {
2336 sigm_y2_ab[1][pair_y2] = 0.025 * 0.025;
2338 if (d_b >= 0.4 && d_b < 0.41) {
2339 sigm_y2_ab[1][pair_y2] = 0.08 * 0.08;
2342 sigm_y2_ab[1][pair_y2] = 0.10 * 0.10;
2353 for (
Int_t i = 0;
i < it_ya2; ++
i) {
2360 for (
int t_it = 0; t_it < 4; t_it++) {
2361 if (time_ya2[
i] >= t_dc[t_it][10] && time_ya2[
i] < t_dc[t_it + 1][10]) {
2366 if (func_nr_a == 1 || func_nr_a == 2)
2368 * (pol_par_dc[1][0][10] + pol_par_dc[1][1][10] * time_ya2[
i]
2369 + pol_par_dc[1][2][10] * time_ya2[
i] * time_ya2[
i]
2370 + pol_par_dc[1][3][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]
2371 + pol_par_dc[1][4][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]);
2377 * (pol_par_dc[2][0][10] + pol_par_dc[2][1][10] * time_ya2[
i]
2378 + pol_par_dc[2][2][10] * time_ya2[
i] * time_ya2[
i]
2379 + pol_par_dc[2][3][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]
2380 + pol_par_dc[2][4][10] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i] * time_ya2[
i]);
2382 y2_single[0][single_ya2] = wirenr_ya2[
i] - 119 + d_a;
2383 y2_single[0][single_ya2 + 1] = wirenr_ya2[
i] - 119 - d_a;
2385 sigm_y2_single[0][single_ya2] = 0.08 * 0.08;
2386 sigm_y2_single[0][single_ya2 + 1] = 0.08 * 0.08;
2388 if (d_a >= 0.02 && d_a < 0.1) {
2389 sigm_y2_single[0][single_ya2] = 0.06 * 0.06;
2390 sigm_y2_single[0][single_ya2 + 1] = 0.06 * 0.06;
2392 if (d_a >= 0.1 && d_a < 0.4) {
2393 sigm_y2_single[0][single_ya2] = 0.025 * 0.025;
2394 sigm_y2_single[0][single_ya2 + 1] = 0.025 * 0.025;
2396 if (d_a >= 0.4 && d_a < 0.41) {
2397 sigm_y2_single[0][single_ya2] = 0.08 * 0.08;
2398 sigm_y2_single[0][single_ya2 + 1] = 0.08 * 0.08;
2401 sigm_y2_single[0][single_ya2] = 0.10 * 0.10;
2402 sigm_y2_single[0][single_ya2 + 1] = 0.10 * 0.10;
2407 for (
Int_t j = 0; j < it_yb2; ++j) {
2413 for (
int t_it = 0; t_it < 4; t_it++) {
2414 if (time_yb2[j] >= t_dc[t_it][11] && time_yb2[j] < t_dc[t_it + 1][11]) {
2419 if (func_nr_b == 1 || func_nr_b == 2)
2421 * (pol_par_dc[1][0][11] + pol_par_dc[1][1][11] * time_yb2[j]
2422 + pol_par_dc[1][2][11] * time_yb2[j] * time_yb2[j]
2423 + pol_par_dc[1][3][11] * time_yb2[j] * time_yb2[j] * time_yb2[j]
2424 + pol_par_dc[1][4][11] * time_yb2[j] * time_yb2[j] * time_yb2[j] * time_yb2[j]);
2429 * (pol_par_dc[2][0][11] + pol_par_dc[2][1][11] * time_yb2[j]
2430 + pol_par_dc[2][2][11] * time_yb2[j] * time_yb2[j]
2431 + pol_par_dc[2][3][11] * time_yb2[j] * time_yb2[j] * time_yb2[j]
2432 + pol_par_dc[2][4][11] * time_yb2[j] * time_yb2[j] * time_yb2[j] * time_yb2[j]);
2434 y2_single[1][single_yb2] = wirenr_yb2[j] - 118.5 + d_b;
2435 y2_single[1][single_yb2 + 1] = wirenr_yb2[j] - 118.5 - d_b;
2437 sigm_y2_single[1][single_yb2] = 0.08 * 0.08;
2438 sigm_y2_single[1][single_yb2 + 1] = 0.08 * 0.08;
2440 if (d_b >= 0.02 && d_b < 0.1) {
2441 sigm_y2_single[1][single_yb2] = 0.06 * 0.06;
2442 sigm_y2_single[1][single_yb2 + 1] = 0.06 * 0.06;
2444 if (d_b >= 0.1 && d_b < 0.4) {
2445 sigm_y2_single[1][single_yb2] = 0.0250 * 0.0250;
2446 sigm_y2_single[1][single_yb2 + 1] = 0.0250 * 0.0250;
2448 if (d_b >= 0.4 && d_b < 0.41) {
2449 sigm_y2_single[1][single_yb2] = 0.1 * 0.1;
2450 sigm_y2_single[1][single_yb2 + 1] = 0.1 * 0.1;
2453 sigm_y2_single[1][single_yb2] = 0.10 * 0.10;
2454 sigm_y2_single[1][single_yb2 + 1] = 0.10 * 0.10;
2462 for (
Int_t i = 0;
i < it_ua2; ++
i) {
2463 for (
Int_t j = 0; j < it_ub2; ++j) {
2466 if ((wirenr_ua2[
i] != wirenr_ub2[j] && wirenr_ua2[
i] != wirenr_ub2[j] + 1))
2474 for (
int t_it = 0; t_it < 4; t_it++) {
2475 if (time_ua2[
i] >= t_dc[t_it][12] && time_ua2[
i] < t_dc[t_it + 1][12]) {
2480 if (func_nr_a == 1 || func_nr_a == 2)
2482 * (pol_par_dc[1][0][12] + pol_par_dc[1][1][12] * time_ua2[
i]
2483 + pol_par_dc[1][2][12] * time_ua2[
i] * time_ua2[
i]
2484 + pol_par_dc[1][3][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]
2485 + pol_par_dc[1][4][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]);
2491 * (pol_par_dc[1][0][12] + pol_par_dc[1][1][12] * time_ua2[
i]
2492 + pol_par_dc[1][2][12] * time_ua2[
i] * time_ua2[
i]
2493 + pol_par_dc[1][3][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]
2494 + pol_par_dc[1][4][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]);
2496 for (
int t_it = 0; t_it < 4; t_it++) {
2497 if (time_ub2[j] >= t_dc[t_it][13] && time_ub2[j] < t_dc[t_it + 1][13]) {
2506 if (func_nr_b == 1 || func_nr_b == 2)
2508 * (pol_par_dc[1][0][13] + pol_par_dc[1][1][13] * time_ub2[j]
2509 + pol_par_dc[1][2][13] * time_ub2[j] * time_ub2[j]
2510 + pol_par_dc[1][3][13] * time_ub2[j] * time_ub2[j] * time_ub2[j]
2511 + pol_par_dc[1][4][13] * time_ub2[j] * time_ub2[j] * time_ub2[j] * time_ub2[j]);
2515 * (pol_par_dc[1][0][13] + pol_par_dc[1][1][13] * time_ub2[j]
2516 + pol_par_dc[1][2][13] * time_ub2[j] * time_ub2[j]
2517 + pol_par_dc[1][3][13] * time_ub2[j] * time_ub2[j] * time_ub2[j]
2518 + pol_par_dc[1][4][13] * time_ub2[j] * time_ub2[j] * time_ub2[j] * time_ub2[j]);
2520 ua2_pm[0] = wirenr_ua2[
i] - 119 + d_a;
2521 ua2_pm[1] = wirenr_ua2[
i] - 119 - d_a;
2522 ub2_pm[0] = wirenr_ub2[j] - 118.5 + d_b;
2523 ub2_pm[1] = wirenr_ub2[j] - 118.5 - d_b;
2526 for (
int k = 0; k < 2; k++) {
2527 for (
int m = 0;
m < 2;
m++) {
2528 if (
fabs(ua2_pm[k] - ub2_pm[
m]) < dmin1) {
2529 dmin1 =
fabs(ua2_pm[k] - ub2_pm[
m]);
2530 u2_ab[0][pair_u2] = ua2_pm[k];
2531 u2_ab[1][pair_u2] = ub2_pm[
m];
2536 sigm_u2_ab[0][pair_u2] = 0.08 * 0.08;
2538 if (d_a >= 0.02 && d_a < 0.1) {
2539 sigm_u2_ab[0][pair_u2] = 0.06 * 0.06;
2541 if (d_a >= 0.1 && d_a < 0.4) {
2542 sigm_u2_ab[0][pair_u2] = 0.025 * 0.025;
2544 if (d_a >= 0.4 && d_a < 0.41) {
2545 sigm_u2_ab[0][pair_u2] = 0.08 * 0.08;
2548 sigm_u2_ab[0][pair_u2] = 0.10 * 0.10;
2552 sigm_u2_ab[1][pair_u2] = 0.08 * 0.08;
2554 if (d_b >= 0.02 && d_b < 0.1) {
2555 sigm_u2_ab[1][pair_u2] = 0.06 * 0.06;
2557 if (d_b >= 0.1 && d_b < 0.4) {
2558 sigm_u2_ab[1][pair_u2] = 0.025 * 0.025;
2560 if (d_b >= 0.4 && d_b < 0.41) {
2561 sigm_u2_ab[1][pair_u2] = 0.08 * 0.08;
2564 sigm_u2_ab[1][pair_u2] = 0.10 * 0.10;
2575 for (
Int_t i = 0;
i < it_ua2; ++
i) {
2582 for (
int t_it = 0; t_it < 4; t_it++) {
2583 if (time_ua2[
i] >= t_dc[t_it][12] && time_ua2[
i] < t_dc[t_it + 1][12]) {
2588 if (func_nr_a == 1 || func_nr_a == 2)
2590 * (pol_par_dc[1][0][12] + pol_par_dc[1][1][12] * time_ua2[
i]
2591 + pol_par_dc[1][2][12] * time_ua2[
i] * time_ua2[
i]
2592 + pol_par_dc[1][3][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]
2593 + pol_par_dc[1][4][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]);
2598 * (pol_par_dc[1][0][12] + pol_par_dc[1][1][12] * time_ua2[
i]
2599 + pol_par_dc[1][2][12] * time_ua2[
i] * time_ua2[
i]
2600 + pol_par_dc[1][3][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]
2601 + pol_par_dc[1][4][12] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i] * time_ua2[
i]);
2603 u2_single[0][single_ua2] = (wirenr_ua2[
i] - 119 + d_a);
2604 u2_single[0][single_ua2 + 1] = (wirenr_ua2[
i] - 119 - d_a);
2606 sigm_u2_single[0][single_ua2] = 0.08 * 0.08;
2607 sigm_u2_single[0][single_ua2 + 1] = 0.08 * 0.08;
2609 if (d_a >= 0.02 && d_a < 0.1) {
2610 sigm_u2_single[0][single_ua2] = 0.06 * 0.06;
2611 sigm_u2_single[0][single_ua2 + 1] = 0.06 * 0.06;
2613 if (d_a >= 0.1 && d_a < 0.4) {
2614 sigm_u2_single[0][single_ua2] = 0.025 * 0.025;
2615 sigm_u2_single[0][single_ua2 + 1] = 0.025 * 0.025;
2617 if (d_a >= 0.4 && d_a < 0.41) {
2618 sigm_u2_single[0][single_ua2] = 0.08 * 0.08;
2619 sigm_u2_single[0][single_ua2 + 1] = 0.08 * 0.08;
2622 sigm_u2_single[0][single_ua2] = 0.10 * 0.10;
2623 sigm_u2_single[0][single_ua2 + 1] = 0.10 * 0.10;
2628 for (
Int_t j = 0; j < it_ub2; ++j) {
2635 for (
int t_it = 0; t_it < 4; t_it++) {
2636 if (time_ub2[j] >= t_dc[t_it][13] && time_ub2[j] < t_dc[t_it + 1][13]) {
2644 if (func_nr_b == 1 || func_nr_b == 2)
2646 * (pol_par_dc[1][0][13] + pol_par_dc[1][1][13] * time_ub2[j]
2647 + pol_par_dc[1][2][13] * time_ub2[j] * time_ub2[j]
2648 + pol_par_dc[1][3][13] * time_ub2[j] * time_ub2[j] * time_ub2[j]
2649 + pol_par_dc[1][4][13] * time_ub2[j] * time_ub2[j] * time_ub2[j] * time_ub2[j]);
2652 * (pol_par_dc[1][0][13] + pol_par_dc[1][1][13] * time_ub2[j]
2653 + pol_par_dc[1][2][13] * time_ub2[j] * time_ub2[j]
2654 + pol_par_dc[1][3][13] * time_ub2[j] * time_ub2[j] * time_ub2[j]
2655 + pol_par_dc[1][4][13] * time_ub2[j] * time_ub2[j] * time_ub2[j] * time_ub2[j]);
2657 u2_single[1][single_ub2] = (wirenr_ub2[j] - 118.5 + d_b);
2658 u2_single[1][single_ub2 + 1] = (wirenr_ub2[j] - 118.5 - d_b);
2660 sigm_u2_single[1][single_ub2] = 0.08 * 0.08;
2661 sigm_u2_single[1][single_ub2 + 1] = 0.08 * 0.08;
2663 if (d_b >= 0.02 && d_b < 0.1) {
2664 sigm_u2_single[1][single_ub2] = 0.060 * 0.060;
2665 sigm_u2_single[1][single_ub2 + 1] = 0.060 * 0.060;
2667 if (d_b >= 0.1 && d_b < 0.4) {
2668 sigm_u2_single[1][single_ub2] = 0.025 * 0.025;
2669 sigm_u2_single[1][single_ub2 + 1] = 0.0250 * 0.0250;
2671 if (d_b >= 0.4 && d_b < 0.41) {
2672 sigm_u2_single[1][single_ub2] = 0.08 * 0.08;
2673 sigm_u2_single[1][single_ub2 + 1] = 0.08 * 0.08;
2676 sigm_u2_single[1][single_ub2] = 0.10 * 0.10;
2677 sigm_u2_single[1][single_ub2 + 1] = 0.10 * 0.10;
2685 for (
Int_t i = 0;
i < it_va2; ++
i) {
2686 for (
Int_t j = 0; j < it_vb2; ++j) {
2689 if ((wirenr_va2[
i] != wirenr_vb2[j] && wirenr_va2[
i] != wirenr_vb2[j] + 1))
2697 for (
int t_it = 0; t_it < 4; t_it++) {
2698 if (time_va2[
i] >= t_dc[t_it][14] && time_va2[
i] < t_dc[t_it + 1][14]) {
2703 if (func_nr_a == 1 || func_nr_a == 2)
2705 * (pol_par_dc[1][0][14] + pol_par_dc[1][1][14] * time_va2[
i]
2706 + pol_par_dc[1][2][14] * time_va2[
i] * time_va2[
i]
2707 + pol_par_dc[1][3][14] * time_va2[
i] * time_va2[
i] * time_va2[
i]
2708 + pol_par_dc[1][4][14] * time_va2[
i] * time_va2[
i] * time_va2[
i] * time_va2[
i]);
2714 * (pol_par_dc[2][0][14] + pol_par_dc[2][1][14] * time_va2[
i]
2715 + pol_par_dc[2][2][14] * time_va2[
i] * time_va2[
i]
2716 + pol_par_dc[2][3][14] * time_va2[
i] * time_va2[
i] * time_va2[
i]
2717 + pol_par_dc[2][4][14] * time_va2[
i] * time_va2[
i] * time_va2[
i] * time_va2[
i]);
2719 for (
int t_it = 0; t_it < 4; t_it++) {
2720 if (time_vb2[j] >= t_dc[t_it][15] && time_vb2[j] < t_dc[t_it + 1][15]) {
2725 if (func_nr_b == 1 || func_nr_b == 2)
2727 * (pol_par_dc[1][0][15] + pol_par_dc[1][1][15] * time_vb2[j]
2728 + pol_par_dc[1][2][15] * time_vb2[j] * time_vb2[j]
2729 + pol_par_dc[1][3][15] * time_vb2[j] * time_vb2[j] * time_vb2[j]
2730 + pol_par_dc[1][4][15] * time_vb2[j] * time_vb2[j] * time_vb2[j] * time_vb2[j]);
2736 * (pol_par_dc[2][0][15] + pol_par_dc[2][1][15] * time_vb2[j]
2737 + pol_par_dc[2][2][15] * time_vb2[j] * time_vb2[j]
2738 + pol_par_dc[2][3][15] * time_vb2[j] * time_vb2[j] * time_vb2[j]
2739 + pol_par_dc[2][4][15] * time_vb2[j] * time_vb2[j] * time_vb2[j] * time_vb2[j]);
2741 va2_pm[0] = wirenr_va2[
i] - 119 + d_a;
2742 va2_pm[1] = wirenr_va2[
i] - 119 - d_a;
2743 vb2_pm[0] = wirenr_vb2[j] - 118.5 + d_b;
2744 vb2_pm[1] = wirenr_vb2[j] - 118.5 - d_b;
2747 for (
int k = 0; k < 2; k++) {
2748 for (
int m = 0;
m < 2;
m++) {
2749 if (
fabs(va2_pm[k] - vb2_pm[
m]) < dmin1) {
2750 dmin1 =
fabs(va2_pm[k] - vb2_pm[
m]);
2751 v2_ab[0][pair_v2] = va2_pm[k];
2752 v2_ab[1][pair_v2] = vb2_pm[
m];
2757 sigm_v2_ab[0][pair_v2] = 0.08 * 0.08;
2759 if (d_a >= 0.02 && d_a < 0.1) {
2760 sigm_v2_ab[0][pair_v2] = 0.06 * 0.06;
2762 if (d_a >= 0.1 && d_a < 0.4) {
2763 sigm_v2_ab[0][pair_v2] = 0.025 * 0.025;
2765 if (d_a >= 0.4 && d_a < 0.41) {
2766 sigm_v2_ab[0][pair_v2] = 0.08 * 0.08;
2769 sigm_v2_ab[0][pair_v2] = 0.10 * 0.10;
2773 sigm_v2_ab[1][pair_v2] = 0.08 * 0.08;
2775 if (d_b >= 0.02 && d_b < 0.1) {
2776 sigm_v2_ab[1][pair_v2] = 0.06 * 0.06;
2778 if (d_b >= 0.1 && d_b < 0.4) {
2779 sigm_v2_ab[1][pair_v2] = 0.025 * 0.025;
2781 if (d_b >= 0.4 && d_b < 0.41) {
2782 sigm_v2_ab[1][pair_v2] = 0.08 * 0.08;
2785 sigm_v2_ab[1][pair_v2] = 0.10 * 0.10;
2797 for (
Int_t i = 0;
i < it_va2; ++
i) {
2805 for (
int t_it = 0; t_it < 4; t_it++) {
2806 if (time_va2[
i] >= t_dc[t_it][14] && time_va2[
i] < t_dc[t_it + 1][14]) {
2811 if (func_nr_a == 1 || func_nr_a == 2)
2813 * (pol_par_dc[1][0][14] + pol_par_dc[1][1][14] * time_va2[
i]
2814 + pol_par_dc[1][2][14] * time_va2[
i] * time_va2[
i]
2815 + pol_par_dc[1][3][14] * time_va2[
i] * time_va2[
i] * time_va2[
i]
2816 + pol_par_dc[1][4][14] * time_va2[
i] * time_va2[
i] * time_va2[
i] * time_va2[
i]);
2821 * (pol_par_dc[2][0][14] + pol_par_dc[2][1][14] * time_va2[
i]
2822 + pol_par_dc[2][2][14] * time_va2[
i] * time_va2[
i]
2823 + pol_par_dc[2][3][14] * time_va2[
i] * time_va2[
i] * time_va2[
i]
2824 + pol_par_dc[2][4][14] * time_va2[
i] * time_va2[
i] * time_va2[
i] * time_va2[
i]);
2826 v2_single[0][single_va2] = wirenr_va2[
i] - 119 + d_a;
2827 v2_single[0][single_va2 + 1] = wirenr_va2[
i] - 119 - d_a;
2829 sigm_v2_single[0][single_va2] = 0.08 * 0.08;
2830 sigm_v2_single[0][single_va2 + 1] = 0.08 * 0.08;
2832 if (d_a >= 0.02 && d_a < 0.1) {
2833 sigm_v2_single[0][single_va2] = 0.06 * 0.06;
2834 sigm_v2_single[0][single_va2 + 1] = 0.06 * 0.06;
2836 if (d_a >= 0.1 && d_a < 0.4) {
2837 sigm_v2_single[0][single_va2] = 0.025 * 0.025;
2838 sigm_v2_single[0][single_va2 + 1] = 0.025 * 0.025;
2840 if (d_a >= 0.4 && d_a < 0.41) {
2841 sigm_v2_single[0][single_va2] = 0.08 * 0.08;
2842 sigm_v2_single[0][single_va2 + 1] = 0.08 * 0.08;
2845 sigm_v2_single[0][single_va2] = 0.10 * 0.10;
2846 sigm_v2_single[0][single_va2 + 1] = 0.10 * 0.10;
2852 for (
Int_t j = 0; j < it_vb2; ++j) {
2858 for (
int t_it = 0; t_it < 4; t_it++) {
2859 if (time_vb2[j] >= t_dc[t_it][15] && time_vb2[j] < t_dc[t_it + 1][15]) {
2864 if (func_nr_b == 1 || func_nr_b == 2)
2866 * (pol_par_dc[1][0][15] + pol_par_dc[1][1][15] * time_vb2[j]
2867 + pol_par_dc[1][2][15] * time_vb2[j] * time_vb2[j]
2868 + pol_par_dc[1][3][15] * time_vb2[j] * time_vb2[j] * time_vb2[j]
2869 + pol_par_dc[1][4][15] * time_vb2[j] * time_vb2[j] * time_vb2[j] * time_vb2[j]);
2874 * (pol_par_dc[2][0][15] + pol_par_dc[2][1][15] * time_vb2[j]
2875 + pol_par_dc[2][2][15] * time_vb2[j] * time_vb2[j]
2876 + pol_par_dc[2][3][15] * time_vb2[j] * time_vb2[j] * time_vb2[j]
2877 + pol_par_dc[2][4][15] * time_vb2[j] * time_vb2[j] * time_vb2[j] * time_vb2[j]);
2879 v2_single[1][single_vb2] = wirenr_vb2[j] - 118.5 + d_b;
2880 v2_single[1][single_vb2 + 1] = wirenr_vb2[j] - 118.5 - d_b;
2882 sigm_v2_single[1][single_vb2] = 0.08 * 0.08;
2883 sigm_v2_single[1][single_vb2 + 1] = 0.08 * 0.08;
2885 if (d_b >= 0.02 && d_b < 0.1) {
2886 sigm_v2_single[1][single_vb2] = 0.060 * 0.060;
2887 sigm_v2_single[1][single_vb2 + 1] = 0.060 * 0.060;
2889 if (d_b >= 0.1 && d_b < 0.4) {
2890 sigm_v2_single[1][single_vb2] = 0.0250 * 0.0250;
2891 sigm_v2_single[1][single_vb2 + 1] = 0.0250 * 0.0250;
2893 if (d_b >= 0.4 && d_b < 0.41) {
2894 sigm_v2_single[1][single_vb2] = 0.08 * 0.08;
2895 sigm_v2_single[1][single_vb2 + 1] = 0.08 * 0.08;
2898 sigm_v2_single[1][single_vb2] = 0.10 * 0.10;
2899 sigm_v2_single[1][single_vb2 + 1] = 0.10 * 0.10;
2906 found_8p_seg =
false;
2910 if (pair_x2 * pair_y2 > 0) {
2912 for (
int i = 0;
i < pair_x2;
i++) {
2913 if (nDC2_segments > 48)
2915 float x_coord = (x2_ab[0][
i] + x2_ab[1][
i]) / 2;
2919 for (
int j = 0; j < pair_y2; j++) {
2920 if (nDC2_segments > 48)
2922 float y_coord = (y2_ab[0][j] + y2_ab[1][j]) / 2;
2925 bool foundU =
false;
2926 float u_est =
isqrt_2 * (YU - XU);
2927 float v_est =
isqrt_2 * (YV + XV);
2930 double dU_thresh = 1.3;
2931 for (
int k = 0; k < pair_u2; k++) {
2932 float u_coord = (u2_ab[0][k] + u2_ab[1][k]) / 2;
2934 if (
fabs(u_coord - u_est) > dU_thresh)
2936 dU_thresh =
fabs(u_coord - u_est);
2938 rh_segDC2[0][nDC2_segments] = x2_ab[0][
i];
2939 rh_segDC2[1][nDC2_segments] = x2_ab[1][
i];
2940 rh_segDC2[2][nDC2_segments] = y2_ab[0][j];
2941 rh_segDC2[3][nDC2_segments] = y2_ab[1][j];
2942 rh_segDC2[4][nDC2_segments] = u2_ab[0][k];
2943 rh_segDC2[5][nDC2_segments] = u2_ab[1][k];
2944 rh_sigm_segDC2[0][nDC2_segments] = sigm_x2_ab[0][
i];
2945 rh_sigm_segDC2[1][nDC2_segments] = sigm_x2_ab[1][
i];
2946 rh_sigm_segDC2[2][nDC2_segments] = sigm_y2_ab[0][j];
2947 rh_sigm_segDC2[3][nDC2_segments] = sigm_y2_ab[1][j];
2948 rh_sigm_segDC2[4][nDC2_segments] = sigm_u2_ab[0][k];
2949 rh_sigm_segDC2[5][nDC2_segments] = sigm_u2_ab[1][k];
2952 if (nDC2_segments > 48)
2956 if (found_8p_seg && !foundU)
2958 bool foundV =
false;
2960 double dV_thresh = 1.3;
2961 for (
int m = 0;
m < pair_v2;
m++) {
2962 if (nDC2_segments > 48)
2964 float v_coord = (v2_ab[0][
m] + v2_ab[1][
m]) / 2;
2966 if (
fabs(v_coord - v_est) > dV_thresh)
2968 dV_thresh =
fabs(v_coord - v_est);
2971 rh_segDC2[0][nDC2_segments] = x2_ab[0][
i];
2972 rh_segDC2[1][nDC2_segments] = x2_ab[1][
i];
2973 rh_segDC2[2][nDC2_segments] = y2_ab[0][j];
2974 rh_segDC2[3][nDC2_segments] = y2_ab[1][j];
2975 rh_segDC2[6][nDC2_segments] = v2_ab[0][
m];
2976 rh_segDC2[7][nDC2_segments] = v2_ab[1][
m];
2977 rh_sigm_segDC2[0][nDC2_segments] = sigm_x2_ab[0][
i];
2978 rh_sigm_segDC2[1][nDC2_segments] = sigm_x2_ab[1][
i];
2979 rh_sigm_segDC2[2][nDC2_segments] = sigm_y2_ab[0][j];
2980 rh_sigm_segDC2[3][nDC2_segments] = sigm_y2_ab[1][j];
2981 rh_sigm_segDC2[6][nDC2_segments] = sigm_v2_ab[0][
m];
2982 rh_sigm_segDC2[7][nDC2_segments] = sigm_v2_ab[1][
m];
2986 for (
int kk = 0; kk < single_ua2; kk++) {
2987 if (
fabs(u2_single[0][kk] - u_est) > 1.5)
2989 if (
fabs(u2_single[0][kk] - u_est) < min_a) {
2990 min_a =
fabs(u2_single[0][kk] - u_est);
2991 rh_segDC2[4][nDC2_segments] = u2_single[0][kk];
2992 rh_sigm_segDC2[4][nDC2_segments] = sigm_u2_single[0][kk];
2996 for (
int kk = 0; kk < single_ub2; kk++) {
2997 if (
fabs(u2_single[1][kk] - u_est) > 1.5)
2999 if (
fabs(u2_single[1][kk] - u_est) < min_b) {
3000 min_b =
fabs(u2_single[1][kk] - u_est);
3001 rh_segDC2[5][nDC2_segments] = u2_single[1][kk];
3002 rh_sigm_segDC2[5][nDC2_segments] = sigm_u2_single[1][kk];
3006 if (nDC2_segments > 48)
3010 if (nDC2_segments > 48)
3014 if (!foundV && foundU) {
3017 for (
int kk = 0; kk < single_va2; kk++) {
3018 if (
fabs(v2_single[0][kk] - v_est) > 1.5)
3020 if (
fabs(v2_single[0][kk] - v_est) < min_a) {
3021 min_a =
fabs(v2_single[0][kk] - v_est);
3022 rh_segDC2[6][nDC2_segments] = v2_single[0][kk];
3023 rh_sigm_segDC2[6][nDC2_segments] = sigm_v2_single[0][kk];
3027 for (
int kk = 0; kk < single_vb2; kk++) {
3028 if (
fabs(v2_single[1][kk] - v_est) > 1.5)
3030 if (
fabs(v2_single[1][kk] - v_est) < min_b) {
3031 min_b =
fabs(v2_single[1][kk] - v_est);
3032 rh_segDC2[7][nDC2_segments] = v2_single[1][kk];
3033 rh_sigm_segDC2[7][nDC2_segments] = sigm_v2_single[1][kk];
3038 if (foundV || foundU)
3044 if (pair_u2 * pair_v2 > 0 && !found_8p_seg) {
3045 for (
int i = 0;
i < pair_u2;
i++) {
3046 if (nDC2_segments > 48)
3048 float u_coord = (u2_ab[0][
i] + u2_ab[1][
i]) / 2;
3050 for (
int j = 0; j < pair_v2; j++) {
3051 if (nDC2_segments > 48)
3053 float v_coord = (v2_ab[0][j] + v2_ab[1][j]) / 2;
3054 bool foundX =
false;
3055 float x_est =
isqrt_2 * (v_coord - u_coord);
3056 float y_est =
isqrt_2 * (u_coord + v_coord);
3058 double dX_thresh = 1.5;
3059 for (
int k = 0; k < pair_x2; k++) {
3060 float x_coord = (x2_ab[0][k] + x2_ab[1][k]) / 2;
3061 if (nDC2_segments > 48)
3063 if (
fabs(x_coord - x_est) > dX_thresh)
3065 dX_thresh =
fabs(x_coord - x_est);
3067 rh_segDC2[0][nDC2_segments] = x2_ab[0][k];
3068 rh_segDC2[1][nDC2_segments] = x2_ab[1][k];
3069 rh_segDC2[4][nDC2_segments] = u2_ab[0][
i];
3070 rh_segDC2[5][nDC2_segments] = u2_ab[1][
i];
3071 rh_segDC2[6][nDC2_segments] = v2_ab[0][j];
3072 rh_segDC2[7][nDC2_segments] = v2_ab[1][j];
3073 rh_sigm_segDC2[0][nDC2_segments] = sigm_x2_ab[0][k];
3074 rh_sigm_segDC2[1][nDC2_segments] = sigm_x2_ab[1][k];
3075 rh_sigm_segDC2[4][nDC2_segments] = sigm_u2_ab[0][
i];
3076 rh_sigm_segDC2[5][nDC2_segments] = sigm_u2_ab[1][
i];
3077 rh_sigm_segDC2[6][nDC2_segments] = sigm_v2_ab[0][j];
3078 rh_sigm_segDC2[7][nDC2_segments] = sigm_v2_ab[1][j];
3081 if (nDC2_segments > 48)
3085 if (found_8p_seg && !foundX)
3087 bool foundY =
false;
3089 double dY_thresh = 1.0;
3090 for (
int m = 0;
m < pair_y2;
m++) {
3091 if (nDC2_segments > 48)
3093 float y_coord = (y2_ab[0][
m] + y2_ab[1][
m]) / 2;
3094 if (
fabs(y_coord - y_est) > dY_thresh)
3096 dY_thresh =
fabs(y_coord - y_est);
3098 rh_segDC2[2][nDC2_segments] = y2_ab[0][
m];
3099 rh_segDC2[3][nDC2_segments] = y2_ab[1][
m];
3100 rh_segDC2[4][nDC2_segments] = u2_ab[0][
i];
3101 rh_segDC2[5][nDC2_segments] = u2_ab[1][
i];
3102 rh_segDC2[6][nDC2_segments] = v2_ab[0][j];
3103 rh_segDC2[7][nDC2_segments] = v2_ab[1][j];
3104 rh_sigm_segDC2[2][nDC2_segments] = sigm_y2_ab[0][
m];
3105 rh_sigm_segDC2[3][nDC2_segments] = sigm_y2_ab[1][
m];
3106 rh_sigm_segDC2[4][nDC2_segments] = sigm_u2_ab[0][
i];
3107 rh_sigm_segDC2[5][nDC2_segments] = sigm_u2_ab[1][
i];
3108 rh_sigm_segDC2[6][nDC2_segments] = sigm_v2_ab[0][j];
3109 rh_sigm_segDC2[7][nDC2_segments] = sigm_v2_ab[1][j];
3113 for (
int kk = 0; kk < single_xa2; kk++) {
3114 if (
fabs(x2_single[1][kk] - x_est) > 1.5)
3117 if (
fabs(x2_single[0][kk] - x_est) < min_a) {
3118 min_a =
fabs(x2_single[0][kk] - x_est);
3119 rh_segDC2[0][nDC2_segments] = x2_single[0][kk];
3120 rh_sigm_segDC2[0][nDC2_segments] = sigm_x2_single[0][kk];
3124 for (
int kk = 0; kk < single_xb2; kk++) {
3126 if (
fabs(x2_single[1][kk] - x_est) > 1.5)
3128 if (
fabs(x2_single[1][kk] - x_est) < min_b) {
3129 min_b =
fabs(x2_single[1][kk] - x_est);
3130 rh_segDC2[1][nDC2_segments] = x2_single[1][kk];
3131 rh_sigm_segDC2[1][nDC2_segments] = sigm_x2_single[1][kk];
3135 if (nDC2_segments > 48)
3139 if (foundX && !foundY) {
3142 for (
int kk = 0; kk < single_ya2; kk++) {
3143 if (
fabs(y2_single[0][kk] - y_est) > 1.5)
3145 if (
fabs(y2_single[0][kk] - y_est) < min_a) {
3146 min_a =
fabs(y2_single[0][kk] - y_est);
3147 rh_segDC2[2][nDC2_segments] = y2_single[0][kk];
3148 rh_sigm_segDC2[2][nDC2_segments] = sigm_y2_single[0][kk];
3152 for (
int kk = 0; kk < single_yb2; kk++) {
3153 if (
fabs(y2_single[1][kk] - y_est) > 1.5)
3155 if (
fabs(y2_single[1][kk] - y_est) < min_b) {
3156 min_b =
fabs(y2_single[1][kk] - y_est);
3157 rh_segDC2[3][nDC2_segments] = y2_single[1][kk];
3158 rh_sigm_segDC2[3][nDC2_segments] = sigm_y2_single[1][kk];
3164 if (foundX || foundY)
3172 for (
int j = 0; j < nDC1_segments; j++) {
3176 double max_resid = 0;
3177 for (
int i = 0;
i < 8;
i++) {
3178 if (rh_segDC1[
i][j] != -999)
3181 for (
int rej = 0; rej < 2; rej++) {
3183 float rh_seg[8] = {-999};
3184 float rh_sigm_seg[8] = {-999};
3185 float par_ab[4] = {999, 999, 999, 999};
3187 for (
int i = 0;
i < 8;
i++) {
3188 rh_seg[
i] = rh_segDC1[
i][j];
3189 rh_sigm_seg[
i] = rh_sigm_segDC1[
i][j];
3192 fit_seg(rh_seg, rh_sigm_seg, par_ab, -1, -1);
3193 for (
int i = 0;
i < 4;
i++) {
3194 par_ab1[
i][j] = par_ab[
i];
3199 float dev_coord[8] = {9, 9, 9, 9, 9, 9, 9, 9};
3201 for (
int i = 0;
i < 8;
i++) {
3202 if (
i == 0 && rh_segDC1[
i][j] != -999) {
3204 resid = rh_segDC1[
i][j] -
z_loc[
i] * par_ab1[0][j] - par_ab1[1][j];
3206 if (
fabs(resid) > max_resid) {
3208 max_resid =
fabs(resid);
3210 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3212 if (
i == 1 && rh_segDC1[
i][j] != -999) {
3213 resid = rh_segDC1[
i][j] -
z_loc[
i] * par_ab1[0][j] - par_ab1[1][j];
3214 if (
fabs(resid) > max_resid) {
3216 max_resid =
fabs(resid);
3218 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3220 if (
i == 2 && rh_segDC1[
i][j] != -999) {
3221 resid = rh_segDC1[
i][j] -
z_loc[
i] * par_ab1[2][j] - par_ab1[3][j];
3222 if (
fabs(resid) > max_resid) {
3224 max_resid =
fabs(resid);
3226 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3228 if (
i == 3 && rh_segDC1[
i][j] != -999) {
3229 resid = rh_segDC1[
i][j] -
z_loc[
i] * par_ab1[2][j] - par_ab1[3][j];
3231 if (
fabs(resid) > max_resid) {
3233 max_resid =
fabs(resid);
3235 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3237 if (
i == 4 && rh_segDC1[
i][j] != -999) {
3238 resid = rh_segDC1[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab1[2][j] - par_ab1[0][j])
3239 -
isqrt_2 * (par_ab1[3][j] - par_ab1[1][j]);
3240 if (
fabs(resid) > max_resid) {
3242 max_resid =
fabs(resid);
3244 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3246 if (
i == 5 && rh_segDC1[
i][j] != -999) {
3247 resid = rh_segDC1[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab1[2][j] - par_ab1[0][j])
3248 -
isqrt_2 * (par_ab1[3][j] - par_ab1[1][j]);
3249 if (
fabs(resid) > max_resid) {
3251 max_resid =
fabs(resid);
3253 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3255 if (
i == 6 && rh_segDC1[
i][j] != -999) {
3256 resid = rh_segDC1[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab1[2][j] + par_ab1[0][j])
3257 -
isqrt_2 * (par_ab1[3][j] + par_ab1[1][j]);
3258 if (
fabs(resid) > max_resid) {
3260 max_resid =
fabs(resid);
3262 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3264 if (
i == 7 && rh_segDC1[
i][j] != -999) {
3266 resid = rh_segDC1[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab1[2][j] + par_ab1[0][j])
3267 -
isqrt_2 * (par_ab1[3][j] + par_ab1[1][j]);
3268 if (
fabs(resid) > max_resid) {
3270 max_resid =
fabs(resid);
3272 chi2_DC1[j] += (resid * resid) / rh_sigm_segDC1[
i][j];
3276 chi2_DC1[j] /= (size_segDC1[j] - 4);
3278 if (chi2_DC1[j] > 30) {
3279 if (size_segDC1[j] == 6) {
3283 rh_segDC1[worst_hit][j] = -999;
3294 par_ab1[1][j] +=
x1_sh;
3295 par_ab1[3][j] +=
y1_sh;
3297 xDC1_glob[j] = par_ab1[0][j] * (99.5) + par_ab1[1][j];
3298 yDC1_glob[j] = par_ab1[2][j] * (99.5) + par_ab1[3][j];
3299 if (size_segDC1[j] > 6)
3304 for (
int j = 0; j < nDC2_segments; j++) {
3306 double max_resid = 0;
3307 for (
int i = 0;
i < 8;
i++) {
3308 if (rh_segDC2[
i][j] != -999)
3311 for (
int rej = 0; rej < 2; rej++) {
3314 float rh_seg[8] = {-999};
3315 float rh_sigm_seg[8] = {-999};
3316 float par_ab[4] = {999, 999, 999, 999};
3318 for (
int i = 0;
i < 8;
i++) {
3319 rh_seg[
i] = rh_segDC2[
i][j];
3320 rh_sigm_seg[
i] = rh_sigm_segDC2[
i][j];
3323 fit_seg(rh_seg, rh_sigm_seg, par_ab, -1, -1);
3324 for (
int i = 0;
i < 4;
i++) {
3325 par_ab2[
i][j] = par_ab[
i];
3332 for (
int i = 0;
i < 8;
i++) {
3333 if (
i == 0 && rh_segDC2[
i][j] != -999) {
3334 resid = rh_segDC2[
i][j] -
z_loc[
i] * par_ab2[0][j] - par_ab2[1][j];
3335 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3336 if (
fabs(resid) > max_resid) {
3338 max_resid =
fabs(resid);
3341 if (
i == 1 && rh_segDC2[
i][j] != -999) {
3342 resid = rh_segDC2[
i][j] -
z_loc[
i] * par_ab2[0][j] - par_ab2[1][j];
3344 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3346 if (
fabs(resid) > max_resid) {
3348 max_resid =
fabs(resid);
3351 if (
i == 2 && rh_segDC2[
i][j] != -999) {
3352 resid = rh_segDC2[
i][j] -
z_loc[
i] * par_ab2[2][j] - par_ab2[3][j];
3354 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3356 if (
fabs(resid) > max_resid) {
3358 max_resid =
fabs(resid);
3361 if (
i == 3 && rh_segDC2[
i][j] != -999) {
3362 resid = rh_segDC2[
i][j] -
z_loc[
i] * par_ab2[2][j] - par_ab2[3][j];
3364 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3366 if (
fabs(resid) > max_resid) {
3368 max_resid =
fabs(resid);
3371 if (
i == 4 && rh_segDC2[
i][j] != -999) {
3372 resid = rh_segDC2[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab2[2][j] - par_ab2[0][j])
3373 -
isqrt_2 * (par_ab2[3][j] - par_ab2[1][j]);
3374 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3376 if (
fabs(resid) > max_resid) {
3378 max_resid =
fabs(resid);
3381 if (
i == 5 && rh_segDC2[
i][j] != -999) {
3382 resid = rh_segDC2[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab2[2][j] - par_ab2[0][j])
3383 -
isqrt_2 * (par_ab2[3][j] - par_ab2[1][j]);
3384 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3385 if (
fabs(resid) > max_resid) {
3387 max_resid =
fabs(resid);
3390 if (
i == 6 && rh_segDC2[
i][j] != -999) {
3391 resid = rh_segDC2[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab2[2][j] + par_ab2[0][j])
3392 -
isqrt_2 * (par_ab2[3][j] + par_ab2[1][j]);
3393 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3395 if (
fabs(resid) > max_resid) {
3397 max_resid =
fabs(resid);
3400 if (
i == 7 && rh_segDC2[
i][j] != -999) {
3401 resid = rh_segDC2[
i][j] -
isqrt_2 *
z_loc[
i] * (par_ab2[2][j] + par_ab2[0][j])
3402 -
isqrt_2 * (par_ab2[3][j] + par_ab2[1][j]);
3403 chi2_DC2[j] += (resid * resid) / rh_sigm_segDC2[
i][j];
3405 if (
fabs(resid) > max_resid) {
3407 max_resid =
fabs(resid);
3411 chi2_DC2[j] /= (size_segDC2[j] - 4);
3413 if (chi2_DC2[j] > 30) {
3414 if (size_segDC2[j] == 6) {
3418 rh_segDC2[worst_hit][j] = -999;
3429 par_ab2[1][j] +=
x2_sh;
3430 par_ab2[3][j] +=
y2_sh;
3432 xDC2_glob[j] = par_ab2[0][j] * (-99.5) + par_ab2[1][j];
3433 yDC2_glob[j] = par_ab2[2][j] * (-99.5) + par_ab2[3][j];
3435 if (size_segDC2[j] > 6)
3449 float Chi2_match[50];
3450 for (
int seg = 0; seg < 50; seg++) {
3457 Chi2_match[seg] = -999;
3467 for (
int max_size = 8; max_size > 5; max_size--) {
3469 for (
int sizeit1 = 0; sizeit1 < nDC1_segments; sizeit1++) {
3470 if (size_segDC1[sizeit1] != max_size)
3472 for (
int sizeit1_1 = 0; sizeit1_1 < nDC1_segments; sizeit1_1++) {
3473 if (sizeit1_1 == sizeit1)
3475 for (
int hit = 0; hit < 4; hit++) {
3476 if (rh_segDC1[2 * hit][sizeit1] == rh_segDC1[2 * hit][sizeit1_1]
3477 && rh_segDC1[2 * hit + 1][sizeit1] == rh_segDC1[2 * hit + 1][sizeit1_1]
3478 && (chi2_DC1[sizeit1] <= chi2_DC1[sizeit1_1]
3479 || size_segDC1[sizeit1] > size_segDC1[sizeit1_1]))
3481 chi2_DC1[sizeit1_1] = 999;
3490 for (
int max_size = 8; max_size > 5; max_size--) {
3492 for (
int sizeit2 = 0; sizeit2 < nDC2_segments; sizeit2++) {
3493 if (size_segDC2[sizeit2] != max_size)
3495 for (
int sizeit2_2 = 0; sizeit2_2 < nDC2_segments; sizeit2_2++) {
3496 if (sizeit2_2 == sizeit2)
3498 for (
int hit = 0; hit < 4; hit++) {
3499 if (rh_segDC2[2 * hit][sizeit2] == rh_segDC2[2 * hit][sizeit2_2]
3500 && rh_segDC2[2 * hit + 1][sizeit2] == rh_segDC2[2 * hit + 1][sizeit2_2]
3501 && (chi2_DC2[sizeit2] <= chi2_DC2[sizeit2_2]
3502 || size_segDC2[sizeit2] > size_segDC2[sizeit2_2]))
3504 chi2_DC2[sizeit2_2] = 999;
3512 for (
int sizeit1 = 0; sizeit1 < nDC1_segments; sizeit1++) {
3513 if (chi2_DC1[sizeit1] > 50)
3516 FairTrackParam ParamsTrackDch1;
3518 Float_t x0 = par_ab1[1][sizeit1];
3519 Float_t y0 = par_ab1[3][sizeit1];
3520 ParamsTrackDch1.SetPosition(
TVector3(x0, y0, z0));
3521 ParamsTrackDch1.SetTx(par_ab1[0][sizeit1]);
3522 ParamsTrackDch1.SetTy(par_ab1[2][sizeit1]);
3528 tr_dch1->
SetChi2(chi2_DC1[sizeit1]);
3529 tr_dch1->
SetNHits(size_segDC1[sizeit1]);
3533 for (
int sizeit2 = 0; sizeit2 < nDC2_segments; sizeit2++) {
3534 if (chi2_DC2[sizeit2] > 50)
3537 FairTrackParam ParamsTrackDch2;
3539 Float_t x0 = par_ab2[1][sizeit2];
3540 Float_t y0 = par_ab2[3][sizeit2];
3541 ParamsTrackDch2.SetPosition(
TVector3(x0, y0, z0));
3542 ParamsTrackDch2.SetTx(par_ab2[0][sizeit2]);
3543 ParamsTrackDch2.SetTy(par_ab2[2][sizeit2]);
3550 tr_dch2->
SetChi2(chi2_DC2[sizeit2]);
3551 tr_dch2->
SetNHits(size_segDC2[sizeit2]);
3558 int match_dc2_seg = -1;
3565 float bx1, bx2, by1, by2;
3566 bx1 = bx2 = by1 = by2 = -999.0;
3568 for (
int segdc1Nr = 0; segdc1Nr < nDC1_segments; segdc1Nr++) {
3569 if (chi2_DC1[segdc1Nr] > 50 || size_segDC1[segdc1Nr] < 7)
3571 float min_distX = 20;
3572 float min_distY = 15;
3573 float min_distSQ = 225;
3579 float chi2_match = 0;
3581 for (
int segdc2Nr = 0; segdc2Nr < nDC2_segments; segdc2Nr++) {
3582 if (chi2_DC2[segdc2Nr] > 50)
3585 float distX =
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]);
3586 float distY =
fabs(yDC1_glob[segdc1Nr] - yDC2_glob[segdc2Nr]);
3587 if (distX < min_distX && distY < min_distY) {
3588 float distSQ = distX * distX + distY * distY;
3590 chi2_match = (
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr])
3591 *
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]) / 49)
3592 + (distY * distY / 43.56)
3593 + ((par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr] * par_ab2[0][segdc2Nr]
3594 - par_ab1[0][segdc1Nr])
3596 + (par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr] * par_ab2[2][segdc2Nr]
3597 - par_ab1[2][segdc1Nr])
3599 if (distSQ < min_distSQ) {
3601 dx = xDC2_glob[segdc2Nr] - xDC1_glob[segdc1Nr];
3602 dy = yDC2_glob[segdc2Nr] - yDC1_glob[segdc1Nr];
3603 xMean = 0.5 * (xDC1_glob[segdc1Nr] + xDC2_glob[segdc2Nr]);
3604 yMean = 0.5 * (yDC1_glob[segdc1Nr] + yDC2_glob[segdc2Nr]);
3605 ax = (par_ab2[1][segdc2Nr] - par_ab1[1][segdc1Nr]) / 199;
3606 ay = (par_ab2[3][segdc2Nr] - par_ab1[3][segdc1Nr]) / 199;
3608 min_distSQ = distSQ;
3609 match_dc2_seg = segdc2Nr;
3610 daX = par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr];
3611 daY = par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr];
3612 ax1 = par_ab1[0][segdc1Nr];
3613 ax2 = par_ab2[0][segdc2Nr];
3614 ay1 = par_ab1[2][segdc1Nr];
3615 ay2 = par_ab2[2][segdc2Nr];
3616 bx2 = par_ab2[1][segdc2Nr];
3617 by2 = par_ab2[3][segdc2Nr];
3623 if (min_distSQ == 225)
3627 if (
fabs(dx) < 10 &&
fabs(dy) < 10) {
3628 if (
fabs(daX) < 0.2 &&
fabs(daY) < 0.2) {
3630 leng[seg_it] =
sqrt(628.65 * 628.65 + (xMean * xMean));
3631 x_mid[seg_it] = xMean;
3632 y_mid[seg_it] = yMean;
3637 imp[seg_it] = -0.4332 / (ax + 0.006774);
3638 Chi2_match[seg_it] = chi2_match;
3639 chi2_DC1[segdc1Nr] = 999;
3640 chi2_DC2[match_dc2_seg] = 999;
3648 int match_dc1_seg = -1;
3657 float bx1, bx2, by1, by2;
3658 bx1 = bx2 = by1 = by2 = -999.0;
3660 for (
int segdc2Nr = 0; segdc2Nr < nDC2_segments; segdc2Nr++) {
3662 float min_distX = 20;
3663 float min_distY = 15;
3664 float min_distSQ = 225;
3671 if (chi2_DC2[segdc2Nr] > 50 || size_segDC2[segdc2Nr] < 7)
3674 float chi2_match = 0;
3676 for (
int segdc1Nr = 0; segdc1Nr < nDC1_segments; segdc1Nr++) {
3677 if (chi2_DC1[segdc1Nr] > 50)
3680 float distX =
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]);
3681 float distY =
fabs(yDC1_glob[segdc1Nr] - yDC2_glob[segdc2Nr]);
3683 if (distX < min_distX && distY < min_distY) {
3684 float distSQ = distX * distX + distY * distY;
3686 chi2_match = (
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr])
3687 *
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]) / 49)
3688 + (distY * distY / 43.56)
3689 + ((par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr] * par_ab2[0][segdc2Nr]
3690 - par_ab1[0][segdc1Nr])
3692 + (par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr] * par_ab2[2][segdc2Nr]
3693 - par_ab1[2][segdc1Nr])
3696 if (distSQ < min_distSQ) {
3698 dx = xDC2_glob[segdc2Nr] - xDC1_glob[segdc1Nr];
3699 dy = yDC2_glob[segdc2Nr] - yDC1_glob[segdc1Nr];
3700 xMean = 0.5 * (xDC1_glob[segdc1Nr] + xDC2_glob[segdc2Nr]);
3701 yMean = 0.5 * (yDC1_glob[segdc1Nr] + yDC2_glob[segdc2Nr]);
3702 min_distSQ = distSQ;
3703 ax = (par_ab2[1][segdc2Nr] - par_ab1[1][segdc1Nr]) / 199;
3704 ay = (par_ab2[3][segdc2Nr] - par_ab1[3][segdc1Nr]) / 199;
3705 match_dc1_seg = segdc1Nr;
3706 daX = par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr];
3707 daY = par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr];
3712 if (min_distSQ >= 225)
3715 if (
fabs(dx) < 10 &&
fabs(dy) < 10) {
3716 if (
fabs(daX) < 0.2 &&
fabs(daY) < 0.2) {
3719 leng[seg_it] =
sqrt(628.65 * 628.65 + (xMean * xMean));
3720 x_mid[seg_it] = xMean;
3721 y_mid[seg_it] = yMean;
3722 a_X[seg_it] =
atan(ax);
3723 a_Y[seg_it] =
atan(ay);
3724 imp[seg_it] = -0.4332 / (ax + 0.006774);
3725 Chi2_match[seg_it] = chi2_match;
3726 chi2_DC2[segdc2Nr] = 999;
3727 chi2_DC1[match_dc1_seg] = 999;
3736 int match_dc1_seg = -1;
3745 float bx1, bx2, by1, by2;
3746 bx1 = bx2 = by1 = by2 = -999.0;
3748 for (
int segdc2Nr = 0; segdc2Nr < nDC2_segments; segdc2Nr++) {
3749 float min_distX = 20;
3750 float min_distY = 15;
3751 float min_distSQ = 225;
3758 if (chi2_DC2[segdc2Nr] > 50)
3761 float chi2_match = 0;
3762 for (
int segdc1Nr = 0; segdc1Nr < nDC1_segments; segdc1Nr++) {
3763 if (chi2_DC1[segdc1Nr] > 50)
3766 float distX =
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]);
3767 float distY =
fabs(yDC1_glob[segdc1Nr] - yDC2_glob[segdc2Nr]);
3769 if (distX < min_distX && distY < min_distY) {
3770 float distSQ = distX * distX + distY * distY;
3773 (
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr])
3774 *
fabs(xDC1_glob[segdc1Nr] - xDC2_glob[segdc2Nr]) / 49)
3775 + (distY * distY / 43.56)
3776 + ((par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr] * par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr])
3778 + (par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr] * par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr])
3780 if (distSQ < min_distSQ) {
3782 dx = xDC2_glob[segdc2Nr] - xDC1_glob[segdc1Nr];
3783 dy = yDC2_glob[segdc2Nr] - yDC1_glob[segdc1Nr];
3784 xMean = 0.5 * (xDC1_glob[segdc1Nr] + xDC2_glob[segdc2Nr]);
3785 yMean = 0.5 * (yDC1_glob[segdc1Nr] + yDC2_glob[segdc2Nr]);
3786 min_distSQ = distSQ;
3787 ax = (par_ab2[1][segdc2Nr] - par_ab1[1][segdc1Nr]) / 199;
3788 ay = (par_ab2[3][segdc2Nr] - par_ab1[3][segdc1Nr]) / 199;
3789 match_dc1_seg = segdc1Nr;
3790 daX = par_ab2[0][segdc2Nr] - par_ab1[0][segdc1Nr];
3791 daY = par_ab2[2][segdc2Nr] - par_ab1[2][segdc1Nr];
3797 if (min_distSQ >= 225)
3800 if (
fabs(dx) < 10 &&
fabs(dy) < 10) {
3801 if (
fabs(daX) < 0.2 &&
fabs(daY) < 0.2) {
3804 leng[seg_it] =
sqrt(628.65 * 628.65 + (xMean * xMean));
3805 x_mid[seg_it] = xMean;
3806 y_mid[seg_it] = yMean;
3807 a_X[seg_it] =
atan(ax);
3808 a_Y[seg_it] =
atan(ay);
3809 imp[seg_it] = -0.4332 / (ax + 0.006774);
3810 Chi2_match[seg_it] = chi2_match;
3811 chi2_DC2[segdc2Nr] = 999;
3812 chi2_DC1[match_dc1_seg] = 999;
3818 for (
int seg = 0; seg < seg_it + 1; seg++) {
3820 FairTrackParam ParamsTrackDchMatch;
3824 ParamsTrackDchMatch.SetPosition(
TVector3(x0, y0, z0));
3825 ParamsTrackDchMatch.SetTx(a_X[seg]);
3826 ParamsTrackDchMatch.SetTy(a_Y[seg]);
3832 newTrack->
SetChi2(Chi2_match[seg]);