Commit in lcsim/src/org/lcsim/event on MAIN
HasMetaData.java+201.2 -> 1.3
Hit.java+8added 1.1
CalorimeterHit.java+6-171.9 -> 1.10
RawTrackerHit.java+2-21.8 -> 1.9
SimCalorimeterHit.java+7-21.5 -> 1.6
SimTrackerHit.java+3-241.18 -> 1.19
TPCHit.java+3-31.2 -> 1.3
Track.java+3-21.10 -> 1.11
TrackerData.java+3-31.1 -> 1.2
TrackerHit.java+1-21.5 -> 1.6
TrackerPulse.java+3-31.1 -> 1.2
base/BaseHit.java+70added 1.1
    /BaseCalorimeterHit.java+8-101.3 -> 1.4
    /BaseLCSimEvent.java+22-71.2 -> 1.3
    /BaseSimCalorimeterHit.java+1-11.2 -> 1.3
    /BaseSimTrackerHit.java+3-51.5 -> 1.6
    /AbstractSimHit.java-701.2 removed
    /HasIDDecoder.java-81.1 removed
    /HasMetaData.java-141.3 removed
    /HasSubdetector.java-81.1 removed
    /SimHit.java-91.1 removed
+163-190
2 added + 5 removed + 14 modified, total 21 files
JM: refactoring interfaces and base classes

lcsim/src/org/lcsim/event
HasMetaData.java 1.2 -> 1.3
diff -N HasMetaData.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HasMetaData.java	23 May 2008 06:53:35 -0000	1.3
@@ -0,0 +1,20 @@
+package org.lcsim.event;
+
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.geometry.Subdetector;
+
+/**
+ * A simple mixin interface for objects that have associated <code>LCMetaData</code>.
+ * @author jeremym
+ *
+ */
+public interface HasMetaData 
+{
+    public LCMetaData getMetaData();
+    public void setMetaData(LCMetaData meta);
+
+    // from LCMetaData
+    public Subdetector getSubdetector();
+    public IDDecoder getIDDecoder();  
+}

lcsim/src/org/lcsim/event
Hit.java added at 1.1
diff -N Hit.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ Hit.java	23 May 2008 06:53:35 -0000	1.1
@@ -0,0 +1,8 @@
+package org.lcsim.event;
+
+import org.lcsim.detector.HasDetectorElement;
+import org.lcsim.detector.identifier.Identifiable;
+
+public interface Hit 
+extends HasMetaData, HasDetectorElement, Identifiable
+{}

lcsim/src/org/lcsim/event
CalorimeterHit.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- CalorimeterHit.java	23 May 2008 03:39:51 -0000	1.9
+++ CalorimeterHit.java	23 May 2008 06:53:35 -0000	1.10
@@ -1,16 +1,17 @@
 package org.lcsim.event;
 
-import org.lcsim.event.base.HasMetaData;
 import org.lcsim.geometry.IDDecoder;
 import org.lcsim.geometry.Subdetector;
 
 /**
- * A hit in a calorimeter. 
+ * A hit in a calorimeter.
+ * The super-interface gives access to subdetector, identifiers, iddecoder, etc.
+ * @see org.lcsim.event.Hit
  * @author tonyj
- * @version $Id: CalorimeterHit.java,v 1.9 2008/05/23 03:39:51 jeremy Exp $
+ * @version $Id: CalorimeterHit.java,v 1.10 2008/05/23 06:53:35 jeremy Exp $
  */
 public interface CalorimeterHit
-extends HasMetaData
+extends Hit
 {
    /**
     * Raw energy deposited in calorimeter cell.
@@ -29,18 +30,6 @@
     */
    public long getCellID();
    
-   /** 
-    * Get the ID decoder for this hit.  All hits in a collection originally 
-    * share the same <code>IDDecoder</code>, but once hits have been combined
-    * into clusters, each hit may have its own <code>IDDecoder</code>.
-    */
-   public IDDecoder getIDDecoder();
-   
-   /**
-    * The subdetector corresponding to this hit.
-    */
-   public Subdetector getSubdetector();
-     
    /**
     * Returns time of the earliest energy contrib time in ns.
     * @return Hit time in ns.
@@ -53,4 +42,4 @@
     * the hit position from the hit ID.
     */
    public double[] getPosition();
-}
\ No newline at end of file
+}

lcsim/src/org/lcsim/event
RawTrackerHit.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- RawTrackerHit.java	15 May 2008 22:07:10 -0000	1.8
+++ RawTrackerHit.java	23 May 2008 06:53:35 -0000	1.9
@@ -9,7 +9,7 @@
  * A raw tracker hit, as expected in raw data from a real detector.
  * 
  * @author tonyj
- * @version $Id: RawTrackerHit.java,v 1.8 2008/05/15 22:07:10 jeremy Exp $
+ * @version $Id: RawTrackerHit.java,v 1.9 2008/05/23 06:53:35 jeremy Exp $
  */
 public interface RawTrackerHit
 extends Identifiable, HasDetectorElement
@@ -39,4 +39,4 @@
      * hit, or because there is no MC information.
      */  
     List<SimTrackerHit> getSimTrackerHit();
-}
\ No newline at end of file
+}

lcsim/src/org/lcsim/event
SimCalorimeterHit.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SimCalorimeterHit.java	6 Aug 2007 23:26:12 -0000	1.5
+++ SimCalorimeterHit.java	23 May 2008 06:53:35 -0000	1.6
@@ -2,27 +2,32 @@
 
 /**
  * Represents one simulated "hit" in a calorimeter
- * @version $Id: SimCalorimeterHit.java,v 1.5 2007/08/06 23:26:12 tonyj Exp $
+ * @version $Id: SimCalorimeterHit.java,v 1.6 2008/05/23 06:53:35 jeremy Exp $
  */
 
-public interface SimCalorimeterHit extends CalorimeterHit
+public interface SimCalorimeterHit 
+extends CalorimeterHit
 {
    /**
     * Returns the number of MC contributions to the hit.
     */
    int getMCParticleCount();
+
    /**
     * Returns the MCParticle that caused the shower responsible for this contribution to the hit.
     */
    MCParticle getMCParticle(int index);
+
    /**
     * Returns the energy in [GeV] of the i-th contribution to the hit.
     */
    double getContributedEnergy(int index);
+
    /**
     * Returns the time of the i-th in [ns] contribution to the hit.
     */
    public double getContributedTime(int index);
+
    /**
     * Returns the PDG code of the shower particle that caused this contribution.
     */

lcsim/src/org/lcsim/event
SimTrackerHit.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- SimTrackerHit.java	23 May 2008 03:39:52 -0000	1.18
+++ SimTrackerHit.java	23 May 2008 06:53:35 -0000	1.19
@@ -1,18 +1,10 @@
 package org.lcsim.event;
 
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.geometry.Subdetector;
-
-import org.lcsim.detector.HasDetectorElement;
-import org.lcsim.detector.identifier.Identifiable;
-import org.lcsim.event.base.HasMetaData;
-
 /**
- * @version $Id: SimTrackerHit.java,v 1.18 2008/05/23 03:39:52 jeremy Exp $
+ * @version $Id: SimTrackerHit.java,v 1.19 2008/05/23 06:53:35 jeremy Exp $
  */
 public interface SimTrackerHit
-extends HasDetectorElement, HasMetaData, Identifiable
+extends Hit
 {
    /** Layer containing hit */
    public int getLayer();
@@ -39,12 +31,6 @@
     */
    double getPathLength();
    
-   /** Returns the IDDecoder associated with this hit */
-   IDDecoder getIDDecoder();
-   
-   /** Using the IDDecoder, returns the Subdetector associated with this hit */
-   Subdetector getSubdetector();
-   
    /**
     * Get the start point.
     * @return The start point.
@@ -56,11 +42,4 @@
     * @return The end point.
     */   
    double[] getEndPoint();
-   
-   /**
-    * Assign an {@link IDetectorElement} to the hit.
-    * @param detectorElement The <code>DetectorElement</code> of this hit.
-    */
-   // FIXME: This should be setup during construction time via lookup into the detector store.
-   public void setDetectorElement(IDetectorElement detectorElement);
-}
\ No newline at end of file
+}

lcsim/src/org/lcsim/event
TPCHit.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TPCHit.java	28 Jun 2006 04:48:31 -0000	1.2
+++ TPCHit.java	23 May 2008 06:53:35 -0000	1.3
@@ -9,11 +9,11 @@
  *  with flag( bit LCIO::TPCBIT_PTR)==1.
  * 
  * @author gaede
- * @version $Id: TPCHit.java,v 1.2 2006/06/28 04:48:31 jstrube Exp $
+ * @version $Id: TPCHit.java,v 1.3 2008/05/23 06:53:35 jeremy Exp $
  */
 
-public interface TPCHit {
-
+public interface TPCHit 
+{
     /** Returns the detector specific cell id.
      */
     public int getCellID();

lcsim/src/org/lcsim/event
Track.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- Track.java	29 Nov 2007 02:25:55 -0000	1.10
+++ Track.java	23 May 2008 06:53:35 -0000	1.11
@@ -9,10 +9,11 @@
  * Represents a found (reconstructed) track
  * 
  * @author tonyj
- * @version $Id: Track.java,v 1.10 2007/11/29 02:25:55 jstrube Exp $
+ * @version $Id: Track.java,v 1.11 2008/05/23 06:53:35 jeremy Exp $
  */
 
-public interface Track {
+public interface Track 
+{
     int getCharge();
 
     double[] getReferencePoint();

lcsim/src/org/lcsim/event
TrackerData.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackerData.java	4 Jun 2007 06:50:40 -0000	1.1
+++ TrackerData.java	23 May 2008 06:53:35 -0000	1.2
@@ -5,11 +5,11 @@
  *  @see TrackerPulse
  * 
  * @author gaede
- * @version $Id: TrackerData.java,v 1.1 2007/06/04 06:50:40 tonyj Exp $
+ * @version $Id: TrackerData.java,v 1.2 2008/05/23 06:53:35 jeremy Exp $
  */
 
-public interface TrackerData {
-
+public interface TrackerData 
+{
     /** Returns the first detector specific (geometrical) cell id.
      */
     long getCellID();

lcsim/src/org/lcsim/event
TrackerHit.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- TrackerHit.java	13 Feb 2007 22:59:27 -0000	1.5
+++ TrackerHit.java	23 May 2008 06:53:35 -0000	1.6
@@ -5,7 +5,7 @@
 /** A generic tracker hit to be used by pattern recognition.
  *
  * @author gaede
- * @version $Id: TrackerHit.java,v 1.5 2007/02/13 22:59:27 tonyj Exp $
+ * @version $Id: TrackerHit.java,v 1.6 2008/05/23 06:53:35 jeremy Exp $
  */
 
 public interface TrackerHit
@@ -41,4 +41,3 @@
    // FixMe: See Dima's comments from 2/13/2007 LCD meeting
    
 } // class or interface
-

lcsim/src/org/lcsim/event
TrackerPulse.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackerPulse.java	4 Jun 2007 06:50:40 -0000	1.1
+++ TrackerPulse.java	23 May 2008 06:53:35 -0000	1.2
@@ -6,11 +6,11 @@
  *  @see TrackerData
  * 
  * @author gaede
- * @version $Id: TrackerPulse.java,v 1.1 2007/06/04 06:50:40 tonyj Exp $
+ * @version $Id: TrackerPulse.java,v 1.2 2008/05/23 06:53:35 jeremy Exp $
  */
 
-public interface TrackerPulse {
-
+public interface TrackerPulse 
+{
     /** Returns the first detector specific (geometrical) cell id.
      */
     long getCellID();

lcsim/src/org/lcsim/event/base
BaseHit.java added at 1.1
diff -N BaseHit.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ BaseHit.java	23 May 2008 06:53:35 -0000	1.1
@@ -0,0 +1,70 @@
+package org.lcsim.event.base;
+
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.event.Hit;
+
+public class BaseHit
+implements Hit
+{
+    protected LCMetaData meta;	
+    protected IExpandedIdentifier expId;
+    protected IIdentifier compactId;
+    protected IDetectorElement de;
+
+    public LCMetaData getMetaData() 
+    {
+        return meta;
+    }
+
+    public void setMetaData(LCMetaData meta) 
+    {
+        // Don't allow meta reset!  Override in subclass if you want.
+	if (this.meta == null) this.meta = meta;
+    }
+	
+    public Subdetector getSubdetector() 
+    {
+        return getIDDecoder().getSubdetector();
+    }
+
+    public IDetectorElement getDetectorElement() 
+    {
+        return de;
+    }
+	
+    public void setDetectorElement(IDetectorElement de)
+    {
+        this.de = de;
+    }
+
+    public IExpandedIdentifier getExpandedIdentifier() 
+    {
+        if (expId == null) 
+        {
+            expId = getIdentifierHelper().unpack(getIdentifier());
+	}
+	return expId;
+    }
+
+    public IIdentifier getIdentifier() 
+    {
+        return compactId;
+    }
+
+    public IIdentifierHelper getIdentifierHelper() 
+    {
+        return getSubdetector().getDetectorElement().getIdentifierHelper();
+    }
+
+    public IDDecoder getIDDecoder() 
+    {
+        return meta.getIDDecoder();
+    }
+}

lcsim/src/org/lcsim/event/base
BaseCalorimeterHit.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- BaseCalorimeterHit.java	23 May 2008 03:39:52 -0000	1.3
+++ BaseCalorimeterHit.java	23 May 2008 06:53:35 -0000	1.4
@@ -5,11 +5,10 @@
 import org.lcsim.geometry.IDDecoder;
 
 /**
- *
  * @author tonyj
  */
 public abstract class BaseCalorimeterHit 
-extends AbstractSimHit 
+extends BaseHit 
 implements CalorimeterHit 
 {       
     protected double rawEnergy;
@@ -54,25 +53,24 @@
     public int getLayerNumber() 
     {
         return getIDDecoder().getLayer();
-    }                
-    
+    }
+
     private void calculateCorrectedEnergy()
     {
         getIDDecoder().setID(id);
         corrEnergy = SamplingFractionManager.defaultInstance().getCorrectedEnergy(rawEnergy, getIDDecoder().getLayer(), getSubdetector());
     }
-    
+   
     private void calculatePosition()
     {       
-        position = new double[3];
-        
         if (getMetaData() != null) 
         {
-        	IDDecoder decoder = getIDDecoder();            
+            position = new double[3];
+       	    IDDecoder decoder = getIDDecoder();            
             decoder.setID(id);
             position[0] = decoder.getX();
             position[1] = decoder.getY();
             position[2] = decoder.getZ();
         }
-    }           
-}
\ No newline at end of file
+    }
+}

lcsim/src/org/lcsim/event/base
BaseLCSimEvent.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- BaseLCSimEvent.java	23 May 2008 03:39:52 -0000	1.2
+++ BaseLCSimEvent.java	23 May 2008 06:53:35 -0000	1.3
@@ -13,6 +13,7 @@
 import org.lcsim.conditions.ConditionsManager.ConditionsNotFoundException;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.HasMetaData;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.SimCalorimeterHit;
 import org.lcsim.event.SimTrackerHit;
@@ -170,18 +171,25 @@
         LCMetaData meta = new MetaData(name, type, flags, readoutName);
         metaDataMap.put(collection,meta);
 
-        // Only replace the existing readouts if a valid readout was given.
-        // Otherwise, preserve the original MetaData, e.g. for mixing hits
-        // from different collections.
         if (HasMetaData.class.isAssignableFrom(type))
         {
-            if (readoutName != null) 
+            HasMetaData hmd;
+            for (Object o : collection)
             {
-                for (Object o : collection)
-                {
+                if (o instanceof HasMetaData) {
+                    // some types of objects may ignore this if meta is already set
                     ((HasMetaData)o).setMetaData(meta);
                 }
+		    // FIXME: What happens if a hit belongs to 2 or more collections?  We wipe out the old collection's meta!
+            //        if (o instanceof HasIDDecoder) {
+            //            IDDecoder hitdec = ((HasIDDecoder)o).getIDDecoder();
+            //            if (hitdec.getIDDescription().toString().compareTo(descr) != 0) 
+            //                throw new RuntimeException(name + " - " + " - " + readoutName + " - " + hitdec.getIDDescription() + " is not equal to " + descr); 
+            //        }
+            //        ((HasMetaData)o).setMetaData(meta);
+            //    }
             }
+            //}
         }      
     }
     
@@ -240,6 +248,7 @@
         private Map<String, int[]> intMap;
         private Map<String, float[]> floatMap;
         private Map<String, String[]> stringMap;
+        private transient IDDecoder dec;
 
         MetaData(String name, Class type, int flags, String readoutName)
         {
@@ -273,7 +282,13 @@
             return type;
         }
 
-        public org.lcsim.geometry.IDDecoder getIDDecoder()
+        public  org.lcsim.geometry.IDDecoder getIDDecoder()
+        {
+            if (dec == null) dec = findIDDecoder();
+            return dec;
+        }
+
+        public org.lcsim.geometry.IDDecoder findIDDecoder()
         {
             // If the IDDecoder name is explicitly set then use it, otherwise 
             // use the name of the collection itself.

lcsim/src/org/lcsim/event/base
BaseSimCalorimeterHit.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- BaseSimCalorimeterHit.java	23 May 2008 03:36:09 -0000	1.2
+++ BaseSimCalorimeterHit.java	23 May 2008 06:53:35 -0000	1.3
@@ -84,4 +84,4 @@
     {
         return particle.length;
     }    
-}
\ No newline at end of file
+}

lcsim/src/org/lcsim/event/base
BaseSimTrackerHit.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- BaseSimTrackerHit.java	23 May 2008 03:39:52 -0000	1.5
+++ BaseSimTrackerHit.java	23 May 2008 06:53:35 -0000	1.6
@@ -13,9 +13,7 @@
  * An concrete implementation of SimTrackerHit.
  * @author jeremym
  */
-public abstract class BaseSimTrackerHit
-extends AbstractSimHit
-implements SimTrackerHit
+public abstract class BaseSimTrackerHit extends BaseHit implements SimTrackerHit
 {
     protected double[] position = new double[3];
     protected double[] momentum = new double[3];
@@ -85,7 +83,7 @@
     public int getLayer()
     {
         getIDDecoder().setID(getCellID());
-        return getIDDecoder().getValue("layer");
+        return getIDDecoder().getLayer();
     }
     
     public double[] getPoint() 
@@ -146,4 +144,4 @@
         startPoint = VecOp.add(midpoint,VecOp.mult(-1.0,half_length));
         endPoint = VecOp.add(midpoint,half_length);
     }                   
-}
\ No newline at end of file
+}

lcsim/src/org/lcsim/event/base
AbstractSimHit.java removed after 1.2
diff -N AbstractSimHit.java
--- AbstractSimHit.java	23 May 2008 04:17:13 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,70 +0,0 @@
-package org.lcsim.event.base;
-
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.EventHeader.LCMetaData;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.geometry.Subdetector;
-
-public class AbstractSimHit
-implements SimHit
-{
-	protected LCMetaData meta;	
-	protected IExpandedIdentifier expId;
-	protected IIdentifier compactId;
-	protected IDetectorElement de;
-
-	public LCMetaData getMetaData() 
-	{
-		return meta;
-	}
-
-	public void setMetaData(LCMetaData meta) 
-	{
-		this.meta = meta;		
-	}
-	
-	public Subdetector getSubdetector() 
-	{
-		return getIDDecoder().getSubdetector();
-	}
-
-	public IDetectorElement getDetectorElement() 
-	{
-		return de;
-	}
-	
-	// FIXME: Ideally, this should be protected or package level, but we 
-	//        need to call it from SimTrackerHitIdentifierReadoutDriver.
-	public void setDetectorElement(IDetectorElement de)
-	{
-		this.de = de;
-	}
-
-	public IExpandedIdentifier getExpandedIdentifier() 
-	{
-		if (expId == null) 
-	    {
-			expId = getIdentifierHelper().unpack(getIdentifier());
-	    }
-		return expId;
-	}
-
-	public IIdentifier getIdentifier() 
-	{
-		return compactId;
-	}
-
-	public IIdentifierHelper getIdentifierHelper() 
-	{
-		return getSubdetector().getDetectorElement().getIdentifierHelper();
-	}
-
-	public IDDecoder getIDDecoder() 
-	{
-		return meta.getIDDecoder();
-	}
-}

lcsim/src/org/lcsim/event/base
HasIDDecoder.java removed after 1.1
diff -N HasIDDecoder.java
--- HasIDDecoder.java	23 May 2008 03:39:52 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
-package org.lcsim.event.base;
-
-import org.lcsim.geometry.IDDecoder;
-
-public interface HasIDDecoder 
-{
-	public IDDecoder getIDDecoder();
-}

lcsim/src/org/lcsim/event/base
HasMetaData.java removed after 1.3
diff -N HasMetaData.java
--- HasMetaData.java	23 May 2008 04:25:52 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-package org.lcsim.event.base;
-
-import org.lcsim.event.EventHeader.LCMetaData;
-
-/**
- * A simple mixin interface for objects that have associated <code>LCMetaData</code>.
- * @author jeremym
- *
- */
-public interface HasMetaData 
-{
-	public LCMetaData getMetaData();	
-	public void setMetaData(LCMetaData meta);
-}
\ No newline at end of file

lcsim/src/org/lcsim/event/base
HasSubdetector.java removed after 1.1
diff -N HasSubdetector.java
--- HasSubdetector.java	23 May 2008 03:39:52 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,8 +0,0 @@
-package org.lcsim.event.base;
-
-import org.lcsim.geometry.Subdetector;
-
-public interface HasSubdetector
-{
-	public Subdetector getSubdetector();
-}

lcsim/src/org/lcsim/event/base
SimHit.java removed after 1.1
diff -N SimHit.java
--- SimHit.java	23 May 2008 03:39:52 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,9 +0,0 @@
-package org.lcsim.event.base;
-
-import org.lcsim.detector.HasDetectorElement;
-import org.lcsim.detector.identifier.Identifiable;
-
-public interface SimHit 
-extends HasSubdetector, HasIDDecoder, HasDetectorElement, 
-        Identifiable, HasMetaData
-{}
\ No newline at end of file
CVSspam 0.2.8