GeomConverter/src/org/lcsim/detector/tracker
diff -N TrackerDetectorElement.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerDetectorElement.java 10 Oct 2007 23:10:10 -0000 1.1
@@ -0,0 +1,349 @@
+package org.lcsim.detector.tracker;
+
+import hep.physics.vec.Hep3Vector;
+
+import java.util.List;
+
+import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.identifier.IIdentifier;
+
+/**
+ * Proposed API for a tracker-specific {@link org.lcsim.detector.IDetectorElement}.
+ *
+ * <h3>Selected Source Material</h3>
+ * <ul>
+ * <li><a href="http://ilcagenda.linearcollider.org/getFile.py/access?contribId=3&resId=1&materialId=slides&confId=1435">Silicon Strip Hit Requirements from Rich Partridge</a>
+ * <li><a href="http://www.lcsim.org/software/lcsim/apidocs/org/lcsim/contrib/onoprien/tracking/geom/package-summary.html">Tracker Segmentation from Dmitri Onoprienko</a>
+ * <li><a href="http://ilcagenda.linearcollider.org/conferenceDisplay.py?confId=2307">Sim Meeting on Tracking Infrastructure</a>
+ * </ul>
+ *
+ * @author Jeremy McCormick
+ * @version $Id: TrackerDetectorElement.java,v 1.1 2007/10/10 23:10:10 jeremy Exp $
+ */
+
+public abstract class TrackerDetectorElement
+extends DetectorElement
+{
+ /**
+ * Get the subdetector from an id.
+ * @param id
+ * @return The subdetector or null if none exists.
+ */
+ public abstract TrackerDetectorElement getSubdetector(IIdentifier id);
+
+ /**
+ * Get the barrel from an id.
+ * @param id
+ * @return The barrel or null if not exists or not in barrel.
+ */
+ public abstract TrackerDetectorElement getBarrel(IIdentifier id);
+
+ /**
+ * Get the endcap container <code>DetectorElement</code> from id.
+ *
+ * @param id
+ * @return The endcap container or null if not exists or not in barrel.
+ */
+ public abstract TrackerDetectorElement getEndcap(IIdentifier id);
+
+ /**
+ * Get the layer from id.
+ * @param id
+ * @return The layer from an id or -1 if there is none.
+ */
+ public abstract TrackerDetectorElement getLayer(IIdentifier id);
+
+ /**
+ * Get the module from id.
+ * @return The module from an id or -1 if there is none.
+ */
+ public abstract TrackerDetectorElement getModule(IIdentifier id);
+
+ /**
+ * Get the sensor from id.
+ * @param id
+ * @return The sensor from an id or -1 if there is none.
+ */
+ public abstract TrackerDetectorElement getSensor(IIdentifier id);
+
+ /**
+ * Get the electrodes from the id.
+ * @param id
+ * @return The electrodes object from an id or null if there is none.
+ */
+ public abstract TrackerDetectorElement getElectrodes(IIdentifier id);
+
+ /**
+ * Get the system number from the id.
+ * @param id
+ * @return The system number from the id or -1 if there is none.
+ */
+ public abstract int getSystemValue(IIdentifier id);
+
+ /**
+ * Get the barrel flag from the id.
+ * @param id
+ * @return The barrel flag from the id or -1 if there is none.
+ */
+ public abstract int getBarrelValue(IIdentifier id);
+
+ /**
+ * Get the layer number from the id.
+ * @param id
+ * @return The layer number from the id or -1 if there is none.
+ */
+ public abstract int getLayerValue(IIdentifier id);
+
+ /**
+ * Get the module number from the id.
+ * @param id
+ * @return The module number from the id or -1 if there is none.
+ */
+ public abstract int getModuleValue(IIdentifier id);
+
+ /**
+ * Get the sensor number from the id.
+ * @param id
+ * @return The sensor number from the id or -1 if there is none.
+ */
+ public abstract int getSensorValue(IIdentifier id);
+
+ /**
+ * Get the side from the id (1 or 2).
+ * @param id
+ * @return The side from the id or -1 if there is none.
+ */
+ public abstract int getSideValue(IIdentifier id);
+
+ /**
+ * Get the strip number from the id.
+ * @param id
+ * @return The strip number from the id or -1 if there is none.
+ */
+ public abstract int getStripValue(IIdentifier id);
+
+ /**
+ * Get the strip global position.
+ * @param id
+ * @return The global center position of the strip from an id.
+ */
+ public abstract Hep3Vector getStripGlobalCenterPosition(IIdentifier id);
+
+ /**
+ * Get the strip global start point.
+ * @param id
+ * @return The global start point of the strip from an id.
+ */
+ public abstract Hep3Vector getStripGlobalStartPoint(IIdentifier id);
+
+ /**
+ * Get the strip global end point.
+ * @param id
+ * @return The global end point of the strip from an id.
+ */
+ public abstract Hep3Vector getStripGlobalEndPoint(IIdentifier id);
+
+ /**
+ * Get the strip position within the coordinate frame of this <code>DetectorElement</code>.
+ * @param id
+ * @return The local center position of the strip from an id.
+ */
+ public abstract Hep3Vector getStripLocalCenterPosition(IIdentifier id);
+
+ /**
+ * Get the strip local start point.
+ * @param id
+ * @return The local start point of the strip from an id.
+ */
+ public abstract Hep3Vector getStripLocalStartPoint(IIdentifier id);
+
+ /**
+ * Get the strip local end point.
+ * @param id
+ * @return The local end point of the strip from an id.
+ */
+ public abstract Hep3Vector getStripLocalEndPoint(IIdentifier id);
+
+ /**
+ * Strip pitch.
+ * @param id
+ * @return The strip pitch from an id.
+ */
+ public abstract double getStripPitch(IIdentifier id);
+
+ /**
+ * Total charge deposit on strip.
+ * @param id
+ * @return The strip charge deposit from an id.
+ */
+ public abstract double getStripCharge(IIdentifier id);
+
+ /**
+ * Length of strip in mm.
+ * @param id
+ * @return The strip length from an id.
+ */
+ public abstract double getStripLength(IIdentifier id);
+
+ /**
+ * Unit vector parallel to the strip.
+ *
+ * @param id
+ * @return The strip direction from an id. (Global coordinates?)
+ */
+ public abstract double getStripDirection(IIdentifier id);
+
+ /**
+ * Unit vector parallel to the measurement direction.
+ * @param id
+ * @return The strip measurement direction from an id. (Global coordinates?)
+ */
+ public abstract double getStripMeasurementDirection(IIdentifier id);
+
+ /**
+ * Get a list of strip neighbors.
+ * @param id
+ * @return A list of neighbor ids from a strip id.
+ */
+ public abstract List<IIdentifier> getStripNeighbors(IIdentifier id);
+
+ /**
+ * Get a strip id from a global position.
+ * @param globalPosition
+ * @return A strip id from a global position or null if none exists at that position.
+ */
+ public abstract IIdentifier getStrip(Hep3Vector globalPosition);
+
+ /**
+ * Get a layer from a global position.
+ * @param globalPosition
+ * @return The layer from a global position or null if none exists at that position.
+ */
+ public abstract TrackerDetectorElement getLayer(Hep3Vector globalPosition);
+
+ /**
+ * Get the list of hits by class from an id.
+ * @param id
+ * @return A list of hits from an id.
+ */
+ public abstract <T> List<Class<T>> getHits(IIdentifier id);
+
+ /**
+ * Get the list of hits contained by this <code>TrackerDetectorElement</code> or its children.
+ * @return A list of all hits in this element's children.
+ */
+ public abstract <T> List<Class<T>> getHits();
+
+ /**
+ * Get the list of sensors from child elements.
+ * @return A list of sensors in this element's children.
+ */
+ public abstract List<TrackerDetectorElement> getSensors();
+
+ /**
+ * Get a list of layers from child elements.
+ * @return A list of layers in this element's children.
+ */
+ public abstract List<TrackerDetectorElement> getLayers();
+
+ /**
+ * Is this a subdetector?
+ * @return True if this is a subdetector such as SiTrackerBarrel; false if not.
+ */
+ public abstract boolean isSubdetector();
+
+ /**
+ * Is this a layer?
+ * @return True if this is a layer; false if not.
+ */
+ public abstract boolean isLayer();
+
+ /**
+ * Is this a module?
+ * @return True if this is a module; false if not.
+ * FIXME: Do we make DE for modules???
+ */
+ public abstract boolean isModule();
+
+ /**
+ * Is this a sensor?
+ * @return True if this is a sensor; false if not.
+ */
+ public abstract boolean isSensor();
+
+ /**
+ * Is this a set of electrodes?
+ * @return True if this is a electrodes; false if not.
+ */
+ public abstract boolean isElectrodes();
+
+ /**
+ * Is this id barrel?
+ * @param id
+ * @return True if id is barrel; false if not.
+ */
+ public abstract boolean isBarrel(IIdentifier id);
+
+ /**
+ * Is this id endcap?
+ * @param id
+ * @return True if id is endcap; false if not.
+ */
+ public abstract boolean isEndcap(IIdentifier id);
+
+ /**
+ * Is this id positive endcap?
+ * @param id
+ * @return True if id is positive endcap; false if not.
+ */
+ public abstract boolean isEndcapPositive(IIdentifier id);
+
+ /**
+ * Is this id negative endcap?
+ * @param id
+ * @return True if id is negative endcap; false if not.
+ */
+ public abstract boolean isEndcapNegative(IIdentifier id);
+
+ /**
+ * Is this part of barrel?
+ * @param id
+ * @return True if this is barrel or part of it; false if not.
+ */
+ public abstract boolean isBarrel();
+
+ /**
+ * Is this part of endcap?
+ * @param id
+ * @return True if this is endcap or part of it; false if not.
+ */
+ public abstract boolean isEndcap();
+
+ /**
+ * Is this part of positive endcap?
+ * @param id
+ * @return True if this is positive endcap or part of it; false if not.
+ */
+ public abstract boolean isEndcapPositive();
+
+ /**
+ * Is this part of negative endcap?
+ * @param id
+ * @return True if this is positive endcap or part of it; false if not.
+ */
+ public abstract boolean isEndcapNegative();
+
+ /**
+ * Make a tracker identifier from id.
+ * @param
+ * @return Make a {@link TrackerId} given an id.
+ */
+ public abstract TrackerId makeTrackerId(IIdentifier id);
+
+ /**
+ * Get the tracker Id for this.
+ * @param
+ * @return Get the {@link TrackerId} for this.
+ */
+ public abstract TrackerId getTrackerId();
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/detector/tracker
diff -N TrackerId.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerId.java 10 Oct 2007 23:10:10 -0000 1.1
@@ -0,0 +1,56 @@
+package org.lcsim.detector.tracker;
+
+import org.lcsim.detector.identifier.Identifier;
+
+/**
+ * Proposed API for a Tracker id.
+ *
+ * @author Jeremy McCormick
+ * @version $Id: TrackerId.java,v 1.1 2007/10/10 23:10:10 jeremy Exp $
+ */
+
+public abstract class TrackerId
+extends Identifier
+{
+ /**
+ * The system number.
+ * @return The system number.
+ */
+ public abstract int getSystemValue();
+
+ /**
+ * The barrel flag.
+ * @return The barrel flag.
+ */
+ public abstract int getBarrelValue();
+
+ /**
+ * The layer number.
+ * @return The layer number.
+ */
+ public abstract int getLayerValue();
+
+ /**
+ * The module number.
+ * @return The module number.
+ */
+ public abstract int getModuleValue();
+
+ /**
+ * The sensor number.
+ * @return The sensor number.
+ */
+ public abstract int getSensorValue();
+
+ /**
+ * The module side number.
+ * @return The module side number.
+ */
+ public abstract int getSideValue();
+
+ /**
+ * The strip number.
+ * @return The strip number.
+ */
+ public abstract int getStripValue();
+}