lcsim/src/org/lcsim/contrib/uiowa
diff -u -r1.2 -r1.3
--- LocalHelixExtrapolator.java 13 Jun 2008 01:03:04 -0000 1.2
+++ LocalHelixExtrapolator.java 25 Jul 2008 23:02:08 -0000 1.3
@@ -332,6 +332,37 @@
return tangent;
}
+ public Hep3Vector getTangent(Hep3Vector v, Track tr){
+
+ double x0 = v.x();
+ double y0 = v.y();
+ double phi0 = Math.atan2(y0-m_trackParam_xc, x0-m_trackParam_yc); // in the range -pi through +pi
+
+ boolean _debug =false;
+ if(_debug){
+ Hep3Vector P = new BasicHep3Vector(tr.getMomentum());
+ Double pT = Math.sqrt(P.x()*P.x()+P.y()*P.y());
+ Hep3Vector ip = new BasicHep3Vector();
+ double zField = m_event.getDetector().getFieldMap().getField(P).z();
+ double r = 1000*pT/(0.3*zField);
+
+ System.out.println("R from track = " + m_trackParam_radius);
+ System.out.println("R from p/0.3B= " + r + " magnetic field= " + zField);
+ System.out.println("Charge: " + tr.getCharge());
+ if(m_track_dphi_negative) System.out.println("T");
+ else System.out.println("F");
+ }
+
+ double dphi = 0.01;
+ if (m_track_dphi_negative) { dphi = -0.01; }
+ double dx = m_trackParam_radius * ( Math.cos(phi0+dphi) - Math.cos(phi0) );
+ double dy = m_trackParam_radius * ( Math.sin(phi0+dphi) - Math.sin(phi0) );
+ double dz = m_trackParam_dz_by_dphi * dphi;
+
+ Hep3Vector tangent = VecOp.unit(new BasicHep3Vector(dx,dy,dz));
+ return tangent;
+ }
+
/** Assumes extrapolation has already been done. */
public Hep3Vector extendToECALLayer(int layer) {
double dphi = (m_track_phi0 - m_track_phi1);