lcsim/src/org/lcsim/contrib/JanStrube/vtxFitter
diff -u -r1.7 -r1.8
--- Fitter.java 15 Aug 2006 23:50:01 -0000 1.7
+++ Fitter.java 16 Aug 2006 06:23:44 -0000 1.8
@@ -1,6 +1,6 @@
package org.lcsim.contrib.JanStrube.vtxFitter;
/**
- * @version $Id: Fitter.java,v 1.7 2006/08/15 23:50:01 jstrube Exp $
+ * @version $Id: Fitter.java,v 1.8 2006/08/16 06:23:44 jstrube Exp $
*/
import static java.lang.Math.atan2;
@@ -11,6 +11,8 @@
import static org.lcsim.recon.vertexing.zvtop4.VectorArithmetic.dot;
import static org.lcsim.contrib.JanStrube.tracking.NewTrack.SpaceMomentum2Parameters;
+import java.util.ArrayList;
+
import org.lcsim.contrib.JanStrube.tracking.HelixSwimmer;
import org.lcsim.contrib.JanStrube.tracking.Track;
import org.lcsim.spacegeom.CartesianPoint;
@@ -117,30 +119,35 @@
Matrix G_kB = G_k.minus((G_k.times(B_k.times(W_k.times(B_k.transpose().times(G_k))))));
// cov(x)
+ System.out.printf("C_k before: %g\t%g\t%g\n", C_prev.get(0, 0), C_prev.get(1, 1), C_prev.get(2, 2));
Matrix C_k = C_prev.inverse().plus(A_k.transpose().times(G_kB.times(A_k))).inverse();
- System.out.printf("C_k: %g\t%g\t%g\n", C_k.get(0, 0), C_k.get(1, 1), C_k.get(2, 2));
+ System.out.printf("C_k after: %g\t%g\t%g\n", C_k.get(0, 0), C_k.get(1, 1), C_k.get(2, 2));
Matrix x_k = C_k.times(C_prev.inverse().times(x_prev).plus(
A_k.transpose().times(G_kB).times(m_k.minus(c_k0))));
Matrix q_k = W_k.times(B_k.transpose().times(G_k.times(m_k.minus(c_k0.plus(A_k.times(x_k))))));
// cov(q)
Matrix D_k = W_k.plus(W_k.times(B_k.transpose().times(G_k.times(A_k.times(C_k.times(A_k.transpose().times(G_k.times(B_k.times(W_k)))))))));
+// System.out.printf("D_k: %g\t%g\t%g\n", D_k.get(0, 0), D_k.get(1, 1), D_k.get(2, 2));
// cov(x, q)
Matrix E_k = C_k.times(A_k.transpose().times(G_k.times(B_k.times(W_k)))).uminus();
// now the chi2
Matrix r_k = h.minus(c_k0.plus(A_k.times(x_k).plus(B_k.times(q_k))));
+// System.out.printf("chi2: %s + %s", r_k.transpose().times(G_k.times(r_k)), x_k.minus(x_prev).transpose().times(C_prev.inverse().times(x_k.minus(x_prev))));
double chi2_kf = r_k.transpose().times(G_k.times(r_k)).get(0, 0)
+ x_k.minus(x_prev).transpose().times(C_prev.inverse().times(x_k.minus(x_prev))).get(0, 0);
double chi2 = chi2_prev + chi2_kf;
+ System.out.printf("before: %s", x_prev);
x_prev = x_k;
+ System.out.printf("after: %s", x_prev);
C_prev = C_k;
particle.addTrack(t, chi2_kf);
particle._origin = new CartesianPoint(x_k.getRowPackedCopy());
System.out.println(particle._origin);
chi2_prev = chi2;
- return chi2;
+ return chi2_kf;
}
private double smoothe(Track t) {