lcsim/sandbox
diff -N DigiHitReader.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ DigiHitReader.java 31 Aug 2009 17:55:28 -0000 1.1
@@ -0,0 +1,77 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.recon.tracking.seedtracker.digiexample;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.driver.RawTrackerHitIdentifierReadoutDriver;
+import org.lcsim.detector.driver.TrackerHitIdentifierReadoutDriver;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author cozzy
+ */
+public class DigiHitReader extends Driver{
+
+ private static final String strip1DName = "StripClusterer_SiTrackerHitStrip1D";
+ private static final String pixSimBarrelName = "RecVtxBarrHits";
+ private static final String pixSimEndcapName = "RecVtxEndcapHits";
+ private static final String[] simHitNames = new String[]{"SiTrackerBarrel_RO","SiTrackerEndcap_RO","SiTrackerForward_RO"};
+ private static final String rawHitsName = "RawTrackerHitMaker_RawTrackerHits";
+ private static final long rawBitmask = 0xFFFFFFFFL;
+ private static final String newhits = "Strip1DHits";
+
+ public DigiHitReader() {
+ add(new SimTrackerHitReadoutDriver(simHitNames));
+ RawTrackerHitIdentifierReadoutDriver rawHitsDriver = new RawTrackerHitIdentifierReadoutDriver(new String[]{rawHitsName});
+ rawHitsDriver.setCellIDBitmask(rawBitmask);
+ add(rawHitsDriver);
+ add(new TrackerHitIdentifierReadoutDriver(new String[]{strip1DName}));
+ add(new ReadoutReader(SiTrackerHitStrip1D.class, newhits, 0));
+ HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
+ hitdriver.addCollection(newhits,HitType.Digitized);
+ hitdriver.addCollection(pixSimBarrelName,HitType.Base);
+ hitdriver.addCollection(pixSimEndcapName,HitType.Base);
+ hitdriver.OutputCollection("HelicalTrackHits"); // the default, but it might change?
+ add(hitdriver);
+ }
+
+
+ class ReadoutReader extends Driver{
+
+ private Class c;
+ private int f;
+ private String n;
+
+ public ReadoutReader(Class klass, String collName, int flags) {
+ c = klass;
+ n = collName;
+ f = flags;
+ }
+
+ protected void process(EventHeader event) {
+ super.process(event);
+
+
+ List<SiTrackerHitStrip1D> hits1D = new ArrayList<SiTrackerHitStrip1D>();
+ for (IDetectorElement de : event.getDetector().getDetectorElement().findDescendants(SiSensor.class)) {
+
+ hits1D.addAll(de.getReadout().getHits(c));
+ }
+
+ event.put(n, hits1D, c , f);
+ }
+ }
+
+}
lcsim/sandbox
diff -N RawTrackerHitIdentifierReadoutDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ RawTrackerHitIdentifierReadoutDriver.java 31 Aug 2009 17:55:28 -0000 1.1
@@ -0,0 +1,64 @@
+package org.lcsim.detector.driver;
+
+import java.util.List;
+
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElementContainer;
+import org.lcsim.detector.IReadout;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.recon.tracking.digitization.sisim.config.CollectionHandler;
+import org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver;
+
+public class RawTrackerHitIdentifierReadoutDriver
+extends CollectionHandler
+{
+
+ private static final long defaultBitmask = 0xFFFFFFFFL;
+
+ private long bitmask = defaultBitmask;
+
+ public RawTrackerHitIdentifierReadoutDriver(List<String> collectionNames)
+ {
+ super(collectionNames);
+ add( new ReadoutCleanupDriver( collectionNames ) );
+ }
+
+ public RawTrackerHitIdentifierReadoutDriver(String[] collectionNames)
+ {
+ super(collectionNames);
+ add( new ReadoutCleanupDriver( collectionNames ) );
+ }
+
+ public void setCellIDBitmask(long mask) {
+ bitmask = mask;
+ }
+
+
+ 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() ) )
+ {
+ for ( RawTrackerHit hit : collection )
+ {
+ IIdentifier hitId = new Identifier(hit.getCellID() & bitmask);
+ IDetectorElementContainer deHit =
+ DetectorElementStore.getInstance().find(hitId);
+ if (deHit.size() == 0)
+ {
+ throw new RuntimeException("No DetectorElement found for id <"+hitId.toString()+">.");
+ }
+ hit.setDetectorElement(deHit.get(0));
+ IReadout ro = deHit.get(0).getReadout();
+ ro.addHit( hit );
+ }
+ }
+ }
+ }
+}
lcsim/sandbox
diff -N TrackerHitIdentifierReadoutDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerHitIdentifierReadoutDriver.java 31 Aug 2009 17:55:28 -0000 1.1
@@ -0,0 +1,72 @@
+package org.lcsim.detector.driver;
+
+import java.util.List;
+
+import org.lcsim.detector.IReadout;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitPixel;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType;
+import org.lcsim.recon.tracking.digitization.sisim.config.CollectionHandler;
+import org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver;
+
+public class TrackerHitIdentifierReadoutDriver
+ extends CollectionHandler
+{
+ public TrackerHitIdentifierReadoutDriver(List<String> collectionNames)
+ {
+ super(collectionNames);
+ add( new ReadoutCleanupDriver( collectionNames ) );
+ }
+
+ public TrackerHitIdentifierReadoutDriver(String[] collectionNames)
+ {
+ super(collectionNames);
+ add( new ReadoutCleanupDriver( collectionNames ) );
+ }
+
+ protected void process(EventHeader header)
+ {
+ super.process(header);
+ List<List<TrackerHit>> collections = header.get(TrackerHit.class);
+ for ( List<TrackerHit> collection : collections )
+ {
+ if ( canHandle( header.getMetaData( collection ).getName() ) )
+ {
+ for ( TrackerHit hit : collection )
+ {
+
+ TrackerHitType.MeasurementType measurement_type =
+ TrackerHitType.decoded(hit.getType()).getMeasurementType();
+
+ TrackerHitType.CoordinateSystem coordinate_system =
+ TrackerHitType.decoded(hit.getType()).getCoordinateSystem();
+
+ if (measurement_type == TrackerHitType.MeasurementType.STRIP_1D)
+ {
+ SiTrackerHitStrip1D hit_1D = new SiTrackerHitStrip1D(hit,coordinate_system);
+ IReadout ro = hit_1D.getSensor().getReadout();
+ ro.addHit(hit_1D);
+ }
+
+ if (measurement_type == TrackerHitType.MeasurementType.PIXEL)
+ {
+ SiTrackerHitPixel hit_pixel = new SiTrackerHitPixel(hit,coordinate_system);
+ IReadout ro = hit_pixel.getSensor().getReadout();
+ ro.addHit(hit_pixel);
+ }
+
+ // Need to master LC relations to make this work.
+// if (measurement_type == TrackerHitType.MeasurementType.STRIP_2D)
+// {
+// SiTrackerHitStrip2D hit_2D = new SiTrackerHitStrip2D(hit,coordinate_system);
+// IReadout ro = hit_2D.getSensor().getReadout();
+// ro.addHit(hit_2D);
+// }
+
+ }
+ }
+ }
+ }
+}