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
11
12
13
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
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 }