Commit in hps-java on MAIN
src/main/java/org/lcsim/hps/recon/tracking/SvtUtils.java+117-1121.3 -> 1.4
                                          /HPSSVTSensorSetup.java+45-511.8 -> 1.9
                                          /HPSSVTData.java+31-31.6 -> 1.7
                                          /SVTDataToRawTrackerHitDriver.java-1191.13 removed
src/main/resources/org/lcsim/hps/steering/HPSTestRunOnlineTracking.lcsim+1-51.3 -> 1.4
                                         /SensorOccupancyPlots.lcsim-41.1 -> 1.2
                                         /OfflineTrackingAxial.lcsim+1-61.2 -> 1.3
                                         /TestRunMonitoring.lcsim-21.20 -> 1.21
                                         /OnlineTracking.lcsim-51.13 -> 1.14
                                         /HPSTestRunOfflineTracking.lcsim+1-51.2 -> 1.3
                                         /TestRunEventDisplay.lcsim-21.6 -> 1.7
                                         /EcalGainDriverSim.lcsim+2-21.1 -> 1.2
                                         /MultScatAna.lcsim-61.3 -> 1.4
                                         /SVTMonitoring.lcsim-41.1 -> 1.2
                                         /TestRunCnv.lcsim-151.2 removed
                                         /FastTracking.lcsim-711.5 removed
sandbox/TestRunCnv.lcsim+15added 1.1
       /FastTracking.lcsim+69added 1.1
       /SVTDataToRawTrackerHitDriver.java+119added 1.1
src/main/java/org/lcsim/hps/evio/SVTEvioReader_RTH.java+170added 1.1
                                /LCSimTestRunEventBuilder.java+2-21.19 -> 1.20
                                /SVTEvioReader.java+1-31.7 -> 1.8
src/main/java/org/lcsim/hps/users/meeg/FilterMCBunches.java+9-71.5 -> 1.6
src/main/java/org/lcsim/hps/users/phansson/ECalGainDriver.java+24-71.3 -> 1.4
src/main/java/org/lcsim/hps/recon/ecal/TestRunRateAnalysis.java+4-41.2 -> 1.3
+611-435
4 added + 3 removed + 18 modified, total 25 files
read RawTrackerHits directly from EVIO or LCIO

hps-java/src/main/java/org/lcsim/hps/recon/tracking
SvtUtils.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SvtUtils.java	12 Jul 2012 20:19:37 -0000	1.3
+++ SvtUtils.java	14 Aug 2012 00:58:03 -0000	1.4
@@ -22,217 +22,222 @@
 /**
  * 
  * @author Omar Moreno
- * @version $Id: SvtUtils.java,v 1.3 2012/07/12 20:19:37 omoreno Exp $
+ * @version $Id: SvtUtils.java,v 1.4 2012/08/14 00:58:03 meeg Exp $
  */
 public class SvtUtils {
-		
-	// Use eager Singleton initialization since an instance will always be needed
-	private static final SvtUtils INSTANCE = new SvtUtils();
-	
+
+    // Use eager Singleton initialization since an instance will always be needed
+    private static final SvtUtils INSTANCE = new SvtUtils();
     // Set of sensors
     private Set<SiSensor> sensors = new HashSet<SiSensor>();
-    
     // Map from Sensor to Hybrid/FPGA pair
-    private Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair
-    	= new HashMap<SiSensor, Pair<Integer, Integer>>();
-    
+    private Map<SiSensor /* Sensor */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> sensorToDAQPair = new HashMap<SiSensor, Pair<Integer, Integer>>();
     // Map from Hybrid/FPGA pair
-    private Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor*/> daqPairToSensor
-   		= new HashMap<Pair<Integer, Integer>, SiSensor>();
-    
+    private Map<Pair<Integer /* Hybrid */, Integer /* FPGA */>, SiSensor /* Sensor*/> daqPairToSensor = new HashMap<Pair<Integer, Integer>, SiSensor>();
     // Map from SVT top layer to Hybrid/FPGA pair
-    private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> topLayerToDAQ
-    	= new HashMap<Integer, Pair<Integer, Integer>>();
-    
+    private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> topLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
     // Map from SVT bottom layer to Hybrid/FPGA pair
-    private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> bottomLayerToDAQ
-    	= new HashMap<Integer, Pair<Integer, Integer>>();
-    
+    private Map<Integer /* Layer # */, Pair<Integer /* Hybrid */, Integer /* FPGA */>> bottomLayerToDAQ = new HashMap<Integer, Pair<Integer, Integer>>();
     // Map sensor to an SVT top layer
-    private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer
-    	= new HashMap<SiSensor, Integer>();
-    
+    private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToTopLayer = new HashMap<SiSensor, Integer>();
     // Map sensor to an SVT bottom layer
-    private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer
-    	= new HashMap<SiSensor, Integer>();
-    
+    private Map<SiSensor /* Sensor */, Integer /* Layer */> sensorToBottomLayer = new HashMap<SiSensor, Integer>();
     // Map sensor to descriptor
-    private Map<SiSensor /* Sensor */, String /* Description */> sensorToDescriptor
-        = new HashMap<SiSensor, String>();
-
+    private Map<SiSensor /* Sensor */, String /* Description */> sensorToDescriptor = new HashMap<SiSensor, String>();
     private SiSensor[][] sensorArray = new SiSensor[2][10];
-    
     private IIdentifierHelper helper;
-    
-	boolean debug = true;
-	String subdetectorName = "Tracker";
-	ConditionsManager mgr = ConditionsManager.defaultInstance();
-    
-    private SvtUtils(){}
-    
+    private boolean isSetup = false;
+    boolean debug = true;
+    String subdetectorName = "Tracker";
+    ConditionsManager mgr = ConditionsManager.defaultInstance();
+
+    private SvtUtils() {
+    }
+
     /**
      * 
      */
-    public static SvtUtils getInstance(){
-    	return INSTANCE;
+    public static SvtUtils getInstance() {
+        return INSTANCE;
     }
-    
+
+    public boolean isSetup() {
+        return isSetup;
+    }
+
     /**
      * 
      * @param sensor
      * @return
      */
-    public int getLayerNumber(SiSensor sensor){
-    	if(sensorToTopLayer.containsKey(sensor)) return sensorToTopLayer.get(sensor);
-		else if(sensorToBottomLayer.containsKey(sensor)) return sensorToBottomLayer.get(sensor);
-		else throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+    public int getLayerNumber(SiSensor sensor) {
+        if (sensorToTopLayer.containsKey(sensor)) {
+            return sensorToTopLayer.get(sensor);
+        } else if (sensorToBottomLayer.containsKey(sensor)) {
+            return sensorToBottomLayer.get(sensor);
+        } else {
+            throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+        }
     }
-    
+
     /**
      * 
      */
-    public boolean isTopLayer(SiSensor sensor){
-    	if(sensorToTopLayer.containsKey(sensor)) return true;
-		else if(sensorToBottomLayer.containsKey(sensor)) return false;
-		else throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+    public boolean isTopLayer(SiSensor sensor) {
+        if (sensorToTopLayer.containsKey(sensor)) {
+            return true;
+        } else if (sensorToBottomLayer.containsKey(sensor)) {
+            return false;
+        } else {
+            throw new RuntimeException("There is no layer associated with sensor " + sensor.getName());
+        }
     }
-    
+
     /**
      * 
      */
-    public boolean isAxial(SiSensor sensor){
-    	if(this.isTopLayer(sensor) && this.getLayerNumber(sensor)%2 == 1) return true;
-    	else if(!this.isTopLayer(sensor) && this.getLayerNumber(sensor)%2 == 0) return true;
-    	return false;
+    public boolean isAxial(SiSensor sensor) {
+        if (this.isTopLayer(sensor) && this.getLayerNumber(sensor) % 2 == 1) {
+            return true;
+        } else if (!this.isTopLayer(sensor) && this.getLayerNumber(sensor) % 2 == 0) {
+            return true;
+        }
+        return false;
     }
-    
+
     /**
      * 
      */
-    public SiSensor getSensor(int module, int layer){
-    	if(module < 0 || module > 1)
-    		throw new RuntimeException("Module number " + module + " is out of range!");
-    	else if(layer < 0 || layer > 10)
-    		throw new RuntimeException("Layer number " + layer + " is out of range!");
-    	return sensorArray[module][layer];
+    public SiSensor getSensor(int module, int layer) {
+        if (module < 0 || module > 1) {
+            throw new RuntimeException("Module number " + module + " is out of range!");
+        } else if (layer < 0 || layer > 10) {
+            throw new RuntimeException("Layer number " + layer + " is out of range!");
+        }
+        return sensorArray[module][layer];
     }
-    
+
     /**
      * 
      */
-    public SiSensor getSensor(Pair<Integer, Integer> daqPair){
-    	return this.daqPairToSensor.get(daqPair);
+    public SiSensor getSensor(Pair<Integer, Integer> daqPair) {
+        return this.daqPairToSensor.get(daqPair);
     }
-    
+
     /**
      * 
      * @return
      */
-    public Set<SiSensor> getSensors(){
-    	return sensors;
+    public Set<SiSensor> getSensors() {
+        return sensors;
     }
-    
+
     /**
      * 
      */
-    public int getFPGA(SiSensor sensor){
-    	return this.sensorToDAQPair.get(sensor).getSecondElement();
+    public int getFPGA(SiSensor sensor) {
+        return this.sensorToDAQPair.get(sensor).getSecondElement();
     }
-    
+
     /**
      * 
      */
-    public int getHybrid(SiSensor sensor){
-    	return this.sensorToDAQPair.get(sensor).getFirstElement();
+    public int getHybrid(SiSensor sensor) {
+        return this.sensorToDAQPair.get(sensor).getFirstElement();
     }
-    
+
     /**
      * 
      */
-    public Pair<Integer, Integer> getDaqPair(SiSensor sensor){
-    	return this.sensorToDAQPair.get(sensor);
+    public Pair<Integer, Integer> getDaqPair(SiSensor sensor) {
+        return this.sensorToDAQPair.get(sensor);
     }
 
     public IIdentifierHelper getHelper() {
         return helper;
     }
-    
+
     /**
      * 
      */
-    public String getDescription(SiSensor sensor){
+    public String getDescription(SiSensor sensor) {
         return this.sensorToDescriptor.get(sensor);
     }
-    
+
     /**
      * 
      */
-    protected void setupDaqMaps(Detector detector){
-    	
-        if (subdetectorName == null)
+    public void setupDaqMaps(Detector detector) {
+
+        if (subdetectorName == null) {
             throw new RuntimeException("The subdetector name was not set!");
-        
+        }
+
         // Get the SVT DAQ Maps
         ConditionsSet topSvtDaqMap = mgr.getConditions("daqmap/SVTDAQMapTop");
         ConditionsSet bottomSvtDaqMap = mgr.getConditions("daqmap/SVTDAQMapBottom");
         String[] daqPair;
-        
+
         // Loop over the top layers and fill the DAQ map
         for (Object topLayer : topSvtDaqMap.keySet()) {
             daqPair = topSvtDaqMap.getString(topLayer.toString()).split(" ");
-            if (debug)
-                System.out.println("Layer: " + topLayer.toString() + " FPGA: " + daqPair[1] +  " Hybrid: " + daqPair[0] );
+            if (debug) {
+                System.out.println("Layer: " + topLayer.toString() + " FPGA: " + daqPair[1] + " Hybrid: " + daqPair[0]);
+            }
             topLayerToDAQ.put(Integer.parseInt(topLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
         }
-                
-    	// Loop over the bottom layers and fill the DAQ Map
+
+        // Loop over the bottom layers and fill the DAQ Map
         for (Object bottomLayer : bottomSvtDaqMap.keySet()) {
             daqPair = bottomSvtDaqMap.getString(bottomLayer.toString()).split(" ");
-            if (debug)
+            if (debug) {
                 System.out.println("Layer: " + bottomLayer.toString() + " FPGA: " + daqPair[1] + " Hybrid: " + daqPair[0]);
+            }
             bottomLayerToDAQ.put(Integer.parseInt(bottomLayer.toString()), new Pair<Integer, Integer>(Integer.parseInt(daqPair[0]), Integer.parseInt(daqPair[1])));
         }
-        
+
         // Get the SVT
         IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
-        
+
         helper = detectorElement.getIdentifierHelper();
 
         // Get all SVT sensors
-        sensors.addAll(detectorElement.findDescendants(SiSensor.class));    
-    
+        sensors.addAll(detectorElement.findDescendants(SiSensor.class));
+
         IIdentifier sensorIdent;
         SiTrackerIdentifierHelper sensorHelper;
         String description;
-        
+
         // Create the maps
-        for(SiSensor sensor : sensors){
-        	
-        	// Get the sensor identifier
-        	sensorIdent = sensor.getIdentifier();
-        	
+        for (SiSensor sensor : sensors) {
+
+            // Get the sensor identifier
+            sensorIdent = sensor.getIdentifier();
+
             // Get the sensor identifier helper
             sensorHelper = (SiTrackerIdentifierHelper) sensor.getIdentifierHelper();
-            
+
             int layerNumber = sensorHelper.getLayerValue(sensorIdent);
             int moduleNumber = sensorHelper.getModuleValue(sensorIdent);
-        	sensorArray[moduleNumber][layerNumber - 1] = sensor;
-        	
+            sensorArray[moduleNumber][layerNumber - 1] = sensor;
+
             if (moduleNumber == 0) {
-            	sensorToTopLayer.put(sensor, layerNumber);
-            	sensorToDAQPair.put(sensor, this.topLayerToDAQ.get(layerNumber));
-            	daqPairToSensor.put(topLayerToDAQ.get(layerNumber), sensor);
-            	description = "Top Layer " + layerNumber;
-            	sensorToDescriptor.put(sensor, description);
-            } else if(moduleNumber == 1){
+                sensorToTopLayer.put(sensor, layerNumber);
+                sensorToDAQPair.put(sensor, this.topLayerToDAQ.get(layerNumber));
+                daqPairToSensor.put(topLayerToDAQ.get(layerNumber), sensor);
+                description = "Top Layer " + layerNumber;
+                sensorToDescriptor.put(sensor, description);
+            } else if (moduleNumber == 1) {
                 sensorToBottomLayer.put(sensor, layerNumber);
-            	sensorToDAQPair.put(sensor, this.bottomLayerToDAQ.get(layerNumber));
-            	daqPairToSensor.put(bottomLayerToDAQ.get(layerNumber), sensor);
-            	description = "Bottom Layer " + layerNumber;
+                sensorToDAQPair.put(sensor, this.bottomLayerToDAQ.get(layerNumber));
+                daqPairToSensor.put(bottomLayerToDAQ.get(layerNumber), sensor);
+                description = "Bottom Layer " + layerNumber;
                 sensorToDescriptor.put(sensor, description);
-            } else throw new RuntimeException("Invalid Module Number: " + sensorHelper.getModuleValue(sensorIdent));
+            } else {
+                throw new RuntimeException("Invalid Module Number: " + sensorHelper.getModuleValue(sensorIdent));
+            }
         }
-    
+
         for (int module = 0; module < 2; module++) {
             for (int layer = 0; layer < 10; layer++) {
                 if (sensorArray[module][layer] == null) {
@@ -240,6 +245,6 @@
                 }
             }
         }
+        isSetup = true;
     }
-    
 }

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTSensorSetup.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- HPSSVTSensorSetup.java	24 May 2012 17:08:18 -0000	1.8
+++ HPSSVTSensorSetup.java	14 Aug 2012 00:58:03 -0000	1.9
@@ -21,67 +21,61 @@
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
 
-import org.lcsim.hps.recon.tracking.SvtUtils;
-
 /**
  * Setup driver for the HPSTracker subdetector.
  *
  * @author Mathew Graham <[log in to unmask]>
  * @author Omar Moreno   <[log in to unmask]>
  * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: HPSSVTSensorSetup.java,v 1.8 2012/05/24 17:08:18 omoreno Exp $
+ * @version $Id: HPSSVTSensorSetup.java,v 1.9 2012/08/14 00:58:03 meeg Exp $
  */
 public class HPSSVTSensorSetup extends Driver {
-	
+
     boolean debug = false;
-    
     String subdetectorName = "Tracker";
-        
     // Sensor Characteristics
     private double readoutStripPitch = 0.060;    // micro-m
-    private double senseStripPitch   = 0.030;    // micro-m
-    
+    private double senseStripPitch = 0.030;    // micro-m
     private double readoutStripCapacitanceIntercept = 0;
-    private double readoutStripCapacitanceSlope     = 0.16;  // pf/cm
-    private double senseStripCapacitanceIntercept   = 0;
-    private double senseStripCapacitanceSlope      = 0.16;   // pf/cm
-    
+    private double readoutStripCapacitanceSlope = 0.16;  // pf/cm
+    private double senseStripCapacitanceIntercept = 0;
+    private double senseStripCapacitanceSlope = 0.16;   // pf/cm
     private double readoutTransferEfficiency = 0.986;
     private double senseTransferEfficiency = 0.419;
-    
     // Set of sensors
     Set<SiSensor> sensors = new HashSet<SiSensor>();
-    
-    public HPSSVTSensorSetup() {}
+
+    public HPSSVTSensorSetup() {
+    }
 
     public HPSSVTSensorSetup(String subdetectorName) {
         this.subdetectorName = subdetectorName;
     }
-    
+
+    @Override
     public void detectorChanged(Detector detector) {
-        // Call the sub-Driver's detectorChanged methods.
-        super.detectorChanged(detector);
-        
-        if(subdetectorName == null){
+        if (subdetectorName == null) {
             throw new RuntimeException("The subdetector name was not set!");
         }
-        
+
         // Get the SVT
-        IDetectorElement detectorElement 
-           = detector.getDetectorElement().findDetectorElement(subdetectorName);
-        
+        IDetectorElement detectorElement = detector.getDetectorElement().findDetectorElement(subdetectorName);
+
         // Get all SVT sensors
         sensors.addAll(detectorElement.findDescendants(SiSensor.class));
-        if(debug)
+        if (debug) {
             System.err.println(this.getClass().getName() + ": Added " + sensors.size() + " sensors");
-                
+        }
+
         // Configure the sensors
         configureSensors(sensors);
-        
+
         // Create DAQ Maps
-        SvtUtils.getInstance().setupDaqMaps(detector);
+        if (!SvtUtils.getInstance().isSetup()) {
+            SvtUtils.getInstance().setupDaqMaps(detector);
+        }
     }
-    
+
     /**
      * Configure the SVT sensors
      * 
@@ -89,58 +83,58 @@
      */
     private void configureSensors(Set<SiSensor> sensors) {
         // Loop through all the sensors in the set.
-        for(SiSensor sensor : sensors) {
-            
+        for (SiSensor sensor : sensors) {
+
             if (debug) {
                 System.out.println(this.getClass().getSimpleName() + " - setting up sensor " + sensor.getName());
             }
-        
+
             Box sensorSolid = (Box) sensor.getGeometry().getLogicalVolume().getSolid();
-            
+
             Polygon3D pSide = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, 1)).get(0);
             Polygon3D nSide = sensorSolid.getFacesNormalTo(new BasicHep3Vector(0, 0, -1)).get(0);
-            
+
             // P side collects holes.
             sensor.setBiasSurface(ChargeCarrier.HOLE, pSide);
             // N side collects electrons.
             sensor.setBiasSurface(ChargeCarrier.ELECTRON, nSide);
-            
+
             // Translate to the outside of the box in order to setup electrodes.
             ITranslation3D electrodesPosition = new Translation3D(VecOp.mult(-pSide.getDistance(), pSide.getNormal()));
-            
+
             // Align the strips with the edge of the sensor.        
             IRotation3D electrodesRotation = new RotationPassiveXYZ(0, 0, 0);
             Transform3D electrodesTransform = new Transform3D(electrodesPosition, electrodesRotation);
-            
+
             // Set the number of readout and sense electrodes.
             SiStrips readoutElectrodes = new SiStrips(ChargeCarrier.HOLE, readoutStripPitch, sensor, electrodesTransform);
-            SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, senseStripPitch, (readoutElectrodes.getNCells()*2-1), sensor, electrodesTransform);
-            
+            SiStrips senseElectrodes = new SiStrips(ChargeCarrier.HOLE, senseStripPitch, (readoutElectrodes.getNCells() * 2 - 1), sensor, electrodesTransform);
+
             if (debug) {
-            	System.out.println("The number of readout strips is " + readoutElectrodes.getNCells());
-            	System.out.println("The number of sense strips is " + senseElectrodes.getNCells());
+                System.out.println("The number of readout strips is " + readoutElectrodes.getNCells());
+                System.out.println("The number of sense strips is " + senseElectrodes.getNCells());
             }
 
             // Set the strip capacitance.
             readoutElectrodes.setCapacitanceIntercept(readoutStripCapacitanceIntercept);
             readoutElectrodes.setCapacitanceSlope(readoutStripCapacitanceSlope);
-            senseElectrodes.setCapacitanceIntercept(senseStripCapacitanceIntercept);            
-            senseElectrodes.setCapacitanceSlope(senseStripCapacitanceSlope); 
-            
+            senseElectrodes.setCapacitanceIntercept(senseStripCapacitanceIntercept);
+            senseElectrodes.setCapacitanceSlope(senseStripCapacitanceSlope);
+
             // Set sense and readout electrodes.
             sensor.setSenseElectrodes(senseElectrodes);
             sensor.setReadoutElectrodes(readoutElectrodes);
-            
+
             // Set the charge transfer efficiency.
             double[][] transferEfficiencies = {{readoutTransferEfficiency, senseTransferEfficiency}};
             sensor.setTransferEfficiencies(ChargeCarrier.HOLE, new BasicMatrix(transferEfficiencies));
-            
+
             if (debug) {
                 System.out.println("----------------------------");
             }
         }
     }
-    
+
     /**
      * Set the readout strip capacitance
      * 
@@ -151,7 +145,7 @@
         readoutStripCapacitanceIntercept = intercept;
         readoutStripCapacitanceSlope = slope;
     }
-    
+
     /**
      * Set the sense strip capacitance 
      * 
@@ -162,7 +156,7 @@
         senseStripCapacitanceIntercept = intercept;
         senseStripCapacitanceSlope = slope;
     }
-    
+
     /**
      * Set readout strip pitch
      * 
@@ -180,7 +174,7 @@
     public void setSenseStripPitch(double pitch) {
         senseStripPitch = pitch;
     }
-    
+
     /**
      * Set readout strip transfer efficiency
      * 
@@ -189,7 +183,7 @@
     public void setReadoutTransferEfficiency(double efficiency) {
         readoutTransferEfficiency = efficiency;
     }
-    
+
     /**
      * Set sense strip transfer efficiency
      * 

hps-java/src/main/java/org/lcsim/hps/recon/tracking
HPSSVTData.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- HPSSVTData.java	28 Apr 2012 15:25:41 -0000	1.6
+++ HPSSVTData.java	14 Aug 2012 00:58:03 -0000	1.7
@@ -15,7 +15,7 @@
  *
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: HPSSVTData.java,v 1.6 2012/04/28 15:25:41 meeg Exp $
+ * @version $Id: HPSSVTData.java,v 1.7 2012/08/14 00:58:03 meeg Exp $
  */
 public class HPSSVTData {
 
@@ -136,6 +136,10 @@
      * @return hybrid number (0-3)
      */
     public int getHybridNumber() {
+        return getHybridNumber(data);
+    }
+
+    public static int getHybridNumber(int[] data) {
         return (data[0] >>> 28) & HYBRID_MASK;
     }
 
@@ -145,6 +149,10 @@
      * @return APV number (0-4)
      */
     public int getAPVNumber() {
+        return getAPVNumber(data);
+    }
+
+    public static int getAPVNumber(int[] data) {
         return (data[0] >>> 24) & APV_MASK;
     }
 
@@ -154,6 +162,10 @@
      * @return channel number (0-127)
      */
     public int getChannelNumber() {
+        return getChannelNumber(data);
+    }
+
+    public static int getChannelNumber(int[] data) {
         return (data[0] >>> 16) & CHANNEL_MASK;
     }
 
@@ -163,6 +175,10 @@
      * @return FPGA address
      */
     public int getFPGAAddress() {
+        return getFPGAAddress(data);
+    }
+
+    public static int getFPGAAddress(int[] data) {
         return data[0] & FPGA_MASK;
     }
 
@@ -176,6 +192,10 @@
      *
      */
     public int getSample(int n) {
+        return getSample(n, data);
+    }
+
+    public static int getSample(int n, int[] data) {
 
         switch (n) {
             case 0:
@@ -201,10 +221,14 @@
      * @return An array containing all SVT Shaper signal samples
      */
     public short[] getAllSamples() {
+        return getAllSamples(data);
+    }
+
+    public static short[] getAllSamples(int[] data) {
         short[] samples = new short[TOTAL_NUMBER_OF_SAMPLES];
         // Get all SVT Samples
         for (int index = 0; index < TOTAL_NUMBER_OF_SAMPLES; index++) {
-            samples[index] = (short) this.getSample(index);
+            samples[index] = (short) getSample(index, data);
         }
 
         return samples;
@@ -260,7 +284,11 @@
         return sensorChannel;
     }
 
+    public static int getSensorChannel(int[] data) {
+        return getSensorChannel(getAPVNumber(data), getChannelNumber(data));
+    }
+
     public int getSensorChannel() {
-        return getSensorChannel(this.getAPVNumber(), this.getChannelNumber());
+        return getSensorChannel(data);
     }
 }

hps-java/src/main/java/org/lcsim/hps/recon/tracking
SVTDataToRawTrackerHitDriver.java removed after 1.13
diff -N SVTDataToRawTrackerHitDriver.java
--- SVTDataToRawTrackerHitDriver.java	6 Aug 2012 21:15:21 -0000	1.13
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,119 +0,0 @@
-package org.lcsim.hps.recon.tracking;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.lcsim.detector.tracker.silicon.ChargeCarrier;
-
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
-import org.lcsim.hps.util.Pair;
-import org.lcsim.util.Driver;
-import org.lcsim.util.lcio.LCIOUtil;
-
-/**
- * 
- * @author Jeremy McCormick <[log in to unmask]>
- * @author Omar Moreno <[log in to unmask]>
- * $Id: SVTDataToRawTrackerHitDriver.java,v 1.13 2012/08/06 21:15:21 meeg Exp $
- */
-public class SVTDataToRawTrackerHitDriver extends Driver {
-
-    String svtDataCollectionName = "SVTData";
-    String rawTrackerHitOutputCollectionName = "SVTRawTrackerHits";
-    String readoutName = "TrackerHits";
-    boolean debug = false;
-
-    public SVTDataToRawTrackerHitDriver() {
-    }
-
-    public void setDebug(boolean debug) {
-        this.debug = debug;
-    }
-
-    public void setReadoutName(String readoutName) {
-        this.readoutName = readoutName;
-    }
-
-    public void setSvtDataCollectionName(String svtDataCollectionName) {
-        this.svtDataCollectionName = svtDataCollectionName;
-    }
-
-    public void setRawTrackerHitOutputCollectionName(String rawTrackerHitOutputCollectionName) {
-        this.rawTrackerHitOutputCollectionName = rawTrackerHitOutputCollectionName;
-    }
-
-    public void process(EventHeader event) {
-
-        if (!event.hasCollection(HPSSVTData.class, svtDataCollectionName)) {
-            System.out.println(svtDataCollectionName + " does not exist; skipping event");
-            return;
-        }
-
-        List<HPSSVTData> svtDataCollection = event.get(HPSSVTData.class, svtDataCollectionName);
-//        if (svtDataCollection.isEmpty()) {
-//            System.out.println(svtDataCollectionName + " is empty; skipping event");
-//            return;
-//        }
-
-        List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
-        for (HPSSVTData svtData : svtDataCollection) {
-        	if(debug)
-        		System.out.println(this.getClass().getSimpleName() + ": FPGA: " + svtData.getFPGAAddress() + " Hybrid: " + svtData.getHybridNumber());
-            
-        	Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(svtData.getHybridNumber(), svtData.getFPGAAddress());
-        	SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);        	
-        	
-        	if (sensor == null) {
-                throw new RuntimeException("Unexpected DAQ address: FPGA " + svtData.getFPGAAddress() + ", hybrid " + svtData.getHybridNumber());
-            }
-
-        	if(debug){
-        		if(SvtUtils.getInstance().isTopLayer(sensor)){
-            		System.out.println(this.getClass().getSimpleName() + ": Top Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
-        		} else {
-        			System.out.println(this.getClass().getSimpleName() + ": Bottom Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
-        		}
-        	}  
-        	
-            int sensorChannel = svtData.getSensorChannel();
-            
-            //strip 639 exists as an APV channel but not as a sensor strip; drop it
-            // If the channel has been tagged to be bad, drop it 
-            if (sensorChannel >= HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR || HPSSVTCalibrationConstants.isBadChannel(sensor, sensorChannel)) {
-                continue; 
-            }
-
-            // Get all shaper signal samples associated with this hit
-            short data[] = svtData.getAllSamples();
-
-            // Get the hit time (is 0)
-            int hitTime = svtData.getHitTime();
-
-            // Find the side number (is 1)
-            int sideNumber;
-            if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
-                sideNumber = ChargeCarrier.HOLE.charge();
-            } else {
-                sideNumber = ChargeCarrier.ELECTRON.charge();
-            }
-
-            long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
-            RawTrackerHit myHit = new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor);
-            
-            if(debug)
-            	System.out.println(this.getClass().getSimpleName() + "Cell ID Module " + myHit.getIdentifierFieldValue("module") + "Cell ID Layer: " + myHit.getIdentifierFieldValue("layer") + "Strip Number: " + myHit.getIdentifierFieldValue("strip"));
-            myHit.getDetectorElement().getReadout().addHit((myHit));
-            hits.add(new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor));
-        }
-
-        if (debug) {
-            System.out.println(this.getClass().getSimpleName() + " made " + hits.size()
-                    + " RawTrackerHits with readoutName " + readoutName + " in collection " + rawTrackerHitOutputCollectionName);
-        }
-
-        int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
-        event.put(rawTrackerHitOutputCollectionName, hits, RawTrackerHit.class, flag, readoutName);
-    }
-}

hps-java/src/main/resources/org/lcsim/hps/steering
HPSTestRunOnlineTracking.lcsim 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- HPSTestRunOnlineTracking.lcsim	1 Jun 2012 22:17:10 -0000	1.3
+++ HPSTestRunOnlineTracking.lcsim	14 Aug 2012 00:58:03 -0000	1.4
@@ -5,7 +5,6 @@
         <driver name="SVTSetupDriver" />
         <driver name="EcalRawConverter" />
         <driver name="EcalClusterer" />
-        <driver name="RawTrackerHitMaker" />
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver" />
         <driver name="TrackerReconDriver" />
@@ -24,9 +23,6 @@
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
         </driver>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
         <driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
             <rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
             <fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
@@ -46,4 +42,4 @@
             <collectionNames>TrackerHits SVTRawTrackerHits SVTFittedRawTrackerHits</collectionNames>
         </driver>  
     </drivers>
-</lcsim>
\ No newline at end of file
+</lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
SensorOccupancyPlots.lcsim 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SensorOccupancyPlots.lcsim	5 Jun 2012 19:23:47 -0000	1.1
+++ SensorOccupancyPlots.lcsim	14 Aug 2012 00:58:03 -0000	1.2
@@ -3,7 +3,6 @@
     <execute>
         <driver name="EventMarkerDriver"/>
         <driver name="SVTSetupDriver"/>
-        <driver name="RawTrackerHitMaker"/>
         <driver name="SVTOccupancyPlots"/>
     </execute>    
     <drivers>
@@ -11,9 +10,6 @@
             <eventInterval>1</eventInterval>
         </driver>
         <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
         <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
             <eventRefreshRate>1</eventRefreshRate>
         </driver>

hps-java/src/main/resources/org/lcsim/hps/steering
OfflineTrackingAxial.lcsim 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- OfflineTrackingAxial.lcsim	1 Jun 2012 22:17:10 -0000	1.2
+++ OfflineTrackingAxial.lcsim	14 Aug 2012 00:58:03 -0000	1.3
@@ -5,7 +5,6 @@
         <driver name="SVTSetupDriver"/>
          <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
-        <driver name="RawTrackerHitMaker"/>
 <!--        <driver name="SVTEventPlots"/>    -->
 <!--       <driver name="SVTPulsePlots"/>  -->
         <driver name="RawTrackerHitFitterDriver"/>    
@@ -72,10 +71,6 @@
             <stripTolerance>1.0</stripTolerance>
         </driver>        
 
-       	<driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
-        
      	<driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots">
                 <outputPlots>trackingPlots.aida</outputPlots>
         </driver>
@@ -92,4 +87,4 @@
         </driver>
 
     </drivers>   
-</lcsim>
\ No newline at end of file
+</lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
TestRunMonitoring.lcsim 1.20 -> 1.21
diff -u -r1.20 -r1.21
--- TestRunMonitoring.lcsim	24 May 2012 19:48:40 -0000	1.20
+++ TestRunMonitoring.lcsim	14 Aug 2012 00:58:03 -0000	1.21
@@ -11,7 +11,6 @@
         <driver name="HPSCalibrationDriver"/>
         <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
-        <driver name="RawTrackerHitMaker"/>
         <driver name="RawTrackerHitFitterDriver"/>
         <driver name="TrackerHitDriver"/>
         <driver name="TrackerReconDriver"/>
@@ -86,6 +85,5 @@
                 type="org.lcsim.hps.monitoring.svt.SVTHitReconstructionPlots">
             <fittedTrackerHitCollectionName>SVTFittedRawTrackerHits</fittedTrackerHitCollectionName>   
         </driver>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
     </drivers>
 </lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
OnlineTracking.lcsim 1.13 -> 1.14
diff -u -r1.13 -r1.14
--- OnlineTracking.lcsim	1 Jun 2012 22:17:10 -0000	1.13
+++ OnlineTracking.lcsim	14 Aug 2012 00:58:03 -0000	1.14
@@ -10,7 +10,6 @@
         <driver name="SVTSetupDriver"/>
          <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
-        <driver name="RawTrackerHitMaker"/>
          <driver name="SVTOccupancyPlots"/>
         <driver name="SVTEventPlots"/>   
        <driver name="SVTPulsePlots"/> 
@@ -97,10 +96,6 @@
             <stripTolerance>1.0</stripTolerance>
         </driver>        
 
-       	<driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
-        
      	<driver name="TrackingReconstructionPlots" type="org.lcsim.hps.monitoring.svt.TrackingReconstructionPlots">
                 <outputPlots>trackingPlots.aida</outputPlots>
         </driver>

hps-java/src/main/resources/org/lcsim/hps/steering
HPSTestRunOfflineTracking.lcsim 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- HPSTestRunOfflineTracking.lcsim	1 Jun 2012 22:17:10 -0000	1.2
+++ HPSTestRunOfflineTracking.lcsim	14 Aug 2012 00:58:03 -0000	1.3
@@ -8,7 +8,6 @@
         <driver name="SVTSetupDriver" />
         <driver name="EcalRawConverter" />
         <driver name="EcalClusterer" />
-        <driver name="RawTrackerHitMaker" />
         <driver name="RawTrackerHitFitterDriver" />
         <driver name="TrackerHitDriver" />
         <driver name="TrackerReconDriver" />
@@ -28,9 +27,6 @@
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
         </driver>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
         <driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
             <rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
             <fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>
@@ -53,4 +49,4 @@
             <outputFilePath>${outputFile}</outputFilePath>
         </driver>
     </drivers>
-</lcsim>
\ No newline at end of file
+</lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
TestRunEventDisplay.lcsim 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- TestRunEventDisplay.lcsim	23 May 2012 18:22:16 -0000	1.6
+++ TestRunEventDisplay.lcsim	14 Aug 2012 00:58:03 -0000	1.7
@@ -11,7 +11,6 @@
         <driver name="EventMarkerDriver"/>
         <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
-        <driver name="RawTrackerHitMaker"/>
         <driver name="EcalEventMonitor"/>
         <driver name="RawTrackerHitFitterDriver"/>  
         <driver name="TrackerHitDriver"/>
@@ -61,6 +60,5 @@
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
             <eventInterval>1</eventInterval>
         </driver>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
     </drivers>
 </lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
EcalGainDriverSim.lcsim 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- EcalGainDriverSim.lcsim	9 Aug 2012 22:27:10 -0000	1.1
+++ EcalGainDriverSim.lcsim	14 Aug 2012 00:58:03 -0000	1.2
@@ -42,8 +42,8 @@
 		type="org.lcsim.hps.users.phansson.ECalGainDriver">
             <debug>false</debug>
             <hideFrame>true</hideFrame>
-            <outputPlotFileName>gaindriver.aida</outputPlotFileName>
-            <ecalGainFileName>clusterlist.txt</ecalGainFileName>
+            <outputPlotFileName>gaindriver_sim.aida</outputPlotFileName>
+            <ecalGainFileName>clusterlist_sim.txt</ecalGainFileName>
             <simTrigger>true</simTrigger>
         </driver>
 

hps-java/src/main/resources/org/lcsim/hps/steering
MultScatAna.lcsim 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- MultScatAna.lcsim	24 Jul 2012 23:28:54 -0000	1.3
+++ MultScatAna.lcsim	14 Aug 2012 00:58:03 -0000	1.4
@@ -8,11 +8,9 @@
     <execute>
         <driver name="EventMarkerDriver"/>
         <driver name="HPSCalibrationDriver"/>
-        <driver name="SVTSetupDriver"/>
         <driver name="EcalRawConverter"/>
         <driver name="EcalClusterer"/>
 
-        <driver name="RawTrackerHitMaker"/>
         <driver name="RawTrackerHitFitterDriver"/>  
         <driver name="TrackerHitDriver"/> 
         <driver name="TrackerReconDriver"/>
@@ -111,13 +109,9 @@
             <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
             <eventRefreshRate>1</eventRefreshRate>
         </driver>
-        <driver name="SVTSetupDriver"
-                type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">   
-        </driver>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
             <eventInterval>1000</eventInterval>
         </driver> 
-	<driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
         <driver name="TrackerReconDriver"
                 type="org.lcsim.hps.recon.tracking.TrackerReconDriver">
             <debug>false</debug>

hps-java/src/main/resources/org/lcsim/hps/steering
SVTMonitoring.lcsim 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SVTMonitoring.lcsim	21 Jun 2012 18:59:45 -0000	1.1
+++ SVTMonitoring.lcsim	14 Aug 2012 00:58:03 -0000	1.2
@@ -3,7 +3,6 @@
     <execute>
         <driver name="EventMarkerDriver" />
         <driver name="SVTSetupDriver" />
-        <driver name="RawTrackerHitMaker" />
         <driver name="SVTPulsePlots"/>
         
         <driver name="RawTrackerHitFitterDriver" />
@@ -35,9 +34,6 @@
             <ecalName>Ecal</ecalName>
             <ecalCollectionName>EcalCalHits</ecalCollectionName>
         </driver>
-        <driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver">
-            <rawTrackerHitOutputCollectionName>SVTRawTrackerHits</rawTrackerHitOutputCollectionName>
-        </driver>
         <driver name="RawTrackerHitFitterDriver" type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
             <rawHitCollectionName>SVTRawTrackerHits</rawHitCollectionName>
             <fittedHitCollectionName>SVTFittedRawTrackerHits</fittedHitCollectionName>

hps-java/src/main/resources/org/lcsim/hps/steering
TestRunCnv.lcsim removed after 1.2
diff -N TestRunCnv.lcsim
--- TestRunCnv.lcsim	1 Jun 2012 22:17:10 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">       
-    <execute>
-        <driver name="EventMarkerDriver"/>
-        <driver name="SVTSetupDriver"/>
-        <driver name="SVTDataToRawTrackerHitDriver"/>
-    </execute>    
-    <drivers>
-        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
-        </driver>
-        <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
-        <driver name="SVTDataToRawTrackerHitDriver" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
-    </drivers>
-</lcsim>

hps-java/src/main/resources/org/lcsim/hps/steering
FastTracking.lcsim removed after 1.5
diff -N FastTracking.lcsim
--- FastTracking.lcsim	27 Jun 2012 19:35:43 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,71 +0,0 @@
-<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
-       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">       
-    <control>
-        <numberOfEvents>-1</numberOfEvents>
-        <printInputFiles>true</printInputFiles>
-        <printDriversDetailed>true</printDriversDetailed>
-    </control>    
-    <execute>
-        <driver name="EventMarkerDriver"/>
-        <driver name="SVTSetupDriver"/>
-        <driver name="HPSSVTDAQMaps"/>
-        <driver name="EcalRawConverter"/>
-        <driver name="EcalClusterer"/>
-        <driver name="RawTrackerHitMaker"/>
-        <driver name="RawTrackerHitFitterDriver"/>  
-        <driver name="TrackerHitDriver"/> 
-        <driver name="EcalMonitoringPlots"/>
-<!--        <driver name="SVTOccupancyPlots"/> -->
-        <driver name="FastTrackResidualDriver"/>
-        <driver name="CleanupDriver"/>
-        
-    </execute>    
-    <drivers>
-        <driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
-        <driver name="EcalRawConverter" 
-                type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
-			<ecalCollectionName>EcalCalHits</ecalCollectionName>
-	</driver>
-        <driver name="EcalClusterer"
-                type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
-			<ecalName>Ecal</ecalName>
-			<ecalCollectionName>EcalCalHits</ecalCollectionName>
-	</driver>
-        <driver name="RawTrackerHitFitterDriver"
-                type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
-<!--                <fitAlgorithm>Dumb</fitAlgorithm>  -->
-           <fitAlgorithm>Analytic</fitAlgorithm>
-        </driver>
-        <driver name="FastTrackResidualDriver"
-		type="org.lcsim.hps.users.phansson.FastTrackResidualDriver">
-                <conversionZ>-670.0</conversionZ>
-                <ecalBeamgapCorr>0.0</ecalBeamgapCorr>
-                <debug>true</debug>
-                <ecalClusterSel>0</ecalClusterSel>
-		<outputPlotFileName></outputPlotFileName>
-	</driver>
-        <driver name="TrackerHitDriver"
-                type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
-        <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
-        </driver>
-        <driver name="CleanupDriver" 
-                type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
-                <collectionNames>TrackerHits SVTRawTrackerHits  SVTFittedRawTrackerHits</collectionNames>
-         </driver>
-        <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/>
-        <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
-            <eventRefreshRate>1</eventRefreshRate>
-        </driver>
-        <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
-            <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
-            <eventRefreshRate>1</eventRefreshRate>
-        </driver>
-        <driver name="SVTSetupDriver"
-                type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">   
-        </driver>
-        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
-            <eventInterval>1</eventInterval>
-        </driver> 
-	<driver name="RawTrackerHitMaker" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
-    </drivers>
-</lcsim>

hps-java/sandbox
TestRunCnv.lcsim added at 1.1
diff -N TestRunCnv.lcsim
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TestRunCnv.lcsim	14 Aug 2012 00:58:03 -0000	1.1
@@ -0,0 +1,15 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">       
+    <execute>
+        <driver name="EventMarkerDriver"/>
+        <driver name="SVTSetupDriver"/>
+        <driver name="SVTDataToRawTrackerHitDriver"/>
+    </execute>    
+    <drivers>
+        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>1</eventInterval>
+        </driver>
+        <driver name="SVTSetupDriver" type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup"/>
+        <driver name="SVTDataToRawTrackerHitDriver" type="org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver"/>
+    </drivers>
+</lcsim>

hps-java/sandbox
FastTracking.lcsim added at 1.1
diff -N FastTracking.lcsim
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ FastTracking.lcsim	14 Aug 2012 00:58:03 -0000	1.1
@@ -0,0 +1,69 @@
+<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
+       xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">       
+    <control>
+        <numberOfEvents>-1</numberOfEvents>
+        <printInputFiles>true</printInputFiles>
+        <printDriversDetailed>true</printDriversDetailed>
+    </control>    
+    <execute>
+        <driver name="EventMarkerDriver"/>
+        <driver name="SVTSetupDriver"/>
+        <driver name="HPSSVTDAQMaps"/>
+        <driver name="EcalRawConverter"/>
+        <driver name="EcalClusterer"/>
+        <driver name="RawTrackerHitFitterDriver"/>  
+        <driver name="TrackerHitDriver"/> 
+        <driver name="EcalMonitoringPlots"/>
+<!--        <driver name="SVTOccupancyPlots"/> -->
+        <driver name="FastTrackResidualDriver"/>
+        <driver name="CleanupDriver"/>
+        
+    </execute>    
+    <drivers>
+        <driver name="HPSSVTDAQMaps" type="org.lcsim.hps.recon.tracking.HPSSVTDAQMaps"/>
+        <driver name="EcalRawConverter" 
+                type="org.lcsim.hps.recon.ecal.HPSEcalRawConverterDriver">
+			<ecalCollectionName>EcalCalHits</ecalCollectionName>
+	</driver>
+        <driver name="EcalClusterer"
+                type="org.lcsim.hps.recon.ecal.HPSEcalClusterer">
+			<ecalName>Ecal</ecalName>
+			<ecalCollectionName>EcalCalHits</ecalCollectionName>
+	</driver>
+        <driver name="RawTrackerHitFitterDriver"
+                type="org.lcsim.hps.recon.tracking.HPSRawTrackerHitFitterDriver">
+<!--                <fitAlgorithm>Dumb</fitAlgorithm>  -->
+           <fitAlgorithm>Analytic</fitAlgorithm>
+        </driver>
+        <driver name="FastTrackResidualDriver"
+		type="org.lcsim.hps.users.phansson.FastTrackResidualDriver">
+                <conversionZ>-670.0</conversionZ>
+                <ecalBeamgapCorr>0.0</ecalBeamgapCorr>
+                <debug>true</debug>
+                <ecalClusterSel>0</ecalClusterSel>
+		<outputPlotFileName></outputPlotFileName>
+	</driver>
+        <driver name="TrackerHitDriver"
+                type="org.lcsim.hps.users.mgraham.DataTrackerHitDriver"/>
+        <driver name="EcalDaqPlots" type="org.lcsim.hps.monitoring.ecal.EcalDaqPlots">
+        </driver>
+        <driver name="CleanupDriver" 
+                type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver">
+                <collectionNames>TrackerHits SVTRawTrackerHits  SVTFittedRawTrackerHits</collectionNames>
+         </driver>
+        <driver name="EcalMonitoringPlots" type="org.lcsim.hps.monitoring.ecal.EcalMonitoringPlots"/>
+        <driver name="EcalEventMonitor" type="org.lcsim.hps.monitoring.ecal.EcalEventMonitor">
+            <eventRefreshRate>1</eventRefreshRate>
+        </driver>
+        <driver name="SVTOccupancyPlots" type="org.lcsim.hps.monitoring.svt.SensorOccupancyPlotsDriver">
+            <rawTrackerHitCollectionName>SVTRawTrackerHits</rawTrackerHitCollectionName>
+            <eventRefreshRate>1</eventRefreshRate>
+        </driver>
+        <driver name="SVTSetupDriver"
+                type="org.lcsim.hps.recon.tracking.HPSSVTSensorSetup">   
+        </driver>
+        <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
+            <eventInterval>1</eventInterval>
+        </driver> 
+    </drivers>
+</lcsim>

hps-java/sandbox
SVTDataToRawTrackerHitDriver.java added at 1.1
diff -N SVTDataToRawTrackerHitDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTDataToRawTrackerHitDriver.java	14 Aug 2012 00:58:03 -0000	1.1
@@ -0,0 +1,119 @@
+package org.lcsim.hps.recon.tracking;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOUtil;
+
+/**
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Omar Moreno <[log in to unmask]>
+ * $Id: SVTDataToRawTrackerHitDriver.java,v 1.1 2012/08/14 00:58:03 meeg Exp $
+ */
+public class SVTDataToRawTrackerHitDriver extends Driver {
+
+    String svtDataCollectionName = "SVTData";
+    String rawTrackerHitOutputCollectionName = "SVTRawTrackerHits";
+    String readoutName = "TrackerHits";
+    boolean debug = false;
+
+    public SVTDataToRawTrackerHitDriver() {
+    }
+
+    public void setDebug(boolean debug) {
+        this.debug = debug;
+    }
+
+    public void setReadoutName(String readoutName) {
+        this.readoutName = readoutName;
+    }
+
+    public void setSvtDataCollectionName(String svtDataCollectionName) {
+        this.svtDataCollectionName = svtDataCollectionName;
+    }
+
+    public void setRawTrackerHitOutputCollectionName(String rawTrackerHitOutputCollectionName) {
+        this.rawTrackerHitOutputCollectionName = rawTrackerHitOutputCollectionName;
+    }
+
+    public void process(EventHeader event) {
+
+        if (!event.hasCollection(HPSSVTData.class, svtDataCollectionName)) {
+            System.out.println(svtDataCollectionName + " does not exist; skipping event");
+            return;
+        }
+
+        List<HPSSVTData> svtDataCollection = event.get(HPSSVTData.class, svtDataCollectionName);
+//        if (svtDataCollection.isEmpty()) {
+//            System.out.println(svtDataCollectionName + " is empty; skipping event");
+//            return;
+//        }
+
+        List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+        for (HPSSVTData svtData : svtDataCollection) {
+        	if(debug)
+        		System.out.println(this.getClass().getSimpleName() + ": FPGA: " + svtData.getFPGAAddress() + " Hybrid: " + svtData.getHybridNumber());
+            
+        	Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(svtData.getHybridNumber(), svtData.getFPGAAddress());
+        	SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);        	
+        	
+        	if (sensor == null) {
+                throw new RuntimeException("Unexpected DAQ address: FPGA " + svtData.getFPGAAddress() + ", hybrid " + svtData.getHybridNumber());
+            }
+
+        	if(debug){
+        		if(SvtUtils.getInstance().isTopLayer(sensor)){
+            		System.out.println(this.getClass().getSimpleName() + ": Top Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
+        		} else {
+        			System.out.println(this.getClass().getSimpleName() + ": Bottom Layer Number: " + SvtUtils.getInstance().getLayerNumber(sensor));
+        		}
+        	}  
+        	
+            int sensorChannel = svtData.getSensorChannel();
+            
+            //strip 639 exists as an APV channel but not as a sensor strip; drop it
+            // If the channel has been tagged to be bad, drop it 
+            if (sensorChannel >= HPSSVTConstants.TOTAL_STRIPS_PER_SENSOR || HPSSVTCalibrationConstants.isBadChannel(sensor, sensorChannel)) {
+                continue; 
+            }
+
+            // Get all shaper signal samples associated with this hit
+            short data[] = svtData.getAllSamples();
+
+            // Get the hit time (is 0)
+            int hitTime = svtData.getHitTime();
+
+            // Find the side number (is 1)
+            int sideNumber;
+            if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
+                sideNumber = ChargeCarrier.HOLE.charge();
+            } else {
+                sideNumber = ChargeCarrier.ELECTRON.charge();
+            }
+
+            long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
+            RawTrackerHit myHit = new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor);
+            
+            if(debug)
+            	System.out.println(this.getClass().getSimpleName() + "Cell ID Module " + myHit.getIdentifierFieldValue("module") + "Cell ID Layer: " + myHit.getIdentifierFieldValue("layer") + "Strip Number: " + myHit.getIdentifierFieldValue("strip"));
+            myHit.getDetectorElement().getReadout().addHit((myHit));
+            hits.add(new BaseRawTrackerHit(hitTime, cell_id, data, null, sensor));
+        }
+
+        if (debug) {
+            System.out.println(this.getClass().getSimpleName() + " made " + hits.size()
+                    + " RawTrackerHits with readoutName " + readoutName + " in collection " + rawTrackerHitOutputCollectionName);
+        }
+
+        int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+        event.put(rawTrackerHitOutputCollectionName, hits, RawTrackerHit.class, flag, readoutName);
+    }
+}

hps-java/src/main/java/org/lcsim/hps/evio
SVTEvioReader_RTH.java added at 1.1
diff -N SVTEvioReader_RTH.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SVTEvioReader_RTH.java	14 Aug 2012 00:58:03 -0000	1.1
@@ -0,0 +1,170 @@
+package org.lcsim.hps.evio;
+
+//--- java ---//
+import java.util.ArrayList;
+import java.util.List;
+
+//--- Coda ---//
+import org.jlab.coda.jevio.BaseStructure;
+import org.jlab.coda.jevio.EvioEvent;
+
+//--- org.lcsim ---//
+import org.lcsim.detector.tracker.silicon.ChargeCarrier;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.GenericObject;
+
+//--- hps-java ---//
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.hps.recon.tracking.FpgaData;
+import org.lcsim.hps.recon.tracking.HPSSVTData;
+
+//--- Constants ---//
+import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
+import org.lcsim.hps.recon.tracking.HPSSVTConstants;
+import org.lcsim.hps.recon.tracking.SvtUtils;
+import org.lcsim.hps.util.Pair;
+import org.lcsim.util.lcio.LCIOUtil;
+
+/**
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ * @version $Id: SVTEvioReader_RTH.java,v 1.1 2012/08/14 00:58:03 meeg Exp $
+ */
+public class SVTEvioReader_RTH extends EvioReader {
+
+    String fpgaDataCollectionName = "FPGAData";
+    String readoutName = "TrackerHits";
+
+    /**
+     *
+     */
+    public SVTEvioReader_RTH() {
+        hitCollectionName = "SVTRawTrackerHits";
+        debug = false;
+    }
+
+    public void setReadoutName(String readoutName) {
+        this.readoutName = readoutName;
+    }
+
+    /**
+     *
+     */
+    public boolean makeHits(EvioEvent event, EventHeader lcsimEvent) {
+        // Create DAQ Maps
+        if (!SvtUtils.getInstance().isSetup()) {
+            SvtUtils.getInstance().setupDaqMaps(lcsimEvent.getDetector());
+        }
+
+        // Create a list to hold the temperatures 
+        List<FpgaData> fpgaDataCollection = new ArrayList<FpgaData>();
+
+        List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
+
+        boolean foundBank = false;
+        for (BaseStructure crateBank : event.getChildren()) {
+            int crateTag = crateBank.getHeader().getTag();
+
+            // Process only events inside the SVT Bank
+            if (crateTag == SVT_BANK_TAG) {
+                foundBank = true;
+                if (crateBank.getChildCount() == 0) {
+                    throw new RuntimeException("No children found in SVT bank!");
+                }
+
+                // Loop over all FPGA banks
+                for (BaseStructure fpgaBank : crateBank.getChildren()) {
+                    int fpgaID = fpgaBank.getHeader().getTag();
+                    if (fpgaID < 0 || fpgaID >= HPSSVTConstants.SVT_TOTAL_FPGAS) {
+                        System.out.println("Unexpected FPGA bank tag " + fpgaID);
+                    }
+
+                    // The data contained in FPGA 7 is currently not used
+                    if (fpgaBank.getHeader().getTag() == 7) {
+                        continue;
+                    }
+
+                    // Get data
+                    int[] data = fpgaBank.getIntData();
+
+                    if (debug) {
+                        System.out.println(this.getClass().getSimpleName() + ": The data size is " + data.length);
+                    }
+
+                    if (debug) {
+                        for (int index = 0; index < data.length; index++) {
+                            System.out.println("Data " + index + ": " + data[index]);
+                        }
+                    }
+
+                    // Get the hybrid temperature data associated with this FPGA
+                    int[] temperatureData = new int[6];
+                    System.arraycopy(data, 1, temperatureData, 0, 6);
+                    FpgaData fpgaData = new FpgaData(fpgaID, temperatureData, data[data.length - 1]);
+                    fpgaDataCollection.add(fpgaData);
+
+
+                    if (debug) {
+                        System.out.println(this.getClass().getSimpleName() + ": The temperatures are: ");
+                        double[] temps = HPSSVTData.getTemperature(temperatureData);
+                        for (int index = 0; index < temps.length; index++) {
+                            System.out.println("Temp " + index + ": " + temps[index]);
+                        }
+                    }
+
+                    // Get all of the samples
+                    int sampleLength = data.length - temperatureData.length - 2; // Tail length
+                    int[] allSamples = new int[sampleLength];
+                    System.arraycopy(data, 7, allSamples, 0, sampleLength);
+
+                    if (debug) {
+                        for (int index = 0; index < allSamples.length; index++) {
+                            System.out.println("Sample " + index + ": " + allSamples[index]);
+                        }
+                    }
+
+                    // Check whether a complete set of samples exist
+                    if (allSamples.length % 4 != 0) {
+                        throw new RuntimeException("Size of samples array is not divisible by 4!");
+                    }
+
+                    // Loop over all samples and create HPSSVTData
+                    for (int index = 0; index < allSamples.length; index += 4) {
+                        int[] samples = new int[4];
+                        System.arraycopy(allSamples, index, samples, 0, samples.length);
+                        hits.add(makeHit(samples));
+                    }
+                }
+            }
+        }
+        if (debug) {
+            System.out.println("Adding RawTrackerHit Collection of Size " + hits.size());
+        }
+
+        lcsimEvent.put(fpgaDataCollectionName, fpgaDataCollection, GenericObject.class, 0);
+        int flag = LCIOUtil.bitSet(0, 31, true); // Turn on 64-bit cell ID.
+        lcsimEvent.put(hitCollectionName, hits, RawTrackerHit.class, flag, readoutName);
+
+        return foundBank;
+    }
+
+    private static RawTrackerHit makeHit(int[] data) {
+        int hitTime = 0;
+        Pair<Integer, Integer> daqPair = new Pair<Integer, Integer>(HPSSVTData.getHybridNumber(data), HPSSVTData.getFPGAAddress(data));
+        SiSensor sensor = SvtUtils.getInstance().getSensor(daqPair);
+
+        // Find the side number (is 1)
+        int sideNumber;
+        if (sensor.hasElectrodesOnSide(ChargeCarrier.HOLE)) {
+            sideNumber = ChargeCarrier.HOLE.charge();
+        } else {
+            sideNumber = ChargeCarrier.ELECTRON.charge();
+        }
+        int sensorChannel = HPSSVTData.getSensorChannel(data);
+        long cell_id = sensor.makeStripId(sensorChannel, sideNumber).getValue();
+
+        return new BaseRawTrackerHit(hitTime, cell_id, HPSSVTData.getAllSamples(data), null, sensor);
+    }
+}

hps-java/src/main/java/org/lcsim/hps/evio
LCSimTestRunEventBuilder.java 1.19 -> 1.20
diff -u -r1.19 -r1.20
--- LCSimTestRunEventBuilder.java	3 Aug 2012 23:14:39 -0000	1.19
+++ LCSimTestRunEventBuilder.java	14 Aug 2012 00:58:03 -0000	1.20
@@ -28,13 +28,13 @@
     // Debug flag.
     private boolean debug = false;
     ECalEvioReader ecalReader = null;
-    SVTEvioReader svtReader = null;
+    SVTEvioReader_RTH svtReader = null;
 
     public LCSimTestRunEventBuilder() {
         LCSimConditionsManagerImplementation.register();
 
         ecalReader = new ECalEvioReader();
-        svtReader = new SVTEvioReader();
+        svtReader = new SVTEvioReader_RTH();
     }
 
     public void setDetectorName(String detectorName) {

hps-java/src/main/java/org/lcsim/hps/evio
SVTEvioReader.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- SVTEvioReader.java	8 May 2012 15:52:52 -0000	1.7
+++ SVTEvioReader.java	14 Aug 2012 00:58:03 -0000	1.8
@@ -15,7 +15,6 @@
 //--- hps-java ---//
 import org.lcsim.hps.recon.tracking.FpgaData;
 import org.lcsim.hps.recon.tracking.HPSSVTData;
-import org.lcsim.hps.recon.tracking.SVTDataToRawTrackerHitDriver;
 
 //--- Constants ---//
 import static org.lcsim.hps.evio.EventConstants.SVT_BANK_TAG;
@@ -24,11 +23,10 @@
 /**
  *
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SVTEvioReader.java,v 1.7 2012/05/08 15:52:52 meeg Exp $
+ * @version $Id: SVTEvioReader.java,v 1.8 2012/08/14 00:58:03 meeg Exp $
  */
 public class SVTEvioReader extends EvioReader {
 
-    SVTDataToRawTrackerHitDriver hitMaker;
     String fpgaDataCollectionName = "FPGAData";
 
     /**

hps-java/src/main/java/org/lcsim/hps/users/meeg
FilterMCBunches.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- FilterMCBunches.java	9 Aug 2012 22:25:27 -0000	1.5
+++ FilterMCBunches.java	14 Aug 2012 00:58:03 -0000	1.6
@@ -23,7 +23,7 @@
  * Can also be used to chain multiple LCIO files together.
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: FilterMCBunches.java,v 1.5 2012/08/09 22:25:27 meeg Exp $
+ * @version $Id: FilterMCBunches.java,v 1.6 2012/08/14 00:58:03 meeg Exp $
  */
 public class FilterMCBunches {
 
@@ -45,12 +45,6 @@
     public static void main(String[] args) {
         // Set up command line parsing.
         Options options = createCommandLineOptions();
-        if (args.length == 0) {
-            System.out.println("FilterMCBunches <input files> <output file>");
-            HelpFormatter help = new HelpFormatter();
-            help.printHelp(" ", options);
-            System.exit(1);
-        }
         CommandLineParser parser = new PosixParser();
 
         // Parse command line arguments.
@@ -62,6 +56,14 @@
         }
 
         String[] parsedArgs = cl.getArgs();
+
+        if (parsedArgs.length < 2) {
+            System.out.println("FilterMCBunches <input files> <output file>");
+            HelpFormatter help = new HelpFormatter();
+            help.printHelp(" ", options);
+            System.exit(1);
+        }
+
         String outFileName = parsedArgs[parsedArgs.length - 1];
 
         LCIOWriter writer = null;

hps-java/src/main/java/org/lcsim/hps/users/phansson
ECalGainDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- ECalGainDriver.java	9 Aug 2012 22:27:10 -0000	1.3
+++ ECalGainDriver.java	14 Aug 2012 00:58:04 -0000	1.4
@@ -56,6 +56,7 @@
     private Integer yList[];
     private JButton blankButton;
     private IHistogram1D pePlots[][][] = new IHistogram1D[47][11][5];
+    private IHistogram1D peCrystalPlots[][] = new IHistogram1D[47][11];
     private IHistogram2D mpePlot;
     private IHistogram2D spePlot;
     private IHistogram2D hitmap;
@@ -64,6 +65,12 @@
 
     @Override
     public void detectorChanged(Detector detector) {
+        try {
+            gainWriter = new PrintWriter(ecalGainFileName);
+        } catch (FileNotFoundException ex) {
+            Logger.getLogger(ECalGainDriver.class.getName()).log(Level.SEVERE, null, ex);
+        }
+
         pePlotterFrame = new AIDAFrame();
         pePlotterFrame.setTitle("Gain Frame");
 
@@ -129,6 +136,7 @@
                     } else {
                         pePlots[icol + 23][irow + 5][iE] = aida.histogram1D("E over p x=" + icol + " y=" + irow + " iE=" + iE, 50, 0, 2);
                     }
+                    peCrystalPlots[icol + 23][irow + 5] = aida.histogram1D("crystal E over p x=" + icol + " y=" + irow, 50, 0, 2);
                 }
             }
         }
@@ -179,12 +187,6 @@
 
     public ECalGainDriver() {
         trkMatchTool = new EcalTrackMatch(false);
-
-        try {
-            gainWriter = new PrintWriter(ecalGainFileName);
-        } catch (FileNotFoundException ex) {
-            Logger.getLogger(ECalGainDriver.class.getName()).log(Level.SEVERE, null, ex);
-        }
     }
 
     public void setDebug(boolean flag) {
@@ -279,6 +281,18 @@
             double Ep = E;
             double Eoverp = Ep / P;
 
+            CalorimeterHit maxHit = null;
+            for (CalorimeterHit hit : cl.getCalorimeterHits()) {
+                if (maxHit == null || hit.getRawEnergy() > maxHit.getRawEnergy()) {
+                    maxHit = hit;
+                }
+            }
+            if (maxHit.getRawEnergy()/cl.getEnergy() > 0.6) {
+                int x = maxHit.getIdentifierFieldValue("ix");
+                int y = maxHit.getIdentifierFieldValue("iy");
+                peCrystalPlots[x+23][y+5].fill(maxHit.getRawEnergy()/P);
+            }
+
             if (debug) {
                 System.out.println("P " + P + " E " + E);
             }
@@ -349,7 +363,10 @@
         //displayFastTrackingPlots();
         for (int x = -23; x <= 23; x++) { // slot
             for (int y = -5; y <= 5; y++) { // crate  
-                System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, pePlots[x + 23][y + 5][0].allEntries(), pePlots[x + 23][y + 5][0].mean(), pePlots[x + 23][y + 5][0].rms());
+                if (HPSEcalConditions.physicalToGain(HPSEcalConditions.makePhysicalID(x, y)) != null) {
+//                    System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, pePlots[x + 23][y + 5][0].allEntries(), pePlots[x + 23][y + 5][0].mean(), pePlots[x + 23][y + 5][0].rms());
+                    System.out.printf("%d\t%d\t%d\t%f\t%f\n", x, y, peCrystalPlots[x + 23][y + 5].allEntries(), peCrystalPlots[x + 23][y + 5].mean(), peCrystalPlots[x + 23][y + 5].rms());
+                }
             }
         }
 

hps-java/src/main/java/org/lcsim/hps/recon/ecal
TestRunRateAnalysis.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TestRunRateAnalysis.java	30 Jul 2012 22:33:07 -0000	1.2
+++ TestRunRateAnalysis.java	14 Aug 2012 00:58:04 -0000	1.3
@@ -15,7 +15,7 @@
  * Prints triggers to file if file path specified.
  *
  * @author Sho Uemura <[log in to unmask]>
- * @version $Id: TestRunRateAnalysis.java,v 1.2 2012/07/30 22:33:07 meeg Exp $
+ * @version $Id: TestRunRateAnalysis.java,v 1.3 2012/08/14 00:58:04 meeg Exp $
  */
 public class TestRunRateAnalysis extends Driver {
 
@@ -76,9 +76,9 @@
         if (mcparticles.isEmpty()) {
             return;
         }
-        if (mcparticles.size() != 1) {
-            throw new RuntimeException("expected exactly 1 MCParticle");
-        }
+//        if (mcparticles.size() != 1) {
+//            throw new RuntimeException("expected exactly 1 MCParticle");
+//        }
 //        MCParticle particle = mcparticles.get(0);
 
         // Get the list of raw ECal hits.
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1