1 package org.lcsim.plugin.browser;
2
3
4
5 import org.lcsim.event.CalorimeterHit;
6 import org.lcsim.event.SimCalorimeterHit;
7 import org.lcsim.geometry.IDDecoder;
8
9
10
11
12 class CalorimeterHitTableModel extends CellIDTableModel
13 {
14 private static final String[] defaultColumns =
15 { "id", "type", "raw E (GeV)", "corr E (GeV)", "E error", "X (mm)", "Y (mm)", "Z (mm)", "time (ns)" };
16
17 CalorimeterHitTableModel()
18 {
19 super(defaultColumns);
20 }
21
22 public boolean canDisplay(Class c)
23 {
24 if(SimCalorimeterHit.class.isAssignableFrom(c)) return false;
25 return CalorimeterHit.class.isAssignableFrom(c);
26 }
27
28 public Class getColumnClass(int row)
29 {
30 return row < getFieldCount() ? (getIDDecoder() == null) ? Long.class : Integer.class : Double.class;
31 }
32
33 public Object getValueAt(int row, int column)
34 {
35 CalorimeterHit hit = (CalorimeterHit) getHit(row);
36 int fieldCount = getFieldCount();
37
38 if (column < fieldCount)
39 {
40 IDDecoder decoder = getIDDecoder();
41 if (decoder != null) decoder.setID(hit.getCellID());
42 return decoder == null ? hit.getCellID() : decoder.getValue(column);
43 }
44 else
45 {
46 switch (column - fieldCount)
47 {
48 case 0:
49 return hit.getType();
50 case 1:
51 try {
52 return hit.getRawEnergy();
53 } catch (Exception e) {
54 return 0.;
55 }
56 case 2:
57 return hit.getCorrectedEnergy();
58 case 3:
59 return hit.getEnergyError();
60 case 4:
61 return hit.getPosition()[0];
62 case 5:
63 return hit.getPosition()[1];
64 case 6:
65 return hit.getPosition()[2];
66 case 7:
67 return hit.getTime();
68 default:
69 return " ";
70 }
71 }
72 }
73 }