Print

Print


Commit in lcsim/src/org/lcsim/util/lcio on MAIN
SIOCalorimeterHit.java+77-651.7 -> 1.8
JM: Write position if CHBIT_LONG is set.

lcsim/src/org/lcsim/util/lcio
SIOCalorimeterHit.java 1.7 -> 1.8
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 );
+	}
 }
CVSspam 0.2.8