Author: [log in to unmask] Date: Thu Feb 19 14:39:09 2015 New Revision: 3549 Log: Add initialization hook to DetectorElement API. Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElement.java projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/IDetectorElement.java Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElement.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElement.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/DetectorElement.java Thu Feb 19 14:39:09 2015 @@ -647,4 +647,7 @@ else return false; } + + public void initialize() { + } } Modified: projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/IDetectorElement.java ============================================================================= --- projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/IDetectorElement.java (original) +++ projects/lcsim/trunk/detector-framework/src/main/java/org/lcsim/detector/IDetectorElement.java Thu Feb 19 14:39:09 2015 @@ -9,12 +9,8 @@ import org.lcsim.detector.identifier.IIdentifierHelper; /** - * A class to represent a node in the detector hierarchy, - * based on Gaudi's IDetectorElement interface. The - * concept of DetectorElement is more abstract than - * physical geometry, as it may simply be a container - * for other DetectorElements and need not have a physical - * representation in the geometry tree. + * A class to represent a node in the detector hierarchy, based on Gaudi's IDetectorElement interface. The concept of DetectorElement is more abstract than physical geometry, as it may simply be a + * container for other DetectorElements and need not have a physical representation in the geometry tree. * * @see IDetectorElementStore * @see IDetectorElementContainer @@ -28,49 +24,41 @@ * @author tknelson * @version $Id: IDetectorElement.java,v 1.25 2009/03/03 21:07:24 jeremy Exp $ */ -public interface IDetectorElement -extends Identifiable -{ - /** - * Get the geometric information for this node, - * including the volume center position and - * global and local transformations. - * - * @return An IGeometryInfo object with geometry information. - */ +public interface IDetectorElement extends Identifiable { + /** + * Get the geometric information for this node, including the volume center position and global and local transformations. + * + * @return An IGeometryInfo object with geometry information. + */ public IGeometryInfo getGeometry(); - - /** - * Get the parent element of this node. The top-level - * <code>DetectorElement</code> has no parent. - * - * @return This node's parent or <code>null</code> if - * the DetectorElement has no parent. + + /** + * Get the parent element of this node. The top-level <code>DetectorElement</code> has no parent. + * + * @return This node's parent or <code>null</code> if the DetectorElement has no parent. */ public IDetectorElement getParent(); /** * Get a container with the DetectorElement's children. * - * @return An IDetectorElementContainer containing this DE's children. - * This container will be empty if there are no children. + * @return An IDetectorElementContainer containing this DE's children. This container will be empty if there are no children. */ public IDetectorElementContainer getChildren(); /** - * True if the DetectorElement has children. + * True if the DetectorElement has children. * * @return True if has children, else False. */ public boolean hasChildren(); - + /** * Get the name of this DetectorElement. * * @return The name this DetectorElement. */ public String getName(); - /** * Set the identifier of this DE. @@ -78,90 +66,78 @@ * @param id */ public void setIdentifier(IIdentifier id); - + /** * Get the identifier of this DE. * * @return The unique identifier of this DetectorElement. */ public IIdentifier getIdentifier(); - + public IIdentifierHelper getIdentifierHelper(); - - /** - * Set the parent DetectorElement. This method - * also calls addChild on the parent. + + /** + * Set the parent DetectorElement. This method also calls addChild on the parent. * * @param parent The parent DetectorElement. */ public void setParent(IDetectorElement parent); - - /** - * @return True if {@link IGeometryInfo} has been created; - * False if {@link IGeometryInfo} is <code>null</code>. + + /** + * @return True if {@link IGeometryInfo} has been created; False if {@link IGeometryInfo} is <code>null</code>. */ public boolean hasGeometryInfo(); - - /** - * Locate the deepest DetectorElement containing a global point - * starting with this DetectorElement and traversing into its children. + + /** + * Locate the deepest DetectorElement containing a global point starting with this DetectorElement and traversing into its children. * - * This method can be used from {@link org.lcsim.geometry.Detector} - * to find the deepest node within the complete detector. - * - * This method is not on {@link GeometryInfo}, because a DetectorElement is - * allowed to have a <code>null</code> GeometryInfo if it is a simple - * container without a geometry path, i.e. a ghost volume. - * - * @return The deepest IDetectorElement containing globalPoint - * or <code>null</code> if point is not contained within - * this DetectorElement or its children. - */ + * This method can be used from {@link org.lcsim.geometry.Detector} to find the deepest node within the complete detector. + * + * This method is not on {@link GeometryInfo}, because a DetectorElement is allowed to have a <code>null</code> GeometryInfo if it is a simple container without a geometry path, i.e. a ghost + * volume. + * + * @return The deepest IDetectorElement containing globalPoint or <code>null</code> if point is not contained within this DetectorElement or its children. + */ public IDetectorElement findDetectorElement(Hep3Vector globalPoint); - + /** * Locate a child detector element by {@link IIdentifier}. - * @param id The <code>IIdentifier</code> of the <code>DetectorElement</code>. - * @return The matching <code>IDetectorElement</code> to the ID. + * @param id The <code>IIdentifier</code> of the <code>DetectorElement</code>. + * @return The matching <code>IDetectorElement</code> to the ID. */ public IDetectorElementContainer findDetectorElement(IIdentifier id); - + /** * Locate a child detector element given a slash-separated list of DetectorElement names. * @param pathString * @return */ public IDetectorElement findDetectorElement(String pathString); - + /** * Locate a child detector element given an ordered list of DetectorElement names. * @param path * @return */ - public IDetectorElement findDetectorElement(String[] path); - - /** - * Get the readout associated with this DetectorElement, - * or <code>null</code> if the DetectorElement has no - * associated readout. + public IDetectorElement findDetectorElement(String[] path); + + /** + * Get the readout associated with this DetectorElement, or <code>null</code> if the DetectorElement has no associated readout. * * @see org.lcsim.detector.IReadout * @see org.lcsim.detector.Readout * - * @return Associated IReadout object or <code>null</code> if - * Readout has been assigned to this DetectorElement. + * @return Associated IReadout object or <code>null</code> if Readout has been assigned to this DetectorElement. */ public IReadout getReadout(); /** - * True if this DetectorElement has an {@link IReadout}; - * False if the {@link IReadout} is <code>null</code>. - * - * @return True if this DetectorElement has a Readout; - * False if there is no Readout. + * True if this DetectorElement has an {@link IReadout}; False if the {@link IReadout} is <code>null</code>. + * + * @return True if this DetectorElement has a Readout; False if there is no Readout. */ public boolean hasReadout(); - + /** * The named parameters associated to this instance. * @@ -170,36 +146,32 @@ * @return An IParameters object containing the DetectorElement's named parameter set. */ public IParameters getParameters(); - - /** - * A list of parents from the top to this one. - * The first member of the list will be the top {@link IDetectorElement} - * in the hierarchy. The last memory of the list will be - * this {@link IDetectorElement}. + + /** + * A list of parents from the top to this one. The first member of the list will be the top {@link IDetectorElement} in the hierarchy. The last memory of the list will be this + * {@link IDetectorElement}. * * @see IDetectorElementContainer * * @return A list of ancestors from the top to this node. */ public IDetectorElementContainer getAncestry(); - + /** * True if the DetectorElement is an ancestor of this one. */ public boolean isAncestor(IDetectorElement de); - - /** - * Clear the {@link IReadout} of this {@link DetectorElement} - * and recursively visit and clear the children.. + + /** + * Clear the {@link IReadout} of this {@link DetectorElement} and recursively visit and clear the children.. * * @see IReadout * @see Readout */ public void clearReadouts(); - - /** - * True if the DetectorElement is a descendant - * of this one. + + /** + * True if the DetectorElement is a descendant of this one. * * @param de A DetectorElement to search for in descendants. * @see IDetectorElement @@ -207,33 +179,33 @@ * @return True if DetectorElement is a descendant of this one. */ public boolean isDescendant(IDetectorElement de); - + /** * Recursive pre-order tree traversal of this {@link IDetectorElement}. * @param visitor A visitor interface to perform some action on the node. */ public void traverseDescendantsPreOrder(IDetectorElementVisitor visitor); - + /** * Recrusive post-order tree traversal of this {@link IDetectorElement}. * @param visitor A visitor interface to perform some action on the node. */ - public void traverseDescendantsPostOrder(IDetectorElementVisitor visitor); - + public void traverseDescendantsPostOrder(IDetectorElementVisitor visitor); + /** * Visit this and ancestors. * * @param visitor */ public void traverseAncestors(IDetectorElementVisitor visitor); - + /** * Find ancestors matching a class. * * @param klass Class to match. */ public <T extends IDetectorElement> List<T> findAncestors(Class<T> klass); - + /** * Find descendants matching a class. * @@ -241,12 +213,15 @@ * @return Get a list of descendants with matching class. */ public <T extends IDetectorElement> List<T> findDescendants(Class<T> klass); + + /** + * True if the DetectorElement's PhysicalVolume is flagged as sensitive. False if the PhysicalVolume is not sensitive or the DetectorElement has no associated geometry. + * @return True if sensitive; false if not sensitive. + */ + public boolean isSensitive(); /** - * True if the DetectorElement's PhysicalVolume is flagged as sensitive. - * False if the PhysicalVolume is not sensitive or the DetectorElement has - * no associated geometry. - * @return True if sensitive; false if not sensitive. - */ - public boolean isSensitive(); + * This method should be called externally to perform initialization after all child elements have been added. + */ + public void initialize(); } ######################################################################## Use REPLY-ALL to reply to list To unsubscribe from the LCDET-SVN list, click the following link: https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCDET-SVN&A=1