Author: [log in to unmask]
Date: Thu Jul 30 16:48:41 2015
New Revision: 3312
Log:
example for testing timestamps
Added:
java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/BiasTimeDemo.lcsim
- copied, changed from r3260, java/trunk/steering-files/src/main/resources/org/hps/steering/production/RemoveTruth.lcsim
java/trunk/users/src/main/java/org/hps/users/meeg/BiasTimeDemo.java
- copied, changed from r3310, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SampleZeroHVBiasChecker.java
Copied: java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/BiasTimeDemo.lcsim (from r3260, java/trunk/steering-files/src/main/resources/org/hps/steering/production/RemoveTruth.lcsim)
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/production/RemoveTruth.lcsim (original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/users/meeg/BiasTimeDemo.lcsim Thu Jul 30 16:48:41 2015
@@ -1,21 +1,10 @@
-<!--
- Saves a copy of the input file, with truth collections removed.
- @author Sho Uemura <[log in to unmask]>
- @version $Id: $
--->
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<execute>
- <driver name="EventMarkerDriver"/>
- <driver name="LCIOWriter"/>
+ <driver name="BiasTimeDemo"/>
</execute>
<drivers>
- <driver name="EventMarkerDriver" type="org.lcsim.job.EventMarkerDriver">
- <eventInterval>1000</eventInterval>
- </driver>
- <driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
- <outputFilePath>${outputFile}.slcio</outputFilePath>
- <ignoreCollections>MCParticle TrackerHits EcalHits SVTTrueHitRelations</ignoreCollections>
+ <driver name="BiasTimeDemo" type="org.hps.users.meeg.BiasTimeDemo">
</driver>
</drivers>
</lcsim>
Copied: java/trunk/users/src/main/java/org/hps/users/meeg/BiasTimeDemo.java (from r3310, 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/users/src/main/java/org/hps/users/meeg/BiasTimeDemo.java Thu Jul 30 16:48:41 2015
@@ -1,366 +1,25 @@
-package org.hps.monitoring.drivers.svt;
+package org.hps.users.meeg;
-import hep.aida.IAnalysisFactory;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogramFactory;
-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;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-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.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.recon.ecal.triggerbank.AbstractIntData;
-import org.hps.recon.ecal.triggerbank.HeadBankData;
-import org.hps.record.epics.EpicsData;
-import org.hps.util.BasicLogFormatter;
-import org.lcsim.detector.tracker.silicon.HpsSiSensor;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.GenericObject;
-import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Detector;
import org.lcsim.util.Driver;
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.log.LogUtil;
/**
* @author Per Hansson Adrian <[log in to unmask]>
*
*/
-public class SampleZeroHVBiasChecker extends Driver {
+public class BiasTimeDemo extends Driver {
- // Logger
- Logger logger = LogUtil.create(getName(), new BasicLogFormatter(), Level.INFO);
-
- static {
- hep.aida.jfree.AnalysisFactory.register();
- }
-
- // Plotting
- private static ITree tree;
- IHistogramFactory histogramFactory;
- IPlotterFactory plotterFactory = IAnalysisFactory.create().createPlotterFactory();
- IPlotter plotter1;
- IPlotter plotter2;
- 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 static final String subdetectorName = "Tracker";
- List<SvtBiasRunRange> runRanges;
- SvtBiasRunRange runRange = null;
- private Date eventDate = null;
- private int eventCount = 0;
- FileWriter fWriter;
- PrintWriter pWriter;
- private String fileName = "biasoutput.txt";
- private int eventCountHvOff = 0;
- private String runSpreadSheetPath;
- 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;
- }
-
- public void setRunSpreadSheetPath(String runSpreadSheetPath) {
- this.runSpreadSheetPath = runSpreadSheetPath;
- }
-
- public void setFileName(String fileName) {
- 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) {
- 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) {
- logger.info("col_svt_bias_constants name collection wasn't found");
- }
-
-// svtBiasConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtBiasConstant.SvtBiasConstantCollection.class, "svt_bias").getCachedData();
- try {
- fWriter = new FileWriter(fileName);
- } catch (IOException e) {
- throw new RuntimeException("Cannot open file " + fileName, e);
- }
- pWriter = new PrintWriter(fWriter);
-
- tree = IAnalysisFactory.create().createTreeFactory().create();
- tree.cd("");
- histogramFactory = IAnalysisFactory.create().createHistogramFactory(tree);
-
- hists_rawadc = new HashMap<HpsSiSensor, IHistogram1D>();
- 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");
- plotter1.createRegions(6, 6);
- plotter2 = plotterFactory.create("Pedestal subtracted zero Sample ADC MaxSample>4");
- plotter2.createRegions(6, 6);
- plotter3 = plotterFactory.create("Pedestal subtracted zero Sample ADC MaxSample>4 ON");
- plotter3.createRegions(6, 6);
- plotter4 = plotterFactory.create("Pedestal subtracted zero Sample ADC MaxSample>4 OFF");
- plotter4.createRegions(6, 6);
-
- for (HpsSiSensor sensor : sensors) {
- AIDA aida = AIDA.defaultInstance();
- hists_rawadc.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped", 100, -1000.0, 5000.0));
- plotter1.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadc.get(sensor));
- hists_rawadcnoise.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4", 100, -1000.0, 1000.0));
- plotter2.region(SvtPlotUtils.computePlotterRegion(sensor)).plot(hists_rawadcnoise.get(sensor));
- hists_rawadcnoiseON.put(sensor, aida.histogram1D(sensor.getName() + " raw adc - ped maxSample>4 ON", 100, -1000.0, 1000.0));
- 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));
- 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();
- }
-
- 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 = SvtBiasMyaDataReader.findOverlappingRanges(runmap, ranges);
- logger.info("Print all " + runRanges.size() + " bias run ranges:");
- 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) {
- if (AbstractIntData.getTag(data) == HeadBankData.BANK_TAG) {
- 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) {
- logger.info(epicsData.toString());
- if (epicsData.getKeys().contains("SVT:bias:top:0:v_sens")) {
-
- epicsBiasValue = epicsData.getValue("SVT:bias:top:0:v_sens");
- logger.info("epicsBiasValue = " + Double.toString(epicsBiasValue));
-
- 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 (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) {
- if (debug) {
- logger.info("eventDate " + eventDate.toString());
- }
-
- eventCount++;
-
- // check what the DB has
- if (svtBiasConstants != null) {
- logger.info("there are " + svtBiasConstants.size() + " constants to search");
- 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()) {
- runRange = r;
- }
- }
- }
-
- 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"));
- eventCountEpicsDisagree++;
- }
-
- // print the cases where the HV is OFF
- 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) {
- maxSample = s;
- maxSampleValue = ((double) hit.getADCValues()[s]) - pedestal;
- }
- }
- if (maxSample >= 4) {
- hists_rawadcnoise.get(sensor).fill(hit.getADCValues()[0] - pedestal);
- 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);
- }
- }
- }
+ svtBiasConstants = DatabaseConditionsManager.getInstance().getCachedConditions(SvtBiasConstant.SvtBiasConstantCollection.class, "svt_bias_constants").getCachedData();
+ System.out.println("there are " + svtBiasConstants.size() + " constants to search");
+ for (SvtBiasConstant constant : svtBiasConstants) {
+ System.out.format("start %d (%s), end %d (%s), value %f\n", constant.getStart().getTime(), constant.getStart().toString(), constant.getEnd().getTime(), constant.getEnd().toString(), constant.getValue());
}
}
-
- @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);
- }
-
- }
-
}
|