Author: [log in to unmask] Date: Thu Aug 20 17:25:49 2015 New Revision: 3391 Log: turn off check that is only used for debug Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/MultipleScattering.java Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/MultipleScattering.java ============================================================================= --- java/trunk/tracking/src/main/java/org/hps/recon/tracking/MultipleScattering.java (original) +++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/MultipleScattering.java Thu Aug 20 17:25:49 2015 @@ -40,6 +40,7 @@ * @param helix * @return a list of ScatterAngle. */ + @Override public List<ScatterAngle> FindScatters(HelicalTrackFit helix) { if (_debug) System.out.printf("\n%s: FindScatters() for helix:\n%s\n", this.getClass().getSimpleName(), helix.toString()); @@ -226,19 +227,13 @@ System.out.printf("%s: take step %f to get intercept position in sensor frame %s (det: %s trk: %s)\n", this.getClass().getSimpleName(), delta_w, pos_int, pos_int_det.toString(), pos_int_trk.toString()); // check if it's inside the sensor - Inside result_inside = plane.getDetectorElement().getGeometry().getPhysicalVolume().getMotherLogicalVolume().getSolid().inside(pos_int); - Inside result_inside_module = plane.getSensor().getGeometry().getDetectorElement().getParent().getGeometry().inside(pos_int_det); - - if (this._debug) + Inside result_inside = null; + Inside result_inside_module = null; + if (_debug) { + result_inside = plane.getDetectorElement().getGeometry().getPhysicalVolume().getMotherLogicalVolume().getSolid().inside(pos_int); + result_inside_module = plane.getSensor().getGeometry().getDetectorElement().getParent().getGeometry().inside(pos_int_det); System.out.printf("%s: Inside result sensor: %s module: %s\n", this.getClass().getSimpleName(), result_inside.toString(), result_inside_module.toString()); - - boolean isInsideSolid = false; - if (result_inside.equals(Inside.INSIDE) || result_inside.equals(Inside.SURFACE)) - isInsideSolid = true; - - boolean isInsideSolidModule = false; - if (result_inside_module.equals(Inside.INSIDE) || result_inside_module.equals(Inside.SURFACE)) - isInsideSolidModule = true; + } boolean isInside = true; if (Math.abs(pos_int.x()) > plane.getMeasuredDimension() / 2.0) { @@ -252,7 +247,7 @@ System.out.printf("%s: intercept is outside in v\n", this.getClass().getSimpleName()); isInside = false; } - + if (!isInside) return null; @@ -261,15 +256,29 @@ // Check if it's inside sensor and module and if it contradicts the manual calculation // For now: trust manual calculation and output warning if it's outside BOTH sensor AND module - if (!isInsideSolid) { - if (_debug) - System.out.printf("%s: manual calculation says inside sensor, inside solid says outside -> contradiction \n", this.getClass().getSimpleName()); - if (isInsideSolidModule) { - if (_debug) - System.out.printf("%s: this intercept is outside sensor but inside module\n", this.getClass().getSimpleName()); - } else - if (_debug) + if (_debug) { + boolean isInsideSolid = false; + if (result_inside.equals(Inside.INSIDE) || result_inside.equals(Inside.SURFACE)) { + isInsideSolid = true; + } + + boolean isInsideSolidModule = false; + if (result_inside_module.equals(Inside.INSIDE) || result_inside_module.equals(Inside.SURFACE)) { + isInsideSolidModule = true; + } + + if (!isInsideSolid) { + if (_debug) { + System.out.printf("%s: manual calculation says inside sensor, inside solid says outside -> contradiction \n", this.getClass().getSimpleName()); + } + if (isInsideSolidModule) { + if (_debug) { + System.out.printf("%s: this intercept is outside sensor but inside module\n", this.getClass().getSimpleName()); + } + } else if (_debug) { System.out.printf("%s: warning: this intercept at %s, in sensor frame %s, (sensor origin at %s ) is outside sensor and module!\n", this.getClass().getSimpleName(), pos_int_trk.toString(), pos_int.toString(), plane.origin().toString()); + } + } } // TODO Catch special cases where the incidental iteration procedure seem to fail @@ -302,22 +311,12 @@ if (this._debug) System.out.printf("%s: found iterative helix intercept in sensor coordinates at %s\n", this.getClass().getSimpleName(), pos_iter_sensor.toString()); - result_inside = plane.getDetectorElement().getGeometry().getPhysicalVolume().getMotherLogicalVolume().getSolid().inside(pos_iter_sensor); - result_inside_module = plane.getSensor().getGeometry().getDetectorElement().getParent().getGeometry().inside(pos_iter_det); - - if (this._debug) + if (_debug) { + result_inside = plane.getDetectorElement().getGeometry().getPhysicalVolume().getMotherLogicalVolume().getSolid().inside(pos_iter_sensor); + result_inside_module = plane.getSensor().getGeometry().getDetectorElement().getParent().getGeometry().inside(pos_iter_det); System.out.printf("%s: Inside result sensor: %s module: %s\n", this.getClass().getSimpleName(), result_inside.toString(), result_inside_module.toString()); - - isInsideSolid = false; - - if (result_inside.equals(Inside.INSIDE) || result_inside.equals(Inside.SURFACE)) - isInsideSolid = true; - - isInsideSolidModule = false; - - if (result_inside_module.equals(Inside.INSIDE) || result_inside_module.equals(Inside.SURFACE)) - isInsideSolidModule = true; - + } + isInside = true; if (Math.abs(pos_iter_sensor.x()) > plane.getMeasuredDimension() / 2.0) { if (this._debug) @@ -331,18 +330,32 @@ isInside = false; } + if (_debug) { + boolean isInsideSolid = false; + if (result_inside.equals(Inside.INSIDE) || result_inside.equals(Inside.SURFACE)) { + isInsideSolid = true; + } + + boolean isInsideSolidModule = false; + if (result_inside_module.equals(Inside.INSIDE) || result_inside_module.equals(Inside.SURFACE)) { + isInsideSolidModule = true; + } + // Check if it's inside sensor and module and if it contradicts the manual calculation - // For now: trust manual calculation and output warning if it's outside BOTH sensor AND - // module -> FIX THIS!? - if (!isInsideSolid) { - if (_debug) - System.out.printf("%s: manual iterative calculation says inside sensor, inside solid says outside -> contradiction \n", this.getClass().getSimpleName()); - if (isInsideSolidModule) { - if (_debug) - System.out.printf("%s: this iterative intercept is outside sensor but inside module\n", this.getClass().getSimpleName()); - } else - if (_debug) + // For now: trust manual calculation and output warning if it's outside BOTH sensor AND + // module -> FIX THIS!? + if (!isInsideSolid) { + if (_debug) { + System.out.printf("%s: manual iterative calculation says inside sensor, inside solid says outside -> contradiction \n", this.getClass().getSimpleName()); + } + if (isInsideSolidModule) { + if (_debug) { + System.out.printf("%s: this iterative intercept is outside sensor but inside module\n", this.getClass().getSimpleName()); + } + } else if (_debug) { System.out.printf("%s: warning: this iterative intercept %s, sensor frame %s, (sensor origin %s ) is outside sensor and module!\n", this.getClass().getSimpleName(), pos_iter_trk.toString(), pos_iter_sensor.toString(), plane.origin().toString()); + } + } } if (!isInside)