diff --git a/DDG4/src/Geant4ParticleHandler.cpp b/DDG4/src/Geant4ParticleHandler.cpp
index 82a4b702..779dd044 100644
--- a/DDG4/src/Geant4ParticleHandler.cpp
+++ b/DDG4/src/Geant4ParticleHandler.cpp
@@ -436,11 +436,8 @@ void Geant4ParticleHandler::rebaseSimulatedTracks(int )   {
   for(count = 0, iend=pm.end(), i=pm.begin(); i!=iend; ++i)  {
     Particle* p = (*i).second;
     orgParticles[p->id] = p->id;
-    finalParticles[p->id] = p;
+    finalParticles[p->id] = p->addRef();
     if ( p->id > count ) count = p->id;
-    if ( (p->reason&G4PARTICLE_PRIMARY) != G4PARTICLE_PRIMARY )  {
-      p->addRef();
-    }
   }
   // (1.1) Define the new particle mapping for the simulated tracks
   for(++count, iend=m_particleMap.end(), i=m_particleMap.begin(); i!=iend; ++i)  {
@@ -448,7 +445,8 @@ void Geant4ParticleHandler::rebaseSimulatedTracks(int )   {
     if ( (p->reason&G4PARTICLE_PRIMARY) != G4PARTICLE_PRIMARY )  {
       //if ( orgParticles.find(p->id) == orgParticles.end() )  {
       orgParticles[p->id] = count;
-      finalParticles[count] = p;
+      finalParticles[count]->release();
+      finalParticles[count] = p->addRef();
       p->id = count;
       ++count;
     }