Author: [log in to unmask] Date: Thu Apr 23 16:28:54 2015 New Revision: 2804 Log: Add ability to look at the occupancies in a given window. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SensorOccupancyPlotsDriver.java 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 Thu Apr 23 16:28:54 2015 @@ -57,6 +57,8 @@ String rootFile = null; + private int maxSamplePosition = -1; + private int timeWindowWeight = 1; private int eventCount = 0; private int eventRefreshRate = 1; private int runNumber = -1; @@ -76,6 +78,14 @@ public void setEnablePositionPlots(boolean enablePositionPlots) { this.enablePositionPlots = enablePositionPlots; + } + + public void setMaxSamplePosition(int maxSamplePosition) { + this.maxSamplePosition = maxSamplePosition; + } + + public void setTimeWindowWeight(int timeWindowWeight) { + this.timeWindowWeight = timeWindowWeight; } private int computePlotterRegion(HpsSiSensor sensor) { @@ -186,7 +196,25 @@ // Increment strip hit count. for (RawTrackerHit rawHit : rawHits) { - occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement())[rawHit.getIdentifierFieldValue("strip")]++; + // Obtain the raw ADC samples for each of the six samples readout + short[] adcValues = rawHit.getADCValues(); + + // Find the sample that has the largest amplitude. This should + // correspond to the peak of the shaper signal if the SVT is timed + // in correctly. Otherwise, the maximum sample value will default + // to 0. + int maxAmplitude = 0; + int maxSamplePositionFound = -1; + for (int sampleN = 0; sampleN < 6; sampleN++) { + if (adcValues[sampleN] > maxAmplitude) { + maxAmplitude = adcValues[sampleN]; + maxSamplePositionFound = sampleN; + } + } + + if (maxSamplePosition == -1 || maxSamplePosition == maxSamplePositionFound) { + occupancyMap.get((HpsSiSensor) rawHit.getDetectorElement())[rawHit.getIdentifierFieldValue("strip")]++; + } } // Plot strip occupancies. @@ -197,6 +225,7 @@ if (enablePositionPlots) occupancyVPositionPlots.get(sensor).reset(); for (int channel = 0; channel < strips.length; channel++) { double stripOccupancy = (double) strips[channel] / (double) eventCount; + stripOccupancy /= this.timeWindowWeight; occupancyPlots.get(sensor).fill(channel, stripOccupancy); if (enablePositionPlots) {