public class DetectorElement extends Object implements IDetectorElement
IDetectorElement
.Modifier and Type | Class and Description |
---|---|
private class |
DetectorElement.TypeSearch<T extends IDetectorElement> |
Modifier and Type | Field and Description |
---|---|
private IDetectorElementContainer |
children |
private IGeometryInfo |
geometry |
private IIdentifierHelper |
helper |
private IIdentifier |
id |
private String |
name |
private IParameters |
parameters |
private IDetectorElement |
parent |
private IReadout |
readout |
Modifier | Constructor and Description |
---|---|
protected |
DetectorElement()
For subclasses.
|
|
DetectorElement(String name)
Create a DE with no parent and no support.
|
|
DetectorElement(String name,
IDetectorElement parent)
Create a DE with a parent but no support in the geometry, e.g.
|
|
DetectorElement(String name,
IDetectorElement parent,
IIdentifier id)
Create with a name, parent, and identifier.
|
|
DetectorElement(String name,
IDetectorElement parent,
IPhysicalVolumePath support)
Create a DE with a parent and support in the geometry tree.
|
|
DetectorElement(String name,
IDetectorElement parent,
IPhysicalVolumePath support,
IIdentifier id)
Creates a DetectorElement with complete arguments, including a parent,
geometry support as a String, and an
org.lcsim.detector.IIdentifier . |
|
DetectorElement(String name,
IDetectorElement parent,
String support)
Create a DE with complete arguments, including a parent DE, geometry
support, and an id.
|
|
DetectorElement(String name,
IDetectorElement parent,
String support,
IIdentifier id)
Create a DE with complete arguments, including a parent DE, string of
path, and an id.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addChild(IDetectorElement child) |
private void |
checkName(String name) |
void |
clearReadouts()
Clear the
IReadout of this DetectorElement and recursively visit and clear the children.. |
private void |
createGeometryInfo(IPhysicalVolumePath path) |
private void |
createGeometryInfo(String path) |
IReadout |
createReadout() |
<T extends IDetectorElement> |
findAncestors(Class<T> klass)
Find ancestors matching a class.
|
<T extends IDetectorElement> |
findDescendants(Class<T> klass)
Find descendants matching a class.
|
IDetectorElement |
findDetectorElement(Hep3Vector globalPoint)
Locate the deepest DetectorElement containing a global point starting with this DetectorElement and traversing into its children.
|
IDetectorElementContainer |
findDetectorElement(IIdentifier id)
Default implementation of
IDetectorElement.findDetectorElement(IIdentifier) . |
IDetectorElement |
findDetectorElement(String pathString)
Locate a child detector element given a slash-separated list of DetectorElement names.
|
IDetectorElement |
findDetectorElement(String[] path)
Locate a child detector element given an ordered list of DetectorElement names.
|
IDetectorElementContainer |
getAncestry()
A list of parents from the top to this one.
|
IDetectorElementContainer |
getChildren()
Get a container with the DetectorElement's children.
|
IExpandedIdentifier |
getExpandedIdentifier()
Get the
IExpandedIdentifier associated with this object. |
IGeometryInfo |
getGeometry()
Get the geometric information for this node, including the volume center position and global and local transformations.
|
IIdentifier |
getIdentifier()
Get the identifier of this DE.
|
IIdentifierHelper |
getIdentifierHelper()
Get the
IIdentifierHelper associated with this object. |
String |
getName()
Get the name of this DetectorElement.
|
IParameters |
getParameters()
The named parameters associated to this instance.
|
IDetectorElement |
getParent()
Get the parent element of this node.
|
IReadout |
getReadout()
Get the readout associated with this DetectorElement, or
null if the DetectorElement has no associated readout. |
IDetectorElement |
getTop() |
boolean |
hasChildren()
True if the DetectorElement has children.
|
boolean |
hasGeometryInfo() |
boolean |
hasReadout()
|
void |
initialize()
This method should be called externally to perform initialization after all child elements have been added.
|
boolean |
isAncestor(IDetectorElement de)
True if the DetectorElement is an ancestor of this one.
|
boolean |
isDescendant(IDetectorElement de)
True if the DetectorElement is a descendant of this one.
|
boolean |
isSensitive()
True if the DetectorElement's PhysicalVolume is flagged as sensitive.
|
private void |
register()
Register this IDetectorElement with the DetectorElementStore.
|
void |
setIdentifier(IIdentifier id)
Set the identifier of this DE.
|
void |
setIdentifierHelper(IIdentifierHelper helper)
Set the
IIdentifierHelper for encoding and decoding identifiers
of this DetectorElement. |
void |
setParameters(IParameters parameters) |
void |
setParent(IDetectorElement parent)
Set the parent IDetectorElement.
|
void |
setReadout(IReadout readout) |
void |
setSupport(IPhysicalVolumePath support) |
void |
setSupport(String path) |
private void |
setup(String name,
IDetectorElement parent,
IPhysicalVolumePath support,
IIdentifier id) |
private void |
setup(String name,
IDetectorElement parent,
String support,
IIdentifier id) |
void |
traverseAncestors(IDetectorElementVisitor visitor)
Visit this and ancestors.
|
void |
traverseDescendantsPostOrder(IDetectorElementVisitor visitor)
Recrusive post-order tree traversal of this
IDetectorElement . |
void |
traverseDescendantsPreOrder(IDetectorElementVisitor visitor)
Recursive pre-order tree traversal of this
IDetectorElement . |
private static void |
traversePostOrder(IDetectorElement detectorElement,
IDetectorElementVisitor visitor) |
private static void |
traversePreOrder(IDetectorElement detectorElement,
IDetectorElementVisitor visitor) |
private IDetectorElementContainer children
private IGeometryInfo geometry
private IDetectorElement parent
private IIdentifier id
private IIdentifierHelper helper
private IParameters parameters
private IReadout readout
private String name
protected DetectorElement()
public DetectorElement(String name, IDetectorElement parent, IPhysicalVolumePath support, IIdentifier id)
org.lcsim.detector.IIdentifier
.name
- The name of this DetectorElement.parent
- The parent DetectorElement.support
- The geometry support as a "/" delimited String.id
- The DetectorElement's identifier.public DetectorElement(String name, IDetectorElement parent, IPhysicalVolumePath support)
name
- parent
- support
- public DetectorElement(String name, IDetectorElement parent, String support)
name
- parent
- support
- public DetectorElement(String name, IDetectorElement parent, String support, IIdentifier id)
name
- parent
- support
- public DetectorElement(String name, IDetectorElement parent)
name
- parent
- public DetectorElement(String name, IDetectorElement parent, IIdentifier id)
public DetectorElement(String name)
name
- public String getName()
IDetectorElement
getName
in interface IDetectorElement
public void setParent(IDetectorElement parent)
setParent
in interface IDetectorElement
parent
- The parent IDetectorElement.RuntimeException
- If the parent IDetectorElement is already set.IllegalArgumentException
- If @param parent is null.private void register()
private void checkName(String name)
private void setup(String name, IDetectorElement parent, IPhysicalVolumePath support, IIdentifier id)
private void setup(String name, IDetectorElement parent, String support, IIdentifier id)
public void setSupport(IPhysicalVolumePath support)
public void setSupport(String path)
private void createGeometryInfo(IPhysicalVolumePath path)
private void createGeometryInfo(String path)
protected void addChild(IDetectorElement child)
public IDetectorElementContainer getChildren()
IDetectorElement
getChildren
in interface IDetectorElement
public boolean hasChildren()
IDetectorElement
hasChildren
in interface IDetectorElement
public IGeometryInfo getGeometry()
IDetectorElement
getGeometry
in interface IDetectorElement
public IDetectorElement getParent()
IDetectorElement
DetectorElement
has no parent.getParent
in interface IDetectorElement
null
if the DetectorElement has no parent.public IExpandedIdentifier getExpandedIdentifier()
Identifiable
IExpandedIdentifier
associated with this object.
Should use IIdentifierHelper
to unpack the
IIdentifier
.getExpandedIdentifier
in interface Identifiable
public IIdentifier getIdentifier()
IDetectorElement
getIdentifier
in interface Identifiable
getIdentifier
in interface IDetectorElement
public void setIdentifier(IIdentifier id)
IDetectorElement
setIdentifier
in interface IDetectorElement
public boolean hasGeometryInfo()
hasGeometryInfo
in interface IDetectorElement
IGeometryInfo
has been created; False if IGeometryInfo
is null
.public IDetectorElement findDetectorElement(Hep3Vector globalPoint)
IDetectorElement
Detector
to find the deepest node within the complete detector.
This method is not on GeometryInfo
, because a DetectorElement is allowed to have a null
GeometryInfo if it is a simple container without a geometry path, i.e. a ghost
volume.findDetectorElement
in interface IDetectorElement
null
if point is not contained within this DetectorElement or its children.public IReadout getReadout()
IDetectorElement
null
if the DetectorElement has no associated readout.getReadout
in interface IDetectorElement
null
if Readout has been assigned to this DetectorElement.IReadout
,
Readout
public void setReadout(IReadout readout)
public IReadout createReadout()
public boolean hasReadout()
IDetectorElement
hasReadout
in interface IDetectorElement
public IParameters getParameters()
IDetectorElement
getParameters
in interface IDetectorElement
IParameters
public IDetectorElementContainer getAncestry()
IDetectorElement
IDetectorElement
in the hierarchy. The last memory of the list will be this
IDetectorElement
.getAncestry
in interface IDetectorElement
IDetectorElementContainer
public void clearReadouts()
IDetectorElement
IReadout
of this DetectorElement
and recursively visit and clear the children..clearReadouts
in interface IDetectorElement
IReadout
,
Readout
public boolean isDescendant(IDetectorElement de)
IDetectorElement
isDescendant
in interface IDetectorElement
de
- A DetectorElement to search for in descendants.IDetectorElement
,
IDetectorElementContainer
public void setIdentifierHelper(IIdentifierHelper helper)
IIdentifierHelper
for encoding and decoding identifiers
of this DetectorElement.helper
- The IdentifierHelper to be assigned.public IIdentifierHelper getIdentifierHelper()
Identifiable
IIdentifierHelper
associated with this object.getIdentifierHelper
in interface Identifiable
getIdentifierHelper
in interface IDetectorElement
public void traverseDescendantsPreOrder(IDetectorElementVisitor visitor)
IDetectorElement
IDetectorElement
.traverseDescendantsPreOrder
in interface IDetectorElement
visitor
- A visitor interface to perform some action on the node.public void traverseDescendantsPostOrder(IDetectorElementVisitor visitor)
IDetectorElement
IDetectorElement
.traverseDescendantsPostOrder
in interface IDetectorElement
visitor
- A visitor interface to perform some action on the node.private static final void traversePreOrder(IDetectorElement detectorElement, IDetectorElementVisitor visitor)
private static final void traversePostOrder(IDetectorElement detectorElement, IDetectorElementVisitor visitor)
public void traverseAncestors(IDetectorElementVisitor visitor)
IDetectorElement
traverseAncestors
in interface IDetectorElement
public <T extends IDetectorElement> List<T> findAncestors(Class<T> klass)
IDetectorElement
findAncestors
in interface IDetectorElement
klass
- Class to match.public <T extends IDetectorElement> List<T> findDescendants(Class<T> klass)
IDetectorElement
findDescendants
in interface IDetectorElement
klass
- The class of the descendant DetectorElement.public boolean isAncestor(IDetectorElement de)
IDetectorElement
isAncestor
in interface IDetectorElement
public void setParameters(IParameters parameters)
public IDetectorElementContainer findDetectorElement(IIdentifier id)
IDetectorElement.findDetectorElement(IIdentifier)
. Specific types
of IDetectorElement
s can override the default scheme.findDetectorElement
in interface IDetectorElement
id
- The IIdentifier
of the DetectorElement
.IDetectorElement
to the ID.public IDetectorElement findDetectorElement(String pathString)
IDetectorElement
findDetectorElement
in interface IDetectorElement
public IDetectorElement findDetectorElement(String[] path)
IDetectorElement
findDetectorElement
in interface IDetectorElement
public IDetectorElement getTop()
public boolean isSensitive()
IDetectorElement
isSensitive
in interface IDetectorElement
public void initialize()
IDetectorElement
initialize
in interface IDetectorElement
Copyright © 2016 Linear Collider Detector (LCD). All rights reserved.