lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -N OutputPPRRecon.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ OutputPPRRecon.java 29 Feb 2008 17:19:44 -0000 1.1
@@ -0,0 +1,66 @@
+/*
+ * OutputPPRRecon.java
+ *
+ * Created on February 5, 2008, 11:20 AM
+ *
+ * To change this template, choose Tools | Options and locate the template under
+ * the Source Creation and Management node. Right-click the template and choose
+ * Open. You can then make changes to the template in the Source Editor.
+ */
+
+package org.lcsim.contrib.Cassell.recon.Cheat;
+import org.lcsim.util.Driver;
+import java.io.File;
+import org.lcsim.util.loop.LCIODriver;
+
+/**
+ *
+ * @author cassell
+ */
+public class OutputPPRRecon extends Driver
+{
+ String[] ignore = {"EcalBarrHits","EcalBarrRawHits","EcalBarrRaw2sim",
+ "EcalEndcapHits","EcalEndcapRawHits","EcalEndcapRaw2sim",
+ "HcalBarrHits","HcalBarrRawHits","HcalBarrRaw2sim",
+ "HcalEndcapHits","HcalEndcapRawHits","HcalEndcapRaw2sim",
+ "ReconPerfectReconParticles","ReconPerfectVisReconParticles",
+ "ReconClusters","RefinedCheatClusters","EcalBarrDigiHitsCheatClusters",
+ "EcalEndcapDigiHitsCheatClusters","HcalBarrDigiHitsCheatClusters",
+ "HcalEndcapDigiHitsCheatClusters","PPRReconParticles",
+ "GenPerfectReconParticles","GenPerfectVisReconParticles"};
+ String CheatReconRname = "ReconPerfectReconParticles";
+ String PPRPflowRname = "PPRReconParticles";
+ String CheatReconFSname = "ReconFSParticles";
+ /** Creates a new instance of OutputPPRRecon */
+ public OutputPPRRecon(String location, String lciofn)
+ {
+//
+// Do the cheating reconstruction (includes Digisim)
+//
+ CheatReconDriver crd = new CheatReconDriver();
+ crd.setCheatReconstructedParticleOutputName(CheatReconRname);
+ crd.setCheatFSParticleOutputName(CheatReconFSname);
+ add(crd);
+
+
+
+//
+// Make the perfect pattern recognition pflow reconstructed particles from the
+// Cheat Recon particles
+//
+ add(new PPRDriver(CheatReconRname,PPRPflowRname));
+
+//
+// Write the events to disk
+//
+ File output = new File(location,lciofn);
+ LCIODriver driver = new LCIODriver(output);
+ for(int i=0;i<ignore.length;i++)
+ {
+ driver.getWriter().addIgnore(ignore[i]);
+ }
+ add(driver);
+
+ }
+
+}
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.1 -r1.2
--- AddSmearing.java 26 Nov 2007 19:40:44 -0000 1.1
+++ AddSmearing.java 29 Feb 2008 17:19:44 -0000 1.2
@@ -19,6 +19,8 @@
import java.util.Map;
import java.util.HashMap;
import org.lcsim.mc.fast.tracking.ReconTrack;
+import org.lcsim.event.LCRelation;
+import org.lcsim.digisim.MyLCRelation;
import hep.physics.vec.Hep3Vector;
import hep.physics.vec.BasicHep3Vector;
import org.lcsim.util.lcio.LCIOConstants;
@@ -47,6 +49,7 @@
List<Track> inl = event.get(Track.class,inTracks);
List<Track> sml = event.get(Track.class,smearedTracks);
List<Track> outl = new ArrayList<Track>();
+ List<LCRelation> lcrelationList = new ArrayList<LCRelation>();
Map<MCParticle,ReconTrack> tm = new HashMap<MCParticle,ReconTrack>();
for(Track t:sml)
{
@@ -71,10 +74,12 @@
rc.setTrackType(smt.getType());
rc.addHits(bt.getTrackerHits());
outl.add(rc);
+ lcrelationList.add(new MyLCRelation((Track) rc, p));
}
}
int flag = (1<<LCIOConstants.TRBIT_HITS);
event.put(outTracks,outl,Track.class,flag);
+ event.put("CheatTracksToMCP", lcrelationList, LCRelation.class, 0);
}
}
lcsim/src/org/lcsim/contrib/Cassell/recon/Cheat
diff -u -r1.6 -r1.7
--- PPRParticleDriver.java 20 Nov 2007 16:34:49 -0000 1.6
+++ PPRParticleDriver.java 29 Feb 2008 17:19:44 -0000 1.7
@@ -17,9 +17,14 @@
import java.util.HashMap;
import org.lcsim.event.EventHeader;
import org.lcsim.event.Track;
+import org.lcsim.event.Cluster;
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.recon.cluster.util.BasicCluster;
import org.lcsim.event.ReconstructedParticle;
import org.lcsim.event.base.MCReconstructedParticle;
+import org.lcsim.event.base.BaseReconstructedParticle;
import org.lcsim.mc.fast.tracking.ReconTrack;
+import org.lcsim.util.lcio.LCIOConstants;
/**
*
@@ -62,12 +67,14 @@
// System.out.println("Making PPR list from "+inlist);
List<MCReconstructedParticle> rl = event.get(MCReconstructedParticle.class,inlist);
List<ReconstructedParticle>outrl = new ArrayList<ReconstructedParticle>();
+ List<ReconstructedParticle>outrls = new ArrayList<ReconstructedParticle>();
List<MCParticle>outrlMC = new ArrayList<MCParticle>();
crpc = new PPRReconParticleConstructor();
crpc.setMinTrackerHits(minThits);
crpc.setMinCalorimeterHits(minChits);
Map<MCParticle,ReconTrack> rtl = null;
List<List<Track>> all = event.get(Track.class);
+ List<Cluster> pprclusters = new ArrayList<Cluster>();
for(List<Track> tl:all)
{
if(event.getMetaData(tl).getName().compareTo(fastMC) == 0)
@@ -94,12 +101,40 @@
ReconstructedParticle rp = crpc.makeReconParticle(p.getMCParticle(),p.getClusters(),p.getTracks(),rt);
if(rp.getEnergy() > 0.)
{
+ BaseReconstructedParticle rps = new BaseReconstructedParticle(rp.getMass(),rp.asFourVector());
+ rps.setCharge(rp.getCharge());
+ rps.setGoodnessOfPid(rp.getGoodnessOfPID());
+ rps.setParticleIdUsed(rp.getParticleIDUsed());
+ rps.setReferencePoint(rp.getReferencePoint());
+ rps.setStartVertex(rp.getStartVertex());
+ rps.setType(rp.getType());
+ for(Track track:rp.getTracks())
+ {
+ rps.addTrack(track);
+ }
+ BasicCluster pprc = new BasicCluster();
+ for(Cluster cl:rp.getClusters())
+ {
+ for(CalorimeterHit h:cl.getCalorimeterHits())
+ {
+ pprc.addHit(h);
+ }
+ }
+ if(pprc.getCalorimeterHits().size() > 0)
+ {
+ rps.addCluster(pprc);
+ pprclusters.add(pprc);
+ }
rp.addParticle(p);
outrl.add(rp);
+ outrls.add(rps);
outrlMC.add(p.getMCParticle());
}
}
event.put(outlist,outrl,ReconstructedParticle.class,0);
+ event.put("S"+outlist,outrls,ReconstructedParticle.class,0);
+ int flag = 1<<LCIOConstants.CLBIT_HITS;
+ event.put("PPRClusters",pprclusters,Cluster.class,flag);
if (outlistMC != null)
{
event.put(outlistMC,outrlMC,MCParticle.class,0);