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

HPS-SVN July 2015

Subject:

r3293 - in /java/trunk: conditions/src/main/java/org/hps/conditions/run/ conditions/src/main/java/org/hps/conditions/svt/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/

From:

[log in to unmask]

Reply-To:

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

Date:

Wed, 29 Jul 2015 21:20:43 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (1007 lines)

Author: [log in to unmask]
Date: Wed Jul 29 14:20:41 2015
New Revision: 3293

Log:
lots of changes

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
    java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
    java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/run/RunSpreadsheet.java	Wed Jul 29 14:20:41 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;
         }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java	Wed Jul 29 14:20:41 2015
@@ -5,14 +5,14 @@
 import java.io.File;
 import java.sql.SQLException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Map.Entry;
 import java.util.Set;
 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;
@@ -27,9 +27,8 @@
 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.SvtBiasMyaDataReader.SvtBiasMyaRange;
+import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange;
 import org.hps.util.BasicLogFormatter;
 import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.log.LogUtil;
@@ -100,7 +99,7 @@
      * @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;
         }
@@ -128,39 +127,22 @@
         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;
     }
 
     /**
@@ -172,10 +154,10 @@
     public static void main(String[] args) {
 
         Options options = new Options();
-        options.addOption(new Option("c", true, "CVS run file"));
+        options.addOption(new Option("c", true, "CSV run file"));
         options.addOption(new Option("m", true, "MYA dump file"));
-//        options.addOption(new Option("t", true, "run table from crawler"));
-//        options.addOption(new Option("d", true, "myaData dump file"));
+        options.addOption(new Option("t", false, "use run table format (from crawler)"));
+        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("s", false, "Show plots"));
 
@@ -187,34 +169,33 @@
             throw new RuntimeException("Cannot parse.", e);
         }
 
-//        if (!cl.hasOption("c") || !cl.hasOption("m")) {
-//            printUsage(options);
-//            return;
-//        }
+        if (!cl.hasOption("c") || !cl.hasOption("m")) {
+            printUsage(options);
+            return;
+        }
+
         // Setup plots
         setupPlots(cl.hasOption("s"));
 
         // Load in CSV records from the exported run spreadsheet.
-        RunMap runmap = getRunMapFromSpreadSheet(cl.getOptionValue("c"));
+        List<RunData> runList = null;
+        if (cl.hasOption("t")) {
+            runList = SvtBiasMyaDataReader.readRunTable(new File(cl.getOptionValue("c")));
+        } else {
+            runList = getRunListFromSpreadSheet(cl.getOptionValue("c"));
+        }
 
         // Load MYA dump
-        SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(cl.getOptionValue("m"));
-        logger.info("Got " + biasMyaReader.getRanges().size() + " bias ranges");
-
-//        if (cl.hasOption("d")) {
-//            List<SvtBiasMyaDataReader.SvtBiasMyaRange> ranges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("d")), 178.0, 2000);
-//        }
-//
-//        if (cl.hasOption("t")) {
-//            List<SvtBiasMyaDataReader.RunData> runData = SvtBiasMyaDataReader.readRunTable(new File(cl.getOptionValue("t")));
-//        }
+        List<SvtBiasMyaRange> ranges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("m")), 178.0, 2000, cl.hasOption("d"));
+        logger.info("Got " + ranges.size() + " bias ranges");
+
         // Combine them to run ranges when bias was on        
         // each run may have multiple bias ranges
-        List<SvtBiasRunRange> biasRunRanges = getBiasRunRanges(runmap, biasMyaReader);
+        List<SvtBiasRunRange> biasRunRanges = SvtBiasMyaDataReader.findOverlappingRanges(runList, ranges);
 
         // fill graphs
         if (cl.hasOption("s")) {
-            for (SvtBiasRunRange r : biasRunRanges) {
+            for (SvtBiasMyaDataReader.SvtBiasRunRange r : biasRunRanges) {
                 logger.info(r.toString());
                 if (r.getRun().getRun() > 5600) {//9999999999999.0) {
                     //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
@@ -224,10 +205,10 @@
                     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);
+                        addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.0);
+                        addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.5);
+                        addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.5);
+                        addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.0);
                     }
 
                 }
@@ -305,7 +286,7 @@
                     final SvtBiasConstant constant = new SvtBiasConstant();
                     constant.setFieldValue("start", biasRange.getStartDate());
                     constant.setFieldValue("end", biasRange.getEndDate());
-                    constant.setFieldValue("value", biasRange.getStart().getValue());
+                    constant.setFieldValue("value", biasRange.getValue());
                     collection.add(constant);
                     logger.info(condition.toString());
                 }

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java	Wed Jul 29 14:20:41 2015
@@ -5,7 +5,6 @@
 import java.io.FileNotFoundException;
 import java.io.FileReader;
 import java.io.IOException;
-import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -26,6 +25,7 @@
 import org.apache.commons.csv.CSVFormat;
 import org.apache.commons.csv.CSVParser;
 import org.apache.commons.csv.CSVRecord;
+import org.hps.conditions.run.RunSpreadsheet.RunData;
 
 public class SvtBiasMyaDataReader {
 
@@ -56,49 +56,44 @@
             throw new RuntimeException("Missing myData dump or run time file.");
         }
 
-        List<SvtBiasMyaRange> ranges = SvtBiasMyaDataReader.readMyaData(new File(cl.getArgs()[0]), 178.0, 2000);
-
-//        for (SvtBiasMyaRange range : ranges) {
-//            System.out.println(range);
-//        }
+        List<SvtBiasMyaRange> ranges = SvtBiasMyaDataReader.readMyaData(new File(cl.getArgs()[0]), 178.0, 2000, true);
+
         List<RunData> runData = SvtBiasMyaDataReader.readRunTable(new File(cl.getArgs()[1]));
 
+        List<SvtBiasRunRange> runRanges = findOverlappingRanges(runData, ranges);
+
+        for (SvtBiasRunRange runRange : runRanges) {
+            System.out.println(runRange);
+        }
+
+    }
+
+    public static List<SvtBiasRunRange> findOverlappingRanges(List<RunData> runList, List<SvtBiasMyaRange> ranges) {
         List<SvtBiasRunRange> runRanges = new ArrayList<SvtBiasRunRange>();
 
         Iterator<SvtBiasMyaRange> rangesIter = ranges.iterator();
         SvtBiasMyaRange nextRange = rangesIter.next();
 
-        runLoop:
-        for (RunData data : runData) {
-
-            while (nextRange.getEnd().before(data.getStart())) {
+        for (RunData run : runList) {
+            SvtBiasRunRange runRange = new SvtBiasRunRange(run);
+            while (nextRange.getEndDate().before(run.getStartDate()) && rangesIter.hasNext()) {
                 nextRange = rangesIter.next();
+            }
+            while (nextRange.getStartDate().before(run.getEndDate())) {
+                runRange.addRange(nextRange);
+                if (nextRange.getEndDate().after(run.getEndDate())) {
+                    break;
+                }
                 if (!rangesIter.hasNext()) {
-                    break runLoop;
-                }
-            }
-            while (nextRange.getStart().before(data.getEnd())) {
-                runRanges.add(new SvtBiasRunRange(data, nextRange));
+                    break;
+                }
                 nextRange = rangesIter.next();
-                if (!rangesIter.hasNext()) {
-                    break runLoop;
-                }
-            }
-//            System.out.println(data);
-        }
-
-        for (SvtBiasRunRange runRange : runRanges) {
-            System.out.println(runRange);
-        }
-
-//        
-//        boolean quiet = cl.hasOption("q");
-//        boolean printControlEvents = cl.hasOption("c");
-//        boolean seqRead = cl.hasOption("s");
-//
-//        SvtBiasMyaDataReader dumpReader = new SvtBiasMyaDataReader(args);
-//
-//        dumpReader.printRanges();
+            }
+            if (!runRange.getRanges().isEmpty()) {
+                runRanges.add(runRange);
+            }
+        }
+        return runRanges;
     }
 
 //    private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -106,61 +101,55 @@
     public SvtBiasMyaDataReader(double biasValueOn, int endMargin) {
     }
 
-    public static List<SvtBiasMyaRange> readMyaData(File file, double biasValueOn, int endMargin) {
+    public static List<SvtBiasMyaRange> readMyaData(File file, double biasValueOn, int endMargin, boolean discardHeader) {
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
 
         List<SvtBiasMyaRange> ranges = new ArrayList<SvtBiasMyaRange>();
         try {
-
             BufferedReader br = new BufferedReader(new FileReader(file));
             String line;
-            System.out.println(br.readLine());
-
+            if (discardHeader) {
+                System.out.println(br.readLine()); //discard the first line
+            }
             SvtBiasMyaRange currentRange = null;
             while ((line = br.readLine()) != null) {
-                //System.out.println(line);
                 String arr[] = line.split(" +");
-                try {
-
-                    if (arr.length < 3) {
-                        throw new ParseException("this line is not correct.", 0);
+
+                if (arr.length < 3) {
+                    throw new ParseException("this line is not correct.", 0);
+                }
+
+                Date date = dateFormat.parse(arr[0] + " " + arr[1]);
+                Double[] values = new Double[arr.length - 2];
+                for (int i = 2; i < arr.length; i++) {
+                    if (arr[i].equals("<undefined>")) {
+                        values[i - 2] = 0.0; //assume it's bad
+                    } else {
+                        values[i - 2] = Double.parseDouble(arr[i]);
                     }
-
-                    Date date = dateFormat.parse(arr[0] + " " + arr[1]);
-                    Double[] values = new Double[arr.length - 2];
-                    for (int i = 2; i < arr.length; i++) {
-                        if (arr[i].equals("<undefined>")) {
-                            values[i - 2] = 0.0;
-                        } else {
-                            values[i - 2] = Double.parseDouble(arr[i]);
-                        }
+                }
+                double biasValue = Collections.min(Arrays.asList(values));
+                if (biasValue > biasValueOn) {
+                    if (currentRange == null) {
+                        currentRange = new SvtBiasMyaRange(date, biasValue);
+//                            System.out.format("bias on:\t%d %d %f %s\n", date.getTime(), values.length, biasValue, date.toString());
                     }
-                    double biasValue = Collections.min(Arrays.asList(values));
-                    if (biasValue > biasValueOn) {
-                        if (currentRange == null) {
-                            currentRange = new SvtBiasMyaRange(date, biasValue);
-//                            System.out.format("bias on:\t%d %d %f %s\n", date.getTime(), values.length, biasValue, date.toString());
-                        }
-                    } else {
-                        if (currentRange != null) {
-                            currentRange.setEnd(new Date(date.getTime() - endMargin));
-                            ranges.add(currentRange);
-                            currentRange = null;
+                } else {
+                    if (currentRange != null) {
+                        currentRange.setEndDate(new Date(date.getTime() - endMargin));
+                        ranges.add(currentRange);
+                        currentRange = null;
 //                            System.out.format("bias off:\t%d %d %f %s\n", date.getTime(), values.length, biasValue, date.toString());
-                        }
                     }
-//                    System.out.format("%d %d %f\n", date.getTime(), values.length, biasValue);
-//                    SvtBiasMyaEntry entry = new SvtBiasMyaEntry(file.getName(), date, value);
-//                    myaEntries.add(entry);
-                } catch (ParseException e) {
-                    e.printStackTrace();
                 }
             }
             br.close();
 
         } catch (IOException e) {
-            e.printStackTrace();
+            throw new RuntimeException(e);
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
         }
 
         return ranges;
@@ -210,29 +199,20 @@
         public SvtBiasMyaRange() {
         }
 
-//        public boolean overlap(Date date_start, Date date_end) {
-//            if (date_end.before(getStartDate())) {
-//                return false;
-//            } else if (date_start.after(getEndDate())) {
-//                return false;
-//            }
-//            return true;
-//        }
-//
         public SvtBiasMyaRange(Date start, double bias) {
             this.start = start;
             this.bias = bias;
         }
 
-        public Date getEnd() {
+        public Date getEndDate() {
             return end;
         }
 
-        public void setEnd(Date end) {
+        public void setEndDate(Date end) {
             this.end = end;
         }
 
-        public Date getStart() {
+        public Date getStartDate() {
             return start;
         }
 
@@ -242,72 +222,56 @@
         }
 
         public boolean includes(Date date) {
-            return !date.before(getStart()) && !date.after(getEnd());
-        }
-    }
-
-    public static class RunData {
-
-        private final Date start;
-        private final Date end;
-        private final int run;
-
-        public RunData(Date start, Date end, int run) {
-            this.start = start;
-            this.end = end;
+            return !date.before(getStartDate()) && !date.after(getEndDate());
+        }
+
+        Object getValue() {
+            return bias;
+        }
+    }
+
+    public static final class SvtBiasRunRange {
+
+        private RunData run;
+        private final List<SvtBiasMyaRange> ranges = new ArrayList<SvtBiasMyaRange>();
+
+        public SvtBiasRunRange(RunData run) {
+            setRun(run);
+        }
+
+        public RunData getRun() {
+            return run;
+        }
+
+        public void setRun(RunData run) {
             this.run = run;
         }
 
-        public Date getStart() {
-            return start;
-        }
-
-        public Date getEnd() {
-            return end;
-        }
-
-        public int getRun() {
-            return run;
+        public List<SvtBiasMyaRange> getRanges() {
+            return ranges;
+        }
+
+        public void addRange(SvtBiasMyaRange range) {
+            ranges.add(range);
+        }
+
+        public boolean includes(Date date) {
+            for (SvtBiasMyaRange r : ranges) {
+                if (date.after(r.getStartDate()) && date.before(r.getEndDate())) {
+                    return true;
+                }
+            }
+            return false;
         }
 
         @Override
         public String toString() {
-            return String.format("Run %d - START: %s (%d), END: %s (%d), duration: %d", run, start.toString(), start.getTime(), end.toString(), end.getTime(), end.getTime() - start.getTime());
-        }
-    }
-
-    public static final class SvtBiasRunRange {
-
-        private RunData run;
-        private SvtBiasMyaRange range;
-
-        public SvtBiasRunRange(RunData run, SvtBiasMyaRange range) {
-            setRun(run);
-            setRange(range);
-        }
-
-        public RunData getRun() {
-            return run;
-        }
-
-        public void setRun(RunData run) {
-            this.run = run;
-        }
-
-        public SvtBiasMyaRange getRange() {
-            return range;
-        }
-
-        public void setRange(SvtBiasMyaRange range) {
-            this.range = range;
-        }
-
-        @Override
-        public String toString() {
-//            StringBuffer sb = new StringBuffer();
-//            sb.append("\nRun " + run.toString() + ":");
-//            sb.append("\n" + range.toString());
-            return String.format("%s, range %s", run.toString(), range.toString());
+            StringBuilder sb = new StringBuilder();
+            sb.append("\nRun ").append(run.toString()).append(":");
+            for (SvtBiasMyaRange range : ranges) {
+                sb.append("\n").append(range.toString());
+            }
+            return sb.toString();
         }
     }
 

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java	Wed Jul 29 14:20:41 2015
@@ -6,7 +6,7 @@
 import hep.aida.IPlotter;
 import hep.aida.IPlotterFactory;
 import hep.aida.ITree;
-
+import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -16,16 +16,18 @@
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-
 import org.hps.conditions.api.ConditionsRecord.ConditionsRecordCollection;
 import org.hps.conditions.database.DatabaseConditionsManager;
+import org.hps.conditions.run.RunSpreadsheet;
 import org.hps.conditions.run.RunSpreadsheet.RunMap;
 import org.hps.conditions.svt.SvtBiasConditionsLoader;
 import org.hps.conditions.svt.SvtBiasConstant;
 import org.hps.conditions.svt.SvtBiasConstant.SvtBiasConstantCollection;
-import org.hps.conditions.svt.SvtBiasMyaDumpReader;
+import org.hps.conditions.svt.SvtBiasMyaDataReader;
+import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasMyaRange;
+import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange;
+import static org.hps.conditions.svt.SvtBiasMyaDataReader.findOverlappingRanges;
 import org.hps.conditions.svt.SvtTimingConstants;
-import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasRunRange;
 import org.hps.recon.ecal.triggerbank.AbstractIntData;
 import org.hps.recon.ecal.triggerbank.HeadBankData;
 import org.hps.record.epics.EpicsData;
@@ -39,7 +41,6 @@
 import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.log.LogUtil;
 
-
 /**
  * @author Per Hansson Adrian <[log in to unmask]>
  *
@@ -48,6 +49,7 @@
 
     // Logger
     Logger logger = LogUtil.create(getName(), new BasicLogFormatter(), Level.INFO);
+
     static {
         hep.aida.jfree.AnalysisFactory.register();
     }
@@ -61,14 +63,20 @@
     IPlotter plotter3;
     IPlotter plotter4;
     private boolean showPlots = false;
+    private boolean useRunTableFormat = false;
+    private boolean discardMyaDataHeader = false;
+    private boolean debug = false;
 
     List<HpsSiSensor> sensors;
     private Map<HpsSiSensor, IHistogram1D> hists_rawadc;
     private Map<HpsSiSensor, IHistogram1D> hists_rawadcnoise;
     private Map<HpsSiSensor, IHistogram1D> hists_rawadcnoiseON;
     private Map<HpsSiSensor, IHistogram1D> hists_rawadcnoiseOFF;
+    private final Map<HpsSiSensor, IHistogram1D> hists_hitCounts = new HashMap<HpsSiSensor, IHistogram1D>();
+    private final Map<HpsSiSensor, IHistogram1D> hists_hitCountsON = new HashMap<HpsSiSensor, IHistogram1D>();
+    private final Map<HpsSiSensor, IHistogram1D> hists_hitCountsOFF = new HashMap<HpsSiSensor, IHistogram1D>();
     private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
-    private String triggerBankCollectionName ="TriggerBank";
+    private String triggerBankCollectionName = "TriggerBank";
     private static final String subdetectorName = "Tracker";
     List<SvtBiasRunRange> runRanges;
     SvtBiasRunRange runRange = null;
@@ -79,16 +87,13 @@
     private String fileName = "biasoutput.txt";
     private int eventCountHvOff = 0;
     private String runSpreadSheetPath;
-    private String myaDumpPath; 
-    private double epicsBiasValue = -1; 
+    private String myaDumpPath;
+    private double epicsBiasValue = -1;
     private boolean hvOnEpics = false;
     private boolean hvOn = false;
     private EpicsData epicsData = null;
     private int eventCountEpicsDisagree = 0;
     SvtBiasConstantCollection svtBiasConstants = null;
-    
-
-    
 
     public void setMyaDumpPath(String myaDumpPath) {
         this.myaDumpPath = myaDumpPath;
@@ -102,31 +107,35 @@
         this.fileName = fileName;
     }
 
-
-    
     public void setShowPlots(boolean showPlots) {
         this.showPlots = showPlots;
     }
 
-    
+    public void setUseRunTableFormat(boolean useRunTableFormat) {
+        this.useRunTableFormat = useRunTableFormat;
+    }
+
+    public void setDiscardMyaDataHeader(boolean discardMyaDataHeader) {
+        this.discardMyaDataHeader = discardMyaDataHeader;
+    }
+
+    public void setDebug(boolean debug) {
+        this.debug = debug;
+    }
+
     @Override
     protected void detectorChanged(Detector detector) {
-    
-        
+
         ConditionsRecordCollection col_svt_bias = DatabaseConditionsManager.getInstance().findConditionsRecords("svt_bias");
-        if(col_svt_bias==null) {
+        if (col_svt_bias == null) {
             logger.info("svt_bias name collection wasn't found");
         }
         ConditionsRecordCollection col_svt_bias_constants = DatabaseConditionsManager.getInstance().findConditionsRecords("svt_bias_constants");
-        if(col_svt_bias_constants==null) {
+        if (col_svt_bias_constants == null) {
             logger.info("col_svt_bias_constants name collection wasn't found");
         }
-        
-        
-        
-        svtBiasConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtBiasConstant.SvtBiasConstantCollection.class , "svt_bias").getCachedData();
-
-        
+
+//        svtBiasConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtBiasConstant.SvtBiasConstantCollection.class, "svt_bias").getCachedData();
         try {
             fWriter = new FileWriter(fileName);
         } catch (IOException e) {
@@ -134,9 +143,6 @@
         }
         pWriter = new PrintWriter(fWriter);
 
-
-        
-        
         tree = IAnalysisFactory.create().createTreeFactory().create();
         tree.cd("");
         histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
@@ -145,7 +151,7 @@
         hists_rawadcnoise = new HashMap<HpsSiSensor, IHistogram1D>();
         hists_rawadcnoiseON = new HashMap<HpsSiSensor, IHistogram1D>();
         hists_rawadcnoiseOFF = new HashMap<HpsSiSensor, IHistogram1D>();
-        
+
         sensors = detector.getSubdetector(subdetectorName).getDetectorElement().findDescendants(HpsSiSensor.class);
 
         plotter1 = plotterFactory.create("Pedestal subtracted zero Sample ADC");
@@ -167,31 +173,38 @@
             plotter3.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoiseON.get(sensor));
             hists_rawadcnoiseOFF.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4 OFF", 100, -1000.0, 1000.0));
             plotter4.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoiseOFF.get(sensor));
-        }
-
-        if(showPlots) {
+            hists_hitCounts.put(sensor, aida.histogram1D(sensor.getName() + " hit count", 100, 0, 100));
+            hists_hitCountsON.put(sensor, aida.histogram1D(sensor.getName() + " hit count ON", 100, 0, 100));
+            hists_hitCountsOFF.put(sensor, aida.histogram1D(sensor.getName() + " hit count OFF", 100, 0, 100));
+        }
+
+        if (showPlots) {
             plotter1.show();
             plotter2.show();
             plotter3.show();
             plotter4.show();
         }
 
-
-        RunMap runmap = SvtBiasConditionsLoader.getRunMapFromSpreadSheet(runSpreadSheetPath);
-        SvtBiasMyaDumpReader biasDumpReader = new SvtBiasMyaDumpReader(myaDumpPath);
+        List<RunSpreadsheet.RunData> runmap;
+        if (useRunTableFormat) {
+            runmap = SvtBiasMyaDataReader.readRunTable(new File(runSpreadSheetPath));
+        } else {
+            runmap = SvtBiasConditionsLoader.getRunListFromSpreadSheet(runSpreadSheetPath);
+        }
+        List<SvtBiasMyaRange> ranges = SvtBiasMyaDataReader.readMyaData(new File(myaDumpPath), 178.0, 2000, discardMyaDataHeader);
+
         //SvtBiasConditionsLoader.setTimeOffset(Calendar.)
-        runRanges = SvtBiasConditionsLoader.getBiasRunRanges(runmap, biasDumpReader);
+        runRanges = SvtBiasMyaDataReader.findOverlappingRanges(runmap, ranges);
         logger.info("Print all " + runRanges.size() + " bias run ranges:");
-        for(SvtBiasRunRange r : runRanges) {
-            logger.info(r.toString());
+        for (SvtBiasRunRange r : runRanges) {
+            if (debug) {
+                logger.info(r.toString());
+            }
             pWriter.println(r.toString());
         }
 
-
-        
-    }
-
-    
+    }
+
     private Date getEventTimeStamp(EventHeader event) {
         List<GenericObject> intDataCollection = event.get(GenericObject.class, triggerBankCollectionName);
         for (GenericObject data : intDataCollection) {
@@ -199,140 +212,155 @@
                 Date date = HeadBankData.getDate(data);
                 if (date != null) {
                     return date;
-                } 
+                }
             }
         }
         return null;
     }
-    
-    
+
     @Override
     public void process(EventHeader event) {
-        
-        
+
         // Read EPICS data if available
         epicsData = EpicsData.read(event);
-        
-        if(epicsData!=null) {
+
+        if (epicsData != null) {
             logger.info(epicsData.toString());
-            if(epicsData.getUsedNames().contains("SVT:bias:top:0:v_sens")) {
-                
+            if (epicsData.getUsedNames().contains("SVT:bias:top:0:v_sens")) {
+
                 epicsBiasValue = epicsData.getValue("SVT:bias:top:0:v_sens");
                 logger.info("epicsBiasValue = " + Double.toString(epicsBiasValue));
-                
-                if(epicsBiasValue>SvtBiasMyaDumpReader.BIASVALUEON) {
+
+                if (epicsBiasValue > 178.0) {
                     hvOnEpics = true;
                 }
-                
+
             }
         } else {
             logger.fine("no epics information in this event");
         }
-        
-        
-        
+
         // Read the timestamp for the event
         // It comes in on block level so not every event has it, use the latest one throughout a block
-        
         Date newEventDate = getEventTimeStamp(event);
-        if(newEventDate!=null) {
+        if (newEventDate != null) {
+            if (eventDate == null || !eventDate.equals(newEventDate)) {
+                System.out.format("event %d with new timestamp %s\n", event.getEventNumber(), newEventDate.toString());
+            }
             eventDate = newEventDate;
         }
-        
+
         // only do this analysis where there is a date availabe.
-        
-        if(eventDate!=null) {
-
-            logger.info("eventDate " + eventDate.toString());
-            
+        if (eventDate != null) {
+            if (debug) {
+                logger.info("eventDate " + eventDate.toString());
+            }
+
             eventCount++;
-            
-            
+
             // check what the DB has
-            if(svtBiasConstants != null) {
+            if (svtBiasConstants != null) {
                 logger.info("there are " + svtBiasConstants.size() + " constants to search");
-                for(SvtBiasConstant constant : svtBiasConstants) {
+                for (SvtBiasConstant constant : svtBiasConstants) {
                     logger.info("start " + constant.getStart().toString() + " end " + constant.getEnd() + " value " + constant.getValue());
                 }
-                
-                
+
                 SvtBiasConstant constant = svtBiasConstants.find(eventDate);
-                
-                logger.info(constant==null?"No constant found!":("Found constant " + "start " + constant.getStart().toString() + " end " + constant.getEnd() + " value " + constant.getValue()));
-                
-            }
-            
-            
-            
-            if(runRange==null) {
-                for(SvtBiasRunRange r : runRanges) {
-                    if (r.getRun().getRun()==event.getRunNumber()) {
+
+                logger.info(constant == null ? "No constant found!" : ("Found constant " + "start " + constant.getStart().toString() + " end " + constant.getEnd() + " value " + constant.getValue()));
+
+            }
+
+            if (runRange == null) {
+                for (SvtBiasRunRange r : runRanges) {
+                    if (r.getRun().getRun() == event.getRunNumber()) {
                         runRange = r;
                     }
                 }
             }
-            
-            hvOn = runRange.getRanges().includes(eventDate);
-            
+
+            hvOn = runRange.includes(eventDate);
+
             // print the cases where epics and run range do not agree
-            if(hvOn!=hvOnEpics && epicsBiasValue>0.) {
-                logger.warning("hvOn is " + (hvOn?"ON":"OFF") + " hvOnEpics " + (hvOnEpics?"ON":"OFF") + " for Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO") + " hvOnEpics " + (hvOnEpics?"YES":"NO"));
-                pWriter.println("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO"));
+            if (hvOn != hvOnEpics && epicsBiasValue > 0.) {
+                logger.warning("hvOn is " + (hvOn ? "ON" : "OFF") + " hvOnEpics " + (hvOnEpics ? "ON" : "OFF") + " for Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn ? "YES" : "NO") + " hvOnEpics " + (hvOnEpics ? "YES" : "NO"));
+                pWriter.println("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn ? "YES" : "NO"));
                 eventCountEpicsDisagree++;
             }
-            
+
             // print the cases where the HV is OFF
-            if(!hvOn) {
-                logger.info("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO")+ " hvOnEpics " + (hvOnEpics?"YES":"NO"));
-                pWriter.println("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn?"YES":"NO")+ " hvOnEpics " + (hvOnEpics?"YES":"NO"));
+            if (!hvOn) {
+                if (debug) {
+                    logger.info("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn ? "YES" : "NO") + " hvOnEpics " + (hvOnEpics ? "YES" : "NO"));
+                }
+                pWriter.println("Run " + event.getRunNumber() + " Event " + event.getEventNumber() + " date " + eventDate.toString() + " epoch " + eventDate.getTime() + " hvOn " + (hvOn ? "YES" : "NO") + " hvOnEpics " + (hvOnEpics ? "YES" : "NO"));
                 eventCountHvOff++;
             }
             if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+                Map<HpsSiSensor, Integer> hitCountMap = new HashMap<HpsSiSensor, Integer>();
+
                 // Get RawTrackerHit collection from event.
                 List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
-                
+
                 for (RawTrackerHit hit : rawTrackerHits) {
                     HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+                    Integer count = hitCountMap.get(sensor);
+                    if (count == null) {
+                        count = 0;
+                    }
+                    hitCountMap.put(sensor, count + 1);
+
                     int strip = hit.getIdentifierFieldValue("strip");
                     double pedestal = sensor.getPedestal(strip, 0);
                     hists_rawadc.get(sensor).fill(hit.getADCValues()[0] - pedestal);
 
                     int maxSample = 0;
                     double maxSampleValue = 0;
-                    for(int s=0;s<6;++s) {
-                        if(((double)hit.getADCValues()[s] - pedestal)>maxSampleValue) {
+                    for (int s = 0; s < 6; ++s) {
+                        if (((double) hit.getADCValues()[s] - pedestal) > maxSampleValue) {
                             maxSample = s;
-                            maxSampleValue =  ((double) hit.getADCValues()[s]) - pedestal;
+                            maxSampleValue = ((double) hit.getADCValues()[s]) - pedestal;
                         }
                     }
-                    if(maxSample>=4) {
+                    if (maxSample >= 4) {
                         hists_rawadcnoise.get(sensor).fill(hit.getADCValues()[0] - pedestal);
-                        if(hvOn) {
+                        if (hvOn) {
                             hists_rawadcnoiseON.get(sensor).fill(hit.getADCValues()[0] - pedestal);
                         } else {
                             hists_rawadcnoiseOFF.get(sensor).fill(hit.getADCValues()[0] - pedestal);
                         }
                     }
                 }
+
+                for (HpsSiSensor sensor : sensors) {
+                    Integer count = hitCountMap.get(sensor);
+                    if (count == null) {
+                        count = 0;
+                    }
+                    hists_hitCounts.get(sensor).fill(count);
+                    if (hvOn) {
+                        hists_hitCountsON.get(sensor).fill(count);
+                    } else {
+                        hists_hitCountsOFF.get(sensor).fill(count);
+                    }
+                }
             }
         }
     }
 
     @Override
     public void endOfData() {
-        
+
         logger.info("eventCount " + Integer.toString(eventCount) + " eventCountHvOff " + Integer.toString(eventCountHvOff) + " eventCountEpicsDisagree " + Integer.toString(eventCountEpicsDisagree));
         pWriter.println("eventCount " + Integer.toString(eventCount) + " eventCountHvOff " + Integer.toString(eventCountHvOff) + " eventCountEpicsDisagree " + Integer.toString(eventCountEpicsDisagree));
-        
+
         try {
             pWriter.close();
             fWriter.close();
-        } catch(IOException ex) {
-             logger.log(Level.SEVERE, null, ex);
-        }
-        
-    }
-    
-   
-    
+        } catch (IOException ex) {
+            logger.log(Level.SEVERE, null, ex);
+        }
+
+    }
+
 }

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