Print

Print


Commit in lcsim/src/org/lcsim/recon/pfa/identifier on MAIN
LocalHelixExtrapolator.java+311.5 -> 1.6
add tangent vector at the last point in CAL

lcsim/src/org/lcsim/recon/pfa/identifier
LocalHelixExtrapolator.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- LocalHelixExtrapolator.java	8 Jul 2008 16:49:35 -0000	1.5
+++ LocalHelixExtrapolator.java	25 Jul 2008 22:47:08 -0000	1.6
@@ -378,6 +378,37 @@
 	return tangent;
     }
 
+    protected 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;
+    }
+
     private Hep3Vector extendToBarrelLayer(int layer, Vector<Double> barrel_layering_r, double barrel_zmin, double barrel_zmax )
     {
 	if (!m_barrelValid && !m_endcapValid) { return null; }
CVSspam 0.2.8