View Javadoc

1   package org.lcsim.lcio;
2   
3   import hep.io.sio.SIOInputStream;
4   import hep.io.sio.SIOOutputStream;
5   
6   import java.io.IOException;
7   import org.lcsim.event.RawCalorimeterHit;
8   
9   /**
10   * SIO-based I/O implementation of the RawCalorimeterHit interface
11   *
12   * @author Guilherme Lima
13   * @version $Id: SIORawCalorimeterHit.java,v 1.3 2007/10/17 02:06:23 tonyj Exp $
14   */
15  class SIORawCalorimeterHit implements RawCalorimeterHit
16  {
17     private int cellId0;
18     private int cellId1;
19     private int amplitude;
20     private int timeStamp;
21  
22     SIORawCalorimeterHit(SIOInputStream in, int flags, int version) throws IOException
23     {
24        cellId0 = in.readInt();
25        if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_ID1) || version==8) cellId1 = in.readInt();
26        else cellId1 = 0;
27  
28        amplitude = in.readInt();
29        if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_TIME)) timeStamp = in.readInt();
30        if (!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) in.readPTag(this);
31     }
32  
33     /**
34      * Raw energy deposited in Calorimeter Cell
35      */
36     public int getAmplitude() {
37        return amplitude;
38     }
39  
40     public long getCellID() {
41        return ((long) cellId1)<<32 | cellId0;
42     }
43  
44     public int getTimeStamp() {
45         return timeStamp;
46     }
47  
48     static void write(RawCalorimeterHit hit, SIOOutputStream out, int flags) throws IOException
49     {
50        long cellID = hit.getCellID();
51        out.writeInt((int) cellID);
52        if( LCIOUtil.bitTest( flags, LCIOConstants.RCHBIT_ID1)) out.writeInt((int) (cellID>>32));
53  
54        out.writeInt( hit.getAmplitude() );
55        if (LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_TIME)) out.writeInt( hit.getTimeStamp() );
56        if (!LCIOUtil.bitTest(flags,LCIOConstants.RCHBIT_NO_PTR)) out.writePTag(hit);
57     }
58  }