Print

Print


Commit in lcsim/src/org/lcsim/plugin/browser on MAIN
SimTrackerHitTableModel.java+37-131.2 -> 1.3
SimTracker hit ids are now decoded by the LCSim Event Browser similar to SimCalorimeterHits.

lcsim/src/org/lcsim/plugin/browser
SimTrackerHitTableModel.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- SimTrackerHitTableModel.java	17 Mar 2005 20:12:25 -0000	1.2
+++ SimTrackerHitTableModel.java	25 Jul 2005 22:04:54 -0000	1.3
@@ -5,6 +5,9 @@
 import java.util.List;
 import org.lcsim.event.EventHeader.LCMetaData;
 import org.lcsim.event.SimTrackerHit;
+import org.lcsim.geometry.TrackerIDDecoder;
+import org.lcsim.event.EventHeader.LCMetaData;
+import java.util.ArrayList;
 
 /**
  *
@@ -13,44 +16,65 @@
 class SimTrackerHitTableModel extends AbstractTableModel implements EventBrowserTableModel
 {
    private List hits;
-   private static final String[] columns = {"cellID","x","y","z","dedx","time"};
+   private static final String[] defaultColumns = {"x","y","z","dedx","time"};
+   private List<String> columns;
+   private TrackerIDDecoder decoder;
+   private LCMetaData meta;
 
    public boolean canDisplay(Class c)
    {
       return SimTrackerHit.class.isAssignableFrom(c);
    }
+   
    public void setData(LCMetaData meta, List hits)
    {
       this.hits = hits;
-      fireTableDataChanged();
+      this.meta = meta;
+      this.decoder = (TrackerIDDecoder) meta.getIDDecoder();
+                  
+      List oldColumns = columns;
+      columns = new ArrayList<String>();
+      for (int i=0; i<decoder.getFieldCount(); i++) columns.add(decoder.getFieldName(i));
+      for (int i=0; i<defaultColumns.length; i++) columns.add(defaultColumns[i]);
+      if (columns.equals(oldColumns)) fireTableDataChanged();
+      else super.fireTableStructureChanged();
    }
+   
    public int getRowCount()
    {
       return hits == null ? 0 : hits.size();
    }
+   
    public int getColumnCount()
    {
-      return columns.length;
+      return columns.size();
    }
+   
    public String getColumnName(int index)
    {
-      return columns[index];
+      return columns.get(index);
    }
-   public Class getColumnClass(int column)
+   
+   public Class getColumnClass(int row)
    {
-      return column == 0 ? String.class : Double.class;
+      return row < decoder.getFieldCount() ? Integer.class : Double.class;
    }
+   
    public Object getValueAt(int row, int column)
    {
       SimTrackerHit hit = (SimTrackerHit) hits.get(row);
-      switch (column)
+      decoder.setID(hit.getCellID());
+      if ( column < decoder.getFieldCount()) 
       {
-         case 0: return Integer.toHexString(hit.getCellID());
-         case 1: return hit.getPoint()[0];
-         case 2: return hit.getPoint()[1];
-         case 3: return hit.getPoint()[2];
-         case 4: return hit.getdEdx();
-         case 5: return hit.getTime();
+          return decoder.getValue(column);
+      }
+      else switch (column-decoder.getFieldCount() )
+      {         
+         case 0: return hit.getPoint()[0];
+         case 1: return hit.getPoint()[1];
+         case 2: return hit.getPoint()[2];
+         case 3: return hit.getdEdx();
+         case 4: return hit.getTime();
          default: return " ";
       }
    }
CVSspam 0.2.8