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  August 2015

HPS-SVN August 2015

Subject:

r3392 - in /java/branches/conditions-HPSJAVA-517: ./ src/main/java/org/hps/conditions/api/ src/main/java/org/hps/conditions/database/ src/main/java/org/hps/conditions/ecal/ src/main/java/org/hps/conditions/run/ src/main/java/org/hps/conditions/svt/

From:

[log in to unmask]

Reply-To:

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

Date:

Fri, 21 Aug 2015 00:29:04 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (1256 lines)

Author: [log in to unmask]
Date: Thu Aug 20 17:29:01 2015
New Revision: 3392

Log:
Merge trunk changes into branch.

Added:
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java
      - copied unchanged from r3391, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtMotorMyaDataReader.java
      - copied unchanged from r3391, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorMyaDataReader.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java
      - copied unchanged from r3391, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtMotorPosition.java
Modified:
    java/branches/conditions-HPSJAVA-517/   (props changed)
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/api/ConditionsObjectUtilities.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/ConnectionParameters.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalChannelConstants.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/TestRunEcalConditionsConverter.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
    java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/api/ConditionsObjectUtilities.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/api/ConditionsObjectUtilities.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/api/ConditionsObjectUtilities.java	Thu Aug 20 17:29:01 2015
@@ -83,6 +83,7 @@
         final TableMetaData tableInfo = TableRegistry.getTableRegistry().findByTableName(tableName);
         final ConditionsObjectCollection<?> collection = tableInfo.newCollection();
         collection.setConnection(MANAGER.getConnection());
+        collection.setTableMetaData(tableInfo);
         return collection;
     }
 
@@ -97,6 +98,7 @@
         final TableMetaData tableInfo = TableRegistry.getTableRegistry().findByTableName(tableName);
         final ConditionsObject object = tableInfo.newObject();
         object.setConnection(MANAGER.getConnection());
+        object.setTableMetaData(tableInfo);
         return object;
     }
 

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/ConnectionParameters.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/ConnectionParameters.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/ConnectionParameters.java	Thu Aug 20 17:29:01 2015
@@ -177,6 +177,7 @@
      */
     public String getConnectionString() {
         return "jdbc:mysql://" + this.hostname + ":" + this.port + "/";
+        //String connectionString = "jdbc:mysql://localhost/" + database + "?user=" + user + "&password=" + password + "&useUnicode=true&characterEncoding=UTF-8";        
     }
 
     /**
@@ -223,4 +224,14 @@
     String getUser() {
         return this.user;
     }
+    
+    /**
+     * Convert to human readable string.
+     * 
+     * @return this object converted to a string
+     */
+    public String toString() {                        
+        return "ConnectionParameters { database: " + database + ", hostname: " + hostname + ", password: " + password
+                + ", port: " + port + ", user: " + user + " }";
+    }
 }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Thu Aug 20 17:29:01 2015
@@ -110,11 +110,9 @@
      */
     public static synchronized DatabaseConditionsManager getInstance() {
 
-        logger.finest("getting conditions manager instance");
-
         // Is there no manager installed yet?
         if (!ConditionsManager.isSetup() || !(ConditionsManager.defaultInstance() instanceof DatabaseConditionsManager)) {
-            logger.finest("creating new DatabaseConditionsManager");
+            logger.finest("creating new DatabaseConditionsManager instance");
             // Create a new instance if necessary, which will install it globally as the default.
             new DatabaseConditionsManager();
         }
@@ -122,12 +120,10 @@
         // Get the instance back from the default conditions system and check that the type is correct now.
         final ConditionsManager manager = ConditionsManager.defaultInstance();
         if (!(manager instanceof DatabaseConditionsManager)) {
-            logger.severe("default conditions manager has wrong type");
+            logger.severe("default conditions manager has wrong type: " + manager.getClass());
             throw new RuntimeException("Default conditions manager has the wrong type: "
                     + ConditionsManager.defaultInstance().getClass().getName());
         }
-
-        logger.finest("returning conditions manager instance");
 
         return (DatabaseConditionsManager) manager;
     }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalChannelConstants.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalChannelConstants.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalChannelConstants.java	Thu Aug 20 17:29:01 2015
@@ -12,17 +12,17 @@
 public final class EcalChannelConstants {
 
     /**
-     * True if channel is bad and should not be used for reconstruction.
+     * <code>true</code> if channel is bad and should not be used for reconstruction.
      */
     private boolean badChannel = false;
 
     /**
-     * The channel {@link EcalCalibration} conditions.
+     * The channel's {@link EcalCalibration} conditions (pedestal and noise).
      */
     private EcalCalibration calibration = null;
 
     /**
-     * The channel {@link EcalGain} conditions.
+     * The channel {@link EcalGain} conditions (per channel gain value).
      */
     private EcalGain gain = null;
 
@@ -30,6 +30,11 @@
      * The channel {@link EcalTimeShift} conditions.
      */
     private EcalTimeShift timeShift = null;
+    
+    /**
+     * The channel's {@link EcalPulseWidth} conditions.
+     */
+    private EcalPulseWidth pulseWidth = null;
 
     /**
      * Class constructor, which is package protected.
@@ -38,36 +43,45 @@
     }
 
     /**
-     * Get the calibration.
+     * Get the channel calibration.
      *
-     * @return The calibration.
+     * @return the channel calibration
      */
     public EcalCalibration getCalibration() {
         return this.calibration;
     }
 
     /**
-     * Get the gain.
+     * Get the channel gain.
      *
-     * @return The gain.
+     * @return the channel gain
      */
     public EcalGain getGain() {
         return this.gain;
+    }
+    
+    /**
+     * Get the pulse width or <code>null</code> if it does not exist.
+     * 
+     * @return the pulse width
+     */
+    public EcalPulseWidth getPulseWidth() {
+        return this.pulseWidth;
     }
 
     /**
      * Get the time shift.
      *
-     * @return The time shift.
+     * @return the time shift
      */
     public EcalTimeShift getTimeShift() {
         return this.timeShift;
     }
 
     /**
-     * True if this is a bad channel.
+     * <code>true</code> if this is a bad channel.
      *
-     * @return True if channel is bad.
+     * @return <code>true</code> if channel is bad
      */
     public boolean isBadChannel() {
         return this.badChannel;
@@ -94,7 +108,7 @@
     /**
      * Set the gain.
      *
-     * @param gain the new gain object
+     * @param gain the channel gain
      */
     void setGain(final EcalGain gain) {
         this.gain = gain;
@@ -103,9 +117,18 @@
     /**
      * Set the time shift.
      *
-     * @param timeShift the new time shift
+     * @param timeShift the time shift
      */
     void setTimeShift(final EcalTimeShift timeShift) {
         this.timeShift = timeShift;
     }
+    
+    /**
+     * Set the pulse width.
+     * 
+     * @param pulseWidth the pulse width
+     */
+    void setPulseWidth(final EcalPulseWidth pulseWidth) {
+        this.pulseWidth = pulseWidth;
+    }
 }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/EcalConditionsConverter.java	Thu Aug 20 17:29:01 2015
@@ -8,6 +8,7 @@
 import org.hps.conditions.ecal.EcalChannel.ChannelId;
 import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
 import org.hps.conditions.ecal.EcalGain.EcalGainCollection;
+import org.hps.conditions.ecal.EcalPulseWidth.EcalPulseWidthCollection;
 import org.hps.conditions.ecal.EcalTimeShift.EcalTimeShiftCollection;
 import org.lcsim.conditions.ConditionsConverter;
 import org.lcsim.conditions.ConditionsManager;
@@ -27,7 +28,7 @@
  * @see EcalTimeShift
  */
 public class EcalConditionsConverter implements ConditionsConverter<EcalConditions> {
-
+    
     /**
      * Create combined ECAL conditions object containing all data for the current run.
      *
@@ -36,34 +37,29 @@
      */
     @Override
     public final EcalConditions getData(final ConditionsManager manager, final String name) {
+       
+        // Get the ECal channel map from the conditions database.
+        final EcalChannelCollection channels = this.getEcalChannelCollection();
 
-        final DatabaseConditionsManager databaseConditionsManager = (DatabaseConditionsManager) manager;
-
-        // Get the ECal channel map from the conditions database
-        final EcalChannelCollection channels = this.getEcalChannelCollection(databaseConditionsManager);
-
-        // Create the ECal conditions object that will be used to encapsulate
-        // ECal conditions collections
-        final Detector detector = databaseConditionsManager.getDetectorObject();
-        final EcalConditions conditions = new EcalConditions(detector.getSubdetector(databaseConditionsManager
+        // Create the ECal conditions object that will be used to encapsulate ECal conditions collections.
+        final Detector detector = getDatabaseConditionsManager().getDetectorObject();
+        final EcalConditions conditions = new EcalConditions(detector.getSubdetector(getDatabaseConditionsManager()
                 .getEcalName()));
 
         // Set the channel map.
         conditions.setChannelCollection(channels);
 
-        // Get the ECal gains from the conditions database and add them to the
-        // conditions set
-        final EcalGainCollection gains = this.getEcalGainCollection(databaseConditionsManager);
+        // Get the ECal gains from the conditions database and add them to the conditions set
+        final EcalGainCollection gains = this.getEcalGainCollection();
         for (final EcalGain gain : gains) {
             final ChannelId channelId = new ChannelId(new int[] {gain.getChannelId()});
             final EcalChannel channel = channels.findChannel(channelId);
             conditions.getChannelConstants(channel).setGain(gain);
         }
 
+        // Get the bad channel collections and merge them together.
         final ConditionsSeries<EcalBadChannel, EcalBadChannelCollection> badChannelSeries = this
-                .getEcalBadChannelSeries(databaseConditionsManager);
-        // FIXME: How to get EcalBadChannelCollection here instead for the collection type?
-        // API of ConditionsSeries and ConditionsSeriesConverter needs to be changed!
+                .getEcalBadChannelSeries();
         for (final ConditionsObjectCollection<EcalBadChannel> badChannels : badChannelSeries) {
             for (final EcalBadChannel badChannel : badChannels) {
                 final ChannelId channelId = new ChannelId(new int[] {badChannel.getChannelId()});
@@ -72,26 +68,38 @@
             }
         }
 
-        // Get the ECal calibrations from the conditions database and add them
-        // to the conditions set.
-        final EcalCalibrationCollection calibrations = this.getEcalCalibrationCollection(databaseConditionsManager);
+        // Get the ECal calibrations from the conditions database and add them to the conditions set.
+        final EcalCalibrationCollection calibrations = this.getEcalCalibrationCollection();
         for (final EcalCalibration calibration : calibrations) {
             final ChannelId channelId = new ChannelId(new int[] {calibration.getChannelId()});
             final EcalChannel channel = channels.findChannel(channelId);
             conditions.getChannelConstants(channel).setCalibration(calibration);
         }
 
-        // Get the ECal time shifts from the conditions database and add them to
-        // the conditions set.
-        if (databaseConditionsManager.hasConditionsRecord("ecal_time_shifts")) {
-            final EcalTimeShiftCollection timeShifts = this.getEcalTimeShiftCollection(databaseConditionsManager);
+        // Get the ECal time shifts from the conditions database and add them to the conditions set.
+        if (getDatabaseConditionsManager().hasConditionsRecord("ecal_time_shifts")) {
+            final EcalTimeShiftCollection timeShifts = this.getEcalTimeShiftCollection();
             for (final EcalTimeShift timeShift : timeShifts) {
                 final ChannelId channelId = new ChannelId(new int[] {timeShift.getChannelId()});
                 final EcalChannel channel = channels.findChannel(channelId);
                 conditions.getChannelConstants(channel).setTimeShift(timeShift);
             }
         } else {
-            DatabaseConditionsManager.getLogger().warning("no ecal_time_shifts collection found");
+            // If time shifts do not exist it is not a fatal error.
+            DatabaseConditionsManager.getLogger().warning("no conditions found for EcalTimeShiftCollection");
+        }
+        
+        // Set the channel pulse width if it exists in the database.
+        if (getDatabaseConditionsManager().hasConditionsRecord("ecal_pulse_widths")) {
+            final EcalPulseWidthCollection pulseWidths = this.getEcalPulseWidthCollection();
+            for (final EcalPulseWidth pulseWidth : pulseWidths) {
+                final ChannelId channelId = new ChannelId(new int[] {pulseWidth.getChannelId()});
+                final EcalChannel channel = channels.findChannel(channelId);
+                conditions.getChannelConstants(channel).setPulseWidth(pulseWidth);
+            }
+        } else {
+            // If pulse widths do not exist it is not a fatal error.
+            DatabaseConditionsManager.getLogger().warning("no conditions found for EcalPulseWidthCollection");
         }
 
         // Return the conditions object to caller.
@@ -104,9 +112,8 @@
      * @param manager the conditions manager
      * @return the collections of ECAL bad channel objects
      */
-    protected ConditionsSeries<EcalBadChannel, EcalBadChannelCollection> getEcalBadChannelSeries(
-            final DatabaseConditionsManager manager) {
-        return manager.getConditionsSeries(EcalBadChannelCollection.class, "ecal_bad_channels");
+    protected ConditionsSeries<EcalBadChannel, EcalBadChannelCollection> getEcalBadChannelSeries() {
+        return getDatabaseConditionsManager().getConditionsSeries(EcalBadChannelCollection.class, "ecal_bad_channels");
     }
 
     /**
@@ -115,8 +122,8 @@
      * @param manager the conditions manager
      * @return the collection of ECAL channel calibration objects
      */
-    protected EcalCalibrationCollection getEcalCalibrationCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalCalibrationCollection.class, "ecal_calibrations").getCachedData();
+    protected EcalCalibrationCollection getEcalCalibrationCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalCalibrationCollection.class, "ecal_calibrations").getCachedData();
     }
 
     /**
@@ -125,8 +132,8 @@
      * @param manager the conditions manager
      * @return the default ECAL channel object collection
      */
-    protected EcalChannelCollection getEcalChannelCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalChannelCollection.class, "ecal_channels").getCachedData();
+    protected EcalChannelCollection getEcalChannelCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalChannelCollection.class, "ecal_channels").getCachedData();
     }
 
     /**
@@ -135,8 +142,8 @@
      * @param manager the conditions manager
      * @return the ECAL channel gain collection
      */
-    protected EcalGainCollection getEcalGainCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalGainCollection.class, "ecal_gains").getCachedData();
+    protected EcalGainCollection getEcalGainCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalGainCollection.class, "ecal_gains").getCachedData();
     }
 
     /**
@@ -145,8 +152,18 @@
      * @param manager the conditions manager
      * @return the collection of ECAL time shift objects
      */
-    protected EcalTimeShiftCollection getEcalTimeShiftCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalTimeShiftCollection.class, "ecal_time_shifts").getCachedData();
+    protected EcalTimeShiftCollection getEcalTimeShiftCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalTimeShiftCollection.class, "ecal_time_shifts").getCachedData();
+    }
+    
+    /**
+     * Get the default {@link EcalPulseWith} collection.
+     *
+     * @param manager the conditions manager
+     * @return the collection of ECAL pulse widths
+     */
+    protected EcalPulseWidthCollection getEcalPulseWidthCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalPulseWidthCollection.class, "ecal_pulse_widths").getCachedData();
     }
 
     /**
@@ -158,4 +175,13 @@
     public final Class<EcalConditions> getType() {
         return EcalConditions.class;
     }
+    
+    /**
+     * Get the current instance of the conditions manager.
+     * 
+     * @return the current instance of the conditions manager
+     */
+    protected final DatabaseConditionsManager getDatabaseConditionsManager() {
+        return DatabaseConditionsManager.getInstance();
+    }
 }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/TestRunEcalConditionsConverter.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/TestRunEcalConditionsConverter.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/ecal/TestRunEcalConditionsConverter.java	Thu Aug 20 17:29:01 2015
@@ -1,7 +1,6 @@
 package org.hps.conditions.ecal;
 
 import org.hps.conditions.api.ConditionsSeries;
-import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.conditions.ecal.EcalBadChannel.EcalBadChannelCollection;
 import org.hps.conditions.ecal.EcalCalibration.EcalCalibrationCollection;
 import org.hps.conditions.ecal.EcalChannel.EcalChannelCollection;
@@ -25,9 +24,8 @@
      * @return the Test Run bad channel collections
      */
     @Override
-    protected ConditionsSeries<EcalBadChannel, EcalBadChannelCollection> getEcalBadChannelSeries(
-            final DatabaseConditionsManager manager) {
-        return manager.getConditionsSeries(EcalBadChannelCollection.class, "test_run_ecal_bad_channels");
+    protected ConditionsSeries<EcalBadChannel, EcalBadChannelCollection> getEcalBadChannelSeries() {
+        return getDatabaseConditionsManager().getConditionsSeries(EcalBadChannelCollection.class, "test_run_ecal_bad_channels");
     }
 
     /**
@@ -37,8 +35,8 @@
      * @return the Test Run ECAL calibration collection
      */
     @Override
-    protected EcalCalibrationCollection getEcalCalibrationCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalCalibrationCollection.class, "test_run_ecal_calibrations")
+    protected EcalCalibrationCollection getEcalCalibrationCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalCalibrationCollection.class, "test_run_ecal_calibrations")
                 .getCachedData();
     }
 
@@ -49,8 +47,8 @@
      * @return the Test Run ECAL channel collection
      */
     @Override
-    protected EcalChannelCollection getEcalChannelCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalChannelCollection.class, "test_run_ecal_channels").getCachedData();
+    protected EcalChannelCollection getEcalChannelCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalChannelCollection.class, "test_run_ecal_channels").getCachedData();
     }
 
     /**
@@ -60,8 +58,8 @@
      * @return the Test Run ECAL gain collection
      */
     @Override
-    protected EcalGainCollection getEcalGainCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalGainCollection.class, "test_run_ecal_gains").getCachedData();
+    protected EcalGainCollection getEcalGainCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalGainCollection.class, "test_run_ecal_gains").getCachedData();
     }
 
     /**
@@ -71,7 +69,7 @@
      * @return the Test Run ECAL time shift collection
      */
     @Override
-    protected EcalTimeShiftCollection getEcalTimeShiftCollection(final DatabaseConditionsManager manager) {
-        return manager.getCachedConditions(EcalTimeShiftCollection.class, "test_run_ecal_time_shifts").getCachedData();
+    protected EcalTimeShiftCollection getEcalTimeShiftCollection() {
+        return getDatabaseConditionsManager().getCachedConditions(EcalTimeShiftCollection.class, "test_run_ecal_time_shifts").getCachedData();
     }
 }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	Thu Aug 20 17:29:01 2015
@@ -187,14 +187,21 @@
             run = parseRunNumber(this.record);
             try {
                 startDate = RunSpreadsheet.parseStartDate(this.record);
-            } catch (ParseException e) {                
+            } catch (ParseException e) {
             }
             try {
                 endDate = RunSpreadsheet.parseEndDate(this.record);
-            } catch (ParseException e) {                
-            }
-        }
-        
+            } catch (ParseException e) {
+            }
+        }
+
+        public RunData(Date startDate, Date endDate, int run) {
+            this.startDate = startDate;
+            this.endDate = endDate;
+            this.run = run;
+            record = null;
+        }
+
         public int getRun() {
             return run;
         }
@@ -213,6 +220,10 @@
         
         public CSVRecord getRecord() {
             return record;
+        }
+        
+        public boolean isJunk() {
+            return "JUNK".compareToIgnoreCase(record.get("to_tape")) == 0;
         }
     }
     

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	Thu Aug 20 17:29:01 2015
@@ -1,22 +1,24 @@
-/**
- * 
- */
 package org.hps.conditions.svt;
 
 import hep.aida.*;
-
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
 import java.sql.SQLException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
 import java.util.HashSet;
-import java.util.LinkedHashMap;
 import java.util.List;
-import java.util.Map.Entry;
+import java.util.Map;
 import java.util.Set;
+import java.util.TimeZone;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.HelpFormatter;
@@ -24,7 +26,6 @@
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.ParseException;
 import org.apache.commons.cli.PosixParser;
-import org.hps.conditions.api.ConditionsObjectException;
 import org.hps.conditions.api.ConditionsRecord;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.conditions.run.RunRange;
@@ -32,10 +33,11 @@
 import org.hps.conditions.run.RunSpreadsheet.RunData;
 import org.hps.conditions.run.RunSpreadsheet.RunMap;
 import org.hps.conditions.svt.SvtBiasConstant.SvtBiasConstantCollection;
-import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasMyaRange;
-import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasMyaRanges;
-import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasRunRange;
-import org.hps.conditions.svt.SvtTimingConstants.SvtTimingConstantsCollection;
+import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasMyaRange;
+import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange;
+import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionMyaRange;
+import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionRunRange;
+import org.hps.conditions.svt.SvtMotorPosition.SvtMotorPositionCollection;
 import org.hps.util.BasicLogFormatter;
 import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.log.LogUtil;
@@ -47,13 +49,13 @@
 public class SvtBiasConditionsLoader {
 
     private static final Set<String> FIELDS = new HashSet<String>();
-    private static Logger logger = LogUtil.create(SvtBiasConditionsLoader.class, new BasicLogFormatter(),Level.INFO);
-    
+    private static Logger logger = LogUtil.create(SvtBiasConditionsLoader.class, new BasicLogFormatter(), Level.INFO);
 
     /**
      * Setup conditions.
      */
     private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance();
+
     static {
         FIELDS.add("run");
         FIELDS.add("date");
@@ -64,62 +66,63 @@
     /**
      * Setup control plots.
      */
-    private static AIDA aida = AIDA.defaultInstance();
+    private static final AIDA aida = AIDA.defaultInstance();
     static IDataPointSet dpsRuns = null;
     static IDataPointSet dpsBiasRuns = null;
-    
+    static IDataPointSet dpsPositionRuns = null;
+
     private static void setupPlots(boolean show) {
         IDataPointSetFactory dpsf = aida.analysisFactory().createDataPointSetFactory(aida.tree());
-        dpsRuns = dpsf.create("dpsRuns","Run intervals", 2);
-        dpsBiasRuns = dpsf.create("dpsBiasRuns","Bias ON intervals associated with runs", 2);
+        dpsRuns = dpsf.create("dpsRuns", "Run intervals", 2);
+        dpsBiasRuns = dpsf.create("dpsBiasRuns", "Bias ON intervals associated with runs", 2);
+        dpsPositionRuns = dpsf.create("dpsPositionRuns", "Position stable intervals associated with runs", 2);
         IPlotter plotter = aida.analysisFactory().createPlotterFactory().create("Bias run ranges");
         IPlotterStyle plotterStyle = aida.analysisFactory().createPlotterFactory().createPlotterStyle();
         plotterStyle.xAxisStyle().setParameter("type", "date");
-        plotter.createRegions(1, 3);
-        plotter.region(0).plot(dpsRuns,plotterStyle);
-        plotter.region(1).plot(dpsBiasRuns,plotterStyle);
-        plotter.region(2).plot(dpsRuns,plotterStyle);
-        plotter.region(2).plot(dpsBiasRuns,plotterStyle,"mode=overlay");
-        if(show) plotter.show();
-        
-    }
-    
+        plotter.createRegions(1, 4);
+        plotter.region(0).plot(dpsRuns, plotterStyle);
+        plotter.region(1).plot(dpsBiasRuns, plotterStyle);
+        plotter.region(2).plot(dpsPositionRuns, plotterStyle);
+        plotter.region(3).plot(dpsRuns, plotterStyle);
+        plotter.region(3).plot(dpsBiasRuns, plotterStyle, "mode=overlay");
+        plotter.region(3).plot(dpsPositionRuns, plotterStyle, "mode=overlay");
+        if (show) {
+            plotter.show();
+        }
+
+    }
+
     private static IDataPoint addPoint(IDataPointSet dps, long mstime, double val) {
         IDataPoint dp = dps.addPoint();
-        dp.coordinate(0).setValue(mstime/1000.);
+        dp.coordinate(0).setValue(mstime / 1000.);
         dp.coordinate(1).setValue(val);
         return dp;
     }
-    
-    
+
     /**
-     *  Default constructor
+     * Default constructor
      */
     public SvtBiasConditionsLoader() {
     }
 
-    
-    
-    
     /**
      * Check validity of @link RunData
+     *
      * @param data the @link RunData to check
      * @return <code>true</code> if valid, <code>false</code> otherwise.
      */
     private static boolean isValid(RunData data) {
-        if(data.getStartDate() == null || data.getEndDate() == null || data.getStartDate().before(new Date(99,1,1))) {
+        if (data.getStartDate() == null || data.getEndDate() == null || data.getStartDate().before((new GregorianCalendar(1999, 1, 1)).getTime())) {
             logger.fine("This run data is not valid: " + data.toString());
             return false;
-        } 
+        }
         if (data.getStartDate().after(data.getEndDate())) {
             throw new RuntimeException("start date is after end date?!" + data.toString());
         }
         return true;
     }
-    
+
     //private static Options options = null;
-    
-    
     public static RunMap getRunMapFromSpreadSheet(String path) {
         // Load in CSV records from the exported run spreadsheet.
         logger.info(path);
@@ -128,65 +131,51 @@
         // Find the run ranges that have the same fields values.
         final List<RunRange> ranges = RunRange.findRunRanges(runSheet, FIELDS);
         logger.info("Found " + ranges.size() + " ranges.");
-        for(RunRange range : ranges) logger.fine(range.toString());
+        for (RunRange range : ranges) {
+            logger.fine(range.toString());
+        }
         // find the run records (has converted dates and stuff) for these ranges
-        RunMap runmap  = runSheet.getRunMap(ranges);
+        RunMap runmap = runSheet.getRunMap(ranges);
         logger.info("Found " + runmap.size() + " runs in the run map.");
         return runmap;
     }
-    
-    public static List<SvtBiasRunRange> getBiasRunRanges(RunMap runmap,
-            SvtBiasMyaDumpReader biasMyaReader) {
-        List<SvtBiasRunRange> biasRunRanges = new ArrayList<SvtBiasRunRange>();
-        // loop over runs from CSV        
-        RunData prev = null;
-        for(Entry<Integer,RunData> entry : runmap.entrySet()) {
-            int run = entry.getKey();
-            RunData data = entry.getValue();
-            logger.fine("Processing " + run + " " + data.toString());
-            
-            //check that data is ok
+
+    public static List<RunData> getRunListFromSpreadSheet(String path) {
+        // Load in CSV records from the exported run spreadsheet.
+        List<RunData> runList = new ArrayList<RunData>();
+
+        // find the run records (has converted dates and stuff) for these ranges
+        RunMap runmap = getRunMapFromSpreadSheet(path);
+
+        List<Integer> runNums = new ArrayList<Integer>(runmap.keySet());
+        Collections.sort(runNums);
+        for (Integer runNum : runNums) {
+            RunData data = runmap.get(runNum);
             if (isValid(data)) {
-                if(prev!=null) {
-                    if(isValid(prev)) {
-                        if(prev.getEndDate().after(data.getStartDate())) {
-                            throw new RuntimeException("prev end date after run started?: " + prev.toString() + "   " + data.toString());
-                        } else if(prev.getStartDate().after(data.getEndDate())) {
-                            throw new RuntimeException("prev start date before run ended?: " + prev.toString() + "   " + data.toString());
-                        }
-                    }
-                }
-                
-                // find the bias ranges applicable to this run
-                SvtBiasMyaRanges overlaps = biasMyaReader.findOverlappingRanges(data.getStartDate(), data.getEndDate());
-                logger.fine("Found " + overlaps.size() + " overlapping bias ranges");
-                logger.fine(overlaps.toString());
-
-                biasRunRanges.add(new SvtBiasRunRange(data,overlaps));
-                prev = data;
-
-            }
-        }
-        return biasRunRanges;
-    }
-    
-    
-    
-    
-    
+                runList.add(data);
+            }
+        }
+        return runList;
+    }
+
     /**
      * Load SVT HV bias constants into the conditions database.
-     * 
-     * @param args the command line arguments (requires a CVS run log file and a MYA dump file.)
+     *
+     * @param args the command line arguments (requires a CVS run log file and a
+     * MYA dump file.)
      */
     public static void main(String[] args) {
 
         Options options = new Options();
-        options.addOption(new Option("c", true, "CVS run file"));
-        options.addOption(new Option("m", true, "MYA dump file"));
+        options.addOption(new Option("c", true, "CSV run file"));
+        options.addOption(new Option("m", true, "MYA dump file for bias"));
+        options.addOption(new Option("p", true, "MYA dump file for motor positions"));
+        options.addOption(new Option("t", false, "use run table format (from crawler) for bias"));
+        options.addOption(new Option("d", false, "discard first line of MYA data (for myaData output)"));
         options.addOption(new Option("g", false, "Actually load stuff into DB"));
+        options.addOption(new Option("b", true, "beam current file"));
         options.addOption(new Option("s", false, "Show plots"));
-        
+
         final CommandLineParser parser = new PosixParser();
         CommandLine cl = null;
         try {
@@ -194,83 +183,99 @@
         } catch (ParseException e) {
             throw new RuntimeException("Cannot parse.", e);
         }
-        
-        if(!cl.hasOption("c") || !cl.hasOption("m")) {
+
+        if (!cl.hasOption("c") || (!cl.hasOption("m") && !cl.hasOption("p"))) {
             printUsage(options);
             return;
         }
-        
-        
-        
+
         // Setup plots
-        setupPlots(cl.hasOption("s")?true:false);
-
-        
+        setupPlots(cl.hasOption("s"));
+
         // Load in CSV records from the exported run spreadsheet.
-        RunMap runmap = getRunMapFromSpreadSheet(cl.getOptionValue("c"));
-        
-
+        List<RunData> runList;
+        if (cl.hasOption("t")) {
+            runList = SvtBiasMyaDataReader.readRunTable(new File(cl.getOptionValue("c")));
+        } else {
+            runList = getRunListFromSpreadSheet(cl.getOptionValue("c"));
+        }
+
+        List<SvtBiasRunRange> biasRunRanges = null;
+        List<SvtPositionRunRange> positionRunRanges = null;
         // Load MYA dump
-        SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(cl.getOptionValue("m"));
-        logger.info("Got " + biasMyaReader.getRanges().size() + " bias ranges");
-        
-        
+        if (cl.hasOption("m")) {
+            List<SvtBiasMyaRange> biasRanges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("m")), 178.0, 2000, cl.hasOption("d"));
+            logger.info("Got " + biasRanges.size() + " bias ranges");
+            biasRunRanges = SvtBiasMyaDataReader.findOverlappingRanges(runList, biasRanges);
+        }
+
+        if (cl.hasOption("p")) {
+            List<SvtPositionMyaRange> positionRanges = SvtMotorMyaDataReader.readMyaData(new File(cl.getOptionValue("p")), 200, 10000);
+            logger.info("Got " + positionRanges.size() + " position ranges");
+            positionRunRanges = SvtMotorMyaDataReader.findOverlappingRanges(runList, positionRanges);
+        }
+
         // Combine them to run ranges when bias was on        
         // each run may have multiple bias ranges
-        
-        List<SvtBiasRunRange> biasRunRanges = getBiasRunRanges(runmap,biasMyaReader);
-        
-
-        
         // fill graphs
-        if(cl.hasOption("s")) {
-            for(SvtBiasRunRange r : biasRunRanges) {
-                logger.info(r.toString());
-                if(r.getRun().getRun()>5600) {//9999999999999.0) {
-                    //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
-                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(),0.0);
-                    addPoint(dpsRuns, r.getRun().getStartDate().getTime(),1.0);
-                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(),1.0);
-                    addPoint(dpsRuns, r.getRun().getEndDate().getTime(),0.0);
-
-                    for(SvtBiasMyaRange br : r.getRanges()) {
-                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.0);
-                        addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.5);
-                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.5);
-                        addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.0);
-                    }
-
-
-                }   
-
-            }
-        }
-
-        
+        if (cl.hasOption("s")) {
+            if (cl.hasOption("m")) {
+                for (SvtBiasRunRange r : biasRunRanges) {
+                    logger.info(r.toString());
+                    if (r.getRun().getRun() > 5600) {//9999999999999.0) {
+                        //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
+                        addPoint(dpsRuns, r.getRun().getStartDate().getTime(), 0.0);
+                        addPoint(dpsRuns, r.getRun().getStartDate().getTime(), 1.0);
+                        addPoint(dpsRuns, r.getRun().getEndDate().getTime(), 1.0);
+                        addPoint(dpsRuns, r.getRun().getEndDate().getTime(), 0.0);
+
+                        for (SvtBiasMyaRange br : r.getRanges()) {
+                            addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.0);
+                            addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.3);
+                            addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.3);
+                            addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.0);
+                        }
+                    }
+                }
+            }
+            if (cl.hasOption("p")) {
+                for (SvtPositionRunRange r : positionRunRanges) {
+                    logger.info(r.toString());
+                    if (r.getRun().getRun() > 5600) {//9999999999999.0) {
+                        //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
+                        for (SvtPositionMyaRange br : r.getRanges()) {
+                            addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.0);
+                            addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom()));
+                            addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom()));
+                            addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.0);
+                        }
+                    }
+                }
+            }
+        }
+
+        if (cl.hasOption("b") && cl.hasOption("m") && cl.hasOption("p")) {
+            readBeamData(new File(cl.getOptionValue("b")), runList, positionRunRanges, biasRunRanges);
+        }
+
         // load to DB
-        if(cl.hasOption("g")) {
-            loadToConditionsDB(biasRunRanges);
-        }
-    }
-    
-    
+        if (cl.hasOption("g")) {
+            if (cl.hasOption("m")) {
+                loadBiasesToConditionsDB(biasRunRanges);
+            }
+            if (cl.hasOption("p")) {
+                loadPositionsToConditionsDB(positionRunRanges);
+            }
+        }
+    }
 
     private static void printUsage(Options options) {
-       HelpFormatter formatter  = new HelpFormatter();
-       formatter.printHelp("Need to adhere to these options", options);
-        
-    }
-
-    private final static SvtBiasConstantCollection findCollection(final List<SvtBiasConstantCollection> list, Date date) {
-        for( SvtBiasConstantCollection collection : list) {
-            if(collection.find(date) != null) {
-                return collection;
-            } 
-        }
-        return null;
-    }
-
-    private static final void loadToConditionsDB(List<SvtBiasRunRange> ranges) {
+        HelpFormatter formatter = new HelpFormatter();
+        formatter.printHelp("Need to adhere to these options", options);
+
+    }
+
+    private static void loadBiasesToConditionsDB(List<SvtBiasRunRange> ranges) {
         logger.info("Load to DB...");
 
         // Create a new collection for each run
@@ -293,6 +298,10 @@
             // create a collection
             SvtBiasConstantCollection collection = new SvtBiasConstantCollection();
 
+            // Set the table meta data
+            collection.setTableMetaData(MANAGER.findTableMetaData("svt_bias_constants"));
+            collection.setConnection(MANAGER.getConnection());
+
             int collectionId = -1;
             try {
                 collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT HV bias ON");
@@ -305,28 +314,30 @@
             final ConditionsRecord condition = new ConditionsRecord();
             condition.setFieldValue("run_start", rundata.getRun());
             condition.setFieldValue("run_end", rundata.getRun());
-            condition.setFieldValue("name", "svt_bias");
+            condition.setFieldValue("name", "svt_bias_constants");
             condition.setFieldValue("table_name", "svt_bias_constants");
             condition.setFieldValue("notes", "constants from mya");
             condition.setFieldValue("created", new Date());
             condition.setFieldValue("created_by", System.getProperty("user.name"));
             condition.setFieldValue("collection_id", collectionId);
+            condition.setTableMetaData(MANAGER.findTableMetaData("conditions"));
+            condition.setConnection(MANAGER.getConnection());
+            logger.info(condition.toString());
 
             try {
 
                 for (SvtBiasMyaRange biasRange : range.getRanges()) {
                     // create a constant and add to the collection
                     final SvtBiasConstant constant = new SvtBiasConstant();
-                    constant.setFieldValue("start", biasRange.getStartDate());
-                    constant.setFieldValue("end", biasRange.getEndDate());
-                    constant.setFieldValue("value", biasRange.getStart().getValue());
+                    constant.setFieldValue("start", biasRange.getStartDate().getTime());
+                    constant.setFieldValue("end", biasRange.getEndDate().getTime());
+                    constant.setFieldValue("value", biasRange.getValue());
                     collection.add(constant);
-                    logger.info(condition.toString());
                 }
-                
+
                 // Insert collection data.
                 collection.insert();
-                
+
                 // Insert conditions record.
                 condition.insert();
 
@@ -335,4 +346,170 @@
             }
         }
     }
+
+    private static void loadPositionsToConditionsDB(List<SvtPositionRunRange> ranges) {
+        logger.info("Load to DB...");
+
+        // Create a new collection for each run
+        List<Integer> runsadded = new ArrayList<Integer>();
+
+        for (SvtPositionRunRange range : ranges) {
+            logger.info("Loading " + range.toString());
+            RunData rundata = range.getRun();
+            if (runsadded.contains(rundata.getRun())) {
+                logger.warning("Run " + Integer.toString(rundata.getRun()) + " was already added?");
+                throw new RuntimeException("Run " + Integer.toString(rundata.getRun()) + " was already added?");
+            }
+            runsadded.add(rundata.getRun());
+
+            if (range.getRanges().isEmpty()) {
+                logger.info("No position range for run " + range.getRun().getRun());
+                continue;
+            }
+
+            // create a collection
+            SvtMotorPositionCollection collection = new SvtMotorPositionCollection();
+
+            // Set the table meta data
+            collection.setTableMetaData(MANAGER.findTableMetaData("svt_motor_positions"));
+            collection.setConnection(MANAGER.getConnection());
+
+            int collectionId = -1;
+            try {
+                collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT positions");
+            } catch (SQLException e1) {
+                throw new RuntimeException(e1);
+            }
+
+            collection.setCollectionId(collectionId);
+
+            final ConditionsRecord condition = new ConditionsRecord();
+            condition.setFieldValue("run_start", rundata.getRun());
+            condition.setFieldValue("run_end", rundata.getRun());
+            condition.setFieldValue("name", "svt_motor_positions");
+            condition.setFieldValue("table_name", "svt_motor_positions");
+            condition.setFieldValue("notes", "constants from mya");
+            condition.setFieldValue("created", new Date());
+            condition.setFieldValue("created_by", System.getProperty("user.name"));
+            condition.setFieldValue("collection_id", collectionId);
+            condition.setTableMetaData(MANAGER.findTableMetaData("conditions"));
+            condition.setConnection(MANAGER.getConnection());
+            logger.info(condition.toString());
+
+            try {
+
+                for (SvtPositionMyaRange positionRange : range.getRanges()) {
+                    // create a constant and add to the collection
+                    final SvtMotorPosition constant = new SvtMotorPosition();
+                    constant.setFieldValue("start", positionRange.getStartDate().getTime());
+                    constant.setFieldValue("end", positionRange.getEndDate().getTime());
+                    constant.setFieldValue("top", positionRange.getTop());
+                    constant.setFieldValue("bottom", positionRange.getBottom());
+                    collection.add(constant);
+                }
+
+                // Insert collection data.
+                collection.insert();
+
+                // Insert conditions record.
+                condition.insert();
+
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
+    private static void readBeamData(File file, List<RunData> runList, List<SvtPositionRunRange> positionRanges, List<SvtBiasRunRange> biasRanges) {
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+        dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
+
+        Map<Integer, SvtPositionRunRange> positionRangeMap = new HashMap<Integer, SvtPositionRunRange>();
+        for (SvtPositionRunRange range : positionRanges) {
+            positionRangeMap.put(range.getRun().getRun(), range);
+        }
+        Map<Integer, SvtBiasRunRange> biasRangeMap = new HashMap<Integer, SvtBiasRunRange>();
+        for (SvtBiasRunRange range : biasRanges) {
+            biasRangeMap.put(range.getRun().getRun(), range);
+        }
+
+        try {
+            BufferedReader br = new BufferedReader(new FileReader(file));
+            String line;
+            System.out.println("myaData header: " + br.readLine()); //discard the first line
+
+            for (RunData run : runList) {
+                double totalCharge = 0;
+                double totalChargeWithBias = 0;
+                double totalChargeWithBiasAtNominal = 0;
+                double totalChargeWithBiasAt1pt5 = 0;
+                Date lastDate = null;
+
+                while ((line = br.readLine()) != null) {
+                    String arr[] = line.split(" +");
+
+                    if (arr.length != 3) {
+                        throw new java.text.ParseException("this line is not correct.", 0);
+                    }
+                    Date date = dateFormat.parse(arr[0] + " " + arr[1]);
+                    if (date.after(run.getEndDate())) {
+                        break;
+                    }
+                    if (date.before(run.getStartDate())) {
+                        continue;
+                    }
+
+                    double current;
+                    if (arr[2].equals("<undefined>")) {
+                        current = 0;
+                    } else {
+                        current = Double.parseDouble(arr[2]);
+                    }
+
+                    if (date.after(run.getStartDate())) {
+                        if (lastDate != null) {
+                            double dt = (date.getTime() - lastDate.getTime()) / 1000.0;
+                            double dq = dt * current; // nC
+
+                            totalCharge += dq;
+                            SvtBiasRunRange biasRunRange = biasRangeMap.get(run.getRun());
+                            if (biasRunRange != null) {
+                                for (SvtBiasMyaRange biasRange : biasRunRange.getRanges()) {
+                                    if (biasRange.includes(date)) {
+                                        totalChargeWithBias += dq;
+
+                                        SvtPositionRunRange positionRunRange = positionRangeMap.get(run.getRun());
+                                        if (positionRunRange != null) {
+                                            for (SvtPositionMyaRange positionRange : positionRunRange.getRanges()) {
+                                                if (positionRange.includes(date)) {
+                                                    if (Math.abs(positionRange.getBottom()) < 0.0001 && Math.abs(positionRange.getTop()) < 0.0001) {
+                                                        totalChargeWithBiasAtNominal += dq;
+                                                    } else if (Math.abs(positionRange.getBottom() - 0.0033) < 0.0001 && Math.abs(positionRange.getTop() - 0.0031) < 0.0001) {
+                                                        totalChargeWithBiasAt1pt5 += dq;
+                                                    }
+                                                    break;
+                                                }
+                                            }
+                                        }
+
+                                        break;
+                                    }
+                                }
+                            }
+
+                        }
+                    }
+                    lastDate = date;
+                }
+
+                System.out.format("run\t%d\ttotalQ\t%.0f\ttotalQBias\t%.0f\tfracBias\t%f\ttotalQNom\t%.0f\tfracNom\t%f\ttotalQ1pt5\t%.0f\tfrac1pt5\t%f\n", run.getRun(), totalCharge, totalChargeWithBias, totalChargeWithBias / totalCharge, totalChargeWithBiasAtNominal, totalChargeWithBiasAtNominal / totalCharge, totalChargeWithBiasAt1pt5, totalChargeWithBiasAt1pt5 / totalCharge);
+            }
+            br.close();
+
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (java.text.ParseException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java	Thu Aug 20 17:29:01 2015
@@ -13,7 +13,7 @@
  * 
  * Encapsulates an SVT bias constant, which is range in time where bias was ON.
  * 
- * @author Per Hansson Adrian <[log in to unmask]>
+ * @author Per Hansson Adrian, SLAC
  */
 @Table(names  = "svt_bias_constants")
 @Converter(multipleCollectionsAction = MultipleCollectionsAction.LAST_CREATED)
@@ -34,7 +34,7 @@
          */
         public SvtBiasConstant find(Date date) {
             for (SvtBiasConstant constant : this) {
-                if(date.after(constant.getStart()) && date.before(constant.getEnd())) {
+                if(date.getTime() >= constant.getStart() && date.getTime() <= constant.getEnd()) {
                     return constant;
                 }
             }
@@ -44,22 +44,22 @@
     
     
     /**
-     * The start date. 
+     * The start date as a Unix timestamp in milliseconds (GMT). 
      * 
-     * @return the start date
+     * @return the start date as a Unix timestamp
      */
     @Field(names = {"start"})
-    public Date getStart() {
+    public Long getStart() {
         return getFieldValue("start");
     }
 
     /**
-     * The end date. 
+     * The end date as a Unix timestamp in milliseconds (GMT). 
      * 
-     * @return the end date
+     * @return the end date as a Unix timestamp
      */
     @Field(names = {"end"})
-    public Date getEnd() {
+    public Long getEnd() {
         return getFieldValue("end");
     }
 

Modified: java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java
 =============================================================================
--- java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java	(original)
+++ java/branches/conditions-HPSJAVA-517/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java	Thu Aug 20 17:29:01 2015
@@ -34,13 +34,15 @@
         
     }
     
-    private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+//    private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     //private static final TimeZone timeZone = TimeZone.getTimeZone("EST");
     public static final double BIASVALUEON = 178.0;
     private List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>();
     private SvtBiasMyaRanges biasRanges = new SvtBiasMyaRanges();
     
     public SvtBiasMyaDumpReader() {
+        DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("America/New_York"));
     }
 
     public SvtBiasMyaRanges findOverlappingRanges(Date date_start, Date date_end) {

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