Print

Print


Commit in java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno on MAIN
PlotUtils.java+10-51198 -> 1199
SimpleSvtTrigger.java+3-41198 -> 1199
SvtHitCorrelations.java+14-191198 -> 1199
SvtHitEfficiency.java+40-371198 -> 1199
SvtPerformance.java+5-91198 -> 1199
SvtQA.java+68-761198 -> 1199
SvtTrackRecoEfficiency.java+18-171198 -> 1199
+158-167
7 modified files
Remove the use of SvtUtils and HPSSVTCalibrationConstants from all remaining classes! 

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
PlotUtils.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/PlotUtils.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/PlotUtils.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -3,16 +3,21 @@
 import hep.aida.ICloud2D;
 import hep.aida.IFitResult;
 import hep.aida.IFitter;
-//--- hep ---//
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
 
-import org.hps.conditions.deprecated.SvtUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.util.aida.AIDA;
 
+/**
+ * A set of plotting utilities.
+ * 
+ * @author Omar Moreno <[log in to unmask]>
+ *
+ */
 public class PlotUtils {
 
 	// Default ctor
@@ -87,13 +92,13 @@
      */
     public static int getPlotterRegion(SiSensor sensor) {
 
-        int layer = SvtUtils.getInstance().getLayerNumber(sensor);
+        int layer = ((HpsSiSensor) sensor).getLayerNumber();  
 
         // Compute the sensor's x and y grid coordinates and then translate to region number.
         int ix = (layer - 1) / 2;
         int iy = 0;
-        if (!SvtUtils.getInstance().isTopLayer(sensor)) {
-            iy += 2;
+        if (!((HpsSiSensor) sensor).isTopLayer()){ 
+        	iy += 2;
         }
         if (layer % 2 == 0) {
             iy += 1;

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SimpleSvtTrigger.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SimpleSvtTrigger.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -5,10 +5,8 @@
 import java.util.List;
 import java.util.Set;
 
-import org.hps.conditions.deprecated.SvtUtils;
 import org.hps.recon.tracking.FindableTrack;
 import org.hps.recon.tracking.apv25.Apv25Full;
-import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimTrackerHit;
@@ -16,6 +14,7 @@
 import org.lcsim.util.Driver;
 //--- hps-java ---//
 
+// TODO: Sandbox this class
 public class SimpleSvtTrigger extends Driver {
     
     FindableTrack findable = null;
@@ -133,10 +132,10 @@
      */
     private boolean isSameSvtVolume(Set<SimTrackerHit> simTrackerHits){
         int volumeIndex = 0;
-        for(SimTrackerHit simTrackerHit : simTrackerHits){
+        /*for(SimTrackerHit simTrackerHit : simTrackerHits){
             if(SvtUtils.getInstance().isTopLayer((SiSensor) simTrackerHit.getDetectorElement())) volumeIndex++;
             else volumeIndex--;
-        }
+        }*/
         return Math.abs(volumeIndex) == simTrackerHits.size();
     }
     

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SvtHitCorrelations.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitCorrelations.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,26 +1,21 @@
 package org.hps.users.omoreno;
 
-//--- java ---//
-//--- aida ---//
 import hep.aida.IPlotter;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import org.hps.conditions.deprecated.SvtUtils;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
-//--- org.lcsim ---//
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
 
 /**
- * 
- * @author Omar Moreno
- * @version $Id: SvtHitCorrelations.java,v 1.2 2013/10/25 19:45:01 jeremy Exp $
+ * Driver to find the correlations between stereo hits.
+ *  
+ * @author Omar Moreno <[log in to unmask]>
  *
  */
 public class SvtHitCorrelations extends Driver {
@@ -143,29 +138,29 @@
 		
 		for(RawTrackerHit rawHit1 : rawHits){
 	
-			SiSensor sensor1 = (SiSensor) rawHit1.getDetectorElement();
-			int layer1 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor1))/2);
+			HpsSiSensor sensor1 = (HpsSiSensor) rawHit1.getDetectorElement();
+			int layer1 = (int) Math.ceil(((double) sensor1.getLayerNumber())/2);
 			int channel1 = rawHit1.getIdentifierFieldValue("strip");
 			
 			for(RawTrackerHit rawHit2 : rawHits){
 			
-				SiSensor sensor2 = (SiSensor) rawHit2.getDetectorElement();
-				int layer2 = (int) Math.ceil(((double) SvtUtils.getInstance().getLayerNumber(sensor2))/2);
+				HpsSiSensor sensor2 = (HpsSiSensor) rawHit2.getDetectorElement();
+				int layer2 = (int) Math.ceil(((double) sensor2.getLayerNumber())/2);
 				int channel2 = rawHit2.getIdentifierFieldValue("strip");
 			
-				if(SvtUtils.getInstance().isTopLayer(sensor1) && SvtUtils.getInstance().isTopLayer(sensor2)){
-					if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2) && taa){
+				if(sensor1.isTopLayer() && sensor2.isTopLayer()){
+					if(sensor1.isAxial() && sensor2.isAxial() && taa){
 						String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2;
 						aida.histogram2D(plotName).fill(channel1, channel2);
-					} else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && tas){
+					} else if(sensor1.isAxial() && !sensor2.isAxial() && tas){
 						String plotName = "Top Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2;
 						aida.histogram2D(plotName).fill(channel1, channel2);
 					}
-				} else if(!SvtUtils.getInstance().isTopLayer(sensor1) && !SvtUtils.getInstance().isTopLayer(sensor2) && baa){
-					if(SvtUtils.getInstance().isAxial(sensor1) && SvtUtils.getInstance().isAxial(sensor2)){
+				} else if(!sensor1.isTopLayer() && !sensor2.isTopLayer() && baa){
+					if(sensor1.isAxial() && sensor2.isAxial()){
 						String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Axial Layer " + layer2;
 						aida.histogram2D(plotName).fill(channel1, channel2);
-					} else if(SvtUtils.getInstance().isAxial(sensor1) && !SvtUtils.getInstance().isAxial(sensor2) && bas){
+					} else if(sensor1.isAxial() && !sensor2.isAxial() && bas){
 						String plotName = "Bottom Channel Correlation: Axial Layer " + layer1 + " vs Stereo Layer " + layer2;
 						aida.histogram2D(plotName).fill(channel1, channel2);
 					}

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SvtHitEfficiency.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,7 +1,6 @@
 package org.hps.users.omoreno;
 
 
-//--- java ---//
 import hep.aida.ICloud2D;
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
@@ -16,16 +15,12 @@
 import java.util.List;
 import java.util.Map;
 
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-import org.hps.recon.tracking.TrackUtils;
-import org.hps.recon.tracking.TrackerHitUtils;
 import org.lcsim.detector.ITransform3D;
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.Point3D;
 import org.lcsim.detector.solids.Polygon3D;
 import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.detector.tracker.silicon.SiStrips;
 import org.lcsim.event.EventHeader;
@@ -33,11 +28,19 @@
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
-//--- lcsim ---//
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
 
+import org.hps.recon.ecal.HPSEcalCluster;
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.TrackerHitUtils;
+
+/**
+ * Analysis driver used to calculate the hit efficiency of the SVT.
+ * 
+ * @author Omar Moreno <[log in to unmask]>
+ *
+ */
 public class SvtHitEfficiency extends Driver {
 
 	private AIDA aida;
@@ -45,6 +48,7 @@
     private List<IHistogram2D> histos2D = new ArrayList<IHistogram2D>();
     private List<IPlotter> plotters = new ArrayList<IPlotter>();
     private Map<SiSensor, Map<Integer, Hep3Vector>> stripPositions = new HashMap<SiSensor, Map<Integer, Hep3Vector>>(); 
+    private List<HpsSiSensor> sensors = null;
     TrackerHitUtils trackerHitUtils = new TrackerHitUtils();
     
     boolean debug = false;
@@ -79,6 +83,7 @@
     // Constants
     public static final double SENSOR_LENGTH = 98.33; // mm
     public static final double SENSOR_WIDTH = 38.3399; // mm
+    private static final String SUBDETECTOR_NAME = "Tracker";
 
     /**
      * Default Ctor
@@ -102,6 +107,9 @@
     
     public void detectorChanged(Detector detector){
     	
+    	// Get the list of sensors
+    	sensors = detector.getSubdetector(SUBDETECTOR_NAME).getDetectorElement().findDescendants(HpsSiSensor.class);
+    	
         // setup AIDA
         aida = AIDA.defaultInstance();
         aida.tree().cd("/");
@@ -114,7 +122,7 @@
         // Create a Map from sensor to bad channels and from bad channels to
         // strip position
         for(ChargeCarrier carrier : ChargeCarrier.values()){
-            for(SiSensor sensor : SvtUtils.getInstance().getSensors()){ 
+            for(SiSensor sensor : sensors){ 
                 if(sensor.hasElectrodesOnSide(carrier)){ 
                     stripPositions.put(sensor, new HashMap<Integer, Hep3Vector>());
                     SiStrips strips = (SiStrips) sensor.getReadoutElectrodes(carrier);     
@@ -182,24 +190,24 @@
                 title = "Track Position - Layer " + index + " - Difference";
                 cloud2D = aida.cloud2D(title);
                 PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, 1, "x [mm]", "y [mm]", cloud2D, style);
-                sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+                //sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
+                //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 2, "Channel #", histo1D);
-                sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+                //sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
+                //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 4, "Channel #", histo1D);
                 layerNumber++;
-                sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+                //sensor = SvtUtils.getInstance().getBottomSensor(layerNumber, 0);
+                //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 3, "Channel #", histo1D);
-                sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+                //sensor = SvtUtils.getInstance().getTopSensor(layerNumber, 0);
+                //title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, 5, "Channel #", histo1D);
@@ -338,14 +346,14 @@
     		
     		List<SiSensor> sensors = new ArrayList<SiSensor>();
     		if(TrackUtils.getZ0(track) > 0){
-    			sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
-        		sensors.add(SvtUtils.getInstance().getTopSensor(layer+1, 0));
+    			//sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
+        		//sensors.add(SvtUtils.getInstance().getTopSensor(layer+1, 0));
     		} else { 
-    			sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
-        		sensors.add(SvtUtils.getInstance().getBottomSensor(layer+1, 0));
+    			//sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
+        		//sensors.add(SvtUtils.getInstance().getBottomSensor(layer+1, 0));
     		}
-    		aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(0)) + " - Occupancy").fill(this.findIntersectingChannel(frontTrackPos, sensors.get(0)));
-            aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(1)) + " - Occupancy").fill(this.findIntersectingChannel(rearTrackPos, sensors.get(1)));
+    		//aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(0)) + " - Occupancy").fill(this.findIntersectingChannel(frontTrackPos, sensors.get(0)));
+            //aida.histogram1D(SvtUtils.getInstance().getDescription(sensors.get(1)) + " - Occupancy").fill(this.findIntersectingChannel(rearTrackPos, sensors.get(1)));
     		
            if(debug)
         	   System.out.println(this.getClass().getSimpleName() + ": Stereo hit was not found.");
@@ -371,13 +379,13 @@
         
         
         
-        List<SiSensor> sensors = new ArrayList<SiSensor>();
+        List<HpsSiSensor> sensors = new ArrayList<HpsSiSensor>();
         if(TrackUtils.getZ0(track) > 0){
-           sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
-           sensors.add(SvtUtils.getInstance().getTopSensor(layer + 1, 0));
+           //sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
+           //sensors.add(SvtUtils.getInstance().getTopSensor(layer + 1, 0));
         } else {
-            sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
-            sensors.add(SvtUtils.getInstance().getBottomSensor(layer + 1, 0));
+           //sensors.add(SvtUtils.getInstance().getBottomSensor(layer, 0));
+           //sensors.add(SvtUtils.getInstance().getBottomSensor(layer + 1, 0));
         }
         
         Hep3Vector frontSensorPos = sensors.get(0).getGeometry().getPosition();
@@ -432,7 +440,6 @@
 			}
 		}
     
-		this.printDebug(SvtUtils.getInstance().getDescription(sensor) + ": Track intersects physical channel " + intersectingChannel);
 		
 		return intersectingChannel;
     }
@@ -440,16 +447,16 @@
     /**
      *
      */
-    public boolean sensorContainsTrack(Hep3Vector trackPosition, SiSensor sensor){
+    public boolean sensorContainsTrack(Hep3Vector trackPosition, HpsSiSensor sensor){
 
     	
     	if(maskBadChannels){
     		int intersectingChannel = this.findIntersectingChannel(trackPosition, sensor);
     		if(intersectingChannel == 0 || intersectingChannel == 638) return false;
     	    
-    		if(HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel) 
-    				|| HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel+1) 
-    				|| HPSSVTCalibrationConstants.isBadChannel(sensor, intersectingChannel-1)){
+    		if(sensor.isBadChannel(intersectingChannel) 
+    				|| sensor.isBadChannel(intersectingChannel+1) 
+    				|| sensor.isBadChannel(intersectingChannel-1)){
     			this.printDebug("Track intersects a bad channel!");
     			return false;
     		}
@@ -460,10 +467,6 @@
         Hep3Vector sensorPos = sensor.getGeometry().getPosition();   
         Box sensorSolid = (Box) sensor.getGeometry().getLogicalVolume().getSolid();
         Polygon3D sensorFace = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
-        if(debug){
-        	System.out.println(this.getClass().getSimpleName() + ": Sensor: " + SvtUtils.getInstance().getDescription(sensor));
-        	System.out.println(this.getClass().getSimpleName() + ": Track Position: " + trackPosition.toString());
-        }
         
         List<Point3D> vertices = new ArrayList<Point3D>();
         for(int index = 0; index < 4; index++){

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SvtPerformance.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtPerformance.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -11,10 +11,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.recon.tracking.ShapeFitParameters;
-import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
@@ -26,11 +22,13 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+import org.hps.recon.tracking.ShapeFitParameters;
+import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
+
 /**
  * Driver that looks at the performance of the SVT.
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id:$
  */
 public class SvtPerformance extends Driver {
 
@@ -307,7 +305,6 @@
         int channel, bad_channel;
         int maxClusterChannel = 0;
         int hitsPerCluster = 0;
-        ChannelConstants constants = null;
         double clusterAmplitude, maxClusterAmplitude;
         double noise = 0;
         double trkChiSquared = 0;
@@ -358,8 +355,8 @@
                         RawTrackerHit rawHit = (RawTrackerHit) rh;
                         channel = rawHit.getIdentifierFieldValue("strip");
                         // Check if the channel neighbors a channel that has been tagged as bad
-                        if (HPSSVTCalibrationConstants.isBadChannel(sensor, channel + 1)
-                                || HPSSVTCalibrationConstants.isBadChannel(sensor, channel - 1)) {
+                        if (sensor.isBadChannel(channel + 1)
+                                || sensor.isBadChannel(channel - 1)) {
                             bad_channel = 1;
                         }
 
@@ -380,7 +377,6 @@
                             }
                         }
 
-                        constants = HPSSVTCalibrationConstants.getChannelConstants(sensor, channel);
                         for (ShapeFitParameters fit : shaperFitter.fitShape(rawHit)) {
                             if (fit.getAmp() > maxClusterAmplitude) {
                                 maxClusterChannel = channel;

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SvtQA.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtQA.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtQA.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,33 +1,19 @@
 package org.hps.users.omoreno;
 
-//--- HEP ---//
 import static org.hps.conditions.deprecated.HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR;
-//--- hps-java ---//
-//--- Constants ---//
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 
 import java.io.BufferedWriter;
 import java.io.FileWriter;
-//--- Java ---//
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
-import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FittedRawTrackerHit;
-import org.hps.recon.tracking.ShapeFitParameters;
-import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
-import org.hps.recon.tracking.TrackUtils;
-import org.hps.recon.tracking.apv25.SvtReadout;
-//--- lcsim ---//
-import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
@@ -40,12 +26,19 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+import org.hps.recon.tracking.FittedRawTrackerHit;
+import org.hps.recon.tracking.ShapeFitParameters;
+import org.hps.recon.tracking.ShaperAnalyticFitAlgorithm;
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.apv25.SvtReadout;
+
+
 /**
  * SVT Quality Assurance Driver
  *  
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SvtQA.java,v 1.7 2013/10/25 19:45:01 jeremy Exp $
  */
+// TODO: Split this driver up.
 public class SvtQA extends Driver {
 
     private AIDA aida;
@@ -55,6 +48,7 @@
     private List<IPlotter>     plotters = new ArrayList<IPlotter>();
     private Map<String, double[]> sensorToOccupancy = new HashMap<String, double[]>();
     private Map<String, double[]> sensorToStereoOccupancy = new HashMap<String, double[]>();
+    List<HpsSiSensor> sensors = null; 
     BufferedWriter output = null;
 
     String outputFile = null;
@@ -238,7 +232,7 @@
         aida.tree().cd("/");
 
         //
-        Set<SiSensor> sensors = SvtUtils.getInstance().getSensors();
+        sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class); 
         int plotterIndex = 0;
         IHistogram1D histo1D = null;
         IHistogram2D histo2D = null;
@@ -248,9 +242,9 @@
         //-----------------//
         if(enableOccupancy){
             plotters.add(PlotUtils.setupPlotter("Occupancy", 5, 4));
-            for(SiSensor sensor : sensors){
-                sensorToOccupancy.put(SvtUtils.getInstance().getDescription(sensor), new double[640]);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+            for(HpsSiSensor sensor : sensors){
+                sensorToOccupancy.put(sensor.getName(), new double[640]);
+                title = sensor.getName() + " - Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", histo1D);
@@ -262,9 +256,9 @@
         //----------------------------//
         if(enableStereoHitOccupancy){
             plotters.add(PlotUtils.setupPlotter("Stereo Hit Occupancy", 5, 4));
-            for(SiSensor sensor : sensors){
-                sensorToStereoOccupancy.put(SvtUtils.getInstance().getDescription(sensor), new double[640]);
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
+            for(HpsSiSensor sensor : sensors){
+                sensorToStereoOccupancy.put(sensor.getName(), new double[640]);
+                title = sensor.getName() + " - Stereo Hit Occupancy";
                 histo1D = aida.histogram1D(title, 640, 0, 639);
                 histos1D.add(histo1D);
                 PlotUtils.setup1DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", histo1D);
@@ -277,8 +271,8 @@
         if(enableADCvsChannel){
             if(sensorName.equals("all")){
                 plotters.add(PlotUtils.setupPlotter("ADC Counts vs Channel #", 5, 4));
-                for(SiSensor sensor : sensors){
-                    title = SvtUtils.getInstance().getDescription(sensor) + " - ADC Counts vs Channel #";
+                for(HpsSiSensor sensor : sensors){
+                    title = sensor.getName() + " - ADC Counts vs Channel #";
                     histo2D = aida.histogram2D(title, 640, 0, 639, 300, 0, 10000);
                     histos2D.add(histo2D);
                     PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", "ADC Counts", histo2D);
@@ -377,8 +371,8 @@
             if(sensorName.equals("all")){
                 plotters.add(PlotUtils.setupPlotter("t0 Resolution vs Channel #", 5, 4));
                 plotters.get(plotterIndex).style().zAxisStyle().setParameter("scale", "log");
-                for(SiSensor sensor : sensors){
-                    title = SvtUtils.getInstance().getDescription(sensor) + " - t0 Resolution vs Channel #";
+                for(HpsSiSensor sensor : sensors){
+                    title = sensor.getName() + " - t0 Resolution vs Channel #";
                     histo2D = aida.histogram2D(title, 640, 0, 639, 40, -20, 20);
                     histos2D.add(histo2D);
                     PlotUtils.setup2DRegion(plotters.get(plotterIndex), title, PlotUtils.getPlotterRegion(sensor), "Channel #", "t0 Resolution [ns]", histo2D);
@@ -448,13 +442,12 @@
             aida.histogram1D("Total Number of RawTrackerHits").fill(rawHits.size());
         }
 
-        SiSensor sensor = null;
-        ChannelConstants constants = null;
+        HpsSiSensor sensor = null;
         ShapeFitParameters fit = null;
         for(RawTrackerHit rawHit : rawHits){
 
             // Get the sensor on which this hit occurred
-            sensor = (SiSensor) rawHit.getDetectorElement();
+            sensor = (HpsSiSensor) rawHit.getDetectorElement();
 
             // Get the shaper signal samples
             short[] samples = rawHit.getADCValues();
@@ -473,17 +466,17 @@
 
             // Fill the occupancy plots
             if(enableOccupancy){
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+                title = sensor.getName() + " - Occupancy";
                 aida.histogram1D(title).fill(channel, 1);
             }
 
             // Fill ADC vs Channel # plots
             if(enableADCvsChannel && sensorName.equals("all")){
-                title = SvtUtils.getInstance().getDescription(sensor) + " - ADC Counts vs Channel #";
+                title = sensor.getName() + " - ADC Counts vs Channel #";
                 for(short sample : samples){
                     aida.histogram2D(title).fill(channel, sample);
                 }
-            } else if(enableADCvsChannel && SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+            } else if(enableADCvsChannel && sensor.getName().equals(sensorName)){
                 title = sensorName + " - ADC Counts vs Channel #";
                 for(short sample : samples){
                     aida.histogram2D(title).fill(channel, sample);
@@ -491,7 +484,7 @@
             }
 
             // 
-            if(enableChannelPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && channel == channelNumber){
+            if(enableChannelPlots && sensor.getName().equals(sensorName) && channel == channelNumber){
                 title = "ADC Counts";
                 for(short sample : samples){
                     aida.histogram1D(title).fill(sample);
@@ -504,7 +497,7 @@
                 System.out.println("t0 " + fit.getT0());
             }
 
-            if(enableAPVPlots && SvtUtils.getInstance().getDescription(sensor).equals(sensorName) && apv == apvNumber ){
+            if(enableAPVPlots && sensor.getName().equals(sensorName) && apv == apvNumber ){
                 title = "APV " + apvNumber + " - ADC Counts";
                 for(short sample : samples){
                     aida.histogram1D(title).fill(sample);
@@ -520,12 +513,12 @@
 
         /*
         if(enableOccupancy){
-            for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+            for(HpsSiSensor sensor : sensors){
+                title = sensor.getName() + " - Occupancy";
                 aida.histogram1D(title).reset();
                 int nEvents = simulation ? SvtReadout.getNumberOfTriggers()  : totalNumberEvents; 
                 for(int index = 0; index < 640; index++){
-                    aida.histogram1D(title).fill(index, sensorToOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[index]/nEvents);
+                    aida.histogram1D(title).fill(index, sensorToOccupancy.get(sensor.getName())[index]/nEvents);
                 }
             }
         }*/
@@ -548,10 +541,10 @@
             int channel = fittedHit.getRawTrackerHit().getIdentifierFieldValue("strip");
 
             // Get the sensor number 
-            sensor = (SiSensor) fittedHit.getRawTrackerHit().getDetectorElement();
+            sensor = (HpsSiSensor) fittedHit.getRawTrackerHit().getDetectorElement();
 
             // Fill Chi Squared vs Channel # plots
-            if(enableChiSquaredvsChannel && SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+            if(enableChiSquaredvsChannel && sensor.getName().equals(sensorName)){
                 title = sensorName + " - Chi Squared vs Channel #";
                 //aida.histogram2D(title).fill(channel, fittedHit.getShapeFitParameters().getChiSq());
             }
@@ -574,7 +567,7 @@
 
                 RawTrackerHit rawHit = (RawTrackerHit) hit;
 
-                sensor = (SiSensor) rawHit.getDetectorElement();
+                sensor = (HpsSiSensor) rawHit.getDetectorElement();
 
                 // Get the channel number
                 int channel = rawHit.getIdentifierFieldValue("strip");
@@ -589,8 +582,8 @@
                 short[] samples = rawHit.getADCValues();
 
                 if(enableStereoHitOccupancy){
-                    title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
-                    sensorToStereoOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[channel] += 1;
+                    title = sensor.getName() + " - Stereo Hit Occupancy";
+                    sensorToStereoOccupancy.get(sensor.getName())[channel] += 1;
                 }
 
                 // Fill Sample Plots
@@ -598,15 +591,15 @@
                     if(fit.getAmp() > 2000 && fit.getAmp() < 6000){
                         for(int sampleN = 1; sampleN <= samples.length; sampleN++){
                             if((sampleN == 1 && totalNumberEvents%5 != 0) || (sampleN == 2 && totalNumberEvents%5 != 0)/* || (sampleN == 3 && totalNumberEvents%3 != 0) */) continue;
-                            if(SvtUtils.getInstance().isTopLayer(sensor)){
-                                aida.histogram2D("APV Sample Number vs Sample Amplitude - Top").fill(sampleN, samples[sampleN-1] - constants.getPedestal());
+                            if(sensor.isTopLayer()){
+                                aida.histogram2D("APV Sample Number vs Sample Amplitude - Top").fill(sampleN, samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1));
                                 totalTopSamples[sampleN-1]++;
-                                topSamples[sampleN-1] += samples[sampleN-1] - constants.getPedestal();
+                                topSamples[sampleN-1] += samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1);
                             }
                             else{
-                            	aida.histogram2D("APV Sample Number vs Sample Amplitude - Bottom").fill(sampleN, samples[sampleN-1] - constants.getPedestal());
+                            	aida.histogram2D("APV Sample Number vs Sample Amplitude - Bottom").fill(sampleN, samples[sampleN-1] - sensor.getPedestal(channel, sampleN-1));
                             	totalBottomSamples[sampleN-1]++;
-                            	bottomSamples[sampleN-1] += samples[sampleN - 1] - constants.getPedestal();
+                            	bottomSamples[sampleN-1] += samples[sampleN - 1] - sensor.getPedestal(channel, sampleN-1);
                             }
                         }
                     }
@@ -616,11 +609,11 @@
 
         /*
         if(enableStereoHitOccupancy){
-            for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
-                title = SvtUtils.getInstance().getDescription(sensor) + " - Stereo Hit Occupancy";
+            for(HpsSiSensor sensor : sensors){
+                title = sensor.getName() + " - Stereo Hit Occupancy";
                 aida.histogram1D(title).reset();
                 for(int index = 0; index < 640; index++){
-                    aida.histogram1D(title).fill(index, sensorToStereoOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[index]/event.getEventNumber());
+                    aida.histogram1D(title).fill(index, sensorToStereoOccupancy.get(sensor.getName())[index]/event.getEventNumber());
                 }
             }
         }*/
@@ -658,19 +651,19 @@
 
                     for(HelicalTrackStrip hts : htc.getStrips()){
 
-                        //SiSensor sensor = null;
+                        //HpsSiSensor sensor = null;
                         if(TrackUtils.getZ0(track) > 0){
-                            sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
+                            //sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
                         } else if(TrackUtils.getZ0(track) < 0){
-                            sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
+                            //sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
                         }
 
                         int channel = ((RawTrackerHit) hts.rawhits().get(0)).getIdentifierFieldValue("strip");
                         
                         if(sensorName.equals("all")){
-                        	aida.histogram2D(SvtUtils.getInstance().getDescription(sensor) + " - t0 Resolution vs Channel #").fill(channel, meanT0 - hts.time());
+                        	aida.histogram2D(sensor.getName() + " - t0 Resolution vs Channel #").fill(channel, meanT0 - hts.time());
                         } else {
-                        if(SvtUtils.getInstance().getDescription(sensor).equals(sensorName)){
+                        if(sensor.getName().equals(sensorName)){
                             aida.histogram1D(sensorName + " - Hit Time Resolution").fill(meanT0 - hts.time());
                         }
                         
@@ -690,22 +683,22 @@
     		
             String plotName;
     		if(enableOccupancy){
-    			for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
-    				title = SvtUtils.getInstance().getDescription(sensor) + " - Occupancy";
+    			for(HpsSiSensor sensor : sensors){
+    				title = sensor.getName() + " - Occupancy";
     				// Scale the hits per channel by the number of events
     				aida.histogram1D(title).scale(1/totalNumberEvents);
     				
     				// Write the occupancies to a file
-    				if(SvtUtils.getInstance().isTopLayer(sensor)){
+    				if(sensor.isTopLayer()){
     					plotName = outputFile + "_top_";
     				} else { 
     					plotName = outputFile + "_bottom_";
     				}
     				
-					if(SvtUtils.getInstance().getLayerNumber(sensor) < 10){
-						plotName += "0" + SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
+					if(sensor.getLayerNumber() < 10){
+						plotName += "0" + sensor.getLayerNumber() + ".dat";
 					} else {
-						plotName += SvtUtils.getInstance().getLayerNumber(sensor) + ".dat";
+						plotName += sensor.getLayerNumber() + ".dat";
 					}
     			
 	    			// Open the output files stream
@@ -730,11 +723,10 @@
     			}
     		}
     	
-            System.out.println("Total Bad Channels: " + HPSSVTCalibrationConstants.getTotalBadChannels() + "\n");
             	
             	/*
-                for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
-                    	if(outputFile != null && sensorName.equals(SvtUtils.getInstance().getDescription(sensor))){
+                for(HpsSiSensor sensor : sensors){
+                    	if(outputFile != null && sensorName.equals(sensor.getName())){
                     		try{
                     			for(int channel = 0; channel < 639; channel++){
     								output.write(channel + " " + this.getOccupancy(sensor, channel) + "\n");
@@ -746,7 +738,7 @@
                     	}
                 	
                 	System.out.println("%===================================================================%");
-                    System.out.println(SvtUtils.getInstance().getDescription(sensor) + " Bad Channels");
+                    System.out.println(sensor.getName() + " Bad Channels");
                     System.out.println("%===================================================================%");
                     for(int index = 0; index < 640; index++){
 
@@ -758,9 +750,9 @@
             }*/
 
             if(enableStereoHitOccupancy){
-                for(SiSensor sensor : SvtUtils.getInstance().getSensors()){
+                for(HpsSiSensor sensor : sensors){
                     System.out.println("%===================================================================% \n");
-                    System.out.println(SvtUtils.getInstance().getDescription(sensor) + " Bad Channels");
+                    System.out.println(sensor.getName() + " Bad Channels");
                     System.out.println("%===================================================================% \n");
                     for(int index = 0; index < 640; index++){
                         // Check is the channel can be considered bad    
@@ -798,16 +790,16 @@
             }
         }
 
-    public double getOccupancy(SiSensor sensor, int channel){
+    public double getOccupancy(HpsSiSensor sensor, int channel){
         if(!enableOccupancy) throw new RuntimeException("Occupancy calculation was not enabled!"); 
         double nEvents = simulation ? SvtReadout.getNumberOfTriggers()  : totalNumberEvents; 
-        return sensorToOccupancy.get(SvtUtils.getInstance().getDescription(sensor))[channel]/nEvents;
+        return sensorToOccupancy.get(sensor.getName())[channel]/nEvents;
     }
 
-    public void checkChannel(SiSensor sensor, int channel){
+    public void checkChannel(HpsSiSensor sensor, int channel){
         if(!enableOccupancy) throw new RuntimeException("Occupancy calculation was not enabled!");
 
-        if(HPSSVTCalibrationConstants.isBadChannel(sensor, channel)) return;
+        if(sensor.isBadChannel(channel)) return;
 
         // Find the occupancy of the current channel
         double currentChannelOccu = this.getOccupancy(sensor, channel);
@@ -821,13 +813,13 @@
         // Find the occupancy of the neighboring channels
         if(channel == 0){
             double rNeighborOccu = this.getOccupancy(sensor, channel+1);
-            if(rNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel+1)) return; 
+            if(rNeighborOccu == 0 || sensor.isBadChannel(channel+1)) return; 
             double rOccuDiff = Math.abs(rNeighborOccu - currentChannelOccu)/rNeighborOccu;
             if(rOccuDiff >= maxOccupancyVariation)
                 System.out.println("Channel " + channel + ": Channel Variation exceeds maximum -- RVar: " + rOccuDiff);
         } else if(channel == 638){
             double lNeighborOccu = this.getOccupancy(sensor, channel-1);
-            if(lNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel-1)) return;
+            if(lNeighborOccu == 0 || sensor.isBadChannel(channel-1)) return;
             double lOccuDiff = Math.abs(lNeighborOccu - currentChannelOccu)/lNeighborOccu;
             if(lOccuDiff >= maxOccupancyVariation)
                 System.out.println("Channel " + channel + ": Channel Variation exceeds maximum -- LVar: " + lOccuDiff);
@@ -837,8 +829,8 @@
         else { 
             double rNeighborOccu = this.getOccupancy(sensor, channel+1);  
             double lNeighborOccu = this.getOccupancy(sensor, channel-1);
-            if(rNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel+1)
-                    || lNeighborOccu == 0 || HPSSVTCalibrationConstants.isBadChannel(sensor, channel-1)) return;
+            if(rNeighborOccu == 0 || sensor.isBadChannel(channel+1)
+                    || lNeighborOccu == 0 || sensor.isBadChannel(channel-1)) return;
             double rOccuDiff = Math.abs(rNeighborOccu - currentChannelOccu)/rNeighborOccu;
             double lOccuDiff = Math.abs(lNeighborOccu - currentChannelOccu)/lNeighborOccu;
             if(rOccuDiff >= maxOccupancyVariation && lOccuDiff >= maxOccupancyVariation){

java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno
SvtTrackRecoEfficiency.java 1198 -> 1199
--- java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java	2014-10-15 05:30:14 UTC (rev 1198)
+++ java/branches/hps-java_HPSJAVA-88/users/src/main/java/org/hps/users/omoreno/SvtTrackRecoEfficiency.java	2014-10-15 06:28:19 UTC (rev 1199)
@@ -1,12 +1,9 @@
 package org.hps.users.omoreno;
 
-//--- java ---//
-//--- aida ---//
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 import hep.physics.vec.BasicHep3Vector;
-//--- hep ---//
 import hep.physics.vec.Hep3Vector;
 import hep.physics.vec.VecOp;
 
@@ -20,10 +17,8 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.hps.analysis.examples.TrackAnalysis;
-import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.FindableTrack;
-import org.lcsim.detector.tracker.silicon.SiSensor;
+
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.RawTrackerHit;
@@ -38,11 +33,12 @@
 import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
 import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
 import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
-//--- lcsim ---//
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-//--- hps-java ---//
 
+import org.hps.analysis.examples.TrackAnalysis;
+import org.hps.recon.tracking.FindableTrack;
+
 /**
  * 
  * @author Omar Moreno <[log in to unmask]>
@@ -56,6 +52,7 @@
     private List<IHistogram2D> histo2D  = new ArrayList<IHistogram2D>();
     private Map<Integer, List<SimTrackerHit>> topSimTrackerHitsList = new HashMap<Integer, List<SimTrackerHit>>();
     private Map<Integer, List<SimTrackerHit>> bottomSimTrackerHitsList = new HashMap<Integer, List<SimTrackerHit>>();
+    private List<HpsSiSensor> sensors = null;
 
     FindableTrack findable = null;
     TrackAnalysis trkAnalysis = null;
@@ -138,6 +135,8 @@
     protected void detectorChanged(Detector detector){
     	super.detectorChanged(detector);
     	
+    	sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(HpsSiSensor.class);
+    	
         // setup AIDA
         aida = AIDA.defaultInstance();
         aida.tree().cd("/");
@@ -154,7 +153,7 @@
         
         // Get the total number of SVT layers
         // TODO: Get the total number of Si planes from the SVT geometry 
-        totalSvtLayers = SvtUtils.getInstance().getSensors().size()/2; 
+        totalSvtLayers = sensors.size()/2; 
         System.out.println("The SVT has a total of " + totalSvtLayers + " layers");
         
         
@@ -215,20 +214,20 @@
         List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
         String volume; 
         for(RawTrackerHit rawHit : rawHits){
-        	if(SvtUtils.getInstance().isTopLayer((SiSensor)rawHit.getDetectorElement())){
+        	HpsSiSensor sensor = (HpsSiSensor) rawHit.getDetectorElement();
+        	if(sensor.isTopLayer()){
         		volume = "Top Volume ";
         	} else { 
         		volume = "Bottom Volume ";
         	}
     		this.printDebug(volume + "RawTrackerHit Channel #: " + rawHit.getIdentifierFieldValue("strip") + " Layer Number: " + rawHit.getLayerNumber()
     				+ " Samples: " + samplesToString(rawHit.getADCValues()));
-            ((SiSensor) rawHit.getDetectorElement()).getReadout().addHit(rawHit);
+            ((HpsSiSensor) rawHit.getDetectorElement()).getReadout().addHit(rawHit);
         }
         
         if(event.hasCollection(SiTrackerHit.class, siTrackerHitCollectionName)){
         	List<SiTrackerHit> hitlist = event.get(SiTrackerHit.class, siTrackerHitCollectionName);
         	for(SiTrackerHit siTrackerHit : hitlist){
-        		this.printDebug("Cluster layer: " + SvtUtils.getInstance().getLayerNumber(siTrackerHit.getSensor()));
     			this.printDebug("Cluster is comprised by the following raw hits:");
         		for(RawTrackerHit rawHit : siTrackerHit.getRawHits()){
             		this.printDebug("RawTrackerHit Channel #: " + rawHit.getIdentifierFieldValue("strip") + " Layer Number: " + rawHit.getLayerNumber());
@@ -314,9 +313,9 @@
                 boolean[] planesHit = new boolean[totalSvtLayers];
                 
                 // Clear the sensor readout's and then add the SimTrackerHits from  the MC particles to them
-                for(SiSensor sensor : SvtUtils.getInstance().getSensors()) sensor.getReadout().clear();
+                for(HpsSiSensor sensor : sensors) sensor.getReadout().clear();
                 for(SimTrackerHit simHitTrackerHit : simHits){
-                    ((SiSensor) simHitTrackerHit.getDetectorElement()).getReadout().addHit(simHitTrackerHit);
+                    ((HpsSiSensor) simHitTrackerHit.getDetectorElement()).getReadout().addHit(simHitTrackerHit);
                 }
                 
                 // Clear all previously stored simTrackerHits
@@ -327,7 +326,8 @@
                 
                 // Determine if the MC particle passed through the top or bottom SVT volume
                 for(SimTrackerHit simHit : simHits){
-                    if(SvtUtils.getInstance().isTopLayer((SiSensor) simHit.getDetectorElement())){
+                	HpsSiSensor sensor = (HpsSiSensor) simHit.getDetectorElement();
+                    if(sensor.isTopLayer()){
                         this.printDebug("MC Particle passed through the top layer");
                         isTopTrack = true;
                         break;
@@ -376,7 +376,8 @@
     {
         int volumeIndex = 0;
         for(SimTrackerHit simTrackerHit : simTrackerHits){
-            if(SvtUtils.getInstance().isTopLayer((SiSensor) simTrackerHit.getDetectorElement())) volumeIndex++;
+        	HpsSiSensor sensor = (HpsSiSensor) simTrackerHit.getDetectorElement();
+            if(sensor.isTopLayer()) volumeIndex++;
             else volumeIndex--;
         }
         return Math.abs(volumeIndex) == simTrackerHits.size();
SVNspam 0.1