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*)&copy;
+        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*)&copy;
-        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*)&copy;
-        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*)&copy;
+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*)&copy;
-        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*)&copy;
-        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*)&copy;
-        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());