lcsim/src/org/lcsim/util/lcio
diff -u -r1.7 -r1.8
--- SIOCalorimeterHit.java 31 Oct 2006 17:28:45 -0000 1.7
+++ SIOCalorimeterHit.java 17 Aug 2007 23:56:55 -0000 1.8
@@ -12,73 +12,85 @@
* SIO-based I/O implementation of the CalorimeterHit interface
*
* @author Guilherme Lima
- * @version $Id: SIOCalorimeterHit.java,v 1.7 2006/10/31 17:28:45 tonyj Exp $
+ * @version $Id: SIOCalorimeterHit.java,v 1.8 2007/08/17 23:56:55 jeremy Exp $
*/
class SIOCalorimeterHit extends BaseCalorimeterHit
{
- SIOCalorimeterHit(SIOInputStream in, int flags, int version, LCMetaData meta) throws IOException
- {
- this.data = meta;
- int cellid0 = in.readInt();
- int cellid1 = 0;
- if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_ID1) || version==8) {
- cellid1 = in.readInt();
- }
- this.id = ((long) cellid1)<<32 | cellid0;
- this.rawEnergy = in.readFloat();
-
- if (version>1002 && (flags&(1<<LCIOConstants.RCHBIT_TIME)) != 0)
- {
- time = in.readFloat();
- }
- if ((flags & (1 << LCIOConstants.RCHBIT_LONG)) != 0)
- {
- position = new double[3];
- position[0] = in.readFloat();
- position[1] = in.readFloat();
- position[2] = in.readFloat();
- }
-
- if( version > 1002)
- {
- int type = in.readInt() ;
- Object tempHit = in.readPntr();
-
- // the logic has been reverted in v1.3 !
- if ( (flags & (1 << LCIOConstants.RCHBIT_NO_PTR)) == 0 ) in.readPTag(this) ;
- }
- else
- {
- if ( (flags & (1 << LCIOConstants.RCHBIT_NO_PTR)) != 0 ) in.readPTag(this) ;
- }
- }
-
- static void write(CalorimeterHit hit, SIOOutputStream out, int flags) throws IOException
- {
- long cellID = hit.getCellID();
- out.writeInt( (int)cellID );
-
- if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_ID1)) {
- out.writeInt((int) (cellID>>32));
- }
-
- out.writeFloat( (float)hit.getRawEnergy() );
-
- 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.writePntr(null);
- }
+ SIOCalorimeterHit(SIOInputStream in, int flags, int version, LCMetaData meta) throws IOException
+ {
+ this.data = meta;
+ int cellid0 = in.readInt();
+ int cellid1 = 0;
+ if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_ID1) || version==8) {
+ cellid1 = in.readInt();
+ }
+ this.id = ((long) cellid1)<<32 | cellid0;
+ this.rawEnergy = in.readFloat();
+
+ if (version>1002 && (flags&(1<<LCIOConstants.RCHBIT_TIME)) != 0)
+ {
+ time = in.readFloat();
+ }
+ if ((flags & (1 << LCIOConstants.RCHBIT_LONG)) != 0)
+ {
+ position = new double[3];
+ position[0] = in.readFloat();
+ position[1] = in.readFloat();
+ position[2] = in.readFloat();
+ }
+
+ if( version > 1002)
+ {
+ int type = in.readInt() ;
+ Object tempHit = in.readPntr();
+
+ // the logic has been reverted in v1.3 !
+ if ( (flags & (1 << LCIOConstants.RCHBIT_NO_PTR)) == 0 ) in.readPTag(this) ;
+ }
+ else
+ {
+ if ( (flags & (1 << LCIOConstants.RCHBIT_NO_PTR)) != 0 ) in.readPTag(this) ;
+ }
+ }
+
+ static void write(CalorimeterHit hit, SIOOutputStream out, int flags) throws IOException
+ {
+ long cellID = hit.getCellID();
+ out.writeInt( (int)cellID );
+
+ if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_ID1)) {
+ out.writeInt((int) (cellID>>32));
+ }
+
+ out.writeFloat( (float)hit.getRawEnergy() );
+
+ if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_TIME)) {
+ out.writeFloat( (float)hit.getTime() );
+ }
+
+ if ((flags & (1 << LCIOConstants.CHBIT_LONG)) != 0)
+ {
+ double[] pos;
+ if (hit.getPosition() != null)
+ pos = hit.getPosition();
+ else
+ pos = new double[3];
+ out.writeFloat((float) pos[0]);
+ out.writeFloat((float) pos[1]);
+ out.writeFloat((float) pos[2]);
+ }
+
+ // FIXME: No type in java CalorimeterHit... write out zero instead,
+ // otherwise output fsile 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.writePntr(null);
+ }
- out.writePTag( hit );
- }
+ out.writePTag( hit );
+ }
}