diff --git a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h index 78a8ae4c7d2804e17873016cfc6a005e5df24b17..7f2afc21098d516683125327fd5d4bd992ce50f2 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h +++ b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV5.h @@ -124,6 +124,7 @@ public: private: + inline void setE(unsigned index, double E); virtual void resetPointers(); virtual bool setPointers(); void setNextEnergy(const uint16_t energy,const int16_t time, const int16_t quality, const uint32_t gain); @@ -363,48 +364,36 @@ return ( (ch&0x7) << 4) | ( (ch&0x38) >>2 ) | ((ch&0x40)>>6); } -inline void LArRodBlockPhysicsV5::setEx(double Ex){ +inline void LArRodBlockPhysicsV5::setE(unsigned index, double E){ - int32_t copy=(int32_t)Ex; + union { + int32_t i; + uint16_t us[2]; + } conv; + conv.i = static_cast<int32_t>(E); // Write as multiplication, not as left shift, since left-shifting // a negative number is undefined in C++. // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© + conv.i *= (1<<9); if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[0]=to_push[0]; - m_TimeQualityBlock[1]=to_push[1]; + m_TimeQualityBlock[index]=conv.us[0]; + m_TimeQualityBlock[index+1]=conv.us[1]; } } -inline void LArRodBlockPhysicsV5::setEy(double Ey){ +inline void LArRodBlockPhysicsV5::setEx(double Ex){ + setE (0, Ex); +} - int32_t copy=(int32_t)Ey; - // Write as multiplication, not as left shift, since left-shifting - // a negative number is undefined in C++. - // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[2]=to_push[0]; - m_TimeQualityBlock[3]=to_push[1]; - } + +inline void LArRodBlockPhysicsV5::setEy(double Ey){ + setE (2, Ey); } inline void LArRodBlockPhysicsV5::setEz(double Ez){ - - int32_t copy=(int32_t)Ez; - // Write as multiplication, not as left shift, since left-shifting - // a negative number is undefined in C++. - // Compiles to the same code on x86_64. - copy *= (1<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=6 ){ - m_TimeQualityBlock[4]=to_push[0]; - m_TimeQualityBlock[5]=to_push[1]; - } + setE (4, Ez); } diff --git a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h index e3cfcbf7f7a41716d20b3b09a848f136ebf9aa93..a7b65303757388af9d4e73247853ccdf17ef1970 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h +++ b/LArCalorimeter/LArCnv/LArByteStream/LArByteStream/LArRodBlockPhysicsV6.h @@ -127,6 +127,7 @@ public: private: + void setE(unsigned int index, double E); virtual void resetPointers(); virtual bool setPointers(); void setNextEnergy(const uint16_t energy,const int16_t time, const int16_t quality, const uint32_t gain); @@ -377,50 +378,40 @@ return ( (ch&0x7) << 4) | ( (ch&0x38) >>2 ) | ((ch&0x40)>>6); } -inline void LArRodBlockPhysicsV6::setEx(double Ex){ - - int32_t copy=(int32_t)Ex; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© +inline void LArRodBlockPhysicsV6::setE(unsigned index, double E){ + + union { + int32_t i; + uint16_t us[2]; + } conv; + conv.i = static_cast<int32_t>(E); + // Write as multiplication, not as left shift, since left-shifting + // a negative number is undefined in C++. + // Compiles to the same code on x86_64. + conv.i *= (1<<9); if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[0]=to_push[0]; - m_TimeQualityBlock[1]=to_push[1]; + m_TimeQualityBlock[index]=conv.us[0]; + m_TimeQualityBlock[index+1]=conv.us[1]; } } -inline void LArRodBlockPhysicsV6::setEy(double Ey){ +inline void LArRodBlockPhysicsV6::setEx(double Ex){ + setE (0, Ex); +} - int32_t copy=(int32_t)Ey; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[2]=to_push[0]; - m_TimeQualityBlock[3]=to_push[1]; - } + +inline void LArRodBlockPhysicsV6::setEy(double Ey){ + setE (2, Ey); } inline void LArRodBlockPhysicsV6::setEz(double Ez){ - - int32_t copy=(int32_t)Ez; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[4]=to_push[0]; - m_TimeQualityBlock[5]=to_push[1]; - } + setE (4, Ez); } inline void LArRodBlockPhysicsV6::setSumE(double SumE){ - - int32_t copy=(int32_t)SumE; - copy=(copy<<9); - uint16_t* to_push = (uint16_t*)© - if ( m_TimeQualityBlock.size()>=8 ){ - m_TimeQualityBlock[6]=to_push[0]; - m_TimeQualityBlock[7]=to_push[1]; - } + setE (6, SumE); } diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx index 3fd4b9b91cab10217bae8ae16f447c8914a92157..ba89a05cad51c0c359c5a925961293b8f5ba4bdf 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV0.cxx @@ -343,9 +343,7 @@ void LArRodBlockPhysicsV0::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* @@ -363,13 +361,11 @@ void LArRodBlockPhysicsV0::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it - m_mFebBlocks.clear(); + m_mFebBlocks.clear(); return; } diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx index 0b9af1965093ba0c0573917bc4ed73ad0c8f6ba4..54cc58ccd70dd7b7ce94178ce5cc17e3c50a98cb 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV1.cxx @@ -342,9 +342,7 @@ void LArRodBlockPhysicsV1::concatinateFEBs( ) FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -361,10 +359,8 @@ void LArRodBlockPhysicsV1::concatinateFEBs( ) m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx index 4148926d6ac3c1b337211d89a58414e9231692e5..f88440fd5ce31118d3233dd600488885d4aec325 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV2.cxx @@ -376,9 +376,7 @@ void LArRodBlockPhysicsV2::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -395,10 +393,8 @@ void LArRodBlockPhysicsV2::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx index fd663ffb786181082c11fc03746d95175fb7fbe3..c9b59409630718474765d945b46b110a86460ae2 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV3.cxx @@ -683,9 +683,7 @@ void LArRodBlockPhysicsV3::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb /* if (fullHeader) {//Add middle header @@ -702,10 +700,8 @@ void LArRodBlockPhysicsV3::concatinateFEBs() m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx index 4d0471297a0b1e9b075f84f159667f4987d058bc..11353fa4666fd94be6162d156687778a59e90a79 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV5.cxx @@ -1006,18 +1006,13 @@ void LArRodBlockPhysicsV5::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - m_pRODblock->reserve(m_pRODblock->size()+feb_it->second.size()); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx index 1b11e2db6b3eb5071a92a039637afdaaffd352b6..0494b23e9a0a3c3aaf4d49bf9a37cb63f8084c2a 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodBlockPhysicsV6.cxx @@ -1018,18 +1018,13 @@ void LArRodBlockPhysicsV6::concatinateFEBs() FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin(); FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end(); FEBMAPTYPE::const_iterator feb_it; - std::vector<uint32_t>::const_iterator data_it; - std::vector<uint32_t>::const_iterator data_it_e; - for (feb_it=feb_it_b;feb_it!=feb_it_e;feb_it++) { + for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) { if (feb_it!=feb_it_b) //Not first Feb m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize); //Add feb data to rod data block - data_it=feb_it->second.begin(); - data_it_e=feb_it->second.end(); - m_pRODblock->reserve(m_pRODblock->size()+feb_it->second.size()); - for (;data_it!=data_it_e;data_it++) - m_pRODblock->push_back(*data_it); + m_pRODblock->insert (m_pRODblock->end(), + feb_it->second.begin(), feb_it->second.end()); } //end for feb_it m_mFebBlocks.clear(); diff --git a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx index 08c3ab0d1ed52fa048fd1271a98bd67ddb7ad252..20eeeea42a51c5afe7460826bc0d6938ec3ab23a 100644 --- a/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx +++ b/LArCalorimeter/LArCnv/LArByteStream/src/LArRodEncoder.cxx @@ -135,7 +135,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C // The sort alorithm for the vectors inside the data object of the map fails // when I use const_iterator at this point. Don't ask me why //std::cout << "Have " << m_mFEB.size() << " FEBs in this ROD" << std::endl; - for(;it!=it_end;it++) { + for(;it!=it_end;++it) { //std::cout << "Setting values for feb # " << febcounter << " ID=" << it->first << std::endl; m_BlStruct->initializeFEB(it->first); // Set FEB id //std::cout << "Setting Energy" << std::endl; @@ -143,8 +143,6 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C if (m_BlStruct->canSetEnergy() && it->second.vLArRC.size()>0) { //int j=0; // m_BlStruct->sortDataVector(it->second.vLArRC); - std::vector<const LArRawChannel*>::const_iterator chit=it->second.vLArRC.begin(); - std::vector<const LArRawChannel*>::const_iterator chit_e=it->second.vLArRC.end(); // compute Ex, Ey for this FEB : initialisation phase { @@ -154,10 +152,9 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C double SumE=0; Identifier myofflineID; - for (;chit!=chit_e;chit++) { - if ( ((LArRawChannel*)(*chit))!=0 ){ - int cId = m_onlineHelper->channel((*chit)->hardwareID()); - const LArRawChannel *theChannel = *chit; + for (const LArRawChannel *theChannel : it->second.vLArRC) { + if ( theChannel != nullptr ){ + int cId = m_onlineHelper->channel(theChannel->hardwareID()); int e=theChannel->energy(); uint32_t quality = theChannel->quality(); @@ -191,15 +188,10 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C if (m_BlStruct->canIncludeRawData() && it->second.vLArDigit.size()>0) { // Order channels according to ROD numbering m_BlStruct->sortDataVector(it->second.vLArDigit); - std::vector<const LArDigit*>::const_iterator digit_it = it->second.vLArDigit.begin(); - std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigit.end(); - if(digit_it!=digit_it_end) { //Container not empty - //m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { - int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); - m_BlStruct->setRawData(cId, (*digit_it)->samples(), (*digit_it)->gain()); - } // end of for digits - }// end container not empty + for (const LArDigit* digit : it->second.vLArDigit) { + int cId = m_onlineHelper->channel(digit->hardwareID()); + m_BlStruct->setRawData(cId, digit->samples(), digit->gain()); + } // end of for digits } // End of can Include Raw Data check //std::cout << "Setting Raw Data" << std::endl; // ************** Raw Data Block *********** @@ -210,7 +202,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigit.end(); if(digit_it!=digit_it_end) { //Container not empty m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawData(cId, (*digit_it)->samples(), (*digit_it)->gain()); @@ -228,7 +220,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C std::vector<const LArDigit*>::const_iterator digit_it_end=it->second.vLArDigitFixed[i].end(); if(digit_it!=digit_it_end) {//Container not empty m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawDataFixed(cId, (*digit_it)->samples(), (*digit_it)->gain()); @@ -248,7 +240,7 @@ void LArRodEncoder::fillROD(std::vector<uint32_t>& v, MsgStream& logstr, const C m_BlStruct->setNumberOfSamples((*digit_it)->samples().size()); m_BlStruct->setDelay((*digit_it)->delay()); m_BlStruct->setDAC((*digit_it)->DAC()); - for (;digit_it!=digit_it_end;digit_it++) { + for (;digit_it!=digit_it_end;++digit_it) { int cId = m_onlineHelper->channel((*digit_it)->hardwareID()); //cId = m_BlStruct->FebToRodChannel(cId); m_BlStruct->setRawDataFixed(cId, (*digit_it)->samples(), (*digit_it)->gain());