lcsim/src/org/lcsim/detector/driver
diff -N ExampleRawTrackerHitReadoutDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ExampleRawTrackerHitReadoutDriver.java 24 May 2007 18:15:44 -0000 1.1
@@ -0,0 +1,104 @@
+package org.lcsim.detector.driver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IReadout;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * Example {@link org.lcsim.util.Driver} that builds collections of
+ * {@link org.lcsim.event.RawTrackerHit}s from {@link SimTrackerHit} collections.
+ *
+ * @author Jeremy McCormick
+ * @version $Id: ExampleRawTrackerHitReadoutDriver.java,v 1.1 2007/05/24 18:15:44 jeremy Exp $
+ */
+public class ExampleRawTrackerHitReadoutDriver
+extends Driver
+{
+ protected void process(EventHeader event)
+ {
+ List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+ for ( List<SimTrackerHit> collection : collections )
+ {
+ LCMetaData meta = event.getMetaData(collection);
+ Subdetector subdet = meta.getIDDecoder().getSubdetector();
+ IIdentifierHelper helper = subdet.getDetectorElement().getIdentifierHelper();
+
+ if (subdet instanceof SiTrackerBarrel)
+ {
+ List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>();
+
+ for (IDetectorElement layer : subdet.getDetectorElement().getChildren())
+ {
+ for (IDetectorElement module : layer.getChildren())
+ {
+ for (IDetectorElement sensor : module.getChildren())
+ {
+ IReadout readout = sensor.getReadout();
+ List <SimTrackerHit> simHits = readout.getHits(SimTrackerHit.class);
+
+ if (simHits.size() > 0)
+ {
+ // Get the 1st SimTrackerHit.
+ SimTrackerHit aSimHit = simHits.get(0);
+
+ // Create an Identifier from the SimTrackerHit's cellId.
+ IIdentifier hitId = new Identifier(aSimHit.getCellID());
+
+ // Extract the field values up to "side".
+ IExpandedIdentifier expGeomId =
+ helper.unpack(hitId, 0, helper.getIdentifierDictionary().getFieldIndex("side") - 1);
+
+ // Repack the Identifier.
+ IIdentifier geomId = helper.pack(expGeomId);
+
+ // Lookup the DetectorElement from the Identifier.
+ IDetectorElement deHit =
+ DetectorElementStore.getInstance().findDetectorElement(geomId);
+
+ // Fatal error if DetectorElement was not found.
+ if (deHit == null)
+ {
+ throw new RuntimeException("DetectorElement not found with id <"+geomId.toHexString()+">.");
+ }
+
+ // Create a RawTrackerHit.
+ // FIXME: Create real time and adcValues.
+ RawTrackerHit rawHit =
+ new BaseRawTrackerHit(
+ 0, // time
+ (long)aSimHit.getCellID(), // cellId
+ new short[]{}, // adcValues
+ aSimHit.getIDDecoder(), // IDDecoder
+ simHits, // SimTrackerHits
+ deHit); // DetectorElement
+
+ // Add the hit to the DetectorElement's Readout.
+ IReadout ro = deHit.getReadout();
+ ro.addHit(rawHit);
+ }
+ }
+ }
+
+ // Put the RawTrackerHit collection into the event.
+ event.put(meta.getName() + "_RawTrackerHits", rawHits, RawTrackerHit.class, 0, meta.getName());
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
lcsim/src/org/lcsim/detector/driver
diff -N RawTrackerHitReadoutDriver.java
--- RawTrackerHitReadoutDriver.java 23 May 2007 20:14:58 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,101 +0,0 @@
-package org.lcsim.detector.driver;
-
-import java.util.List;
-import java.util.Map;
-
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IReadout;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierField;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.identifier.Identifier;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.geometry.subdetector.SiTrackerBarrel;
-
-/**
- * Assigns the corresponding {@link org.lcsim.detector.IDetectorElement}
- * to a {@link org.lcsim.event.RawTrackerHit}.
- *
- * @author Jeremy McCormick
- * @version $Id: RawTrackerHitReadoutDriver.java,v 1.1 2007/05/23 20:14:58 jeremy Exp $
- */
-public class RawTrackerHitReadoutDriver
-extends CollectionHandler
-{
- public RawTrackerHitReadoutDriver(List<String> collectionNames)
- {
- super(collectionNames);
- add(new ReadoutCleanupDriver(collectionNames));
- }
-
- public RawTrackerHitReadoutDriver(String[] collectionNames)
- {
- super(collectionNames);
- add(new ReadoutCleanupDriver(collectionNames));
- }
-
- static final private String idKey[] =
- new String[] {"system","barrel","layer","module","sensor","side","strip"};
- protected void process(EventHeader header)
- {
- super.process(header);
- List<List<RawTrackerHit>> collections = header.get(RawTrackerHit.class);
- for ( List<RawTrackerHit> collection : collections )
- {
- if (canHandle(header.getMetaData( collection ).getName()))
- {
- IIdentifierHelper helper = header.getMetaData(collection).getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
-
- // Check that the id is in the expected format.
- Map<String,IIdentifierField> fields = helper.getIdentifierDictionary().getFieldNameMap();
- for (int i=0; i<fields.size(); i++)
- {
- if (i > (idKey.length - 1))
- {
- throw new RuntimeException("Index out of range <"+i+">.");
- }
-
- IIdentifierField field = fields.get(idKey[i]);
-
- if (field == null)
- {
- throw new RuntimeException("Missing expected field <"+idKey[i]+">.");
- }
-
- if (field.getOrder() != i)
- {
- throw new RuntimeException("The field <"+idKey[i]+"> is in the wrong order.");
- }
- }
-
- for (RawTrackerHit hit : collection)
- {
- IDetectorElement deSubdet = hit.getSubdetector().getDetectorElement();
- IIdentifier hitId = new Identifier(hit.getCellID());
-
- // Extract the field values up to, but not including, "side".
- IExpandedIdentifier expGeomId = helper.unpack(hitId, 0, helper.getIdentifierDictionary().getFieldIndex("side") - 1);
-
- // Repack the ID, with non-geometric fields removed.
- IIdentifier geomId = helper.pack(expGeomId);
-
- // Lookup the DetectorElement.
- IDetectorElement deHit =
- DetectorElementStore.getInstance().findDetectorElement(geomId);
-
- if (deHit == null)
- {
- throw new RuntimeException("DetectorElement not found with id <"+geomId.toHexString()+">.");
- }
-
- hit.setDetectorElement(deHit);
- IReadout ro = deHit.getReadout();
- ro.addHit(hit);
- }
- }
- }
- }
-}
lcsim/test/org/lcsim/detector/driver
diff -u -r1.1 -r1.2
--- RawTrackerHitReadoutDriverTest.java 23 May 2007 20:14:58 -0000 1.1
+++ RawTrackerHitReadoutDriverTest.java 24 May 2007 18:15:45 -0000 1.2
@@ -1,18 +1,12 @@
package org.lcsim.detector.driver;
import java.net.URL;
-import java.util.ArrayList;
import java.util.List;
-import junit.framework.*;
+import junit.framework.TestCase;
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.driver.RawTrackerHitReadoutDriver;
-import org.lcsim.detector.driver.SimTrackerHitIdentifierReadoutDriver;
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
import org.lcsim.util.Driver;
import org.lcsim.util.cache.FileCache;
import org.lcsim.util.loop.LCSimLoop;
@@ -27,49 +21,29 @@
private static final String resource =
"http://www.lcsim.org/test/lcio/mu-_10GeV_SiTrackerBarrelTest00.slcio";
-
- private static final String[] collection = new String[] { "SiTrackerBarrel_RO" };
-
+
public void testRawTrackerHitIO() throws Exception
{
LCSimLoop writeLoop = new LCSimLoop();
writeLoop.setLCIORecordSource((new FileCache()).getCachedFile(new URL(resource)));
writeLoop.add(new SimTrackerHitIdentifierReadoutDriver(new String[] { "SiTrackerBarrel_RO" } ));
- writeLoop.add(new RawTrackerHitMaker());
- writeLoop.add(new RawTrackerHitReadoutDriver(new String[] { "RawTrackerHitTest" }));
+ writeLoop.add(new ExampleRawTrackerHitReadoutDriver());
writeLoop.add(new CheckDriver());
writeLoop.loop(1);
writeLoop.dispose();
}
-
- private class RawTrackerHitMaker extends Driver
- {
- protected void process(EventHeader event)
- {
- List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>();
- List<SimTrackerHit> simHits = event.get(SimTrackerHit.class, "SiTrackerBarrel_RO");
- for ( SimTrackerHit simHit : simHits )
- {
- List<SimTrackerHit> thisSimHit = new ArrayList<SimTrackerHit>();
- thisSimHit.add(simHit);
- RawTrackerHit rawHit =
- new BaseRawTrackerHit(0,(long)simHit.getCellID(),new short[]{},simHit.getIDDecoder(),thisSimHit);
- rawHits.add(rawHit);
- }
- event.put("RawTrackerHitTest", rawHits, RawTrackerHit.class, 0, "SiTrackerBarrel_RO");
- }
- }
-
+
private class CheckDriver extends Driver
{
protected void process(EventHeader event)
{
- List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "RawTrackerHitTest");
+ List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "SiTrackerBarrel_RO_RawTrackerHits");
for (RawTrackerHit hit : rawHits)
{
assertTrue(hit.getIdentifier() != null);
assertTrue(hit.getDetectorElement() != null);
+ assertTrue(hit.getSimTrackerHit().size() > 0);
assertEquals(hit.getDetectorElement(), hit.getSimTrackerHit().get(0).getDetectorElement());
}
}