diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeCalibHitsTool.cxx b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeCalibHitsTool.cxx
index d638d001b312d5c80521d86bc3528dad0d6f0e7a..252802098971e6f2aa9f5a3fcf13c7e37933277a 100644
--- a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeCalibHitsTool.cxx
+++ b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeCalibHitsTool.cxx
@@ -13,6 +13,7 @@ MergeCalibHitsTool::MergeCalibHitsTool(const std::string& type,
                                        const std::string& name,
                                        const IInterface* parent) :
   PileUpToolBase(type, name, parent),
+  m_firstSubEvent(true),
   m_pMergeSvc("PileUpMergeSvc", name),
   m_oldFormat(false)
 {
diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeGenericMuonSimHitCollTool.cxx b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeGenericMuonSimHitCollTool.cxx
index 0f97ff8dfe7e6a71cfd51c5cc8591f6779db3025..69def1092c657b3e8f602fad493d0883af53e4e7 100644
--- a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeGenericMuonSimHitCollTool.cxx
+++ b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeGenericMuonSimHitCollTool.cxx
@@ -134,8 +134,7 @@ void MergeGenericMuonSimHitCollTool::processGenericMuonSimHitColl(const GenericM
 {
   for (GenericMuonSimHitCollection::const_iterator simhitIter = inputCollection->begin(); simhitIter != inputCollection->end(); ++simhitIter) {
     const int idHit = simhitIter->GenericId();
-    GenericMuonSimHit* copyHit = new GenericMuonSimHit(idHit, simhitIter->globalTime()+timeOfBCID, simhitIter->globalpreTime()+timeOfBCID, simhitIter->globalPosition(), simhitIter->localPosition(), simhitIter->globalPrePosition(),simhitIter->localPrePosition(), simhitIter->particleEncoding(),simhitIter->kineticEnergy(), simhitIter->globalDirection(),simhitIter->depositEnergy(), simhitIter->StepLength(),simhitIter->trackNumber() );
-    outputCollection->push_back(*copyHit);
+    outputCollection->Emplace(idHit, simhitIter->globalTime()+timeOfBCID, simhitIter->globalpreTime()+timeOfBCID, simhitIter->globalPosition(), simhitIter->localPosition(), simhitIter->globalPrePosition(),simhitIter->localPrePosition(), simhitIter->particleEncoding(),simhitIter->kineticEnergy(), simhitIter->globalDirection(),simhitIter->depositEnergy(), simhitIter->StepLength(),simhitIter->trackNumber() );
   }
   return;
 }
diff --git a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTruthJetsTool.cxx b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTruthJetsTool.cxx
index f95689a1a4229d22e0b38cf79a377c245b7e73da..fe3b97150952bd40cd5cd1d0785413a37002732e 100644
--- a/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTruthJetsTool.cxx
+++ b/Simulation/G4Utilities/MCTruthSimAlgs/src/MergeTruthJetsTool.cxx
@@ -25,6 +25,7 @@ MergeTruthJetsTool::MergeTruthJetsTool(const std::string& type,
   , m_outOfTimePtCut(15.0*Gaudi::Units::GeV)
   , m_activateFilter(false)
   , m_includeSignalJets(false)
+  , m_first_event(true)
   , m_signal_max_pT(-1.)
   , m_pileup_max_pT(-1.)
 {
@@ -48,6 +49,7 @@ StatusCode MergeTruthJetsTool::prepareEvent(unsigned int nInputEvents)
 {
   ATH_MSG_VERBOSE ( "prepareEvent()" );
   ATH_MSG_DEBUG ( "prepareEvent: there are " << nInputEvents << " subevents in this event." );
+  m_first_event = true;
   m_inTimeOutputJetContainer = new xAOD::JetContainer();
   m_inTimeOutputJetContainer->setStore(new xAOD::JetAuxContainer);
   m_outOfTimeOutputJetContainer = new xAOD::JetContainer();
@@ -192,6 +194,7 @@ StatusCode MergeTruthJetsTool::processAllSubEvents()
         }
     }
 
+  m_first_event = true;
   m_inTimeOutputJetContainer = new xAOD::JetContainer();
   m_inTimeOutputJetContainer->setStore(new xAOD::JetAuxContainer);
   m_outOfTimeOutputJetContainer = new xAOD::JetContainer();