lcsim/src/org/lcsim/util/lcio
diff -u -r1.2 -r1.3
--- SIOCalorimeterHit.java 21 Jul 2005 01:48:24 -0000 1.2
+++ SIOCalorimeterHit.java 26 Jul 2005 23:46:56 -0000 1.3
@@ -5,12 +5,13 @@
import java.io.IOException;
import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.RawCalorimeterHit;
/**
* SIO-based I/O implementation of the CalorimeterHit interface
*
* @author Guilherme Lima
- * @version $Id: SIOCalorimeterHit.java,v 1.2 2005/07/21 01:48:24 tonyj Exp $
+ * @version $Id: SIOCalorimeterHit.java,v 1.3 2005/07/26 23:46:56 lima Exp $
*/
class SIOCalorimeterHit implements CalorimeterHit
{
@@ -18,20 +19,30 @@
private int _cellid1;
private float _energy;
private float _time;
-
+ private RawCalorimeterHit _rawhit;
+ private int _type;
SIOCalorimeterHit(SIOInputStream in, int flags, int version) throws IOException
{
_cellid0 = in.readInt();
- if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_ID1) || version==8) {
+ if( LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_ID1) || version==8) {
_cellid1 = in.readInt();
}
else _cellid1 = 0;
_energy = in.readFloat();
- _time = in.readFloat();
- if (!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) in.readPTag(this);
+ if( LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_TIME) || version==8) {
+ _time = in.readFloat();
+ }
+
+ _type = in.readInt();
+
+ if (!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) {
+ _rawhit = (RawCalorimeterHit)in.readPntr();
+ }
+
+ in.readPTag(this);
}
public long getCellID() {
@@ -61,16 +72,27 @@
{
long cellID = hit.getCellID();
out.writeInt( (int)cellID );
-
+
if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_ID1)) {
out.writeInt((int) (cellID>>32));
}
out.writeFloat( (float)hit.getEnergy() );
- out.writeFloat( (float)hit.getTime() );
- if(!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) {
- out.writePTag( hit );
- }
+ if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_TIME)) {
+ out.writeFloat( (float)hit.getTime() );
+ }
+
+ // FIXME: No type in java CalorimeterHit... write out zero instead,
+ // otherwise output file will be corrupted
+ out.writeInt( 0 );
+
+ // FIXME: Java CalorimeterHit interface does not support getRawHit()
+ if(!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) {
+ assert false : "Pointer to raw hit not implemented!";
+// out.writePntr( hit.getRawHit() );
+ }
+
+ out.writePTag( hit );
}
}