hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.8 -r1.9
--- ECalEvioReader.java 2 May 2012 00:39:40 -0000 1.8
+++ ECalEvioReader.java 2 May 2012 13:20:41 -0000 1.9
@@ -17,7 +17,7 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: ECalEvioReader.java,v 1.8 2012/05/02 00:39:40 meeg Exp $
+ * @version $Id: ECalEvioReader.java,v 1.9 2012/05/02 13:20:41 meeg Exp $
*/
public class ECalEvioReader extends EvioReader {
// Names of subdetectors.
@@ -53,33 +53,31 @@
}
for (BaseStructure slotBank : bank.getChildren()) {
CompositeData cdata = null;
- while (true) {
- try {
- cdata = slotBank.getCompositeData();
- } catch (EvioException e) {
- throw new RuntimeException(e);
- }
- if (slotBank.getHeader().getTag() != bankTag) {
- bankTag = slotBank.getHeader().getTag();
- System.out.printf("ECal format tag: 0x%x\n", bankTag);
- }
- switch (slotBank.getHeader().getTag()) {
- case EventConstants.ECAL_WINDOW_BANK_TAG:
- hits.addAll(makeWindowHits(cdata, crateBankTag));
- hitClass = RawTrackerHit.class;
- break;
- case EventConstants.ECAL_PULSE_BANK_TAG:
- hits.addAll(makePulseHits(cdata, crateBankTag));
- hitClass = RawTrackerHit.class;
- break;
- case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
- hits.addAll(makeIntegralHits(cdata, crateBankTag));
- hitClass = RawCalorimeterHit.class;
- break;
- default:
- throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
+ try {
+ cdata = slotBank.getCompositeData();
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
+ }
+ if (slotBank.getHeader().getTag() != bankTag) {
+ bankTag = slotBank.getHeader().getTag();
+ System.out.printf("ECal format tag: 0x%x\n", bankTag);
+ }
+ switch (slotBank.getHeader().getTag()) {
+ case EventConstants.ECAL_WINDOW_BANK_TAG:
+ hits.addAll(makeWindowHits(cdata, crateBankTag));
+ hitClass = RawTrackerHit.class;
+ break;
+ case EventConstants.ECAL_PULSE_BANK_TAG:
+ hits.addAll(makePulseHits(cdata, crateBankTag));
+ hitClass = RawTrackerHit.class;
+ break;
+ case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
+ hits.addAll(makeIntegralHits(cdata, crateBankTag));
+ hitClass = RawCalorimeterHit.class;
+ break;
+ default:
+ throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
- }
}
}
}
@@ -102,32 +100,37 @@
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();
+ 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(" channel=" + channel + "; nSamples=" + nSamples);
+ }
+ long daqID = HPSEcalConditions.getDaqID(crate, slot, channel);
+ Long id = HPSEcalConditions.daqToPhysicalID(daqID);
- int crate = bankTag;
- 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(" channel=" + channel + "; nSamples=" + nSamples);
- }
- 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();
- }
+ short[] adcValues = new short[nSamples];
+ for (int i = 0; i < nSamples; i++) {
+ adcValues[i] = cdata.getShort();
+ }
// if (debug) {
// System.out.println(" pulseTime=" + pulseTime + "; pulseIntegral=" + pulseIntegral);
// }
- hits.add(new BaseRawTrackerHit(id, 0, adcValues));
+ hits.add(new BaseRawTrackerHit(id, 0, adcValues));
+ }
+ } catch (IndexOutOfBoundsException e) {
+ break;
+ }
}
return hits;
}