lcsim/src/org/lcsim/contrib/onoprien/vsegment
diff -N ExampleDriverSiD02.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ExampleDriverSiD02.java 21 Oct 2008 19:51:50 -0000 1.1
@@ -0,0 +1,120 @@
+package org.lcsim.contrib.onoprien.vsegment;
+
+import java.util.logging.Level;
+
+import org.lcsim.units.clhep.SystemOfUnits;
+
+import org.lcsim.contrib.onoprien.vsegment.algorithm.ChargeCollectorDemo;
+import org.lcsim.contrib.onoprien.vsegment.algorithm.ClustererNearestNeighbor;
+import org.lcsim.contrib.onoprien.vsegment.algorithm.HitMakerSmear;
+import org.lcsim.contrib.onoprien.vsegment.algorithm.ReadoutBypass;
+import org.lcsim.contrib.onoprien.vsegment.geom.SegmentationManager;
+import org.lcsim.contrib.onoprien.vsegment.geom.Segmenter;
+import org.lcsim.contrib.onoprien.vsegment.geom.Sensor;
+import org.lcsim.contrib.onoprien.vsegment.hit.ITrackerHit;
+import org.lcsim.contrib.onoprien.vsegment.mctruth.MCTruthDriver;
+import org.lcsim.contrib.onoprien.vsegment.process.CalibrationDriver;
+import org.lcsim.contrib.onoprien.vsegment.process.Calibrator;
+import org.lcsim.contrib.onoprien.vsegment.process.ChargeCollectionDriver;
+import org.lcsim.contrib.onoprien.vsegment.process.ChargeCollector;
+import org.lcsim.contrib.onoprien.vsegment.process.ClusteringDriver;
+import org.lcsim.contrib.onoprien.vsegment.process.Clusterer;
+import org.lcsim.contrib.onoprien.vsegment.process.DigitizationDriver;
+import org.lcsim.contrib.onoprien.vsegment.process.Digitizer;
+import org.lcsim.contrib.onoprien.vsegment.process.SensorFilter;
+import org.lcsim.contrib.onoprien.vsegment.process.HitMaker;
+import org.lcsim.contrib.onoprien.vsegment.process.VSDriver;
+
+import org.lcsim.contrib.onoprien.vsegment.diagnostics.HitPlotter;
+
+/**
+ *
+ *
+ * @author D. Onoprienko
+ * @version $Id: ExampleDriverSiD02.java,v 1.1 2008/10/21 19:51:50 onoprien Exp $
+ */
+public class ExampleDriverSiD02 extends VSDriver {
+
+
+ public ExampleDriverSiD02() {
+
+ // -- Collection names : --------------------------------------------------
+
+ String nameRawTrackerData = "VSTrackerRawData"; // IRawTrackerData
+ String nameRawTrackerHits = "VSTrackerRawHits"; // IRawTrackerHit
+ String nameTrackerPulses = "VSTrackerPulses"; // ITrackerPulse
+ String nameTrackerClusters = "VSTrackerClusters"; // ITrackerHit
+
+ add(new MCTruthDriver());
+
+ // -- Segmentation description : ------------------------------------------
+
+ Segmenter segmenter = new SegmenterSiD02_01();
+ SegmentationManager segMan = new SegmentationManager(segmenter);
+ SegmentationManager.setDefaultInstance(segMan);
+ add(segMan);
+
+ // -- Charge collection : -------------------------------------------------
+
+ ChargeCollectionDriver chargeColDriver = new ChargeCollectionDriver();
+ chargeColDriver.set("CHARGE_COLLECTOR", new ChargeCollectorDemo());
+ chargeColDriver.set("OUTPUT_MAP_NAME", nameRawTrackerData);
+ add(chargeColDriver);
+
+ // -- Digitization : ------------------------------------------------------
+
+ ReadoutBypass readoutBypass = new ReadoutBypass();
+
+ DigitizationDriver digiDriver = new DigitizationDriver();
+ digiDriver.set("INPUT_MAP_NAME", nameRawTrackerData);
+ digiDriver.set("OUTPUT_MAP_NAME", nameRawTrackerHits);
+ digiDriver.set("DIGITIZER", readoutBypass);
+ add(digiDriver);
+
+ // -- Calibration : -------------------------------------------------------
+
+ CalibrationDriver calDriver = new CalibrationDriver();
+ calDriver.set("INPUT_MAP_NAME", nameRawTrackerHits);
+ calDriver.set("OUTPUT_MAP_NAME", nameTrackerPulses);
+ calDriver.set("DECODER", readoutBypass);
+ add(calDriver);
+
+ // -- Clustering and hit making: ------------------------------------------
+
+ ClusteringDriver clusterDriver = new ClusteringDriver();
+ clusterDriver.set("INPUT_MAP_NAME", nameTrackerPulses);
+ clusterDriver.set("OUTPUT_MAP_NAME", nameTrackerClusters);
+
+ ClustererNearestNeighbor clusterer = new ClustererNearestNeighbor();
+ clusterDriver.set("CLUSTERER", clusterer);
+
+ HitMakerSmear hitMakerPixels = new HitMakerSmear(5.*SystemOfUnits.micrometer, 5.*SystemOfUnits.micrometer, 0.);
+ clusterDriver.set("HIT_MAKER", hitMakerPixels, new SensorFilter() {
+ public boolean pass(Sensor sensor) {
+ return sensor.getType().getHitType() == ITrackerHit.Type.PIXEL;
+ }
+ });
+
+ HitMakerSmear hitMakerStrips = new HitMakerSmear(7.*SystemOfUnits.micrometer, -1., 0.);
+ clusterDriver.set("HIT_MAKER", hitMakerStrips, new SensorFilter() {
+ public boolean pass(Sensor sensor) {
+ return sensor.getType().getHitType() == ITrackerHit.Type.STRIP;
+ }
+ });
+
+ add(clusterDriver);
+
+ // -- Diagnostics - plotting hits : ---------------------------------------
+ // Don't forget to comment this out if you run real reconstruction -
+ // AIDA gobbles up time and memory
+
+// HitPlotter hitPlotter = new HitPlotter();
+// hitPlotter.set("LOG_LEVEL", Level.FINE);
+// hitPlotter.set("RAW_DATA_MAP_NAME", nameRawTrackerData);
+// hitPlotter.set("CLUSTER_MAP_NAME", nameTrackerClusters);
+// add(hitPlotter);
+
+ }
+
+
+}
lcsim/src/org/lcsim/contrib/onoprien/vsegment
diff -N SegmenterSiD02_01.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SegmenterSiD02_01.java 21 Oct 2008 19:51:50 -0000 1.1
@@ -0,0 +1,69 @@
+package org.lcsim.contrib.onoprien.vsegment;
+
+import org.lcsim.units.clhep.SystemOfUnits;
+
+import org.lcsim.contrib.onoprien.vsegment.geom.segmenter.CylindricalBarrelSegmenter;
+import org.lcsim.contrib.onoprien.vsegment.geom.segmenter.DiskTrackerToWedgesSegmenter;
+import org.lcsim.contrib.onoprien.vsegment.geom.segmenter.DiskTrackerToRingsSegmenter;
+import org.lcsim.contrib.onoprien.vsegment.geom.segmenter.SubdetectorBasedSegmenter;
+
+/**
+ * Simplistic reference segmenter intended for use with SID02 detector.
+ * <p>
+ * Parameters match those used by Rich in<br>
+ * org.lcsim.recon.tracking.seedtracker.ReconTracking.SiD02ReconSegmenter v 1.1 2008/10/16 21:41:18.
+ *
+ * @author D. Onoprienko
+ * @version $Id: SegmenterSiD02_01.java,v 1.1 2008/10/21 19:51:50 onoprien Exp $
+ */
+public class SegmenterSiD02_01 extends SubdetectorBasedSegmenter {
+
+// -- Constructors : ----------------------------------------------------------
+
+ public SegmenterSiD02_01() {
+
+ String sdName;
+
+ // 20 um pixels in VTX Barrel
+
+ sdName = "VertexBarrel";
+ CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter(sdName);
+ vtxBarrelSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ vtxBarrelSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter(sdName, vtxBarrelSegmenter);
+
+ // 10 cm x 25 um strips in outer Tracker Barrel
+
+ sdName = "TrackerBarrel";
+ CylindricalBarrelSegmenter trackerBarrelSegmenter = new CylindricalBarrelSegmenter(sdName);
+ trackerBarrelSegmenter.setStripLength(9.15*SystemOfUnits.cm);
+ trackerBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ setSegmenter(sdName, trackerBarrelSegmenter);
+
+ // 20 um pixels in VTX Endcap
+
+ sdName = "VertexEndcap";
+ DiskTrackerToRingsSegmenter vtxEndcapSegmenter = new DiskTrackerToRingsSegmenter(sdName);
+ vtxEndcapSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ vtxEndcapSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter(sdName, vtxEndcapSegmenter);
+
+ // 20 um pixels in Forward Tracker
+
+ sdName = "TrackerForward";
+ DiskTrackerToRingsSegmenter trackerForwardSegmenter = new DiskTrackerToRingsSegmenter(sdName);
+ trackerForwardSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ trackerForwardSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter(sdName, trackerForwardSegmenter);
+
+ // 12 degrees stereo wedges in outer Tracker Endcap
+
+ sdName = "TrackerEndcap";
+ DiskTrackerToWedgesSegmenter trackerEndcapSegmenter = new DiskTrackerToWedgesSegmenter(sdName);
+ trackerEndcapSegmenter.setNumberOfRadialSlices(new int[]{3,6,9,12});
+ trackerEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ trackerEndcapSegmenter.setNumberOfPhiSlices(30);
+ setSegmenter(sdName, trackerEndcapSegmenter);
+ }
+
+}