lcsim/src/org/lcsim/recon/tracking/seedtracker
diff -u -r1.5 -r1.6
--- MaterialManager.java 7 Feb 2009 00:52:41 -0000 1.5
+++ MaterialManager.java 8 Jul 2010 17:09:46 -0000 1.6
@@ -25,6 +25,7 @@
import org.lcsim.detector.solids.Point3D;
import org.lcsim.detector.solids.Polycone;
import org.lcsim.detector.solids.Polycone.ZPlane;
+import org.lcsim.detector.solids.Trd;
import org.lcsim.detector.solids.Tube;
import org.lcsim.geometry.Detector;
@@ -36,7 +37,7 @@
public class MaterialManager {
private static final boolean DEBUG = false; //enable debug output
- private static final boolean TUBE_ONLY = true; //only use Tube elements for calculating volume.
+ private static final boolean TUBE_ONLY = false; //only use Tube elements for calculating volume.
private List<MaterialPolyconeSegment> _matpc = new ArrayList<MaterialPolyconeSegment>();
private List<MaterialCylinder> _matcyl = new ArrayList<MaterialCylinder>();
private List<MaterialDisk> _matdsk = new ArrayList<MaterialDisk>();
@@ -344,6 +345,16 @@
vi.rmax = Math.max(vi.rmax, r);
}
+ }else if (solid instanceof Trd) {
+ Trd box = (Trd) solid;
+ for (Point3D p : box.getVertices()) {
+ Hep3Vector transformed = pv.localToGlobal(p.getHep3Vector());
+ vi.zmin = Math.min(transformed.z(), vi.zmin);
+ vi.zmax = Math.max(transformed.z(), vi.zmax);
+ double r = Math.sqrt(transformed.x() * transformed.x() + transformed.y() * transformed.y());
+ vi.rmin = Math.min(vi.rmin, r);
+ vi.rmax = Math.max(vi.rmax, r);
+ }
} //Note: this information will NOT be used most of the time...
// Polycones that are top-level elements (e.g. the beampipe) are
// handled specially (since the radiation length is a function of z).