Commit in lcsim/src/org/lcsim/contrib/Partridge on MAIN
VSExampleSegmenter.java+64added 1.1
VSTest.java+99added 1.1
+163
2 added files
Example of virtual segmentation problems

lcsim/src/org/lcsim/contrib/Partridge
VSExampleSegmenter.java added at 1.1
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
VSTest.java added at 1.1
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;
+    }
+    
+}
CVSspam 0.2.8