419 return StatusCode::FAILURE;
425 if (!m_readCondObjs) {
426 if (m_writeCondObjs) {
428 for (
unsigned int i = 0; i < m_rampCache.size(); ++i) {
429 ATH_MSG_DEBUG (
"setPdata for chan, chan id, gain " << i <<
" "
430 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) <<
" "
431 << m_rampCache[i].m_gain <<
" " );
435 ramp.
m_vRamp = m_rampCache[i].m_vRamp;
437 ramps_rw->
setPdata(m_rampCache[i].m_channelID,
439 m_rampCache[i].m_gain);
443 ATH_MSG_DEBUG (
"Finished conditions, now write corrections " );
445 if (m_writeCorrections) {
446 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
448 ATH_MSG_DEBUG (
"insert corr for chan, chan id, gain " << i <<
" "
449 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
450 << m_rampCorrections[i].m_gain <<
" " );
454 ramp.
m_vRamp = m_rampCorrections[i].m_vRamp;
458 m_rampCorrections[i].m_gain) );
466 CONTAINER::chan_const_iterator chanIt1 = ramps->
chan_begin();
467 CONTAINER::chan_const_iterator endChan1 = ramps->
chan_end ();
468 for (
unsigned int i = 0; chanIt1 != endChan1; ++chanIt1, ++i) {
469 const CONTAINER::Subset* subset = ramps->
at(i);
471 <<
" channel " << subset->channel()
472 <<
" gain " << subset->gain()
473 <<
" groupingType " << subset->groupingType()
474 <<
" subsetSize " << subset->subsetSize()
475 <<
" correctionVecSize " << subset->correctionVecSize() );
476 if ((*chanIt1) != subset->channel()) {
477 ATH_MSG_ERROR (
"Channel numbers not the same for MultChanColl and subset: "
479 <<
" multchan " << (*chanIt1)
480 <<
" subset " << subset->channel() );
488 << ramps->
size() <<
" " );
492 for (
unsigned int i = 0; i < m_rampCache.size(); ++i) {
495 m_rampCache[i].m_gain);
496 unsigned int coolChannel = ramps->
coolChannel(m_rampCache[i].m_channelID,
497 m_rampCache[i].m_gain);
501 << coolChannel <<
" "
502 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) <<
" "
503 << m_rampCache[i].m_gain <<
" "
512 << coolChannel <<
" "
513 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) <<
" "
514 << m_rampCache[i].m_gain <<
" "
515 << m_rampCache[i].m_vRamp[0] <<
" "
516 << m_rampCache[i].m_vRamp[1] <<
" "
517 << m_rampCache[i].m_vRamp[2] <<
" "
518 <<
" Compare = " << (rampP == m_rampCache[i]) );
519 if (rampP != m_rampCache[i] && !rampP.
isEmpty()) {
527 ATH_MSG_DEBUG (
"Compare LArRampMC with cache using iterator " );
528 CONTAINER::ConstConditionsMapIterator rampIt;
529 CONTAINER::ConstConditionsMapIterator rampEnd;
530 for (
unsigned int gain = 0; gain < 3; ++gain) {
531 rampIt = ramps->
begin(gain);
532 rampEnd = ramps->
end (gain);
533 for (
unsigned int i = 0; i < m_rampCache.size(); ++i) {
535 if (gain != m_rampCache[i].m_gain)
continue;
538 while(rampIt != rampEnd) {
540 rampId = rampIt.channelId();
544 unsigned int coolChannel = ramps->
coolChannel(m_rampCache[i].m_channelID,
545 m_rampCache[i].m_gain);
548 << coolChannel <<
" "
549 << m_onlineID->show_to_string(rampId) <<
" "
550 << m_rampCache[i].m_gain <<
" "
559 << coolChannel <<
" "
560 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) <<
" "
561 << m_rampCache[i].m_gain <<
" "
562 << m_rampCache[i].m_vRamp[0] <<
" "
563 << m_rampCache[i].m_vRamp[1] <<
" "
564 << m_rampCache[i].m_vRamp[2] <<
" "
565 <<
" Compare = " << (rampP == m_rampCache[i]) );
566 if (rampP != m_rampCache[i] && !rampP.
isEmpty()) {
577 ATH_MSG_DEBUG (
"Compare LArRampMC with cache using iterator and febid selection " );
580 std::vector<unsigned int> ids1[3];
581 std::vector<unsigned int> ids2[3];
582 std::vector<unsigned int> ids3[3];
583 for (
unsigned int i = 0; i < m_rampCache.size(); ++i) {
584 if (i < m_rampCache.size()/3) {
585 unsigned int id = m_onlineID->feb_Id(m_rampCache[i].m_channelID).get_identifier32().get_compact();
586 ids1[m_rampCache[i].m_gain].push_back(
id);
588 else if (i < 2*m_rampCache.size()/3) {
589 unsigned int id = m_onlineID->feb_Id(m_rampCache[i].m_channelID).get_identifier32().get_compact();
590 ids2[m_rampCache[i].m_gain].push_back(
id);
593 unsigned int id = m_onlineID->feb_Id(m_rampCache[i].m_channelID).get_identifier32().get_compact();
594 ids3[m_rampCache[i].m_gain].push_back(
id);
598 for (
unsigned int gain = 0; gain < 3; ++gain) {
599 for (
unsigned int febSet = 0; febSet < 3; ++febSet) {
601 unsigned int iend = m_rampCache.size()/3;
602 if (febSet < m_rampCache.size()/3) {
603 rampIt = ramps->
begin(gain, ids1[gain]);
604 msg() << MSG::DEBUG <<
"FebID vec 1 : ";
605 for (
unsigned int i = 0; i < ids1[gain].size(); ++i) {
606 msg() << MSG::DEBUG << m_onlineID->show_to_string(
HWIdentifier(ids1[gain][i]))
611 else if (febSet < 2*m_rampCache.size()/3) {
612 rampIt = ramps->
begin(gain, ids2[gain]);
613 i0 = m_rampCache.size()/3 + 1;
614 iend = 2*m_rampCache.size()/3;
615 msg() << MSG::DEBUG <<
"FebID vec 2 : ";
616 for (
unsigned int i = 0; i < ids2[gain].size(); ++i) {
617 msg() << MSG::DEBUG << m_onlineID->show_to_string(
HWIdentifier(ids2[gain][i]))
623 rampIt = ramps->
begin(gain, ids3[gain]);
624 i0 = 2*m_rampCache.size()/3 + 1;
625 iend = m_rampCache.size();
626 msg() << MSG::DEBUG <<
"FebID vec 3 : ";
627 for (
unsigned int i = 0; i < ids3[gain].size(); ++i) {
628 msg() << MSG::DEBUG << m_onlineID->show_to_string(
HWIdentifier(ids3[gain][i]))
634 rampEnd = ramps->
end (gain);
636 for (
unsigned int i = i0; i < iend; ++i) {
638 if (gain != m_rampCache[i].m_gain)
continue;
643 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) );
646 while(rampIt != rampEnd) {
648 rampId = rampIt.channelId();
652 unsigned int coolChannel = ramps->
coolChannel(m_rampCache[i].m_channelID,
653 m_rampCache[i].m_gain);
656 << coolChannel <<
" "
657 << m_onlineID->show_to_string(rampId) <<
" "
658 << m_rampCache[i].m_gain <<
" "
667 << coolChannel <<
" "
668 << m_onlineID->show_to_string(m_rampCache[i].m_channelID) <<
" "
669 << m_rampCache[i].m_gain <<
" "
670 << m_rampCache[i].m_vRamp[0] <<
" "
671 << m_rampCache[i].m_vRamp[1] <<
" "
672 << m_rampCache[i].m_vRamp[2] <<
" "
673 <<
" Compare = " << (rampP == m_rampCache[i]) );
674 if (rampP != m_rampCache[i] && !rampP.
isEmpty()) {
684 if (m_applyCorrections) {
685 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
687 m_rampCorrections[i].m_gain);
688 unsigned int coolChannel = ramps->
coolChannel(m_rampCorrections[i].m_channelID,
689 m_rampCorrections[i].m_gain);
692 << coolChannel <<
" "
693 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
694 << m_rampCorrections[i].m_gain <<
" "
703 ATH_MSG_DEBUG (
"Corrections: cool chan, chan id, gain, ramps "
704 << coolChannel <<
" "
705 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
706 << m_rampCorrections[i].m_gain <<
" "
707 << m_rampCorrections[i].m_vRamp[0] <<
" "
708 << m_rampCorrections[i].m_vRamp[1] <<
" "
709 << m_rampCorrections[i].m_vRamp[2] <<
" "
713 ATH_MSG_ERROR (
"Before correction: LArRampMC and correction DO NOT compare - should have opposite signs for rampes" );
719 ATH_MSG_DEBUG (
"Apply corrections and compare LArRampMC with corrections " );
723 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
725 m_rampCorrections[i].m_gain);
726 unsigned int coolChannel = ramps->
coolChannel(m_rampCorrections[i].m_channelID,
727 m_rampCorrections[i].m_gain);
730 << coolChannel <<
" "
731 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
732 << m_rampCorrections[i].m_gain <<
" "
740 ATH_MSG_DEBUG (
"Corrections: cool chan, chan id, gain, ramps "
741 << coolChannel <<
" "
742 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
743 << m_rampCorrections[i].m_gain <<
" "
744 << m_rampCorrections[i].m_vRamp[0] <<
" "
745 << m_rampCorrections[i].m_vRamp[1] <<
" "
746 << m_rampCorrections[i].m_vRamp[2] <<
" "
747 <<
" Compare = " << (rampP == m_rampCorrections[i]) );
748 if (rampP != m_rampCorrections[i] && !rampP.
isEmpty()) {
749 ATH_MSG_ERROR (
"After correction: LArRampMC and correction NOT equal" );
754 ATH_MSG_DEBUG (
"Undo corrections and compare LArRampMC with corrections " );
758 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
760 m_rampCorrections[i].m_gain);
761 unsigned int coolChannel = ramps->
coolChannel(m_rampCorrections[i].m_channelID,
762 m_rampCorrections[i].m_gain);
765 << coolChannel <<
" "
766 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
767 << m_rampCorrections[i].m_gain <<
" "
775 ATH_MSG_DEBUG (
"Corrections: cool chan, chan id, gain, ramps "
776 << coolChannel <<
" "
777 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
778 << m_rampCorrections[i].m_gain <<
" "
779 << m_rampCorrections[i].m_vRamp[0] <<
" "
780 << m_rampCorrections[i].m_vRamp[1] <<
" "
781 << m_rampCorrections[i].m_vRamp[2] <<
" "
785 ATH_MSG_ERROR (
"After undo: LArRampMC and correction DO NOT compare - should have opposite signs for ramps" );
790 ATH_MSG_DEBUG (
"2nd Apply corrections and compare LArRampMC with corrections " );
794 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
796 m_rampCorrections[i].m_gain);
797 unsigned int coolChannel = ramps->
coolChannel(m_rampCorrections[i].m_channelID,
798 m_rampCorrections[i].m_gain);
801 << coolChannel <<
" "
802 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
803 << m_rampCorrections[i].m_gain <<
" "
811 ATH_MSG_DEBUG (
"Corrections: cool chan, chan id, gain, ramps "
812 << coolChannel <<
" "
813 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
814 << m_rampCorrections[i].m_gain <<
" "
815 << m_rampCorrections[i].m_vRamp[0] <<
" "
816 << m_rampCorrections[i].m_vRamp[1] <<
" "
817 << m_rampCorrections[i].m_vRamp[2] <<
" "
818 <<
" Compare = " << (rampP == m_rampCorrections[i]) );
819 if (rampP != m_rampCorrections[i] && !rampP.
isEmpty()) {
820 ATH_MSG_ERROR (
"After correction: LArRampMC and correction NOT equal" );
825 ATH_MSG_DEBUG (
"2nd Undo corrections and compare LArRampMC with corrections " );
829 for (
unsigned int i = 0; i < m_rampCorrections.size(); ++i) {
831 m_rampCorrections[i].m_gain);
832 unsigned int coolChannel = ramps->
coolChannel(m_rampCorrections[i].m_channelID,
833 m_rampCorrections[i].m_gain);
836 << coolChannel <<
" "
837 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
838 << m_rampCorrections[i].m_gain <<
" "
846 ATH_MSG_DEBUG (
"Corrections: cool chan, chan id, gain, ramps "
847 << coolChannel <<
" "
848 << m_onlineID->show_to_string(m_rampCorrections[i].m_channelID) <<
" "
849 << m_rampCorrections[i].m_gain <<
" "
850 << m_rampCorrections[i].m_vRamp[0] <<
" "
851 << m_rampCorrections[i].m_vRamp[1] <<
" "
852 << m_rampCorrections[i].m_vRamp[2] <<
" "
856 ATH_MSG_ERROR (
"After undo: LArRampMC and correction DO NOT compare - should have opposite signs for ramps" );
971 std::set<unsigned int> channelNumbers;
972 CONTAINER::chan_const_iterator chanIt = ramps->
chan_begin();
973 CONTAINER::chan_const_iterator endChan = ramps->
chan_end ();
974 for (
unsigned int i = 0; chanIt != endChan; ++chanIt, ++i) {
975 const CONTAINER::Subset* subset = ramps->
at(i);
977 <<
" channel " << subset->channel()
978 <<
" gain " << subset->gain()
979 <<
" groupingType " << subset->groupingType()
980 <<
" subsetSize " << subset->subsetSize()
981 <<
" correctionVecSize " << subset->correctionVecSize() );
982 if ((*chanIt) != subset->channel()) {
983 ATH_MSG_ERROR (
"Channel numbers not the same for MultChanColl and subset: "
985 <<
" multchan " << (*chanIt)
986 <<
" subset " << subset->channel() );
989 if (!(channelNumbers.insert(subset->channel()).second)) {
991 <<
" channel " << subset->channel() );
995 ATH_MSG_DEBUG (
"Channel numbers size " << channelNumbers.size()
996 <<
" ramps size " << ramps->
chan_size() );
1000 return (StatusCode::FAILURE);
1004 return StatusCode::SUCCESS;