Author: [log in to unmask]
Date: Thu Jun 11 14:43:13 2015
New Revision: 3140
Log:
Bias conditions classes
Added:
java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
Modified:
java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.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 Thu Jun 11 14:43:13 2015
@@ -16,14 +16,24 @@
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.Option;
+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;
import org.hps.conditions.run.RunSpreadsheet;
import org.hps.conditions.run.RunSpreadsheet.RunData;
import org.hps.conditions.run.RunSpreadsheet.RunMap;
+import org.hps.conditions.svt.SvtBiasConstant.SvtBiasConstantCollection;
import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasMyaRange;
import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasMyaRanges;
import org.hps.conditions.svt.SvtBiasMyaDumpReader.SvtBiasRunRange;
+import org.hps.conditions.svt.SvtTimingConstants.SvtTimingConstantsCollection;
import org.hps.util.BasicLogFormatter;
import org.lcsim.util.aida.AIDA;
import org.lcsim.util.log.LogUtil;
@@ -41,7 +51,7 @@
/**
* Setup conditions.
*/
- //private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance();
+ private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance();
static {
FIELDS.add("run");
FIELDS.add("date");
@@ -56,7 +66,7 @@
static IDataPointSet dpsRuns = null;
static IDataPointSet dpsBiasRuns = null;
- private static void setupPlots() {
+ 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);
@@ -68,7 +78,7 @@
plotter.region(1).plot(dpsBiasRuns,plotterStyle);
plotter.region(2).plot(dpsRuns,plotterStyle);
plotter.region(2).plot(dpsBiasRuns,plotterStyle,"mode=overlay");
- plotter.show();
+ if(show) plotter.show();
}
@@ -81,7 +91,7 @@
/**
- *
+ * Default constructor
*/
public SvtBiasConditionsLoader() {
}
@@ -89,6 +99,11 @@
+ /**
+ * 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))) {
logger.warning("This run data is not valid: " + data.toString());
@@ -100,17 +115,38 @@
return true;
}
- /**
- * @param args
+ //private static Options options = null;
+
+
+ /**
+ * 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.)
*/
public static void main(String[] args) {
- setupPlots();
-
-
- // Load in CSV records from the exported run spreadsheet.
- final String path = args[0];
- logger.info(args[0]);
+ 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("g", false, "Actually load stuff into DB"));
+ options.addOption(new Option("s", false, "Show plots"));
+
+ final CommandLineParser parser = new PosixParser();
+ CommandLine cl = null;
+ try {
+ cl = parser.parse(options, args);
+ } catch (ParseException e) {
+ throw new RuntimeException("Cannot parse.", e);
+ }
+
+
+ // Setup plots
+ setupPlots(cl.hasOption("s")?true:false);
+
+
+ // Load in CSV records from the exported run spreadsheet.
+ final String path = cl.getOptionValue("c");
+ logger.info(path);
final RunSpreadsheet runSheet = new RunSpreadsheet(new File(path));
// Find the run ranges that have the same fields values.
@@ -124,7 +160,7 @@
// Load MYA dump
- SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(args[1]);
+ SvtBiasMyaDumpReader biasMyaReader = new SvtBiasMyaDumpReader(cl.getOptionValue("m"));
logger.info("Got " + biasMyaReader.getRanges().size() + " bias ranges");
@@ -163,32 +199,94 @@
}
-
- for(SvtBiasRunRange r : biasRunRanges) {
- logger.info(r.toString());
- if(r.getRun().getRun()>5600) {//9999999999999.0) {
- //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
- addPoint(dpsRuns, r.getRun().getStartDate().getTime(),0.0);
- addPoint(dpsRuns, r.getRun().getStartDate().getTime(),1.0);
- addPoint(dpsRuns, r.getRun().getEndDate().getTime(),1.0);
- addPoint(dpsRuns, r.getRun().getEndDate().getTime(),0.0);
-
- for(SvtBiasMyaRange br : r.getRanges()) {
- addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.0);
- addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.5);
- addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.5);
- addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.0);
+ // fill graphs
+ if(cl.hasOption("s")) {
+ for(SvtBiasRunRange r : biasRunRanges) {
+ logger.info(r.toString());
+ if(r.getRun().getRun()>5600) {//9999999999999.0) {
+ //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
+ addPoint(dpsRuns, r.getRun().getStartDate().getTime(),0.0);
+ addPoint(dpsRuns, r.getRun().getStartDate().getTime(),1.0);
+ addPoint(dpsRuns, r.getRun().getEndDate().getTime(),1.0);
+ addPoint(dpsRuns, r.getRun().getEndDate().getTime(),0.0);
+
+ for(SvtBiasMyaRange br : r.getRanges()) {
+ addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.0);
+ addPoint(dpsBiasRuns, br.getStart().getDate().getTime(),0.5);
+ addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.5);
+ addPoint(dpsBiasRuns, br.getEnd().getDate().getTime(),0.0);
+ }
+
+
+ }
+
+ }
+ }
+
+
+ // load to DB
+ loadToConditionsDB(biasRunRanges,cl.hasOption("g")?true:false);
+
+ }
+
+ private final static SvtBiasConstantCollection findCollection(final List<SvtBiasConstantCollection> list, Date date) {
+ for( SvtBiasConstantCollection collection : list) {
+ if(collection.find(date) != null) {
+ return collection;
+ }
+ }
+ return null;
+ }
+
+ private static final void loadToConditionsDB(List<SvtBiasRunRange> ranges, boolean doIt) {
+ logger.info("Load to DB...");
+
+ // Create a new collection for each run
+ List<Integer> runsadded = new ArrayList<Integer>();
+
+ for(SvtBiasRunRange range : ranges) {
+ logger.info("Loading " + range.toString());
+ RunData rundata = range.getRun();
+ if(runsadded.contains(rundata.getRun())) {
+ logger.warning("Run " + Integer.toString(rundata.getRun()) + " was already added?");
+ throw new RuntimeException("Run " + Integer.toString(rundata.getRun()) + " was already added?");
+ }
+ runsadded.add(rundata.getRun());
+ for (SvtBiasMyaRange biasRange : range.getRanges()) {
+ //create a collection
+ SvtBiasConstantCollection collection = new SvtBiasConstantCollection();
+ //create a constant and add to the collection
+ final SvtBiasConstant constant = new SvtBiasConstant();
+ constant.setFieldValue("start", biasRange.getStartDate());
+ constant.setFieldValue("end", biasRange.getEndDate());
+ constant.setFieldValue("value", biasRange.getStart().getValue());
+ collection.add(constant);
+
+ final ConditionsRecord condition = new ConditionsRecord();
+ condition.setFieldValue("run_start", rundata.getRun());
+ condition.setFieldValue("run_end", rundata.getRun());
+ condition.setFieldValue("name", "svt_bias");
+ condition.setFieldValue("table_name", "svt_bias");
+ condition.setFieldValue("notes", "constants from mya");
+ condition.setFieldValue("created", new Date());
+ condition.setFieldValue("created_by", System.getProperty("user.name"));
+
+ condition.setFieldValue("collection_id", collection.getCollectionId());
+
+ logger.info(condition.toString());
+
+ if(doIt) {
+ try {
+ condition.insert();
+ } catch (ConditionsObjectException e) {
+ throw new RuntimeException(e);
+ }
}
-
-
- }
-
- }
-
-
-
- }
-
+ }
+ }
+
+
+ }
Added: java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java
=============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java (added)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConstant.java Thu Jun 11 14:43:13 2015
@@ -0,0 +1,79 @@
+/**
+ *
+ */
+package org.hps.conditions.svt;
+
+import java.util.Date;
+
+import org.hps.conditions.api.BaseConditionsObject;
+import org.hps.conditions.api.BaseConditionsObjectCollection;
+import org.hps.conditions.database.Converter;
+import org.hps.conditions.database.Field;
+import org.hps.conditions.database.MultipleCollectionsAction;
+import org.hps.conditions.database.Table;
+
+/**
+ *
+ * Encapsulates an SVT bias constant, which is range in time where bias was ON.
+ *
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+@Table(names = "svt_bias")
+@Converter(multipleCollectionsAction = MultipleCollectionsAction.LAST_UPDATED)
+public final class SvtBiasConstant extends BaseConditionsObject {
+
+ /**
+ * The collection implementation for {@link SvtBiasConstant}.
+ */
+ @SuppressWarnings("serial")
+ public static class SvtBiasConstantCollection extends BaseConditionsObjectCollection<SvtBiasConstant> {
+
+
+ /**
+ * Find bias constant by date.
+ *
+ * @param date the offset
+ * @return the constant containing the date or <code>null</code> otherwise.
+ *
+ */
+ public SvtBiasConstant find(Date date) {
+ for (SvtBiasConstant constant : this) {
+ if(date.after(constant.getStart()) && date.before(constant.getEnd())) {
+ return constant;
+ }
+ }
+ return null;
+ }
+ }
+
+
+ /**
+ * The start date.
+ * @return the start date
+ */
+ @Field(names = {"start"})
+ public Date getStart() {
+ return getFieldValue("start");
+ }
+
+ /**
+ * The end date.
+ * @return the end date
+ */
+ @Field(names = {"end"})
+ public Date getEnd() {
+ return getFieldValue("end");
+ }
+
+ /**
+ * The bias value
+ * .
+ * @return the bias value
+ */
+ @Field(names = {"value"})
+ public double getValue() {
+ return getFieldValue("value");
+ }
+
+}
|