LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  February 2016

HPS-SVN February 2016

Subject:

r4217 - in /java/branches/layer0-branch: conditions/src/main/java/org/hps/conditions/database/ conditions/src/main/java/org/hps/conditions/svt/ detector-model/src/main/java/org/hps/detector/svt/ detector-model/src/main/java/org/lcsim/detector/converter/compact/ detector-model/src/main/java/org/lcsim/detector/tracker/silicon/ detector-model/src/main/java/org/lcsim/geometry/compact/converter/ detector-model/src/test/java/org/hps/detector/svt/ job/src/main/java/org/hps/job/ logging/src/main/resources/org/hps/logging/config/ parent/ steering-files/src/main/resources/org/hps/steering/users/phansson/ tracking/src/main/resources/org/hps/recon/tracking/strategies/ users/src/main/java/org/hps/users/phansson/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Fri, 12 Feb 2016 22:24:30 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (1685 lines)

Author: [log in to unmask]
Date: Fri Feb 12 14:24:26 2016
New Revision: 4217

Log:
Changes to be able to setup and run readout and recon on the 2016 detector.

Added:
    java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/AbstractSvtDetectorSetup.java
    java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/EngRun2015SvtDetectorSetup.java
      - copied, changed from r4136, java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/SvtDetectorSetup.java
    java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/Prop2016SvtDetectorSetup.java
    java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/TestRunSvtDetectorSetup.java
    java/branches/layer0-branch/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-7-layers.xml
Removed:
    java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/SvtDetectorSetup.java
Modified:
    java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
    java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java
    java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java
    java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2016Converter.java
    java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java
    java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java
    java/branches/layer0-branch/detector-model/src/test/java/org/hps/detector/svt/SvtDetectorSetupTest.java
    java/branches/layer0-branch/job/src/main/java/org/hps/job/JobManager.java
    java/branches/layer0-branch/logging/src/main/resources/org/hps/logging/config/logging.properties
    java/branches/layer0-branch/parent/pom.xml
    java/branches/layer0-branch/steering-files/src/main/resources/org/hps/steering/users/phansson/HPSTrackingDefaults.lcsim
    java/branches/layer0-branch/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java

Modified: java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Fri Feb 12 14:24:26 2016
@@ -99,6 +99,13 @@
      */
     private static final int TEST_RUN_MAX_RUN = 1365;
 
+    
+    /**
+     * The max value for a run to be considered Eng Run 2015.
+     */
+    private static final int ENG_RUN_2015_MAX_RUN = 9999;
+
+    
     static {
         // Set default login timeout of 5 seconds.
         DriverManager.setLoginTimeout(30);
@@ -110,15 +117,22 @@
      * @return the static instance of the manager
      */
     public static synchronized DatabaseConditionsManager getInstance() {
+        
+        LOGGER.info("getInstance called");
 
         // Is there no manager installed yet?
         if (!ConditionsManager.isSetup() || !(ConditionsManager.defaultInstance() instanceof DatabaseConditionsManager)) {
 
+            LOGGER.info("setup cond manager");
+
             // Create a new instance if necessary, which will install it globally as the default.
             final DatabaseConditionsManager dbManager = new DatabaseConditionsManager();
 
             // Register default conditions manager.
             ConditionsManager.setDefaultConditionsManager(dbManager);
+
+            LOGGER.info("setup cond manager DONE");
+
         }
 
         // Get the instance back from the default conditions system and check that the type is correct now.
@@ -140,6 +154,16 @@
     public static boolean isTestRun(final int runNumber) {
         return runNumber > 0 && runNumber <= TEST_RUN_MAX_RUN;
     }
+    
+    /**
+     * Utility method to determine if a run number is from the Prop 2016.
+     *
+     * @param runNumber the run number
+     * @return <code>true</code> if run number is from the Prop 2016
+     */
+    public static boolean isProp2016Run(final int runNumber) {
+        return runNumber > ENG_RUN_2015_MAX_RUN;
+    }
 
     /**
      * Reset the global static instance of the conditions manager to a new object.
@@ -234,6 +258,11 @@
      * True if current run number is from Test Run.
      */
     private boolean isTestRun = false;
+
+    /**
+     * True if current run number is from Prop 2016.
+     */
+    private boolean isProp2016Run = false;
 
     /**
      * Flag used to print connection parameters one time.
@@ -687,6 +716,17 @@
         if (isTestRun(runNumber)) {
             this.isTestRun = true;
         }
+        
+        
+        System.out.println("initializing with detector " + detectorName + " and run " + runNumber);
+
+        if (isProp2016Run(runNumber)) {
+            System.out.println("prop2016 pelle YES");
+            this.isProp2016Run = true;
+        } else {
+            System.out.println("prop2016 pelle NO");
+        }
+        
 
         // Is not configured yet?
         if (!this.isConfigured) {
@@ -713,8 +753,12 @@
 
         // Call the super class's setDetector method to construct the detector object and activate conditions listeners.
         LOGGER.fine("activating default conditions manager");
+        System.out.println("call super setDetector with detector " + detectorName + " run " + runNumber);
+        
         super.setDetector(detectorName, runNumber);
 
+        System.out.println("DONE call super setDetector with detector " + detectorName + " run " + runNumber);
+        
         // Should all conditions sets be cached?
         if (this.cacheAllConditions) {
             // Cache the conditions sets of all registered converters.
@@ -737,6 +781,11 @@
 
         this.isInitialized = true;
 
+        
+        if (isProp2016Run(runNumber)) {
+            System.out.println("prop2016 pelle YES2");
+           
+        }
         LOGGER.info("conditions system initialized successfully");
     }
 
@@ -774,6 +823,15 @@
      */
     public boolean isTestRun() {
         return this.isTestRun;
+    }
+
+    /**
+     * Return <code>true</code> if Test Run configuration is active
+     *
+     * @return <code>true</code> if Test Run configuration is active
+     */
+    public boolean isProp2016Run() {
+        return this.isProp2016Run;
     }
 
     /**

Modified: java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java
 =============================================================================
--- java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java	(original)
+++ java/branches/layer0-branch/conditions/src/main/java/org/hps/conditions/svt/SvtConditions.java	Fri Feb 12 14:24:26 2016
@@ -2,9 +2,11 @@
 
 import static org.hps.conditions.svt.AbstractSvtChannel.MAX_NUMBER_OF_SAMPLES;
 
+import org.hps.conditions.svt.AbstractSvtDaqMapping.AbstractSvtDaqMappingCollection;
 import org.hps.conditions.svt.SvtChannel.SvtChannelCollection;
 import org.hps.conditions.svt.SvtDaqMapping.SvtDaqMappingCollection;
 import org.hps.conditions.svt.SvtT0Shift.SvtT0ShiftCollection;
+import org.hps.conditions.svt.TestRunSvtDaqMapping.TestRunSvtDaqMappingCollection;
 
 /**
  * This class contains all test run SVT conditions data by readout channel. {@link SvtChannel} objects from the SVT

Added: java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/AbstractSvtDetectorSetup.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/AbstractSvtDetectorSetup.java	(added)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/AbstractSvtDetectorSetup.java	Fri Feb 12 14:24:26 2016
@@ -0,0 +1,124 @@
+package org.hps.detector.svt;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.hps.conditions.svt.AbstractSvtConditions;
+import org.hps.conditions.svt.AbstractSvtDaqMapping;
+import org.hps.conditions.svt.AbstractSvtDaqMapping.AbstractSvtDaqMappingCollection;
+import org.hps.conditions.svt.SvtConditions;
+import org.hps.util.Pair;
+import org.lcsim.conditions.ConditionsEvent;
+import org.lcsim.conditions.ConditionsListener;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.geometry.compact.Subdetector;
+/**
+ * This class puts {@link SvtConditions} data onto <code>HpsSiSensor</code> objects.
+ *
+ * @author Jeremy McCormick, SLAC
+ * @author Omar Moreno, UCSC
+ * @author Per Hansson Adrian, SLAC
+ */
+public abstract class AbstractSvtDetectorSetup implements ConditionsListener {
+
+    /**
+     * Initialize logger.
+     */
+    protected static Logger LOGGER = Logger.getLogger(AbstractSvtDetectorSetup.class.getName());
+    /**
+     * The number of noise samples.
+     */
+    protected static final int NOISE_COUNT = 6;
+    /**
+     * The number of pedestals.
+     */
+    protected static final int PEDESTAL_COUNT = 6;
+    /**
+     * Flag to enable/disable this class from within conditions manager.
+     */
+    protected boolean enabled = true;
+    /**
+     * The name of the SVT subdetector in the detector model.
+     */
+    protected String svtName = "Tracker";
+
+    /**
+     * Get a DAQ pair (FEB ID, FEB Hybrid ID) for the given {@link HpsSiSensor}.
+     * 
+     * @param sensor
+     *            a sensor of type {@link HpsSiSensor}
+     * @return the DAQ pair associated with the sensor
+     */
+    abstract protected Pair<Integer, Integer> getDaqPair(AbstractSvtDaqMappingCollection<? extends AbstractSvtDaqMapping>  daqMap, final HpsSiSensor sensor);
+    
+
+    /**
+     * Hook that activates this class when conditions change (new detector or
+     * run number).
+     * 
+     * @param event
+     *            the conditions event
+     */
+    abstract public void conditionsChanged(final ConditionsEvent event);
+
+    /**
+     * Load conditions data onto a detector object.
+     * 
+     * @param subdetector
+     *            the SVT subdetector object
+     * @param conditions
+     *            the conditions object
+     */
+    abstract protected void loadDefault(final Subdetector subdetector, final AbstractSvtConditions conditions);
+   
+
+    /**
+     * Set whether this class is enabled to be activated on conditions changes.
+     * 
+     * @param enabled
+     *            <code>true</code> to enable
+     */
+    public void setEnabled(final boolean enabled) {
+        this.enabled = enabled;
+    }
+
+    /**
+     * Set the log level.
+     * 
+     * @param level
+     *            the log level
+     */
+    public void setLogLevel(final Level level) {
+        LOGGER.setLevel(level);
+        LOGGER.getHandlers()[0].setLevel(level);
+    }
+
+    /**
+     * Set the name of the SVT in the detector model.
+     * 
+     * @param svtName
+     *            the name of the SVt in the detector model.
+     */
+    public void setSvtName(final String svtName) {
+        this.svtName = svtName;
+    }
+
+/*
+    static Pair<Integer, Integer> getTestRunDaqPair(TestRunSvtDaqMappingCollection daqMap, final HpsSiSensor sensor) {
+
+        final String svtHalf = sensor.isTopLayer() ? AbstractSvtDaqMapping.TOP_HALF : AbstractSvtDaqMapping.BOTTOM_HALF;
+        for (final TestRunSvtDaqMapping daqMapping : daqMap) {
+
+            if (svtHalf.equals(daqMapping.getSvtHalf()) && daqMapping.getLayerNumber() == sensor.getLayerNumber()) {
+
+                return new Pair<Integer, Integer>(daqMapping.getFpgaID(), daqMapping.getHybridID());
+            }
+        }
+        return null;
+    }
+*/
+    public AbstractSvtDetectorSetup() {
+        super();
+    }
+
+}

Copied: java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/EngRun2015SvtDetectorSetup.java (from r4136, java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/SvtDetectorSetup.java)
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/SvtDetectorSetup.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/EngRun2015SvtDetectorSetup.java	Fri Feb 12 14:24:26 2016
@@ -2,31 +2,22 @@
 
 import java.util.Collection;
 import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 
 import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.svt.AbstractSvtConditions;
 import org.hps.conditions.svt.AbstractSvtDaqMapping;
+import org.hps.conditions.svt.AbstractSvtDaqMapping.AbstractSvtDaqMappingCollection;
 import org.hps.conditions.svt.ChannelConstants;
 import org.hps.conditions.svt.SvtChannel;
-import org.hps.conditions.svt.SvtDaqMapping;
-import org.hps.conditions.svt.TestRunSvtDaqMapping;
 import org.hps.conditions.svt.SvtChannel.SvtChannelCollection;
 import org.hps.conditions.svt.SvtConditions;
+import org.hps.conditions.svt.SvtDaqMapping;
 import org.hps.conditions.svt.SvtDaqMapping.SvtDaqMappingCollection;
 import org.hps.conditions.svt.SvtT0Shift;
 import org.hps.conditions.svt.SvtT0Shift.SvtT0ShiftCollection;
-import org.hps.conditions.svt.TestRunSvtChannel;
-import org.hps.conditions.svt.TestRunSvtChannel.TestRunSvtChannelCollection;
-import org.hps.conditions.svt.TestRunSvtConditions;
-import org.hps.conditions.svt.TestRunSvtDaqMapping.TestRunSvtDaqMappingCollection;
-import org.hps.conditions.svt.TestRunSvtT0Shift;
-import org.hps.conditions.svt.TestRunSvtT0Shift.TestRunSvtT0ShiftCollection;
 import org.hps.util.Pair;
 import org.lcsim.conditions.ConditionsEvent;
-import org.lcsim.conditions.ConditionsListener;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
-import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
 import org.lcsim.geometry.compact.Subdetector;
 
 /**
@@ -34,71 +25,48 @@
  *
  * @author Jeremy McCormick, SLAC
  * @author Omar Moreno, UCSC
+ * @author Per Hansson Adrian, SLAC
  */
-public final class SvtDetectorSetup implements ConditionsListener {
-
-    /**
-     * Initialize logger.
-     */
-    private static Logger LOGGER = Logger.getLogger(SvtDetectorSetup.class.getPackage().getName());
-
-    /**
-     * The number of noise samples.
-     */
-    private static final int NOISE_COUNT = 6;
-
-    /**
-     * The number of pedestals.
-     */
-    private static final int PEDESTAL_COUNT = 6;
-
-    /**
-     * Flag to enable/disable this class from within conditions manager.
-     */
-    private boolean enabled = true;
-
-    /**
-     * The name of the SVT subdetector in the detector model.
-     */
-    private String svtName = "Tracker";
+public class EngRun2015SvtDetectorSetup extends AbstractSvtDetectorSetup {
 
     /**
      * Constructor that uses the default detector name.
      */
-    public SvtDetectorSetup() {
+    public EngRun2015SvtDetectorSetup() {
     }
 
     /**
      * Constructor that takes name of SVT.
-     *
-     * @param svtName the name of the SVT subdetector
+     * 
+     * @param svtName
+     *            the name of the SVT subdetector
      */
-    public SvtDetectorSetup(final String svtName) {
+    public EngRun2015SvtDetectorSetup(final String svtName) {
         this.svtName = svtName;
     }
 
-    /**
-     * Hook that activates this class when conditions change (new detector or run number).
-     *
-     * @param event the conditions event
+    /* (non-Javadoc)
+     * @see org.hps.detector.svt.AbstractSvtDetectorSetup#conditionsChanged(org.lcsim.conditions.ConditionsEvent)
      */
     @Override
     public void conditionsChanged(final ConditionsEvent event) {
         if (this.enabled) {
             final DatabaseConditionsManager manager = (DatabaseConditionsManager) event.getConditionsManager();
             final Subdetector subdetector = manager.getDetectorObject().getSubdetector(this.svtName);
+
+            if (manager.isTestRun())
+                throw new RuntimeException(
+                        "The conditions manager is Test run but we are settiung up the 2015 eng run SVT?!");
+
             if (subdetector != null) {
-                if (manager.isTestRun()) {
-                    LOGGER.info("activating Test Run setup");
-                    final TestRunSvtConditions svtConditions = manager.getCachedConditions(TestRunSvtConditions.class,
-                            "test_run_svt_conditions").getCachedData();
-                    this.loadTestRun(subdetector, svtConditions);
-                } else {
-                    LOGGER.info("activating default setup");
-                    final SvtConditions svtConditions = manager.getCachedConditions(SvtConditions.class,
-                            "svt_conditions").getCachedData();
-                    this.loadDefault(subdetector, svtConditions);
-                }
+                LOGGER.info("activating default setup");
+                final SvtConditions svtConditions = manager.getCachedConditions(SvtConditions.class, "svt_conditions")
+                        .getCachedData();
+                if( !(svtConditions instanceof SvtConditions))
+                    throw new RuntimeException("The conditions are of the wrong type.");
+                else
+                    LOGGER.info("svtConditions are correct instance.");
+                    loadDefault(subdetector, svtConditions);
             } else {
                 LOGGER.warning("no SVT detector was found so setup was NOT activated");
                 this.enabled = false;
@@ -108,23 +76,24 @@
         }
     }
 
-    /**
-     * Load conditions data onto a detector object.
-     *
-     * @param subdetector the SVT subdetector object
-     * @param conditions the conditions object
-     */
-    void loadDefault(final Subdetector subdetector, final SvtConditions conditions) {
-
+    @Override
+    protected void loadDefault(final Subdetector subdetector, final AbstractSvtConditions conditions) {
+        LOGGER.info("calling loaddefaut in EngRun2015SvtDetectorSetup");
+        
         LOGGER.info("loading default SVT conditions onto subdetector " + subdetector.getName());
-
+        
+        if( !(conditions instanceof SvtConditions))
+            throw new RuntimeException("The conditions are of the wrong type.");
+        
+        SvtConditions engRun2015Conditions = (SvtConditions) conditions;
         // Find sensor objects.
         final List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
         LOGGER.info("setting up " + sensors.size() + " SVT sensors");
-        final SvtChannelCollection channelMap = conditions.getChannelMap();
-        LOGGER.info("channel map has " + conditions.getChannelMap().size() + " entries");
-        final SvtDaqMappingCollection daqMap = conditions.getDaqMap();
-        final SvtT0ShiftCollection t0Shifts = conditions.getT0Shifts();
+        final SvtChannelCollection channelMap = engRun2015Conditions.getChannelMap();
+        LOGGER.info("channel map has " + engRun2015Conditions.getChannelMap().size() + " entries");
+        //final AbstractSvtDaqMappingCollection<? extends AbstractSvtDaqMapping> daqMap = engRun2015Conditions.getDaqMap();
+        final SvtDaqMappingCollection daqMap = engRun2015Conditions.getDaqMap();
+        final SvtT0ShiftCollection t0Shifts = engRun2015Conditions.getT0Shifts();
 
         // Loop over sensors.
         for (final HpsSiSensor sensor : sensors) {
@@ -159,7 +128,7 @@
             for (final SvtChannel channel : channels) {
 
                 // Get conditions data for this channel.
-                final ChannelConstants constants = conditions.getChannelConstants(channel);
+                final ChannelConstants constants = engRun2015Conditions.getChannelConstants(channel);
                 final int channelNumber = channel.getChannel();
 
                 //
@@ -199,158 +168,23 @@
         }
     }
 
-    /**
-     * Load conditions from Test Run detector.
-     *
-     * @param subdetector the SVT subdetector object
-     * @param conditions the Test Run conditions
-     */
-    void loadTestRun(final Subdetector subdetector, final TestRunSvtConditions conditions) {
+    @Override
+    protected Pair<Integer, Integer> getDaqPair(AbstractSvtDaqMappingCollection<? extends AbstractSvtDaqMapping> daqMap, final HpsSiSensor sensor) {
+        final String svtHalf = sensor.isTopLayer() ? AbstractSvtDaqMapping.TOP_HALF : AbstractSvtDaqMapping.BOTTOM_HALF;
+        for (final AbstractSvtDaqMapping abstractMapping : daqMap) {
+            
+            if(!(abstractMapping instanceof SvtDaqMapping))
+                throw new RuntimeException("This abstract mapping has the wrong type.");
+            
+            SvtDaqMapping svtMapping = (SvtDaqMapping) abstractMapping;
+            if (svtHalf.equals(svtMapping.getSvtHalf()) && svtMapping.getLayerNumber() == sensor.getLayerNumber()
+                    && svtMapping.getSide().equals(sensor.getSide())) {
 
-        LOGGER.info("loading Test Run SVT conditions onto subdetector " + subdetector.getName());
-
-        // Find sensor objects.
-        final List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
-        LOGGER.info("setting up " + sensors.size() + " SVT sensors");
-        final TestRunSvtChannelCollection channelMap = conditions.getChannelMap();
-        LOGGER.info("channel map has " + channelMap.size() + " entries");
-        final TestRunSvtDaqMappingCollection daqMap = conditions.getDaqMap();
-        final TestRunSvtT0ShiftCollection t0Shifts = conditions.getT0Shifts();
-
-        // Loop over sensors.
-        for (final HpsSiSensor sensor : sensors) {
-
-            // Reset possible existing conditions data on sensor.
-            sensor.reset();
-
-            // Get DAQ pair (FPGA ID, Hybrid ID) corresponding to this sensor
-            final Pair<Integer, Integer> daqPair = SvtDetectorSetup.getTestRunDaqPair(daqMap, sensor);
-            if (daqPair == null) {
-                throw new RuntimeException("Failed to find DAQ pair for sensor: " + sensor.getName());
-            }
-
-            // Set the FPGA ID of the sensor
-            ((HpsTestRunSiSensor) sensor).setFpgaID(daqPair.getFirstElement());
-
-            // Set the hybrid ID of the sensor
-            ((HpsTestRunSiSensor) sensor).setHybridID(daqPair.getSecondElement());
-
-            // Set the orientation of the sensor
-            final String orientation = daqMap.getOrientation(daqPair);
-            if (orientation != null && orientation.contentEquals(AbstractSvtDaqMapping.AXIAL)) {
-                sensor.setAxial(true);
-            } else if (orientation != null && orientation.contains(AbstractSvtDaqMapping.STEREO)) {
-                sensor.setStereo(true);
-            }
-
-            // Find all the channels for this sensor.
-            final Collection<TestRunSvtChannel> channels = channelMap.find(daqPair);
-
-            // Loop over the channels of the sensor.
-            for (final TestRunSvtChannel channel : channels) {
-
-                // Get conditions data for this channel.
-                final ChannelConstants constants = conditions.getChannelConstants(channel);
-                final int channelNumber = channel.getChannel();
-
-                //
-                // Set conditions data for this channel on the sensor object:
-                //
-                // Check if the channel was flagged as bad
-                if (constants.isBadChannel()) {
-                    sensor.setBadChannel(channelNumber);
-                }
-
-                // Set the pedestal and noise of each of the samples for the
-                // channel
-                final double[] pedestal = new double[6];
-                final double[] noise = new double[6];
-                for (int sampleN = 0; sampleN < HpsSiSensor.NUMBER_OF_SAMPLES; sampleN++) {
-                    pedestal[sampleN] = constants.getCalibration().getPedestal(sampleN);
-                    noise[sampleN] = constants.getCalibration().getNoise(sampleN);
-                }
-                sensor.setPedestal(channelNumber, pedestal);
-                sensor.setNoise(channelNumber, noise);
-
-                // Set the gain and offset for the channel
-                sensor.setGain(channelNumber, constants.getGain().getGain());
-                sensor.setOffset(channelNumber, constants.getGain().getOffset());
-
-                // Set the shape fit parameters
-                sensor.setShapeFitParameters(channelNumber, constants.getShapeFitParameters().toArray());
-            }
-
-            // Set the t0 shift for the sensor.
-            final TestRunSvtT0Shift sensorT0Shift = t0Shifts.getT0Shift(daqPair);
-            sensor.setT0Shift(sensorT0Shift.getT0Shift());
-        }
-    }
-
-    /**
-     * Set whether this class is enabled to be activated on conditions changes.
-     *
-     * @param enabled <code>true</code> to enable
-     */
-    public void setEnabled(final boolean enabled) {
-        this.enabled = enabled;
-    }
-
-    /**
-     * Set the log level.
-     *
-     * @param level the log level
-     */
-    public void setLogLevel(final Level level) {
-        LOGGER.setLevel(level);
-        LOGGER.getHandlers()[0].setLevel(level);
-    }
-
-    /**
-     * Set the name of the SVT in the detector model.
-     *
-     * @param svtName the name of the SVt in the detector model.
-     */
-    public void setSvtName(final String svtName) {
-        this.svtName = svtName;
-    }
-    
-    /**
-     * Get a DAQ pair (FEB ID, FEB Hybrid ID) for the given {@link HpsSiSensor}.
-     *
-     * @param sensor a sensor of type {@link HpsSiSensor}
-     * @return the DAQ pair associated with the sensor
-     */
-    static Pair<Integer, Integer> getDaqPair(SvtDaqMappingCollection daqMap, final HpsSiSensor sensor) {
-
-        final String svtHalf = sensor.isTopLayer() ? AbstractSvtDaqMapping.TOP_HALF : AbstractSvtDaqMapping.BOTTOM_HALF;
-        for (final SvtDaqMapping object : daqMap) {
-
-            if (svtHalf.equals(object.getSvtHalf()) && object.getLayerNumber() == sensor.getLayerNumber()
-                    && object.getSide().equals(sensor.getSide())) {
-
-                return new Pair<Integer, Integer>(object.getFebID(), object.getFebHybridID());
+                return new Pair<Integer, Integer>(svtMapping.getFebID(), svtMapping.getFebHybridID());
             }
         }
         return null;
     }
-    
-    /**
-     * Get a test run DAQ pair (FPGA and Hybrid ID) for the given {@linkplain HpsTestRunSiSensor}.
-     *
-     * @param sensor a sensor of type {@link HpsTestRunSiSensor}
-     * @return the DAQ pair associated with the sensor
-     */
-    static Pair<Integer, Integer> getTestRunDaqPair(TestRunSvtDaqMappingCollection daqMap, final HpsSiSensor sensor) {
 
-        final String svtHalf = sensor.isTopLayer() ? AbstractSvtDaqMapping.TOP_HALF : AbstractSvtDaqMapping.BOTTOM_HALF;
-        for (final TestRunSvtDaqMapping daqMapping : daqMap) {
-
-            if (svtHalf.equals(daqMapping.getSvtHalf()) && daqMapping.getLayerNumber() == sensor.getLayerNumber()) {
-
-                return new Pair<Integer, Integer>(daqMapping.getFpgaID(), daqMapping.getHybridID());
-            }
-        }
-        return null;
-    }
     
 }

Added: java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/Prop2016SvtDetectorSetup.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/Prop2016SvtDetectorSetup.java	(added)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/Prop2016SvtDetectorSetup.java	Fri Feb 12 14:24:26 2016
@@ -0,0 +1,42 @@
+package org.hps.detector.svt;
+
+import org.hps.conditions.svt.AbstractSvtConditions;
+import org.hps.conditions.svt.SvtConditions;
+import org.lcsim.geometry.compact.Subdetector;
+
+/**
+ * This class puts {@link SvtConditions} data onto <code>HpsSiSensor</code>
+ * objects.
+ * 
+ * @author Jeremy McCormick, SLAC
+ * @author Omar Moreno, UCSC
+ * @author Per Hansson Adrian, SLAC
+ */
+public final class Prop2016SvtDetectorSetup extends EngRun2015SvtDetectorSetup {
+
+    /**
+     * Constructor that uses the default detector name.
+     */
+    public Prop2016SvtDetectorSetup() {
+        super();
+    }
+
+    /**
+     * Constructor that takes name of SVT.
+     * 
+     * @param svtName
+     *            the name of the SVT subdetector
+     */
+    public Prop2016SvtDetectorSetup(final String svtName) {
+        super(svtName);
+    }
+
+    @Override
+    protected void loadDefault(Subdetector subdetector, AbstractSvtConditions conditions) {
+        LOGGER.info("calling loaddefaut in Prop2016SvtDetectorSetup");
+        super.loadDefault(subdetector, conditions);
+    }
+
+    
+    
+}

Added: java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/TestRunSvtDetectorSetup.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/TestRunSvtDetectorSetup.java	(added)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/hps/detector/svt/TestRunSvtDetectorSetup.java	Fri Feb 12 14:24:26 2016
@@ -0,0 +1,195 @@
+package org.hps.detector.svt;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.svt.AbstractSvtConditions;
+import org.hps.conditions.svt.AbstractSvtDaqMapping;
+import org.hps.conditions.svt.AbstractSvtDaqMapping.AbstractSvtDaqMappingCollection;
+import org.hps.conditions.svt.ChannelConstants;
+import org.hps.conditions.svt.TestRunSvtChannel;
+import org.hps.conditions.svt.TestRunSvtChannel.TestRunSvtChannelCollection;
+import org.hps.conditions.svt.TestRunSvtConditions;
+import org.hps.conditions.svt.TestRunSvtDaqMapping;
+import org.hps.conditions.svt.TestRunSvtDaqMapping.TestRunSvtDaqMappingCollection;
+import org.hps.conditions.svt.TestRunSvtT0Shift;
+import org.hps.conditions.svt.TestRunSvtT0Shift.TestRunSvtT0ShiftCollection;
+import org.hps.util.Pair;
+import org.lcsim.conditions.ConditionsEvent;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
+import org.lcsim.geometry.compact.Subdetector;
+
+/**
+ * This class puts {@link TestRunSvtConditions} data onto <code>HpsSiSensor</code> objects.
+ *
+ * @author Jeremy McCormick, SLAC
+ * @author Omar Moreno, UCSC
+ * @author Per Hansson Adrian, SLAC
+ */
+public final class TestRunSvtDetectorSetup extends AbstractSvtDetectorSetup {
+
+    /**
+     * Constructor that uses the default detector name.
+     */
+    public TestRunSvtDetectorSetup() {
+    }
+
+    /**
+     * Constructor that takes name of SVT.
+     *
+     * @param svtName the name of the SVT subdetector
+     */
+    public TestRunSvtDetectorSetup(final String svtName) {
+        this.svtName = svtName;
+    }
+    
+    
+    
+/* (non-Javadoc)
+ * @see org.hps.detector.svt.AbstractSvtDetectorSetup#conditionsChanged(org.lcsim.conditions.ConditionsEvent)
+ */
+@Override
+public void conditionsChanged(final ConditionsEvent event) {
+    if (this.enabled) {
+        final DatabaseConditionsManager manager = (DatabaseConditionsManager) event.getConditionsManager();
+        final Subdetector subdetector = manager.getDetectorObject().getSubdetector(this.svtName);
+        
+            if (!manager.isTestRun())
+                throw new RuntimeException(
+                        "The conditions manager is not Test run but we are settiung up test run SVT?!");
+        
+        if (subdetector != null) {
+            LOGGER.info("activating Test Run setup");
+            final TestRunSvtConditions svtConditions = manager.getCachedConditions(TestRunSvtConditions.class,
+                    "test_run_svt_conditions").getCachedData();
+            this.loadDefault(subdetector, svtConditions);
+        } else {
+            LOGGER.warning("no SVT detector was found so setup was NOT activated");
+            this.enabled = false;
+        }
+    } else {
+        LOGGER.config("disabled");
+    }
+}
+
+
+
+protected void loadDefault(final Subdetector subdetector, final AbstractSvtConditions conditions) {
+
+    LOGGER.info("loading Test Run SVT conditions onto subdetector " + subdetector.getName());
+    
+    if( !(conditions instanceof TestRunSvtConditions))
+        throw new RuntimeException("The conditions are of the wrong type.");
+
+    TestRunSvtConditions testRunConditions = (TestRunSvtConditions) conditions;
+    
+    // Find sensor objects.
+    final List<HpsSiSensor> sensors = subdetector.getDetectorElement().findDescendants(HpsSiSensor.class);
+    LOGGER.info("setting up " + sensors.size() + " SVT sensors");
+    final TestRunSvtChannelCollection channelMap = testRunConditions.getChannelMap();
+    LOGGER.info("channel map has " + channelMap.size() + " entries");
+    final TestRunSvtDaqMappingCollection daqMap = testRunConditions.getDaqMap();
+    final TestRunSvtT0ShiftCollection t0Shifts = testRunConditions.getT0Shifts();
+
+    // Loop over sensors.
+    for (final HpsSiSensor sensor : sensors) {
+
+        // Reset possible existing conditions data on sensor.
+        sensor.reset();
+
+        // Get DAQ pair (FPGA ID, Hybrid ID) corresponding to this sensor
+        final Pair<Integer, Integer> daqPair = getDaqPair(daqMap, sensor);
+        if (daqPair == null) {
+            throw new RuntimeException("Failed to find DAQ pair for sensor: " + sensor.getName());
+        }
+
+        // Set the FPGA ID of the sensor
+        ((HpsTestRunSiSensor) sensor).setFpgaID(daqPair.getFirstElement());
+
+        // Set the hybrid ID of the sensor
+        ((HpsTestRunSiSensor) sensor).setHybridID(daqPair.getSecondElement());
+
+        // Set the orientation of the sensor
+        final String orientation = daqMap.getOrientation(daqPair);
+        if (orientation != null && orientation.contentEquals(AbstractSvtDaqMapping.AXIAL)) {
+            sensor.setAxial(true);
+        } else if (orientation != null && orientation.contains(AbstractSvtDaqMapping.STEREO)) {
+            sensor.setStereo(true);
+        }
+
+        // Find all the channels for this sensor.
+        final Collection<TestRunSvtChannel> channels = channelMap.find(daqPair);
+
+        // Loop over the channels of the sensor.
+        for (final TestRunSvtChannel channel : channels) {
+
+            // Get conditions data for this channel.
+            final ChannelConstants constants = testRunConditions.getChannelConstants(channel);
+            final int channelNumber = channel.getChannel();
+
+            //
+            // Set conditions data for this channel on the sensor object:
+            //
+            // Check if the channel was flagged as bad
+            if (constants.isBadChannel()) {
+                sensor.setBadChannel(channelNumber);
+            }
+
+            // Set the pedestal and noise of each of the samples for the
+            // channel
+            final double[] pedestal = new double[6];
+            final double[] noise = new double[6];
+            for (int sampleN = 0; sampleN < HpsSiSensor.NUMBER_OF_SAMPLES; sampleN++) {
+                pedestal[sampleN] = constants.getCalibration().getPedestal(sampleN);
+                noise[sampleN] = constants.getCalibration().getNoise(sampleN);
+            }
+            sensor.setPedestal(channelNumber, pedestal);
+            sensor.setNoise(channelNumber, noise);
+
+            // Set the gain and offset for the channel
+            sensor.setGain(channelNumber, constants.getGain().getGain());
+            sensor.setOffset(channelNumber, constants.getGain().getOffset());
+
+            // Set the shape fit parameters
+            sensor.setShapeFitParameters(channelNumber, constants.getShapeFitParameters().toArray());
+        }
+
+        // Set the t0 shift for the sensor.
+        final TestRunSvtT0Shift sensorT0Shift = t0Shifts.getT0Shift(daqPair);
+        sensor.setT0Shift(sensorT0Shift.getT0Shift());
+    }
+}
+
+/**
+ * Get a test run DAQ pair (FPGA and Hybrid ID) for the given
+ * {@linkplain HpsTestRunSiSensor}.
+ * 
+ * @param sensor
+ *            a sensor of type {@link HpsTestRunSiSensor}
+ * @return the DAQ pair associated with the sensor
+ */
+@Override
+protected Pair<Integer, Integer> getDaqPair(AbstractSvtDaqMappingCollection<? extends AbstractSvtDaqMapping>  daqMap, HpsSiSensor sensor) {
+
+        final String svtHalf = sensor.isTopLayer() ? AbstractSvtDaqMapping.TOP_HALF : AbstractSvtDaqMapping.BOTTOM_HALF;
+        for (final AbstractSvtDaqMapping abstractMapping : daqMap) {
+            
+            if(!(abstractMapping instanceof TestRunSvtDaqMapping))
+                throw new RuntimeException("This abstract mapping has the wrong type.");
+            
+            TestRunSvtDaqMapping daqMapping = (TestRunSvtDaqMapping)  abstractMapping;
+            if (svtHalf.equals(daqMapping.getSvtHalf()) && daqMapping.getLayerNumber() == sensor.getLayerNumber()) {
+                return new Pair<Integer, Integer>(daqMapping.getFpgaID(), daqMapping.getHybridID());
+            }
+        }
+        return null;
+    
+}
+
+
+
+
+    
+}

Modified: java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2014ConverterBase.java	Fri Feb 12 14:24:26 2016
@@ -36,7 +36,7 @@
  */
 public abstract class HPSTracker2014ConverterBase extends AbstractSubdetectorConverter {
 
-    protected boolean _debug = false;
+    protected boolean _debug = true;
     protected IMaterial trackingMaterial = null;
     protected static HPSTrackerJavaBuilder builder;
 
@@ -352,7 +352,7 @@
 
         if(_debug) {
             System.out.printf("%s: create HpsSiSensor with old layer id %d with sensorNumber %d name %s moduleDe %s sensorPath %s sensor Id %d \n", getClass().getSimpleName(), 
-                                layerDe.getIdentifier(),sensorNumber, sensorName, moduleDe.getName(), sensorPath, sensorNumber);
+                                layerDe.getIdentifier().getValue(),sensorNumber, sensorName, moduleDe.getName(), sensorPath, sensorNumber);
         }
         //System.out.printf("%s: HpsSiSensor old layer id %d and module nr %d and sensor nr %d <-> DE name %s \n", getClass().getSimpleName(), 
         //        builder.getDetectorIdentifierHelper().getValue(layerDe.getIdentifier(), "layer"), ((SiTrackerModule) moduleDe).getModuleId(), sensorNumber,sensorName);

Modified: java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2016Converter.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2016Converter.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/converter/compact/HPSTracker2016Converter.java	Fri Feb 12 14:24:26 2016
@@ -11,45 +11,52 @@
     public HPSTracker2016Converter() {
         super();
     }
-    
-    /* (non-Javadoc)
-     * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#initializeBuilder(org.jdom.Element)
+
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#
+     * initializeBuilder(org.jdom.Element)
      */
     protected HPSTrackerJavaBuilder initializeBuilder(Element node) {
-       return new HPSTracker2016JavaBuilder(_debug, node);
+        return new HPSTracker2016JavaBuilder(_debug, node);
     }
 
-    /* (non-Javadoc)
-     * @see org.lcsim.detector.converter.compact.AbstractSubdetectorConverter#getSubdetectorType()
+    /*
+     * (non-Javadoc)
+     * 
+     * @see org.lcsim.detector.converter.compact.AbstractSubdetectorConverter#
+     * getSubdetectorType()
      */
     public Class getSubdetectorType() {
         return HPSTracker2016.class;
     }
 
-    /* 
-     * Override this to handle different layer structure.
-     * (non-Javadoc)
-     * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#getModuleNumber(org.lcsim.geometry.compact.converter.JavaSurveyVolume)
+    /*
+     * Override this to handle different layer structure. (non-Javadoc)
+     * 
+     * @see org.lcsim.detector.converter.compact.HPSTracker2014ConverterBase#
+     * getModuleNumber(org.lcsim.geometry.compact.converter.JavaSurveyVolume)
      */
     protected int getModuleNumber(String surveyVolume) {
         boolean isTopLayer = HPSTrackerBuilder.getHalfFromName(surveyVolume).equals("top") ? true : false;
         int layer = HPSTrackerBuilder.getLayerFromVolumeName(surveyVolume);
         int moduleNumber = -1;
-        if(isTopLayer) {
-            if(layer < 5 ) {
+        if (isTopLayer) {
+            if (layer < 5) {
                 moduleNumber = 0;
             } else {
-                if(HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
+                if (HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
                     moduleNumber = 0;
                 } else {
                     moduleNumber = 2;
                 }
             }
         } else {
-            if(layer < 5 ) {
+            if (layer < 5) {
                 moduleNumber = 1;
             } else {
-                if(HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
+                if (HPSTrackerBuilder.isHoleFromName(surveyVolume)) {
                     moduleNumber = 1;
                 } else {
                     moduleNumber = 3;
@@ -57,11 +64,10 @@
             }
         }
 
-        if(moduleNumber<0) throw new RuntimeException("Invalid module nr found for " + surveyVolume);
+        if (moduleNumber < 0)
+            throw new RuntimeException("Invalid module nr found for " + surveyVolume);
 
-                return moduleNumber;
+        return moduleNumber;
     }
 
-    
-    
 }

Modified: java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/detector/tracker/silicon/HpsSiSensor.java	Fri Feb 12 14:24:26 2016
@@ -20,6 +20,7 @@
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.LineSegment3D;
 import org.lcsim.detector.solids.Polygon3D;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 
 /**
  * This class extends {@link SiSensor} with conditions specific to HPS SVT half-modules (sensors) used during the
@@ -559,4 +560,13 @@
         return this.millepedeId;
     }
 
+    /**
+     * Get the layer nr from the detector element name. 
+     * 
+     * @return the layer name.
+     */
+    public int getLayerNumberFromDetectorElement() {
+        return HPSTrackerBuilder.getLayerFromVolumeName(this.getName());
+    }
+
 }

Modified: java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	(original)
+++ java/branches/layer0-branch/detector-model/src/main/java/org/lcsim/geometry/compact/converter/HPSTrackerBuilder.java	Fri Feb 12 14:24:26 2016
@@ -267,7 +267,7 @@
     
     public static String getHalfFromName(String name) {
         boolean matchBottom = Pattern.matches(".*bottom.*", name);
-        boolean matchTop = Pattern.matches(".*bottom.*", name);
+        boolean matchTop = Pattern.matches(".*top.*", name);
         
         if(matchBottom && matchTop)
             throw new RuntimeException("found both halfs from name  " + name);

Modified: java/branches/layer0-branch/detector-model/src/test/java/org/hps/detector/svt/SvtDetectorSetupTest.java
 =============================================================================
--- java/branches/layer0-branch/detector-model/src/test/java/org/hps/detector/svt/SvtDetectorSetupTest.java	(original)
+++ java/branches/layer0-branch/detector-model/src/test/java/org/hps/detector/svt/SvtDetectorSetupTest.java	Fri Feb 12 14:24:26 2016
@@ -62,7 +62,7 @@
     public void test() throws Exception {
 
         final DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
-        conditionsManager.addConditionsListener(new SvtDetectorSetup());
+        conditionsManager.addConditionsListener(new EngRun2015SvtDetectorSetup());
         //conditionsManager.setDetector("HPS-Proposal2014-v7-2pt2", 0);
         conditionsManager.setDetector("HPS-EngRun2015-Nominal-v3", 5772);
 
@@ -74,7 +74,7 @@
                 .getCachedData();
 
         // Load the SVT conditions onto detector.
-        final SvtDetectorSetup loader = new SvtDetectorSetup("Tracker");
+        final AbstractSvtDetectorSetup loader = new EngRun2015SvtDetectorSetup("Tracker");
         loader.loadDefault(detector.getSubdetector(SVT_SUBDETECTOR_NAME), conditions);
 
         // Check sensor data.

Modified: java/branches/layer0-branch/job/src/main/java/org/hps/job/JobManager.java
 =============================================================================
--- java/branches/layer0-branch/job/src/main/java/org/hps/job/JobManager.java	(original)
+++ java/branches/layer0-branch/job/src/main/java/org/hps/job/JobManager.java	Fri Feb 12 14:24:26 2016
@@ -4,7 +4,9 @@
 
 import org.hps.conditions.ConditionsDriver;
 import org.hps.conditions.database.DatabaseConditionsManager;
-import org.hps.detector.svt.SvtDetectorSetup;
+import org.hps.detector.svt.AbstractSvtDetectorSetup;
+import org.hps.detector.svt.Prop2016SvtDetectorSetup;
+import org.hps.detector.svt.TestRunSvtDetectorSetup;
 import org.lcsim.job.JobControlManager;
 import org.lcsim.util.Driver;
 
@@ -41,7 +43,26 @@
     public void setup(InputStream is) {
         
         // Add class that will setup SVT detector with conditions data (this is awkward but has to be done someplace).
-        DatabaseConditionsManager.getInstance().addConditionsListener(new SvtDetectorSetup());
+        
+        AbstractSvtDetectorSetup svtDetectorSetup;
+        
+        System.out.println("using run " + DatabaseConditionsManager.getInstance().getRun() + " pelle");
+        
+        if( DatabaseConditionsManager.getInstance().isTestRun() ) {
+            System.out.println("test run pelle");
+            svtDetectorSetup = new TestRunSvtDetectorSetup();
+        }
+        else if(DatabaseConditionsManager.getInstance().isProp2016Run()) {
+            System.out.println("2016 pelle");
+            svtDetectorSetup = new Prop2016SvtDetectorSetup();
+        }
+        else {
+            System.out.println("2015 pelle");
+            //svtDetectorSetup = new EngRun2015SvtDetectorSetup();
+            svtDetectorSetup = new Prop2016SvtDetectorSetup();
+        }
+        
+        DatabaseConditionsManager.getInstance().addConditionsListener(svtDetectorSetup);
         
         super.setup(is);
                 

Modified: java/branches/layer0-branch/logging/src/main/resources/org/hps/logging/config/logging.properties
 =============================================================================
--- java/branches/layer0-branch/logging/src/main/resources/org/hps/logging/config/logging.properties	(original)
+++ java/branches/layer0-branch/logging/src/main/resources/org/hps/logging/config/logging.properties	Fri Feb 12 14:24:26 2016
@@ -24,10 +24,10 @@
 
 # conditions
 org.hps.conditions.api.level = WARNING
-org.hps.conditions.database.level = CONFIG
+org.hps.conditions.database.level = FINEST
 org.hps.conditions.cli.level = CONFIG
 org.hps.conditions.ecal.level = WARNING
-org.hps.conditions.svt.level = WARNING
+org.hps.conditions.svt.level = FINEST
 
 # monitoring-drivers
 org.hps.monitoring.drivers.svt.level = INFO

Modified: java/branches/layer0-branch/parent/pom.xml
 =============================================================================
--- java/branches/layer0-branch/parent/pom.xml	(original)
+++ java/branches/layer0-branch/parent/pom.xml	Fri Feb 12 14:24:26 2016
@@ -12,7 +12,7 @@
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <org.lcsim.cacheDir>${user.home}</org.lcsim.cacheDir>
-        <lcsimVersion>3.1.7-SNAPSHOT</lcsimVersion>
+        <lcsimVersion>3.2-SNAPSHOT</lcsimVersion>
         <skipSite>false</skipSite>
         <skipPlugin>false</skipPlugin>
     </properties>

Modified: java/branches/layer0-branch/steering-files/src/main/resources/org/hps/steering/users/phansson/HPSTrackingDefaults.lcsim
 =============================================================================
--- java/branches/layer0-branch/steering-files/src/main/resources/org/hps/steering/users/phansson/HPSTrackingDefaults.lcsim	(original)
+++ java/branches/layer0-branch/steering-files/src/main/resources/org/hps/steering/users/phansson/HPSTrackingDefaults.lcsim	Fri Feb 12 14:24:26 2016
@@ -20,7 +20,8 @@
 
     <driver name="ConditionsDriver" type="org.hps.conditions.ConditionsDriver">
          <detectorName>${detector}</detectorName>
-          <runNumber>${run}</runNumber>
+          <runNumber>10000</runNumber>
+          <!--<runNumber>${run}</runNumber>-->
         <freeze>true</freeze>
     </driver>
         <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
@@ -38,7 +39,7 @@
         <driver name="TrackerReconDriver" type="org.hps.recon.tracking.TrackerReconDriver">
             <debug>false</debug>
             <!--<strategyResource>HPS-Full-All.xml</strategyResource>-->
-            <strategyResource>HPS-Full.xml</strategyResource>
+            <strategyResource>HPS-Full-7-layers.xml</strategyResource>
         </driver>
         <driver name="GBLOutputDriver" type="org.hps.recon.tracking.gbl.GBLOutputDriver">
             <debug>0</debug>

Added: java/branches/layer0-branch/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-7-layers.xml
 =============================================================================
--- java/branches/layer0-branch/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-7-layers.xml	(added)
+++ java/branches/layer0-branch/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-7-layers.xml	Fri Feb 12 14:24:26 2016
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<StrategyList xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://lcsim.org/recon/tracking/seedtracker/strategybuilder/strategies.xsd">
+    <TargetDetector>HPS-Full-7-Layer</TargetDetector>
+    <Strategy name="HelicalTrackHit Strategy">
+        
+        <!--Cutoffs-->
+        
+        <MinPT>0.100</MinPT>
+        <MinHits>7</MinHits>
+        <MinConfirm>1</MinConfirm>
+        
+        <MaxDCA>4.0</MaxDCA>
+        <MaxZ0>4.0</MaxZ0>
+
+        <MaxChisq>100.0</MaxChisq>
+        <BadHitChisq>10.0</BadHitChisq>
+
+        <!--Layers-->
+
+        <Layers>                 
+            <Layer type="Seed" layer_number="5" detector_name="Tracker" be_flag="BARREL" />
+            <Layer type="Seed" layer_number="3" detector_name="Tracker" be_flag="BARREL" />
+            <Layer type="Seed" layer_number="1" detector_name="Tracker" be_flag="BARREL" />
+            <Layer type="Confirm" layer_number="7" detector_name="Tracker" be_flag="BARREL" />
+            <Layer type="Extend" layer_number="9" detector_name="Tracker" be_flag="BARREL" />
+             <Layer type="Extend" layer_number="11" detector_name="Tracker" be_flag="BARREL" />
+             <Layer type="Extend" layer_number="13" detector_name="Tracker" be_flag="BARREL" />
+        </Layers>
+    </Strategy>
+</StrategyList>
+

Modified: java/branches/layer0-branch/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
 =============================================================================
--- java/branches/layer0-branch/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	(original)
+++ java/branches/layer0-branch/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	Fri Feb 12 14:24:26 2016
@@ -114,6 +114,7 @@
     private double _bfield;
     private static Logger LOGGER = Logger.getLogger(TrackingReconstructionPlots.class.getName());
     private List<HpsSiSensor> sensors = new ArrayList<HpsSiSensor>();
+    private int nLayers = 7;
 
     @Override
     protected void detectorChanged(Detector detector) {
@@ -212,11 +213,9 @@
         }
         
         
-        
-        
         List<HelicalTrackHit> hthList = event.get(HelicalTrackHit.class, helicalTrackHitCollectionName);
-        int[] layersTop = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        int[] layersBot = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+        Map<Integer, Integer> layersTop = new HashMap<Integer,Integer>();
+        Map<Integer, Integer> layersBot = new HashMap<Integer,Integer>();
         Map<HpsSiSensor, Integer> stripHitsFromStereoHits = new HashMap<HpsSiSensor, Integer>();
         for (HelicalTrackHit hth : hthList) {
             HelicalTrackCross htc = (HelicalTrackCross) hth;
@@ -229,20 +228,35 @@
                     stripHitsFromStereoHits.put(stripsensor, 0);
                 }
             }
-            if(sensor.isTopLayer()){
-                layersTop[htc.Layer() - 1]++;
-            } else {
-                layersBot[htc.Layer() - 1]++;
-            }
-        }
+            int l = sensor.getLayerNumberFromDetectorElement();
+            int n = 0;
+            if(sensor.isTopLayer()) {
+                if (layersTop.containsKey(l) )
+                    n = layersTop.get(l);
+                else
+                    layersTop.put(l,n+1);
+            }         
+             else {
+                 if (layersBot.containsKey(l) )
+                     n = layersTop.get(l);
+                 else
+                     layersTop.put(l,n+1);
+            }
+        }
+        
+        
         for(Map.Entry<HpsSiSensor,Integer> sensor : stripHitsFromStereoHits.entrySet()) {
             aida.histogram1D(sensor.getKey().getName() + " strip hits from stereo").fill(sensor.getValue());
         }
         
-        for (int i = 0; i < 12; i++) {
-            aida.profile1D("Number of Stereo Hits per layer in Top Half").fill(i + 1, layersTop[i]);
-            aida.profile1D("Number of Stereo Hits per layer in Bottom Half").fill(i + 1, layersBot[i]);
-        }
+        for (Map.Entry<Integer,Integer> e : layersTop.entrySet())
+            aida.profile1D("Number of Stereo Hits per layer in Top Half").fill(e.getKey(), e.getValue());
+        
+        for (Map.Entry<Integer,Integer> e : layersBot.entrySet())
+            aida.profile1D("Number of Stereo Hits per layer in Bottom Half").fill(e.getKey(), e.getValue());
+
+        
+        
         if (!event.hasCollection(Track.class, trackCollectionName)) {
 //            System.out.println(trackCollectionName + " does not exist; skipping event");
             aida.histogram1D("Number Tracks/Event").fill(0);
@@ -388,7 +402,8 @@
                 HelicalTrackCross htcross = (HelicalTrackCross) htc;
                 double sHit = helicalTrackFit.PathMap().get(htc);
                 Hep3Vector posonhelix = HelixUtils.PointOnHelix(helicalTrackFit, sHit);
-                boolean isTopLayer = false;
+                int layer = ((HpsSiSensor) ((RawTrackerHit) htcross.getStrips().get(0).rawhits().get(0)).getDetectorElement()).getLayerNumberFromDetectorElement();
+                boolean isTopLayer = !((HpsSiSensor) ((RawTrackerHit) htcross.getStrips().get(0).rawhits().get(0)).getDetectorElement()).isBottomLayer();
                 
                 
                 
@@ -424,68 +439,25 @@
                 }
                 
                 
-                   
+                
                 
                 
                 double yTr = posonhelix.y();
                 double zTr = posonhelix.z();
-                int layer = htc.Layer();
-                String modNum = "Layer X ";
-                if (layer == 1) {
-                    modNum = "Layer 1 ";
-                }
-                if (layer == 3) {
-                    modNum = "Layer 2 ";
-                }
-                if (layer == 5) {
-                    modNum = "Layer 3 ";
-                }
-                if (layer == 7) {
-                    modNum = "Layer 4 ";
-                }
-                if (layer == 9) {
-                    modNum = "Layer 5 ";
-                }
-                if (layer == 11) {
-                    modNum = "Layer 6 ";
-                }
-                //SymmetricMatrix cov = htc.getCorrectedCovMatrix();
-
-                aida.histogram1D(modNum + "Residual X(mm)").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                aida.histogram1D(modNum + "Residual Y(mm)").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-                if (hit.getPosition()[2] > 0) {
-                    aida.histogram1D(modNum + "Residual X(mm) Top").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                    aida.histogram1D(modNum + "Residual Y(mm) Top").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-
-                }
-                if (hit.getPosition()[2] < 0) {
-                    aida.histogram1D(modNum + "Residual X(mm) Bottom").fill(htcross.getCorrectedPosition().y() - yTr);//these hits should be rotated track hits already
-                    aida.histogram1D(modNum + "Residual Y(mm) Bottom").fill(htcross.getCorrectedPosition().z() - zTr);//these hits should be rotated track hits already
-
-                }
-                double x = htcross.getCorrectedPosition().y();
-                double y = htcross.getCorrectedPosition().z();
-                if(isTopLayer) {
-                    layersTop[htc.Layer() - 1]++;
-                    Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
-                    if (htc.Layer() == 1) {
-//                    System.out.println(sensorPos.toString());
-//                    System.out.println("Hit X = " + x + "; Hit Y = " + y);
-                        aida.histogram2D("Layer 1 HTH Position:  Top").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                    if (htc.Layer() == 7) {
-                        aida.histogram2D("Layer 7 HTH Position:  Top").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
+                String modNum = "Layer " + String.valueOf(layer) + " ";
+                
+                aida.histogram1D(modNum + "Residual X(mm)").fill(htcross.getCorrectedPosition().y() - yTr);
+                aida.histogram1D(modNum + "Residual Y(mm)").fill(htcross.getCorrectedPosition().z() - zTr);
+
+                if (isTopLayer) {
+                    aida.histogram1D(modNum + "Residual X(mm) Top").fill(htcross.getCorrectedPosition().y() - yTr);
+                    aida.histogram1D(modNum + "Residual Y(mm) Top").fill(htcross.getCorrectedPosition().z() - zTr);
+
                 } else {
-                    layersBot[htc.Layer() - 1]++;
-                    Hep3Vector sensorPos = ((SiSensor) ((RawTrackerHit) htc.getRawHits().get(0)).getDetectorElement()).getGeometry().getPosition();
-                    if (htc.Layer() == 1) {
-                        aida.histogram2D("Layer 1 HTH Position:  Bottom").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                    if (htc.Layer() == 7) {
-                        aida.histogram2D("Layer 7 HTH Position:  Bottom").fill(x - sensorPos.x(), y - sensorPos.y());
-                    }
-                }
+                    aida.histogram1D(modNum + "Residual X(mm) Bottom").fill(htcross.getCorrectedPosition().y() - yTr);
+                    aida.histogram1D(modNum + "Residual Y(mm) Bottom").fill(htcross.getCorrectedPosition().z() - zTr);
+                }
+                
                 
                 boolean doAmplitudePlots = true;
                 if(doAmplitudePlots) {
@@ -534,9 +506,9 @@
                 }
             }
             
-            for(Map.Entry<HpsSiSensor,Integer> sensor : stripHitsOnTrack.entrySet()) {
+            for(Map.Entry<HpsSiSensor,Integer> sensor : stripHitsOnTrack.entrySet())
                 aida.histogram1D(sensor.getKey().getName() + " strip hits iso on track").fill(stripHitsIsoOnTrack.get(sensor.getKey()));
-            }
+            
             
             
             Cluster clust = null;
@@ -1111,41 +1083,58 @@
         style3.dataStyle().errorBarStyle().setVisible(false);
         plotter3.createRegions(6, 2);
 
-       
-
-        IHistogram1D mod1ResX = aida.histogram1D("Layer 1 Residual X(mm)", 25, -1, 1);
-        IHistogram1D mod1ResY = aida.histogram1D("Layer 1 Residual Y(mm)", 25, -0.04, 0.04);
-
-        IHistogram1D mod2ResX = aida.histogram1D("Layer 2 Residual X(mm)", 25, -2, 2);
-        IHistogram1D mod2ResY = aida.histogram1D("Layer 2 Residual Y(mm)", 25, -1, 1);
-
-        IHistogram1D mod3ResX = aida.histogram1D("Layer 3 Residual X(mm)", 25, -2.5, 2.5);
-        IHistogram1D mod3ResY = aida.histogram1D("Layer 3 Residual Y(mm)", 25, -1.5, 1.5);
-
-        IHistogram1D mod4ResX = aida.histogram1D("Layer 4 Residual X(mm)", 25, -3.0, 3.0);
-        IHistogram1D mod4ResY = aida.histogram1D("Layer 4 Residual Y(mm)", 25, -2, 2);
-
-        IHistogram1D mod5ResX = aida.histogram1D("Layer 5 Residual X(mm)", 25, -4, 4);
-        IHistogram1D mod5ResY = aida.histogram1D("Layer 5 Residual Y(mm)", 25, -3, 3);
-
-        IHistogram1D mod6ResX = aida.histogram1D("Layer 6 Residual X(mm)", 25, -5, 5);
-        IHistogram1D mod6ResY = aida.histogram1D("Layer 6 Residual Y(mm)", 25, -3, 3);
-
-        plotter3.region(0).plot(mod1ResX);
-        plotter3.region(2).plot(mod2ResX);
-        plotter3.region(4).plot(mod3ResX);
-        plotter3.region(6).plot(mod4ResX);
-        plotter3.region(8).plot(mod5ResX);
-        plotter3.region(10).plot(mod6ResX);
-
-        plotter3.region(1).plot(mod1ResY);
-        plotter3.region(3).plot(mod2ResY);
-        plotter3.region(5).plot(mod3ResY);
-        plotter3.region(7).plot(mod4ResY);
-        plotter3.region(9).plot(mod5ResY);
-        plotter3.region(11).plot(mod6ResY);
-               
-        if(showPlots) plotter3.show();
+        plotter3_1 = fac.createPlotterFactory().create("HPS Residual Plots (Single hit per layer)");
+        plotter3_1.setTitle("Residuals (Top)");
+        //plotterFrame.addPlotter(plotter3_1);
+        IPlotterStyle style3_1 = plotter3_1.style();
+        style3_1.dataStyle().fillStyle().setColor("yellow");
+        style3_1.dataStyle().errorBarStyle().setVisible(false);
+        plotter3_1.createRegions(6, 2);
+        
+        plotter3_2 = fac.createPlotterFactory().create("HPS Residual Plots (Single strip cluster per layer)");
+        plotter3_2.setTitle("Residuals (Bottom)");
+        //plotterFrame.addPlotter(plotter3_2);
+        IPlotterStyle style3_2 = plotter3_2.style();
+        style3_2.dataStyle().fillStyle().setColor("yellow");
+        style3_2.dataStyle().errorBarStyle().setVisible(false);
+        plotter3_2.createRegions(6, 2);
+
+
+        
+        for(int l=0; l < nLayers; ++l) {
+            for(int h=0; h <3;++h) {
+                String half;
+                if (h==0) half = "";
+                else if (h==1) half = " Top";
+                else half = " Bottom";
+                String name = "Layer " + String.valueOf(l+1) + " Residual X(mm)" + half;
+                IHistogram1D mod1ResX = aida.histogram1D(name, 25, -1, 1);
+                name = "Layer " + String.valueOf(l+1) + " Residual Y(mm)" + half;
+                IHistogram1D mod1ResY = aida.histogram1D(name, 25, -1, 1);
+
+                if(l>5) {
+                    LOGGER.warning("cannot make plots for layer " + String.valueOf(l + 1));
+                    continue;
+                }
+                if (h==0) {
+                    plotter3.region(l*2).plot(mod1ResX);
+                    plotter3.region(l*2 + 1).plot(mod1ResY);
+                }
+                else if (h==0) {
+                    plotter3_1.region(l*2).plot(mod1ResX);
+                    plotter3_1.region(l*2 + 1).plot(mod1ResY);
+                }
+                else {
+                    plotter3_2.region(l*2).plot(mod1ResX);
+                    plotter3_2.region(l*2 + 1).plot(mod1ResY);
+                }
+            }
+        }
+        if(showPlots) {
+            plotter3.show();
+            plotter3_1.show();
+            plotter3_2.show();
+        }
         
         
         
@@ -1157,116 +1146,28 @@
         style3_11.dataStyle().errorBarStyle().setVisible(false);
         plotter3_11.createRegions(6, 6);
         int i=0;
+        double[] limits = {1.,1.5,3.,4.,5.,5.,5.0};
         for(HpsSiSensor sensor : sensors) {
             double min = 0.0;
             double max = 0.0;
-            if(sensor.getName().contains("L1")) {
-                min=-0.04; max=0.04;
-            } else if(sensor.getName().contains("L2")) {
-                min=-1; max=1;
-            } else if(sensor.getName().contains("L3")) {
-                min=-1.5; max=1.5;
-            } else if(sensor.getName().contains("L4")) {
-                min=-3; max=3;
-            } else if(sensor.getName().contains("L5")) {
-                min=-4; max=4;
-            } else if(sensor.getName().contains("L6")) {
-                min=-5; max=5;
-            } else {
-                throw new RuntimeException("Invalid sensor name: " + sensor.getName());
-            }
-           IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip residual (mm)", 50, min, max);
+            int l = sensor.getLayerNumberFromDetectorElement();
+            max = limits[l-1];
+            min = -1.0*limits[l-1];
+            IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip residual (mm)", 50, min, max);
+            if(l>6) {
+                LOGGER.warning("cannot make plots for this sensor " + sensor.getName());
+                continue;
+            }
             plotter3_11.region(i).plot(resX);
             i++;
         }
 
         if(showPlots) plotter3_11.show();
         
-
-        plotter3_1 = fac.createPlotterFactory().create("HPS Residual Plots (Single hit per layer)");
-        plotter3_1.setTitle("Residuals (Top)");
-        //plotterFrame.addPlotter(plotter3_1);
-        IPlotterStyle style3_1 = plotter3_1.style();
-        style3_1.dataStyle().fillStyle().setColor("yellow");
-        style3_1.dataStyle().errorBarStyle().setVisible(false);
-        plotter3_1.createRegions(6, 2);
-        
-        IHistogram1D mod1ResX_Top = aida.histogram1D("Layer 1 Residual X(mm) Top", 25, -1, 1);
-        IHistogram1D mod1ResY_Top = aida.histogram1D("Layer 1 Residual Y(mm) Top", 25, -0.04, 0.04);
-
-        IHistogram1D mod2ResX_Top = aida.histogram1D("Layer 2 Residual X(mm) Top", 25, -2, 2);
-        IHistogram1D mod2ResY_Top = aida.histogram1D("Layer 2 Residual Y(mm) Top", 25, -1, 1);
-
-        IHistogram1D mod3ResX_Top = aida.histogram1D("Layer 3 Residual X(mm) Top", 25, -2.5, 2.5);
-        IHistogram1D mod3ResY_Top = aida.histogram1D("Layer 3 Residual Y(mm) Top", 25, -1.5, 1.5);
-
-        IHistogram1D mod4ResX_Top = aida.histogram1D("Layer 4 Residual X(mm) Top", 25, -3.0, 3.0);
-        IHistogram1D mod4ResY_Top = aida.histogram1D("Layer 4 Residual Y(mm) Top", 25, -2, 2);
-
-        IHistogram1D mod5ResX_Top = aida.histogram1D("Layer 5 Residual X(mm) Top", 25, -4, 4);
-        IHistogram1D mod5ResY_Top = aida.histogram1D("Layer 5 Residual Y(mm) Top", 25, -3, 3);
-
-        IHistogram1D mod6ResX_Top = aida.histogram1D("Layer 6 Residual X(mm) Top", 25, -5, 5);
-        IHistogram1D mod6ResY_Top = aida.histogram1D("Layer 6 Residual Y(mm) Top", 25, -3, 3);
-
-        
-        plotter3_1.region(0).plot(mod1ResX_Top);
-        plotter3_1.region(2).plot(mod2ResX_Top);
-        plotter3_1.region(4).plot(mod3ResX_Top);
-        plotter3_1.region(6).plot(mod4ResX_Top);
-        plotter3_1.region(8).plot(mod5ResX_Top);
-        plotter3_1.region(10).plot(mod6ResX_Top);
-
-        plotter3_1.region(1).plot(mod1ResY_Top);
-        plotter3_1.region(3).plot(mod2ResY_Top);
-        plotter3_1.region(5).plot(mod3ResY_Top);
-        plotter3_1.region(7).plot(mod4ResY_Top);
-        plotter3_1.region(9).plot(mod5ResY_Top);
-        plotter3_1.region(11).plot(mod6ResY_Top);
-
-        if(showPlots) plotter3_1.show();
-        
-        plotter3_2 = fac.createPlotterFactory().create("HPS Residual Plots (Single strip cluster per layer)");
-        plotter3_2.setTitle("Residuals (Bottom)");
-        //plotterFrame.addPlotter(plotter3_2);
-        IPlotterStyle style3_2 = plotter3_2.style();
-        style3_2.dataStyle().fillStyle().setColor("yellow");
-        style3_2.dataStyle().errorBarStyle().setVisible(false);
-        plotter3_2.createRegions(6, 2);
-
-        IHistogram1D mod1ResX_Bottom = aida.histogram1D("Layer 1 Residual X(mm) Bottom", 25, -1, 1);
-        IHistogram1D mod1ResY_Bottom = aida.histogram1D("Layer 1 Residual Y(mm) Bottom", 25, -0.04, 0.04);
-
-        IHistogram1D mod2ResX_Bottom = aida.histogram1D("Layer 2 Residual X(mm) Bottom", 25, -2, 2);
-        IHistogram1D mod2ResY_Bottom = aida.histogram1D("Layer 2 Residual Y(mm) Bottom", 25, -1, 1);
-
-        IHistogram1D mod3ResX_Bottom = aida.histogram1D("Layer 3 Residual X(mm) Bottom", 25, -2.5, 2.5);
-        IHistogram1D mod3ResY_Bottom = aida.histogram1D("Layer 3 Residual Y(mm) Bottom", 25, -1.5, 1.5);
-
-        IHistogram1D mod4ResX_Bottom = aida.histogram1D("Layer 4 Residual X(mm) Bottom", 25, -3.0, 3.0);
-        IHistogram1D mod4ResY_Bottom = aida.histogram1D("Layer 4 Residual Y(mm) Bottom", 25, -2, 2);
-
-        IHistogram1D mod5ResX_Bottom = aida.histogram1D("Layer 5 Residual X(mm) Bottom", 25, -4, 4);
-        IHistogram1D mod5ResY_Bottom = aida.histogram1D("Layer 5 Residual Y(mm) Bottom", 25, -3, 3);
-
-        IHistogram1D mod6ResX_Bottom = aida.histogram1D("Layer 6 Residual X(mm) Bottom", 25, -5, 5);
-        IHistogram1D mod6ResY_Bottom = aida.histogram1D("Layer 6 Residual Y(mm) Bottom", 25, -3, 3);
-
-        plotter3_2.region(0).plot(mod1ResX_Bottom);
-        plotter3_2.region(2).plot(mod2ResX_Bottom);
-        plotter3_2.region(4).plot(mod3ResX_Bottom);
-        plotter3_2.region(6).plot(mod4ResX_Bottom);
-        plotter3_2.region(8).plot(mod5ResX_Bottom);
-        plotter3_2.region(10).plot(mod6ResX_Bottom);
-
-        plotter3_2.region(1).plot(mod1ResY_Bottom);
-        plotter3_2.region(3).plot(mod2ResY_Bottom);
-        plotter3_2.region(5).plot(mod3ResY_Bottom);
-        plotter3_2.region(7).plot(mod4ResY_Bottom);
-        plotter3_2.region(9).plot(mod5ResY_Bottom);
-        plotter3_2.region(11).plot(mod6ResY_Bottom);
-        
-        if(showPlots) plotter3_2.show();
+        
+        
+        
+
 
         plotter4 = fac.createPlotterFactory().create("HPS Track and ECal Plots");
         plotter4.setTitle("Track and ECal Correlations");
@@ -1495,8 +1396,8 @@
         style55.dataStyle().markerStyle().setSize(20);
         plotter55.createRegions(1, 2);
 
-        IProfile avgLayersTopPlot = aida.profile1D("Number of Stereo Hits per layer in Top Half", 13, 0, 13);
-        IProfile avgLayersBottomPlot = aida.profile1D("Number of Stereo Hits per layer in Bottom Half", 13, 0, 13);
+        IProfile avgLayersTopPlot = aida.profile1D("Number of Stereo Hits per layer in Top Half", 10, 0, 10);
+        IProfile avgLayersBottomPlot = aida.profile1D("Number of Stereo Hits per layer in Bottom Half", 10, 0, 10);
 
         plotter55.region(0).plot(avgLayersTopPlot);
         plotter55.region(1).plot(avgLayersBottomPlot);
@@ -1566,7 +1467,12 @@
         plotter8.createRegions(6, 6);
         i=0;
         for(SiSensor sensor : sensors) {
+            
             IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip hits from stereo", 10, 0, 10);
+            if(sensor.getName().contains("L7")) {
+                LOGGER.warning("cannot setup this plot. Fix.");
+                continue;
+            }
             plotter8.region(i).plot(resX);
             i++;
         }
@@ -1580,7 +1486,12 @@
         plotter88.createRegions(6, 6);
         i=0;
         for(SiSensor sensor : sensors) {
+            
             IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip hits", 10, 0, 10);
+            if(sensor.getName().contains("L7")) {
+                LOGGER.warning("cannot setup this plot. Fix.");
+                continue;
+            }
             plotter88.region(i).plot(resX);
             i++;
         }
@@ -1598,7 +1509,12 @@
         plotter888.createRegions(6, 6);
         i=0;
         for(SiSensor sensor : sensors) {
+            
             IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip hits iso", 50, 0, 5);
+            if(sensor.getName().contains("L7")) {
+                LOGGER.warning("cannot setup this plot. Fix.");
+                continue;
+            }
             plotter888.region(i).plot(resX);
             i++;
         }
@@ -1612,7 +1528,12 @@
         plotter8888.createRegions(6, 6);
         i=0;
         for(SiSensor sensor : sensors) {
+            
             IHistogram1D resX = aida.histogram1D(sensor.getName() + " strip hits iso on track", 50, 0, 5);
+            if(sensor.getName().contains("L7")) {
+                LOGGER.warning("cannot setup this plot. Fix.");
+                continue;
+            }
             plotter8888.region(i).plot(resX);
             i++;
         }

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use