Author: [log in to unmask]
Date: Fri May 15 03:18:48 2015
New Revision: 2971
Log:
update plots, fix status bug
Added:
java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java
Modified:
java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/SystemStatusPanel.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java
java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconOutsideIn.lcsim
java/trunk/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java
Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/SystemStatusPanel.java
=============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/SystemStatusPanel.java (original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/SystemStatusPanel.java Fri May 15 03:18:48 2015
@@ -78,6 +78,8 @@
// Clear the system status events table.
((SystemStatusEventsTableModel) this.eventsTable.getModel()).clear();
+
+ this.statuses.clear();
}
private class SystemStatusBeeper extends TimerTask {
@@ -86,7 +88,7 @@
public void run() {
boolean isAlarming = false;
for (SystemStatus status : statuses) {
- if (status.getStatusCode() == StatusCode.ALARM) {
+ if (status.isActive() && status.getStatusCode() == StatusCode.ALARM) {
isAlarming = true;
}
}
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java Fri May 15 03:18:48 2015
@@ -91,7 +91,7 @@
private int maxSampleMonitorPeriod = 100;
SystemStatus occupancyStatus;
- private int occupancyMonitorStart = 2500;
+ private int occupancyMonitorStart = 5000;
private int occupancyMonitorPeriod = 100;
private double minPeakOccupancy = 0.0001;
private double maxPeakOccupancy = 0.01;
@@ -382,7 +382,7 @@
this.createOccupancyPlotStyle("Max Sample Number", sensor, false));
}
}
-
+
for (IPlotter plotter : plotters.values()) {
for (int regionN = 0; regionN < plotter.numberOfRegions(); regionN++) {
PlotterRegion region = ((PlotterRegion) ((Plotter) plotter).region(regionN));
@@ -392,7 +392,7 @@
region.getPanel().addMouseListener(new PopupPlotterListener(region));
}
plotter.show();
- }
+ }
}
private boolean passTriggerFilter(List<GenericObject> triggerBanks) {
@@ -511,7 +511,7 @@
}
}
}
-
+
if (plotters.get("Occupancy") != null) {
plotters.get("Occupancy").refresh();
}
@@ -532,17 +532,17 @@
maxSampleStatus.setStatus(StatusCode.ALARM, "Sensor " + sensor.getName() + " looks out of time.");
}
IPlotterStyle plotterStyle = createOccupancyPlotStyle("Max Sample Number", sensor, true);
- region.clear();
- region.plot(maxSamplePlot, plotterStyle);
-// region.applyStyle(plotterStyle);
+// region.clear();
+// region.plot(maxSamplePlot, plotterStyle);
+ region.applyStyle(plotterStyle);
// region.style().regionBoxStyle().backgroundStyle().setColor("246, 34, 34, 1");
// setBackgroundColor(region.style(),sensor.isAxial(),true);
} else {
IPlotterStyle plotterStyle = createOccupancyPlotStyle("Max Sample Number", sensor, false);
- region.clear();
- region.plot(maxSamplePlot, plotterStyle);
-// region.applyStyle(plotterStyle);
+// region.clear();
+// region.plot(maxSamplePlot, plotterStyle);
+ region.applyStyle(plotterStyle);
// setBackgroundColor(region.style(),sensor.isAxial(),false);
}
}
@@ -576,15 +576,15 @@
occupancyStatus.setStatus(StatusCode.ALARM, "Sensor " + sensor.getName() + " occupancy abnormal.");
}
IPlotterStyle plotterStyle = createOccupancyPlotStyle("Max Sample Number", sensor, true);
- region.clear();
- region.plot(occupancyPlot, plotterStyle);
-// region.applyStyle(plotterStyle);
+// region.clear();
+// region.plot(occupancyPlot, plotterStyle);
+ region.applyStyle(plotterStyle);
} else {
IPlotterStyle plotterStyle = createOccupancyPlotStyle("Max Sample Number", sensor, false);
- region.clear();
- region.plot(occupancyPlot, plotterStyle);
-// region.applyStyle(plotterStyle);
+// region.clear();
+// region.plot(occupancyPlot, plotterStyle);
+ region.applyStyle(plotterStyle);
}
}
if (isSystemOK) {
@@ -616,7 +616,7 @@
if (apvOccupancy[i] < 0.1 * peakOccupancy || apvOccupancy[i] < minPeakOccupancy) {
continue; //skip through the tail end of the sensor
}
- if (apvOccupancy[i] > apvOccupancy[i - 1]) {
+ if (0.9 * apvOccupancy[i] > apvOccupancy[i - 1]) {
System.out.println("occupancy not monotonic");
return false;
}
@@ -626,7 +626,7 @@
if (apvOccupancy[i] < 0.1 * peakOccupancy || apvOccupancy[i] < minPeakOccupancy) {
continue; //skip through the tail end of the sensor
}
- if (apvOccupancy[i] > apvOccupancy[i + 1]) {
+ if (0.9 * apvOccupancy[i] > apvOccupancy[i + 1]) {
System.out.println("occupancy not monotonic");
return false;
}
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SvtClusterPlots.java Fri May 15 03:18:48 2015
@@ -301,7 +301,7 @@
}
clusterTimePlots.get(sensor.getName()).fill(cluster.getTime());
- hitTimeTrigTimePlots1D[(int) (event.getTimeStamp() / 4) % 6].fill(cluster.getTime());
+ hitTimeTrigTimePlots1D[(int) ((event.getTimeStamp() / 4) % 6)].fill(cluster.getTime());
if (sensor.isTopLayer()) {
hitTimeTrigTimePlots.get("Top").fill(cluster.getTime(), event.getTimeStamp() % 24);
} else {
Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java
=============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java (original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackTimePlots.java Fri May 15 03:18:48 2015
@@ -48,11 +48,12 @@
private IHistogram2D[] trackTimeMinMax = new IHistogram2D[4];
private static final String subdetectorName = "Tracker";
- int nlayers=12;
-
- public void setTrackCollectionName(String name){
- this.trackCollectionName=name;
- }
+ int nlayers = 12;
+
+ public void setTrackCollectionName(String name) {
+ this.trackCollectionName = name;
+ }
+
@Override
protected void detectorChanged(Detector detector) {
@@ -70,14 +71,13 @@
//style2d.zAxisStyle().setParameter("scale", "log");
style2d.zAxisStyle().setVisible(false);
style2d.dataBoxStyle().setVisible(false);
-
-
+
IPlotterStyle styleOverlay = store.getStyle("DefaultHistogram1DStyle");
styleOverlay.dataStyle().errorBarStyle().setVisible(true);
- styleOverlay.dataStyle().fillStyle().setVisible(false);
+ styleOverlay.dataStyle().fillStyle().setVisible(false);
styleOverlay.legendBoxStyle().setVisible(false);
styleOverlay.dataStyle().outlineStyle().setVisible(false);
-
+
plotter = fac.create("Hit Times");
plotter.createRegions(3, 4);
@@ -110,16 +110,14 @@
plot(plotter3, trackHitT0[module][layer], styleOverlay, region);
trackHitDt[module][layer] = aida.histogram1D(sensor.getName() + "_trackHit_dt", 50, -20, 20.0);
plot(plotter4, trackHitDt[module][layer], styleOverlay, region);
-
- }
-
-
-
- for (int i=0; i<nlayers;i++) {
- int region = computePlotterRegion(i);
- trackHit2D[i] = aida.histogram2D("Layer "+i+" trackHit vs dt", 75, -50, 100.0, 50, -20, 20.0);
+
+ }
+
+ for (int i = 0; i < nlayers; i++) {
+ int region = computePlotterRegion(i);
+ trackHit2D[i] = aida.histogram2D("Layer " + i + " trackHit vs dt", 75, -50, 100.0, 50, -20, 20.0);
plot(plotter5, trackHit2D[i], style2d, region);
- trackHitDtChan[i] = aida.histogram2D("Layer "+i+" dt vs position", 200, -20, 20, 50, -20, 20.0);
+ trackHitDtChan[i] = aida.histogram2D("Layer " + i + " dt vs position", 200, -20, 20, 50, -20, 20.0);
plot(plotter6, trackHitDtChan[i], style2d, region);
}
plotter.show();
@@ -131,7 +129,7 @@
for (int module = 0; module < 2; module++) {
trackT0[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Time", 75, -50, 100.0);
plot(plotter2, trackT0[module], null, module);
- trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 33, -1, 32);
+ trackTrigTime[module] = aida.histogram2D((module == 0 ? "Top" : "Bottom") + " Track Time vs. Trig Time", 75, -50, 100.0, 6, -2, 22);
plot(plotter2, trackTrigTime[module], style2d, module + 2);
trackTimeRange[module] = aida.histogram1D((module == 0 ? "Top" : "Bottom") + " Track Hit Time Range", 75, 0, 30.0);
@@ -148,47 +146,9 @@
this.hitCollection = hitCollection;
}
-
-
@Override
public void process(EventHeader event) {
- int orTrig = 0;
- int topTrig = 0;
- int botTrig = 0;
-
- int orTrigTime = -1;
- int topTrigTime = -1;
- int botTrigTime = -1;
- if (event.hasCollection(GenericObject.class, "TriggerBank")) {
- List<GenericObject> triggerList = event.get(GenericObject.class, "TriggerBank");
- for (GenericObject data : triggerList)
- if (AbstractIntData.getTag(data) == TestRunTriggerData.BANK_TAG) {
- TestRunTriggerData triggerData = new TestRunTriggerData(data);
-
- orTrig = triggerData.getOrTrig();
- if (orTrig != 0)
- for (int i = 0; i < 32; i++)
- if ((1 << (31 - i) & orTrig) != 0) {
- orTrigTime = i;
- break;
- }
- topTrig = triggerData.getTopTrig();
- if (topTrig != 0)
- for (int i = 0; i < 32; i++)
- if ((1 << (31 - i) & topTrig) != 0) {
- topTrigTime = i;
- break;
- }
- botTrig = triggerData.getBotTrig();
- if (botTrig != 0)
- for (int i = 0; i < 32; i++)
- if ((1 << (31 - i) & botTrig) != 0) {
- botTrigTime = i;
- break;
- }
- break;
- }
- }
+ int trigTime = (int) (event.getTimeStamp() % 24);
//===> IIdentifierHelper helper = SvtUtils.getInstance().getHelper();
List<SiTrackerHitStrip1D> hits = event.get(SiTrackerHitStrip1D.class, hitCollection);
@@ -206,40 +166,46 @@
List<Track> tracks = event.get(Track.class, trackCollectionName);
for (Track track : tracks) {
int trackModule = -1;
- if (track.getTrackerHits().get(0).getPosition()[2] > 0)
+ if (track.getTrackerHits().get(0).getPosition()[2] > 0) {
trackModule = 0;
- else
+ } else {
trackModule = 1;
+ }
double minTime = Double.POSITIVE_INFINITY;
double maxTime = Double.NEGATIVE_INFINITY;
int hitCount = 0;
double trackTime = 0;
- for (TrackerHit hitCross : track.getTrackerHits())
+ for (TrackerHit hitCross : track.getTrackerHits()) {
for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
int layer = hit.layer();
trackHitT0[trackModule][layer - 1].fill(hit.dEdx() / DopedSilicon.ENERGY_EHPAIR);
trackTime += hit.time();
hitCount++;
- if (hit.time() > maxTime)
+ if (hit.time() > maxTime) {
maxTime = hit.time();
- if (hit.time() < minTime)
+ }
+ if (hit.time() < minTime) {
minTime = hit.time();
+ }
}
+ }
trackTimeMinMax[trackModule].fill(minTime, maxTime);
trackTimeRange[trackModule].fill(maxTime - minTime);
trackTime /= hitCount;
trackT0[trackModule].fill(trackTime);
- if (trackModule == 0)
- trackTrigTime[trackModule].fill(trackTime, topTrigTime);
- else
- trackTrigTime[trackModule].fill(trackTime, botTrigTime);
- for (TrackerHit hitCross : track.getTrackerHits())
+ if (trackModule == 0) {
+ trackTrigTime[trackModule].fill(trackTime, trigTime);
+ } else {
+ trackTrigTime[trackModule].fill(trackTime, trigTime);
+ }
+ for (TrackerHit hitCross : track.getTrackerHits()) {
for (HelicalTrackStrip hit : ((HelicalTrackCross) hitCross).getStrips()) {
int layer = hit.layer();
trackHitDt[trackModule][layer - 1].fill(hit.time() - trackTime);
trackHit2D[layer - 1].fill(trackTime, hit.time() - trackTime);
trackHitDtChan[layer - 1].fill(hit.umeas(), hit.time() - trackTime);
}
+ }
}
}
@@ -264,42 +230,57 @@
//and assume plotter is split in 3 columns, 4 rows...L0-5 on top 2 rows; L6-11 on bottom 2
private int computePlotterRegion(int layer) {
- if (layer == 0)
+ if (layer == 0) {
return 0;
- if (layer == 1)
+ }
+ if (layer == 1) {
return 1;
- if (layer == 2)
+ }
+ if (layer == 2) {
return 4;
- if (layer == 3)
+ }
+ if (layer == 3) {
return 5;
- if (layer == 4)
+ }
+ if (layer == 4) {
return 8;
- if (layer == 5)
+ }
+ if (layer == 5) {
return 9;
-
- if (layer == 6)
+ }
+
+ if (layer == 6) {
return 2;
- if (layer == 7)
+ }
+ if (layer == 7) {
return 3;
- if (layer == 8)
+ }
+ if (layer == 8) {
return 6;
- if (layer == 9)
+ }
+ if (layer == 9) {
return 7;
- if (layer == 10)
+ }
+ if (layer == 10) {
return 10;
- if (layer == 11)
+ }
+ if (layer == 11) {
return 11;
+ }
return -1;
}
-
- private String getColor(int module){
- String color="Black";
- if(module==1)
- color="Green";
- if(module==2)
- color="Blue";
- if(module==3)
- color="Red";
+
+ private String getColor(int module) {
+ String color = "Black";
+ if (module == 1) {
+ color = "Green";
+ }
+ if (module == 2) {
+ color = "Blue";
+ }
+ if (module == 3) {
+ color = "Red";
+ }
return color;
}
}
Modified: java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconOutsideIn.lcsim
=============================================================================
--- java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconOutsideIn.lcsim (original)
+++ java/trunk/steering-files/src/main/resources/org/hps/steering/recon/EngineeringRun2015FullReconOutsideIn.lcsim Fri May 15 03:18:48 2015
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
<!--
- Offline reconstruction for 2015 (engineering run with SVT+ECal) data.
+ Offline reconstruction for 2015 (engineering run with SVT+ECal) data, using outside-in tracking strategy optimized for larger opening angles.
@author Sho Uemura <[log in to unmask]>
-->
<execute>
@@ -47,7 +47,7 @@
<debug>false</debug>
<clusterTimeCut>12.0</clusterTimeCut>
<maxDt>16.0</maxDt>
- <!--<clusterAmplitudeCut>600.0</clusterAmplitudeCut>-->
+ <clusterAmplitudeCut>400.0</clusterAmplitudeCut>
<maxSeperation>20.0</maxSeperation>
<tolerance>1.0</tolerance>
</driver>
Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java
=============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java (original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/RawTrackerHitFitterDriver.java Fri May 15 03:18:48 2015
@@ -35,7 +35,7 @@
private boolean useTruthTime = false;
private boolean subtractTOF = false;
private boolean subtractTriggerTime = false;
- private int triggerPhaseOffset = 4;
+ private int triggerPhaseOffset = 3;
private boolean correctChanT0 = true;
/**
@@ -147,7 +147,7 @@
fit.setT0(fit.getT0() - timeOffset);
if (subtractTriggerTime) {
- fit.setT0(fit.getT0() - (((event.getTimeStamp() + 4 * triggerPhaseOffset) % 24) - 12));
+ fit.setT0(fit.getT0() - (((event.getTimeStamp() - 4 * triggerPhaseOffset) % 24) - 12));
}
if (correctChanT0) {
fit.setT0(fit.getT0() - sensor.getShapeFitParameters(strip)[HpsSiSensor.T0_INDEX]);
Added: java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java (added)
+++ java/trunk/users/src/main/java/org/hps/users/meeg/SVTSmallHitsDriver.java Fri May 15 03:18:48 2015
@@ -0,0 +1,91 @@
+package org.hps.users.meeg;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author uemura
+ */
+public class SVTSmallHitsDriver extends Driver {
+
+ private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
+ private long previousTimestamp = 0;
+ private boolean printADCValues = false;
+ Map<HpsSiSensor, Set<Integer>> hitMap;
+
+ public void setPrintADCValues(boolean printADCValues) {
+ this.printADCValues = printADCValues;
+ }
+
+ @Override
+ protected void process(EventHeader event) {
+ if (event.hasCollection(RawTrackerHit.class, rawTrackerHitCollectionName)) {
+ // Get RawTrackerHit collection from event.
+ List<RawTrackerHit> rawTrackerHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
+ Map<String, Integer> smallHitCounts = new HashMap<String, Integer>();
+ int smallHitCount = 0;
+ hitMap = new HashMap<HpsSiSensor, Set<Integer>>();
+
+ for (RawTrackerHit hit : rawTrackerHits) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ Set<Integer> hitStrips = hitMap.get(sensor);
+ if (hitStrips == null) {
+ hitStrips = new HashSet<Integer>();
+ hitMap.put(sensor, hitStrips);
+ }
+ int strip = hit.getIdentifierFieldValue("strip");
+ hitStrips.add(strip);
+ }
+
+ for (RawTrackerHit hit : rawTrackerHits) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ int strip = hit.getIdentifierFieldValue("strip");
+ double pedestal = sensor.getPedestal(strip, 0);
+
+ if (isSmallHit(hit)) {
+ if (printADCValues) {
+ System.out.format("%s %d %f %f %f %f %f %f\n", sensor.getName(), strip, hit.getADCValues()[0] - pedestal, hit.getADCValues()[1] - pedestal, hit.getADCValues()[2] - pedestal, hit.getADCValues()[3] - pedestal, hit.getADCValues()[4] - pedestal, hit.getADCValues()[5] - pedestal);
+ }
+ smallHitCount++;
+ Integer count = smallHitCounts.get(sensor.getName());
+ if (count == null) {
+ count = 0;
+ }
+ smallHitCounts.put(sensor.getName(), count + 1);
+ }
+ }
+ System.out.format("%d %d %d %d ", event.getEventNumber(), event.getTimeStamp(), event.getTimeStamp() - previousTimestamp, smallHitCount);
+ previousTimestamp = event.getTimeStamp();
+ for (String sensorName : smallHitCounts.keySet()) {
+ System.out.format("%s:%d ", sensorName, smallHitCounts.get(sensorName));
+ }
+ System.out.println();
+ }
+ }
+
+ private boolean isSmallHit(RawTrackerHit hit) {
+ HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
+ int strip = hit.getIdentifierFieldValue("strip");
+ double pedestal = sensor.getPedestal(strip, 0);
+ double noise = sensor.getNoise(strip, 0);
+
+ if (hitMap.get(sensor) != null && (hitMap.get(sensor).contains(strip - 1) || hitMap.get(sensor).contains(strip + 1))) {
+ return false;
+ }
+ for (int i = 0; i < 6; i++) {
+ if (hit.getADCValues()[i] > pedestal + 4.0 * noise) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
|