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 }