Commit in lcsim/src/org/lcsim/recon/pfa/identifier on MAIN
TrackHelixExtrapolator.java+13-91.6 -> 1.7
modify interface for TrackHelixExtrapolator

lcsim/src/org/lcsim/recon/pfa/identifier
TrackHelixExtrapolator.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- TrackHelixExtrapolator.java	27 Oct 2008 18:48:20 -0000	1.6
+++ TrackHelixExtrapolator.java	12 Nov 2008 18:57:16 -0000	1.7
@@ -169,23 +169,27 @@
     }
     protected Hep3Vector extendToEndcapLayer(int layer, Vector<Double> endcap_layering_z, double endcap_rmin, double endcap_rmax ) {
 	double layer_z = Math.abs(endcap_layering_z.get(layer));
-        double distanceToEndcap1 = m_swimmer.getDistanceToZ( layer_z);
-        double distanceToEndcap2 = m_swimmer.getDistanceToZ(-layer_z);
-	if (distanceToEndcap1>0) {
-	    return m_swimmer.getPointAtDistance(distanceToEndcap1);
-	} else if (distanceToEndcap2>0) {
-	    return m_swimmer.getPointAtDistance(distanceToEndcap2);
+        double distanceToEndcap = m_swimmer.getDistanceToZ( layer_z);
+
+        Hep3Vector v = m_swimmer.getPointAtDistance(distanceToEndcap);
+        double found_endcap_polar_r = Math.sqrt(v.x()*v.x() + v.y()*v.y());
+        boolean validSolution = (found_endcap_polar_r >= endcap_rmin-m_cutSeparation && found_endcap_polar_r <= endcap_rmax+m_cutSeparation);
+        if(validSolution){
+	    return v;
 	} else {
-	    // Both failed
 	    return null;
 	}
     }
     protected Hep3Vector extendToBarrelLayer(int layer, Vector<Double> barrel_layering_r, double barrel_zmin, double barrel_zmax ) {
 	double layer_r =  barrel_layering_r.get(layer);
 	double distance = m_swimmer.getDistanceToRadius(layer_r);
-	if (!Double.isNaN(distance)) {
+        
+        Hep3Vector v = m_swimmer.getPointAtDistance(distance);
+        double found_barrel_z = v.z();
+        boolean validSolution =(found_barrel_z >= barrel_zmin-m_cutSeparation && found_barrel_z <= barrel_zmax+m_cutSeparation);
+	if (!Double.isNaN(distance) && validSolution) {
 	    // Extrapolated OK
-	    return m_swimmer.getPointAtDistance(distance);
+	    return v;
 	} else {
 	    // Extrapolation failed
 	    return null;
CVSspam 0.2.8