hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.10 -r1.11
--- ECalEvioReader.java 2 May 2012 14:55:52 -0000 1.10
+++ ECalEvioReader.java 2 May 2012 16:53:28 -0000 1.11
@@ -17,7 +17,7 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: ECalEvioReader.java,v 1.10 2012/05/02 14:55:52 meeg Exp $
+ * @version $Id: ECalEvioReader.java,v 1.11 2012/05/02 16:53:28 meeg Exp $
*/
public class ECalEvioReader extends EvioReader {
// Names of subdetectors.
@@ -88,7 +88,7 @@
return foundHits;
}
- private List<BaseRawTrackerHit> makeWindowHits(CompositeData cdata, int bankTag) {
+ private List<BaseRawTrackerHit> makeWindowHits(CompositeData cdata, int crate) {
List<BaseRawTrackerHit> hits = new ArrayList<BaseRawTrackerHit>();
if (debug) {
int n = cdata.getNValues().size();
@@ -100,39 +100,34 @@
System.out.println("cdata.type[" + i + "]=" + cdata.getTypes().get(i));
}
}
- while (true) {
- try {
- int crate = bankTag;
- short slot = cdata.getByte();
- int trigger = cdata.getInt();
- long timestamp = cdata.getLong();
- int nchannels = cdata.getNValue();
+ while (cdata.index() < cdata.getItems().size()) {
+ short slot = cdata.getByte();
+ int trigger = cdata.getInt();
+ long timestamp = cdata.getLong();
+ int nchannels = cdata.getNValue();
+ if (debug) {
+ System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ }
+ for (int j = 0; j < nchannels; j++) {
+ short channel = cdata.getByte();
+ int nSamples = cdata.getNValue();
if (debug) {
- System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ System.out.println(" channel=" + channel + "; nSamples=" + nSamples);
}
- for (int j = 0; j < nchannels; j++) {
- short channel = cdata.getByte();
- int nSamples = cdata.getNValue();
- if (debug) {
- System.out.println(" channel=" + channel + "; nSamples=" + nSamples);
- }
- long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
- Long id = HPSEcalConditions.daqToPhysicalID(daqID);
+ long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
+ Long id = HPSEcalConditions.daqToPhysicalID(daqID);
- short[] adcValues = new short[nSamples];
- for (int i = 0; i < nSamples; i++) {
- adcValues[i] = cdata.getShort();
- }
- hits.add(new BaseRawTrackerHit(id, 0, adcValues));
+ short[] adcValues = new short[nSamples];
+ for (int i = 0; i < nSamples; i++) {
+ adcValues[i] = cdata.getShort();
}
- } catch (IndexOutOfBoundsException e) {
- break;
+ hits.add(new BaseRawTrackerHit(id, 0, adcValues));
}
}
return hits;
}
- private List<BaseRawTrackerHit> makePulseHits(CompositeData cdata, int bankTag) {
+ private List<BaseRawTrackerHit> makePulseHits(CompositeData cdata, int crate) {
List<BaseRawTrackerHit> hits = new ArrayList<BaseRawTrackerHit>();
if (debug) {
int n = cdata.getNValues().size();
@@ -144,44 +139,38 @@
System.out.println("cdata.type[" + i + "]=" + cdata.getTypes().get(i));
}
}
-
- while (true) {
- try {
- int crate = bankTag;
- short slot = cdata.getByte();
- int trigger = cdata.getInt();
- long timestamp = cdata.getLong();
- int nchannels = cdata.getNValue();
+ while (cdata.index() < cdata.getItems().size()) {
+ short slot = cdata.getByte();
+ int trigger = cdata.getInt();
+ long timestamp = cdata.getLong();
+ int nchannels = cdata.getNValue();
+ if (debug) {
+ System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ }
+ for (int j = 0; j < nchannels; j++) {
+ short channel = cdata.getByte();
+ int npulses = cdata.getNValue();
if (debug) {
- System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ System.out.println(" channel=" + channel + "; npulses=" + npulses);
}
- for (int j = 0; j < nchannels; j++) {
- short channel = cdata.getByte();
- int npulses = cdata.getNValue();
- if (debug) {
- System.out.println(" channel=" + channel + "; npulses=" + npulses);
- }
- long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
- Long id = HPSEcalConditions.daqToPhysicalID(daqID);
+ long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
+ Long id = HPSEcalConditions.daqToPhysicalID(daqID);
- for (int k = 0; k < npulses; k++) {
- short pulseNum = cdata.getByte();
- int sampleCount = cdata.getNValue();
- short[] adcValues = new short[sampleCount];
- for (int i = 0; i < sampleCount; i++) {
- adcValues[i] = cdata.getShort();
- }
- hits.add(new BaseRawTrackerHit(id, pulseNum, adcValues));
+ for (int k = 0; k < npulses; k++) {
+ short pulseNum = cdata.getByte();
+ int sampleCount = cdata.getNValue();
+ short[] adcValues = new short[sampleCount];
+ for (int i = 0; i < sampleCount; i++) {
+ adcValues[i] = cdata.getShort();
}
+ hits.add(new BaseRawTrackerHit(id, pulseNum, adcValues));
}
- } catch (IndexOutOfBoundsException e) {
- break;
}
}
return hits;
}
- private List<RawCalorimeterHit> makeIntegralHits(CompositeData cdata, int bankTag) {
+ private List<RawCalorimeterHit> makeIntegralHits(CompositeData cdata, int crate) {
List<RawCalorimeterHit> hits = new ArrayList<RawCalorimeterHit>();
if (debug) {
int n = cdata.getNValues().size();
@@ -193,37 +182,31 @@
System.out.println("cdata.type[" + i + "]=" + cdata.getTypes().get(i));
}
}
-
- while (true) {
- try {
- int crate = bankTag;
- short slot = cdata.getByte();
- int trigger = cdata.getInt();
- long timestamp = cdata.getLong();
- int nchannels = cdata.getNValue();
+ while (cdata.index()+1 < cdata.getItems().size()) { //the +1 is a hack because sometimes an extra byte gets read (padding)
+ short slot = cdata.getByte();
+ int trigger = cdata.getInt();
+ long timestamp = cdata.getLong();
+ int nchannels = cdata.getNValue();
+ if (debug) {
+ System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ }
+ for (int j = 0; j < nchannels; j++) {
+ short channel = cdata.getByte();
+ int npulses = cdata.getNValue();
if (debug) {
- System.out.println("slot#=" + slot + "; trigger=" + trigger + "; timestamp=" + timestamp + "; nchannels=" + nchannels);
+ System.out.println(" channel=" + channel + "; npulses=" + npulses);
}
- for (int j = 0; j < nchannels; j++) {
- short channel = cdata.getByte();
- int npulses = cdata.getNValue();
- if (debug) {
- System.out.println(" channel=" + channel + "; npulses=" + npulses);
- }
- long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
- Long id = HPSEcalConditions.daqToPhysicalID(daqID);
+ long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
+ Long id = HPSEcalConditions.daqToPhysicalID(daqID);
- for (int k = 0; k < npulses; k++) {
- short pulseTime = cdata.getShort();
- int pulseIntegral = cdata.getInt();
- if (debug) {
- System.out.println(" pulseTime=" + pulseTime + "; pulseIntegral=" + pulseIntegral);
- }
- hits.add(new BaseRawCalorimeterHit(id, pulseIntegral, pulseTime));
+ for (int k = 0; k < npulses; k++) {
+ short pulseTime = cdata.getShort();
+ int pulseIntegral = cdata.getInt();
+ if (debug) {
+ System.out.println(" pulseTime=" + pulseTime + "; pulseIntegral=" + pulseIntegral);
}
+ hits.add(new BaseRawCalorimeterHit(id, pulseIntegral, pulseTime));
}
- } catch (IndexOutOfBoundsException e) {
- break;
}
}
return hits;
hps-java/src/main/java/org/lcsim/hps/recon/ecal
diff -u -r1.2 -r1.3
--- HPSEcalConditions.java 2 May 2012 14:55:52 -0000 1.2
+++ HPSEcalConditions.java 2 May 2012 16:53:29 -0000 1.3
@@ -14,7 +14,7 @@
/**
*
* @author meeg
- * @version $Id: HPSEcalConditions.java,v 1.2 2012/05/02 14:55:52 meeg Exp $
+ * @version $Id: HPSEcalConditions.java,v 1.3 2012/05/02 16:53:29 meeg Exp $
*/
public class HPSEcalConditions {
@@ -26,7 +26,7 @@
private static HashMap<Long, Integer> daqToPedestalMap = new HashMap<Long, Integer>();
private static HashMap<Long, Double> daqToNoiseMap = new HashMap<Long, Double>();
private static boolean pedestalsLoaded = false;
-
+
private HPSEcalConditions() {
}
@@ -88,7 +88,7 @@
public static void fillDaqCellMap(Subdetector ecal) {
System.out.println("reading DAQ map");
-
+
IIdentifierHelper helper = ecal.getDetectorElement().getIdentifierHelper();
IExpandedIdentifier expId = new ExpandedIdentifier(helper.getIdentifierDictionary().getNumberOfFields());
expId.setValue(helper.getFieldIndex("system"), ecal.getSystemID());
@@ -163,4 +163,12 @@
public static Long daqToPhysicalID(long daqID) {
return daqToPhysicalMap.get(daqID);
}
+
+ public static Integer daqToPedestal(long daqID) {
+ return daqToPedestalMap.get(daqID);
+ }
+
+ public static Integer physicalToPedestal(long physicalID) {
+ return daqToPedestalMap.get(physicalToDaqMap.get(physicalID));
+ }
}
hps-java/src/main/java/org/lcsim/hps/monitoring/ecal
diff -u -r1.1 -r1.2
--- EcalEventMonitor.java 30 Apr 2012 18:46:59 -0000 1.1
+++ EcalEventMonitor.java 2 May 2012 16:53:29 -0000 1.2
@@ -12,6 +12,7 @@
import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Detector;
import org.lcsim.geometry.IDDecoder;
+import org.lcsim.hps.recon.ecal.HPSEcalConditions;
import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
@@ -26,10 +27,15 @@
Detector detector;
int eventRefreshRate = 1;
int eventn = 0;
+ int integralWindow = 0;
public EcalEventMonitor() {
}
+ public void setIntegralWindow(int integralWindow) {
+ this.integralWindow = integralWindow;
+ }
+
public void setEventRefreshRate(int eventRefreshRate) {
this.eventRefreshRate = eventRefreshRate;
}
@@ -72,6 +78,10 @@
}
public void process(EventHeader event) {
+ if (!HPSEcalConditions.pedestalsLoaded())
+ {
+ HPSEcalConditions.loadPedestals();
+ }
if (event.hasCollection(RawCalorimeterHit.class, inputCollectionName)) {
if (++eventn % eventRefreshRate != 0) {
return;
@@ -80,7 +90,8 @@
List<RawCalorimeterHit> hits = event.get(RawCalorimeterHit.class, inputCollectionName);
for (RawCalorimeterHit hit : hits) {
dec.setID(hit.getCellID());
- hitPlot.fill(dec.getValue("ix"), dec.getValue("iy"), hit.getAmplitude());
+ int pedestal = integralWindow * HPSEcalConditions.physicalToPedestal(hit.getCellID());
+ hitPlot.fill(dec.getValue("ix"), dec.getValue("iy"), hit.getAmplitude() - pedestal);
}
}
if (event.hasCollection(RawTrackerHit.class, inputCollectionName)) {