Print

Print


Commit in GeomConverter/src/org/lcsim/detector/tracker on MAIN
TrackerDetectorElement.java+349added 1.1
TrackerId.java+56added 1.1
+405
2 added files
JM: Proposed API for tracker-specific detector infrastructure.

GeomConverter/src/org/lcsim/detector/tracker
TrackerDetectorElement.java added at 1.1
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&amp;resId=1&amp;materialId=slides&amp;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
TrackerId.java added at 1.1
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();
+}
CVSspam 0.2.8