403{
404 SmartIF<IRndmGenSvc> randsvc{Gaudi::svcLocator()->service("RndmGenSvc")};
405 Rndm::Numbers
gauss(randsvc,Rndm::Gauss(0.,1.));
406
407
408
409
410
415 }
416
417
419
421 m_survey_IDAlignDBTool->dispGroup(-1, -1, -1, -1, -1,
m_TransLayerRand,
m_TransLayerRand,
m_TransLayerRand, 2, 2, 0);
422
424 m_survey_IDAlignDBTool->dispGroup(1, 2, 0, -1, -1,
m_TransLayerRand, 0, 0, 1, 2, 0);
425
427 m_survey_IDAlignDBTool->dispGroup(1, 2, 2, -1, -1,
m_TransLayerRand, 0, 0, 1, 2, 0);
428 }
429
430 int nSCT(0), nPixel(0);
431 std::vector< Amg::Vector3D > localSurveyCoords;
433 SurveyTransRand.setIdentity();
434 SurveyTransRandSect.setIdentity();
435
436 unsigned int nSCTMod = 0,nSCTModInMap = 0,nSCTModEC = 0,nSCTModPointsEC = 0;
437
438 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> sctDetEleHandle(
m_SCTDetEleCollKey);
439 const InDetDD::SiDetectorElementCollection* sctElements(*sctDetEleHandle);
440 if (not sctDetEleHandle.isValid() or sctElements==nullptr) {
442 return;
443 }
444 for (const InDetDD::SiDetectorElement* element: *sctElements) {
445 const Identifier SCT_ModuleID = element->identify();
446 if(
m_sctid->side(SCT_ModuleID) != 0)
continue;
447 ++nSCTMod;
448
450 ++nSCTModInMap;
451 SurveyConstraintModule* newSCT_Module = new SurveyConstraintModule(SCT_ModuleID,false);
455 ++nSCT;
457
458
459
460
461
463 localSurveyCoords);
464
466 localSurveyCoords);
467
470
472 if(abs(
m_sctid->barrel_ec(SCT_ModuleID)) == 2){
485 Misalign_Vector[0]=
m1;Misalign_Vector[1]=
m2;Misalign_Vector[2]=
m3;Misalign_Vector[3]=m4;Misalign_Vector[4]=m5;Misalign_Vector[5]=m6;
487 }
488 }
489 else if(
m_sctid->barrel_ec(SCT_ModuleID) == 0) {
502 Misalign_Vector[0]=
m1;Misalign_Vector[1]=
m2;Misalign_Vector[2]=
m3;Misalign_Vector[3]=m4;Misalign_Vector[4]=m5;Misalign_Vector[5]=m6;
504 }
505 }
506 }
507
508
509 for ( unsigned int iCorn(0); iCorn < localSurveyCoords.size(); ++iCorn ) {
511
512 Amg::Vector3D surveyPoint = (SurveyTrans*SurveyTransRand) * localSurveyCoords[iCorn];
514
516
517 Amg::VectorX globalSurveyPoint = element->globalPosition( surveyPoint );
518 Amg::VectorX globalCurrentPoint = element->globalPosition( currentPoint);
519
520 SurveyConstraintPoint newCPoint( globalSurveyPoint, globalCurrentPoint );
522 }
523 }
524 }
525
526 bool first =
true, NewDisk =
true, NewSector =
true, firstB =
true;
527 unsigned int nPixMod = 0,nPixModInMap = 0,nPixModEC = 0,nPixModPointsEC = 0;
528 int previous_disk = -1, previous_sector = -1;
529
530 SG::ReadCondHandle<InDetDD::SiDetectorElementCollection> pixelDetEleHandle(
m_pixelDetEleCollKey);
531 const InDetDD::SiDetectorElementCollection* pixelElements(*pixelDetEleHandle);
532 if (not pixelDetEleHandle.isValid() or pixelElements==nullptr) {
534 return;
535 }
536 for (const InDetDD::SiDetectorElement* element: *pixelElements) {
537 const Identifier Pixel_ModuleID = element->identify();
538 ++nPixMod;
539
541 ++nPixModInMap;
542 SurveyConstraintModule* newPixel_Module = new SurveyConstraintModule(Pixel_ModuleID,true);
546 ++nPixel;
548
549
550 if(abs(
m_pixid->barrel_ec(Pixel_ModuleID)) == 2){
551 ++nPixModEC;
552
554 localSurveyCoords);
555
558
559
560
561
562 if(previous_disk ==
m_pixid->layer_disk(Pixel_ModuleID) && previous_sector ==
SectorNumber(
m_pixid->phi_module(Pixel_ModuleID)))
563 NewSector=false;
564 else NewSector=true;
565 if(previous_disk ==
m_pixid->layer_disk(Pixel_ModuleID))
566 NewDisk=false;
567 else NewDisk=true;
574
575 }
576
588
589
592 Misalign_Vector[0]=
m1;Misalign_Vector[1]=
m2;Misalign_Vector[2]=
m3;Misalign_Vector[3]=m4;Misalign_Vector[4]=m5;Misalign_Vector[5]=m6;
594 }
595 }
603 SurveyTransRandSect =
Amg::Translation3D(m1,m2,m3) * Amg::RotationMatrix3D::Identity()
607
608 }
609
610
611
612
613 for ( unsigned int iCorn(0); iCorn < localSurveyCoords.size(); ++iCorn ) {
614 ++nPixModPointsEC;
616
617 Amg::Vector3D surveyPoint = (SurveyTrans*SurveyTransRand) * localSurveyCoords[iCorn];
619
621
622
623 Amg::VectorX globalSurveyPoint = element->globalPosition( surveyPoint);
624 Amg::VectorX globalCurrentPoint = element->globalPosition( currentPoint );
625
626
627
628
629
630
631 SurveyConstraintPoint newCPoint( globalSurveyPoint, globalCurrentPoint );
633
634
635
636 if (first){
637 ATH_MSG_INFO(
"Local Coordinates = (" << localSurveyCoords[iCorn][0] <<
","
638 << localSurveyCoords[iCorn][1] << "," << localSurveyCoords[iCorn][2] << ")");
639 ATH_MSG_INFO(
"Survey Local Coordinates = (" << surveyPoint[0] <<
","
640 << surveyPoint[1] << "," << surveyPoint[2] << ")");
641 ATH_MSG_INFO(
"Current Local Coordinates = (" << currentPoint[0] <<
","
642 << currentPoint[1] << "," << currentPoint[2] << ")");
643 ATH_MSG_INFO(
"Survey Global Coordinates = (" << globalSurveyPoint[0] <<
","
644 << globalSurveyPoint[1] << "," << globalSurveyPoint[2] << ")");
645 ATH_MSG_INFO(
"Current Global Coordinates = (" << globalCurrentPoint[0] <<
","
646 << globalCurrentPoint[1] << "," << globalCurrentPoint[2] << ")");
647 ATH_MSG_INFO(
"SurveyConstraint().setup_SurveyConstraintModules: nModulePoints " <<
m_ModuleMap[Pixel_ModuleID]->nModulePoints());
649 }
650
651
652 }
653 previous_disk =
m_pixid->layer_disk(Pixel_ModuleID);
655 }
656
657
658 if(
m_pixid->barrel_ec(Pixel_ModuleID) == 0){
659
661 localSurveyCoords);
662
665
677
680 Misalign_Vector[0]=
m1;Misalign_Vector[1]=
m2;Misalign_Vector[2]=
m3;Misalign_Vector[3]=m4;Misalign_Vector[4]=m5;Misalign_Vector[5]=m6;
682 }
683 }
684
685
686 for ( unsigned int iCorn(0); iCorn < localSurveyCoords.size(); ++iCorn ) {
688
689 Amg::Vector3D surveyPoint = (SurveyTrans*SurveyTransRand) *localSurveyCoords[iCorn] ;
691
693
694 Amg::VectorX globalSurveyPoint = element->globalPosition( surveyPoint );
695 Amg::VectorX globalCurrentPoint = element->globalPosition( currentPoint );
696
697 SurveyConstraintPoint newCPoint( globalSurveyPoint, globalCurrentPoint );
699 }
700 }
701 }
702 }
704 << ", nSCTModInMap " << nSCTModInMap
705 << ", nSCTModEC " << nSCTModEC
706 << ", nSCTModPointsEC " << nSCTModPointsEC
707 << ", nPixMod " << nPixMod
708 << ", nPixModInMap " << nPixModInMap
709 << ", nPixModEC " << nPixModEC
710 << ", nPixModPointsEC " << nPixModPointsEC);
711
712
713
714
715
716
717
718 std::vector< SurveyConstraintPoint > Stavepoints;
719
720 unsigned int nPixModEC2 = 0,nPixModPixModEC = 0,nPixModECPixModEC = 0,nSameLayer = 0,nNotIdentical = 0;
722 const Identifier Pixel_ModuleID = *wafer_it;
723 if(abs(
m_pixid->barrel_ec(Pixel_ModuleID)) == 2){
724 ++nPixModEC2;
726 ++nPixModPixModEC;
727 const Identifier Pixel_ModuleID2 = *wafer_it2;
728 if(
m_pixid->barrel_ec(Pixel_ModuleID2) ==
m_pixid->barrel_ec(Pixel_ModuleID)){
729 ++nPixModECPixModEC;
730 if(
m_pixid->layer_disk(Pixel_ModuleID2) ==
m_pixid->layer_disk(Pixel_ModuleID)){
731 ++nSameLayer;
732
733
735
736 if(Pixel_ModuleID != Pixel_ModuleID2){
737 ++nNotIdentical;
739 (
m_ModuleMap[Pixel_ModuleID])->addStaveConstraintPoint(Stavepoints);
740
741
742
743 if (firstB){
744 std::vector< SurveyConstraintPoint > Testpoints;
746 ATH_MSG_INFO(
"SurveyConstraint().setup_SurveyConstraintModules: Stavepoints.size() (from map) " << Testpoints.size());
747 firstB = false;
748 }
749
750
751 }
752 }
753 }
754 }
755 }
756 }
757 }
758 ATH_MSG_INFO(
"Loop 2, filling stave-points, nPixModEC2 " << nPixModEC2
759 << ", nPixModPixModEC " << nPixModPixModEC
760 << ", nPixModECPixModEC " << nPixModECPixModEC
761 << ", nSameLayer " << nSameLayer
762 << ", nNotIdentical " << nNotIdentical);
763
764
765 nPixModEC2 = 0;nPixModPixModEC = 0;nPixModECPixModEC = 0;nSameLayer = 0;nNotIdentical = 0;
767 const Identifier Pixel_ModuleID = *wafer_it;
768 if(
m_pixid->barrel_ec(Pixel_ModuleID) != 0)
continue;
769 ++nPixModEC2;
771 ++nPixModPixModEC;
772 const Identifier Pixel_ModuleID2 = *wafer_it2;
773 if(
m_pixid->barrel_ec(Pixel_ModuleID2) !=
m_pixid->barrel_ec(Pixel_ModuleID))
continue;
774 ++nPixModECPixModEC;
775 if(
m_pixid->layer_disk(Pixel_ModuleID2) !=
m_pixid->layer_disk(Pixel_ModuleID))
continue;
776 ++nSameLayer;
777
778 if(
m_pixid->phi_module(Pixel_ModuleID2) !=
m_pixid->phi_module(Pixel_ModuleID))
continue;
779 if(Pixel_ModuleID == Pixel_ModuleID2)continue;
780 ++nNotIdentical;
782 (
m_ModuleMap[Pixel_ModuleID])->addStaveConstraintPoint(Stavepoints);
783 }
784 }
785 ATH_MSG_INFO(
"Loop 2, filling stave-points, nPixModB2 " << nPixModEC2
786 << ", nPixModPixModB " << nPixModPixModEC
787 << ", nPixModBPixModB " << nPixModECPixModEC
788 << ", nSameLayer " << nSameLayer
789 << ", nNotIdentical " << nNotIdentical);
790
791
792 nPixModEC2 = 0;nPixModPixModEC = 0;nPixModECPixModEC = 0;nSameLayer = 0;nNotIdentical = 0;
794 const Identifier SCT_ModuleID = *wafer_it;
795 if(
m_sctid->side(SCT_ModuleID) != 0)
continue;
796 if(abs(
m_sctid->barrel_ec(SCT_ModuleID)) != 2)
continue;
797 ++nPixModEC2;
799 ++nPixModPixModEC;
800 const Identifier SCT_ModuleID2 = *wafer_it2;
801 if(
m_sctid->side(SCT_ModuleID2) != 0)
continue;
802 if(
m_sctid->barrel_ec(SCT_ModuleID2) !=
m_sctid->barrel_ec(SCT_ModuleID))
continue;
803 ++nPixModECPixModEC;
804 if(
m_sctid->layer_disk(SCT_ModuleID2) !=
m_sctid->layer_disk(SCT_ModuleID))
continue;
805 ++nSameLayer;
806
807
808 if(SCT_ModuleID == SCT_ModuleID2)continue;
809 ++nNotIdentical;
811 (
m_ModuleMap[SCT_ModuleID])->addStaveConstraintPoint(Stavepoints);
812 }
813
814
815
816 if (
m_sctid->barrel_ec(SCT_ModuleID)==2 &&
817 m_sctid->layer_disk(SCT_ModuleID)==0 &&
818 m_sctid->eta_module(SCT_ModuleID)==0 &&
819 m_sctid->side(SCT_ModuleID) == 0 &&
821 ){
822 std::vector< SurveyConstraintPoint > Testpoints;
824 ATH_MSG_INFO(
"SurveyConstraint().setup_SurveyConstraintModules: Stavepoints.size() (from map) " << Testpoints.size());
825 }
826
827
828
829 }
830 ATH_MSG_INFO(
"Loop 2, filling stave-points, nSCTModEC2 " << nPixModEC2
831 << ", nSCTModSCTModEC " << nPixModPixModEC
832 << ", nSCTModECSCTModEC " << nPixModECPixModEC
833 << ", nSameLayer " << nSameLayer
834 << ", nNotIdentical " << nNotIdentical);
835
836
837 nPixModEC2 = 0;nPixModPixModEC = 0;nPixModECPixModEC = 0;nSameLayer = 0;nNotIdentical = 0;
839 const Identifier SCT_ModuleID = *wafer_it;
840 if(
m_sctid->side(SCT_ModuleID) != 0)
continue;
841 if(
m_sctid->barrel_ec(SCT_ModuleID) != 0)
continue;
842 ++nPixModEC2;
844 ++nPixModPixModEC;
845 const Identifier SCT_ModuleID2 = *wafer_it2;
846 if(
m_sctid->side(SCT_ModuleID2) != 0)
continue;
847 if(
m_sctid->barrel_ec(SCT_ModuleID2) !=
m_sctid->barrel_ec(SCT_ModuleID))
continue;
848 ++nPixModECPixModEC;
849 if(
m_sctid->layer_disk(SCT_ModuleID2) !=
m_sctid->layer_disk(SCT_ModuleID))
continue;
850 ++nSameLayer;
851
852 if(
m_sctid->phi_module(SCT_ModuleID2) !=
m_sctid->phi_module(SCT_ModuleID))
continue;
853 if(SCT_ModuleID == SCT_ModuleID2)continue;
854 ++nNotIdentical;
856 (
m_ModuleMap[SCT_ModuleID])->addStaveConstraintPoint(Stavepoints);
857 }
858 }
859 ATH_MSG_INFO(
"Loop 2, filling stave-points, nSCTModB2 " << nPixModEC2
860 << ", nSCTModSCTModB " << nPixModPixModEC
861 << ", nSCTModBSCTModB " << nPixModECPixModEC
862 << ", nSameLayer " << nSameLayer
863 << ", nNotIdentical " << nNotIdentical);
864
865
871 }
872}
std::vector< Identifier >::const_iterator const_id_iterator
std::vector< Identifier >::const_iterator const_id_iterator
void addModuleConstraintPoint(const SurveyConstraintPoint &cPoint)
void set_DOCA_Vector(Amg::VectorX &DOCA_Vector)
void set_globaltolocal(Amg::Transform3D &globaltolocal)
virtual void getSurveyCoordsSCTB(std::vector< Amg::Vector3D > &coords) override
virtual void getSurveyCoordsPixEC(std::vector< Amg::Vector3D > &coords) override
virtual int SectorNumber(int phi_module) override
virtual void getSurveyCoordsPixB(std::vector< Amg::Vector3D > &coords) override
virtual void getSurveyCoordsSCTEC(std::vector< Amg::Vector3D > &coords) override
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorX
Dynamic Vector - dynamic allocation.