lcsim/sandbox
diff -N CalHitStepPosTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ CalHitStepPosTest.java 12 Jan 2012 00:15:27 -0000 1.1
@@ -0,0 +1,103 @@
+package org.lcsim;
+
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.freehep.record.loop.LoopException;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.job.EventMarkerDriver;
+import org.lcsim.util.Driver;
+import org.lcsim.util.loop.LCSimLoop;
+
+public class CalHitStepPosTest extends TestCase
+{
+ //String fileName = "/u1/projects/SimDist/HEAD/panpyqqbar-0-1000_SLIC-v2r10p7_geant4-v9r4p2_QGSP_BERT_caltest.slcio";
+ String fileName = "/u1/projects/lcsim/HEAD/muons500_Theta4-176_1-10GeV_SLIC-v2r11p2_geant4-v9r4p2_QGSP_BERT_sidloi3.slcio";
+
+ public void testIt()
+ {
+ //System.out.println("testIt...");
+ File file = new File(fileName);
+ LCSimLoop loop = new LCSimLoop();
+ loop.add(new EventMarkerDriver());
+ //loop.add(new StepPosCheckDriver());
+ loop.add(new CellPlotDriver());
+ try
+ {
+ loop.setLCIORecordSource(file);
+ }
+ catch (IOException x)
+ {
+ throw new RuntimeException(x);
+ }
+ try
+ {
+ loop.loop(-1, null);
+ }
+ catch (LoopException x)
+ {
+ throw new RuntimeException(x);
+ }
+ catch (IOException x)
+ {
+ throw new RuntimeException(x);
+ }
+ System.out.println("ran over " + loop.getTotalSupplied() + " records");
+ loop.dispose();
+ }
+
+ /*
+ static class StepPosCheckDriver extends Driver
+ {
+ public void process(EventHeader event)
+ {
+ System.out.println("proc event = " + event.getEventNumber());
+ List<List<SimCalorimeterHit>> hitCollections =
+ event.get(SimCalorimeterHit.class);
+ for (List<SimCalorimeterHit> hits : hitCollections)
+ {
+ System.out.println("collection = " + event.getMetaData(hits).getName());
+ for (SimCalorimeterHit hit : hits)
+ {
+ int ncontrib = hit.getMCParticleCount();
+ for (int i=0; i<ncontrib; i++)
+ {
+ float steppos[] = hit.getStepPosition(i);
+ System.out.println("steppos = { " + ", " + steppos[0] + ", " + steppos[1] + ", " + steppos[2] + " }");
+ }
+ }
+ }
+ }
+ }
+ */
+
+ static class CellPlotDriver extends Driver
+ {
+ public void process(EventHeader event)
+ {
+ List<SimCalorimeterHit> hits = event.get(SimCalorimeterHit.class, "HcalBarrelHits");
+ IDDecoder decoder = event.getMetaData(hits).getIDDecoder();
+ for (SimCalorimeterHit hit : hits)
+ {
+ decoder.setID(hit.getCellID());
+ Hep3Vector cellPos = decoder.getPositionVector();
+ int ncontribs = hit.getMCParticleCount();
+ for (int i=0; i<ncontribs; i++)
+ {
+ float stepPos[] = hit.getStepPosition(i);
+ Hep3Vector stepVec = new BasicHep3Vector(stepPos[0], stepPos[1], stepPos[2]);
+ System.out.println("cell pos = " + VecOp.sub(stepVec, cellPos));
+ }
+ }
+ }
+ }
+}