Create a calib DataObject by calib type name, flavor and time. This method does not register DataObject in the transient data store. The string storage type is discovered at runtime in the Metadata dbs.
Create a calib DataObject by calib type, flavor, time and instrument. This method does not register DataObject in the transient data store, [but may register TDS addresses for its children if needed (e.g. Catalog).
465 {
466 MsgStream log(
msgSvc(),
"CalibMySQLCnvSvc" );
467
468 debug() << "In createCalib, fullpath = " << fullpath << endmsg;
469
470
472
473 debug() << "org-ctype = " << cType << endmsg;
474
475
476 if ( std::string( "Test" ) == cType.substr( 0, 4 ) ) { cType = std::string( "Test_Gen" ); }
477
478 debug() << "ctype = " << cType << endmsg;
479
480 std::string testfile = std::string( getenv( "CALIBMYSQLCNVROOT" ) ) + "/share/test.root";
481 TFile*
f1 =
new TFile( testfile.c_str(),
"read" );
482 unsigned int ser = 0;
483
484
485 int runfrm, runfrm1;
486 int runto, runto1;
487 std::string
flag =
"default";
489
490 MSG::Level msgLevel = MSG::DEBUG;
491
492 std::string physFmt = "UNK";
493 std::string fmtVersion;
494 std::string dataIdent;
495
496
497 SmartDataPtr<Event::EventHeader> evt( m_eventSvc, "/Event/EventHeader" );
498 int runNo = 0, FirstEvent = 0;
499 if ( !evt )
500 {
501 log << MSG::WARNING << "Unable to read the Event for TDS" << endmsg;
502
503 }
504 if ( evt )
505 {
506 if ( cType != "TofCal" && cType != "EstTofCal" && cType != "TofSim" && cType != "DedxSim" )
507 runNo = fabs( evt->runNumber() );
508 if ( cType == "TofCal" || cType == "EstTofCal" || cType == "TofSim" || cType == "DedxSim" )
509 runNo = evt->runNumber();
510 FirstEvent = evt->eventNumber();
511 }
512 DatabaseRecordVector res, res1;
513
514 StatusCode st1;
515
516
517 if ( ( cType == "TofCal" ) && ( m_bossver[3] == "default" ) )
518 {
519 std::string cType = "Tof";
520 if ( m_bossRelease == "default" )
521 {
522 log << MSG::FATAL << " Boss Release for TofCal not set!" << endmsg;
523 exit( 1 );
524 }
525 else
526 {
527 st1 =
getSftParVer( m_bossver[3], m_calPar[3], runfrm1, runto1,
runNo, m_bossRelease,
528 cType );
529
530 if ( st1.isFailure() )
531 {
532 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
533 return st1;
534 }
535
536 ret = m_meta->getReadTOFInfo( ser, &runfrm, &runto, m_calPar[3], res,
runNo,
537 m_bossver[3] );
538
539 }
540 }
541 else if ( ( cType == "TofCal" ) && ( m_bossver[3] != "default" ) )
542 {
543 m_flag[3] = "set";
545
546 ret =
547 m_meta->getReadTOFInfo( ser, &runfrm, &runto, m_calPar[3], res,
runNo, m_bossver[3] );
548
549 }
550
551
552 if ( ( cType == "EmcCal" ) && ( m_bossver[2] == "default" ) )
553 {
554 std::string cType = "Emc";
555 if ( m_bossRelease == "default" )
556 {
557 log << MSG::FATAL << " Boss Release for EmcCal not set!" << endmsg;
558 exit( 1 );
559 }
560 else
561 {
562
563 st1 =
getSftParVer( m_bossver[2], m_calPar[2], runfrm1, runto1,
runNo, m_bossRelease,
564 cType );
565
566
567 if ( st1.isFailure() )
568 {
569 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
570 return st1;
571 }
572 ret = m_meta->getReadEMCInfo( ser, &runfrm, &runto, m_calPar[2], res,
runNo,
573 m_bossver[2] );
574
575 }
576 }
577 else if ( ( cType == "EmcCal" ) && ( m_bossver[2] != "default" ) )
578 {
579 m_flag[2] = "set";
581
582 ret =
583 m_meta->getReadEMCInfo( ser, &runfrm, &runto, m_calPar[2], res,
runNo, m_bossver[2] );
584
585 }
586
587
588 if ( ( cType == "DedxCal" ) && ( m_bossver[1] == "default" ) )
589 {
590 std::string cType = "Dedx";
591 if ( m_bossRelease == "default" )
592 {
593 log << MSG::FATAL << " Boss Release for DedxCal not set!" << endmsg;
594 exit( 1 );
595 }
596 else
597 {
598 st1 =
getSftParVer( m_bossver[1], m_calPar[1], runfrm1, runto1,
runNo, m_bossRelease,
599 cType );
600
601 if ( st1.isFailure() )
602 {
603 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
604 return st1;
605 }
606 ret = m_meta->getReadDedxInfo( ser, &runfrm, &runto, m_calPar[1], res,
runNo,
607 m_bossver[1] );
608
609 }
610 }
611 else if ( ( cType == "DedxCal" ) && ( m_bossver[1] != "default" ) )
612 {
613 m_flag[1] = "set";
615
616 ret =
617 m_meta->getReadDedxInfo( ser, &runfrm, &runto, m_calPar[1], res,
runNo, m_bossver[1] );
618
619 }
620
621
622 if ( ( cType == "MdcCal" ) && ( m_bossver[0] == "default" ) )
623 {
624 std::string cType = "Mdc";
625
626 if ( m_bossRelease == "default" )
627 {
628 log << MSG::FATAL << " Boss Release for MdcCal not set!" << endmsg;
629 exit( 1 );
630 }
631 else
632 {
633 st1 =
getSftParVer( m_bossver[0], m_calPar[0], runfrm1, runto1,
runNo, m_bossRelease,
634 cType );
635
636 if ( st1.isFailure() )
637 {
638 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
639 return st1;
640 }
641 ret = m_meta->getReadMDCInfo( ser, &runfrm, &runto, m_calPar[0], res,
runNo,
642 m_bossver[0] );
643
644 }
645 }
646 else if ( ( cType == "MdcCal" ) && ( m_bossver[0] != "default" ) )
647 {
648 m_flag[0] = "set";
650
651 ret =
652 m_meta->getReadMDCInfo( ser, &runfrm, &runto, m_calPar[0], res,
runNo, m_bossver[0] );
653
654 }
655
656
657 if ( ( cType == "MucCal" ) && ( m_bossver[4] == "default" ) )
658 {
659 std::string cType = "Muc";
660 if ( m_bossRelease == "default" )
661 {
662 log << MSG::FATAL << " Boss Release for MucCal not set!" << endmsg;
663 exit( 1 );
664 }
665 else
666 {
667 st1 =
getSftParVer( m_bossver[4], m_calPar[4], runfrm1, runto1,
runNo, m_bossRelease,
668 cType );
669
670 if ( st1.isFailure() )
671 {
672 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
673 return st1;
674 }
675 ret = m_meta->getReadMUCInfo( ser, &runfrm, &runto, m_calPar[4], res,
runNo,
676 m_bossver[4] );
677
678 }
679 }
680 else if ( ( cType == "MucCal" ) && ( m_bossver[4] != "default" ) )
681 {
682 m_flag[4] = "set";
684
685 ret =
686 m_meta->getReadMUCInfo( ser, &runfrm, &runto, m_calPar[4], res,
runNo, m_bossver[4] );
687
688 }
689
690
691 if ( ( cType == "EsTimeCal" ) && ( m_bossver[5] == "default" ) )
692 {
693 std::string cType = "EsTime";
694 if ( m_bossRelease == "default" )
695 {
696 log << MSG::FATAL << " Boss Release for EsTimeCal not set!" << endmsg;
697 exit( 1 );
698 }
699 else
700 {
701 st1 =
getSftParVer( m_bossver[5], m_calPar[5], runfrm1, runto1,
runNo, m_bossRelease,
702 cType );
703
704 if ( st1.isFailure() )
705 {
706 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
707 return st1;
708 }
709 ret = m_meta->getReadEsTimeInfo( ser, &runfrm, &runto, m_calPar[5], res,
runNo,
710 m_bossver[5] );
711
712 }
713 }
714 else if ( ( cType == "EsTimeCal" ) && ( m_bossver[5] != "default" ) )
715 {
716 m_flag[5] = "set";
718
719 ret = m_meta->getReadEsTimeInfo( ser, &runfrm, &runto, m_calPar[5], res,
runNo,
720 m_bossver[5] );
721
722 }
723
724
725 if ( ( cType == "MdcAlign" ) && ( m_bossver[7] == "default" ) )
726 {
727 std::string cType = "MdcAlign";
728 if ( m_bossRelease == "default" )
729 {
730 log << MSG::FATAL << " Boss Release for MdcAlignCal not set!" << endmsg;
731 exit( 1 );
732 }
733 else
734 {
735 st1 =
getSftParVer( m_bossver[7], m_calPar[7], runfrm1, runto1,
runNo, m_bossRelease,
736 cType );
737
738 if ( st1.isFailure() )
739 {
740 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
741 return st1;
742 }
743 ret = m_meta->getReadMdcAlignInfo( ser, &runfrm, &runto, m_calPar[7], res,
runNo,
744 m_bossver[7] );
745
746 }
747 }
748 else if ( ( cType == "MdcAlign" ) && ( m_bossver[7] != "default" ) )
749 {
750 m_flag[7] = "set";
752
753 ret = m_meta->getReadMdcAlignInfo( ser, &runfrm, &runto, m_calPar[7], res,
runNo,
754 m_bossver[7] );
755
756 }
757
758
759 if ( ( cType == "TofQElec" ) && ( m_bossver[8] == "default" ) )
760 {
761 std::string cType = "TofQElec";
762 if ( m_bossRelease == "default" )
763 {
764 log << MSG::FATAL << " Boss Release for TofQElecCal not set!" << endmsg;
765 exit( 1 );
766 }
767 else
768 {
769
770 st1 =
getSftParVer( m_bossver[8], m_calPar[8], runfrm1, runto1,
runNo, m_bossRelease,
771 cType );
772
773 if ( st1.isFailure() )
774 {
775 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
776 return st1;
777 }
778 ret = m_meta->getReadTofQElecInfo( ser, &runfrm, &runto, m_calPar[8], res,
runNo,
779 m_bossver[8] );
780
781 }
782 }
783 else if ( ( cType == "TofQElec" ) && ( m_bossver[8] != "default" ) )
784 {
785 m_flag[8] = "set";
787
788 ret = m_meta->getReadTofQElecInfo( ser, &runfrm, &runto, m_calPar[8], res,
runNo,
789 m_bossver[8] );
790
791 }
792
793
794 if ( ( cType == "TofSim" ) && ( m_bossver[9] == "default" ) )
795 {
796 std::string cType = "TofSim";
797 if ( m_bossRelease == "default" )
798 {
799 log << MSG::FATAL << " Boss Release for TofSimCal not set!" << endmsg;
800 exit( 1 );
801 }
802 else
803 {
804 st1 =
getSftParVer( m_bossver[9], m_calPar[9], runfrm1, runto1,
runNo, m_bossRelease,
805 cType );
806
807 if ( st1.isFailure() )
808 {
809 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
810 return st1;
811 }
812 ret = m_meta->getReadTofSimInfo( ser, &runfrm, &runto, m_calPar[9], res,
runNo,
813 m_bossver[9] );
814
815 }
816 }
817 else if ( ( cType == "TofSim" ) && ( m_bossver[9] != "default" ) )
818 {
819 m_flag[9] = "set";
821
822 ret = m_meta->getReadTofSimInfo( ser, &runfrm, &runto, m_calPar[9], res,
runNo,
823 m_bossver[9] );
824
825 }
826
827
828 if ( ( cType == "DedxSim" ) && ( m_bossver[10] == "default" ) )
829 {
830 std::string cType = "DedxSim";
831 if ( m_bossRelease == "default" )
832 {
833 log << MSG::FATAL << " Boss Release for DedxSimCal not set!" << endmsg;
834 exit( 1 );
835 }
836 else
837 {
838 st1 =
getSftParVer( m_bossver[10], m_calPar[10], runfrm1, runto1,
runNo, m_bossRelease,
839 cType );
840
841 if ( st1.isFailure() )
842 {
843 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
844 return st1;
845 }
846 ret = m_meta->getReadDedxSimInfo( ser, &runfrm, &runto, m_calPar[10], res,
runNo,
847 m_bossver[10] );
848
849 }
850 }
851 else if ( ( cType == "DedxSim" ) && ( m_bossver[10] != "default" ) )
852 {
853 m_flag[10] = "set";
855
856 ret = m_meta->getReadDedxSimInfo( ser, &runfrm, &runto, m_calPar[10], res,
runNo,
857 m_bossver[10] );
858
859 }
860
861
862 if ( ( cType == "MdcDataConst" ) && ( m_bossver[11] == "default" ) )
863 {
864 std::string cType = "MdcData";
865 if ( m_bossRelease == "default" )
866 {
867 log << MSG::FATAL << " Boss Release for MdcDataConst not set!" << endmsg;
868 exit( 1 );
869 }
870 else
871 {
872 st1 =
getSftParVer( m_bossver[11], m_calPar[11], runfrm1, runto1,
runNo, m_bossRelease,
873 cType );
874
875 if ( st1.isFailure() )
876 {
877 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
878 return st1;
879 }
880 ret = m_meta->getReadMdcDataConstInfo( ser, &runfrm, &runto, m_calPar[11], res,
runNo,
881 m_bossver[11] );
882
883 }
884 }
885 else if ( ( cType == "MdcDataConst" ) && ( m_bossver[11] != "default" ) )
886 {
887 m_flag[11] = "set";
889
890 ret = m_meta->getReadMdcDataConstInfo( ser, &runfrm, &runto, m_calPar[11], res,
runNo,
891 m_bossver[11] );
892
893 }
894
895
896 if ( ( cType == "EstTofCal" ) && ( m_bossver[6] == "default" ) )
897 {
898 std::string cType = "EsTof";
899 if ( m_bossRelease == "default" )
900 {
901 log << MSG::FATAL << " Boss Release for EstTofCal not set!" << endmsg;
902 exit( 1 );
903 }
904 else
905 {
906 st1 =
getSftParVer( m_bossver[6], m_calPar[6], runfrm1, runto1,
runNo, m_bossRelease,
907 cType );
908
909 if ( st1.isFailure() )
910 {
911 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
912 return st1;
913 }
914 ret = m_meta->getReadEstTofInfo( ser, &runfrm, &runto, m_calPar[6], res,
runNo,
915 m_bossver[6] );
916
917 }
918 }
919 else if ( ( cType == "EstTofCal" ) && ( m_bossver[6] != "default" ) )
920 {
921 m_flag[6] = "set";
923
924 ret = m_meta->getReadEstTofInfo( ser, &runfrm, &runto, m_calPar[6], res,
runNo,
925 m_bossver[6] );
926
927 }
928
929
930 if ( ( cType == "InjSigInterval" ) && ( m_bossver[12] == "default" ) )
931 {
932 std::string cType = "InjSigInterval";
933 if ( m_bossRelease == "default" )
934 {
935 log << MSG::FATAL << " Boss Release for InjSigInterval not set!" << endmsg;
936 exit( 1 );
937 }
938 else
939 {
940 st1 =
getSftParVer( m_bossver[12], m_calPar[12], runfrm1, runto1,
runNo, m_bossRelease,
941 cType );
942
943 if ( st1.isFailure() )
944 {
945 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
946 return st1;
947 }
948 ret = m_meta->getReadInjSigIntervalInfo( ser, &runfrm, &runto, m_calPar[12], res,
runNo,
949 m_bossver[12] );
950
951 }
952 }
953 else if ( ( cType == "InjSigInterval" ) && ( m_bossver[12] != "default" ) )
954 {
955 m_flag[12] = "set";
957 ret = m_meta->getReadInjSigIntervalInfo( ser, &runfrm, &runto, m_calPar[12], res,
runNo,
958 m_bossver[12] );
959
960 }
961
962
963 if ( ( cType == "InjSigTime" ) && ( m_bossver[13] == "default" ) )
964 {
965 std::string cType = "InjSigTime";
966 if ( m_bossRelease == "default" )
967 {
968 log << MSG::FATAL << " Boss Release for InjSigTime not set!" << endmsg;
969 exit( 1 );
970 }
971 else
972 {
973 st1 =
getSftParVer( m_bossver[13], m_calPar[13], runfrm1, runto1,
runNo, m_bossRelease,
974 cType );
975
976 if ( st1.isFailure() )
977 {
978 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
979 return st1;
980 }
981 ret = m_meta->getReadInjSigTimeInfo( ser, &runfrm, &runto, m_calPar[13], res,
runNo,
982 m_bossver[13] );
983
984 }
985 }
986 else if ( ( cType == "InjSigTime" ) && ( m_bossver[13] != "default" ) )
987 {
988 m_flag[13] = "set";
990 ret = m_meta->getReadInjSigTimeInfo( ser, &runfrm, &runto, m_calPar[13], res,
runNo,
991 m_bossver[13] );
992
993 }
994
995
996 if ( ( cType == "OffEvtFilter" ) && ( m_bossver[14] == "default" ) )
997 {
998 std::string cType = "OffEvtFilter";
999 if ( m_bossRelease == "default" )
1000 {
1001 log << MSG::FATAL << " Boss Release for OffEvtFilter not set!" << endmsg;
1002 exit( 1 );
1003 }
1004 else
1005 {
1006 st1 =
getSftParVer( m_bossver[14], m_calPar[14], runfrm1, runto1,
runNo, m_bossRelease,
1007 cType );
1008
1009 if ( st1.isFailure() )
1010 {
1011 log << MSG::ERROR << " Unable to find DatabaseSvc " << endmsg;
1012 return st1;
1013 }
1014 ret = m_meta->getReadOffEvtFilterInfo( ser, &runfrm, &runto, m_calPar[14], res,
runNo,
1015 m_bossver[14] );
1016
1017 }
1018 }
1019 else if ( ( cType == "OffEvtFilter" ) && ( m_bossver[14] != "default" ) )
1020 {
1021 m_flag[14] = "set";
1023 ret = m_meta->getReadOffEvtFilterInfo( ser, &runfrm, &runto, m_calPar[14], res,
runNo,
1024 m_bossver[14] );
1025
1026 }
1027
1028
1029 if ( cType == "CorrectedETS" )
1030 {
1031 std::string cType = "CorrectedETS";
1032
1033 ret = m_meta->getReadCorrectedETSInfo( ser,
runNo, FirstEvent, m_calPar[15], res );
1034
1035 int _strlenRun = strlen( ( *res[0] )["Run"] ) + 1;
1036 char* _pStatus = new char[3];
1037 char* _pRunFrom = new char[_strlenRun];
1038 char* _pRunTo = new char[_strlenRun];
1039 memcpy( _pStatus, "OK", 3 );
1040 memcpy( _pRunFrom, ( *res[0] )["Run"], _strlenRun );
1041 memcpy( _pRunTo, ( *res[0] )["Run"], _strlenRun );
1042
1043 ( *res[0] )["Status"] = _pStatus;
1044 ( *res[0] )["RunFrom"] = _pRunFrom;
1045 ( *res[0] )["RunTo"] = _pRunTo;
1048 }
1049
1051 {
1052 log << MSG::ERROR << "no record in the database" << endmsg;
1053 exit( 1 );
1054 }
1055
1056 int sz = res.size();
1057
1058 DatabaseRecord* records1 = res[0];
1059 if ( m_dbStatus == "OK" )
1060 {
1061 if ( std::string( ( *records1 )["Status"] ) != "OK" )
1062 {
1063 log << MSG::FATAL << "Status of type " << cType << " is " << ( *records1 )["Status"]
1064 << " your setting is OK" << endmsg;
1065 exit( 1 );
1066 }
1067 }
1068
1069 log << MSG::DEBUG << "dataIdent is:" << dataIdent << endmsg;
1070 unsigned char storageType;
1071 physFmt = "TREE";
1073
1074
1075
1076
1077
1078 log << MSG::DEBUG << "Creating an address of type " << (int)storageType << " for class "
1079 << classID << endmsg;
1080
1081 IOpaqueAddress* tmpAddress;
1082 const std::string par[3] = { dataIdent, fullpath, fmtVersion };
1083
1084
1085 const unsigned long ipar[2] = { 0, 0 };
1086
1087
1088
1089
1090 tmpAddress = new TreeAddress( storageType, classID, *records1, ipar );
1091
1092
1093 sscanf( ( *records1 )["RunFrom"], "%d", &runfrm );
1094 sscanf( ( *records1 )["RunTo"], "%d", &runto );
1095 log << MSG::DEBUG << __LINE__ << " records @ runfrm is:" << ( *records1 )["RunFrom"]
1096 << " runto is:" << ( *records1 )["RunTo"] << " ser_no is:" << ser << endmsg;
1097
1098
1099 if (
flag ==
"default" )
1100 {
1101 if ( runfrm1 > runfrm ) { runfrm = runfrm1; }
1102 if ( runto1 < runto ) { runto = runto1; }
1103 }
1104 if (
flag ==
"set" ) {
flag =
"default"; }
1105 log << MSG::DEBUG << __LINE__ << " runfrm of max is:" << runfrm << " runto min is:" << runto
1106 << endmsg;
1107 TreeAddress* treeAddress = dynamic_cast<TreeAddress*>( tmpAddress );
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123 tmpAddress->addRef();
1124
1125
1126 tmpAddress->setRegistry( entry );
1127
1128
1129 sc = m_detPersSvc->createObj( tmpAddress, refpObject );
1130 tmpAddress->release();
1131 if ( !sc.isSuccess() )
1132 {
1133 log << msgLevel << "Persistency service could not create a new object" << endmsg;
1134 if ( m_crash )
1135 {
1136 log << msgLevel << std::endl
1137 << "++++CalibMySQLCnvSvc Exiting... " << std::endl
1138 << endmsg;
1139 exit( 1 );
1140 }
1141 return sc;
1142 }
1143
1145 log << MSG::DEBUG << "New object successfully created" << endmsg;
1146 return StatusCode::SUCCESS;
1149
1150 return StatusCode::SUCCESS;
1151}
static std::string getCalibType(const std::string &fullpath)
Return calibration type name, extracted from full path name in TCDS.
virtual StatusCode decodeDescription(const std::string &description, unsigned char &type)
Decode the string storage type to enumerated storage type.
StatusCode getSftParVer(std::string &SftVer, std::string &CalParVer, int &runfrm, int &runto, int RunNo, std::string BossRelease, std::string DataType)
void setRunFrom(int runFrom)
set run from
void setRunTo(int runTo)
set run to