646{
648
649
652 Int_t Over_p[72000];
653 Int_t Over_n[72000];
654 Int_t cnt_step_U=0;
655 Int_t cnt_step_V=0;
656 Int_t NumU=0;
657 Int_t NumV=0;
658 Float_t b_ref_p;
659 Float_t b_ref_n;
660 Float_t OvU;
661 Float_t OvV;
662 Float_t b_pos;
663 Float_t b_neg;
664
665 std::list<int>::iterator intIter;
666
667
668
670 {
673 }
674 b_n.clear();
675 b_p.clear();
676 Ov_n.clear();
677 Ov_p.clear();
678 Num_n.clear();
679 Num_p.clear();
680
681 int iNumUFiberHits = 0;
682 int iNumVFiberHits = 0;
683
686
687
688
689
690
691
692
694
695
696
697
698
700 {
701 Fiber_MB_n[iLayer].clear();
702 const unsigned int thisLayer=2*iLayer+1;
703 const std::list<int> & thisFiberContainer =
m_MapLayers[thisLayer].ListFibers;
704 for (const auto & thisFiber:thisFiberContainer)
705 {
706
707 Fiber_MB_n[iLayer].push_back(thisFiber);
708 }
709 }
710 do
711 {
712 b_ref_n=-127.0;
713 b_ref_p=-127.0;
714
715
716
717
719
720
721
722
723 Find_Proj(Over_p, b_ref_n, b_pos, OvU, NumU);
724
726
727
729 {
730 Fiber_MB_tmp[
i].clear();
731 Fiber_MB_tmp[
i].push_back(FSel_pos_tmp[i]);
732 }
733
734
735
736
737
738
739
740
741
742
744 {
746
747 for (
unsigned int i=0;
i<Fiber_MB_n[iLayer].size();
i++)
748 {
749 m_MapLayers[2*iLayer+1].ListFibers.push_back(Fiber_MB_n[iLayer][i]);
750
751 }
752 }
753
754
755
756
758 {
759 cnt_step_V=0;
760 do
761 {
762
763 iNumUFiberHits=0;
764 iNumVFiberHits=0;
766 {
769
770
771 }
772
773
774
776 {
777
778
779
781
782
783 Find_Proj(Over_n, b_ref_p, b_neg, OvV, NumV);
784
785
786
788 {
789
790
791
792
793
795
796 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
797
798
800
801
802 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
803
804
805
806
807
808
810
811 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
812
813
815
816
817 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
818
819
820 b_p.push_back(b_pos);
821 Ov_p.push_back(OvU);
822 Num_p.push_back(NumU);
823
824 b_n.push_back(b_neg);
825 Ov_n.push_back(OvV);
826 Num_n.push_back(NumV);
827
828 iTrackMatch[0].push_back(cnt_step_U);
829 iTrackMatch[1].push_back(cnt_step_V);
830
831
832
833
835
836
837
838
839
841 {
842 FSel_n[iLayer].push_back(FSel_neg[iLayer]);
843
844 FSel_p[iLayer].push_back(FSel_pos_tmp[iLayer]);
845 }
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
863 {
864
865
866
867
868
869
870
871
872
873
874
875
876 const unsigned int thisLayer=2*iLayer+1;
877 const std::list<int> & thisFiberContainer =
m_MapLayers[thisLayer].ListFibers;
878 for (const auto & thisFiber:thisFiberContainer)
879 {
880 if (thisFiber == (int)FSel_neg[iLayer])
881 {
882 auto it = std::find(
begin(thisFiberContainer),
end(thisFiberContainer), thisFiber);
884 break;
885 }
886 }
887
888
889
891
893
894
896
898
899
900
901 }
902 cnt_step_V++;
903 }
904 }
905 else NumV = 0;
906 }
908
909
910
911
912
913
914
915 if (cnt_step_V>0)
916 {
918 {
919 std::list<int>::iterator itBeg =
m_MapLayers[2*iLayer].ListFibers.begin();
920 std::list<int>::iterator itEnd =
m_MapLayers[2*iLayer].ListFibers.end();
921 for (; itBeg != itEnd; ++itBeg)
922 {
923 if (*itBeg == (int)FSel_pos_tmp[iLayer])
924 {
926 break;
927 }
928 }
929
930
931
933
935
936
938
941
942
943
944
945 }
946 }
947 else
948 {
949 if (NumV>0)
950 {
951
952
953
955 {
956 std::list<int>::iterator itBeg =
m_MapLayers[2*iLayer].ListFibers.begin();
957 std::list<int>::iterator itEnd =
m_MapLayers[2*iLayer].ListFibers.end();
958 for (; itBeg != itEnd; ++itBeg)
959 {
960 if (*itBeg == (int)FSel_pos_tmp[iLayer])
961 {
963 break;
964 }
965 }
966
967
968
970
972
973
974
975
978
979
980
981 }
982 }
983 else break;
984 }
985 cnt_step_U++;
986
987 }
988 }
990}
void Proj_Store(Int_t iFiberSide, Int_t(&iOver)[72000], Float_t fbRef, Int_t iSideFlag)
void Find_Proj(const Int_t iOver[72000], Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum)
void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t(&iFSel)[ALFAPLATESCNT], Int_t iSideFlag)