View Javadoc

1   package org.lcsim.detector;
2   
3   import hep.physics.vec.Hep3Vector;
4   
5   /**
6    * 
7    * Interface to placements of {@link org.lcsim.detector.ILogicalVolume}
8    * objects in the geometry tree.
9    * 
10   * @author Jeremy McCormick <jeremym@slac.stanford.edu>
11   */
12  public interface IPhysicalVolume 
13  {
14  	public String getName();
15  	
16  	/**
17  	 * Get the associated LogicalVolume.
18  	 * @return The associated LogicalVolume.
19  	 */
20  	public ILogicalVolume getLogicalVolume();	
21  	
22  	/**
23  	 * Get the mother's LogicalVolume.
24  	 * @return The mother's LogicalVolume.
25  	 */
26  	public ILogicalVolume getMotherLogicalVolume();
27  	
28  	/**
29  	 * Get the transformation from mother's coordinate system.
30  	 * @return The transformation from mother's coordinate system.
31  	 */
32  	public ITransform3D getTransform();
33  	
34  	/**
35  	 * Get the translation component of the coordinate transform.
36  	 * @return The translation component of the coordinate transform.
37  	 */
38  	public Hep3Vector getTranslation();
39  	
40  	/**
41  	 * Get the rotation component of the coordinate transform.
42  	 * @return The rotation component of the coordinate transform.
43  	 */
44  	public IRotation3D getRotation();
45  	
46  	/**
47  	 * Get the copy number.
48  	 * @return The copy number of this volume.
49  	 */
50  	public int getCopyNumber();
51  	
52  	/**
53  	 * Transform a point from parent to this volume.
54  	 * @param point A point in parent coordinate system.
55  	 * @return Point transformed to local coordinate system.
56  	 */
57  	public Hep3Vector transformParentToLocal(Hep3Vector point);
58      
59      /**
60       * True if this volume is a sensitive component;
61       * False if this volume is not a sensitive component.
62       */
63      // FIXME: Move to LogicalVolume or DetectorElement?   Geant4 uses LogicalVolume for this.
64      public boolean isSensitive();
65  }