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);
+ }
+
+ }
+
}
|