Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
TrivialPFA.java+112added 1.1
Cheating PFA, and not a very realistic one either

lcsim/src/org/lcsim/contrib/uiowa
TrivialPFA.java added at 1.1
diff -N TrivialPFA.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TrivialPFA.java	4 Apr 2007 18:17:32 -0000	1.1
@@ -0,0 +1,112 @@
+package org.lcsim.contrib.uiowa;
+
+import org.lcsim.util.hitmap.*;
+import org.lcsim.util.*;
+import org.lcsim.event.*;
+import org.lcsim.event.util.*;
+import java.util.*;
+
+import org.lcsim.recon.cluster.util.CalHitMapDriver;
+import org.lcsim.digisim.DigiSimDriver;
+import org.lcsim.digisim.CalorimeterHitsDriver;
+import org.lcsim.util.hitmap.HitListToHitMapDriver;
+import org.lcsim.util.hitmap.HitMapToHitListDriver;
+import org.lcsim.event.util.CreateFinalStateMCParticleList;
+import org.lcsim.recon.cluster.cheat.PerfectClusterer;
+import org.lcsim.recon.pfa.cheat.PerfectIdentifier;
+import org.lcsim.recon.pfa.output.EnergySumPlotter;
+import org.lcsim.recon.pfa.output.CorrectedEnergySumPlotter;
+
+/**
+ * A very simple cheating PFA, to serve as a worked example.
+ *
+ * @version $Id: TrivialPFA.java,v 1.1 2007/04/04 18:17:32 mcharles Exp $
+ */
+public class TrivialPFA extends Driver
+{
+    /**
+     *  Constructor. This sets up all of the daughter drivers.
+     */
+    public TrivialPFA() { this(false); }
+
+    public TrivialPFA(boolean skipInit)
+    {
+	if (!skipInit) {
+	    // Set up and run DigiSim, based on org.lcsim.plugin.web.examples.DigiSimExample:
+	    // CalHitMapDriver is needed by DigiSim
+	    add(new org.lcsim.recon.cluster.util.CalHitMapDriver());
+	    // DigiSim: SimCalHits -> RawCalHits
+	    org.lcsim.digisim.DigiSimDriver digi = new org.lcsim.digisim.DigiSimDriver();
+	    add(digi);
+	    // RawCalHits -> SimCalorimeterHits
+	    add( new org.lcsim.digisim.SimCalorimeterHitsDriver() );
+	    
+	    // Set up a hitmap for the raw hits
+	    HitListToHitMapDriver rawHitMap = new HitListToHitMapDriver();
+	    rawHitMap.addInputList("EcalBarrHits");
+	    rawHitMap.addInputList("EcalEndcapHits");
+	    rawHitMap.addInputList("HcalBarrHits");
+	    rawHitMap.addInputList("HcalEndcapHits");
+	    rawHitMap.setOutput("raw hitmap");
+	    add(rawHitMap);
+	}
+
+	// Set up a hitmap for the digisim output hits
+	HitListToHitMapDriver digiHitMap = new HitListToHitMapDriver();
+	digiHitMap.addInputList("EcalBarrDigiHits");
+	digiHitMap.addInputList("EcalEndcapDigiHits");
+	digiHitMap.addInputList("HcalBarrDigiHits");
+	digiHitMap.addInputList("HcalEndcapDigiHits");
+	digiHitMap.setOutput("digi hitmap");
+	add(digiHitMap);
+	
+	if (!skipInit) {    
+	    // Do hit map -> hit list conversion
+	    HitMapToHitListDriver rawConverterDriver = new HitMapToHitListDriver();
+	    rawConverterDriver.setInputHitMap("raw hitmap");
+	    rawConverterDriver.setOutputList("raw hits (displayable)");
+	    add(rawConverterDriver);
+	    HitMapToHitListDriver digiConverterDriver = new HitMapToHitListDriver();
+	    digiConverterDriver.setInputHitMap("digi hitmap");
+	    digiConverterDriver.setOutputList("digi hits (displayable)");
+	    add(digiConverterDriver);
+
+	    // Set up the MC list
+	    CreateFinalStateMCParticleList mcListMakerGen = new CreateFinalStateMCParticleList("Gen");
+	    CreateFinalStateMCParticleList mcListMakerSim = new CreateFinalStateMCParticleList("Sim");
+	    add(mcListMakerGen);
+	    add(mcListMakerSim);
+	}
+	String mcListGen = "GenFinalStateParticles";
+	String mcListSim = "SimFinalStateParticles";
+	String mcList = mcListGen; // Can choose the Gen or Sim list here
+
+    // Cluster the hits (perfect pattern recognition)
+    PerfectClusterer clusterer = new PerfectClusterer();
+    clusterer.setInputHitMap("digi hitmap");
+    clusterer.setOutputHitMap("leftover hits");
+    clusterer.setOutputClusterList("perfect clusters");
+    clusterer.setMCParticleList(mcList);
+    add(clusterer);
+
+    // Find tracks
+    // Output: List<Track> saved as EventHeader.TRACKS
+    add (new org.lcsim.mc.fast.tracking.MCFastTracking());
+
+    // ID the clusters and create reconstructed particles
+    PerfectIdentifier id = new PerfectIdentifier();
+    id.setInputClusterList("perfect clusters");
+    id.setOutputParticleList("perfect particles");
+    id.setMCParticleList(mcList);
+    id.setInputTrackList(EventHeader.TRACKS);
+    add(id);
+
+    // Plot the total energy (using only particles with
+    // clusters in the calorimeter)
+    add(new EnergySumPlotter("perfect particles", "perfect.aida"));
+
+    // Plot the total energy (correcting for particles which didn't
+    // leave any hits in the calorimeter)
+    add(new CorrectedEnergySumPlotter("digi hitmap", "perfect particles", mcList, "corrected.aida"));
+  }
+}
CVSspam 0.2.8