Author: [log in to unmask] Date: Mon Jul 27 16:18:54 2015 New Revision: 3283 Log: add new reader for different MYA dump format Added: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java - copied, changed from r3272, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java 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 Mon Jul 27 16:18:54 2015 @@ -1,6 +1,3 @@ -/** - * - */ package org.hps.conditions.svt; import hep.aida.*; @@ -10,7 +7,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map.Entry; import java.util.Set; @@ -24,7 +20,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; @@ -35,7 +30,6 @@ 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.util.BasicLogFormatter; import org.lcsim.util.aida.AIDA; import org.lcsim.util.log.LogUtil; @@ -47,13 +41,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 +58,59 @@ /** * Setup control plots. */ - private static AIDA aida = AIDA.defaultInstance(); + private static final AIDA aida = AIDA.defaultInstance(); static IDataPointSet dpsRuns = null; static IDataPointSet dpsBiasRuns = 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); 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.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(); + } + + } + 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 Date(99, 1, 1))) { 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 +119,66 @@ // 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()) { + 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 if (isValid(data)) { - if(prev!=null) { - if(isValid(prev)) { - if(prev.getEndDate().after(data.getStartDate())) { + 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())) { + } 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)); + biasRunRanges.add(new SvtBiasRunRange(data, overlaps)); prev = data; } } return biasRunRanges; } - - - - - + /** * 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("t", true, "run table from crawler")); +// options.addOption(new Option("d", true, "myaData dump file")); options.addOption(new Option("g", false, "Actually load stuff into DB")); options.addOption(new Option("s", false, "Show plots")); - + final CommandLineParser parser = new PosixParser(); CommandLine cl = null; try { @@ -194,83 +186,77 @@ } catch (ParseException e) { 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")?true:false); - - + setupPlots(cl.hasOption("s")); + // Load in CSV records from the exported run spreadsheet. RunMap runmap = getRunMapFromSpreadSheet(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"))); +// } // 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 = getBiasRunRanges(runmap, biasMyaReader); + // fill graphs - if(cl.hasOption("s")) { - for(SvtBiasRunRange r : biasRunRanges) { + if (cl.hasOption("s")) { + for (SvtBiasRunRange r : biasRunRanges) { logger.info(r.toString()); - if(r.getRun().getRun()>5600) {//9999999999999.0) { + 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); + 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); } - - } - - } - } - - + } + + } + } + // load to DB - if(cl.hasOption("g")) { + if (cl.hasOption("g")) { loadToConditionsDB(biasRunRanges); } } - - 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) { + HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp("Need to adhere to these options", options); + + } + + private 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) { + private static void loadToConditionsDB(List<SvtBiasRunRange> ranges) { logger.info("Load to DB..."); // Create a new collection for each run @@ -323,10 +309,10 @@ collection.add(constant); logger.info(condition.toString()); } - + // Insert collection data. collection.insert(); - + // Insert conditions record. condition.insert(); Copied: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java (from r3272, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java) ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDataReader.java Mon Jul 27 16:18:54 2015 @@ -2,117 +2,157 @@ import java.io.BufferedReader; import java.io.File; +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; +import java.util.Arrays; +import java.util.Collections; import java.util.Date; +import java.util.Iterator; import java.util.List; import java.util.TimeZone; import java.util.logging.Level; import java.util.logging.Logger; - -import org.hps.conditions.run.RunSpreadsheet; -import org.hps.conditions.run.RunSpreadsheet.RunData; -import org.hps.util.BasicLogFormatter; -import org.lcsim.util.log.LogUtil; - - - -public class SvtBiasMyaDumpReader { - - private static Logger logger = LogUtil.create(SvtBiasMyaDumpReader.class, new BasicLogFormatter(), Level.INFO); - - +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.CommandLineParser; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.PosixParser; +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVParser; +import org.apache.commons.csv.CSVRecord; + +public class SvtBiasMyaDataReader { + public static void main(String[] args) { - - SvtBiasMyaDumpReader dumpReader = new SvtBiasMyaDumpReader(args); - - dumpReader.printRanges(); - - - } - - private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + Options options = new Options(); + options.addOption(new Option("q", false, "quiet - don't print event contents")); + options.addOption(new Option("c", false, "print control events")); + options.addOption(new Option("s", false, "sequential read (not mem-mapped)")); + + // Parse the command line options. + if (args.length == 0) { + System.out.println("SvtBiasMyaDataReader <myaData dump> <run time table - tab separated>"); + final HelpFormatter help = new HelpFormatter(); + help.printHelp(" ", options); + System.exit(1); + } + + final CommandLineParser parser = new PosixParser(); + CommandLine cl = null; + try { + cl = parser.parse(options, args); + } catch (final org.apache.commons.cli.ParseException e) { + throw new RuntimeException("Problem parsing command line options.", e); + } + + if (cl.getArgs().length != 2) { + 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<RunData> runData = SvtBiasMyaDataReader.readRunTable(new File(cl.getArgs()[1])); + + 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())) { + nextRange = rangesIter.next(); + if (!rangesIter.hasNext()) { + break runLoop; + } + } + while (nextRange.getStart().before(data.getEnd())) { + runRanges.add(new SvtBiasRunRange(data, nextRange)); + 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(); + } + +// private static final SimpleDateFormat DATE_FORMAT = new RunSpreadsheet.AnotherSimpleDateFormat("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() { - } - - public SvtBiasMyaRanges findOverlappingRanges(Date date_start, Date date_end) { - return this.biasRanges.findOverlappingRanges(date_start, date_end); - } - - private void readFromFile(File file) { - addEntries(readMyaDump(file)); - logger.info("Got " + getEntries().size() + " entries from " + file.getName()); - - } - public void buildFromFiles(String[] args) { - for( int i=0; i<args.length; ++i) { - readFromFile(new File(args[i])); - } - buildRanges(); - } - - public SvtBiasMyaDumpReader(String[] args) { - buildFromFiles(args); - } - - public SvtBiasMyaDumpReader(String filepath) { - String[] files = {filepath}; - buildFromFiles(files); - } - - - public void addEntry(SvtBiasMyaEntry e) { - this.myaEntries.add(e); - } - - public void addEntries(List<SvtBiasMyaEntry> e) { - this.myaEntries.addAll(e); - } - - public List<SvtBiasMyaEntry> getEntries() { - return this.myaEntries; - } - - public SvtBiasMyaRanges getRanges() { - return this.biasRanges; - } - - - private void printRanges() { - for( SvtBiasMyaRange r : biasRanges) { - logger.info(r.toString()); - } - } - - - protected static List<SvtBiasMyaEntry> readMyaDump(File file) { - - List<SvtBiasMyaEntry> myaEntries = new ArrayList<SvtBiasMyaEntry>(); + public SvtBiasMyaDataReader(double biasValueOn, int endMargin) { + } + + public static List<SvtBiasMyaRange> readMyaData(File file, double biasValueOn, int endMargin) { + 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()); + + SvtBiasMyaRange currentRange = null; while ((line = br.readLine()) != null) { //System.out.println(line); - String arr[] = line.split(" "); + 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 = DATE_FORMAT.parse(arr[0] + " " + arr[1]); - double value = Double.parseDouble(arr[2]); - SvtBiasMyaEntry entry = new SvtBiasMyaEntry(file.getName(), date, value); - myaEntries.add(entry); + + 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()); + } + } else { + if (currentRange != null) { + currentRange.setEnd(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(); } @@ -122,171 +162,153 @@ } catch (IOException e) { e.printStackTrace(); } - return myaEntries; - - } - - public void buildRanges() { - SvtBiasMyaRange range = null; - SvtBiasMyaEntry eprev = null; - for(SvtBiasMyaEntry e : this.myaEntries) { - - //System.out.println(e.toString()); - - if(eprev!=null) { - if(e.getDate().before(eprev.getDate())) { - throw new RuntimeException("date list is not ordered: " + eprev.toString() + " vs " + e.toString()); - } + + return ranges; + } + + public static List<RunData> readRunTable(File file) { + List<CSVRecord> records = null; + List<RunData> data = new ArrayList<RunData>(); + try { + FileReader reader = new FileReader(file); + final CSVFormat format = CSVFormat.DEFAULT; + + final CSVParser parser; + parser = new CSVParser(reader, format); + + records = parser.getRecords(); + + // Remove first two rows of headers. + records.remove(0); + records.remove(0); + + parser.close(); + } catch (FileNotFoundException ex) { + Logger.getLogger(SvtBiasMyaDataReader.class.getName()).log(Level.SEVERE, null, ex); + } catch (IOException ex) { + Logger.getLogger(SvtBiasMyaDataReader.class.getName()).log(Level.SEVERE, null, ex); + } + + for (CSVRecord record : records) { + int runNum = Integer.parseInt(record.get(0)); + long startTime = Long.parseLong(record.get(7)) * 1000; + long endTime = Long.parseLong(record.get(8)) * 1000; + if (startTime != 0 && endTime != 0) { + data.add(new RunData(new Date(startTime), new Date(endTime), runNum)); } - - if( e.getValue() > BIASVALUEON) { - if (range==null) { - logger.fine("BIAS ON: " + e.toString()); - range = new SvtBiasMyaRange(); - range.setStart(e); - } - } else { - //close it - if (range!=null) { - logger.fine("BIAS TURNED OFF: " + e.toString()); - range.setEnd(e); - this.biasRanges.add(range); - range = null; - } - } - eprev = e; - } - logger.info("Built " + this.biasRanges.size() + " ranges"); - - } - - - public static final class SvtBiasMyaEntry { - private Date date; - private String name; - private double value; - public SvtBiasMyaEntry(String name, Date date, double value) { - this.date = date; - this.name = name; - this.value = value; - } - public double getValue() { - return value; - } - public Date getDate() { - return this.date; - } + } + + return data; + } + + public static class SvtBiasMyaRange { + + private Date start; + private Date end; + private double bias; + + 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() { + return end; + } + + public void setEnd(Date end) { + this.end = end; + } + + public Date getStart() { + return start; + } + + @Override public String toString() { - return name + " " + date.toString() + " (epoch " + Long.toString(date.getTime()) + ")" + " value " + value; - } - } - - - - public static final class SvtBiasMyaRanges extends ArrayList<SvtBiasMyaRange> { - public SvtBiasMyaRanges() {} - public SvtBiasMyaRanges findOverlappingRanges(Date date_start, Date date_end) { - logger.fine("look for overlaps from " + date_start.toString() + " to " + date_end.toString()); - SvtBiasMyaRanges overlaps = new SvtBiasMyaRanges(); - for(SvtBiasMyaRange range : this) { - logger.fine("loop bias range " + range.toString()); - if( range.overlap(date_start,date_end) ) { - overlaps.add(range); - logger.fine("overlap found!! "); - } - } - return overlaps; - } + return String.format("START: %s (%d), END: %s (%d), bias: %f, duration: %d", start.toString(), start.getTime(), end.toString(), end.getTime(), bias, end.getTime() - start.getTime()); + } + + 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; + this.run = run; + } + + public Date getStart() { + return start; + } + + public Date getEnd() { + return end; + } + + public int getRun() { + return run; + } + + @Override public String toString() { - StringBuffer sb = new StringBuffer(); - for(SvtBiasMyaRange range : this) { - sb.append(range.toString() + "\n"); - } - return sb.toString(); - } - - public boolean includes(Date date) { - for(SvtBiasMyaRange r : this) { - if(r.includes(date)) return true; - } - return false; - } - - } - - public static class SvtBiasMyaRange { - private SvtBiasMyaEntry start; - private SvtBiasMyaEntry end; - public SvtBiasMyaRange() {} - public Date getStartDate() { - return getStart().getDate(); - } - public Date getEndDate() { - return getEnd().getDate(); - } - 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(SvtBiasMyaEntry start) { - this.start = start; - } - public SvtBiasMyaEntry getEnd() { - return end; - } - public void setEnd(SvtBiasMyaEntry end) { - this.end = end; - } - public SvtBiasMyaEntry getStart() { - return start; - } - public void setStart(SvtBiasMyaEntry start) { - this.start = start; - } - public String toString() { - return "START: " + start.toString() + " END: " + end.toString(); - } - public boolean includes(Date date) { - if( date.before(getStartDate()) || date.after(getEndDate()) ) { - return false; - } else { - return true; - } - } - } - + 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 SvtBiasMyaRanges ranges; - public SvtBiasRunRange(RunData run, SvtBiasMyaRanges ranges) { + private SvtBiasMyaRange range; + + public SvtBiasRunRange(RunData run, SvtBiasMyaRange range) { setRun(run); - setRanges(ranges); - } + setRange(range); + } + public RunData getRun() { return run; } + public void setRun(RunData run) { this.run = run; } - public SvtBiasMyaRanges getRanges() { - return ranges; - } - public void setRanges(SvtBiasMyaRanges ranges) { - this.ranges = ranges; - } + + 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() + ":"); - for (SvtBiasMyaRange r : ranges) { - sb.append("\n" + r.toString()); - } - return sb.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()); + } + } } Modified: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasMyaDumpReader.java Mon Jul 27 16:18:54 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) {