The correct way to write out a subset of an existing collection, for example a subset of MCParticles or ReconstructedParticles is to flag the subset collection using the corresponding meta-data object in the event. This ensures that the subset is written as a set of references to the parent collection, rather than as a new set of objects.
List<MCParticle> particles = event.getMCParticles();
List<MCParticle> half = new ArrayList<MCParticle>();
int i = 0;
for (MCParticle particle : particles)
   if (i++ % 2 == 0) half.add(particle);