lcsim-contrib/src/main/java/org/lcsim/contrib/Cassell/recon/Cheat
diff -N MakePerfectReconParticles.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ MakePerfectReconParticles.java 30 May 2011 19:32:30 -0000 1.1
@@ -0,0 +1,53 @@
+package org.lcsim.contrib.Cassell.recon.Cheat;
+import java.util.*;
+import org.lcsim.event.util.*;
+import org.lcsim.util.Driver;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.event.base.BaseReconstructedParticle;
+import org.lcsim.event.base.BaseParticleID;
+import hep.physics.vec.*;
+import hep.physics.particle.properties.ParticlePropertyManager;
+import hep.physics.particle.properties.ParticlePropertyProvider;
+public class MakePerfectReconParticles extends Driver
+{
+ String inname;
+ String outname;
+ double ctcut = 1.;
+ final ParticlePropertyProvider dPPP;
+ public MakePerfectReconParticles(String in, String out)
+ {
+ inname = in;
+ outname = out;
+ dPPP = ParticlePropertyManager.getParticlePropertyProvider();
+ }
+ public void setCosThetaCut(double x){ctcut = x;}
+ protected void process(EventHeader event)
+ {
+ List<MCParticle> inlist = event.get(MCParticle.class,inname);
+ List<ReconstructedParticle> outlist = new ArrayList<ReconstructedParticle>();
+ for(MCParticle p:inlist)
+ {
+ if (!ParticleTypeClassifier.isNeutrino(p.getPDGID()))
+ {
+ Hep3Vector mom = p.getMomentum();
+ double ct = Math.abs(mom.z())/mom.magnitude();
+ if(ct < ctcut)
+ {
+ outlist.add(makeRPFromMC(p));
+ }
+ }
+ }
+ event.put(outname,outlist);
+ }
+ public ReconstructedParticle makeRPFromMC(MCParticle p)
+ {
+ BaseReconstructedParticle rp = new BaseReconstructedParticle(p.getEnergy(),p.getMomentum());
+ rp.setMass(p.getMass());
+ rp.setCharge(p.getCharge());
+ rp.setReferencePoint(p.getOrigin());
+ rp.setParticleIdUsed(new BaseParticleID(dPPP.get(p.getType().getPDGID())));
+ return rp;
+ }
+}
\ No newline at end of file