382{
384
385
388 std::vector<Int_t> Over_p(72000);
389 std::vector<Int_t> Over_n(72000);
390 Int_t cnt_step_U=0;
391 Int_t cnt_step_V=0;
392 Int_t NumU=0;
393 Int_t NumV=0;
394 Float_t b_ref_p;
395 Float_t b_ref_n;
396 Float_t OvU;
397 Float_t OvV;
398 Float_t b_pos;
399 Float_t b_neg;
400
401 std::list<int>::iterator intIter;
402
403
404
406 {
409 }
410 b_n.clear();
411 b_p.clear();
412 Ov_n.clear();
413 Ov_p.clear();
414 Num_n.clear();
415 Num_p.clear();
416
417 int iNumUFiberHits = 0;
418 int iNumVFiberHits = 0;
419
422
424 {
425 Fiber_MB_n[iLayer].clear();
426 const unsigned int thisLayer=2*iLayer+1;
427 const std::list<int> & thisFiberContainer =
m_MapLayers[thisLayer].ListFibers;
428 for (const auto & thisFiber:thisFiberContainer)
429 {
430
431 Fiber_MB_n[iLayer].push_back(thisFiber);
432 }
433 }
434 do
435 {
436 b_ref_n=-127.0;
437 b_ref_p=-127.0;
438
439
440
441
443
444
445
446
447 Find_Proj(Over_p, b_ref_n, b_pos, OvU, NumU);
448
450
451
453 {
454 Fiber_MB_tmp[
i].clear();
455 Fiber_MB_tmp[
i].push_back(FSel_pos_tmp[i]);
456 }
457
458
459
460
461
462
463
464
465
466
468 {
470
471 for (
unsigned int i=0;
i<Fiber_MB_n[iLayer].size();
i++)
472 {
473 m_MapLayers[2*iLayer+1].ListFibers.push_back(Fiber_MB_n[iLayer][i]);
474
475 }
476 }
477
478
479
480
482 {
483 cnt_step_V=0;
484 do
485 {
486
487 iNumUFiberHits=0;
488 iNumVFiberHits=0;
490 {
493
494
495 }
496
497
498
500 {
501
502
503
505
506
507 Find_Proj(Over_n, b_ref_p, b_neg, OvV, NumV);
508
509
510
512 {
513
514
515
516
517
519
520 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
521
522
524
525
526 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
527
528
529
530
531
532
534
535 Find_Proj(Over_p, b_neg, b_pos, OvU, NumU);
536
537
539
540
541 Find_Proj(Over_n, b_pos, b_neg, OvV, NumV);
542
543
544 b_p.push_back(b_pos);
545 Ov_p.push_back(OvU);
546 Num_p.push_back(NumU);
547
548 b_n.push_back(b_neg);
549 Ov_n.push_back(OvV);
550 Num_n.push_back(NumV);
551
552 iTrackMatch[0].push_back(cnt_step_U);
553 iTrackMatch[1].push_back(cnt_step_V);
554
555
556
557
559
560
561
562
563
565 {
566 FSel_n[iLayer].push_back(FSel_neg[iLayer]);
567
568 FSel_p[iLayer].push_back(FSel_pos_tmp[iLayer]);
569 }
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
587 {
588
589
590
591
592
593
594
595
596
597
598
599
600 const unsigned int thisLayer=2*iLayer+1;
601 const std::list<int> & thisFiberContainer =
m_MapLayers[thisLayer].ListFibers;
602 for (const auto & thisFiber:thisFiberContainer)
603 {
604 if (thisFiber == (int)FSel_neg[iLayer])
605 {
606 auto it = std::find(
begin(thisFiberContainer),
end(thisFiberContainer), thisFiber);
608 break;
609 }
610 }
611
612
613
615
617
618
620
622
623
624
625 }
626 cnt_step_V++;
627 }
628 }
629 else NumV = 0;
630 }
632
633
634
635
636
637
638
639 if (cnt_step_V>0)
640 {
642 {
643 std::list<int>::iterator itBeg =
m_MapLayers[2*iLayer].ListFibers.begin();
644 std::list<int>::iterator itEnd =
m_MapLayers[2*iLayer].ListFibers.end();
645 for (; itBeg != itEnd; ++itBeg)
646 {
647 if (*itBeg == (int)FSel_pos_tmp[iLayer])
648 {
650 break;
651 }
652 }
653
654
655
657
659
660
662
665
666
667
668
669 }
670 }
671 else
672 {
673 if (NumV>0)
674 {
675
676
677
679 {
680 std::list<int>::iterator itBeg =
m_MapLayers[2*iLayer].ListFibers.begin();
681 std::list<int>::iterator itEnd =
m_MapLayers[2*iLayer].ListFibers.end();
682 for (; itBeg != itEnd; ++itBeg)
683 {
684 if (*itBeg == (int)FSel_pos_tmp[iLayer])
685 {
687 break;
688 }
689 }
690
691
692
694
696
697
698
699
702
703
704
705 }
706 }
707 else break;
708 }
709 cnt_step_U++;
710
711 }
712 }
714}
void Proj_Store(Int_t iFiberSide, std::span< Int_t > iOver, Float_t fbRef, Int_t iSideFlag)
void Finding_Fib(Int_t iFiberSide, Float_t fbRef, Float_t fbRec, Int_t(&iFSel)[ALFAPLATESCNT], Int_t iSideFlag)
void Find_Proj(const std::span< const Int_t > &iOver, Float_t fbRef, Float_t &fb, Float_t &fOv, Int_t &fNum)