lcsim/src/org/lcsim/contrib/Partridge
diff -N VSExampleSegmenter.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ VSExampleSegmenter.java 3 Jul 2008 21:59:32 -0000 1.1
@@ -0,0 +1,64 @@
+package org.lcsim.contrib.Partridge;
+
+import org.lcsim.units.clhep.SystemOfUnits;
+
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.CylindricalBarrelSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToWedgesSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToRingsSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.SubdetectorBasedSegmenter;
+
+/**
+ *
+ *
+ *
+ *
+ * @author D. Onoprienko
+ * @version $Id: VSExampleSegmenter.java,v 1.1 2008/07/03 21:59:32 partridge Exp $
+ */
+public class VSExampleSegmenter extends SubdetectorBasedSegmenter {
+
+// -- Constructors : ----------------------------------------------------------
+
+ public VSExampleSegmenter() {
+
+ // 25 um pixels in VTX Barrel
+
+ CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter("VertexBarrel");
+ vtxBarrelSegmenter.setStripLength(25.*SystemOfUnits.micrometer);
+ vtxBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ setSegmenter("VertexBarrel", vtxBarrelSegmenter);
+
+ // 10 cm x 25 um strips in outer Tracker Barrel
+
+ CylindricalBarrelSegmenter trackerBarrelSegmenter = new CylindricalBarrelSegmenter("TrackerBarrel");
+ trackerBarrelSegmenter.setStripLength(10.*SystemOfUnits.cm);
+ trackerBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ setSegmenter("TrackerBarrel", trackerBarrelSegmenter);
+
+ // 25 um pixels in VTX Endcap
+
+ DiskTrackerToRingsSegmenter vtxEndcapSegmenter = new DiskTrackerToRingsSegmenter("VertexEndcap");
+ vtxEndcapSegmenter.setStripLength(25.*SystemOfUnits.micrometer);
+ vtxEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ setSegmenter("VertexEndcap", vtxEndcapSegmenter);
+
+ // 15 degrees stereo wedges in Forward Tracker
+
+ DiskTrackerToWedgesSegmenter trackerForwardSegmenter = new DiskTrackerToWedgesSegmenter("TrackerForward");
+ trackerForwardSegmenter.setStripLength(10.*SystemOfUnits.cm);
+ trackerForwardSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ trackerForwardSegmenter.setNumberOfPhiSlices(24);
+ setSegmenter("TrackerForward", trackerForwardSegmenter);
+
+ // 15 degrees stereo wedges in outer Tracker Endcap
+
+ DiskTrackerToWedgesSegmenter trackerEndcapSegmenter = new DiskTrackerToWedgesSegmenter("TrackerEndcap");
+ trackerEndcapSegmenter.setNumberOfRadialSlices(new int[]{3,5,8,10, 10});
+ trackerEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ trackerEndcapSegmenter.setNumberOfPhiSlices(24);
+ setSegmenter("TrackerEndcap", trackerEndcapSegmenter);
+ }
+
+// -- Private parts : ---------------------------------------------------------
+
+}
lcsim/src/org/lcsim/contrib/Partridge
diff -N VSTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ VSTest.java 3 Jul 2008 21:59:32 -0000 1.1
@@ -0,0 +1,99 @@
+/*
+ * VSTest.java
+ *
+ * Created on July 3, 2008, 2:40 PM
+ *
+ */
+
+package org.lcsim.contrib.Partridge;
+
+import java.util.HashMap;
+import java.util.List;
+import org.lcsim.contrib.onoprien.tracking.digitization.algorithms.ConverterSimple;
+import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiConverter;
+import org.lcsim.contrib.onoprien.tracking.clustering.ClusteringDriver;
+import org.lcsim.contrib.onoprien.tracking.clustering.clusterers.NearestNeighborClusterer;
+import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiDriver;
+import org.lcsim.contrib.onoprien.tracking.geom.SegmentationManager;
+import org.lcsim.contrib.onoprien.tracking.geom.Segmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.Sensor;
+import org.lcsim.contrib.onoprien.tracking.hit.DigiTrackerHit;
+import org.lcsim.contrib.onoprien.tracking.hit.TrackerCluster;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.HitMakingDriver;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.TrackerHitMaker;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.hitmakers.TrackerHitMakerBasic;
+import org.lcsim.event.EventHeader;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
+import org.lcsim.util.Driver;
+
+/**
+ * Driver for testing the SeedTracker track finding algorithm. This driver causes
+ * the SmearMCHits and SeedTracker drivers to be invoked for each event.
+ * @author Richard Partridge
+ * @version 1.0
+ */
+public class VSTest extends Driver {
+ public VSTest() {
+ // Segmentation description :
+
+ Segmenter segmenter = new VSExampleSegmenter();
+ SegmentationManager segMan = new SegmentationManager(segmenter);
+ SegmentationManager.setDefaultInstance(segMan);
+ add(segMan);
+
+ // Digitization :
+
+ SimToDigiConverter converter = new ConverterSimple();
+ SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
+ conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrBarrHits");
+ conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxBarrHits");
+ conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrEndcapHits");
+ conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxEndcapHits");
+ conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrForwardHits");
+ conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
+ add(conversionDriver);
+
+ // Clustering :
+
+ ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
+ clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
+ clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
+ add(clusteringDriver);
+
+ // Hit making :
+
+ TrackerHitMaker hitMaker = new TrackerHitMakerBasic();
+ HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker);
+ hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters");
+ hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits");
+ add(hitMakingDriver);
+
+ // Make HelicalTrackHits
+
+ // Add a driver to create HelicalTrackHits from the digitized hits
+ HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
+ hitdriver.addCollection("NewTrackerHits",HitType.VirtualSegmentation);
+ add(hitdriver);
+
+ }
+
+ public void process(EventHeader event) {
+ super.process(event);
+
+ int n = 0;
+ HashMap<Sensor, List<DigiTrackerHit>> digiMap =
+ (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits");
+ for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size();
+ System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors");
+
+ n = 0;
+ HashMap<Sensor, List<TrackerCluster>> clusterMap =
+ (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters");
+ for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size();
+ System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors");
+
+ return;
+ }
+
+}