Author: [log in to unmask]
Date: Tue Oct 13 13:46:34 2015
New Revision: 3841
Log:
file summary utility
Added:
java/trunk/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java
- copied, changed from r3812, java/trunk/conditions/src/main/java/org/hps/conditions/svt/SvtBiasConditionsLoader.java
Copied: java/trunk/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java (from r3812, 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/users/src/main/java/org/hps/users/meeg/SvtChargeIntegrator.java Tue Oct 13 13:46:34 2015
@@ -1,168 +1,49 @@
-package org.hps.conditions.svt;
-
-import hep.aida.IDataPoint;
-import hep.aida.IDataPointSet;
-import hep.aida.IDataPointSetFactory;
-import hep.aida.IPlotter;
-import hep.aida.IPlotterStyle;
+package org.hps.users.meeg;
import java.io.BufferedReader;
-import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
-import java.sql.SQLException;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.List;
-import java.util.Map;
-import java.util.Set;
import java.util.TimeZone;
+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;
-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.ConditionsRecord;
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVParser;
+import org.apache.commons.csv.CSVRecord;
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.SvtAlignmentConstant;
+import org.hps.conditions.svt.SvtBiasConstant;
import org.hps.conditions.svt.SvtBiasConstant.SvtBiasConstantCollection;
-import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasMyaRange;
-import org.hps.conditions.svt.SvtBiasMyaDataReader.SvtBiasRunRange;
-import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionMyaRange;
-import org.hps.conditions.svt.SvtMotorMyaDataReader.SvtPositionRunRange;
+import org.hps.conditions.svt.SvtMotorPosition;
import org.hps.conditions.svt.SvtMotorPosition.SvtMotorPositionCollection;
-import org.lcsim.util.aida.AIDA;
+import org.hps.run.database.RunManager;
/**
- * @author Per Hansson Adrian <[log in to unmask]>
+ * @author Sho Uemura <[log in to unmask]>
*
*/
-public class SvtBiasConditionsLoader {
-
- private static final Set<String> FIELDS = new HashSet<String>();
-
+public class SvtChargeIntegrator {
+
/**
* Initialize the logger.
*/
- private static Logger LOGGER = Logger.getLogger(SvtBiasConditionsLoader.class.getPackage().getName());
-
- /**
- * Setup conditions.
- */
- private static final DatabaseConditionsManager MANAGER = DatabaseConditionsManager.getInstance();
-
- static {
- FIELDS.add("run");
- FIELDS.add("date");
- FIELDS.add("start_time");
- FIELDS.add("end_time");
- }
-
- /**
- * Setup control plots.
- */
- private static final AIDA aida = AIDA.defaultInstance();
- static IDataPointSet dpsRuns = null;
- static IDataPointSet dpsBiasRuns = null;
- static IDataPointSet dpsPositionRuns = 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);
- dpsPositionRuns = dpsf.create("dpsPositionRuns", "Position stable 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, 4);
- plotter.region(0).plot(dpsRuns, plotterStyle);
- plotter.region(1).plot(dpsBiasRuns, plotterStyle);
- plotter.region(2).plot(dpsPositionRuns, plotterStyle);
- plotter.region(3).plot(dpsRuns, plotterStyle);
- plotter.region(3).plot(dpsBiasRuns, plotterStyle, "mode=overlay");
- plotter.region(3).plot(dpsPositionRuns, 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(1).setValue(val);
- return dp;
- }
+ private static Logger LOGGER = Logger.getLogger(SvtChargeIntegrator.class.getPackage().getName());
+
+ private static final double angleTolerance = 1e-4;
/**
* 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 GregorianCalendar(1999, 1, 1)).getTime())) {
- 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);
- final RunSpreadsheet runSheet = new RunSpreadsheet(new File(path));
-
- // 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());
- }
- // find the run records (has converted dates and stuff) for these ranges
- RunMap runmap = runSheet.getRunMap(ranges);
- LOGGER.info("Found " + runmap.size() + " runs in the run map.");
- return runmap;
- }
-
- 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)) {
- runList.add(data);
- }
- }
- return runList;
+ public SvtChargeIntegrator() {
}
/**
@@ -174,14 +55,14 @@
public static void main(String[] args) {
Options options = new Options();
- options.addOption(new Option("c", true, "CSV run file"));
- options.addOption(new Option("m", true, "MYA dump file for bias"));
- options.addOption(new Option("p", true, "MYA dump file for motor positions"));
- options.addOption(new Option("t", false, "use run table format (from crawler) for bias"));
- 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("b", true, "beam current file"));
- options.addOption(new Option("s", false, "Show plots"));
+// options.addOption(new Option("c", true, "CSV run file"));
+// options.addOption(new Option("m", true, "MYA dump file for bias"));
+// options.addOption(new Option("p", true, "MYA dump file for motor positions"));
+// options.addOption(new Option("t", false, "use run table format (from crawler) for bias"));
+// 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("b", true, "beam current file"));
+// options.addOption(new Option("s", false, "Show plots"));
final CommandLineParser parser = new PosixParser();
CommandLine cl = null;
@@ -191,283 +72,130 @@
throw new RuntimeException("Cannot parse.", e);
}
- if (!cl.hasOption("c") || (!cl.hasOption("m") && !cl.hasOption("p"))) {
- printUsage(options);
- return;
+// if (!cl.hasOption("c") || (!cl.hasOption("m") && !cl.hasOption("p"))) {
+// printUsage(options);
+// return;
+// }
+ List<CSVRecord> records = null;
+ try {
+ FileReader reader = new FileReader(cl.getArgs()[0]);
+ final CSVFormat format = CSVFormat.DEFAULT;
+
+ final CSVParser csvParser;
+ csvParser = new CSVParser(reader, format);
+
+ records = csvParser.getRecords();
+
+// // Remove first two rows of headers.
+// records.remove(0);
+// records.remove(0);
+ csvParser.close();
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(SvtChargeIntegrator.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (IOException ex) {
+ Logger.getLogger(SvtChargeIntegrator.class.getName()).log(Level.SEVERE, null, ex);
}
- // Setup plots
- setupPlots(cl.hasOption("s"));
-
- // Load in CSV records from the exported run spreadsheet.
- List<RunData> runList;
- if (cl.hasOption("t")) {
- runList = SvtBiasMyaDataReader.readRunTable(new File(cl.getOptionValue("c")));
- } else {
- runList = getRunListFromSpreadSheet(cl.getOptionValue("c"));
- }
-
- List<SvtBiasRunRange> biasRunRanges = null;
- List<SvtPositionRunRange> positionRunRanges = null;
- // Load MYA dump
- if (cl.hasOption("m")) {
- List<SvtBiasMyaRange> biasRanges = SvtBiasMyaDataReader.readMyaData(new File(cl.getOptionValue("m")), 178.0, 2000, cl.hasOption("d"));
- LOGGER.info("Got " + biasRanges.size() + " bias ranges");
- biasRunRanges = SvtBiasMyaDataReader.findOverlappingRanges(runList, biasRanges);
- }
-
- if (cl.hasOption("p")) {
- List<SvtPositionMyaRange> positionRanges = SvtMotorMyaDataReader.readMyaData(new File(cl.getOptionValue("p")), 200, 10000);
- LOGGER.info("Got " + positionRanges.size() + " position ranges");
- positionRunRanges = SvtMotorMyaDataReader.findOverlappingRanges(runList, positionRanges);
- }
-
- // Combine them to run ranges when bias was on
- // each run may have multiple bias ranges
- // fill graphs
- if (cl.hasOption("s")) {
- if (cl.hasOption("m")) {
- 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.getStartDate().getTime(), 0.0);
- addPoint(dpsBiasRuns, br.getStartDate().getTime(), 0.3);
- addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.3);
- addPoint(dpsBiasRuns, br.getEndDate().getTime(), 0.0);
- }
- }
- }
- }
- if (cl.hasOption("p")) {
- for (SvtPositionRunRange r : positionRunRanges) {
- LOGGER.info(r.toString());
- if (r.getRun().getRun() > 5600) {//9999999999999.0) {
- //if(dpsRuns.size()/4.0<500) {//9999999999999.0) {
- for (SvtPositionMyaRange br : r.getRanges()) {
- addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.0);
- addPoint(dpsPositionRuns, br.getStartDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom()));
- addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.5 + 100 * Math.max(br.getTop(), br.getBottom()));
- addPoint(dpsPositionRuns, br.getEndDate().getTime(), 0.0);
- }
- }
- }
- }
- }
-
- if (cl.hasOption("b") && cl.hasOption("m") && cl.hasOption("p")) {
- readBeamData(new File(cl.getOptionValue("b")), runList, positionRunRanges, biasRunRanges);
- }
-
- // load to DB
- if (cl.hasOption("g")) {
- if (cl.hasOption("m")) {
- loadBiasesToConditionsDB(biasRunRanges);
- }
- if (cl.hasOption("p")) {
- loadPositionsToConditionsDB(positionRunRanges);
- }
- }
- }
-
- private static void printUsage(Options options) {
- HelpFormatter formatter = new HelpFormatter();
- formatter.printHelp("Need to adhere to these options", options);
-
- }
-
- private static void loadBiasesToConditionsDB(List<SvtBiasRunRange> ranges) {
- 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());
-
- if (range.getRanges().isEmpty()) {
- LOGGER.info("No bias range for run " + range.getRun().getRun());
- continue;
- }
-
- // create a collection
- SvtBiasConstantCollection collection = new SvtBiasConstantCollection();
-
- // Set the table meta data
- collection.setTableMetaData(MANAGER.findTableMetaData("svt_bias_constants"));
- collection.setConnection(MANAGER.getConnection());
-
- int collectionId = -1;
- try {
- collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT HV bias ON");
- } catch (SQLException e1) {
- throw new RuntimeException(e1);
- }
-
- collection.setCollectionId(collectionId);
-
- final ConditionsRecord condition = new ConditionsRecord();
- condition.setFieldValue("run_start", rundata.getRun());
- condition.setFieldValue("run_end", rundata.getRun());
- condition.setFieldValue("name", "svt_bias_constants");
- condition.setFieldValue("table_name", "svt_bias_constants");
- condition.setFieldValue("notes", "constants from mya");
- condition.setFieldValue("created", new Date());
- condition.setFieldValue("created_by", System.getProperty("user.name"));
- condition.setFieldValue("collection_id", collectionId);
- condition.setTableMetaData(MANAGER.findTableMetaData("conditions"));
- condition.setConnection(MANAGER.getConnection());
- LOGGER.info(condition.toString());
-
- try {
-
- for (SvtBiasMyaRange biasRange : range.getRanges()) {
- // create a constant and add to the collection
- final SvtBiasConstant constant = new SvtBiasConstant();
- constant.setFieldValue("start", biasRange.getStartDate().getTime());
- constant.setFieldValue("end", biasRange.getEndDate().getTime());
- constant.setFieldValue("value", biasRange.getValue());
- collection.add(constant);
- }
-
- // Insert collection data.
- collection.insert();
-
- // Insert conditions record.
- condition.insert();
-
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- private static void loadPositionsToConditionsDB(List<SvtPositionRunRange> ranges) {
- LOGGER.info("Load to DB...");
-
- // Create a new collection for each run
- List<Integer> runsadded = new ArrayList<Integer>();
-
- for (SvtPositionRunRange 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());
-
- if (range.getRanges().isEmpty()) {
- LOGGER.info("No position range for run " + range.getRun().getRun());
- continue;
- }
-
- // create a collection
- SvtMotorPositionCollection collection = new SvtMotorPositionCollection();
-
- // Set the table meta data
- collection.setTableMetaData(MANAGER.findTableMetaData("svt_motor_positions"));
- collection.setConnection(MANAGER.getConnection());
-
- int collectionId = -1;
- try {
- collectionId = MANAGER.getCollectionId(collection, "run ranges for SVT positions");
- } catch (SQLException e1) {
- throw new RuntimeException(e1);
- }
-
- collection.setCollectionId(collectionId);
-
- final ConditionsRecord condition = new ConditionsRecord();
- condition.setFieldValue("run_start", rundata.getRun());
- condition.setFieldValue("run_end", rundata.getRun());
- condition.setFieldValue("name", "svt_motor_positions");
- condition.setFieldValue("table_name", "svt_motor_positions");
- condition.setFieldValue("notes", "constants from mya");
- condition.setFieldValue("created", new Date());
- condition.setFieldValue("created_by", System.getProperty("user.name"));
- condition.setFieldValue("collection_id", collectionId);
- condition.setTableMetaData(MANAGER.findTableMetaData("conditions"));
- condition.setConnection(MANAGER.getConnection());
- LOGGER.info(condition.toString());
-
- try {
-
- for (SvtPositionMyaRange positionRange : range.getRanges()) {
- // create a constant and add to the collection
- final SvtMotorPosition constant = new SvtMotorPosition();
- constant.setFieldValue("start", positionRange.getStartDate().getTime());
- constant.setFieldValue("end", positionRange.getEndDate().getTime());
- constant.setFieldValue("top", positionRange.getTop());
- constant.setFieldValue("bottom", positionRange.getBottom());
- collection.add(constant);
- }
-
- // Insert collection data.
- collection.insert();
-
- // Insert conditions record.
- condition.insert();
-
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- private static void readBeamData(File file, List<RunData> runList, List<SvtPositionRunRange> positionRanges, List<SvtBiasRunRange> biasRanges) {
+// for (CSVRecord record : records) {
+// int runNum = Integer.parseInt(record.get(0));
+// int fileNum = Integer.parseInt(record.get(1));
+//// int nEvents = Integer.parseInt(record.get(2));
+//// int badEvents = Integer.parseInt(record.get(3));
+//// int firstTimestamp = Integer.parseInt(record.get(4));
+//// int lastTimestamp = Integer.parseInt(record.get(5));
+// long firstTI = Long.parseLong(record.get(6));
+// long lastTI = Long.parseLong(record.get(7));
+//// long tiOffset = Long.parseLong(record.get(8));
+//// data.add(new FileData(runNum, fileNum, firstTI, lastTI, record));
+// }
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
dateFormat.setTimeZone(TimeZone.getTimeZone("America/New_York"));
- Map<Integer, SvtPositionRunRange> positionRangeMap = new HashMap<Integer, SvtPositionRunRange>();
- for (SvtPositionRunRange range : positionRanges) {
- positionRangeMap.put(range.getRun().getRun(), range);
- }
- Map<Integer, SvtBiasRunRange> biasRangeMap = new HashMap<Integer, SvtBiasRunRange>();
- for (SvtBiasRunRange range : biasRanges) {
- biasRangeMap.put(range.getRun().getRun(), range);
- }
-
try {
- BufferedReader br = new BufferedReader(new FileReader(file));
+ BufferedReader br = new BufferedReader(new FileReader(cl.getArgs()[1]));
String line;
- System.out.println("myaData header: " + br.readLine()); //discard the first line
- System.out.println("run\ttotalQ\ttotalQBias\tfracBias\ttotalQNom\tfracNom\ttotalQ1pt5\tfrac1pt5\ttotalGatedQ\ttotalGatedQBias\tfracGatedBias\ttotalGatedQNom\tfracGatedNom\ttotalGatedQ1pt5\tfracGated1pt5");
-
- for (RunData run : runList) {
+ System.err.println("myaData header: " + br.readLine()); //discard the first line
+// System.out.println("run\ttotalQ\ttotalQBias\tfracBias\ttotalQNom\tfracNom\ttotalQ1pt5\tfrac1pt5\ttotalGatedQ\ttotalGatedQBias\tfracGatedBias\ttotalGatedQNom\tfracGatedNom\ttotalGatedQ1pt5\tfracGated1pt5");
+ System.out.println("run_num\tfile_num\tnominal_position\tnEvents\ttotalQ\ttotalQ_withbias\ttotalQ_atnom\tgatedQ\tgatedQ_withbias\tgatedQ_atnom");
+
+ int currentRun = 0;
+ double nominalAngleTop = -999;
+ double nominalAngleBottom = -999;
+ String nominalPosition = null;
+ long tiTimeOffset = 0;
+ SvtBiasConstantCollection svtBiasConstants = null;
+ SvtMotorPositionCollection svtPositionConstants = null;
+ SvtAlignmentConstant.SvtAlignmentConstantCollection alignmentConstants = null;
+
+ for (CSVRecord record : records) {
+ int runNum = Integer.parseInt(record.get(0));
+ int fileNum = Integer.parseInt(record.get(1));
+ long firstTI = Long.parseLong(record.get(6));
+ long lastTI = Long.parseLong(record.get(7));
+
+ if (runNum != currentRun) {
+ RunManager.getRunManager().setRun(runNum);
+ try {
+ DatabaseConditionsManager.getInstance().setDetector("HPS-EngRun2015-Nominal-v3", runNum);
+
+ svtBiasConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtBiasConstant.SvtBiasConstantCollection.class, "svt_bias_constants").getCachedData();
+ svtPositionConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtMotorPosition.SvtMotorPositionCollection.class, "svt_motor_positions").getCachedData();
+ alignmentConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtAlignmentConstant.SvtAlignmentConstantCollection.class, "svt_alignments").getCachedData();
+ } catch (Exception ex) {
+ continue;
+ }
+
+ if (!RunManager.getRunManager().runExists() || RunManager.getRunManager().getTriggerConfig().getTiTimeOffset() == null) {
+ continue;
+ }
+
+ tiTimeOffset = RunManager.getRunManager().getTriggerConfig().getTiTimeOffset();
+
+ for (final SvtAlignmentConstant constant : alignmentConstants) {
+ switch (constant.getParameter()) {
+ case 13100:
+ nominalAngleTop = constant.getValue();
+ break;
+ case 23100:
+ nominalAngleBottom = -constant.getValue();
+ break;
+ }
+ }
+
+ if (Math.abs(nominalAngleBottom) < angleTolerance && Math.abs(nominalAngleTop) < angleTolerance) {
+ nominalPosition = "0pt5";
+ } else if (Math.abs(nominalAngleBottom - 0.0033) < angleTolerance && Math.abs(nominalAngleTop - 0.0031) < angleTolerance) {
+ nominalPosition = "1pt5";
+ } else {
+ nominalPosition = "unknown";
+ }
+ currentRun = runNum;
+ }
+
+ Date startDate = new Date((long) ((firstTI + tiTimeOffset) / 1e6));
+ Date endDate = new Date((long) ((lastTI + tiTimeOffset) / 1e6));
+
double totalCharge = 0;
double totalChargeWithBias = 0;
double totalChargeWithBiasAtNominal = 0;
- double totalChargeWithBiasAt1pt5 = 0;
double totalGatedCharge = 0;
double totalGatedChargeWithBias = 0;
double totalGatedChargeWithBiasAtNominal = 0;
- double totalGatedChargeWithBiasAt1pt5 = 0;
+ Date date = null;
Date lastDate = null;
while ((line = br.readLine()) != null) {
String arr[] = line.split(" +");
if (arr.length != 4) {
- throw new java.text.ParseException("this line is not correct.", 0);
- }
- Date date = dateFormat.parse(arr[0] + " " + arr[1]);
- if (date.after(run.getEndDate())) {
+ throw new RuntimeException("this line is not correct.");
+ }
+ lastDate = date;
+ date = dateFormat.parse(arr[0] + " " + arr[1]);
+ if (date.after(endDate) && lastDate != null && lastDate.after(endDate)) {
break;
}
- if (date.before(run.getStartDate())) {
+ if (date.before(startDate)) {
continue;
}
@@ -483,55 +211,52 @@
livetime = Math.min(100.0, Math.max(0.0, Double.parseDouble(arr[3]))) / 100.0;
}
- if (date.after(run.getStartDate())) {
- if (lastDate != null) {
- double dt = (date.getTime() - lastDate.getTime()) / 1000.0;
- double dq = dt * current; // nC
- double dqGated = dt * current * livetime; // nC
-
- totalCharge += dq;
- totalGatedCharge += dqGated;
- SvtBiasRunRange biasRunRange = biasRangeMap.get(run.getRun());
- if (biasRunRange != null) {
- for (SvtBiasMyaRange biasRange : biasRunRange.getRanges()) {
- if (biasRange.includes(date)) {
- totalChargeWithBias += dq;
- totalGatedChargeWithBias += dqGated;
-
- SvtPositionRunRange positionRunRange = positionRangeMap.get(run.getRun());
- if (positionRunRange != null) {
- for (SvtPositionMyaRange positionRange : positionRunRange.getRanges()) {
- if (positionRange.includes(date)) {
- if (Math.abs(positionRange.getBottom()) < 0.0001 && Math.abs(positionRange.getTop()) < 0.0001) {
- totalChargeWithBiasAtNominal += dq;
- totalGatedChargeWithBiasAtNominal += dqGated;
- } else if (Math.abs(positionRange.getBottom() - 0.0033) < 0.0001 && Math.abs(positionRange.getTop() - 0.0031) < 0.0001) {
- totalChargeWithBiasAt1pt5 += dq;
- totalGatedChargeWithBiasAt1pt5 += dqGated;
- }
- break;
- }
- }
- }
-
- break;
- }
- }
+ boolean biasGood = false;
+ boolean positionGood = false;
+
+ SvtBiasConstant biasConstant = svtBiasConstants.find(date);
+ if (biasConstant != null) {
+ biasGood = true;
+ }
+ if (svtPositionConstants != null) {
+ SvtMotorPosition positionConstant = svtPositionConstants.find(date);
+ if (positionConstant != null) {
+// System.out.format("%f %f %f %f\n", positionConstant.getBottom(), nominalAngleBottom, positionConstant.getTop(), nominalAngleTop);
+ if (Math.abs(positionConstant.getBottom() - nominalAngleBottom) < angleTolerance && Math.abs(positionConstant.getTop() - nominalAngleTop) < angleTolerance) {
+ positionGood = true;
}
-
}
}
- lastDate = date;
+
+ if (lastDate != null) {
+ double dt = (Math.min(date.getTime(), endDate.getTime()) - Math.max(startDate.getTime(), lastDate.getTime())) / 1000.0;
+ double dq = dt * current; // nC
+ double dqGated = dt * current * livetime; // nC
+// System.out.format("start %d end %d date %d lastDate %d current %f dt %f\n", startDate.getTime(), endDate.getTime(), date.getTime(), lastDate.getTime(), current, dt);
+ totalCharge += dq;
+ totalGatedCharge += dqGated;
+ if (biasGood) {
+ totalChargeWithBias += dq;
+ totalGatedChargeWithBias += dqGated;
+ if (positionGood) {
+ totalChargeWithBiasAtNominal += dq;
+ totalGatedChargeWithBiasAtNominal += dqGated;
+ }
+ }
+ }
}
-// System.out.format("run\t%d\ttotalQ\t%.0f\ttotalQBias\t%.0f\tfracBias\t%f\ttotalQNom\t%.0f\tfracNom\t%f\ttotalQ1pt5\t%.0f\tfrac1pt5\t%f\ttotalGatedQ\t%.0f\ttotalGatedQBias\t%.0f\tfracGatedBias\t%f\ttotalGatedQNom\t%.0f\tfracGatedNom\t%f\ttotalGatedQ1pt5\t%.0f\tfracGated1pt5\t%f\n", run.getRun(), totalCharge, totalChargeWithBias, totalChargeWithBias / totalCharge, totalChargeWithBiasAtNominal, totalChargeWithBiasAtNominal / totalCharge, totalChargeWithBiasAt1pt5, totalChargeWithBiasAt1pt5 / totalCharge, totalGatedCharge, totalGatedChargeWithBias, totalGatedChargeWithBias / totalGatedCharge, totalGatedChargeWithBiasAtNominal, totalGatedChargeWithBiasAtNominal / totalGatedCharge, totalGatedChargeWithBiasAt1pt5, totalGatedChargeWithBiasAt1pt5 / totalGatedCharge);
- System.out.format("%d\t%.0f\t%.0f\t%f\t%.0f\t%f\t%.0f\t%f\t%.0f\t%.0f\t%f\t%.0f\t%f\t%.0f\t%f\n", run.getRun(), totalCharge, totalChargeWithBias, totalChargeWithBias / totalCharge, totalChargeWithBiasAtNominal, totalChargeWithBiasAtNominal / totalCharge, totalChargeWithBiasAt1pt5, totalChargeWithBiasAt1pt5 / totalCharge, totalGatedCharge, totalGatedChargeWithBias, totalGatedChargeWithBias / totalGatedCharge, totalGatedChargeWithBiasAtNominal, totalGatedChargeWithBiasAtNominal / totalGatedCharge, totalGatedChargeWithBiasAt1pt5, totalGatedChargeWithBiasAt1pt5 / totalGatedCharge);
+ int nEvents = Integer.parseInt(record.get(2));
+ System.out.format("%d\t%d\t%s\t%d\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n", runNum, fileNum, nominalPosition, nEvents, totalCharge, totalChargeWithBias, totalChargeWithBiasAtNominal, totalGatedCharge, totalGatedChargeWithBias, totalGatedChargeWithBiasAtNominal);
}
- br.close();
-
- } catch (IOException e) {
- throw new RuntimeException(e);
- } catch (java.text.ParseException e) {
- throw new RuntimeException(e);
+ } catch (Exception ex) {
+ Logger.getLogger(SvtChargeIntegrator.class.getName()).log(Level.SEVERE, null, ex);
}
+
+ }
+
+ private static void printUsage(Options options) {
+ HelpFormatter formatter = new HelpFormatter();
+ formatter.printHelp("Need to adhere to these options", options);
+
}
}
|