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.TPCHit;
8   
9   
10  /**
11   *
12   * @author Tony Johnson
13   * @version $Id: SIOTPCHit.java,v 1.2 2007/10/17 02:06:23 tonyj Exp $
14   */
15  class SIOTPCHit implements TPCHit
16  {
17     private int cellID;
18     private float time;
19     private float charge;
20     private int quality;
21     private int[] rawDataArray;
22     
23     SIOTPCHit(SIOInputStream in, int flags, int version) throws IOException
24     {
25        cellID = in.readInt();
26        time = in.readFloat();
27        charge = in.readFloat();
28        quality = in.readInt();
29        
30        if (LCIOUtil.bitTest(flags,LCIOConstants.TPCBIT_RAW))
31        {
32           int size = in.readInt() ;
33           rawDataArray = new int[ size ] ;
34           for (int i = 0; i < size; i++)
35           {
36              rawDataArray[i] = in.readInt() ;
37           }
38        }
39        
40        if( version > 1002 )
41        {
42           if ( LCIOUtil.bitTest(flags,LCIOConstants.TPCBIT_NO_PTR)) in.readPTag(this) ;
43        }
44        else
45        {
46           if ( !LCIOUtil.bitTest(flags,LCIOConstants.TPCBIT_NO_PTR)) in.readPTag(this) ;
47        }
48        
49     }
50     public int getRawDataWord(int i)
51     {
52        return rawDataArray[i];
53     }
54  
55     public double getTime()
56     {
57        return time;
58     }
59  
60     public int getQuality()
61     {
62        return quality;
63     }
64  
65     public int getNRawDataWords()
66     {
67        return rawDataArray.length;
68     }
69  
70     public double getCharge()
71     {
72        return charge;
73     }
74  
75     public int getCellID()
76     {
77        return cellID;
78     }
79     
80     static void write(TPCHit hit, SIOOutputStream out, int flags) throws IOException
81     {
82        out.writeInt(hit.getCellID());
83        out.writeFloat((float) hit.getTime());
84        out.writeFloat((float) hit.getCharge());
85        out.writeInt(hit.getQuality());
86        
87        if (LCIOUtil.bitTest(flags,LCIOConstants.TPCBIT_RAW))
88        {
89           out.writeInt( hit.getNRawDataWords() );
90           for (int i = 0; i < hit.getNRawDataWords() ; i++)
91           {
92              out.writeInt( hit.getRawDataWord(i) ) ;
93           }
94        }
95        if (!LCIOUtil.bitTest(flags,LCIOConstants.TPCBIT_NO_PTR)) out.writePTag(hit) ;
96     }
97  }