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.
subset.java
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); } event.put("SomeParticles",half); event.getMetaData(half).setSubset(true);