Print

Print


Commit in lcsim/src/org/lcsim/contrib/onoprien/vsegment on MAIN
ExampleDriverSiD02.java+120added 1.1
SegmenterSiD02_01.java+69added 1.1
+189
2 added files
SiD02 example driver/segmenter

lcsim/src/org/lcsim/contrib/onoprien/vsegment
ExampleDriverSiD02.java added at 1.1
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
SegmenterSiD02_01.java added at 1.1
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);
+  }
+
+}
CVSspam 0.2.8