11                                   MsgStream & 
log)
 const 
   21   unsigned int autocorrIndex    = 0;
 
   23   unsigned int ifebWithData = 0; 
 
   25   for (
unsigned int i = 0; 
i < nfebids; ++
i, ++subsetIt){
 
   26     unsigned int febid = subsetIt->first;
 
   27     bool hasSparseData       = 
false;
 
   28     unsigned int chansSet    = 0;
 
   29     unsigned int chansOffset = 0;
 
   41     for (
unsigned int j = 0; j < nChannelsPerFeb; ++j){
 
   43       bool copyChannel = 
true;
 
   47         if (!(chansSet & (1 << (j - chansOffset)))) {
 
   51         if (j%32 == 31 && j < nChannelsPerFeb-2) {
 
   63         if (autocorrIndex + nAutoCorrs > persObj->
m_vAutoCorr.size()) {
 
   65               << 
"LArAutoCorrSubsetCnv_p1::persToTrans - autocorr index too large: autocorr/size "  
   66               << autocorrIndex << 
" " << persObj->
m_vAutoCorr.size() << 
" "  
   71         subsetIt->second[j].m_vAutoCorr.assign
 
   73            persObj->
m_vAutoCorr.begin() + autocorrIndex + nAutoCorrs);
 
   74         autocorrIndex += nAutoCorrs;
 
   96   for (
unsigned int i = 0; 
i < ncorrs; ++
i){
 
   98     if (autocorrIndex + nAutoCorrs > persObj->
m_vAutoCorr.size()) {
 
  100           << 
"LArAutoCorrSubsetCnv_p1::persToTrans - autocorr index too large: autocorr/size "  
  101           << autocorrIndex << 
" " << persObj->
m_vAutoCorr.size() << 
" "  
  108     corrs[
i].second.m_vAutoCorr.assign
 
  110        persObj->
m_vAutoCorr.begin() + autocorrIndex + nAutoCorrs);
 
  111     autocorrIndex += nAutoCorrs;
 
  123                                   MsgStream &
log)
 const 
  157     unsigned int nsubsetsNotEmpty = 0;
 
  159     unsigned int nchans           = 0;
 
  160     unsigned int nAutoCorrs       = 0;
 
  162     bool foundNAutoCorrs          = 
false;
 
  163     std::vector<unsigned int> febsWithSparseData;
 
  167     const auto subsetEnd = transObj->
subsetEnd();
 
  169          subsetIt != subsetEnd;
 
  172         unsigned int nfebChans = subsetIt->second.size();
 
  174         if (nfebChans != 0 && nfebChans != nChannelsPerFeb) {
 
  176                 << 
"LArAutoCorrSubsetCnv_p1::transToPers - found incorrect number of channels per feb: " << nfebChans
 
  180         if (nfebChans) ++nsubsetsNotEmpty; 
 
  183         bool subsetIsSparse = 
false;
 
  184         for (
unsigned int j = 0; j < nfebChans; ++j) {
 
  187                 if (!subsetIsSparse) {
 
  189                     subsetIsSparse = 
true;
 
  190                     febsWithSparseData.push_back(subsetIt->first);
 
  195                 if (!foundNAutoCorrs) {
 
  198                     foundNAutoCorrs   = 
true;
 
  203     if (!foundNAutoCorrs && ncorrs>0) {
 
  215     unsigned int nAutoCorrsTot     = (nchans + ncorrs)*nAutoCorrs;
 
  222     if (febsWithSparseData.size())
 
  226     unsigned int isparse = 0;
 
  228          subsetIt != subsetEnd;
 
  231         unsigned int nfebChans = subsetIt->second.size();
 
  234         if (nfebChans == 0) 
continue;
 
  236         unsigned int febid = subsetIt->first;
 
  240         bool isSparse = 
false;
 
  241         if (isparse < febsWithSparseData.size() && 
 
  242             febsWithSparseData[isparse] == febid) {
 
  251         unsigned int chansSet    = 0;
 
  252         unsigned int chansOffset = 0;
 
  253         for (
unsigned int j = 0; j < nfebChans; ++j){
 
  255             bool saveAutoCorrs = 
true;
 
  259                 if (subsetIt->second[j].m_vAutoCorr.size() > 0) {
 
  262                     assert (j >= chansOffset && (j - chansOffset) <= 31);
 
  263                     chansSet |= (1 << (j - chansOffset));
 
  266                     saveAutoCorrs = 
false;
 
  269                 if  (j == (chansOffset + 31) || j == nfebChans - 1) {
 
  278                 for (
unsigned int k = 0; 
k < nAutoCorrs; ++
k){
 
  279           if (
k>=subsetIt->second[j].m_vAutoCorr.size()) {
 
  284             persObj->
m_vAutoCorr.push_back(subsetIt->second[j].m_vAutoCorr[
k]);
 
  287           log << MSG::ERROR << 
"Feb 0x" << std::hex << febid << std::dec << 
" channel " << j <<
": AutoCorr object too small. Expected "  
  288               << nAutoCorrs << 
" entries. Padded with 0.0" << 
endmsg;
 
  310         for (
unsigned int k = 0; 
k < nAutoCorrs; ++
k){
 
  311       if (
k>=corrIt->second.m_vAutoCorr.size()) {
 
  316             persObj->
m_vAutoCorr.push_back(corrIt->second.m_vAutoCorr[
k]);
 
  319       log << MSG::ERROR << 
"Correction (channel 0x" << std::hex << corrIt->first << std::dec <<  
 
  320         "): AutoCorr object too small. Expected " << nAutoCorrs << 
" entries. Padded with 0.0" << 
endmsg;