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) {
|