1 package org.lcsim.detector; 2 3 import org.lcsim.detector.identifier.IIdentifier; 4 import org.lcsim.detector.material.IMaterial; 5 import org.lcsim.detector.material.IMaterial.State; 6 import org.lcsim.detector.solids.Box; 7 import org.lcsim.detector.solids.ISolid; 8 import org.lcsim.detector.solids.Tube; 9 10 public interface IDetectorFactory 11 { 12 public IRotation3D createRotation3D(); 13 14 public ITransform3D createTransform3D(); 15 16 public IDetectorElement createDetectorElement( 17 String name, 18 IDetectorElement parent, 19 IPhysicalVolumePath support, 20 IIdentifier id); 21 22 public ILogicalVolume createLogicalVolume( 23 String name, 24 ISolid solid, 25 IMaterial material); 26 27 public IPhysicalVolume createPhysicalVolume( 28 ITransform3D transform, 29 String name, 30 ILogicalVolume logicalVolume, 31 ILogicalVolume motherLogicalVolume, 32 int copyNum); 33 34 public IPhysicalVolumeNavigator createPhysicalVolumeNavigator(IPhysicalVolume world); 35 36 public IPhysicalVolumeNavigator createPhysicalVolumeNavigator( 37 String name, 38 IPhysicalVolume worldVolume); 39 40 public IMaterial createMaterialElement( 41 String name, 42 double Z, 43 double A, 44 double density, 45 State state, 46 double temperature, 47 double pressure); 48 49 public IMaterial createMaterialMixture( 50 String name, 51 int nComponents, 52 double density, 53 State state); 54 55 public Box createBox( 56 String name, 57 double xHalfLength, 58 double yHalfLength, 59 double zHalfLength); 60 61 public Tube createTube( 62 String name, 63 double innerRadius, 64 double outerRadius, 65 double zHalfLength); 66 67 public IReadout createReadout(); 68 }