lcsim/src/org/lcsim/util
diff -u -r1.3 -r1.4
--- OverlayDriver.java 28 Feb 2011 23:49:24 -0000 1.3
+++ OverlayDriver.java 12 Mar 2011 12:13:18 -0000 1.4
@@ -1,7 +1,5 @@
package org.lcsim.util;
-import hep.physics.particle.properties.ParticlePropertyManager;
-import hep.physics.particle.properties.ParticleType;
import hep.physics.vec.SpacePoint;
import java.io.File;
@@ -23,13 +21,13 @@
import org.lcsim.event.SimCalorimeterHit;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.event.EventHeader.LCMetaData;
-import org.lcsim.event.base.BaseMCParticle;
import org.lcsim.event.base.BaseSimCalorimeterHit;
import org.lcsim.event.base.BaseSimTrackerHit;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
import org.lcsim.util.lcio.LCIOConstants;
import org.lcsim.util.lcio.LCIOUtil;
+import org.lcsim.util.lcio.SIOMCParticle;
import org.lcsim.util.loop.LCIOEventSource;
/**
@@ -388,25 +386,10 @@
List movedCollection;
if (collectionType.isAssignableFrom(MCParticle.class)) {
// MCParticles
- movedCollection = new ArrayList<MCParticle>();
-
- // need a mep to store relations between old and new mc particles to resolve parent daughter relations
- Map<MCParticle,BaseMCParticle> oldToNewMcMap = new HashMap<MCParticle, BaseMCParticle>();
-
- for (MCParticle mcP : event.get(MCParticle.class, collectionName)) {
- ParticleType mcpType = ParticlePropertyManager.getParticlePropertyProvider().get(mcP.getPDGID());
- BaseMCParticle movedMcP = new BaseMCParticle(mcP.getOrigin(), mcP.asFourVector(),
- mcpType, mcP.getGeneratorStatus(), mcP.getProductionTime() + time);
- movedMcP.setSimulatorStatus(mcP.getSimulatorStatus());
- movedMcP.setMass(mcP.getMass());
- movedMcP.setEndPoint(mcP.getEndPoint());
- oldToNewMcMap.put(mcP, movedMcP);
- movedCollection.add(movedMcP);
- }
- for (MCParticle oldMc : oldToNewMcMap.keySet()) {
- for (MCParticle daughter : oldMc.getDaughters()) {
- oldToNewMcMap.get(oldMc).addDaughter(oldToNewMcMap.get(daughter));
- }
+ // don't create new list, just move existing particles
+ movedCollection = event.get(MCParticle.class, collectionName);
+ for (MCParticle mcP : (List<MCParticle>)movedCollection) {
+ ((SIOMCParticle) mcP).setTime(mcP.getProductionTime()+time);
}
} else if (collectionType.isAssignableFrom(SimTrackerHit.class)) {
// SimTrackerHits