Commit in lcsim/src/org/lcsim on MAIN
contrib/uiowa/LocalHelixExtrapolator.java+31.1 -> 1.2
recon/pfa/identifier/LocalHelixExtrapolator.java+31.1 -> 1.2
+6
2 modified files
MJC: Fix bug in ad-hoc helix extrapolation where estimated track tangent was often flipped

lcsim/src/org/lcsim/contrib/uiowa
LocalHelixExtrapolator.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LocalHelixExtrapolator.java	25 Mar 2008 22:46:01 -0000	1.1
+++ LocalHelixExtrapolator.java	13 Jun 2008 01:03:04 -0000	1.2
@@ -56,6 +56,7 @@
     double m_track_z0 = 0.0;
     double m_track_phi0 = 0.0;
     double m_track_phi1 = 0.0;
+    boolean m_track_dphi_negative = false;
     EventHeader m_event = null;
 
     /** Process this event, storing geometry info if needed. */
@@ -166,6 +167,7 @@
 	while (dphi < -Math.PI) { dphi += 2.0*Math.PI; }
 	while (dphi > Math.PI) { dphi -= 2.0*Math.PI; }
 	double dz_by_dphi = dz/dphi;
+	m_track_dphi_negative = (dphi < 0);
 	// Now, try to project along to the endcaps (fairly straightforward)
 	double dz_to_endcap = Math.abs(m_ECAL_endcap_z) - z0;
 	if (z0 < 0) {
@@ -322,6 +324,7 @@
     /** Assumes extrapolation has already been done. */
     public Hep3Vector getTangent() {
 	double dphi = 0.01;
+	if (m_track_dphi_negative) { dphi = -0.01; }
 	double dx = m_trackParam_radius * ( Math.cos(m_trackPoint_phi+dphi) - Math.cos(m_trackPoint_phi) );
 	double dy = m_trackParam_radius * ( Math.sin(m_trackPoint_phi+dphi) - Math.sin(m_trackPoint_phi) );
 	double dz = m_trackParam_dz_by_dphi * dphi;

lcsim/src/org/lcsim/recon/pfa/identifier
LocalHelixExtrapolator.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- LocalHelixExtrapolator.java	26 Mar 2008 20:11:08 -0000	1.1
+++ LocalHelixExtrapolator.java	13 Jun 2008 01:03:04 -0000	1.2
@@ -56,6 +56,7 @@
     double m_track_z0 = 0.0;
     double m_track_phi0 = 0.0;
     double m_track_phi1 = 0.0;
+    boolean m_track_dphi_negative = false;
     EventHeader m_event = null;
 
     /** Process this event, storing geometry info if needed. */
@@ -166,6 +167,7 @@
 	while (dphi < -Math.PI) { dphi += 2.0*Math.PI; }
 	while (dphi > Math.PI) { dphi -= 2.0*Math.PI; }
 	double dz_by_dphi = dz/dphi;
+	m_track_dphi_negative = (dphi < 0);
 	// Now, try to project along to the endcaps (fairly straightforward)
 	double dz_to_endcap = Math.abs(m_ECAL_endcap_z) - z0;
 	if (z0 < 0) {
@@ -322,6 +324,7 @@
     /** Assumes extrapolation has already been done. */
     public Hep3Vector getTangent() {
 	double dphi = 0.01;
+	if (m_track_dphi_negative) { dphi = -0.01; }
 	double dx = m_trackParam_radius * ( Math.cos(m_trackPoint_phi+dphi) - Math.cos(m_trackPoint_phi) );
 	double dy = m_trackParam_radius * ( Math.sin(m_trackPoint_phi+dphi) - Math.sin(m_trackPoint_phi) );
 	double dz = m_trackParam_dz_by_dphi * dphi;
CVSspam 0.2.8